diff --git a/Editor/EditorMercs.cpp b/Editor/EditorMercs.cpp index f91421bd..9c00c12d 100644 --- a/Editor/EditorMercs.cpp +++ b/Editor/EditorMercs.cpp @@ -162,7 +162,7 @@ void AddNewItemToSelectedMercsInventory( BOOLEAN fCreate ); void RenderMercInventoryPanel(); void SetDroppableCheckboxesBasedOnMercsInventory(); -extern BOOLEAN InternalAddSoldierToSector( UINT8 ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ); +extern BOOLEAN InternalAddSoldierToSector( SoldierID ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ); //array which keeps track of which item is in which slot. This is dependant on the selected merc, so //these temp values must be updated when different mercs are selected, and reset when a merc detailed @@ -559,7 +559,7 @@ void AddMercToWorld( INT32 iMapIndex ) if( IsLocationSittable( iMapIndex, gfRoofPlacement ) ) { - UINT8 ubID; + SoldierID ubID; INT16 sSectorX, sSectorY; SOLDIERINITNODE *pNode; @@ -3783,7 +3783,7 @@ void PasteMercPlacement( INT32 iMapIndex ) if( IsLocationSittable( iMapIndex, gfRoofPlacement ) ) { - UINT8 ubID; + SoldierID ubID; INT16 sSectorX, sSectorY; SOLDIERINITNODE *pNode; diff --git a/Ja2/GameVersion.h b/Ja2/GameVersion.h index f85ee016..8cc25371 100644 --- a/Ja2/GameVersion.h +++ b/Ja2/GameVersion.h @@ -22,7 +22,9 @@ extern CHAR16 zBuildInformation[256]; // // Keeps track of the saved game version. Increment the saved game version whenever // you will invalidate the saved game file -#define MERC_PROFILE_INSERTION_DATA 185 // Bigmap support for AddProfileToMap function + +#define INCREASED_TEAMSIZES 186 // Asdow: SOLDIERTYPE ubID changed from UINT8 -> UINT16 +#define MERC_PROFILE_INSERTION_DATA 185 // Bigmap support for AddProfileToMap function #define GROWTH_MODIFIERS 184 #define REBELCOMMAND 183 #define DRAGSTRUCTURE 182 // Flugente: we can drag structures behind us @@ -105,7 +107,7 @@ extern CHAR16 zBuildInformation[256]; #define AP100_SAVEGAME_DATATYPE_CHANGE 105 // Before this, we didn't have the 100AP structure changes #define NIV_SAVEGAME_DATATYPE_CHANGE 102 // Before this, we used the old structure system -#define SAVE_GAME_VERSION MERC_PROFILE_INSERTION_DATA +#define SAVE_GAME_VERSION INCREASED_TEAMSIZES //#define RUSSIANGOLD #ifdef __cplusplus diff --git a/Ja2/SaveLoadGame.cpp b/Ja2/SaveLoadGame.cpp index 79cadef6..503fb74e 100644 --- a/Ja2/SaveLoadGame.cpp +++ b/Ja2/SaveLoadGame.cpp @@ -233,7 +233,7 @@ typedef struct BOOLEAN fHavePurchasedItemsFromTony; //The selected soldier in tactical - UINT16 usSelectedSoldier; + SoldierID usSelectedSoldier; // The x and y scroll position INT16 sRenderCenterX; @@ -297,15 +297,15 @@ typedef struct - BOOLEAN fSkyriderEmptyHelpGiven; - BOOLEAN fEnterMapDueToContract; + BOOLEAN fSkyriderEmptyHelpGiven; + BOOLEAN fEnterMapDueToContract; UINT8 ubHelicopterHitsTaken; UINT8 ubQuitType; - BOOLEAN fSkyriderSaidCongratsOnTakingSAM; - INT16 sContractRehireSoldierID; + BOOLEAN fSkyriderSaidCongratsOnTakingSAM; + SoldierID sContractRehireSoldierID; - GAME_OPTIONS GameOptions; + GAME_OPTIONS GameOptions; UINT32 uiSeedNumber; @@ -314,7 +314,7 @@ typedef struct INT16 sCurInterfacePanel; - UINT8 ubSMCurrentMercID; + SoldierID ubSMCurrentMercID; BOOLEAN fFirstTimeInMapScreen; @@ -322,9 +322,9 @@ typedef struct BOOLEAN fDisableMapInterfaceDueToBattle; - INT32 sBoxerGridNo[ NUM_BOXERS ]; - UINT8 ubBoxerID[ NUM_BOXERS ]; - BOOLEAN fBoxerFought[ NUM_BOXERS ]; + INT32 sBoxerGridNo[ NUM_BOXERS ]; + SoldierID ubBoxerID[ NUM_BOXERS ]; + BOOLEAN fBoxerFought[ NUM_BOXERS ]; BOOLEAN fHelicopterDestroyed; //if the chopper is destroyed BOOLEAN fShowMapScreenHelpText; //If true, displays help in mapscreen @@ -342,8 +342,8 @@ typedef struct BOOLEAN ubPlayerProgressSkyriderLastCommentedOn; - BOOLEAN gfMeanwhileTryingToStart; - BOOLEAN gfInMeanwhile; + BOOLEAN gfMeanwhileTryingToStart; + BOOLEAN gfInMeanwhile; // list of dead guys for squads...in id values->-1 means no one home INT16 sDeadMercs[ NUMBER_OF_SQUADS ][ NUMBER_OF_SOLDIERS_PER_SQUAD ]; @@ -413,7 +413,7 @@ typedef struct UINT32 uiMeanWhileFlags; - INT8 bSelectedInfoChar; + INT16 bSelectedInfoChar; INT8 bHospitalPriceModifier; INT8 bUnused2[ 2 ]; @@ -551,8 +551,8 @@ BOOLEAN SetMercsInsertionGridNo( ); BOOLEAN LoadOppListInfoFromSavedGame( HWFILE hFile ); BOOLEAN SaveOppListInfoToSavedGame( HWFILE hFile ); -BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFilem, UINT8 ubID ); -BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFilem, UINT8 ubID ); +BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFilem, UINT16 ubID ); +BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFilem, UINT16 ubID ); BOOLEAN LoadGeneralInfo( HWFILE hFile ); BOOLEAN SaveGeneralInfo( HWFILE hFile ); @@ -1074,7 +1074,7 @@ BOOLEAN ITEM_CURSOR_SAVE_INFO::Load(HWFILE hFile) if ( guiCurrentSaveGameVersion >= NIV_SAVEGAME_DATATYPE_CHANGE ) { //3 bytes of info, screw being neat - if ( !FileRead( hFile, this, 3, &uiNumBytesRead ) ) + if ( !FileRead( hFile, this, SIZEOF_ITEM_CURSOR_SAVE_INFO_POD, &uiNumBytesRead ) ) { return FALSE; } @@ -1103,7 +1103,7 @@ BOOLEAN ITEM_CURSOR_SAVE_INFO::Save(HWFILE hFile) { UINT32 uiNumBytesWritten; //3 bytes of info, screw being neat - if ( !FileWrite( hFile, this, 3, &uiNumBytesWritten ) ) + if ( !FileWrite( hFile, this, SIZEOF_ITEM_CURSOR_SAVE_INFO_POD, &uiNumBytesWritten ) ) { return FALSE; } @@ -1947,7 +1947,7 @@ use of this function should allow changes to be made to various structures withi INT32 ReadFieldByField(HWFILE hFile, PTR pDest, UINT32 uiFieldSize, UINT32 uiElementSize, UINT32 uiCurByteCount) { UINT32 uiNumBytesRead; - char padding[10]; + char padding[10]; UINT32 uiBytesRead = uiCurByteCount; // used to track our new byte count UINT32 sampleBytesRead = uiBytesRead; // used to determine how much padding is needed @@ -1980,8 +1980,10 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) //the soldier type info has changed at version 102 //CHRISL: To accomodate future changes to this structure, we'll load each value field by field numBytesRead = 0; - FileRead( hFile, this, (offsetof(SOLDIERTYPE, ubBodyType)+sizeof(ubBodyType)), &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; + numBytesRead = ReadFieldByField(hFile, &this->ubID, sizeof(ubID), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->name, sizeof(name), sizeof(CHAR16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubBodyType, sizeof(ubBodyType), sizeof(UINT8), numBytesRead); + if(guiCurrentSaveGameVersion >= AP100_SAVEGAME_DATATYPE_CHANGE) { //CHRISL: It was changed at version 104 to allow for 16bit action points for the 100AP system numBytesRead = ReadFieldByField(hFile, &this->bActionPoints, sizeof(bActionPoints), sizeof(INT16), numBytesRead); @@ -2009,7 +2011,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubWaitActionToDo, sizeof(ubWaitActionToDo), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubInsertionDirection, sizeof(ubInsertionDirection), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bGunType, sizeof(bGunType), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubOppNum, sizeof(ubOppNum), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubOppNum, sizeof(ubOppNum), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bLastRenderVisibleValue, sizeof(bLastRenderVisibleValue), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubAttackingHand, sizeof(ubAttackingHand), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sWeightCarriedAtTurnStart, sizeof(sWeightCarriedAtTurnStart), sizeof(INT16), numBytesRead); @@ -2053,8 +2055,8 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->usAnimState, sizeof(usAnimState), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiAIDelay, sizeof(uiAIDelay), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sReloadDelay, sizeof(sReloadDelay), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubAttackerID, sizeof(ubAttackerID), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubPreviousAttackerID, sizeof(ubPreviousAttackerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubAttackerID, sizeof(ubAttackerID), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubPreviousAttackerID, sizeof(ubPreviousAttackerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sInsertionGridNo, sizeof(sInsertionGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->AnimCache, sizeof(AnimCache), 1, numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bSide, sizeof(bSide), sizeof(UINT8), numBytesRead); @@ -2134,7 +2136,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->pCurrentShade, sizeof(pCurrentShade), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubFadeLevel, sizeof(ubFadeLevel), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubServiceCount, sizeof(ubServiceCount), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubServicePartner, sizeof(ubServicePartner), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubServicePartner, sizeof(ubServicePartner), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pThrowParams, sizeof(pThrowParams), 4, numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bReverse, sizeof(bReverse), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pLevelNode, sizeof(pLevelNode), 4, numBytesRead); @@ -2232,7 +2234,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->iTotalLengthOfInsuranceContract, sizeof(iTotalLengthOfInsuranceContract), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubSoldierClass, sizeof(ubSoldierClass), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubAPsLostToSuppression, sizeof(ubAPsLostToSuppression), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubSuppressorID, sizeof(ubSuppressorID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubSuppressorID, sizeof(ubSuppressorID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubDesiredSquadAssignment, sizeof(ubDesiredSquadAssignment), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubNumTraversalsAllowedToMerge, sizeof(ubNumTraversalsAllowedToMerge), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->usPendingAnimation2, sizeof(usPendingAnimation2), sizeof(UINT16), numBytesRead); @@ -2244,7 +2246,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bBlockedByAnotherMercDirection, sizeof(bBlockedByAnotherMercDirection), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->usAttackingWeapon, sizeof(usAttackingWeapon), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bWeaponMode, sizeof(bWeaponMode), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubTargetID, sizeof(ubTargetID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubTargetID, sizeof(ubTargetID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bAIScheduleProgress, sizeof(bAIScheduleProgress), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sOffWorldGridNo, sizeof(sOffWorldGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pAniTile, sizeof(pAniTile), 1, numBytesRead); @@ -2265,8 +2267,8 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bOldBattleSnd, sizeof(bOldBattleSnd), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->iBurstSoundID, sizeof(iBurstSoundID), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bSlotItemTakenFrom, sizeof(bSlotItemTakenFrom), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubAutoBandagingMedic, sizeof(ubAutoBandagingMedic), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubRobotRemoteHolderID, sizeof(ubRobotRemoteHolderID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubAutoBandagingMedic, sizeof(ubAutoBandagingMedic), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubRobotRemoteHolderID, sizeof(ubRobotRemoteHolderID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiTimeOfLastContractUpdate, sizeof(uiTimeOfLastContractUpdate), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bTypeOfLastContract, sizeof(bTypeOfLastContract), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bTurnsCollapsed, sizeof(bTurnsCollapsed), sizeof(INT8), numBytesRead); @@ -2285,7 +2287,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bRegenBoostersUsedToday, sizeof(bRegenBoostersUsedToday), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bNumPelletsHitBy, sizeof(bNumPelletsHitBy), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sSkillCheckGridNo, sizeof(sSkillCheckGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubLastEnemyCycledID, sizeof(ubLastEnemyCycledID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubLastEnemyCycledID, sizeof(ubLastEnemyCycledID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubPrevSectorID, sizeof(ubPrevSectorID), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubNumTilesMovesSinceLastForget, sizeof(ubNumTilesMovesSinceLastForget), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bTurningIncrement, sizeof(bTurningIncrement), sizeof(INT8), numBytesRead); @@ -2293,7 +2295,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->usValueGoneUp, sizeof(usValueGoneUp), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubNumLocateCycles, sizeof(ubNumLocateCycles), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubDelayedMovementFlags, sizeof(ubDelayedMovementFlags), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubCTGTTargetID, sizeof(ubCTGTTargetID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubCTGTTargetID, sizeof(ubCTGTTargetID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiMercChecksum, sizeof(uiMercChecksum), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bCurrentCivQuote, sizeof(bCurrentCivQuote), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bCurrentCivQuoteDelta, sizeof(bCurrentCivQuoteDelta), sizeof(INT8), numBytesRead); @@ -2311,7 +2313,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubDoorOpeningNoise, sizeof(ubDoorOpeningNoise), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pGroup, sizeof(pGroup), 1, numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubLeaveHistoryCode, sizeof(ubLeaveHistoryCode), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bOverrideMoveSpeed, sizeof(bOverrideMoveSpeed), sizeof(INT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->bOverrideMoveSpeed, sizeof(bOverrideMoveSpeed), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiTimeSoldierWillArrive, sizeof(uiTimeSoldierWillArrive), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bVehicleUnderRepairID, sizeof(bVehicleUnderRepairID), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->iTimeCanSignElsewhere, sizeof(iTimeCanSignElsewhere), sizeof(INT32), numBytesRead); @@ -2324,7 +2326,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubLastDamageReason, sizeof(ubLastDamageReason), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sLastTwoLocations, sizeof(sLastTwoLocations), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiTimeSinceLastBleedGrunt, sizeof(uiTimeSinceLastBleedGrunt), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubNextToPreviousAttackerID, sizeof(ubNextToPreviousAttackerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubNextToPreviousAttackerID, sizeof(ubNextToPreviousAttackerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bDoAutofire, sizeof(bDoAutofire), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->numFlanks, sizeof(numFlanks), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->lastFlankSpot, sizeof(lastFlankSpot), sizeof(INT32), numBytesRead); @@ -2351,9 +2353,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bScopeMode, sizeof(bScopeMode), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubMilitiaAssists, sizeof(ubMilitiaAssists), sizeof(UINT8), numBytesRead ); numBytesRead = ReadFieldByField(hFile, &this->sNonNPCTraderID, sizeof(sNonNPCTraderID), sizeof(INT8), numBytesRead ); - //numBytesRead = ReadFieldByField(hFile, &this->bUnusedINT8_3, sizeof(bUnusedINT8_3), sizeof(INT8), numBytesRead ); - numBytesRead = ReadFieldByField(hFile, &this->usDragPersonID, sizeof(usDragPersonID), sizeof(UINT8), numBytesRead ); - //numBytesRead = ReadFieldByField(hFile, &this->bUnusedINT16_4, sizeof(bUnusedINT16_4), sizeof(INT16), numBytesRead ); + numBytesRead = ReadFieldByField(hFile, &this->usDragPersonID, sizeof(usDragPersonID), sizeof(UINT16), numBytesRead ); numBytesRead = ReadFieldByField(hFile, &this->sDragCorpseID, sizeof(sDragCorpseID), sizeof(INT16), numBytesRead ); if ( guiCurrentSaveGameVersion < DRAGPERSONS ) @@ -2472,10 +2472,10 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) if ( guiCurrentSaveGameVersion >= DISEASE_SYSTEM ) { - numBytesRead = ReadFieldByField( hFile, &this->sDiseasePoints, sizeof(sDiseasePoints), sizeof(INT32), numBytesRead ); + numBytesRead = ReadFieldByField( hFile, &this->sDiseasePoints, sizeof(sDiseasePoints), sizeof(INT16), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->sDiseaseFlag, sizeof(sDiseaseFlag), sizeof(UINT8), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->ubFiller, sizeof( ubFiller ), sizeof( UINT8 ), numBytesRead ); - numBytesRead = ReadFieldByField( hFile, &this->ubHoursRemainingOnMiniEvent, sizeof( ubHoursRemainingOnMiniEvent), sizeof( UINT8 ), numBytesRead ); + numBytesRead = ReadFieldByField( hFile, &this->ubHoursRemainingOnMiniEvent, sizeof( ubHoursRemainingOnMiniEvent), sizeof( UINT16 ), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->usGLDelayMode, sizeof( usGLDelayMode ), sizeof( UINT8 ), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->usBarrelMode, sizeof( usBarrelMode ), sizeof( UINT8 ), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->usBarrelCounter, sizeof( usBarrelCounter ), sizeof( UINT8 ), numBytesRead ); @@ -2607,140 +2607,6 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) buffer++; } - /*if ( guiCurrentSaveGameVersion >= FOOD_CHANGES ) - { - numBytesRead = ReadFieldByField(hFile, &this->bFoodLevel, sizeof(bFoodLevel), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bDrinkLevel, sizeof(bDrinkLevel), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usStarveDamageHealth, sizeof(usStarveDamageHealth), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usStarveDamageStrength, sizeof(usStarveDamageStrength), sizeof(UINT8), numBytesRead); - - if ( guiCurrentSaveGameVersion >= MULTITURN_ACTIONS ) - { - numBytesRead = ReadFieldByField(hFile, &this->bOverTurnAPS, sizeof(bOverTurnAPS), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->sMTActionGridNo, sizeof(sMTActionGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usMultiTurnAction, sizeof(usMultiTurnAction), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bAIIndex, sizeof(bAIIndex), sizeof(UINT16), numBytesRead); - - if ( guiCurrentSaveGameVersion >= SOLDIER_PROFILES ) - { - numBytesRead = ReadFieldByField(hFile, &this->usSoldierProfile, sizeof(usSoldierProfile), sizeof(UINT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usItemMoveSectorID, sizeof(usItemMoveSectorID), sizeof(UINT8), numBytesRead); - - if ( guiCurrentSaveGameVersion >= SOLDIER_PROFILES ) - { - numBytesRead = ReadFieldByField(hFile, &this->usSkillCounter, sizeof(usSkillCounter), sizeof(UINT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usSkillCooldown, sizeof(usSkillCooldown), sizeof(UINT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usAISkillUse, sizeof(usAISkillUse), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - else - { - for(UINT8 i = 0; i < SOLDIER_COUNTER_MAX; ++i) - this->usSkillCounter[i] = 0; - - for(UINT8 i = 0; i < SOLDIER_COOLDOWN_MAX; ++i) - this->usSkillCooldown[i] = 0; - - this->usAISkillUse = 0; - - // as we added new variables, fillersize was reduced, here we account for that. We have to also read the existing fillers that now do not exist anymore - const UINT8 tmp = sizeof(usSkillCounter) + sizeof(usSkillCooldown) + sizeof(usAISkillUse); - UINT8 blarg[tmp]; - numBytesRead = ReadFieldByField(hFile, &blarg, tmp, sizeof(UINT8), numBytesRead); - - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - } - else - { - this->usSoldierProfile = 0; - this->usItemMoveSectorID = 0; - - // as we added new variables, fillersize was reduced, here we account for that. We have to also read the existing fillers that now do not exist anymore - const UINT8 tmp = sizeof(usSoldierProfile) + sizeof(usItemMoveSectorID); - UINT8 blarg[tmp]; - numBytesRead = ReadFieldByField(hFile, &blarg, tmp, sizeof(UINT8), numBytesRead); - - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - } - else - { - this->bOverTurnAPS = 0; - this->sMTActionGridNo = NOWHERE; - this->usMultiTurnAction = 0; - this->bAIIndex = 0; - this->usSoldierProfile = 0; - this->usItemMoveSectorID = 0; - - // as we added new variables, fillersize was reduced, here we account for that. We have to also read the existing fillers that now do not exist anymore - // +1 for padding - const UINT8 tmp = sizeof(bOverTurnAPS) + sizeof(this->sMTActionGridNo) + sizeof(usMultiTurnAction) + sizeof(bAIIndex) + 1 + sizeof(usSoldierProfile) + sizeof(usItemMoveSectorID); - UINT8 blarg[tmp]; - numBytesRead = ReadFieldByField(hFile, &blarg, tmp, sizeof(UINT8), numBytesRead); - - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - } - else - { - //CHRISL: We have to make sure we add a buffer to account for the lack of ubInterruptCounter and that buffer needs to be a full DWORD in size - for(int i = 0; i < sizeof(bFoodLevel); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(bDrinkLevel); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usStarveDamageHealth); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usStarveDamageStrength); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(bOverTurnAPS); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(sMTActionGridNo); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usMultiTurnAction); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(bAIIndex); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usSoldierProfile); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usItemMoveSectorID); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(ubFiller); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - }*/ - #ifdef JA2UB numBytesRead = ReadFieldByField(hFile, &this->fIgnoreGetupFromCollapseCheck, sizeof(fIgnoreGetupFromCollapseCheck), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->GetupFromJA25StartCounter, sizeof(GetupFromJA25StartCounter), sizeof(TIMECOUNTER), numBytesRead); @@ -2748,38 +2614,9 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubPercentDamageInflictedByTeam, sizeof(ubPercentDamageInflictedByTeam), sizeof(UINT8), numBytesRead); #endif numBytesRead += buffer; - if(numBytesRead != SIZEOF_SOLDIERTYPE_POD) + const UINT32 PODsize = SIZEOF_SOLDIERTYPE_POD; + if(numBytesRead != PODsize) return(FALSE); -/* //CHRISL: It was further changed at version 104 to allow for 16bit action points for the 100AP system - //first, load the POD - if ( guiCurrentSaveGameVersion >= AP100_SAVEGAME_DATATYPE_CHANGE ) - { - if ( !FileRead( hFile, this, SIZEOF_SOLDIERTYPE_POD, &uiNumBytesRead ) ) - { - return(FALSE); - } - } - else - { - numBytesRead = 0; - FileRead( hFile, this, (offsetof(SOLDIERTYPE, ubBodyType)+sizeof(ubBodyType)), &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; - numBytesRead = ReadFieldByField(hFile, &this->bActionPoints, 1, 1, numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bInitialActionPoints, 1, 1, numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bOldLife, sizeof(bOldLife), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bVisible, sizeof(bVisible), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bActive, sizeof(bActive), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bTeam, sizeof(bTeam), sizeof(INT8), numBytesRead); - //CHRISL: in the old structure, there are 3 padding bytes at this point in the file. We need to account for - // them before continuing. We also want to include them in our numBytesRead since they cover the changes - // caused by increasing two elements by 1byte each. This includes shifting one byte of padding - FileRead( hFile, padding, 3, &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; - FileRead( hFile, &this->pTempObject, (SIZEOF_SOLDIERTYPE_POD-numBytesRead), &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; - if(numBytesRead != SIZEOF_SOLDIERTYPE_POD) - return(FALSE); - }*/ //load the OO inventory if ( !this->inv.Load(hFile) ) @@ -2817,7 +2654,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->aiData.sNoiseGridno, sizeof(aiData.sNoiseGridno), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.ubNoiseVolume, sizeof(aiData.ubNoiseVolume), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bLastAttackHit, sizeof(aiData.bLastAttackHit), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->aiData.ubXRayedBy, sizeof(aiData.ubXRayedBy), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->aiData.ubXRayedBy, sizeof(aiData.ubXRayedBy), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.dHeightAdjustment, sizeof(aiData.dHeightAdjustment), sizeof(FLOAT), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bMorale, sizeof(aiData.bMorale), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bTeamMoraleMod, sizeof(aiData.bTeamMoraleMod), sizeof(INT8), numBytesRead); @@ -2840,7 +2677,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->aiData.bMoved, sizeof(aiData.bMoved), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bHunting, sizeof(aiData.bHunting), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.ubLastCall, sizeof(aiData.ubLastCall), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->aiData.ubCaller, sizeof(aiData.ubCaller), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->aiData.ubCaller, sizeof(aiData.ubCaller), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.sCallerGridNo, sizeof(aiData.sCallerGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bCallPriority, sizeof(aiData.bCallPriority), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bCallActedUpon, sizeof(aiData.bCallActedUpon), sizeof(INT8), numBytesRead); @@ -3072,9 +2909,14 @@ BOOLEAN WORLDITEM::Load(INT8** hBuffer, float dMajorMapVersion, UINT8 ubMinorMap LOADDATA(&oldWorldItem, *hBuffer, _OLD_SIZEOF_WORLDITEM_POD); *this = oldWorldItem; } + else if (dMajorMapVersion < 8.0) + { + LOADDATA(this, *hBuffer, _SIZEOF_WORLDITEM_INT8_ID_POD); + } else + { LOADDATA(this, *hBuffer, SIZEOF_WORLDITEM_POD); - + } // Load the OO OBJECTTYPE this->object.Load(hBuffer, dMajorMapVersion, ubMinorMapVersion); } @@ -6645,7 +6487,7 @@ BOOLEAN LoadSavedGame( int ubSavedGameID ) if( gTacticalStatus.ubAttackBusyCount > 1 ) { //Lock the ui - SetUIBusy( (UINT8)gusSelectedSoldier ); + SetUIBusy( gusSelectedSoldier ); } // OJW - 20090403 - Fix Tactical Interface is still locked after quick-load else @@ -6890,9 +6732,9 @@ BOOLEAN LoadSavedGame( int ubSavedGameID ) // player team character fixes SOLDIERTYPE *pTeamSoldier; - for (INT8 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) + for (SoldierID bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop) { - pTeamSoldier=MercPtrs[bLoop]; + pTeamSoldier = bLoop; // silversurfer: added additional check to only remove the flags when there is no boxing activity going on at the moment. // WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA. @@ -7085,12 +6927,12 @@ BOOLEAN SaveSoldierStructure( HWFILE hFile ) BOOLEAN LoadSoldierStructure( HWFILE hFile ) { - UINT16 cnt; - UINT32 uiNumBytesRead=0; - UINT8 ubId; + UINT16 cnt; + UINT32 uiNumBytesRead=0; + SoldierID ubId; UINT8 ubOne = 1; UINT8 ubActive = 1; - UINT32 uiPercentage; + UINT32 uiPercentage; SOLDIERTYPE SavedSoldierInfo; //Loop through all the soldier and delete them all @@ -7820,13 +7662,13 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.Team, sizeof(gTacticalStatus.Team), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubCurrentTeam, sizeof(gTacticalStatus.ubCurrentTeam), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sSlideTarget, sizeof(gTacticalStatus.sSlideTarget), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sSlideReason, sizeof(gTacticalStatus.sSlideReason), sizeof(INT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sSlideReason_UNUSED, sizeof(gTacticalStatus.sSlideReason_UNUSED), sizeof(INT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeSinceMercAIStart, sizeof(gTacticalStatus.uiTimeSinceMercAIStart), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fPanicFlags, sizeof(gTacticalStatus.fPanicFlags), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sPanicTriggerGridNoUnused, sizeof(gTacticalStatus.sPanicTriggerGridNoUnused), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sHandGrid, sizeof(gTacticalStatus.sHandGrid), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubSpottersCalledForBy, sizeof(gTacticalStatus.ubSpottersCalledForBy), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubTheChosenOne, sizeof(gTacticalStatus.ubTheChosenOne), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubSpottersCalledForBy, sizeof(gTacticalStatus.ubSpottersCalledForBy), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubTheChosenOne, sizeof(gTacticalStatus.ubTheChosenOne), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeOfLastInput, sizeof(gTacticalStatus.uiTimeOfLastInput), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeSinceDemoOn, sizeof(gTacticalStatus.uiTimeSinceDemoOn), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiCountdownToRestart, sizeof(gTacticalStatus.uiCountdownToRestart), sizeof(UINT32), numBytesRead); @@ -7845,13 +7687,13 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bRealtimeSpeed, sizeof(gTacticalStatus.bRealtimeSpeed), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyIntention, sizeof(gTacticalStatus.ubEnemyIntention), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyIntendedRetreatDirection, sizeof(gTacticalStatus.ubEnemyIntendedRetreatDirection), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fEnemySightingOnTheirTurn, sizeof(gTacticalStatus.fEnemySightingOnTheirTurn), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fAutoBandageMode, sizeof(gTacticalStatus.fAutoBandageMode), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubAttackBusyCount, sizeof(gTacticalStatus.ubAttackBusyCount), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bNumEnemiesFoughtInBattleUnused, sizeof(gTacticalStatus.bNumEnemiesFoughtInBattleUnused), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEngagedInConvFromActionMercID, sizeof(gTacticalStatus.ubEngagedInConvFromActionMercID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEngagedInConvFromActionMercID, sizeof(gTacticalStatus.ubEngagedInConvFromActionMercID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.usTactialTurnLimitCounter, sizeof(gTacticalStatus.usTactialTurnLimitCounter), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fInTopMessage, sizeof(gTacticalStatus.fInTopMessage), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubTopMessageType, sizeof(gTacticalStatus.ubTopMessageType), sizeof(UINT8), numBytesRead); @@ -7869,7 +7711,7 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fSaidCreatureFlavourQuote, sizeof(gTacticalStatus.fSaidCreatureFlavourQuote), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fHaveSeenCreature, sizeof(gTacticalStatus.fHaveSeenCreature), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fKilledEnemyOnAttack, sizeof(gTacticalStatus.fKilledEnemyOnAttack), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttack, sizeof(gTacticalStatus.ubEnemyKilledOnAttack), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttack, sizeof(gTacticalStatus.ubEnemyKilledOnAttack), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bEnemyKilledOnAttackLevel, sizeof(gTacticalStatus.bEnemyKilledOnAttackLevel), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttackLocation, sizeof(gTacticalStatus.ubEnemyKilledOnAttackLocation), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fItemsSeenOnAttack, sizeof(gTacticalStatus.fItemsSeenOnAttack), sizeof(BOOLEAN), numBytesRead); @@ -7883,7 +7725,7 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fCantGetThrough, sizeof(gTacticalStatus.fCantGetThrough), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sCantGetThroughGridNo, sizeof(gTacticalStatus.sCantGetThroughGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sCantGetThroughSoldierGridNo, sizeof(gTacticalStatus.sCantGetThroughSoldierGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubCantGetThroughID, sizeof(gTacticalStatus.ubCantGetThroughID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubCantGetThroughID, sizeof(gTacticalStatus.ubCantGetThroughID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fDidGameJustStart, sizeof(gTacticalStatus.fDidGameJustStart), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fStatChangeCheatOn, sizeof(gTacticalStatus.fStatChangeCheatOn), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubLastRequesterTargetID, sizeof(gTacticalStatus.ubLastRequesterTargetID), sizeof(UINT8), numBytesRead); @@ -7897,25 +7739,24 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fHasAGameBeenStarted, sizeof(gTacticalStatus.fHasAGameBeenStarted), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes, sizeof(gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fSomeoneHit, sizeof(gTacticalStatus.fSomeoneHit), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubPaddingSmall, sizeof(gTacticalStatus.ubPaddingSmall), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeSinceLastOpplistDecay, sizeof(gTacticalStatus.uiTimeSinceLastOpplistDecay), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bMercArrivingQuoteBeingUsed, sizeof(gTacticalStatus.bMercArrivingQuoteBeingUsed), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttackKiller, sizeof(gTacticalStatus.ubEnemyKilledOnAttackKiller), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttackKiller, sizeof(gTacticalStatus.ubEnemyKilledOnAttackKiller), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fCountingDownForGuideDescription, sizeof(gTacticalStatus.fCountingDownForGuideDescription), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bGuideDescriptionCountDown, sizeof(gTacticalStatus.bGuideDescriptionCountDown), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubGuideDescriptionToUse, sizeof(gTacticalStatus.ubGuideDescriptionToUse), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bGuideDescriptionSectorX, sizeof(gTacticalStatus.bGuideDescriptionSectorX), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bGuideDescriptionSectorY, sizeof(gTacticalStatus.bGuideDescriptionSectorY), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fEnemyFlags, sizeof(gTacticalStatus.fEnemyFlags), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus. fAutoBandagePending, sizeof(gTacticalStatus. fAutoBandagePending), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus. fHasEnteredCombatModeSinceEntering, sizeof(gTacticalStatus. fHasEnteredCombatModeSinceEntering), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus. fDontAddNewCrows, sizeof(gTacticalStatus. fDontAddNewCrows), sizeof(BOOLEAN), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fAutoBandagePending, sizeof(gTacticalStatus. fAutoBandagePending), sizeof(BOOLEAN), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fHasEnteredCombatModeSinceEntering, sizeof(gTacticalStatus. fHasEnteredCombatModeSinceEntering), sizeof(BOOLEAN), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fDontAddNewCrows, sizeof(gTacticalStatus. fDontAddNewCrows), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubMorePadding, sizeof(gTacticalStatus.ubMorePadding), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sCreatureTenseQuoteDelay, sizeof(gTacticalStatus.sCreatureTenseQuoteDelay), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiCreatureTenseQuoteLastUpdate, sizeof(gTacticalStatus.uiCreatureTenseQuoteLastUpdate), sizeof(UINT32), numBytesRead); if ( guiCurrentSaveGameVersion >= BUGFIX_NPC_DATA_FOR_BIG_MAPS ) { - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubLastRequesterSurgeryTargetID, sizeof(gTacticalStatus.ubLastRequesterSurgeryTargetID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubLastRequesterSurgeryTargetID, sizeof(gTacticalStatus.ubLastRequesterSurgeryTargetID), sizeof(UINT16), numBytesRead); if ( guiCurrentSaveGameVersion >= IMPROVED_INTERRUPT_SYSTEM ) { numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubInterruptPending, sizeof(gTacticalStatus.ubInterruptPending), sizeof(UINT8), numBytesRead); @@ -8361,7 +8202,7 @@ void CreateSavedGameFileNameFromNumber( UINT8 ubSaveGameID, STR pzNewFileName ) -BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFile, UINT8 ubID ) +BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFile, UINT16 ubID ) { UINT32 uiNumOfNodes=0; PathStPtr pTempPath = Menptr[ ubID ].pMercPath; @@ -8402,7 +8243,7 @@ BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFile, UINT8 ubID ) -BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFile, UINT8 ubID ) +BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFile, UINT16 ubID ) { UINT32 uiNumOfNodes=0; PathStPtr pTempPath = NULL; @@ -8665,7 +8506,7 @@ BOOLEAN SaveGeneralInfo( HWFILE hFile ) if( pContractReHireSoldier != NULL ) sGeneralInfo.sContractRehireSoldierID = pContractReHireSoldier->ubID; else - sGeneralInfo.sContractRehireSoldierID = -1; + sGeneralInfo.sContractRehireSoldierID = NOBODY; memcpy( &sGeneralInfo.GameOptions, &gGameOptions, sizeof( GAME_OPTIONS ) ); #ifndef BMP_RANDOM//dnl ch55 111009 @@ -8685,7 +8526,7 @@ BOOLEAN SaveGeneralInfo( HWFILE hFile ) if( gpSMCurrentMerc ) sGeneralInfo.ubSMCurrentMercID = gpSMCurrentMerc->ubID; else - sGeneralInfo.ubSMCurrentMercID = 255; + sGeneralInfo.ubSMCurrentMercID = NOBODY; //Save the fact that it is the first time in mapscreen sGeneralInfo.fFirstTimeInMapScreen = fFirstTimeInMapScreen; @@ -8696,7 +8537,7 @@ BOOLEAN SaveGeneralInfo( HWFILE hFile ) // Save boxing info memcpy( &sGeneralInfo.sBoxerGridNo, &gsBoxerGridNo, NUM_BOXERS * sizeof( INT32 ) ); - memcpy( &sGeneralInfo.ubBoxerID, &gubBoxerID, NUM_BOXERS * sizeof( INT8 ) ); + memcpy( &sGeneralInfo.ubBoxerID, &gubBoxerID, NUM_BOXERS * sizeof( UINT16 ) ); memcpy( &sGeneralInfo.fBoxerFought, &gfBoxerFought, NUM_BOXERS * sizeof( BOOLEAN ) ); //Save the helicopter status @@ -8944,17 +8785,17 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubHelicopterHitsTaken, sizeof(sGeneralInfo.ubHelicopterHitsTaken), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubQuitType, sizeof(sGeneralInfo.ubQuitType), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fSkyriderSaidCongratsOnTakingSAM, sizeof(sGeneralInfo.fSkyriderSaidCongratsOnTakingSAM), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.sContractRehireSoldierID, sizeof(sGeneralInfo.sContractRehireSoldierID), sizeof(INT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.sContractRehireSoldierID, sizeof(sGeneralInfo.sContractRehireSoldierID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.GameOptions, sizeof(sGeneralInfo.GameOptions), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.uiSeedNumber, sizeof(sGeneralInfo.uiSeedNumber), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.uiBaseJA2Clock, sizeof(sGeneralInfo.uiBaseJA2Clock), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.sCurInterfacePanel, sizeof(sGeneralInfo.sCurInterfacePanel), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubSMCurrentMercID, sizeof(sGeneralInfo.ubSMCurrentMercID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubSMCurrentMercID, sizeof(sGeneralInfo.ubSMCurrentMercID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fFirstTimeInMapScreen, sizeof(sGeneralInfo.fFirstTimeInMapScreen), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fDisableDueToBattleRoster, sizeof(sGeneralInfo.fDisableDueToBattleRoster), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fDisableMapInterfaceDueToBattle, sizeof(sGeneralInfo.fDisableMapInterfaceDueToBattle), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.sBoxerGridNo, sizeof(sGeneralInfo.sBoxerGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubBoxerID, sizeof(sGeneralInfo.ubBoxerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubBoxerID, sizeof(sGeneralInfo.ubBoxerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fBoxerFought, sizeof(sGeneralInfo.fBoxerFought), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fHelicopterDestroyed, sizeof(sGeneralInfo.fHelicopterDestroyed), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fShowMapScreenHelpText, sizeof(sGeneralInfo.fShowMapScreenHelpText), sizeof(BOOLEAN), numBytesRead); @@ -9032,7 +8873,7 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fExplosionQueueActive, sizeof(sGeneralInfo.fExplosionQueueActive), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubUnused, sizeof(sGeneralInfo.ubUnused), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.uiMeanWhileFlags, sizeof(sGeneralInfo.uiMeanWhileFlags), sizeof(UINT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.bSelectedInfoChar, sizeof(sGeneralInfo.bSelectedInfoChar), sizeof(INT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.bSelectedInfoChar, sizeof(sGeneralInfo.bSelectedInfoChar), sizeof(INT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.bHospitalPriceModifier, sizeof(sGeneralInfo.bHospitalPriceModifier), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.bUnused2, sizeof(sGeneralInfo.bUnused2), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.iHospitalTempBalance, sizeof(sGeneralInfo.iHospitalTempBalance), sizeof(INT32), numBytesRead); @@ -9205,10 +9046,10 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) ubQuitType = sGeneralInfo.ubQuitType; //if the soldier id is valid - if( sGeneralInfo.sContractRehireSoldierID == -1 ) + if( sGeneralInfo.sContractRehireSoldierID == NOBODY ) pContractReHireSoldier = NULL; else - pContractReHireSoldier = &Menptr[ sGeneralInfo.sContractRehireSoldierID ]; + pContractReHireSoldier = sGeneralInfo.sContractRehireSoldierID; memcpy( &gGameOptions, &sGeneralInfo.GameOptions, sizeof( GAME_OPTIONS ) ); #ifndef BMP_RANDOM//dnl ch55 111009 @@ -9225,10 +9066,10 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) // Restore the selected merc - if( sGeneralInfo.ubSMCurrentMercID == 255 ) + if( sGeneralInfo.ubSMCurrentMercID == NOBODY) gpSMCurrentMerc = NULL; else - gpSMCurrentMerc = &Menptr[ sGeneralInfo.ubSMCurrentMercID ]; + gpSMCurrentMerc = sGeneralInfo.ubSMCurrentMercID; //Set the interface panel to the team panel ShutdownCurrentPanel( ); @@ -9256,7 +9097,7 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) fDisableMapInterfaceDueToBattle = sGeneralInfo.fDisableMapInterfaceDueToBattle; memcpy( &gsBoxerGridNo, &sGeneralInfo.sBoxerGridNo, NUM_BOXERS * sizeof( INT32 ) ); - memcpy( &gubBoxerID, &sGeneralInfo.ubBoxerID, NUM_BOXERS * sizeof( UINT8 ) ); + memcpy( &gubBoxerID, &sGeneralInfo.ubBoxerID, NUM_BOXERS * sizeof( UINT16 ) ); memcpy( &gfBoxerFought, &sGeneralInfo.fBoxerFought, NUM_BOXERS * sizeof( BOOLEAN ) ); //Load the helicopter status @@ -9437,20 +9278,20 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) gCamoFace[i].gSnowCamoface = FALSE; } - SOLDIERTYPE * pSoldier; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID,pSoldier++) + SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; Soldier <= bLastTeamID; ++Soldier) { - if ( pSoldier ) + if ( Soldier ) { - gCamoFace[pSoldier->ubProfile].gCamoface = ( pSoldier->bCamo > 0 ); - gCamoFace[pSoldier->ubProfile].gUrbanCamoface = ( pSoldier->urbanCamo > 0 ); - gCamoFace[pSoldier->ubProfile].gDesertCamoface = ( pSoldier->desertCamo > 0 ); - gCamoFace[pSoldier->ubProfile].gSnowCamoface = ( pSoldier->snowCamo > 0 ); + UINT8 profile = Soldier->ubProfile; + gCamoFace[profile].gCamoface = ( Soldier->bCamo > 0 ); + gCamoFace[profile].gUrbanCamoface = ( Soldier->urbanCamo > 0 ); + gCamoFace[profile].gDesertCamoface = ( Soldier->desertCamo > 0 ); + gCamoFace[profile].gSnowCamoface = ( Soldier->snowCamo > 0 ); - DeleteSoldierFace( pSoldier ); - pSoldier->iFaceIndex = InitSoldierFace( pSoldier ); + DeleteSoldierFace( Soldier ); + Soldier->iFaceIndex = InitSoldierFace( Soldier ); } } } @@ -9671,18 +9512,19 @@ void GetBestPossibleSectorXYZValues( INT16 *psSectorX, INT16 *psSectorY, INT8 *p } else { - INT16 sSoldierCnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - BOOLEAN fFoundAMerc=FALSE; + SoldierID sSoldierCnt; + SoldierID bLastTeamID; + SOLDIERTYPE *pSoldier; + BOOLEAN fFoundAMerc = FALSE; // Set locator to first merc sSoldierCnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; //loop through all the mercs on the players team to find the one that is not moving - for ( pSoldier = MercPtrs[ sSoldierCnt ]; sSoldierCnt <= bLastTeamID; sSoldierCnt++,pSoldier++) + for ( ; sSoldierCnt <= bLastTeamID; ++sSoldierCnt ) { + pSoldier = sSoldierCnt; // test for !NULL (if initilization fails and MercPtrs contains 'NULL's) if( pSoldier && pSoldier->bActive ) { @@ -9706,8 +9548,9 @@ void GetBestPossibleSectorXYZValues( INT16 *psSectorX, INT16 *psSectorY, INT8 *p bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; //loop through all the mercs and find one that is moving - for ( pSoldier = MercPtrs[ sSoldierCnt ]; sSoldierCnt <= bLastTeamID; sSoldierCnt++,pSoldier++) + for ( ; sSoldierCnt <= bLastTeamID; ++sSoldierCnt ) { + pSoldier = sSoldierCnt; if( pSoldier && pSoldier->bActive ) { //we found an alive, merc that is not moving diff --git a/Ja2/SaveLoadGame.h b/Ja2/SaveLoadGame.h index 3cc011f6..ea873e35 100644 --- a/Ja2/SaveLoadGame.h +++ b/Ja2/SaveLoadGame.h @@ -38,45 +38,32 @@ class SOLDIERTYPE; typedef struct { - UINT32 uiSavedGameVersion; - CHAR8 zGameVersionNumber[ GAME_VERSION_LENGTH ]; - - CHAR16 sSavedGameDesc[ SIZE_OF_SAVE_GAME_DESC ]; - - UINT32 uiFlags; - + UINT32 uiSavedGameVersion; + CHAR8 zGameVersionNumber[ GAME_VERSION_LENGTH ]; + CHAR16 sSavedGameDesc[ SIZE_OF_SAVE_GAME_DESC ]; + UINT32 uiFlags; #ifdef CRIPPLED_VERSION - UINT8 ubCrippleFiller[20]; + UINT8 ubCrippleFiller[20]; #endif - - //The following will be used to quickly access info to display in the save/load screen - UINT32 uiDay; - UINT8 ubHour; - UINT8 ubMin; - INT16 sSectorX; - INT16 sSectorY; - INT8 bSectorZ; - UINT8 ubNumOfMercsOnPlayersTeam; - INT32 iCurrentBalance; - - UINT32 uiCurrentScreen; - - BOOLEAN fAlternateSector; - - BOOLEAN fWorldLoaded; - - UINT8 ubLoadScreenID; //The load screen that should be used when loading the saved game - - GAME_OPTIONS sInitialGameOptions; //need these in the header so we can get the info from it on the save load screen. - - UINT32 uiRandom; - - UINT8 ubFiller[500]; // WANNE: Decrease this filler by 1, for each new UINT8 variable! + UINT32 uiDay; + UINT8 ubHour; + UINT8 ubMin; + INT16 sSectorX; + INT16 sSectorY; + INT8 bSectorZ; + UINT16 ubNumOfMercsOnPlayersTeam; + INT32 iCurrentBalance; + UINT32 uiCurrentScreen; + BOOLEAN fAlternateSector; + BOOLEAN fWorldLoaded; + UINT8 ubLoadScreenID; //The load screen that should be used when loading the saved game + GAME_OPTIONS sInitialGameOptions; //need these in the header so we can get the info from it on the save load screen. + UINT32 uiRandom; + UINT8 ubFiller[494]; // WANNE: Decrease this filler by 1, for each new UINT8 variable! } SAVED_GAME_HEADER; - extern UINT32 guiScreenToGotoAfterLoadingSavedGame; extern UINT32 guiCurrentSaveGameVersion; diff --git a/Ja2/aniviewscreen.cpp b/Ja2/aniviewscreen.cpp index 6cf3a7b8..4106922a 100644 --- a/Ja2/aniviewscreen.cpp +++ b/Ja2/aniviewscreen.cpp @@ -104,7 +104,7 @@ UINT32 AniEditScreenHandle(void) fToggle2 = FALSE; ubCurLoadedState = 0; - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; gTacticalStatus.uiFlags |= LOADING_SAVED_GAME; diff --git a/Ja2/builddefines.h b/Ja2/builddefines.h index 9391b6c3..09a798d5 100644 --- a/Ja2/builddefines.h +++ b/Ja2/builddefines.h @@ -31,7 +31,9 @@ // ----------------------------- // Map Editor version - you should use the MapEditor configuration instead of messing with these defines (ChrisL) -//#define JA2BETAVERSION +#ifndef JA2BETAVERSION +#define JA2BETAVERSION +#endif //#define JA2EDITOR // Normal test version //#define JA2TESTVERSION diff --git a/Ja2/gamescreen.cpp b/Ja2/gamescreen.cpp index b3028c8b..cef155c9 100644 --- a/Ja2/gamescreen.cpp +++ b/Ja2/gamescreen.cpp @@ -108,10 +108,10 @@ INT32 giCounterPeriodOverlay = 0; BOOLEAN gfExitToNewSector = FALSE; //UINT8 gubNewSectorExitDirection; -BOOLEAN gfGameScreenLocateToSoldier = FALSE; -BOOLEAN gfEnteringMapScreen = FALSE; -UINT32 uiOldMouseCursor; -UINT8 gubPreferredInitialSelectedGuy = NOBODY; +BOOLEAN gfGameScreenLocateToSoldier = FALSE; +BOOLEAN gfEnteringMapScreen = FALSE; +UINT32 uiOldMouseCursor; +SoldierID gubPreferredInitialSelectedGuy = NOBODY; BOOLEAN gfTacticalIsModal = FALSE; MOUSE_REGION gTacticalDisableRegion; @@ -261,17 +261,17 @@ void EnterTacticalScreen( ) if ( gusSelectedSoldier != NOBODY ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: check our guy")); - if ( !OK_CONTROLLABLE_MERC( MercPtrs[ gusSelectedSoldier ] ) ) + if ( !OK_CONTROLLABLE_MERC( gusSelectedSoldier ) ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: SelectNextAvailSoldier, merc not controllable")); - SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] ); + SelectNextAvailSoldier( gusSelectedSoldier ); } DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: who is selected? %d", gusSelectedSoldier)); // ATE: If the current guy is sleeping, change.... - if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->flags.fMercAsleep ) + if ( gusSelectedSoldier != NOBODY && gusSelectedSoldier->flags.fMercAsleep ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("EnterTacticalScreen: SelectNextAvailSoldier, merc asleep")); - SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] ); + SelectNextAvailSoldier( gusSelectedSoldier ); } } else @@ -580,9 +580,9 @@ UINT32 MainGameScreenHandle(void) { if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum ) { - MercPtrs[ gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID ]->AdjustNoAPToFinishMove( FALSE ); + gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID->AdjustNoAPToFinishMove( FALSE ); } - MercPtrs[ gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID ]->flags.fPauseAllAnimation = FALSE; + gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID->flags.fPauseAllAnimation = FALSE; gTacticalStatus.fEnemySightingOnTheirTurn = FALSE; } @@ -684,7 +684,7 @@ UINT32 MainGameScreenHandle(void) // Select a guy if he hasn;' if( !gfTacticalPlacementGUIActive ) { - if ( gusSelectedSoldier != NOBODY && OK_INTERRUPT_MERC( MercPtrs[ gusSelectedSoldier ] ) ) + if ( gusSelectedSoldier != NOBODY && OK_INTERRUPT_MERC( gusSelectedSoldier ) ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("maingamescreenhandle: selectsoldier")); SelectSoldier( gusSelectedSoldier, FALSE, TRUE ); @@ -735,11 +735,11 @@ UINT32 MainGameScreenHandle(void) if ( !ARE_IN_FADE_IN( ) ) { - HandleAutoBandagePending( ); + HandleAutoBandagePending( ); - #ifdef JA2UB - HandleThePlayerBeNotifiedOfSomeoneElseInSector(); - #endif +#ifdef JA2UB + HandleThePlayerBeNotifiedOfSomeoneElseInSector(); +#endif } @@ -933,7 +933,7 @@ UINT32 MainGameScreenHandle(void) if ( gusSelectedSoldier != NOBODY ) { if( !gGameSettings.fOptions[ TOPTION_MUTE_CONFIRMATIONS ] ) - MercPtrs[ gusSelectedSoldier ]->DoMercBattleSound( BATTLE_SOUND_ATTN1 ); + gusSelectedSoldier->DoMercBattleSound( BATTLE_SOUND_ATTN1 ); } } @@ -1030,15 +1030,12 @@ void DisableFPSOverlay( BOOLEAN fEnable ) void TacticalScreenLocateToSoldier( ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - BOOLEAN fPreferedGuyUsed = FALSE; + BOOLEAN fPreferedGuyUsed = FALSE; if ( gubPreferredInitialSelectedGuy != NOBODY ) { // ATE: Put condition here... - if ( OK_CONTROLLABLE_MERC( MercPtrs[ gubPreferredInitialSelectedGuy ] ) && OK_INTERRUPT_MERC( MercPtrs[ gubPreferredInitialSelectedGuy ] ) ) + if ( OK_CONTROLLABLE_MERC( gubPreferredInitialSelectedGuy ) && OK_INTERRUPT_MERC( gubPreferredInitialSelectedGuy ) ) { LocateSoldier( gubPreferredInitialSelectedGuy, 10 ); SelectSoldier( gubPreferredInitialSelectedGuy, FALSE, TRUE ); @@ -1050,14 +1047,14 @@ void TacticalScreenLocateToSoldier( ) if ( !fPreferedGuyUsed ) { // Set locator to first merc - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + SoldierID Soldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + for ( ; Soldier <= bLastTeamID; ++Soldier) { - if ( OK_CONTROLLABLE_MERC( pSoldier ) && OK_INTERRUPT_MERC( pSoldier ) ) + if ( OK_CONTROLLABLE_MERC( Soldier ) && OK_INTERRUPT_MERC( Soldier ) ) { - LocateSoldier( pSoldier->ubID, 10 ); - SelectSoldier( pSoldier->ubID, FALSE, TRUE ); + LocateSoldier( Soldier, 10 ); + SelectSoldier( Soldier, FALSE, TRUE ); break; } } @@ -1075,22 +1072,17 @@ void EnterMapScreen( ) void UpdateTeamPanelAssignments( ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - // Remove all players RemoveAllPlayersFromSlot( ); // Set locator to first merc - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + SoldierID Soldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + for ( ; Soldier <= bLastTeamID; ++Soldier) { // Setup team interface - CheckForAndAddMercToTeamPanel( pSoldier ); + CheckForAndAddMercToTeamPanel( Soldier ); } - } diff --git a/Ja2/gamescreen.h b/Ja2/gamescreen.h index da597829..11a0ccf3 100644 --- a/Ja2/gamescreen.h +++ b/Ja2/gamescreen.h @@ -1,8 +1,8 @@ #ifndef _GAMESCREEN_H #define _GAMESCREEN_H - -#include "Fade Screen.h" +#include "Overhead Types.h" +#include "fade screen.h" #define ARE_IN_FADE_IN( ) ( gfFadeIn || gfFadeInitialized ) @@ -14,9 +14,9 @@ void FadeOutGameScreen( ); typedef void (*MODAL_HOOK)( void ); -extern BOOLEAN gfGameScreenLocateToSoldier; -extern BOOLEAN gfEnteringMapScreen; -extern UINT8 gubPreferredInitialSelectedGuy; +extern BOOLEAN gfGameScreenLocateToSoldier; +extern BOOLEAN gfEnteringMapScreen; +extern SoldierID gubPreferredInitialSelectedGuy; void EnterMapScreen( ); @@ -41,4 +41,4 @@ void InitHelicopterEntranceByMercs( void ); void InternalLeaveTacticalScreen( UINT32 uiNewScreen ); -#endif +#endif diff --git a/Ja2/jascreens.cpp b/Ja2/jascreens.cpp index 7fec7bab..fc6a228c 100644 --- a/Ja2/jascreens.cpp +++ b/Ja2/jascreens.cpp @@ -514,31 +514,25 @@ UINT32 PalEditScreenShutdown(void) void PalEditRenderHook( ) { - SOLDIERTYPE *pSoldier; - - if ( gusSelectedSoldier != NOBODY ) + if ( gusSelectedSoldier < NOBODY && gusSelectedSoldier->bActive) { - // Set to current - GetSoldier( &pSoldier, gusSelectedSoldier ); - - DisplayPaletteRep( pSoldier->HeadPal, 50, 10, FRAME_BUFFER ); - DisplayPaletteRep( pSoldier->PantsPal, 50, 50, FRAME_BUFFER ); - DisplayPaletteRep( pSoldier->VestPal, 50, 90, FRAME_BUFFER ); - DisplayPaletteRep( pSoldier->SkinPal, 50, 130, FRAME_BUFFER ); - + DisplayPaletteRep( gusSelectedSoldier->HeadPal, 50, 10, FRAME_BUFFER ); + DisplayPaletteRep( gusSelectedSoldier->PantsPal, 50, 50, FRAME_BUFFER ); + DisplayPaletteRep( gusSelectedSoldier->VestPal, 50, 90, FRAME_BUFFER ); + DisplayPaletteRep( gusSelectedSoldier->SkinPal, 50, 130, FRAME_BUFFER ); } } BOOLEAN PalEditKeyboardHook( InputAtom *pInputEvent ) { - UINT8 ubType; - SOLDIERTYPE *pSoldier; - UINT8 ubPaletteRep; - UINT32 cnt; - UINT8 ubStartRep = 0; - UINT8 ubEndRep = 0; + SOLDIERTYPE *pSoldier; + UINT32 cnt; + UINT8 ubType; + UINT8 ubPaletteRep; + UINT8 ubStartRep = 0; + UINT8 ubEndRep = 0; - if ( gusSelectedSoldier == NOBODY ) + if ( gusSelectedSoldier >= NOBODY || gusSelectedSoldier->bActive == FALSE ) { return( FALSE ); } @@ -549,11 +543,10 @@ BOOLEAN PalEditKeyboardHook( InputAtom *pInputEvent ) return( TRUE ); } + pSoldier = gusSelectedSoldier; + if ((pInputEvent->usEvent == KEY_DOWN )&& ( pInputEvent->usParam == 'h' )) { - // Get Soldier - GetSoldier( &pSoldier, gusSelectedSoldier ); - // Get index of current CHECKF( GetPaletteRepIndexFromID( pSoldier->HeadPal, &ubPaletteRep ) ); ubType = gpPalRep[ ubPaletteRep ].ubType; @@ -582,9 +575,6 @@ BOOLEAN PalEditKeyboardHook( InputAtom *pInputEvent ) if ((pInputEvent->usEvent == KEY_DOWN )&& ( pInputEvent->usParam == 'v' )) { - // Get Soldier - GetSoldier( &pSoldier, gusSelectedSoldier ); - // Get index of current CHECKF( GetPaletteRepIndexFromID( pSoldier->VestPal, &ubPaletteRep ) ); ubType = gpPalRep[ ubPaletteRep ].ubType; @@ -612,9 +602,6 @@ BOOLEAN PalEditKeyboardHook( InputAtom *pInputEvent ) if ((pInputEvent->usEvent == KEY_DOWN )&& ( pInputEvent->usParam == 'p' )) { - // Get Soldier - GetSoldier( &pSoldier, gusSelectedSoldier ); - // Get index of current CHECKF( GetPaletteRepIndexFromID( pSoldier->PantsPal, &ubPaletteRep ) ); ubType = gpPalRep[ ubPaletteRep ].ubType; @@ -642,9 +629,6 @@ BOOLEAN PalEditKeyboardHook( InputAtom *pInputEvent ) if ((pInputEvent->usEvent == KEY_DOWN )&& ( pInputEvent->usParam == 's' )) { - // Get Soldier - GetSoldier( &pSoldier, gusSelectedSoldier ); - // Get index of current CHECKF( GetPaletteRepIndexFromID( pSoldier->SkinPal, &ubPaletteRep ) ); ubType = gpPalRep[ ubPaletteRep ].ubType; diff --git a/Ja2/legion cfg.cpp b/Ja2/legion cfg.cpp index 4bf3f8df..40501919 100644 --- a/Ja2/legion cfg.cpp +++ b/Ja2/legion cfg.cpp @@ -81,9 +81,9 @@ void RandomStats (); void RandomAddEnemy( UINT8 SectorX, UINT8 SectorY, UINT8 Level ) { UNDERGROUND_SECTORINFO *pSector; -UINT8 ubNumAdmins = 0; -UINT8 ubNumTroops = 0; -UINT8 ubNumElites = 0; +UINT16 ubNumAdmins = 0; +UINT16 ubNumTroops = 0; +UINT16 ubNumElites = 0; if ( Level != 0 ) { diff --git a/Laptop/AimMembers.cpp b/Laptop/AimMembers.cpp index e5485db0..1baa31bd 100644 --- a/Laptop/AimMembers.cpp +++ b/Laptop/AimMembers.cpp @@ -2422,9 +2422,9 @@ INT8 AimMemberHireMerc() MERC_HIRE_STRUCT HireMercStruct; // UINT8 ubCurrentSoldier = AimMercArray[gbCurrentIndex]; UINT8 ubCurrentSoldier = gAimAvailability[AimMercArray[gbCurrentIndex]].ProfilId; - INT8 bReturnCode; - INT16 sSoldierID=0; - INT8 bTypeOfContract=0; + INT8 bReturnCode; + SoldierID sSoldierID = NOBODY; + INT8 bTypeOfContract=0; if( LaptopSaveInfo.iCurrentBalance < giContractAmount ) @@ -2500,9 +2500,10 @@ INT8 AimMemberHireMerc() //Set the type of contract the merc is on sSoldierID = GetSoldierIDFromMercID( ubCurrentSoldier ); - if( sSoldierID == -1 ) + if( sSoldierID == NOBODY ) return( FALSE ); - Menptr[ sSoldierID ].bTypeOfLastContract = bTypeOfContract; + + sSoldierID->bTypeOfLastContract = bTypeOfContract; //add an entry in the finacial page for the hiring of the merc diff --git a/Laptop/BobbyRGuns.cpp b/Laptop/BobbyRGuns.cpp index d8cc71c4..7acdf0dd 100644 --- a/Laptop/BobbyRGuns.cpp +++ b/Laptop/BobbyRGuns.cpp @@ -3720,26 +3720,27 @@ void OutOfStockMessageBoxCallBack( UINT8 bExitValue ) UINT8 CheckPlayersInventoryForGunMatchingGivenAmmoID( INT16 sItemID ) { UINT8 ubItemCount=0; - UINT8 ubMercCount; UINT8 ubPocketCount; - UINT8 ubFirstID = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT8 ubLastID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + SoldierID id; + SoldierID ubFirstID = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID ubLastID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; //loop through all the mercs on the team - for( ubMercCount = ubFirstID; ubMercCount <= ubLastID; ++ubMercCount ) + for( id = ubFirstID; id <= ubLastID; ++id ) { - if( Menptr[ ubMercCount ].bActive ) + SOLDIERTYPE *pSoldier = id; + if( pSoldier->bActive ) { //loop through all the pockets on the merc - UINT8 invsize = Menptr[ ubMercCount ].inv.size(); + UINT8 invsize = pSoldier->inv.size(); for( ubPocketCount=0; ubPocketCountinv[ ubPocketCount ].usItem ].usItemClass == IC_GUN ) { //if the weapon uses the same kind of ammo as the one passed in, return true - if( Weapon[ Menptr[ ubMercCount ].inv[ ubPocketCount ].usItem ].ubCalibre == Magazine[ Item[ sItemID ].ubClassIndex ].ubCalibre ) + if( Weapon[ pSoldier->inv[ ubPocketCount ].usItem ].ubCalibre == Magazine[ Item[ sItemID ].ubClassIndex ].ubCalibre ) { ++ubItemCount; } diff --git a/Laptop/IMP Gear.cpp b/Laptop/IMP Gear.cpp index a969e7b0..82e985e1 100644 --- a/Laptop/IMP Gear.cpp +++ b/Laptop/IMP Gear.cpp @@ -269,7 +269,7 @@ void IMPGearDisplay( ) gIMPGearGun1 = currentWeapon; std::vector > entries; - entries.push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + entries.push_back(std::make_pair(0, pLongAssignmentStrings[60])); //Reusing AssignmentString for "Empty" text if (Item[gIMPGearGun1].usItemClass & IC_GUN) { @@ -321,7 +321,7 @@ void IMPGearDisplay( ) std::vector > entries; - entries.push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + entries.push_back(std::make_pair(0, pLongAssignmentStrings[60])); //Reusing AssignmentString for "Empty" text if (Item[gIMPGearGun2].usItemClass & IC_GUN) @@ -372,7 +372,7 @@ void IMPGearDisplay( ) gIMPGearGun3 = currentWeapon; std::vector > entries; - entries.push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + entries.push_back(std::make_pair(0, pLongAssignmentStrings[60])); //Reusing AssignmentString for "Empty" text if (Item[gIMPGearGun3].usItemClass & IC_GUN) { @@ -1272,7 +1272,7 @@ void DistributePossibleItemsToVectors(void) // it is always possible to not select something for (int i = 0; i < NUM_INV_SLOTS; ++i) { - gIMPPossibleItems[i].push_back(std::make_pair(0, pLongAssignmentStrings[40])); //Reusing AssignmentString for "Empty" text + gIMPPossibleItems[i].push_back(std::make_pair(0, pLongAssignmentStrings[60])); //Reusing AssignmentString for "Empty" text SetChoiceForPocket(i, 0, 1); // Initialize all selections to empty at first } diff --git a/Laptop/LaptopSave.h b/Laptop/LaptopSave.h index ba269c5d..0fed6ec9 100644 --- a/Laptop/LaptopSave.h +++ b/Laptop/LaptopSave.h @@ -25,8 +25,8 @@ class SOLDIERTYPE; typedef struct { - BOOLEAN fActive; - UINT8 ubSoldierID; + BOOLEAN fActive; + SoldierID ubSoldierID; UINT8 ubMercID; INT32 iPayOutPrice; } LIFE_INSURANCE_PAYOUT; diff --git a/Laptop/insurance Contract.cpp b/Laptop/insurance Contract.cpp index 441c40d2..6e6730a5 100644 --- a/Laptop/insurance Contract.cpp +++ b/Laptop/insurance Contract.cpp @@ -163,11 +163,11 @@ BOOLEAN DisplayOrderGrid( UINT8 ubGridNumber, UINT8 ubMercID ); INT8 GetNumberOfHireMercsStartingFromID( UINT8 ubStartMercID ); //INT32 CalculateInsuranceCost( SOLDIERTYPE *pSoldier, BOOLEAN fHaveInsurance ); void InsuranceContractUserTextFieldCallBack( UINT8 ubID, BOOLEAN fEntering ); -INT8 CountInsurableMercs(); +UINT16 CountInsurableMercs(); void DisableInsuranceContractNextPreviousbuttons(); void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate); -void HandleAcceptButton( UINT8 ubSoldierID, UINT8 ubFormID ); -FLOAT DiffFromNormRatio( INT16 sThisValue, INT16 sNormalValue ); +void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID ); +FLOAT DiffFromNormRatio( INT16 sThisValue, INT16 sNormalValue ); void InsContractNoMercsPopupCallBack( UINT8 bExitValue ); void BuildInsuranceArray(); BOOLEAN MercIsInsurable( SOLDIERTYPE *pSoldier ); @@ -177,8 +177,8 @@ UINT32 GetTimeRemainingOnSoldiersContract( SOLDIERTYPE *pSoldier ); UINT32 GetTimeRemainingOnSoldiersInsuranceContract( SOLDIERTYPE *pSoldier ); void EnableDisableIndividualInsuranceContractButton( UINT8 ubMercIDForMercInForm1, UINT32 *puiAcceptButton ); BOOLEAN CanSoldierExtendInsuranceContract( SOLDIERTYPE *pSoldier ); -INT32 CalculateSoldiersInsuranceContractLength( SOLDIERTYPE *pSoldier ); -INT32 CalcStartDayOfInsurance( SOLDIERTYPE *pSoldier ); +INT32 CalculateSoldiersInsuranceContractLength( SOLDIERTYPE *pSoldier ); +INT32 CalcStartDayOfInsurance( SOLDIERTYPE *pSoldier ); BOOLEAN AreAnyAimMercsOnTeam( ); //ppp @@ -394,12 +394,14 @@ void RenderInsuranceContract() { sMercID = gubInsuranceMercArray[ sNextMercID ]; - pSoldier = &Menptr[ GetSoldierIDFromMercID( (UINT8) sMercID ) ]; - - if( ( sMercID != -1 ) && MercIsInsurable( pSoldier ) ) + SoldierID ID = GetSoldierIDFromMercID( sMercID ); + if ( ID != NOBODY ) { - DisplayOrderGrid( ubCount, (UINT8)sMercID ); - ubCount++; + if( ( sMercID != -1 ) && MercIsInsurable( ID ) ) + { + DisplayOrderGrid( ubCount, (UINT8)sMercID ); + ubCount++; + } } sNextMercID++; @@ -499,18 +501,22 @@ void BtnInsContractNextButtonCallBack(GUI_BUTTON *btn,INT32 reason) BOOLEAN DisplayOrderGrid( UINT8 ubGridNumber, UINT8 ubMercID ) { - VOBJECT_DESC VObjectDesc; - HVOBJECT hPixHandle; - UINT16 usPosX, usPosY; - UINT32 uiInsMercFaceImage; - INT32 iCostOfContract=0; - char sTemp[100]; - CHAR16 sText[800]; - BOOLEAN fDisplayMercContractStateTextColorInRed = FALSE; - - SOLDIERTYPE *pSoldier = &Menptr[ GetSoldierIDFromMercID( ubMercID ) ]; + VOBJECT_DESC VObjectDesc; + HVOBJECT hPixHandle; + UINT16 usPosX, usPosY; + UINT32 uiInsMercFaceImage; + INT32 iCostOfContract=0; + char sTemp[100]; + CHAR16 sText[800]; + BOOLEAN fDisplayMercContractStateTextColorInRed = FALSE; + SoldierID usID = GetSoldierIDFromMercID( ubMercID ); + if ( usID == NOBODY ) + { + return(FALSE); + } + SOLDIERTYPE *pSoldier = usID; usPosX=usPosY=0; switch( ubGridNumber ) @@ -747,8 +753,8 @@ void BtnInsuranceAcceptClearForm1ButtonCallback(GUI_BUTTON *btn,INT32 reason) { if (btn->uiFlags & BUTTON_CLICKED_ON) { - UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); - UINT8 ubSoldierID = (UINT8) GetSoldierIDFromMercID( gubMercIDForMercInForm1 ); + UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); + SoldierID ubSoldierID = GetSoldierIDFromMercID( gubMercIDForMercInForm1 ); btn->uiFlags &= (~BUTTON_CLICKED_ON ); @@ -759,7 +765,7 @@ void BtnInsuranceAcceptClearForm1ButtonCallback(GUI_BUTTON *btn,INT32 reason) HandleAcceptButton( ubSoldierID, 1 ); //specify the length of the insurance contract - Menptr[ ubSoldierID ].iTotalLengthOfInsuranceContract = gsForm1InsuranceLengthNumber; + ubSoldierID->iTotalLengthOfInsuranceContract = gsForm1InsuranceLengthNumber; //reset the insurance length gsForm1InsuranceLengthNumber = 0; @@ -791,8 +797,8 @@ void BtnInsuranceAcceptClearForm2ButtonCallback(GUI_BUTTON *btn,INT32 reason) { if (btn->uiFlags & BUTTON_CLICKED_ON) { - UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); - UINT8 ubSoldierID = (UINT8) GetSoldierIDFromMercID( gubMercIDForMercInForm2 ); + UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); + SoldierID ubSoldierID = GetSoldierIDFromMercID( gubMercIDForMercInForm2 ); btn->uiFlags &= (~BUTTON_CLICKED_ON ); @@ -803,7 +809,7 @@ void BtnInsuranceAcceptClearForm2ButtonCallback(GUI_BUTTON *btn,INT32 reason) HandleAcceptButton( ubSoldierID, 2 ); //specify the length of the insurance contract - Menptr[ ubSoldierID ].iTotalLengthOfInsuranceContract = gsForm2InsuranceLengthNumber; + ubSoldierID->iTotalLengthOfInsuranceContract = gsForm2InsuranceLengthNumber; //reset the insurance length gsForm2InsuranceLengthNumber = 0; @@ -836,8 +842,8 @@ void BtnInsuranceAcceptClearForm3ButtonCallback(GUI_BUTTON *btn,INT32 reason) { if (btn->uiFlags & BUTTON_CLICKED_ON) { - UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); - UINT8 ubSoldierID = (UINT8) GetSoldierIDFromMercID( gubMercIDForMercInForm3 ); + UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); + SoldierID ubSoldierID = GetSoldierIDFromMercID( gubMercIDForMercInForm3 ); btn->uiFlags &= (~BUTTON_CLICKED_ON ); @@ -848,7 +854,7 @@ void BtnInsuranceAcceptClearForm3ButtonCallback(GUI_BUTTON *btn,INT32 reason) HandleAcceptButton( ubSoldierID, 3 ); //specify the length of the insurance contract - Menptr[ ubSoldierID ].iTotalLengthOfInsuranceContract = gsForm3InsuranceLengthNumber; + ubSoldierID->iTotalLengthOfInsuranceContract = gsForm3InsuranceLengthNumber; //reset the insurance length gsForm3InsuranceLengthNumber = 0; @@ -937,20 +943,17 @@ void SelectInsuranceContractRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason } } -INT8 CountInsurableMercs() +UINT16 CountInsurableMercs() { - INT16 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - INT8 bCount=0; + UINT16 bCount = 0; // Set locator to first merc - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SoldierID Soldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + for ( ; Soldier <= bLastTeamID; ++Soldier) { - if (MercIsInsurable(pSoldier)) + if (MercIsInsurable(Soldier)) { bCount++; } @@ -1067,12 +1070,12 @@ void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate) -void HandleAcceptButton( UINT8 ubSoldierID, UINT8 ubFormID ) +void HandleAcceptButton( SoldierID ubSoldierID, UINT8 ubFormID ) { //passed in either 1,2,3 should be 0,1,2 ubFormID--; - PurchaseOrExtendInsuranceForSoldier( &Menptr[ ubSoldierID ], CalculateSoldiersInsuranceContractLength( &Menptr[ ubSoldierID ] ) ); + PurchaseOrExtendInsuranceForSoldier( ubSoldierID, CalculateSoldiersInsuranceContractLength( ubSoldierID ) ); RenderInsuranceContract(); } @@ -1088,33 +1091,29 @@ void HandleAcceptButton( UINT8 ubSoldierID, UINT8 ubFormID ) // determines if a merc will run out of their insurance contract void DailyUpdateOfInsuredMercs() { - INT16 cnt; - INT16 bLastTeamID; - SOLDIERTYPE *pSoldier; + SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + for ( ; Soldier <= bLastTeamID; ++Soldier) { //if the soldier is in the team array - if( pSoldier->bActive ) + if( Soldier->bActive ) { //if the merc has life insurance - if( pSoldier->usLifeInsurance ) + if( Soldier->usLifeInsurance ) { //if the merc wasn't just hired - if( (INT16)GetWorldDay() != pSoldier->iStartOfInsuranceContract ) + if( (INT16)GetWorldDay() != Soldier->iStartOfInsuranceContract ) { //if the contract has run out of time - if( GetTimeRemainingOnSoldiersInsuranceContract( pSoldier ) <= 0 ) + if( GetTimeRemainingOnSoldiersInsuranceContract( Soldier ) <= 0 ) { //if the soldier isn't dead - if( !IsMercDead( pSoldier->ubProfile ) ) + if( !IsMercDead( Soldier->ubProfile ) ) { - pSoldier->usLifeInsurance = 0; - pSoldier->iTotalLengthOfInsuranceContract = 0; - pSoldier->iStartOfInsuranceContract = 0; + Soldier->usLifeInsurance = 0; + Soldier->iTotalLengthOfInsuranceContract = 0; + Soldier->iStartOfInsuranceContract = 0; } } } @@ -1139,7 +1138,7 @@ INT32 CalculateInsuranceContractCost( INT32 iLength, UINT8 ubMercID ) SOLDIERTYPE *pSoldier; - pSoldier = &Menptr[ GetSoldierIDFromMercID( ubMercID ) ]; + pSoldier = GetSoldierIDFromMercID( ubMercID ); // only mercs with at least 2 days to go on their employment contract are insurable @@ -1248,20 +1247,16 @@ void InsContractNoMercsPopupCallBack( UINT8 bExitValue ) void BuildInsuranceArray() { - INT16 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; gsMaxPlayersOnTeam = 0; // store profile #s of all insurable mercs in an array - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + for ( ; Soldier <= bLastTeamID; ++Soldier) { - if( MercIsInsurable(pSoldier) ) + if( MercIsInsurable(Soldier) ) { - gubInsuranceMercArray[ gsMaxPlayersOnTeam ] = pSoldier->ubProfile; + gubInsuranceMercArray[ gsMaxPlayersOnTeam ] = Soldier->ubProfile; gsMaxPlayersOnTeam++; } } @@ -1355,7 +1350,7 @@ BOOLEAN AddLifeInsurancePayout( SOLDIERTYPE *pSoldier ) } -void StartInsuranceInvestigation( UINT8 ubPayoutID ) +void StartInsuranceInvestigation( UINT16 ubPayoutID ) { UINT8 ubDays; @@ -1408,7 +1403,7 @@ void StartInsuranceInvestigation( UINT8 ubPayoutID ) } -void EndInsuranceInvestigation( UINT8 ubPayoutID ) +void EndInsuranceInvestigation( UINT16 ubPayoutID ) { // send an email telling player the investigation is over if ( gMercProfiles[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubMercID ].ubSuspiciousDeath == VERY_SUSPICIOUS_DEATH ) @@ -1455,14 +1450,14 @@ void EndInsuranceInvestigation( UINT8 ubPayoutID ) //void InsuranceContractPayLifeInsuranceForDeadMerc( LIFE_INSURANCE_PAYOUT *pPayoutStruct ) -void InsuranceContractPayLifeInsuranceForDeadMerc( UINT8 ubPayoutID ) +void InsuranceContractPayLifeInsuranceForDeadMerc( UINT16 ubPayoutID ) { //if the mercs id number is the same what is in the soldier array - if( LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID == Menptr[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID ].ubID ) + if( LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID == LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID->ubID ) { // and if the soldier is still active ( player hasn't removed carcass yet ), reset insurance flag - if( Menptr[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID ].bActive ) - Menptr[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID ].usLifeInsurance = 0; + if( LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID->bActive ) + LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID->usLifeInsurance = 0; } //add transaction to players account @@ -1552,14 +1547,12 @@ void EnableDisableInsuranceContractAcceptButtons() void EnableDisableIndividualInsuranceContractButton( UINT8 ubMercIDForMercInForm, UINT32 *puiAcceptButton ) { - INT16 sSoldierID = 0; - - sSoldierID = GetSoldierIDFromMercID( ubMercIDForMercInForm ); - if( sSoldierID == - 1) + SoldierID sSoldierID = GetSoldierIDFromMercID( ubMercIDForMercInForm ); + if( sSoldierID == NOBODY) return; // if the soldiers contract can be extended, enable the button - if( CanSoldierExtendInsuranceContract( &Menptr[ sSoldierID ] ) ) + if( CanSoldierExtendInsuranceContract( sSoldierID ) ) EnableButton( *puiAcceptButton ); // else the soldier cant extend their insurance contract, disable the button @@ -1783,14 +1776,13 @@ INT32 CalcStartDayOfInsurance( SOLDIERTYPE *pSoldier ) BOOLEAN AreAnyAimMercsOnTeam( ) { - SOLDIERTYPE *pSoldier = NULL; + SoldierID Soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for( int cnt = 0; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) + for( ; Soldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++Soldier) { - pSoldier = MercPtrs[cnt]; - //check to see if any of the mercs are AIM mercs - if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( Soldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) { return TRUE; } diff --git a/Laptop/insurance Contract.h b/Laptop/insurance Contract.h index 8aa3d231..d795d277 100644 --- a/Laptop/insurance Contract.h +++ b/Laptop/insurance Contract.h @@ -18,9 +18,9 @@ void DailyUpdateOfInsuredMercs(); //void InsuranceContractPayLifeInsuranceForDeadMerc( LIFE_INSURANCE_PAYOUT *pPayoutStruct ); BOOLEAN AddLifeInsurancePayout( SOLDIERTYPE *pSoldier ); -void InsuranceContractPayLifeInsuranceForDeadMerc( UINT8 ubPayoutID ); -void StartInsuranceInvestigation( UINT8 ubPayoutID ); -void EndInsuranceInvestigation( UINT8 ubPayoutID ); +void InsuranceContractPayLifeInsuranceForDeadMerc( UINT16 ubPayoutID ); +void StartInsuranceInvestigation( UINT16 ubPayoutID ); +void EndInsuranceInvestigation( UINT16 ubPayoutID ); INT32 CalculateInsuranceContractCost( INT32 iLength, UINT8 ubMercID ); @@ -28,4 +28,4 @@ void InsuranceContractEndGameShutDown(); void PurchaseOrExtendInsuranceForSoldier( SOLDIERTYPE *pSoldier, UINT32 uiInsuranceLength ); -#endif +#endif diff --git a/Laptop/laptop.cpp b/Laptop/laptop.cpp index e6da5bcb..9844cbdc 100644 --- a/Laptop/laptop.cpp +++ b/Laptop/laptop.cpp @@ -6243,7 +6243,7 @@ void PrintNumberOnTeam( void ) { CHAR16 pString[ 32 ]; SOLDIERTYPE *pSoldier, *pTeamSoldier; - INT32 cnt=0; + SoldierID cnt = 0; INT32 iCounter=0; UINT16 usPosX, usPosY, usFontHeight, usStrLength; @@ -6256,9 +6256,9 @@ void PrintNumberOnTeam( void ) // grab number on team pSoldier = MercPtrs[0]; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt ) { - pTeamSoldier = MercPtrs[ cnt ]; + pTeamSoldier = cnt; if( ( pTeamSoldier->bActive)&&( !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) ) { diff --git a/Laptop/merccompare.cpp b/Laptop/merccompare.cpp index 03b6d9fb..6b1797b1 100644 --- a/Laptop/merccompare.cpp +++ b/Laptop/merccompare.cpp @@ -340,13 +340,12 @@ BOOLEAN EnterMercCompareAnalyze() // We fill two dropdowns with all mercs on our team std::vector > mercvector; - SOLDIERTYPE* pSoldier = NULL; - UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id) { - if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE ) - mercvector.push_back( std::make_pair( pSoldier->ubProfile, gMercProfiles[pSoldier->ubProfile].zNickname ) ); + if ( id->bActive && id->ubProfile != NO_PROFILE ) + mercvector.push_back( std::make_pair( id->ubProfile, gMercProfiles[id->ubProfile].zNickname ) ); } DropDownTemplate::getInstance( ).SetEntries( mercvector ); @@ -433,12 +432,12 @@ void RenderMercCompareAnalyze() BOOLEAN DisplayMercData( UINT8 usProfileA, UINT8 usProfileB ) { - VOBJECT_DESC VObjectDesc; - HVOBJECT hPixHandle; + VOBJECT_DESC VObjectDesc; + HVOBJECT hPixHandle; UINT16 usPosX, usPosY, usPosY2; UINT32 uiInsMercFaceImage; INT32 iCostOfContract = 0; - char sTemp[100]; + char sTemp[100]; CHAR16 sText[800]; BOOLEAN fDisplayMercContractStateTextColorInRed = FALSE; @@ -452,14 +451,14 @@ BOOLEAN DisplayMercData( UINT8 usProfileA, UINT8 usProfileB ) if ( !pProfileA || !pProfileB ) return FALSE; - INT16 idA = GetSoldierIDFromMercID( usProfileA ); - INT16 idB = GetSoldierIDFromMercID( usProfileB ); + SoldierID idA = GetSoldierIDFromMercID( usProfileA ); + SoldierID idB = GetSoldierIDFromMercID( usProfileB ); - if ( idA < 0 || idB < 0 ) + if ( idA == NOBODY || idB == NOBODY ) return FALSE; - SOLDIERTYPE* pSoldierA = MercPtrs[idA]; - SOLDIERTYPE* pSoldierB = MercPtrs[idB]; + SOLDIERTYPE* pSoldierA = idA; + SOLDIERTYPE* pSoldierB = idB; if ( !pSoldierA || !pSoldierB ) return FALSE; @@ -976,17 +975,16 @@ BOOLEAN EnterMercCompareMatrix( ) // create a map of all current squads with at least 2 members std::map squadmap; - SOLDIERTYPE* pSoldier = NULL; - UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bAssignment < ON_DUTY ) + if ( id->bActive && id->ubProfile != NO_PROFILE && id->bAssignment < ON_DUTY ) { - if ( squadmap.find( pSoldier->bAssignment ) == squadmap.end() ) - squadmap[pSoldier->bAssignment] = 1; + if ( squadmap.find( id->bAssignment ) == squadmap.end() ) + squadmap[id->bAssignment] = 1; else - ++squadmap[pSoldier->bAssignment]; + ++squadmap[id->bAssignment]; } } @@ -1079,15 +1077,14 @@ void RenderMercCompareMatrix( ) // display a table with all squadmembers std::vector squadvector; - SOLDIERTYPE* pSoldier = NULL; - UINT16 id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[id]; id <= lastid; ++id, pSoldier++ ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bAssignment == gSquadToShow ) + if ( id->bActive && id->ubProfile != NO_PROFILE && id->bAssignment == gSquadToShow ) { // remember squamember - squadvector.push_back( pSoldier->ubProfile ); + squadvector.push_back( id->ubProfile ); } } @@ -1117,13 +1114,12 @@ void RenderMercCompareMatrix( ) for ( std::vector::iterator it = squadvector.begin(); it != itend; ++it ) { - INT16 idA = GetSoldierIDFromMercID( (*it) ); + SoldierID idA = GetSoldierIDFromMercID( (*it) ); - if ( idA < 0 ) + if ( idA == NOBODY ) continue; - SOLDIERTYPE* pSoldierA = MercPtrs[idA]; - + SOLDIERTYPE* pSoldierA = idA; if ( !pSoldierA ) continue; @@ -1140,9 +1136,9 @@ void RenderMercCompareMatrix( ) for ( std::vector::iterator it2 = squadvector.begin( ); it2 != itend; ++it2 ) { - INT16 idB = GetSoldierIDFromMercID( (*it2) ); + SoldierID idB = GetSoldierIDFromMercID( (*it2) ); - if ( idB < 0 ) + if ( idB == NOBODY ) continue; if ( idA == idB ) @@ -1151,8 +1147,7 @@ void RenderMercCompareMatrix( ) continue; } - SOLDIERTYPE* pSoldierB = MercPtrs[idB]; - + SOLDIERTYPE* pSoldierB = idB; if ( !pSoldierB ) continue; diff --git a/Laptop/mercs.cpp b/Laptop/mercs.cpp index c3378a06..e46370d7 100644 --- a/Laptop/mercs.cpp +++ b/Laptop/mercs.cpp @@ -980,7 +980,8 @@ void BtnFileBoxButtonCallback(GUI_BUTTON *btn,INT32 reason) void DailyUpdateOfMercSite( UINT16 usDate) { SOLDIERTYPE *pSoldier; - INT16 sSoldierID, i; + SoldierID sSoldierID; + INT16 i; UINT8 ubMercID; INT32 iNumDays; @@ -1006,7 +1007,7 @@ void DailyUpdateOfMercSite( UINT16 usDate) // continue; sSoldierID = GetSoldierIDFromMercID( ubMercID ); - pSoldier = MercPtrs[ sSoldierID ]; + pSoldier = sSoldierID; //if the merc is dead, dont advance the contract length if( !IsMercDead( pSoldier->ubProfile ) ) diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index a16a7325..77097e97 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -306,7 +306,7 @@ BOOLEAN fCreateRegionsForPastCurrentToggle = FALSE; // WDS - make number of mercenaries, etc. be configurable // List of ids of current team members, dea or alive -std::vector currentTeamList (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, -1); +SoldierID currentTeamList[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; // The index of the last current team members int maxCurrentTeamIndex = -1; // The id of currently displayed merc @@ -319,18 +319,16 @@ void LoadPersonnelGraphics( void ); void RemovePersonnelGraphics( void ); void RenderPersonnel( void ); void RenderPersonnelStats(INT32 iId, INT32 iSlot); -void RenderPersonnelFace(INT32 iId, INT32 iSlot, BOOLEAN fDead, BOOLEAN fFired, BOOLEAN fOther ); +void RenderPersonnelFace(SoldierID iId, INT32 iSlot, BOOLEAN fDead, BOOLEAN fFired, BOOLEAN fOther ); void LeftButtonCallBack(GUI_BUTTON *btn,INT32 reason); void RightButtonCallBack(GUI_BUTTON *btn,INT32 reason); -void LeftFFButtonCallBack(GUI_BUTTON *btn,INT32 reason); -void RightFFButtonCallBack(GUI_BUTTON *btn,INT32 reason); void PersonnelPortraitCallback( MOUSE_REGION * pRegion, INT32 iReason ); void CreatePersonnelButtons( void ); void DeletePersonnelButtons( void ); void DisplayHeader( void ); -void DisplayCharName( INT32 iId, INT32 iSlot ); -void DisplayCharStats(INT32 iId, INT32 iSlot); -void DisplayCharPersonality( INT32 iId, INT32 iSlot ); +void DisplayCharName( SoldierID iId, INT32 iSlot ); +void DisplayCharStats(SoldierID iId, INT32 iSlot); +void DisplayCharPersonality( SoldierID iId, INT32 iSlot ); void SetPersonnelButtonStates( void ); void CreateDestroyButtonsForPersonnelDepartures( void ); void LoadPersonnelScreenBackgroundGraphics( void ); @@ -373,7 +371,7 @@ INT32 GetTheStateOfDepartedMerc( INT32 iId ); void DisplayPersonnelTextOnTitleBar( void ); INT32 GetIdOfDepartedMercWithHighestStat( INT32 iStat ); INT32 GetIdOfDepartedMercWithLowestStat( INT32 iStat ); -void RenderInventoryForCharacter( INT32 iId, INT32 iSlot ); +void RenderInventoryForCharacter( SoldierID iId, INT32 iSlot ); void DisplayInventoryForSelectedChar( void ); INT32 GetNumberOfInventoryItemsOnCurrentMerc( void ); void CreateDestroyPersonnelInventoryScrollButtons( void ); @@ -390,7 +388,7 @@ void UpDateStateOfStartButton( void ); void HandlePersonnelKeyboard( void ); -void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ); +void DisplayEmploymentinformation( SoldierID iId, INT32 iSlot ); @@ -444,7 +442,7 @@ BOOLEAN fAddedTraitRegion[13] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS void AssignPersonnelCharacterTraitHelpText( UINT8 ubCharacterNumber ); void AssignPersonnelDisabilityHelpText( UINT8 ubDisabilityNumber ); -void AssignPersonnelMultipleDisabilityHelpText( SOLDIERTYPE* pSoldier ); +void AssignPersonnelMultipleDisabilityHelpText( const SOLDIERTYPE* pSoldier ); void AssignPersonnelKillsHelpText( INT32 ubProfile ); void AssignPersonnelAssistsHelpText( INT32 ubProfile ); void AssignPersonnelHitPercentageHelpText( INT32 ubProfile ); @@ -454,7 +452,7 @@ void AssignPersonnelWoundsHelpText( INT32 ubProfile ); INT8 CalculateMercsAchievementPercentage( INT32 ubProfile ); // Flugente: personality info -void AssignPersonalityHelpText( SOLDIERTYPE* pSoldier, MOUSE_REGION* pMouseregion ); +void AssignPersonalityHelpText( const SOLDIERTYPE* pSoldier, MOUSE_REGION* pMouseregion ); BOOLEAN fShowRecordsIfZero = TRUE; @@ -554,16 +552,17 @@ void EnterPersonnel( void ) // Clear out the current team list for (unsigned idx=0; idx < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; idx++) { - currentTeamList[idx] = -1; + currentTeamList[idx] = NOBODY; } // Fill in the current team list maxCurrentTeamIndex = -1; SOLDIERTYPE *pTeamSoldier = MercPtrs[ 0 ]; - for (int idx = gTacticalStatus.Team[ pTeamSoldier->bTeam ].bFirstID; + for (SoldierID idx = gTacticalStatus.Team[ pTeamSoldier->bTeam ].bFirstID; idx <= gTacticalStatus.Team[ pTeamSoldier->bTeam ].bLastID; - ++idx) { - pTeamSoldier = MercPtrs[ idx ]; + ++idx) + { + pTeamSoldier = idx; // WANNE: Bugfix: Also show the roboter in ther personnel screen. This bug was introduced in revision 2498, when Many Mercenary was included. //if ((pTeamSoldier->bActive) && @@ -576,7 +575,7 @@ void EnterPersonnel( void ) } } - if (currentTeamList[0] >= 0) + if (currentTeamList[0] < NOBODY) currentTeamIndex = 0; else currentTeamIndex = -1; @@ -815,11 +814,11 @@ void RenderPersonnelStats( INT32 iId, INT32 iSlot ) // ID -> fortlaufende ID, und nicht die mercID // -> bei aktuellen Merc passt es // -> bei departed Merc wird die MercId anstatt der fortlaufenden ID bergeben!! -void RenderPersonnelFace(INT32 iId, INT32 iSlot, BOOLEAN fDead, BOOLEAN fFired, BOOLEAN fOther ) +void RenderPersonnelFace(SoldierID iId, INT32 iSlot, BOOLEAN fDead, BOOLEAN fFired, BOOLEAN fOther ) { // Get the profile id (from profileId or slotId) INT32 profileId = iId; - if (profileId == -1) + if (profileId == NOBODY) { profileId = MercPtrs[iSlot]->ubProfile; } @@ -921,7 +920,7 @@ void RenderPersonnelFace(INT32 iId, INT32 iSlot, BOOLEAN fDead, BOOLEAN fFired, // WDS - make number of mercenaries, etc. be configurable -BOOLEAN NextPersonnelFace( void ) +static BOOLEAN NextPersonnelFace( void ) { if (fCurrentTeamMode) { @@ -965,7 +964,7 @@ BOOLEAN NextPersonnelFace( void ) return TRUE; } -BOOLEAN PrevPersonnelFace( void ) +static BOOLEAN PrevPersonnelFace( void ) { if (fCurrentTeamMode) { // Anyone to display? @@ -1021,6 +1020,107 @@ BOOLEAN PrevPersonnelFace( void ) return TRUE; } +static BOOLEAN NextPersonnelFacePage(void) +{ + if (fCurrentTeamMode) + { + // Anyone to display? + if (currentTeamIndex == -1) { + return TRUE; + } + + fReDrawScreenFlag = TRUE; + // wrap around? + currentTeamIndex += MAX_MERCS_ON_SCREEN; + if (currentTeamIndex >= maxCurrentTeamIndex) + { + currentTeamIndex = 0; + currentTeamFirstIndex = 0; + return FALSE; + } + else + { + currentTeamFirstIndex += MAX_MERCS_ON_SCREEN; + } + } + else { + // Anyone to display? + if (iCurPortraitId == -1) { + return TRUE; + } + + iCurPortraitId += MAX_MERCS_ON_SCREEN; + if (iCurPortraitId >= (GetNumberOfDeadOnPastTeam() + GetNumberOfLeftOnPastTeam() + GetNumberOfOtherOnPastTeam()) - giCurrentUpperLeftPortraitNumber) + { + // about to go off the end + giCurrentUpperLeftPortraitNumber = 0; + iCurPortraitId = 0; + } + else + { + giCurrentUpperLeftPortraitNumber += MAX_MERCS_ON_SCREEN; + iCurPortraitId = 0; + } + + // get of this merc in this slot + iCurrentPersonSelectedId = iCurPortraitId; + fReDrawScreenFlag = TRUE; + } + + return TRUE; +} + +static BOOLEAN PrevPersonnelFacePage(void) +{ + if (fCurrentTeamMode) { + // Anyone to display? + if (currentTeamIndex == -1) { + return TRUE; + } + + fReDrawScreenFlag = TRUE; + currentTeamIndex -= MAX_MERCS_ON_SCREEN; + // wrap around? + if (currentTeamIndex <= 0) { + currentTeamIndex = maxCurrentTeamIndex; + currentTeamFirstIndex = (currentTeamIndex / MAX_MERCS_ON_SCREEN) * MAX_MERCS_ON_SCREEN; + if (currentTeamIndex == 0) { + return FALSE; + } + } + else { + currentTeamFirstIndex -= MAX_MERCS_ON_SCREEN; + } + } + else + { + // Anyone to display? + if (iCurPortraitId == -1) { + return TRUE; + } + + iCurPortraitId -= MAX_MERCS_ON_SCREEN; + + if ((iCurPortraitId <= 0) && (giCurrentUpperLeftPortraitNumber == 0)) + { + // about to go off the end + giCurrentUpperLeftPortraitNumber = (GetNumberOfDeadOnPastTeam() + GetNumberOfLeftOnPastTeam() + GetNumberOfOtherOnPastTeam()) - (GetNumberOfDeadOnPastTeam() + GetNumberOfLeftOnPastTeam() + GetNumberOfOtherOnPastTeam()) % MAX_MERCS_ON_SCREEN; + iCurPortraitId = (GetNumberOfDeadOnPastTeam() + GetNumberOfLeftOnPastTeam() + GetNumberOfOtherOnPastTeam()) % MAX_MERCS_ON_SCREEN; + } + else + { + giCurrentUpperLeftPortraitNumber -= MAX_MERCS_ON_SCREEN; + iCurPortraitId = MAX_MERCS_ON_SCREEN - 1; + } + // get of this merc in this slot + + iCurrentPersonSelectedId = iCurPortraitId; + fReDrawScreenFlag = TRUE; + } + + return TRUE; +} + void CreatePersonnelButtons( void ) { @@ -1109,7 +1209,14 @@ void LeftButtonCallBack(GUI_BUTTON *btn,INT32 reason) { btn->uiFlags&=~(BUTTON_CLICKED_ON); fReDrawScreenFlag=TRUE; - PrevPersonnelFace( ); + if (_KeyDown(SHIFT)) + { + PrevPersonnelFacePage(); + } + else + { + PrevPersonnelFace( ); + } uiCurrentInventoryIndex = 0; guiSliderPosition = 0; @@ -1117,36 +1224,6 @@ void LeftButtonCallBack(GUI_BUTTON *btn,INT32 reason) } } -void LeftFFButtonCallBack(GUI_BUTTON *btn,INT32 reason) -{ - if (!(btn->uiFlags & BUTTON_ENABLED)) - return; - - if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) - { - if(!(btn->uiFlags & BUTTON_CLICKED_ON)) - { - fReDrawScreenFlag=TRUE; - } - btn->uiFlags|=(BUTTON_CLICKED_ON); - } - else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) - { - if(btn->uiFlags & BUTTON_CLICKED_ON) - { - btn->uiFlags&=~(BUTTON_CLICKED_ON); - fReDrawScreenFlag=TRUE; - PrevPersonnelFace( ); - PrevPersonnelFace( ); - PrevPersonnelFace( ); - PrevPersonnelFace( ); - - // set states - SetPersonnelButtonStates( ); - } - } -} - void RightButtonCallBack(GUI_BUTTON *btn,INT32 reason) { if (!(btn->uiFlags & BUTTON_ENABLED)) @@ -1156,51 +1233,26 @@ void RightButtonCallBack(GUI_BUTTON *btn,INT32 reason) { if(!(btn->uiFlags & BUTTON_CLICKED_ON)) { - fReDrawScreenFlag=TRUE; + fReDrawScreenFlag=TRUE; } - btn->uiFlags|=(BUTTON_CLICKED_ON); + btn->uiFlags|=(BUTTON_CLICKED_ON); } else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { if(btn->uiFlags & BUTTON_CLICKED_ON) { - btn->uiFlags&=~(BUTTON_CLICKED_ON); - fReDrawScreenFlag=TRUE; - NextPersonnelFace( ); - uiCurrentInventoryIndex = 0; - guiSliderPosition = 0; - - - } - } -} - -void RightFFButtonCallBack(GUI_BUTTON *btn,INT32 reason) -{ - if (!(btn->uiFlags & BUTTON_ENABLED)) - return; - - if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) - { - if(!(btn->uiFlags & BUTTON_CLICKED_ON)) - { - fReDrawScreenFlag=TRUE; - } - btn->uiFlags|=(BUTTON_CLICKED_ON); - } - else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) - { - if(btn->uiFlags & BUTTON_CLICKED_ON) - { - btn->uiFlags&=~(BUTTON_CLICKED_ON); - fReDrawScreenFlag=TRUE; - NextPersonnelFace( ); - NextPersonnelFace( ); - NextPersonnelFace( ); - NextPersonnelFace( ); - - // set states - SetPersonnelButtonStates( ); + btn->uiFlags&=~(BUTTON_CLICKED_ON); + fReDrawScreenFlag=TRUE; + if (_KeyDown(SHIFT)) + { + NextPersonnelFacePage(); + } + else + { + NextPersonnelFace( ); + } + uiCurrentInventoryIndex = 0; + guiSliderPosition = 0; } } } @@ -1217,7 +1269,7 @@ void DisplayHeader( void ) } -void DisplayCharName( INT32 iId, INT32 iSlot ) +void DisplayCharName( SoldierID Id, INT32 iSlot ) { // get merc's nickName, assignment, and sector location info INT16 sX, sY; @@ -1229,7 +1281,11 @@ void DisplayCharName( INT32 iId, INT32 iSlot ) sTownName[0] = L'\0'; - pSoldier=MercPtrs[iId]; + if ( Id == NOBODY ) + { + return; + } + pSoldier = Id; SetFont(CHAR_NAME_FONT); SetFontForeground(PERS_TEXT_FONT_COLOR); @@ -1240,16 +1296,16 @@ void DisplayCharName( INT32 iId, INT32 iSlot ) return; } - if( Menptr[iId].bAssignment == ASSIGNMENT_POW ) + if( pSoldier->bAssignment == ASSIGNMENT_POW ) { } - else if( Menptr[iId].bAssignment == IN_TRANSIT ) + else if( pSoldier->bAssignment == IN_TRANSIT ) { } else { // name of town, if any - bTownId = GetTownIdForSector( Menptr[iId].sSectorX, Menptr[iId].sSectorY ); + bTownId = GetTownIdForSector( pSoldier->sSectorX, pSoldier->sSectorY ); if( bTownId != BLANK_SECTOR ) { @@ -1262,12 +1318,12 @@ void DisplayCharName( INT32 iId, INT32 iSlot ) if( sTownName[0] != L'\0' ) { //nick name - town name - swprintf( sString, L"%s - %s", gMercProfiles[Menptr[iId].ubProfile].zNickname, sTownName ); + swprintf( sString, L"%s - %s", gMercProfiles[pSoldier->ubProfile].zNickname, sTownName ); } else { //nick name - swprintf( sString, L"%s", gMercProfiles[Menptr[iId].ubProfile].zNickname ); + swprintf( sString, L"%s", gMercProfiles[pSoldier->ubProfile].zNickname ); } @@ -1283,10 +1339,10 @@ void DisplayCharName( INT32 iId, INT32 iSlot ) //Display the mercs name mprintf( sX + iSlot*IMAGE_BOX_WIDTH, CHAR_NAME_Y, sString ); - if ( gGameExternalOptions.fUseXMLSquadNames && Menptr[iId].bAssignment < min(ON_DUTY, gSquadNameVector.size() ) ) - swprintf( sString, L"%s", gSquadNameVector[Menptr[iId].bAssignment].c_str() ); + if ( gGameExternalOptions.fUseXMLSquadNames && pSoldier->bAssignment < min(ON_DUTY, gSquadNameVector.size() ) ) + swprintf( sString, L"%s", gSquadNameVector[pSoldier->bAssignment].c_str() ); else - swprintf( sString, L"%s", pPersonnelAssignmentStrings[Menptr[iId].bAssignment]); + swprintf( sString, L"%s", pPersonnelAssignmentStrings[pSoldier->bAssignment]); // nick name - assignment FindFontCenterCoordinates(IMAGE_BOX_X-5,0,IMAGE_BOX_WIDTH + 90 , 0,sString,CHAR_NAME_FONT, &sX, &sY ); @@ -1305,36 +1361,36 @@ void DisplayCharName( INT32 iId, INT32 iSlot ) // //first get height of text to be displayed - iHeightOfText = DisplayWrappedString(IMAGE_BOX_X, (UINT16)(IMAGE_BOX_Y+IMAGE_FULL_NAME_OFFSET_Y), IMAGE_NAME_WIDTH, 1, PERS_FONT, PERS_FONT_COLOR, gMercProfiles[Menptr[iId].ubProfile].zName, 0, FALSE, CENTER_JUSTIFIED | DONT_DISPLAY_TEXT ); + iHeightOfText = DisplayWrappedString(IMAGE_BOX_X, (UINT16)(IMAGE_BOX_Y+IMAGE_FULL_NAME_OFFSET_Y), IMAGE_NAME_WIDTH, 1, PERS_FONT, PERS_FONT_COLOR, gMercProfiles[pSoldier->ubProfile].zName, 0, FALSE, CENTER_JUSTIFIED | DONT_DISPLAY_TEXT ); //if the string will rap if( ( iHeightOfText - 2 ) > GetFontHeight( PERS_FONT ) ) { //raise where we display it, and rap it - DisplayWrappedString(IMAGE_BOX_X, (UINT16)(IMAGE_BOX_Y+IMAGE_FULL_NAME_OFFSET_Y - GetFontHeight( PERS_FONT )), IMAGE_NAME_WIDTH, 1, PERS_FONT, PERS_FONT_COLOR, gMercProfiles[Menptr[iId].ubProfile].zName, 0, FALSE, CENTER_JUSTIFIED); + DisplayWrappedString(IMAGE_BOX_X, (UINT16)(IMAGE_BOX_Y+IMAGE_FULL_NAME_OFFSET_Y - GetFontHeight( PERS_FONT )), IMAGE_NAME_WIDTH, 1, PERS_FONT, PERS_FONT_COLOR, gMercProfiles[pSoldier->ubProfile].zName, 0, FALSE, CENTER_JUSTIFIED); } else { - DrawTextToScreen( gMercProfiles[Menptr[iId].ubProfile].zName, IMAGE_BOX_X, (UINT16)(IMAGE_BOX_Y+IMAGE_FULL_NAME_OFFSET_Y), IMAGE_NAME_WIDTH, PERS_FONT, PERS_FONT_COLOR, 0, FALSE, CENTER_JUSTIFIED ); + DrawTextToScreen( gMercProfiles[pSoldier->ubProfile].zName, IMAGE_BOX_X, (UINT16)(IMAGE_BOX_Y+IMAGE_FULL_NAME_OFFSET_Y), IMAGE_NAME_WIDTH, PERS_FONT, PERS_FONT_COLOR, 0, FALSE, CENTER_JUSTIFIED ); } /* Moved so the name of the town will be in the same line as the name - if( Menptr[iId].bAssignment == ASSIGNMENT_POW ) + if( pSoldier->bAssignment == ASSIGNMENT_POW ) { // FindFontCenterCoordinates(IMAGE_BOX_X-5,0,IMAGE_BOX_WIDTH, 0,pPOWStrings[ 1 ],CHAR_NAME_FONT, &sX, &sY ); // mprintf(sX+iSlot*IMAGE_BOX_WIDTH, CHAR_NAME_Y+20,pPOWStrings[ 1 ] ); } - else if( Menptr[iId].bAssignment == IN_TRANSIT ) + else if( pSoldier->bAssignment == IN_TRANSIT ) { return; } else { // name of town, if any - bTownId = GetTownIdForSector( Menptr[iId].sSectorX, Menptr[iId].sSectorY ); + bTownId = GetTownIdForSector( pSoldier->sSectorX, pSoldier->sSectorY ); if( bTownId != BLANK_SECTOR ) { @@ -1347,16 +1403,34 @@ Moved so the name of the town will be in the same line as the name return; } +static void PrintStatChange(const INT16 change, const INT32 x, const INT32 y, const STR16 sString) +{ + if ( change ) + { + INT16 sX, sY; -void DisplayCharStats( INT32 iId, INT32 iSlot ) + swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); + FindFontRightCoordinates( (INT16)(x + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); + mprintf( sX, y, sString ); + } +} + +static void PrintCharStatText(const INT32 x, const INT32 y, const INT32 iCounter, const STR16 sString) { - INT32 iCounter = 0; - CHAR16 sString[50]; - // CHAR16 sStringA[ 50 ]; INT16 sX, sY; - UINT32 uiHits = 0; - SOLDIERTYPE *pSoldier = &Menptr[iId]; - BOOLEAN fAmIaRobot = AM_A_ROBOT( pSoldier ); + mprintf( x, y, pPersonnelScreenStrings[iCounter] ); + FindFontRightCoordinates( x, 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); + mprintf( sX, y, sString ); +} + +void DisplayCharStats( SoldierID iId, INT32 iSlot ) +{ + CHAR16 apStr[5000]; + CHAR16 sString[50]; + INT16 sX, sY; + const SOLDIERTYPE *pSoldier = iId; + const BOOLEAN fAmIaRobot = AM_A_ROBOT( pSoldier ); + const MERCPROFILESTRUCT *pMercProfile = &gMercProfiles[pSoldier->ubProfile]; // SANDRO - remove the regions for ( INT8 i = 0; i < 13; i++ ) @@ -1368,180 +1442,131 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) } } + if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { return; } + // display the stats for a char - for ( iCounter = 0; iCounter bAssignment != ASSIGNMENT_POW ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bLifeDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_HEALTH]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d/%d", Menptr[iId].stats.bLife, Menptr[iId].stats.bLifeMax ); + const INT16 change = pMercProfile->bLifeDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_HEALTH]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d/%d", pSoldier->stats.bLife, pSoldier->stats.bLifeMax ); } else { swprintf( sString, pPOWStrings[1] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[PRSNL_TXT_HEALTH] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 1: // agility if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bAgilityDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_AGILITY]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bAgility ); + INT16 change = pMercProfile->bAgilityDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_AGILITY]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bAgility ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 2: // dexterity if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bDexterityDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_DEXTERITY]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bDexterity ); + INT16 change = pMercProfile->bDexterityDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_DEXTERITY]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bDexterity ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 3: // strength if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bStrengthDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_STRENGTH]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bStrength ); + INT16 change = pMercProfile->bStrengthDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_STRENGTH]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bStrength ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 4: // leadership if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bLeadershipDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_LEADERSHIP]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bLeadership ); + INT16 change = pMercProfile->bLeadershipDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_LEADERSHIP]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bLeadership ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 5: // wisdom if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bWisdomDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_WISDOM]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bWisdom ); + INT16 change = pMercProfile->bWisdomDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_WISDOM]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bWisdom ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 6: // exper if ( !fAmIaRobot ) { - if ( gMercProfiles[Menptr[iId].ubProfile].bExpLevelDelta > 0 ) + if ( pMercProfile->bExpLevelDelta > 0 ) { - swprintf( sString, L"( %+d )", gMercProfiles[Menptr[iId].ubProfile].bExpLevelDelta ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + swprintf( sString, L"( %+d )", pMercProfile->bExpLevelDelta ); + FindFontRightCoordinates( (INT16)(x + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); + mprintf( sX, y, sString ); } //else //{ - swprintf( sString, L"%d", Menptr[iId].stats.bExpLevel ); + swprintf( sString, L"%d", pSoldier->stats.bExpLevel ); //} } else @@ -1550,109 +1575,71 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 7: //mrkmanship if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bMarksmanshipDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_MARKSMANSHIP]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bMarksmanship ); + INT16 change = pMercProfile->bMarksmanshipDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_MARKSMANSHIP]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bMarksmanship ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 8: // mech if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bMechanicDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_MECHANICAL]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bMechanical ); + INT16 change = pMercProfile->bMechanicDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_MECHANICAL]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bMechanical ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 9: // exp if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bExplosivesDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_EXPLOSIVES]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bExplosive ); + INT16 change = pMercProfile->bExplosivesDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_EXPLOSIVES]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bExplosive ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; case 10: // med if ( !fAmIaRobot ) { // Flugente: stats can have gone up or down, find out which - INT16 change = gMercProfiles[Menptr[iId].ubProfile].bMedicalDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_MEDICAL]); - - if ( change ) - { - swprintf( sString, change > 0 ? L"( +%d )" : L"( %d )", change ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); - } - - swprintf( sString, L"%d", Menptr[iId].stats.bMedical ); + INT16 change = pMercProfile->bMedicalDelta - (INT16)(pSoldier->ubCriticalStatDamage[DAMAGED_STAT_MEDICAL]); + PrintStatChange( change, x, y, sString ); + swprintf( sString, L"%d", pSoldier->stats.bMedical ); } else { swprintf( sString, L"%s", gpStrategicString[STR_PB_NOTAPPLICABLE_ABBREVIATION] ); } - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), pPersonnelScreenPoints[iCounter].y, pPersonnelScreenStrings[iCounter] ); - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); - mprintf( sX, pPersonnelScreenPoints[iCounter].y, sString ); + PrintCharStatText( x, y, iCounter, sString ); break; // Added by Flugente @@ -1662,15 +1649,15 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) // display background if (UsingBackGroundSystem()) { - UINT8 loc = 21; - UINT8 regionnr = 12; + const UINT8 loc = 21; + const UINT8 regionnr = 12; mprintf( (INT16)(pPersonnelScreenPoints[loc].x + (iSlot*TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + 15), pPersonnelRecordsHelpTexts[47] ); //L"Background:" - if ( !gMercProfiles[pSoldier->ubProfile].usBackground ) + if ( !pMercProfile->usBackground ) swprintf( sString, pwMiscSectorStrings[3] ); //L"unknown" else - swprintf( sString, zBackground[gMercProfiles[pSoldier->ubProfile].usBackground].szShortName ); + swprintf( sString, zBackground[pMercProfile->usBackground].szShortName ); FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[loc].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); mprintf( sX, (pPersonnelScreenPoints[loc].y + 15), sString ); @@ -1688,7 +1675,7 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) fAddedTraitRegion[regionnr] = TRUE; // Info about our background - AssignBackgroundHelpText( gMercProfiles[pSoldier->ubProfile].usBackground, &(gSkillTraitHelpTextRegion[12]) ); + AssignBackgroundHelpText( pMercProfile->usBackground, &(gSkillTraitHelpTextRegion[12]) ); } break; @@ -1697,8 +1684,8 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) case 17: // sexism, racism, nationalities etc. { - UINT8 loc = 22; - UINT8 regionnr = 8; + const UINT8 loc = 22; + const UINT8 regionnr = 8; mprintf( (INT16)(pPersonnelScreenPoints[loc].x + (iSlot*TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + 15), pPersonnelRecordsHelpTexts[48] ); //L"Personality:" @@ -1737,9 +1724,9 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) mprintf( (INT16)(pPersonnelScreenPoints[23].x + (iSlot*TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[23].y + 15), pPersonnelRecordsHelpTexts[45] ); //L"Attitudes:" if ( gGameOptions.fNewTraitSystem ) - swprintf( sString, gzIMPCharacterTraitText[gMercProfiles[Menptr[iId].ubProfile].bCharacterTrait] ); + swprintf( sString, gzIMPCharacterTraitText[pMercProfile->bCharacterTrait] ); else - swprintf( sString, gzIMPAttitudesText[gMercProfiles[Menptr[iId].ubProfile].bAttitude] ); + swprintf( sString, gzIMPAttitudesText[pMercProfile->bAttitude] ); FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[23].x + (iSlot*TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); mprintf( sX, (pPersonnelScreenPoints[23].y + 15), sString ); @@ -1764,7 +1751,7 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) // Only new traits have help text if ( gGameOptions.fNewTraitSystem ) - AssignPersonnelCharacterTraitHelpText( gMercProfiles[Menptr[iId].ubProfile].bCharacterTrait ); + AssignPersonnelCharacterTraitHelpText( pMercProfile->bCharacterTrait ); break; @@ -1809,7 +1796,7 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) // Assign the text if ( numdisabilities <= 1 ) - AssignPersonnelDisabilityHelpText( gMercProfiles[Menptr[iId].ubProfile].bDisability ); + AssignPersonnelDisabilityHelpText( pMercProfile->bDisability ); else AssignPersonnelMultipleDisabilityHelpText( pSoldier ); } @@ -1844,12 +1831,12 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) // we also get the number of lines (skills) to be displayed for ( UINT8 ubCnt = 1; ubCnt < NUM_SKILLTRAITS_NT; ubCnt++ ) { - if ( ProfileHasSkillTrait( Menptr[iId].ubProfile, ubCnt ) == 2 ) + if ( ProfileHasSkillTrait( pSoldier->ubProfile, ubCnt ) == 2 ) { ubTempSkillArray[bNumSkillTraits] = (ubCnt + NEWTRAIT_MERCSKILL_EXPERTOFFSET); bNumSkillTraits++; } - else if ( ProfileHasSkillTrait( Menptr[iId].ubProfile, ubCnt ) == 1 ) + else if ( ProfileHasSkillTrait( pSoldier->ubProfile, ubCnt ) == 1 ) { ubTempSkillArray[bNumSkillTraits] = ubCnt; bNumSkillTraits++; @@ -1875,7 +1862,6 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) fAddedTraitRegion[0] = TRUE; // Assign the text - CHAR16 apStr[5000]; swprintf( apStr, L"" ); AssignPersonnelSkillTraitHelpText( 0, FALSE, (gMercProfiles[iId].ubBodyType == REGMALE), apStr ); @@ -1948,9 +1934,8 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) if ( fExpert ) traitnr -= NEWTRAIT_MERCSKILL_EXPERTOFFSET; - CHAR16 apStr[5000]; swprintf( apStr, L"" ); - AssignPersonnelSkillTraitHelpText( traitnr, fExpert, (gMercProfiles[Menptr[iId].ubProfile].ubBodyType == REGMALE), apStr ); + AssignPersonnelSkillTraitHelpText( traitnr, fExpert, (pMercProfile->ubBodyType == REGMALE), apStr ); // Set region help text SetRegionFastHelpText( &(gSkillTraitHelpTextRegion[ubCnt]), apStr ); @@ -1991,8 +1976,8 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) else { INT8 bSkill1 = 0, bSkill2 = 0; - bSkill1 = gMercProfiles[Menptr[iId].ubProfile].bSkillTraits[0]; - bSkill2 = gMercProfiles[Menptr[iId].ubProfile].bSkillTraits[1]; + bSkill1 = pMercProfile->bSkillTraits[0]; + bSkill2 = pMercProfile->bSkillTraits[1]; //if the 2 skills are the same, add the '(expert)' at the end if ( bSkill1 == bSkill2 && bSkill1 != 0 ) @@ -2005,7 +1990,7 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) //Perform the potential overrun check if ( sX <= iMinimumX ) { - FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[iCounter].x + (iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); + FindFontRightCoordinates( (INT16)(x + TEXT_BOX_WIDTH - 20 + TEXT_DELTA_OFFSET), 0, 30, 0, sString, PERS_FONT, &sX, &sY ); sX = (INT16)max( sX, iMinimumX ); } @@ -2023,7 +2008,6 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) fAddedTraitRegion[0] = TRUE; // Assign the text - CHAR16 apStr[5000]; swprintf( apStr, L"" ); AssignPersonnelSkillTraitHelpText( bSkill1, TRUE, (gMercProfiles[iId].ubBodyType == REGMALE), apStr ); @@ -2057,7 +2041,6 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) fAddedTraitRegion[0] = TRUE; // Assign the text - CHAR16 apStr[5000]; swprintf( apStr, L"" ); AssignPersonnelSkillTraitHelpText( bSkill1, FALSE, (gMercProfiles[iId].ubBodyType == REGMALE), apStr ); @@ -2092,7 +2075,6 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) fAddedTraitRegion[1] = TRUE; // Assign the text - CHAR16 apStr[5000]; swprintf( apStr, L"" ); AssignPersonnelSkillTraitHelpText( bSkill2, FALSE, (gMercProfiles[iId].ubBodyType == REGMALE), apStr ); @@ -2123,7 +2105,6 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) fAddedTraitRegion[0] = TRUE; // Assign the text - CHAR16 apStr[5000]; swprintf( apStr, L"" ); AssignPersonnelSkillTraitHelpText( bSkill1, FALSE, (gMercProfiles[iId].ubBodyType == REGMALE), apStr ); @@ -2144,11 +2125,12 @@ void DisplayCharStats( INT32 iId, INT32 iSlot ) } } -void DisplayCharPersonality(INT32 iId, INT32 iSlot) +void DisplayCharPersonality(SoldierID iId, INT32 iSlot) { INT32 iCounter=0; INT16 sX, sY; - SOLDIERTYPE *pSoldier = &Menptr[iId]; + SOLDIERTYPE *pSoldier = iId; + const MERCPROFILESTRUCT *pMercProfile = &gMercProfiles[pSoldier->ubProfile]; // SANDRO - remove the regions for( INT8 i = 0; i < 13; ++i ) @@ -2202,7 +2184,7 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) ++region; } - if ( (gMercProfiles[pSoldier->ubProfile].ubMiscFlags3 & PROFILE_MISC_FLAG3_GOODGUY) ) + if ( (pMercProfile->ubMiscFlags3 & PROFILE_MISC_FLAG3_GOODGUY) ) { CHAR16 sStr1[200]; swprintf( sStr1, szLaptopStatText[LAPTOP_STAT_TEXT_GOOD_GUY] ); @@ -2235,7 +2217,7 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) if (gGameExternalOptions.fMercGrowthModifiersEnabled) { - if (gMercProfiles[pSoldier->ubProfile].fRegresses) + if (pMercProfile->fRegresses) { CHAR16 sStr2[200]; swprintf(sStr2, szLaptopStatText[LAPTOP_STAT_TEXT_MERC_REGRESSES]); @@ -2256,9 +2238,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_HEALTH_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierLife <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierLife <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierLife >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierLife >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2271,9 +2253,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_STRENGTH_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierStrength <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierStrength <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierStrength >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierStrength >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2286,9 +2268,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_AGILITY_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierAgility <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierAgility <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierAgility >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierAgility >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2301,9 +2283,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_DEXTERITY_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierDexterity <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierDexterity <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierDexterity >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierDexterity >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2316,9 +2298,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_WISDOM_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierWisdom <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierWisdom <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierWisdom >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierWisdom >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2331,9 +2313,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_MARKSMANSHIP_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierMarksmanship <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierMarksmanship <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierMarksmanship >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierMarksmanship >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2346,9 +2328,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_EXPLOSIVES_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierExplosive <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierExplosive <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierExplosive >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierExplosive >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2361,9 +2343,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_LEADERSHIP_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierLeadership <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierLeadership <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierLeadership >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierLeadership >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2376,9 +2358,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_MEDICAL_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierMedical <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierMedical <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierMedical >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierMedical >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2391,9 +2373,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_MECHANICAL_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierMechanical <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierMechanical <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierMechanical >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierMechanical >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2406,9 +2388,9 @@ void DisplayCharPersonality(INT32 iId, INT32 iSlot) swprintf(statTxt, szLaptopStatText[LAPTOP_STAT_TEXT_EXPERIENCE_SPEED]); mprintf((INT16)(pPersonnelScreenPoints[loc].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[loc].y + yOffset), statTxt); - if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierExpLevel <= THRESHOLD_FAST) + if (pMercProfile->bGrowthModifierExpLevel <= THRESHOLD_FAST) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_FAST]); - else if (gMercProfiles[pSoldier->ubProfile].bGrowthModifierExpLevel >= THRESHOLD_SLOW) + else if (pMercProfile->bGrowthModifierExpLevel >= THRESHOLD_SLOW) swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_SLOW]); else swprintf(statTxt, L"%s", szLaptopStatText[LAPTOP_STAT_TEXT_AVERAGE]); @@ -2601,7 +2583,7 @@ void DisplayPicturesOfCurrentTeam( void ) return; } // if - SOLDIERTYPE *pSoldier = MercPtrs[currentTeamList[currentOnSreenIndex]]; + SOLDIERTYPE *pSoldier = currentTeamList[currentOnSreenIndex]; if ( pSoldier->ubProfile >= 0 ) { @@ -2658,7 +2640,7 @@ void PersonnelPortraitCallback( MOUSE_REGION * pRegion, INT32 iReason ) currentTeamIndex = iPortraitId + currentTeamFirstIndex; fReDrawScreenFlag = TRUE; // if the selected merc is valid, and they are a POW, change to the inventory display - if( currentTeamIndex != -1 && Menptr[currentTeamList[currentTeamIndex]].bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN ) { + if( currentTeamIndex != -1 && currentTeamList[currentTeamIndex]->bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN ) { gubPersonnelInfoState = PERSONNEL_STAT_BTN; } } else { @@ -2702,7 +2684,7 @@ void PersonnelPortraitCallback( MOUSE_REGION * pRegion, INT32 iReason ) guiSliderPosition = 0; //if the selected merc is valid, and they are a POW, change to the inventory display - if( currentTeamIndex != -1 && Menptr[currentTeamList[currentTeamIndex]].bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN) { + if( currentTeamIndex != -1 && currentTeamList[currentTeamIndex]->bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN) { gubPersonnelInfoState = PERSONNEL_STAT_BTN; } } @@ -2768,7 +2750,7 @@ void DisplayInventoryForSelectedChar( void ) } } -void RenderInventoryForCharacter( INT32 iId, INT32 iSlot ) +void RenderInventoryForCharacter( SoldierID iId, INT32 iSlot ) { UINT8 ubCounter = 0; SOLDIERTYPE *pSoldier; @@ -2805,7 +2787,7 @@ void RenderInventoryForCharacter( INT32 iId, INT32 iSlot ) // render the bar for the character RenderSliderBarForPersonnelInventory( ); - pSoldier = &Menptr[ iId ]; + pSoldier = iId; //if this is a robot, dont display any inventory if( AM_A_ROBOT( pSoldier ) ) @@ -3067,7 +3049,7 @@ INT32 GetNumberOfInventoryItemsOnCurrentMerc( void ) if (!fCurrentTeamMode) return( 0 ); - SOLDIERTYPE *pSoldier = &Menptr[currentTeamList[currentTeamIndex]]; + SOLDIERTYPE *pSoldier = currentTeamList[currentTeamIndex]; INT32 ubCount = 0; UINT8 invsize = pSoldier->inv.size(); @@ -3743,11 +3725,10 @@ INT32 GetIdOfDepartedMercWithLowestStat( INT32 iStat ) } -INT32 GetIdOfMercWithHighestStat( INT32 iStat ) +SoldierID GetIdOfMercWithHighestStat( INT32 iStat ) { // will return the id value of the merc on the players team with highest in this stat - // -1 means error - INT32 iId = -1; + INT32 iId = NOBODY; INT32 iValue =0; SOLDIERTYPE *pTeamSoldier, *pSoldier; INT32 cnt=0; @@ -3866,11 +3847,10 @@ INT32 GetIdOfMercWithHighestStat( INT32 iStat ) return( iId ); } -INT32 GetIdOfMercWithLowestStat( INT32 iStat ) +SoldierID GetIdOfMercWithLowestStat( INT32 iStat ) { // will return the id value of the merc on the players team with highest in this stat - // -1 means error - INT32 iId = -1; + SoldierID iId = NOBODY; INT32 iValue =999999; SOLDIERTYPE *pTeamSoldier, *pSoldier; INT32 cnt=0; @@ -3943,7 +3923,7 @@ INT32 GetIdOfMercWithLowestStat( INT32 iStat ) break; case 6: // exper - if( pTeamSoldier->stats.bExpLevel <= iValue ) + if( pTeamSoldier->stats.bExpLevel <= iValue ) { iId = cnt; iValue = pTeamSoldier->stats.bExpLevel; @@ -4323,12 +4303,12 @@ void DisplayAverageStatValuesForCurrentTeam( void ) void DisplayLowestStatValuesForCurrentTeam( void ) { // will display the average values for stats for the current team - INT16 sX, sY; - INT32 iCounter = 0; - CHAR16 sString[ 32 ]; - INT32 iStat = 0; - INT32 iDepartedId=0; - INT32 iId = 0; + INT16 sX, sY; + INT32 iCounter = 0; + CHAR16 sString[ 32 ]; + INT32 iStat = 0; + INT32 iDepartedId = -1; + SoldierID iId; // set up font SetFont( FONT10ARIAL ); @@ -4357,7 +4337,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) { if (fCurrentTeamMode) { iId = GetIdOfMercWithLowestStat( iCounter ); - if( iId == -1 ) + if( iId == NOBODY ) continue; } else { iDepartedId = GetIdOfDepartedMercWithLowestStat( iCounter ); @@ -4373,11 +4353,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) } if (fCurrentTeamMode) { - // get name - /*if( iId == -1 ) - swprintf( sString, L"%s", pPOWStrings[1] ); - else*/ - swprintf( sString, L"%s", MercPtrs[ iId ]->GetName() ); + swprintf( sString, L"%s", iId->GetName() ); } else { // get name swprintf( sString, L"%s", gMercProfiles[ iDepartedId ].zNickname ); @@ -4389,10 +4365,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 0: // health if (fCurrentTeamMode) { - /*if( iId == -1 ) - iStat = -1; - else*/ - iStat = MercPtrs[ iId ]->stats.bLifeMax; + iStat = iId->stats.bLifeMax; } else { iStat = gMercProfiles[ iDepartedId ] . bLife; } @@ -4400,7 +4373,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 1: // agility if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bAgility; + iStat = iId->stats.bAgility; } else { iStat = gMercProfiles[ iDepartedId ] . bAgility; } @@ -4408,7 +4381,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 2: // dexterity if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bDexterity; + iStat = iId->stats.bDexterity; } else { iStat = gMercProfiles[ iDepartedId ] . bDexterity; } @@ -4416,7 +4389,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 3: // strength if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bStrength; + iStat = iId->stats.bStrength; } else { iStat = gMercProfiles[ iDepartedId ] . bStrength; } @@ -4424,7 +4397,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 4: // leadership if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bLeadership; + iStat = iId->stats.bLeadership; } else { iStat = gMercProfiles[ iDepartedId ] . bLeadership; } @@ -4432,7 +4405,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 5: // wisdom if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bWisdom; + iStat = iId->stats.bWisdom; } else { iStat = gMercProfiles[ iDepartedId ] . bWisdom; } @@ -4440,7 +4413,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 6: // exper if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bExpLevel; + iStat = iId->stats.bExpLevel; } else { iStat = gMercProfiles[ iDepartedId ] . bExpLevel; } @@ -4448,7 +4421,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 7: //mrkmanship if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bMarksmanship; + iStat = iId->stats.bMarksmanship; } else { iStat = gMercProfiles[ iDepartedId ] . bMarksmanship; } @@ -4456,7 +4429,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 8: // mech if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bMechanical; + iStat = iId->stats.bMechanical; } else { iStat = gMercProfiles[ iDepartedId ] . bMechanical; } @@ -4464,7 +4437,7 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 9: // exp if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bExplosive; + iStat = iId->stats.bExplosive; } else { iStat = gMercProfiles[ iDepartedId ] . bExplosive; } @@ -4472,17 +4445,14 @@ void DisplayLowestStatValuesForCurrentTeam( void ) case 10: // med if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bMedical; + iStat = iId->stats.bMedical; } else { iStat = gMercProfiles[ iDepartedId ] . bMedical; } break; - } + } - /*if( iStat == -1 ) - swprintf( sString, L"%s", pPOWStrings[1] ); - else*/ - swprintf( sString, L"%d", iStat ); + swprintf( sString, L"%d", iStat ); // right justify FindFontRightCoordinates( PERS_STAT_LOWEST_X, 0 ,PERS_STAT_LOWEST_WIDTH, 0 , sString, FONT10ARIAL , &sX, &sY ); @@ -4498,7 +4468,8 @@ void DisplayHighestStatValuesForCurrentTeam( void ) INT32 iCounter = 0; CHAR16 sString[ 32 ]; INT32 iStat = 0; - INT32 iId=0; + SoldierID iId; + INT32 iDepartedId = -1; // set up font SetFont( FONT10ARIAL ); @@ -4525,13 +4496,18 @@ void DisplayHighestStatValuesForCurrentTeam( void ) for( iCounter = 0; iCounter < 11; iCounter++ ) { - if (fCurrentTeamMode) + if ( fCurrentTeamMode ) + { iId = GetIdOfMercWithHighestStat( iCounter ); + if ( iId == NOBODY ) + continue; + } else - iId = GetIdOfDepartedMercWithHighestStat( iCounter ); - - if( iId == -1 ) - continue; + { + iDepartedId = GetIdOfDepartedMercWithHighestStat( iCounter ); + if ( iDepartedId == -1 ) + continue; + } // even or odd?..color black or yellow? if( iCounter % 2 == 0 ) @@ -4545,18 +4521,12 @@ void DisplayHighestStatValuesForCurrentTeam( void ) if (fCurrentTeamMode) { - // get name - /*if( iId == -1 ) - { - swprintf( sString, L"%s", pPOWStrings[1] ); - } - else*/ - swprintf( sString, L"%s", MercPtrs[ iId ]->GetName() ); + swprintf( sString, L"%s", iId->GetName() ); } else { // get name - swprintf( sString, L"%s", gMercProfiles[ iId ].zNickname ); + swprintf( sString, L"%s", gMercProfiles[ iDepartedId ].zNickname ); } // print name mprintf( PERS_STAT_HIGHEST_X, PERS_STAT_AVG_Y + ( iCounter + 1 ) * ( GetFontHeight( FONT10ARIAL ) + 3 ), sString ); @@ -4565,100 +4535,94 @@ void DisplayHighestStatValuesForCurrentTeam( void ) case 0: // health if (fCurrentTeamMode) { - /*if( iId == -1 ) - iStat = -1; - else*/ - iStat = MercPtrs[ iId ]->stats.bLifeMax; + iStat = iId->stats.bLifeMax; } else { - iStat = gMercProfiles[ iId ] . bLife; + iStat = gMercProfiles[ iDepartedId ] . bLife; } break; case 1: // agility if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bAgility; + iStat = iId->stats.bAgility; } else { - iStat = gMercProfiles[ iId ] . bAgility; + iStat = gMercProfiles[ iDepartedId ] . bAgility; } break; case 2: // dexterity if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bDexterity; + iStat = iId->stats.bDexterity; } else { - iStat = gMercProfiles[ iId ] . bDexterity; + iStat = gMercProfiles[ iDepartedId ] . bDexterity; } break; case 3: // strength if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bStrength; + iStat = iId->stats.bStrength; } else { - iStat = gMercProfiles[ iId ] . bStrength; + iStat = gMercProfiles[ iDepartedId ] . bStrength; } break; case 4: // leadership if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bLeadership; + iStat = iId->stats.bLeadership; } else { - iStat = gMercProfiles[ iId ] . bLeadership; + iStat = gMercProfiles[ iDepartedId ] . bLeadership; } break; case 5: // wisdom if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bWisdom; + iStat = iId->stats.bWisdom; } else { - iStat = gMercProfiles[ iId ] . bWisdom; + iStat = gMercProfiles[ iDepartedId ] . bWisdom; } break; case 6: // exper if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bExpLevel; + iStat = iId->stats.bExpLevel; } else { - iStat = gMercProfiles[ iId ] . bExpLevel; + iStat = gMercProfiles[ iDepartedId ] . bExpLevel; } break; case 7: //mrkmanship if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bMarksmanship; + iStat = iId->stats.bMarksmanship; } else { - iStat = gMercProfiles[ iId ] . bMarksmanship; + iStat = gMercProfiles[ iDepartedId ] . bMarksmanship; } break; case 8: // mech if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bMechanical; + iStat = iId->stats.bMechanical; } else { - iStat = gMercProfiles[ iId ] . bMechanical; + iStat = gMercProfiles[ iDepartedId ] . bMechanical; } break; case 9: // exp if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bExplosive; + iStat = iId->stats.bExplosive; } else { - iStat = gMercProfiles[ iId ] . bExplosive; + iStat = gMercProfiles[ iDepartedId ] . bExplosive; } break; case 10: // med if (fCurrentTeamMode) { - iStat = MercPtrs[ iId ]->stats.bMedical; + iStat = iId->stats.bMedical; } else { - iStat = gMercProfiles[ iId ] . bMedical; + iStat = gMercProfiles[ iDepartedId ] . bMedical; } break; - } + } - /*if( iStat == -1 ) - swprintf( sString, L"%s", pPOWStrings[1] ); - else*/ - swprintf( sString, L"%d", iStat ); + swprintf( sString, L"%d", iStat ); // right justify FindFontRightCoordinates( PERS_STAT_HIGHEST_X, 0 ,PERS_STAT_LOWEST_WIDTH, 0 , sString, FONT10ARIAL , &sX, &sY ); @@ -6196,7 +6160,7 @@ void ATMOtherButtonCallback(GUI_BUTTON *btn,INT32 reason) if (fCurrentTeamMode && currentTeamIndex != -1) { // set soldier - pSoldier = MercPtrs[ currentTeamList[currentTeamIndex] ]; + pSoldier = currentTeamList[currentTeamIndex]; switch( iValue ) { case( OK_ATM ): @@ -6583,11 +6547,11 @@ void UpDateStateOfStartButton( void ) for ( int i = 0; i < PERSONNEL_NUM_BTN; ++i ) EnableButton( giPersonnelATMStartButton[ i ] ); - INT32 iId = currentTeamList[currentTeamIndex]; + SoldierID iId = currentTeamList[currentTeamIndex]; - if (iId != -1) + if (iId != NOBODY) { - if ( Menptr[ iId ].bAssignment == ASSIGNMENT_POW ) + if ( iId->bAssignment == ASSIGNMENT_POW ) { DisableButton( giPersonnelATMStartButton[ PERSONNEL_INV_BTN ] ); @@ -6631,7 +6595,7 @@ void DisplayAmountOnCurrentMerc( void ) pSoldier = NULL; } else { // set soldier - pSoldier = MercPtrs[ currentTeamList[currentTeamIndex] ]; + pSoldier = currentTeamList[currentTeamIndex]; } INT32 iFunds = GetFundsOnMerc( pSoldier ); @@ -6716,7 +6680,7 @@ void HandlePersonnelKeyboard( void ) guiSliderPosition = 0; //if the selected merc is valid, and they are a POW, change to the inventory display - if( currentTeamIndex != -1 && Menptr[currentTeamList[currentTeamIndex]].bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN) + if( currentTeamIndex != -1 && currentTeamList[currentTeamIndex]->bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN) gubPersonnelInfoState = PERSONNEL_EMPLOYMENT_BTN; fPausedReDrawScreenFlag = TRUE; @@ -6737,7 +6701,7 @@ void HandlePersonnelKeyboard( void ) guiSliderPosition = 0; //if the selected merc is valid, and they are a POW, change to the inventory display - if( currentTeamIndex != -1 && Menptr[currentTeamList[currentTeamIndex]].bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN) + if( currentTeamIndex != -1 && currentTeamList[currentTeamIndex]->bAssignment == ASSIGNMENT_POW && gubPersonnelInfoState == PERSONNEL_INV_BTN) gubPersonnelInfoState = PERSONNEL_STAT_BTN; fPausedReDrawScreenFlag = TRUE; @@ -6759,6 +6723,22 @@ void HandlePersonnelKeyboard( void ) guiSliderPosition = 0; fPausedReDrawScreenFlag = TRUE; break; + case SHIFT_LEFTARROW: + case 'A': + fReDrawScreenFlag = TRUE; + PrevPersonnelFacePage(); + uiCurrentInventoryIndex = 0; + guiSliderPosition = 0; + fPausedReDrawScreenFlag = TRUE; + break; + case SHIFT_RIGHTARROW: + case 'D': + fReDrawScreenFlag = TRUE; + NextPersonnelFacePage(); + uiCurrentInventoryIndex = 0; + guiSliderPosition = 0; + fPausedReDrawScreenFlag = TRUE; + break; case SHIFT_TAB: if ( !fCurrentTeamMode ) { @@ -6921,7 +6901,7 @@ BOOLEAN IsPastMercOther( INT32 iId ) } } -void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) +void DisplayEmploymentinformation( SoldierID iId, INT32 iSlot ) { INT32 iCounter=0; CHAR16 sString[50]; @@ -6940,73 +6920,74 @@ void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) } } - if( Menptr[iId].flags.uiStatusFlags & SOLDIER_VEHICLE ) + SOLDIERTYPE *pSoldier = iId; + const MERCPROFILESTRUCT *pMercProfile = &gMercProfiles[pSoldier->ubProfile]; + const STRUCT_Records *pRecords = &pMercProfile->records; + + if( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { return; } // display the stats for a char - for(iCounter=0;iCounter ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC || pSoldier->ubProfile == SLAY ) + { + INT32 iTimeLeftOnContract = CalcTimeLeftOnMercContract( pSoldier ); + + //if the merc is in transit + if( pSoldier->bAssignment == IN_TRANSIT ) { - INT32 iTimeLeftOnContract = CalcTimeLeftOnMercContract( &Menptr[iId] ); - - //if the merc is in transit - if( Menptr[iId ].bAssignment == IN_TRANSIT ) + //and if the time left on the contract is greater than the contract time + if( iTimeLeftOnContract > (INT32)( pSoldier->iTotalContractLength * uiMinutesInDay ) ) { - //and if the ttime left on the cotract is greater then the contract time - if( iTimeLeftOnContract > (INT32)( Menptr[iId].iTotalContractLength * uiMinutesInDay ) ) - { - iTimeLeftOnContract = ( Menptr[iId].iTotalContractLength * uiMinutesInDay ); - } + iTimeLeftOnContract = ( pSoldier->iTotalContractLength * uiMinutesInDay ); } - // if there is going to be a both days and hours left on the contract - if( iTimeLeftOnContract / uiMinutesInDay ) - { - swprintf(sString, L"%d%s %d%s / %d%s",( iTimeLeftOnContract / uiMinutesInDay ), gpStrategicString[ STR_PB_DAYS_ABBREVIATION ], (iTimeLeftOnContract % uiMinutesInDay)/60, gpStrategicString[ STR_PB_HOURS_ABBREVIATION ], Menptr[iId].iTotalContractLength, gpStrategicString[ STR_PB_DAYS_ABBREVIATION ]); - mprintf((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter].y,pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT]); - } - - //else there is under a day left - else - { - //DEF: removed 2/7/99 - swprintf(sString, L"%d%s / %d%s", (iTimeLeftOnContract % uiMinutesInDay)/60, gpStrategicString[ STR_PB_HOURS_ABBREVIATION ], Menptr[iId].iTotalContractLength, gpStrategicString[ STR_PB_DAYS_ABBREVIATION ]); - mprintf((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter].y,pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT]); - } - } - else if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__MERC) + + UINT32 days = iTimeLeftOnContract / uiMinutesInDay; + UINT32 hours = (iTimeLeftOnContract % uiMinutesInDay) / 60; + + // if there is going to be a both days and hours left on the contract + if( days > 0) { -// swprintf(sString, L"%d%s / %d%s",Menptr[iId].iTotalContractLength, gpStrategicString[ STR_PB_DAYS_ABBREVIATION ], ( GetWorldTotalMin( ) -Menptr[iId].iStartContractTime ) / ( 24 * 60 ), gpStrategicString[ STR_PB_DAYS_ABBREVIATION ] ); - - wcscpy( sString, gpStrategicString[ STR_PB_NOTAPPLICABLE_ABBREVIATION ] ); - mprintf((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter].y,pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT]); + swprintf( sString, L"%d%s %d%s / %d%s", days, gpStrategicString[STR_PB_DAYS_ABBREVIATION], hours, gpStrategicString[STR_PB_HOURS_ABBREVIATION], pSoldier->iTotalContractLength, gpStrategicString[STR_PB_DAYS_ABBREVIATION] ); + mprintf( x, y, pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT] ); } + + //else there is under a day left else { - wcscpy( sString, gpStrategicString[ STR_PB_NOTAPPLICABLE_ABBREVIATION ] ); - mprintf((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter].y,pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT]); + //DEF: removed 2/7/99 + swprintf(sString, L"%d%s / %d%s", hours, gpStrategicString[ STR_PB_HOURS_ABBREVIATION ], pSoldier->iTotalContractLength, gpStrategicString[ STR_PB_DAYS_ABBREVIATION ]); + mprintf( x, y, pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT] ); } + + } + else + { + wcscpy( sString, gpStrategicString[ STR_PB_NOTAPPLICABLE_ABBREVIATION ] ); + mprintf( x, y, pPersonnelScreenStrings[PRSNL_TXT_CURRENT_CONTRACT] ); + } #endif - FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)+Prsnl_DATA_OffSetX),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); - mprintf(sX,pPersonnelScreenPoints[iCounter].y,sString); + FindFontRightCoordinates( (INT16)(x + Prsnl_DATA_OffSetX), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); + mprintf( sX, y, sString ); } break; @@ -7015,14 +6996,14 @@ void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) case 1: // total contract time served - mprintf((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter].y,pPersonnelScreenStrings[PRSNL_TXT_TOTAL_SERVICE]); + mprintf( x, y, pPersonnelScreenStrings[PRSNL_TXT_TOTAL_SERVICE] ); //./DEF 2/4/99: total service days used to be calced as 'days -1' - swprintf(sString, L"%d %s",gMercProfiles[Menptr[iId].ubProfile].usTotalDaysServed, gpStrategicString[ STR_PB_DAYS_ABBREVIATION ] ); + swprintf(sString, L"%d %s",pMercProfile->usTotalDaysServed, gpStrategicString[ STR_PB_DAYS_ABBREVIATION ] ); - FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)+Prsnl_DATA_OffSetX),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); - mprintf(sX,pPersonnelScreenPoints[iCounter].y,sString); + FindFontRightCoordinates( (INT16)(x + Prsnl_DATA_OffSetX), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); + mprintf(sX,y,sString); break; // case 13: @@ -7030,16 +7011,16 @@ void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) // cost (PRSNL_TXT_TOTAL_COST) /* - if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC) + if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC) { UINT32 uiDailyCost = 0; - if( Menptr[iId].bTypeOfLastContract == CONTRACT_EXTEND_2_WEEK ) + if( pSoldier->bTypeOfLastContract == CONTRACT_EXTEND_2_WEEK ) { // 2 week contract uiDailyCost = gMercProfiles[ Menptr[ iId ].ubProfile ].uiBiWeeklySalary / 14; } - else if( Menptr[iId].bTypeOfLastContract == CONTRACT_EXTEND_1_WEEK ) + else if( pSoldier->bTypeOfLastContract == CONTRACT_EXTEND_1_WEEK ) { // 1 week contract uiDailyCost = gMercProfiles[ Menptr[ iId ].ubProfile ].uiWeeklySalary / 7; @@ -7052,7 +7033,7 @@ void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) // swprintf( sString, L"%d",uiDailyCost * Menptr[ iId ].iTotalContractLength ); swprintf( sString, L"%d", gMercProfiles[ Menptr[ iId ].ubProfile ].uiTotalCostToDate ); } - else if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__MERC) + else if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__MERC) { // swprintf( sString, L"%d",gMercProfiles[ Menptr[ iId ].ubProfile ].sSalary * gMercProfiles[ Menptr[ iId ].ubProfile ].iMercMercContractLength ); swprintf( sString, L"%d", gMercProfiles[ Menptr[ iId ].ubProfile ].uiTotalCostToDate ); @@ -7065,7 +7046,7 @@ void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) swprintf( sString, L"%d", gMercProfiles[ Menptr[ iId ].ubProfile ].uiTotalCostToDate ); } */ - swprintf( sString, L"%d", gMercProfiles[ Menptr[ iId ].ubProfile ].uiTotalCostToDate ); + swprintf( sString, L"%d", pMercProfile->uiTotalCostToDate ); // insert commas and dollar sign InsertCommasForDollarFigure( sString ); @@ -7073,7 +7054,7 @@ void DisplayEmploymentinformation( INT32 iId, INT32 iSlot ) /* DEF:3/19/99: - if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__MERC ) + if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__MERC ) { swprintf( sStringA, L"%s", pPersonnelScreenStrings[ PRSNL_TXT_UNPAID_AMOUNT ] ); } @@ -7083,69 +7064,54 @@ DEF:3/19/99: swprintf( sStringA, L"%s", pPersonnelScreenStrings[ PRSNL_TXT_TOTAL_COST ] ); } - FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)+Prsnl_DATA_OffSetX),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); - mprintf( (INT16)(pPersonnelScreenPoints[iCounter].x +(iSlot*TEXT_BOX_WIDTH) ),pPersonnelScreenPoints[ iCounter ].y,sStringA); + FindFontRightCoordinates( (INT16)(x + Prsnl_DATA_OffSetX), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); + mprintf( x, y, sStringA ); // print contract cost - mprintf( ( INT16 ) ( sX ) , pPersonnelScreenPoints[iCounter].y,sString); + mprintf( sX, y, sString ); - if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC) + if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC) { - // daily rate - if( Menptr[iId].bTypeOfLastContract == CONTRACT_EXTEND_2_WEEK ) + if( pSoldier->bTypeOfLastContract == CONTRACT_EXTEND_2_WEEK ) { // 2 week contract - swprintf( sStringA, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].uiBiWeeklySalary / 14 ); - InsertCommasForDollarFigure( sStringA ); + swprintf( sStringA, L"%d", pMercProfile->uiBiWeeklySalary / 14 ); + InsertCommasForDollarFigure( sStringA ); InsertDollarSignInToString( sStringA ); swprintf( sString, L"%s", sStringA ); } - else if( Menptr[iId].bTypeOfLastContract == CONTRACT_EXTEND_1_WEEK ) + else if( pSoldier->bTypeOfLastContract == CONTRACT_EXTEND_1_WEEK ) { // 1 week contract - swprintf( sStringA, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].uiWeeklySalary / 7 ); - InsertCommasForDollarFigure( sStringA ); + swprintf( sStringA, L"%d", pMercProfile->uiWeeklySalary / 7 ); + InsertCommasForDollarFigure( sStringA ); InsertDollarSignInToString( sStringA ); swprintf( sString, L"%s", sStringA ); } else { - - swprintf( sStringA, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].sSalary ); + // daily rate + swprintf( sStringA, L"%d", pMercProfile->sSalary ); InsertCommasForDollarFigure( sStringA ); - InsertDollarSignInToString( sStringA ); + InsertDollarSignInToString( sStringA ); swprintf( sString, L"%s", sStringA ); } } - else if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__MERC) - { -//DEF: 99/2/7 -// swprintf( sStringA, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].sSalary * Menptr[ iId ].iTotalContractLength); - swprintf( sStringA, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].sSalary ); - InsertCommasForDollarFigure( sStringA ); - InsertDollarSignInToString( sStringA ); - swprintf( sString, L"%s", sStringA ); - } - else { - //Display a $0 amount -// swprintf( sString, L"0" ); -// InsertDollarSignInToString( sString ); - swprintf( sStringA, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].sSalary ); + swprintf( sStringA, L"%d", pMercProfile->sSalary ); InsertCommasForDollarFigure( sStringA ); InsertDollarSignInToString( sStringA ); swprintf( sString, L"%s", sStringA ); } - FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[iCounter].x+(iSlot*TEXT_BOX_WIDTH)+Prsnl_DATA_OffSetX),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); + FindFontRightCoordinates( (INT16)(x + Prsnl_DATA_OffSetX), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); -// iCounter++; iCounter++; - // now print daily rate - mprintf( ( INT16 )( sX ),pPersonnelScreenPoints[ iCounter+1 ].y,sString); - mprintf( (INT16)(pPersonnelScreenPoints[iCounter+1].x +(iSlot*TEXT_BOX_WIDTH) ),pPersonnelScreenPoints[ iCounter +1].y, pPersonnelScreenStrings[PRSNL_TXT_DAILY_COST]); + // now print daily rate + mprintf( sX, pPersonnelScreenPoints[iCounter + 1].y, sString ); + mprintf( pPersonnelScreenPoints[iCounter + 1].x + (iSlot * TEXT_BOX_WIDTH), pPersonnelScreenPoints[iCounter + 1].y, pPersonnelScreenStrings[PRSNL_TXT_DAILY_COST] ); break; @@ -7153,11 +7119,11 @@ DEF:3/19/99: // medical deposit //if its a merc merc, display the salary oweing - if( Menptr[iId].ubWhatKindOfMercAmI == MERC_TYPE__MERC ) + if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__MERC ) { mprintf((INT16)(pPersonnelScreenPoints[iCounter-1].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter-1].y,pPersonnelScreenStrings[PRSNL_TXT_UNPAID_AMOUNT]); - swprintf( sString, L"%d", gMercProfiles[Menptr[ iId ].ubProfile].sSalary * gMercProfiles[Menptr[ iId ].ubProfile ].iMercMercContractLength ); + swprintf( sString, L"%d", pMercProfile->sSalary * pMercProfile->iMercMercContractLength ); InsertCommasForDollarFigure( sString ); InsertDollarSignInToString( sString ); @@ -7168,7 +7134,7 @@ DEF:3/19/99: { mprintf((INT16)(pPersonnelScreenPoints[iCounter-1].x+(iSlot*TEXT_BOX_WIDTH)),pPersonnelScreenPoints[iCounter-1].y,pPersonnelScreenStrings[PRSNL_TXT_MED_DEPOSIT]); - swprintf(sString, L"%d",gMercProfiles[Menptr[iId].ubProfile].sMedicalDepositAmount); + swprintf(sString, L"%d",pMercProfile->sMedicalDepositAmount); // insert commas and dollar sign InsertCommasForDollarFigure( sString ); @@ -7188,7 +7154,7 @@ DEF:3/19/99: // kills mprintf((INT16)(pPersonnelScreenPoints[20].x+(iSlot*TEXT_BOX_WIDTH)),(pPersonnelScreenPoints[20].y - 12),pPersonnelScreenStrings[PRSNL_TXT_KILLS]); - swprintf(sString, L"%d",(gMercProfiles[Menptr[iId].ubProfile].records.usKillsElites + gMercProfiles[Menptr[iId].ubProfile].records.usKillsRegulars + gMercProfiles[Menptr[iId].ubProfile].records.usKillsAdmins + gMercProfiles[Menptr[iId].ubProfile].records.usKillsHostiles + gMercProfiles[Menptr[iId].ubProfile].records.usKillsCreatures + gMercProfiles[Menptr[iId].ubProfile].records.usKillsZombies + gMercProfiles[Menptr[iId].ubProfile].records.usKillsTanks + gMercProfiles[Menptr[iId].ubProfile].records.usKillsOthers)); + swprintf(sString, L"%d",(pRecords->usKillsElites + pRecords->usKillsRegulars + pRecords->usKillsAdmins + pRecords->usKillsHostiles + pRecords->usKillsCreatures + pRecords->usKillsZombies + pRecords->usKillsTanks + pRecords->usKillsOthers)); FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[20].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); mprintf(sX,(pPersonnelScreenPoints[20].y - 12),sString); @@ -7207,13 +7173,13 @@ DEF:3/19/99: MSYS_AddRegion( &gSkillTraitHelpTextRegion[7] ); fAddedTraitRegion[7] = TRUE; // Assign the text - AssignPersonnelKillsHelpText( Menptr[iId].ubProfile ); + AssignPersonnelKillsHelpText( pSoldier->ubProfile ); break; case 15: // assists mprintf((INT16)(pPersonnelScreenPoints[21].x+(iSlot*TEXT_BOX_WIDTH)),(pPersonnelScreenPoints[21].y - 10),pPersonnelScreenStrings[PRSNL_TXT_ASSISTS]); - swprintf(sString, L"%d",(gMercProfiles[Menptr[iId].ubProfile].records.usAssistsMercs + gMercProfiles[Menptr[iId].ubProfile].records.usAssistsMilitia + gMercProfiles[Menptr[iId].ubProfile].records.usAssistsOthers)); + swprintf(sString, L"%d",(pRecords->usAssistsMercs + pRecords->usAssistsMilitia + pRecords->usAssistsOthers)); FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[21].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); mprintf(sX,(pPersonnelScreenPoints[21].y - 10),sString); @@ -7231,19 +7197,21 @@ DEF:3/19/99: MSYS_AddRegion( &gSkillTraitHelpTextRegion[8] ); fAddedTraitRegion[8] = TRUE; // Assign the text - AssignPersonnelAssistsHelpText( Menptr[iId].ubProfile ); + AssignPersonnelAssistsHelpText( pSoldier->ubProfile ); break; case 16: + { // shots/hits - mprintf((INT16)(pPersonnelScreenPoints[22].x+(iSlot*TEXT_BOX_WIDTH)),(pPersonnelScreenPoints[22].y - 8),pPersonnelScreenStrings[PRSNL_TXT_HIT_PERCENTAGE]); - uiHits = ( UINT32 )gMercProfiles[Menptr[iId].ubProfile].records.usShotsHit; + mprintf( (INT16)(pPersonnelScreenPoints[22].x + (iSlot * TEXT_BOX_WIDTH)), (pPersonnelScreenPoints[22].y - 8), pPersonnelScreenStrings[PRSNL_TXT_HIT_PERCENTAGE] ); + uiHits = (UINT32)pRecords->usShotsHit; uiHits *= 100; // check we have shot at least once - if( (gMercProfiles[Menptr[iId].ubProfile].records.usShotsFired + gMercProfiles[Menptr[iId].ubProfile].records.usMissilesLaunched + gMercProfiles[Menptr[iId].ubProfile].records.usGrenadesThrown + gMercProfiles[Menptr[iId].ubProfile].records.usKnivesThrown + gMercProfiles[Menptr[iId].ubProfile].records.usBladeAttacks + gMercProfiles[Menptr[iId].ubProfile].records.usHtHAttacks) > 0 ) + UINT32 uiAttacks = pRecords->usShotsFired + pRecords->usMissilesLaunched + pRecords->usGrenadesThrown + pRecords->usKnivesThrown + pRecords->usBladeAttacks + pRecords->usHtHAttacks; + if ( uiAttacks > 0 ) { - uiHits /= ( UINT32 )(gMercProfiles[Menptr[iId].ubProfile].records.usShotsFired + gMercProfiles[Menptr[iId].ubProfile].records.usMissilesLaunched + gMercProfiles[Menptr[iId].ubProfile].records.usGrenadesThrown + gMercProfiles[Menptr[iId].ubProfile].records.usKnivesThrown + gMercProfiles[Menptr[iId].ubProfile].records.usBladeAttacks + gMercProfiles[Menptr[iId].ubProfile].records.usHtHAttacks); + uiHits /= uiAttacks; if ( uiHits > 100 ) uiHits = 100; } @@ -7254,32 +7222,32 @@ DEF:3/19/99: } - swprintf(sString, L"%d %%%%",uiHits); - FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[22].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); - sX += StringPixLength( sSpecialCharacters[0], PERS_FONT ); - mprintf(sX,(pPersonnelScreenPoints[22].y - 8),sString); - - GetVideoObject(&hHandle, guiQMark); - BltVideoObject( FRAME_BUFFER, hHandle, 0,(pPersonnelScreenPoints[22].x + 148), ( pPersonnelScreenPoints[22].y - 9 ), VO_BLT_SRCTRANSPARENCY,NULL ); + swprintf( sString, L"%d %%%%", uiHits ); + FindFontRightCoordinates( (INT16)(pPersonnelScreenPoints[22].x + (iSlot * TEXT_BOX_WIDTH)), 0, TEXT_BOX_WIDTH - 20, 0, sString, PERS_FONT, &sX, &sY ); + sX += StringPixLength( sSpecialCharacters[0], PERS_FONT ); + mprintf( sX, (pPersonnelScreenPoints[22].y - 8), sString ); + + GetVideoObject( &hHandle, guiQMark ); + BltVideoObject( FRAME_BUFFER, hHandle, 0, (pPersonnelScreenPoints[22].x + 148), (pPersonnelScreenPoints[22].y - 9), VO_BLT_SRCTRANSPARENCY, NULL ); // Add specific region for fast help window - if( fAddedTraitRegion[9] ) + if ( fAddedTraitRegion[9] ) { MSYS_RemoveRegion( &gSkillTraitHelpTextRegion[9] ); } - MSYS_DefineRegion( &gSkillTraitHelpTextRegion[9], (UINT16)( pPersonnelScreenPoints[22].x + 147 ), (UINT16)( pPersonnelScreenPoints[22].y - 10 ), - (UINT16)( pPersonnelScreenPoints[22].x + 166 ), (UINT16)(pPersonnelScreenPoints[22].y + 1), MSYS_PRIORITY_HIGH, - MSYS_NO_CURSOR, MSYS_NO_CALLBACK, NULL ); + MSYS_DefineRegion( &gSkillTraitHelpTextRegion[9], (UINT16)(pPersonnelScreenPoints[22].x + 147), (UINT16)(pPersonnelScreenPoints[22].y - 10), + (UINT16)(pPersonnelScreenPoints[22].x + 166), (UINT16)(pPersonnelScreenPoints[22].y + 1), MSYS_PRIORITY_HIGH, + MSYS_NO_CURSOR, MSYS_NO_CALLBACK, NULL ); MSYS_AddRegion( &gSkillTraitHelpTextRegion[9] ); fAddedTraitRegion[9] = TRUE; // Assign the text - AssignPersonnelHitPercentageHelpText( Menptr[iId].ubProfile ); - + AssignPersonnelHitPercentageHelpText( pSoldier->ubProfile ); + } break; case 17: // Achievements mprintf((INT16)(pPersonnelScreenPoints[23].x+(iSlot*TEXT_BOX_WIDTH)),(pPersonnelScreenPoints[23].y - 6),pPersonnelScreenStrings[PRSNL_TXT_ACHIEVEMNTS]); - swprintf(sString, L"%d %%%%", CalculateMercsAchievementPercentage( Menptr[iId].ubProfile )); + swprintf(sString, L"%d %%%%", CalculateMercsAchievementPercentage( pSoldier->ubProfile )); FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[23].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); sX += StringPixLength( sSpecialCharacters[0], PERS_FONT ); mprintf(sX,(pPersonnelScreenPoints[23].y - 6),sString); @@ -7298,13 +7266,13 @@ DEF:3/19/99: MSYS_AddRegion( &gSkillTraitHelpTextRegion[10] ); fAddedTraitRegion[10] = TRUE; // Assign the text - AssignPersonnelAchievementsHelpText( Menptr[iId].ubProfile ); + AssignPersonnelAchievementsHelpText( pSoldier->ubProfile ); break; case 18: // battles mprintf((INT16)(pPersonnelScreenPoints[24].x+(iSlot*TEXT_BOX_WIDTH)),(pPersonnelScreenPoints[24].y - 4),pPersonnelScreenStrings[PRSNL_TXT_BATTLES]); - swprintf(sString, L"%d",(gMercProfiles[Menptr[iId].ubProfile].records.usBattlesTactical + gMercProfiles[Menptr[iId].ubProfile].records.usBattlesAutoresolve)); + swprintf(sString, L"%d",(pRecords->usBattlesTactical + pRecords->usBattlesAutoresolve)); FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[24].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); mprintf(sX,(pPersonnelScreenPoints[24].y - 4),sString); @@ -7322,13 +7290,13 @@ DEF:3/19/99: MSYS_AddRegion( &gSkillTraitHelpTextRegion[11] ); fAddedTraitRegion[11] = TRUE; // Assign the text - AssignPersonnelBattlesHelpText( Menptr[iId].ubProfile ); + AssignPersonnelBattlesHelpText( pSoldier->ubProfile ); break; case 19: // wounds mprintf((INT16)(pPersonnelScreenPoints[25].x+(iSlot*TEXT_BOX_WIDTH)),(pPersonnelScreenPoints[25].y - 2),pPersonnelScreenStrings[PRSNL_TXT_TIMES_WOUNDED]); - swprintf(sString, L"%d",(gMercProfiles[Menptr[iId].ubProfile].records.usTimesWoundedShot + gMercProfiles[Menptr[iId].ubProfile].records.usTimesWoundedStabbed + (gMercProfiles[Menptr[iId].ubProfile].records.usTimesWoundedPunched/2) + gMercProfiles[Menptr[iId].ubProfile].records.usTimesWoundedBlasted)); + swprintf(sString, L"%d",(pRecords->usTimesWoundedShot + pRecords->usTimesWoundedStabbed + (pRecords->usTimesWoundedPunched/2) + pRecords->usTimesWoundedBlasted)); FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[25].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY); mprintf(sX,(pPersonnelScreenPoints[25].y - 2),sString); @@ -7346,7 +7314,7 @@ DEF:3/19/99: MSYS_AddRegion( &gSkillTraitHelpTextRegion[12] ); fAddedTraitRegion[12] = TRUE; // Assign the text - AssignPersonnelWoundsHelpText( Menptr[iId].ubProfile ); + AssignPersonnelWoundsHelpText( pSoldier->ubProfile ); break; @@ -8764,7 +8732,7 @@ void AssignPersonnelDisabilityHelpText( UINT8 ubDisabilityNumber ) SetRegionHelpEndCallback( &gSkillTraitHelpTextRegion[6], MSYS_NO_CALLBACK ); } -void AssignPersonnelMultipleDisabilityHelpText( SOLDIERTYPE* pSoldier ) +void AssignPersonnelMultipleDisabilityHelpText( const SOLDIERTYPE* pSoldier ) { CHAR16 apStr[1000]; @@ -9154,81 +9122,85 @@ void AssignPersonnelWoundsHelpText( INT32 ubProfile ) INT8 CalculateMercsAchievementPercentage( INT32 ubProfile ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt=0; UINT32 uiMercPoints, uiMercPercentage; unsigned long ulTotalMercPoints = 0; // run through active soldiers - for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id) { - pTeamSoldier = MercPtrs[cnt]; + pTeamSoldier = id; // Only count stats of merc (not vehicles) if ( !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pTeamSoldier ) ) { if( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 && pTeamSoldier->ubProfile != 0 ) { + const STRUCT_Records &records = gMercProfiles[pTeamSoldier->ubProfile].records; + // get total value of all mercs, adjust by importance ulTotalMercPoints += - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usLocksPicked ) + ( records.usLocksPicked ) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usLocksBreached ) + ( records.usLocksBreached ) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usTrapsRemoved *3/2) + ( records.usTrapsRemoved *3/2) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usExpDetonated *3/2) + ( records.usExpDetonated *3/2) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usItemsRepaired /2) + ( records.usItemsRepaired /2) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usItemsCombined *2) + ( records.usItemsCombined *2) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usItemsStolen ) + ( records.usItemsStolen ) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usMercsBandaged *3/4) + ( records.usMercsBandaged *3/4) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usSurgeriesMade *3/2) + ( records.usSurgeriesMade *3/2) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usNPCsDiscovered *4/3) + ( records.usNPCsDiscovered *4/3) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usSectorsDiscovered ) + ( records.usSectorsDiscovered ) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usMilitiaTrained /4) + ( records.usMilitiaTrained /4) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.ubQuestsHandled *2) + ( records.ubQuestsHandled *2) + - (gMercProfiles[pTeamSoldier->ubProfile].records.usInterrogations); + ( records.usInterrogations); } } } // Now get points of our mercs - uiMercPoints = - ( gMercProfiles[ ubProfile ].records.usLocksPicked ) + const STRUCT_Records &records = gMercProfiles[ubProfile].records; + uiMercPoints = + ( records.usLocksPicked ) + - ( gMercProfiles[ ubProfile ].records.usLocksBreached ) + ( records.usLocksBreached ) + - ( gMercProfiles[ ubProfile ].records.usTrapsRemoved *3/2) + ( records.usTrapsRemoved *3/2) + - ( gMercProfiles[ ubProfile ].records.usExpDetonated *3/2) + ( records.usExpDetonated *3/2) + - ( gMercProfiles[ ubProfile ].records.usItemsRepaired /2) + ( records.usItemsRepaired /2) + - ( gMercProfiles[ ubProfile ].records.usItemsCombined *2) + ( records.usItemsCombined *2) + - ( gMercProfiles[ ubProfile ].records.usItemsStolen ) + ( records.usItemsStolen ) + - ( gMercProfiles[ ubProfile ].records.usMercsBandaged *3/4) + ( records.usMercsBandaged *3/4) + - ( gMercProfiles[ ubProfile ].records.usSurgeriesMade *3/2) + ( records.usSurgeriesMade *3/2) + - ( gMercProfiles[ ubProfile ].records.usNPCsDiscovered *4/3) + ( records.usNPCsDiscovered *4/3) + - ( gMercProfiles[ ubProfile ].records.usSectorsDiscovered ) + ( records.usSectorsDiscovered ) + - ( gMercProfiles[ ubProfile ].records.usMilitiaTrained /4) + ( records.usMilitiaTrained /4) + - ( gMercProfiles[ ubProfile ].records.ubQuestsHandled *2) + ( records.ubQuestsHandled *2) + - ( gMercProfiles[ubProfile].records.usInterrogations ); + ( records.usInterrogations ); // Calculate percentage if( ulTotalMercPoints != 0 ) @@ -9244,7 +9216,7 @@ INT8 CalculateMercsAchievementPercentage( INT32 ubProfile ) } // Flugente: personality info -void AssignPersonalityHelpText( SOLDIERTYPE* pSoldier, MOUSE_REGION* pMouseregion ) +void AssignPersonalityHelpText( const SOLDIERTYPE* pSoldier, MOUSE_REGION* pMouseregion ) { CHAR16 apStr[ 4500 ]; CHAR16 atStr[ 260 ]; diff --git a/ModularizedTacticalAI/src/AbstractPlanFactory.cpp b/ModularizedTacticalAI/src/AbstractPlanFactory.cpp index f22c4c8a..accd9113 100644 --- a/ModularizedTacticalAI/src/AbstractPlanFactory.cpp +++ b/ModularizedTacticalAI/src/AbstractPlanFactory.cpp @@ -39,7 +39,7 @@ namespace AI if(i.event_type_ == AIInputData::auditive_event) return os<<"sound: "<ubID<<" was seen at "<ubID.i<<" was seen at "<input; - SOLDIERTYPE *pSoldier = MercPtrs[ SNetPath->usSoldierID ]; + SOLDIERTYPE *pSoldier = SNetPath->usSoldierID; memcpy(pSoldier->pathing.usPathingData, SNetPath->usPathData,sizeof(UINT16)*30); @@ -863,7 +863,7 @@ void recieveSTANCE(RPCParameters *rpcParameters) EV_S_CHANGESTANCE* SChangeStance = (EV_S_CHANGESTANCE*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ SChangeStance->usSoldierID ]; + SOLDIERTYPE *pSoldier = SChangeStance->usSoldierID; pSoldier->ChangeSoldierStance( SChangeStance->ubNewStance ); @@ -906,7 +906,7 @@ void recieveDIR(RPCParameters *rpcParameters) EV_S_SETDESIREDDIRECTION* SSetDesiredDirection = (EV_S_SETDESIREDDIRECTION*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ SSetDesiredDirection->usSoldierID ]; + SOLDIERTYPE *pSoldier = SSetDesiredDirection->usSoldierID; pSoldier->EVENT_SetSoldierDesiredDirection( SSetDesiredDirection->usDesiredDirection ); @@ -945,7 +945,7 @@ void recieveFIRE(RPCParameters *rpcParameters) EV_S_BEGINFIREWEAPON* SBeginFireWeapon = (EV_S_BEGINFIREWEAPON*)rpcParameters->input; //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"SendBeginFireWeaponEvent" ); - SOLDIERTYPE *pSoldier = MercPtrs[ SBeginFireWeapon->usSoldierID ]; + SOLDIERTYPE *pSoldier = SBeginFireWeapon->usSoldierID; pSoldier->sTargetGridNo = SBeginFireWeapon->sTargetGridNo; pSoldier->bTargetLevel = SBeginFireWeapon->bTargetLevel; @@ -967,7 +967,7 @@ void send_hit( EV_S_WEAPONHIT *SWeaponHit ) memcpy( &weaphit_struct , SWeaponHit, sizeof( EV_S_WEAPONHIT )); - UINT16 usSoldierID=weaphit_struct.usSoldierID; + SoldierID usSoldierID = weaphit_struct.usSoldierID; if(SWeaponHit->usSoldierID < 20)weaphit_struct.usSoldierID = weaphit_struct.usSoldierID+ubID_prefix; if(SWeaponHit->ubAttackerID < 20)weaphit_struct.ubAttackerID = weaphit_struct.ubAttackerID+ubID_prefix; @@ -981,9 +981,9 @@ void recieveHIT(RPCParameters *rpcParameters) EV_S_WEAPONHIT* SWeaponHit = (EV_S_WEAPONHIT*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ SWeaponHit->usSoldierID ]; - UINT16 usSoldierID; - UINT8 ubAttackerID; + SOLDIERTYPE *pSoldier = SWeaponHit->usSoldierID; + SoldierID usSoldierID; + SoldierID ubAttackerID; if((SWeaponHit->usSoldierID >= ubID_prefix) && (SWeaponHit->usSoldierID < (ubID_prefix+6))) // within our netbTeam range... usSoldierID = (SWeaponHit->usSoldierID - ubID_prefix); @@ -1010,7 +1010,7 @@ void recieveHIT(RPCParameters *rpcParameters) } -void send_dismiss(UINT8 ubCurrentSoldierID) +void send_dismiss(UINT16 ubCurrentSoldierID) { send_dismiss_struct sDismissMerc; @@ -1019,7 +1019,7 @@ void send_dismiss(UINT8 ubCurrentSoldierID) client->RPC("sendDISMISS",(const char*)&sDismissMerc, (int)sizeof(send_dismiss_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0); } -void send_hire( UINT8 iNewIndex, UINT8 ubCurrentSoldier, INT16 iTotalContractLength, BOOLEAN fCopyProfileItemsOver) +void send_hire( SoldierID iNewIndex, UINT8 ubCurrentSoldier, INT16 iTotalContractLength, BOOLEAN fCopyProfileItemsOver) { send_hire_struct sHireMerc; @@ -1028,7 +1028,7 @@ void send_hire( UINT8 iNewIndex, UINT8 ubCurrentSoldier, INT16 iTotalContractLen sHireMerc.fCopyProfileItemsOver=fCopyProfileItemsOver; sHireMerc.bTeam=netbTeam; - SOLDIERTYPE *pSoldier = MercPtrs[ iNewIndex ]; + SOLDIERTYPE *pSoldier = iNewIndex; UINT8 sectorEdge = cStartingSectorEdge; @@ -1082,8 +1082,7 @@ void recieveHIRE(RPCParameters *rpcParameters) send_hire_struct* sHireMerc = (send_hire_struct*)rpcParameters->input; SOLDIERTYPE *pSoldier; - UINT8 iNewIndex; - UINT8 ubCount=0; + SoldierID iNewIndex; SOLDIERCREATE_STRUCT MercCreateStruct; BOOLEAN fReturn = FALSE; @@ -1098,7 +1097,7 @@ void recieveHIRE(RPCParameters *rpcParameters) TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ; - pSoldier = &Menptr[iNewIndex]; + pSoldier = iNewIndex; pSoldier->flags.uiStatusFlags |= SOLDIER_PC; gMercProfiles[ pSoldier->ubProfile ].ubMiscFlags |= PROFILE_MISC_FLAG_RECRUITED; @@ -1158,7 +1157,7 @@ void send_gui_pos(SOLDIERTYPE *pSoldier, FLOAT dNewXPos, FLOAT dNewYPos) { gui_pos gnPOS; - gnPOS.usSoldierID = (pSoldier->ubID)+ubID_prefix; + gnPOS.usSoldierID = pSoldier->ubID + ubID_prefix; gnPOS.dNewXPos = dNewXPos; gnPOS.dNewYPos = dNewYPos; @@ -1170,7 +1169,7 @@ void recieveguiPOS(RPCParameters *rpcParameters) { gui_pos* gnPOS = (gui_pos*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ gnPOS->usSoldierID ]; + SOLDIERTYPE *pSoldier = gnPOS->usSoldierID; INT32 sNewGridNo; @@ -1196,7 +1195,7 @@ void recieveguiDIR(RPCParameters *rpcParameters) { gui_dir* gnDIR = (gui_dir*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ gnDIR->usSoldierID ]; + SOLDIERTYPE *pSoldier = gnDIR->usSoldierID; pSoldier->EVENT_SetSoldierDirection( gnDIR->usNewDirection ); } @@ -1276,7 +1275,7 @@ UINT8 numenemyLAN( UINT8 ubSectorX, UINT8 ubSectorY ) return ubNumEnemies; } -void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ) +void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct ) { AI_STRUCT send_inv; send_inv.standard_data = *pCreateStruct; @@ -1291,7 +1290,7 @@ void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ) void recieveAI (RPCParameters *rpcParameters) { - UINT8 iNewIndex; + SoldierID iNewIndex; SOLDIERTYPE *pSoldier; AI_STRUCT* send_inv = (AI_STRUCT*)rpcParameters->input; @@ -1355,7 +1354,7 @@ void recieveAI (RPCParameters *rpcParameters) new_standard_data.fPlayerPlan=1; TacticalCreateSoldier( &new_standard_data, &iNewIndex ); - pSoldier = &Menptr[iNewIndex]; + pSoldier = iNewIndex; pSoldier->flags.uiStatusFlags |= SOLDIER_PC; AddSoldierToSector( iNewIndex ); @@ -1900,7 +1899,7 @@ void recieveSTOP (RPCParameters *rpcParameters) { EV_S_STOP_MERC* SStopMerc =(EV_S_STOP_MERC*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ SStopMerc->usSoldierID ]; + SOLDIERTYPE *pSoldier = SStopMerc->usSoldierID; pSoldier->EVENT_InternalSetSoldierPosition( SStopMerc->sXPos, SStopMerc->sYPos,FALSE, FALSE, FALSE ); pSoldier->EVENT_SetSoldierDirection( SStopMerc->ubDirection ); @@ -1914,10 +1913,10 @@ void send_interrupt (SOLDIERTYPE *pSoldier) INT.ubID = pSoldier->ubID; INT.bTeam = pSoldier->bTeam; - memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); INT.gubOutOfTurnPersons = gubOutOfTurnPersons; - INT.Interrupted=gusSelectedSoldier+ubID_prefix; + INT.Interrupted = gusSelectedSoldier + ubID_prefix; if(INT.bTeam==0) { @@ -1945,7 +1944,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) if (cGameType == MP_TYPE_COOP) { INT_STRUCT* INT = (INT_STRUCT*)rpcParameters->input; - SOLDIERTYPE* pOpponent = MercPtrs[ INT->Interrupted]; + SOLDIERTYPE* pOpponent = INT->Interrupted; if( INT->bTeam == netbTeam || is_server)//its for us or we are server and its for AI which we control { @@ -1970,7 +1969,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) INT->gubOutOfTurnOrder[i]=INT->gubOutOfTurnOrder[i]-ubID_prefix; } } - memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); gubOutOfTurnPersons = INT->gubOutOfTurnPersons; if(INT->bTeam==netbTeam)//for us @@ -1979,7 +1978,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Recieved interrupt between %s and %s.", TeamNameStrings[pOpponent->bTeam], TeamNameStrings[INT->bTeam] ); //start interrupt turn //real interrupt code - SOLDIERTYPE* pSoldier = MercPtrs[ INT->ubID ]; + SOLDIERTYPE* pSoldier = INT->ubID; ManSeesMan(pSoldier,pOpponent,pOpponent->sGridNo,pOpponent->pathing.bLevel,2,1); StartInterrupt(); } @@ -1995,7 +1994,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) { ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Interrupt of %s awarded to you.", TeamNameStrings[pOpponent->bTeam] );//was MPClientMessage[37], can be reconnected if text updated and translated - SOLDIERTYPE* pSoldier = MercPtrs[ INT->ubID ]; + SOLDIERTYPE* pSoldier = INT->ubID; ManSeesMan(pSoldier,pOpponent,pOpponent->sGridNo,pOpponent->pathing.bLevel,2,1); StartInterrupt(); } @@ -2004,7 +2003,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) else { INT_STRUCT* INT = (INT_STRUCT*)rpcParameters->input; - SOLDIERTYPE* pOpponent = MercPtrs[ INT->Interrupted]; + SOLDIERTYPE* pOpponent = INT->Interrupted; if(INT->bTeam==netbTeam)//for us { @@ -2018,7 +2017,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) INT->gubOutOfTurnOrder[i]=INT->gubOutOfTurnOrder[i]-ubID_prefix; } } - memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); gubOutOfTurnPersons = INT->gubOutOfTurnPersons; AddTopMessage( PLAYER_INTERRUPT_MESSAGE, TeamTurnString[ INT->bTeam ] ); @@ -2029,7 +2028,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) if( INT->bTeam != 0)//not for our team - hayden { //stop moving merc who was interrupted and init UI bar - SOLDIERTYPE* pMerc = MercPtrs[ INT->ubID ]; + SOLDIERTYPE* pMerc = INT->ubID; pMerc->HaultSoldierFromSighting(TRUE); FreezeInterfaceForEnemyTurn(); InitEnemyUIBar( 0, 0 ); @@ -2050,7 +2049,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) { ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Interrupt of %s awarded to you.", TeamNameStrings[pOpponent->bTeam] );//was MPClientMessage[37], can be reconnected if text updated and translated - SOLDIERTYPE* pSoldier = MercPtrs[ INT->ubID ]; + SOLDIERTYPE* pSoldier = INT->ubID; ManSeesMan(pSoldier,pOpponent,pOpponent->sGridNo,pOpponent->pathing.bLevel,2,1); StartInterrupt(); } @@ -2134,7 +2133,7 @@ void end_interrupt ( BOOLEAN fMarkInterruptOccurred ) INT_STRUCT INT; INT.ubID = pSoldier->ubID; INT.bTeam = pSoldier->bTeam; - memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); INT.gubOutOfTurnPersons = gubOutOfTurnPersons; INT.fMarkInterruptOccurred=fMarkInterruptOccurred; if(is_server)Sawarded=false; @@ -2175,7 +2174,7 @@ void resume_turn(RPCParameters *rpcParameters) } } - memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); gubOutOfTurnPersons = INT->gubOutOfTurnPersons; EndInterrupt( INT->fMarkInterruptOccurred ); } @@ -2921,11 +2920,11 @@ void recieveMAPCHANGE( RPCParameters *rpcParameters ) } // 20091002 - OJW - Explosives -void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, UINT8 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID , bool bIsThrownGrenade) +void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade) { ubOwner = MPEncodeSoldierID(ubOwner); // translate our soldier to the "network" version - SOLDIERTYPE* pSoldier = MercPtrs[ubOwner]; + SOLDIERTYPE* pSoldier = ubOwner; if (pSoldier != NULL) { if ((pSoldier->bTeam == 1 && is_server) || IsOurSoldier(pSoldier)) @@ -2943,14 +2942,13 @@ void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yP gren.ubID = ubOwner; gren.usItem = pGameObj->usItem; gren.sTargetGridNo = sTargetGridNo; - gren.ubID = ubOwner; gren.RealObjectID = iRealObjectID; gren.IsThrownGrenade = bIsThrownGrenade; gren.uiPreRandomIndex = guiPreRandomIndex; #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_grenade ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",gren.usItem, gren.sTargetGridNo , gren.ubID , guiPreRandomIndex ); + sprintf(tmpMPDbgString,"MP - send_grenade ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",gren.usItem, gren.sTargetGridNo , gren.ubID.i , guiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -2966,7 +2964,7 @@ void recieveGRENADE (RPCParameters *rpcParameters) gren->ubID = MPDecodeSoldierID(gren->ubID); - SOLDIERTYPE* pThrower = MercPtrs[ gren->ubID ]; + SOLDIERTYPE* pThrower = gren->ubID; if (pThrower != NULL) { guiPreRandomIndex = gren->uiPreRandomIndex; @@ -2976,7 +2974,7 @@ void recieveGRENADE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveGRENADE ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",gren->usItem, gren->sTargetGridNo , gren->ubID , guiPreRandomIndex ); + sprintf(tmpMPDbgString,"MP - recieveGRENADE ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",gren->usItem, gren->sTargetGridNo , gren->ubID.i , guiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -2986,7 +2984,7 @@ void recieveGRENADE (RPCParameters *rpcParameters) CreateItem( gren->usItem, 99, newObj ); OBJECTTYPE::CopyToOrCreateAt(&pThrower->pTempObject, newObj); // this will create a grenade and launch it - INT32 i = CreatePhysicalObject( pThrower->pTempObject , gren->dLifeSpan , gren->dX , gren->dY , gren->dZ , gren->dForceX , gren->dForceY , gren->dForceZ , pThrower->ubID , gren->ubActionCode , gren->uiActionData, false); + INT32 i = CreatePhysicalObject( pThrower->pTempObject, gren->dLifeSpan, gren->dX, gren->dY, gren->dZ, gren->dForceX, gren->dForceY, gren->dForceZ, pThrower->ubID, gren->ubActionCode, gren->uiActionData, false); // save extra state info so we can check and feed it result later ObjectSlots[ i ].mpRealObjectID = gren->RealObjectID; ObjectSlots[ i ].mpTeam = pThrower->bTeam; @@ -3023,7 +3021,7 @@ void recieveGRENADE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION char tmpMsg[128]; - sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveGRENADE()",gren->ubID); + sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveGRENADE()", gren->ubID.i); //ScreenMsg(FONT_RED,MSG_MPSYSTEM,tmpMsg); MPDebugMsg(tmpMsg); #endif @@ -3031,11 +3029,11 @@ void recieveGRENADE (RPCParameters *rpcParameters) } // we send a grenade result out to the clients as it may have been a fizzer -void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, UINT8 ubOwnerID, INT32 iRealObjectID, bool bIsDud) +void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, SoldierID ubOwnerID, INT32 iRealObjectID, bool bIsDud) { ubOwnerID = MPEncodeSoldierID(ubOwnerID); // translate our soldier to the "network" version - SOLDIERTYPE* pSoldier = MercPtrs[ubOwnerID]; + SOLDIERTYPE* pSoldier = ubOwnerID; if (pSoldier != NULL) { if ((pSoldier->bTeam == 1 && is_server) || IsOurSoldier(pSoldier)) @@ -3052,7 +3050,7 @@ void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, UIN #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_grenade_result ( RealObjectID : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",gres.RealObjectID, gres.sGridNo , gres.ubOwnerID , guiPreRandomIndex ); + sprintf( tmpMPDbgString, "MP - send_grenade_result ( RealObjectID : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n", gres.RealObjectID, gres.sGridNo, gres.ubOwnerID.i, guiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -3068,7 +3066,7 @@ void recieveGRENADERESULT (RPCParameters *rpcParameters) gres->ubOwnerID = MPDecodeSoldierID(gres->ubOwnerID); - SOLDIERTYPE* pThrower = MercPtrs[ gres->ubOwnerID ]; + SOLDIERTYPE* pThrower = gres->ubOwnerID; if (pThrower != NULL) { // grenade wasnt thrown by one of our guys, so we should do it on the client @@ -3076,7 +3074,7 @@ void recieveGRENADERESULT (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveGRENADERESULT ( RealObjectID : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",gres->RealObjectID, gres->sGridNo , gres->ubOwnerID , gres->uiPreRandomIndex ); + sprintf( tmpMPDbgString, "MP - recieveGRENADERESULT ( RealObjectID : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n", gres->RealObjectID, gres->sGridNo, gres->ubOwnerID.i, gres->uiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -3122,14 +3120,14 @@ void recieveGRENADERESULT (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION char tmpMsg[128]; - sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveGRENADERESULT()",gres->ubOwnerID); + sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveGRENADERESULT()", gres->ubOwnerID.i); //ScreenMsg(FONT_RED,MSG_MPSYSTEM,tmpMsg); MPDebugMsg(tmpMsg); #endif } } -void send_plant_explosive (UINT8 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldItemIndex) +void send_plant_explosive (SoldierID ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldItemIndex) { explosive_obj exp; @@ -3148,7 +3146,7 @@ void send_plant_explosive (UINT8 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 us #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_plant_explosive ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i , uiWorldItemIndex : %i )\n",exp.usItem, exp.sGridNo , exp.ubID , guiPreRandomIndex , uiWorldItemIndex ); + sprintf(tmpMPDbgString,"MP - send_plant_explosive ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i , uiWorldItemIndex : %i )\n",exp.usItem, exp.sGridNo , exp.ubID.i , guiPreRandomIndex , uiWorldItemIndex ); MPDebugMsg(tmpMPDbgString); #endif @@ -3161,7 +3159,7 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) exp->ubID = MPDecodeSoldierID( exp->ubID ); - SOLDIERTYPE* pSoldier = MercPtrs[ exp->ubID ]; + SOLDIERTYPE* pSoldier = exp->ubID; if (pSoldier != NULL) { // explosive wasnt planted on our client, so we should do it on the client @@ -3169,7 +3167,7 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recievePLANTEXPLOSIVE ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n",exp->usItem, exp->sGridNo , exp->ubID , guiPreRandomIndex ); + sprintf( tmpMPDbgString, "MP - recievePLANTEXPLOSIVE ( usItem : %i , sGridNo : %i , ubSoldierID : %i , uiPreRandomIndex : %i )\n", exp->usItem, exp->sGridNo, exp->ubID.i, guiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); #endif @@ -3177,7 +3175,7 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) OBJECTTYPE* newObj = new OBJECTTYPE(); CreateItem( exp->usItem, exp->ubItemStatus, newObj ); INT32 iNewItemIndex; - OBJECTTYPE* pObj = AddItemToPoolAndGetIndex( exp->sGridNo, newObj, VISIBLE, exp->ubLevel, exp->usFlags,0, exp->ubID ,&iNewItemIndex); + OBJECTTYPE* pObj = AddItemToPoolAndGetIndex( exp->sGridNo, newObj, VISIBLE, exp->ubLevel, exp->usFlags,0, exp->ubID,&iNewItemIndex); // need to save Item Type metadata agaist the world item (*pObj)[0]->data.misc.ubBombOwner = exp->ubID + 2; // this is a hack the designers put into the game, storing the side as well (which isnt relevant in MP, but still have to do it) (*pObj)[0]->data.misc.usBombItem = exp->usItem; @@ -3223,18 +3221,18 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION char tmpMsg[128]; - sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recievePLANTEXPLOSIVE()",exp->ubID); + sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recievePLANTEXPLOSIVE()",exp->ubID.i); //ScreenMsg(FONT_RED,MSG_MPSYSTEM,tmpMsg); MPDebugMsg(tmpMsg); #endif } } -void send_detonate_explosive (UINT32 uiWorldIndex, UINT8 ubID) +void send_detonate_explosive (UINT32 uiWorldIndex, SoldierID ubID) { ubID = MPEncodeSoldierID(ubID); - SOLDIERTYPE* pSoldier = MercPtrs[ubID]; + SOLDIERTYPE* pSoldier = ubID; if (pSoldier != NULL) { // explosive detonated on this client, notify the other clients @@ -3298,7 +3296,7 @@ void recieveDETONATEEXPLOSIVE (RPCParameters *rpcParameters) det->ubID = MPDecodeSoldierID(det->ubID); - SOLDIERTYPE* pSoldier = MercPtrs[det->ubID]; + SOLDIERTYPE* pSoldier = det->ubID; if (pSoldier != NULL) { // if explosive detonation didnt originate from this client then its need to be performed here @@ -3306,7 +3304,7 @@ void recieveDETONATEEXPLOSIVE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveDETONATEEXPLOSIVE ( MPTeam : %i , uiWorldIndex : %i , uiPreRandomIndex : %i , ubID : %i )\n",det->ubMPTeamIndex, det->uiWorldItemIndex , det->uiPreRandomIndex , det->ubID ); + sprintf(tmpMPDbgString,"MP - recieveDETONATEEXPLOSIVE ( MPTeam : %i , uiWorldIndex : %i , uiPreRandomIndex : %i , ubID : %i )\n",det->ubMPTeamIndex, det->uiWorldItemIndex , det->uiPreRandomIndex , det->ubID.i ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -3344,11 +3342,11 @@ void recieveDETONATEEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldItem, UINT8 ubID) +void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldItem, SoldierID ubID) { ubID = MPEncodeSoldierID(ubID); - SOLDIERTYPE* pSoldier = MercPtrs[ubID]; + SOLDIERTYPE* pSoldier = ubID; if (pSoldier != NULL) { // explosive disarmed on this client, notify the other clients @@ -3411,7 +3409,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters) disarm->ubID = MPDecodeSoldierID(disarm->ubID); - SOLDIERTYPE* pSoldier = MercPtrs[disarm->ubID]; + SOLDIERTYPE* pSoldier = disarm->ubID; if (pSoldier != NULL) { // if explosive disarm didnt originate from this client then its need to be performed here @@ -3419,7 +3417,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveDISARMEXPLOSIVE ( MPTeam : %i , uiWorldItemIndex : %i , uiPreRandomIndex : %i , ubID : %i , sGridNo : %i )\n",disarm->ubMPTeamIndex, disarm->uiWorldItemIndex , disarm->uiPreRandomIndex , disarm->ubID , disarm->sGridNo ); + sprintf(tmpMPDbgString,"MP - recieveDISARMEXPLOSIVE ( MPTeam : %i , uiWorldItemIndex : %i , uiPreRandomIndex : %i , ubID : %i , sGridNo : %i )\n",disarm->ubMPTeamIndex, disarm->uiWorldItemIndex , disarm->uiPreRandomIndex , disarm->ubID.i, disarm->sGridNo ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -3440,7 +3438,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters) // print out a screen message if it was our bomb if (disarm->ubMPTeamIndex == netbTeam) { - SOLDIERTYPE * pBombOwner = MercPtrs[gWorldItems[ gWorldBombs[ uiCount ].iItemIndex ].soldierID]; + SOLDIERTYPE * pBombOwner = gWorldItems[ gWorldBombs[ uiCount ].iItemIndex ].soldierID; if (pBombOwner != NULL) { ScreenMsg( FONT_LTBLUE , MSG_MPSYSTEM , MPClientMessage[71], pBombOwner->name, pSoldier->name); @@ -3467,7 +3465,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ) +void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ) { spreadeffect_struct sef; @@ -3482,7 +3480,7 @@ void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubO #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_spreadeffect ( sGridNo : %i , ubRadius : %i , usItem : %i , ubOwner : %i , fSubsequent : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef.sGridNo, sef.ubRadius ,sef.usItem, sef.ubOwner, sef.fSubsequent, sef.bLevel, sef.iSmokeEffectID, sef.uiPreRandomIndex ); + sprintf(tmpMPDbgString,"MP - send_spreadeffect ( sGridNo : %i , ubRadius : %i , usItem : %i , ubOwner : %i , fSubsequent : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef.sGridNo, sef.ubRadius ,sef.usItem, sef.ubOwner.i, sef.fSubsequent, sef.bLevel, sef.iSmokeEffectID, sef.uiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); #endif @@ -3495,7 +3493,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) sef->ubOwner = MPDecodeSoldierID(sef->ubOwner); - SOLDIERTYPE* pSoldier = MercPtrs[sef->ubOwner]; + SOLDIERTYPE* pSoldier = sef->ubOwner; if (pSoldier != NULL) { @@ -3504,7 +3502,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveSPREADEFFECT ( sGridNo : %i , ubRadius : %i , usItem : %i , ubOwner : %i , fSubsequent : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef->sGridNo, sef->ubRadius ,sef->usItem, sef->ubOwner, sef->fSubsequent, sef->bLevel, sef->iSmokeEffectID, sef->uiPreRandomIndex ); + sprintf(tmpMPDbgString,"MP - recieveSPREADEFFECT ( sGridNo : %i , ubRadius : %i , usItem : %i , ubOwner : %i , fSubsequent : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef->sGridNo, sef->ubRadius ,sef->usItem, sef->ubOwner.i, sef->fSubsequent, sef->bLevel, sef->iSmokeEffectID, sef->uiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); #endif @@ -3520,7 +3518,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) if ( gSmokeEffectData[ uiCount ].fAllocated == TRUE && gSmokeEffectData[ uiCount ].iMPTeamIndex == pSoldier->bTeam && gSmokeEffectData[ uiCount ].iMPSmokeEffectID == sef->iSmokeEffectID) { bFound = true; - SpreadEffect( sef->sGridNo , sef->ubRadius , sef->usItem , sef->ubOwner , sef->fSubsequent , sef->bLevel , uiCount , TRUE); + SpreadEffect( sef->sGridNo, sef->ubRadius, sef->usItem, sef->ubOwner, sef->fSubsequent, sef->bLevel, uiCount, TRUE); break; } } @@ -3537,7 +3535,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) } else { - SpreadEffect( sef->sGridNo , sef->ubRadius , sef->usItem , sef->ubOwner , sef->fSubsequent , sef->bLevel , sef->iSmokeEffectID , TRUE); + SpreadEffect( sef->sGridNo, sef->ubRadius, sef->usItem, sef->ubOwner, sef->fSubsequent, sef->bLevel, sef->iSmokeEffectID, TRUE); } } } @@ -3545,14 +3543,14 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION char tmpMsg2[128]; - sprintf(tmpMsg2,"ERROR! - Invalid Soldier pointer from ubID %i in recieveSPREADEFFECT()",sef->ubOwner); + sprintf(tmpMsg2,"ERROR! - Invalid Soldier pointer from ubID %i in recieveSPREADEFFECT()",sef->ubOwner.i ); //ScreenMsg(FONT_RED,MSG_MPSYSTEM,tmpMsg); MPDebugMsg(tmpMsg2); #endif } } -void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, INT32 iSmokeEffectID) +void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, INT32 iSmokeEffectID) { // i'm reusing this struct, the parameters are essentially the same spreadeffect_struct sef; @@ -3566,7 +3564,7 @@ void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwne #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_newsmokeeffect ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef.sGridNo, sef.usItem, sef.ubOwner, sef.bLevel, sef.iSmokeEffectID, sef.uiPreRandomIndex ); + sprintf(tmpMPDbgString,"MP - send_newsmokeeffect ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef.sGridNo, sef.usItem, sef.ubOwner.i, sef.bLevel, sef.iSmokeEffectID, sef.uiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); #endif @@ -3580,7 +3578,7 @@ void recieveNEWSMOKEEFFECT (RPCParameters *rpcParameters) // translate any of our soldier ids back to the correct local copy sef->ubOwner = MPDecodeSoldierID(sef->ubOwner); - SOLDIERTYPE* pSoldier = MercPtrs[sef->ubOwner]; + SOLDIERTYPE* pSoldier = sef->ubOwner; if (pSoldier != NULL) { // new smoke effect didnt originate from us @@ -3588,14 +3586,14 @@ void recieveNEWSMOKEEFFECT (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveNEWSMOKEEFFECT ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef->sGridNo, sef->usItem, sef->ubOwner, sef->bLevel, sef->iSmokeEffectID, sef->uiPreRandomIndex ); + sprintf(tmpMPDbgString,"MP - recieveNEWSMOKEEFFECT ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i , uiPreRandomIndex : %i )\n",sef->sGridNo, sef->usItem, sef->ubOwner.i, sef->bLevel, sef->iSmokeEffectID, sef->uiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); #endif guiPreRandomIndex = sef->uiPreRandomIndex; // start new smoke effect - INT32 iNewSmokeIndex = NewSmokeEffect( sef->sGridNo , sef->usItem , sef->bLevel , sef->ubOwner , TRUE ); + INT32 iNewSmokeIndex = NewSmokeEffect( sef->sGridNo, sef->usItem, sef->bLevel, sef->ubOwner, TRUE ); // attach remote id to local smoke effect gSmokeEffectData[iNewSmokeIndex].iMPTeamIndex = pSoldier->bTeam; @@ -3606,14 +3604,14 @@ void recieveNEWSMOKEEFFECT (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION char tmpMsg[128]; - sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveNEWSMOKEEFFECT()",sef->ubOwner); + sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveNEWSMOKEEFFECT()",sef->ubOwner.i ); //ScreenMsg(FONT_RED,MSG_MPSYSTEM,tmpMsg); MPDebugMsg(tmpMsg); #endif } } -void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner ) +void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner ) { explosiondamage_struct exp; exp.ubDamageFunc = 1; @@ -3628,14 +3626,14 @@ void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sS #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_gasdamage ( ubSoldierID : %i , usExplosiveClassID : %i , sSubsequent : %i , recompileMoveCosts : %i , sWoundAmt : %i , sBreathAmt : %i , ubOwner : %i )\n", exp.ubSoldierID , usExplosiveClassID , sSubsequent , fRecompileMovementCosts , sWoundAmt , sBreathAmt , exp.ubAttackerID ); + sprintf(tmpMPDbgString, "MP - send_gasdamage ( ubSoldierID : %i , usExplosiveClassID : %i , sSubsequent : %i , recompileMoveCosts : %i , sWoundAmt : %i , sBreathAmt : %i , ubOwner : %i )\n", exp.ubSoldierID.i, usExplosiveClassID , sSubsequent , fRecompileMovementCosts , sWoundAmt , sBreathAmt , exp.ubAttackerID.i ); MPDebugMsg(tmpMPDbgString); #endif client->RPC("sendEXPLOSIONDAMAGE",(const char*)&exp, (int)sizeof(explosiondamage_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0); } -void send_explosivedamage( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ) +void send_explosivedamage( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ) { explosiondamage_struct exp; exp.ubDamageFunc = 2; @@ -3651,7 +3649,7 @@ void send_explosivedamage( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - send_explosivedamage ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i )\n",ubPerson, ubOwner , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent ); + sprintf(tmpMPDbgString, "MP - send_explosivedamage ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i )\n", ubPerson.i, ubOwner.i, sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent ); MPDebugMsg(tmpMPDbgString); #endif @@ -3666,7 +3664,7 @@ void recieveEXPLOSIONDAMAGE (RPCParameters *rpcParameters) exp->ubAttackerID = MPDecodeSoldierID(exp->ubAttackerID); - SOLDIERTYPE* pSoldier = MercPtrs[exp->ubSoldierID]; + SOLDIERTYPE* pSoldier = exp->ubSoldierID; if (pSoldier != NULL) { @@ -3675,7 +3673,7 @@ void recieveEXPLOSIONDAMAGE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"MP - recieveEXPLOSIONDAMAGE ( ubDamageFunc : %i , ubSoldierID : %i , ubAttackerID : %i , usItem : %i , usExplosiveClassID : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , sSubs : %i , sBombGridNo : %i , uiPreRandomIndex : %i )\n", exp->ubDamageFunc , exp->ubSoldierID , exp->ubAttackerID , exp->usItem , exp->usExplosiveClassID , exp->sWoundAmt , exp->sBreathAmt , exp->uiDist , exp->sSubsequent , exp->sBombGridNo , exp->uiPreRandomIndex ); + sprintf(tmpMPDbgString, "MP - recieveEXPLOSIONDAMAGE ( ubDamageFunc : %i , ubSoldierID : %i , ubAttackerID : %i , usItem : %i , usExplosiveClassID : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , sSubs : %i , sBombGridNo : %i , uiPreRandomIndex : %i )\n", exp->ubDamageFunc , exp->ubSoldierID.i, exp->ubAttackerID.i, exp->usItem , exp->usExplosiveClassID , exp->sWoundAmt , exp->sBreathAmt , exp->uiDist , exp->sSubsequent , exp->sBombGridNo , exp->uiPreRandomIndex ); MPDebugMsg(tmpMPDbgString); #endif @@ -3692,7 +3690,7 @@ void recieveEXPLOSIONDAMAGE (RPCParameters *rpcParameters) } else if (exp->ubDamageFunc == 2) { - DamageSoldierFromBlast( exp->ubSoldierID , exp->ubAttackerID , exp->sBombGridNo , exp->sWoundAmt , exp->sBreathAmt , exp->uiDist , exp->usItem , exp->sSubsequent , TRUE); + DamageSoldierFromBlast( exp->ubSoldierID, exp->ubAttackerID, exp->sBombGridNo, exp->sWoundAmt, exp->sBreathAmt, exp->uiDist, exp->usItem, exp->sSubsequent, TRUE); } } } @@ -3700,7 +3698,7 @@ void recieveEXPLOSIONDAMAGE (RPCParameters *rpcParameters) { #ifdef JA2BETAVERSION char tmpMsg[128]; - sprintf(tmpMsg,"ERROR! - Invalid Soldier pointer from ubID %i in recieveEXPLOSIONDAMAGE()",exp->ubAttackerID); + sprintf(tmpMsg, "ERROR! - Invalid Soldier pointer from ubID %i in recieveEXPLOSIONDAMAGE()", exp->ubAttackerID.i ); //ScreenMsg(FONT_RED,MSG_MPSYSTEM,tmpMsg); MPDebugMsg(tmpMsg); #endif @@ -3734,7 +3732,7 @@ void recieveBULLET(RPCParameters *rpcParameters) INT8 bTeam = OUR_TEAM; if ( netb->net_bullet.ubFirerID != NOBODY ) { - pFirer = MercPtrs[ netb->net_bullet.ubFirerID ]; + pFirer = netb->net_bullet.ubFirerID; bTeam=pFirer->bTeam; } @@ -3794,7 +3792,7 @@ void recieveSTATE(RPCParameters *rpcParameters) { EV_S_CHANGESTATE* new_state = (EV_S_CHANGESTATE*)rpcParameters->input; - SOLDIERTYPE * pSoldier=MercPtrs[ new_state->usSoldierID ]; + SOLDIERTYPE * pSoldier = new_state->usSoldierID; if(pSoldier->bActive) { @@ -3838,22 +3836,22 @@ void recieveSTATE(RPCParameters *rpcParameters) void send_death( SOLDIERTYPE *pSoldier ) { death_struct nDeath; - nDeath.soldier_id=pSoldier->ubID; - nDeath.attacker_id=pSoldier->ubAttackerID; + nDeath.soldier_id = pSoldier->ubID; + nDeath.attacker_id = pSoldier->ubAttackerID; // Translate soldier id for other clients if the soldier was one of ours if(pSoldier->ubID<20)nDeath.soldier_id=nDeath.soldier_id+ubID_prefix; // if soldier died from bleeding - if(pSoldier->ubAttackerID==NULL || pSoldier->ubAttackerID == NOBODY) + if(pSoldier->ubAttackerID >= NOBODY) { - if (pSoldier->ubPreviousAttackerID != NOBODY && pSoldier->ubPreviousAttackerID != NULL) + if (pSoldier->ubPreviousAttackerID < NOBODY) nDeath.attacker_id = pSoldier->ubPreviousAttackerID; - else if (pSoldier->ubNextToPreviousAttackerID != NOBODY && pSoldier->ubNextToPreviousAttackerID != NULL) + else if (pSoldier->ubNextToPreviousAttackerID < NOBODY) nDeath.attacker_id = pSoldier->ubNextToPreviousAttackerID; } - SOLDIERTYPE * pAttacker=MercPtrs[ nDeath.attacker_id ]; + SOLDIERTYPE * pAttacker = nDeath.attacker_id; INT8 pA_bTeam=CLIENT_NUM; CHAR16 pA_name[ 10 ]; INT8 pS_bTeam=CLIENT_NUM; @@ -3864,16 +3862,16 @@ void send_death( SOLDIERTYPE *pSoldier ) if(pAttacker) { // if attacker was one of our own mercs, use the last hostile attacker as the killer if there is one - if (pAttacker->bTeam == pSoldier->bTeam && pSoldier->ubPreviousAttackerID != NULL && pSoldier->ubPreviousAttackerID != NOBODY) + if (pAttacker->bTeam == pSoldier->bTeam && pSoldier->ubPreviousAttackerID < NOBODY) { - pAttacker=MercPtrs[ pSoldier->ubPreviousAttackerID ]; + pAttacker = pSoldier->ubPreviousAttackerID; // check if the new attacker was also a friendly... - if (pAttacker->bTeam == pSoldier->bTeam && pSoldier->ubNextToPreviousAttackerID != NULL && pSoldier->ubNextToPreviousAttackerID != NOBODY) - pAttacker=MercPtrs[ pSoldier->ubNextToPreviousAttackerID ]; + if (pAttacker->bTeam == pSoldier->bTeam && pSoldier->ubNextToPreviousAttackerID < NOBODY) + pAttacker = pSoldier->ubNextToPreviousAttackerID; // if its still a friendly, use the original attacker id...for posterity // guy must snore too loudly if all his mates wanna kill him :) - if (pAttacker->bTeam == pSoldier->bTeam && pSoldier->ubAttackerID != NULL && pSoldier->ubAttackerID != NOBODY) - pAttacker = MercPtrs[ pSoldier->ubAttackerID ]; + if (pAttacker->bTeam == pSoldier->bTeam && pSoldier->ubAttackerID != NOBODY) + pAttacker = pSoldier->ubAttackerID; nDeath.attacker_id = pAttacker->ubID; } @@ -3952,15 +3950,15 @@ void send_death( SOLDIERTYPE *pSoldier ) void recieveDEATH (RPCParameters *rpcParameters) { death_struct* nDeath = (death_struct*)rpcParameters->input; - SOLDIERTYPE * pSoldier=MercPtrs[ nDeath->soldier_id ]; + SOLDIERTYPE * pSoldier = nDeath->soldier_id; - UINT16 ubAttackerID; + SoldierID ubAttackerID; if((nDeath->attacker_id >= ubID_prefix) && (nDeath->attacker_id < (ubID_prefix+6))) ubAttackerID = (nDeath->attacker_id - ubID_prefix); else ubAttackerID = nDeath->attacker_id; - SOLDIERTYPE * pAttacker=MercPtrs[ ubAttackerID ]; + SOLDIERTYPE * pAttacker = ubAttackerID; INT8 pA_bTeam; CHAR16 pA_name[ 10 ]; INT8 pS_bTeam; @@ -4071,7 +4069,7 @@ void send_miss(EV_S_MISS * SMiss) void recievehitSTRUCT (RPCParameters *rpcParameters) { EV_S_STRUCTUREHIT* struct_hit = (EV_S_STRUCTUREHIT*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ struct_hit->ubAttackerID ]; + SOLDIERTYPE *pSoldier = struct_hit->ubAttackerID; INT8 bTeam=pSoldier->bTeam; INT32 iBullet = bTable[bTeam][struct_hit->iBullet].local_id; @@ -4094,7 +4092,7 @@ void recieveMISS (RPCParameters *rpcParameters) { EV_S_MISS* shot_miss = (EV_S_MISS*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ shot_miss->ubAttackerID ]; + SOLDIERTYPE *pSoldier = shot_miss->ubAttackerID; INT8 bTeam=pSoldier->bTeam; INT32 iBullet = bTable[bTeam][shot_miss->iBullet].local_id; @@ -4104,7 +4102,6 @@ void recieveMISS (RPCParameters *rpcParameters) BOOLEAN check_status (void)// any 'enemies' and clients left to fight ?? { SOLDIERTYPE *pSoldier; - int cnt; int soldiers= 0 ; int numActiveSides = 0; @@ -4114,9 +4111,9 @@ BOOLEAN check_status (void)// any 'enemies' and clients left to fight ?? { soldiers=0; - for(cnt = gTacticalStatus.Team[ x ].bFirstID;cnt <= gTacticalStatus.Team[ x ].bLastID; cnt++) + for( SoldierID cnt = gTacticalStatus.Team[ x ].bFirstID;cnt <= gTacticalStatus.Team[ x ].bLastID; ++cnt) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; if(pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive && pSoldier->bInSector) { soldiers++; @@ -4199,7 +4196,7 @@ BOOLEAN check_status (void)// any 'enemies' and clients left to fight ?? void UpdateSoldierToNetwork ( SOLDIERTYPE *pSoldier ) { //this send stats to other clients at intervals - UINT8 id = pSoldier->ubID; + SoldierID id = pSoldier->ubID; UINT32 time = GetJA2Clock(); if(id < 20 || (is_server && id <120)) @@ -4244,7 +4241,7 @@ void UpdateSoldierFromNetwork (RPCParameters *rpcParameters) { EV_S_UPDATENETWORKSOLDIER* SUpdateNetworkSoldier = (EV_S_UPDATENETWORKSOLDIER*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ SUpdateNetworkSoldier->usSoldierID ]; + SOLDIERTYPE *pSoldier = SUpdateNetworkSoldier->usSoldierID; pSoldier->bBreath=SUpdateNetworkSoldier->bBreath; pSoldier->stats.bLife=SUpdateNetworkSoldier->bLife; @@ -4333,14 +4330,14 @@ void null_team (RPCParameters *rpcParameters) { kickR* kick = (kickR*)rpcParameters->input; ScreenMsg( FONT_LTGREEN, MSG_INTERFACE, MPClientMessage[29],(kick->ubResult-5),client_names[kick->ubResult-6] ); - int fID = gTacticalStatus.Team[ kick->ubResult ].bFirstID; - int lID = gTacticalStatus.Team[ kick->ubResult ].bLastID; + SoldierID fID = gTacticalStatus.Team[ kick->ubResult ].bFirstID; + SoldierID lID = gTacticalStatus.Team[ kick->ubResult ].bLastID; if(kick->ubResult==netbTeam) fID=0,lID=19; - int cnt; - for ( cnt=fID ; cnt <= lID; cnt++ ) + SoldierID cnt; + for ( cnt=fID ; cnt <= lID; ++cnt ) { TacticalRemoveSoldier( cnt ); } @@ -4425,7 +4422,7 @@ void recieve_fireweapon (RPCParameters *rpcParameters) { EV_S_FIREWEAPON* SFireWeapon = (EV_S_FIREWEAPON*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ SFireWeapon->usSoldierID ]; + SOLDIERTYPE *pSoldier = SFireWeapon->usSoldierID; pSoldier->sTargetGridNo = SFireWeapon->sTargetGridNo; pSoldier->bTargetLevel = SFireWeapon->bTargetLevel; @@ -4450,7 +4447,7 @@ void recieve_door (RPCParameters *rpcParameters) { doors* sDoor = (doors*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ sDoor->ubID ]; + SOLDIERTYPE *pSoldier = sDoor->ubID; BOOLEAN fNoAnimations = FALSE; if ( !AllMercsLookForDoor( sDoor->sGridNo, FALSE ) )//check for los @@ -4511,7 +4508,7 @@ void recieveDISCONNECT(RPCParameters* rpcParameters) // kill the dead clients mercs out of the game UINT8 iNetbTeam = (cl_num)+5; - UINT8 iubID_prefix = gTacticalStatus.Team[ iNetbTeam ].bFirstID;//over here now + UINT16 iubID_prefix = gTacticalStatus.Team[ iNetbTeam ].bFirstID;//over here now // kill any alive soldiers for the disconnected team SOLDIERTYPE *pTeamSoldier; @@ -4726,14 +4723,14 @@ void recieve_heal (RPCParameters *rpcParameters) { heal* data = (heal*)rpcParameters->input; - UINT16 healed; + SoldierID healed; if((data->ubID >= ubID_prefix) && (data->ubID < (ubID_prefix+6))) healed = (data->ubID - ubID_prefix); else healed = data->ubID; - SOLDIERTYPE *pSoldier = MercPtrs[ healed ]; + SOLDIERTYPE *pSoldier = healed; pSoldier->bBleeding=data->bBleeding; pSoldier->stats.bLife=data->bLife; @@ -4759,7 +4756,7 @@ void awardINT (RPCParameters *rpcParameters) { AIint* data= (AIint*)rpcParameters->input; - SOLDIERTYPE *pSoldier = MercPtrs[ data->ubID ]; + SOLDIERTYPE *pSoldier = data->ubID; StartInterrupt(); diff --git a/Multiplayer/connect.h b/Multiplayer/connect.h index d216fb30..dd85e9d8 100644 --- a/Multiplayer/connect.h +++ b/Multiplayer/connect.h @@ -37,7 +37,7 @@ extern UINT8 cGameType; extern bool allowlaptop; extern UINT8 netbTeam; -extern UINT8 ubID_prefix; +extern UINT16 ubID_prefix; extern FLOAT cDamageMultiplier; //OJW - 20081218 @@ -97,34 +97,34 @@ void send_dir ( SOLDIERTYPE *pSoldier, UINT16 usDesiredDirection ); void send_fire( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ); void send_hit( EV_S_WEAPONHIT *SWeaponHit ); void send_bullet( BULLET * pBullet, UINT16 usHandItem); -void send_hire( UINT8 iNewIndex, UINT8 ubCurrentSoldier, INT16 iTotalContractLength, BOOLEAN fCopyProfileItemsOver); -void send_dismiss( UINT8 ubCurrentSoldier); +void send_hire( SoldierID iNewIndex, UINT8 ubCurrentSoldier, INT16 iTotalContractLength, BOOLEAN fCopyProfileItemsOver); +void send_dismiss( UINT16 ubCurrentSoldierID); void send_gui_pos(SOLDIERTYPE *pSoldier, FLOAT dNewXPos, FLOAT dNewYPos); void send_gui_dir(SOLDIERTYPE *pSoldier, UINT16 usNewDirection); void send_EndTurn( UINT8 ubNextTeam ); -void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ); +void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct ); void send_stop (EV_S_STOP_MERC *SStopMerc); void send_interrupt(SOLDIERTYPE *pSoldier); // OJW - 20091002 - explosives -void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, UINT8 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID , bool bIsThrownGrenade); -void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, UINT8 ubOwnerID, INT32 iRealObjectID, bool bIsDud); -void send_plant_explosive (UINT8 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldIndex); -void send_detonate_explosive (UINT32 uiWorldIndex, UINT8 ubID); -void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ); -void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, INT32 iSmokeEffectID); -void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID , INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner ); -void send_explosivedamage( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ); -void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, UINT8 ubID); +void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade); +void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, SoldierID ubOwnerID, INT32 iRealObjectID, bool bIsDud); +void send_plant_explosive ( SoldierID ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldIndex); +void send_detonate_explosive (UINT32 uiWorldIndex, SoldierID ubID); +void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ); +void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, INT32 iSmokeEffectID); +void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner ); +void send_explosivedamage( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ); +void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, SoldierID ubID); void OpenChatMsgBox(void); -INT8 FireBullet( UINT8 ubFirer, BULLET * pBullet, BOOLEAN fFake ); +INT8 FireBullet( SoldierID ubFirer, BULLET * pBullet, BOOLEAN fFake ); void reapplySETTINGS(); @@ -212,7 +212,7 @@ extern BOOLEAN fClientReceivedAllFiles; // sick of confusing myself :) // this one should be called before passing an ID off the client -inline UINT8 MPEncodeSoldierID( UINT8 ubID ) +inline SoldierID MPEncodeSoldierID( SoldierID ubID ) { if ( ubID < 20 ) return ubID + ubID_prefix; // soldier is ours @@ -221,7 +221,7 @@ inline UINT8 MPEncodeSoldierID( UINT8 ubID ) } // this one can be called anywhere, even if the ID was not "encoded" -inline UINT8 MPDecodeSoldierID( UINT8 ubID ) +inline SoldierID MPDecodeSoldierID( SoldierID ubID ) { if ( ubID >= ubID_prefix && ubID < (ubID_prefix + 7) ) return ubID - ubID_prefix; // soldier is ours @@ -234,7 +234,7 @@ inline bool IsOurSoldier (SOLDIERTYPE* pSoldier) return pSoldier->bTeam == netbTeam || pSoldier->bTeam == 0; } -inline bool IsOurSoldier (UINT8 ubID) +inline bool IsOurSoldier (UINT16 ubID) { return (ubID >= ubID_prefix && ubID < (ubID_prefix + 7)) || ubID < 20; } diff --git a/Multiplayer/fresh_header.h b/Multiplayer/fresh_header.h index 403793df..913bb035 100644 --- a/Multiplayer/fresh_header.h +++ b/Multiplayer/fresh_header.h @@ -5,29 +5,29 @@ extern int readyteamreg[10]; typedef struct { - UINT16 soldier_id; - UINT16 attacker_id; + SoldierID soldier_id; + SoldierID attacker_id; UINT8 attacker_team; UINT8 soldier_team; }death_struct; typedef struct { - UINT16 ubID; + SoldierID ubID; INT32 sGridNo; BOOLEAN fNoAnimations; }doors; typedef struct { - UINT16 ubID; + SoldierID ubID; INT8 bLife; INT8 bBleeding; }heal; typedef struct { - UINT16 ubID; + SoldierID ubID; INT8 bteam; }AIint; @@ -62,7 +62,7 @@ void startCombat(UINT8 ubStartingTeam); void intAI (SOLDIERTYPE *pSoldier ); void teamwiped (void); BOOLEAN check_status (void); -extern UINT8 NumEnemyInSector( ); -extern INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); +extern UINT16 NumEnemyInSector( ); +extern UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); void send_heal (SOLDIERTYPE *pSoldier ); -void requestAIint(SOLDIERTYPE *pSoldier ); +void requestAIint(SOLDIERTYPE *pSoldier ); diff --git a/Multiplayer/server.cpp b/Multiplayer/server.cpp index 7c932b04..627165eb 100644 --- a/Multiplayer/server.cpp +++ b/Multiplayer/server.cpp @@ -227,7 +227,7 @@ void sendHIT(RPCParameters *rpcParameters) { EV_S_WEAPONHIT* hit = (EV_S_WEAPONHIT*)rpcParameters->input; - int team = MercPtrs[ hit->ubAttackerID ]->bTeam; + int team = hit->ubAttackerID->bTeam; // AI if (team == 1) @@ -365,7 +365,7 @@ void sendDEATH(RPCParameters *rpcParameters) _itow(iCLnum,clnum,10); ScreenMsg( FONT_LTBLUE, MSG_MPSYSTEM, L"DEBUG: Soldier Killed : Attacking team %s , Soldier Team %s, Sender %s",ateam,steam,clnum); char logmsg[100]; - sprintf(logmsg, "MP DEBUG: Soldier Killed #%i : Attacking team %i , Soldier Team %i, Sender %i\n",nDeath->soldier_id,nDeath->attacker_team,nDeath->soldier_team,iCLnum); + sprintf( logmsg, "MP DEBUG: Soldier Killed #%i : Attacking team %i , Soldier Team %i, Sender %i\n", nDeath->soldier_id.i, nDeath->attacker_team, nDeath->soldier_team, iCLnum ); MPDebugMsg( logmsg ); #endif } @@ -373,10 +373,9 @@ void sendhitSTRUCT(RPCParameters *rpcParameters) { EV_S_STRUCTUREHIT* miss = (EV_S_STRUCTUREHIT*)rpcParameters->input; - SOLDIERTYPE* pAttacker = MercPtrs[ miss->ubAttackerID ]; - if (pAttacker != NULL) + if ( miss->ubAttackerID != NOBODY) { - int team = MercPtrs[ miss->ubAttackerID ]->bTeam; + int team = miss->ubAttackerID->bTeam; // AI if (team == 1) @@ -398,10 +397,9 @@ void sendhitWINDOW(RPCParameters *rpcParameters) EV_S_WINDOWHIT* miss = (EV_S_WINDOWHIT*)rpcParameters->input; - SOLDIERTYPE* pAttacker = MercPtrs[ miss->ubAttackerID ]; - if (pAttacker != NULL) + if ( miss->ubAttackerID != NOBODY) { - int team = MercPtrs[ miss->ubAttackerID ]->bTeam; + int team = miss->ubAttackerID->bTeam; // AI if (team == 1) @@ -422,10 +420,9 @@ void sendMISS(RPCParameters *rpcParameters) { EV_S_MISS* miss = (EV_S_MISS*)rpcParameters->input; - SOLDIERTYPE* pAttacker = MercPtrs[ miss->ubAttackerID ]; - if (pAttacker != NULL) + if ( miss->ubAttackerID != NOBODY) { - int team = MercPtrs[ miss->ubAttackerID ]->bTeam; + int team = miss->ubAttackerID->bTeam; // AI if (team == 1) diff --git a/Strategic/AI Viewer.cpp b/Strategic/AI Viewer.cpp index f7a4e5fe..75d3eccc 100644 --- a/Strategic/AI Viewer.cpp +++ b/Strategic/AI Viewer.cpp @@ -157,7 +157,7 @@ void ViewCreaturesCallback( GUI_BUTTON *btn, INT32 reason ); void ExtractAndUpdatePopulations(); void PrintEnemyPopTable(); void PrintEnemiesKilledTable(); -UINT8 ChooseEnemyIconColor( UINT8 ubAdmins, UINT8 ubTroops, UINT8 ubElites, UINT8 ubTanks, UINT8 ubJeeps ); +UINT8 ChooseEnemyIconColor( UINT16 ubAdmins, UINT16 ubTroops, UINT16 ubElites, UINT16 ubTanks, UINT16 ubJeeps ); void BlitGroupIcon( UINT8 ubIconType, UINT8 ubIconColor, UINT32 uiX, UINT32 uiY, HVOBJECT hVObject ); void PrintDetailedEnemiesInSectorInfo( INT32 iScreenX, INT32 iScreenY, UINT8 ubSectorX, UINT8 ubSectorY ); @@ -536,7 +536,7 @@ void RenderMovingGroupsAndMercs() GROUP *pGroup; HVOBJECT hVObject; INT32 x, y; - UINT8 ubNumTroops, ubNumAdmins, ubNumElites, ubNumTanks, ubNumJeeps; + UINT16 ubNumTroops, ubNumAdmins, ubNumElites, ubNumTanks, ubNumJeeps; float ratio; INT32 minX, maxX, minY, maxY; UINT8 ubIconType; @@ -648,8 +648,8 @@ void RenderMovingGroupsAndMercs() void RenderInfoInSector() { UINT8 ubSectorX, ubSectorY; - UINT8 ubMercs=0, ubActive=0, ubUnconcious=0, ubCollapsed=0; - INT32 i, xp, yp; + UINT16 ubMercs=0, ubActive=0, ubUnconcious=0, ubCollapsed=0; + INT32 xp, yp; if( gfViewEnemies && !gbViewLevel ) { @@ -694,11 +694,10 @@ void RenderInfoInSector() //Count the number of mercs and their states (even for underground sectors) - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { - SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pSoldier = id; - pSoldier = MercPtrs[ i ]; if( pSoldier->bActive && pSoldier->sSectorX == ubSectorX && pSoldier->sSectorY == ubSectorY && pSoldier->bSectorZ == gbViewLevel ) { if( pSoldier->stats.bLife ) @@ -722,7 +721,7 @@ void RenderInfoInSector() { SECTORINFO *pSector; GROUP *pGroup; - UINT8 ubNumAdmins = 0, ubNumTroops = 0, ubNumElites = 0, ubNumTanks = 0, ubNumJeeps = 0, ubAdminsInBattle = 0, ubTroopsInBattle = 0, ubElitesInBattle = 0, ubTanksInBattle = 0, ubJeepsInBattle = 0,ubNumGroups = 0; + UINT16 ubNumAdmins = 0, ubNumTroops = 0, ubNumElites = 0, ubNumTanks = 0, ubNumJeeps = 0, ubAdminsInBattle = 0, ubTroopsInBattle = 0, ubElitesInBattle = 0, ubTanksInBattle = 0, ubJeepsInBattle = 0,ubNumGroups = 0; pSector = &SectorInfo[ SECTOR( ubSectorX, ubSectorY ) ]; @@ -1832,7 +1831,7 @@ void PrintEnemiesKilledTable() -UINT8 ChooseEnemyIconColor( UINT8 ubAdmins, UINT8 ubTroops, UINT8 ubElites, UINT8 ubTanks, UINT8 ubJeeps ) +UINT8 ChooseEnemyIconColor( UINT16 ubAdmins, UINT16 ubTroops, UINT16 ubElites, UINT16 ubTanks, UINT16 ubJeeps ) { UINT8 ubIconColor; diff --git a/Strategic/ASD.cpp b/Strategic/ASD.cpp index bc42caa6..f461cb80 100644 --- a/Strategic/ASD.cpp +++ b/Strategic/ASD.cpp @@ -1091,7 +1091,7 @@ void EnemyHeliSAMCheck( INT16 id ) // also check whether this sector is not enemy-controlled - we can't have the AI shooting at its own helis if ( pSAMStrategicMap && !pSAMStrategicMap->fEnemyControlled ) { - UINT16 ubBestSAMOperatorID = NOBODY; + SoldierID ubBestSAMOperatorID = NOBODY; FLOAT samcth = GetBestSAMOperatorCTH_Player( gpSamSectorX[i], gpSamSectorY[i], 0, &ubBestSAMOperatorID ); // cth is reduced if SAM is damaged, even if it can still operate @@ -1142,9 +1142,9 @@ void EnemyHeliSAMCheck( INT16 id ) if ( ubBestSAMOperatorID != NOBODY ) { if ( fHit ) - StatChange( MercPtrs[ubBestSAMOperatorID], EXPERAMT, fDestroyed ? 30 : 10, TRUE ); + StatChange( ubBestSAMOperatorID, EXPERAMT, fDestroyed ? 30 : 10, TRUE ); - StatChange( MercPtrs[ubBestSAMOperatorID], MECHANAMT, 5, TRUE ); + StatChange( ubBestSAMOperatorID, MECHANAMT, 5, TRUE ); } } } diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 63eab1f4..cdc85701 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -292,7 +292,7 @@ extern BOOLEAN fInMapMode; INT8 gbTrainingMode = -1; // who is the highlighted guy -extern UINT16 gusUIFullTargetID; +extern SoldierID gusUIFullTargetID; // showing town info? extern BOOLEAN fShowTownInfo; @@ -560,8 +560,6 @@ void HandleShadingOfLinesForSnitchSectorMenu( void ); // Flugente: prisoner menu void HandleShadingOfLinesForPrisonerMenu( void ); -// post message about contract -void PostContractMessage( SOLDIERTYPE *pCharacter, INT32 iContract ); BOOLEAN DisplayVehicleMenu( SOLDIERTYPE *pSoldier ); BOOLEAN DisplayRepairMenu( SOLDIERTYPE *pSoldier ); @@ -634,7 +632,7 @@ BOOLEAN ValidTrainingPartnerInSameSectorOnAssignmentFound( SOLDIERTYPE *pSoldier extern void AddSectorForSoldierToListOfSectorsThatCompletedMilitiaTraining( SOLDIERTYPE *pSoldier ); -extern BOOLEAN CanChangeSleepStatusForCharSlot( INT8 bCharNumber ); +extern BOOLEAN CanChangeSleepStatusForCharSlot( INT16 bCharNumber ); // only 2 trainers are allowed per sector, so this function counts the # in a guy's sector // HEADROCK HAM 3.6: Now takes an extra argument for Militia Type @@ -1225,16 +1223,16 @@ BOOLEAN IsAnythingAroundForSoldierToClean( SOLDIERTYPE * pSoldier ) } // now the other merc's stuff - for(UINT8 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) + for(SoldierID teamMember = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamMember <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamMember) { // Ignore self, mercs in other sectors, etc. - if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, MercPtrs[teamIndex])) + if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, teamMember)) { // Iterate over all pocket slots and add items in need of repair for (UINT8 pocketIndex = HANDPOS; pocketIndex < NUM_INV_SLOTS; ++pocketIndex) { - const OBJECTTYPE* pObj = &(const_cast(MercPtrs[teamIndex])->inv[pocketIndex]); + const OBJECTTYPE* pObj = &(const_cast(MercPtrs[teamMember])->inv[pocketIndex]); if(pObj == NULL || pObj->ubNumberOfObjects == NOTHING || pObj->usItem == NOTHING) continue; @@ -1289,7 +1287,6 @@ BOOLEAN DoesCharacterHaveAnyItemsToRepair( SOLDIERTYPE *pSoldier, INT8 bHighestP { INT8 bPocket; UINT8 ubItemsInPocket, ubObjectInPocketCounter; - INT8 bLoop; OBJECTTYPE * pObj; UINT8 ubPassType; @@ -1340,18 +1337,16 @@ BOOLEAN DoesCharacterHaveAnyItemsToRepair( SOLDIERTYPE *pSoldier, INT8 bHighestP if ( bHighestPass != - 1 ) { // now look for items to repair on other mercs - for( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) + for( SoldierID OtherSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; OtherSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++OtherSoldier ) { - SOLDIERTYPE* pOtherSoldier = MercPtrs[ bLoop ]; - - if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) ) + if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, OtherSoldier ) ) { // okay, seems like a candidate! Check if he has anything that needs unjamming or repairs // CHRISL: Changed to dynamically determine max inventory locations. for ( bPocket = HANDPOS; bPocket < NUM_INV_SLOTS; ++bPocket ) { // the object a weapon? and jammed? - if ( ( Item[ pOtherSoldier->inv[ bPocket ].usItem ].usItemClass == IC_GUN ) && ( pOtherSoldier->inv[ bPocket ][0]->data.gun.bGunAmmoStatus < 0 ) ) + if ( ( Item[ OtherSoldier->inv[ bPocket ].usItem ].usItemClass == IC_GUN ) && ( OtherSoldier->inv[ bPocket ][0]->data.gun.bGunAmmoStatus < 0 ) ) { return( TRUE ); } @@ -1359,7 +1354,7 @@ BOOLEAN DoesCharacterHaveAnyItemsToRepair( SOLDIERTYPE *pSoldier, INT8 bHighestP // repair everyone's hands and armor slots first, then headgear, and pockets last for ( ubPassType = REPAIR_HANDS_AND_ARMOR; ubPassType <= ( UINT8 ) bHighestPass; ubPassType++ ) { - if (FindRepairableItemOnOtherSoldier( pSoldier, pOtherSoldier, ubPassType )) { + if (FindRepairableItemOnOtherSoldier( pSoldier, OtherSoldier, ubPassType )) { return( TRUE ); } } @@ -2057,17 +2052,16 @@ BOOLEAN DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( SOLDIERTYPE *pSol INT8 CountMilitiaTrainersInSoldiersSector( SOLDIERTYPE * pSoldier, UINT8 ubMilitiaType ) { - INT8 bCount = 0; + INT8 bCount = 0; AssertNotNIL(pSoldier); - for ( UINT8 bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) + for ( SoldierID OtherSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; OtherSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++OtherSoldier ) { - SOLDIERTYPE* pOtherSoldier = MercPtrs[ bLoop ]; - if ( pSoldier != pOtherSoldier && pOtherSoldier->bActive && pOtherSoldier->stats.bLife >= OKLIFE && pOtherSoldier->sSectorX == pSoldier->sSectorX && pOtherSoldier->sSectorY == pSoldier->sSectorY && pSoldier->bSectorZ == pOtherSoldier->bSectorZ ) + if ( pSoldier != OtherSoldier && OtherSoldier->bActive && OtherSoldier->stats.bLife >= OKLIFE && OtherSoldier->sSectorX == pSoldier->sSectorX && OtherSoldier->sSectorY == pSoldier->sSectorY && pSoldier->bSectorZ == OtherSoldier->bSectorZ ) { // Count depends on Militia Type requested - if (ubMilitiaType == TOWN_MILITIA && pOtherSoldier->bAssignment == TRAIN_TOWN ) + if (ubMilitiaType == TOWN_MILITIA && OtherSoldier->bAssignment == TRAIN_TOWN ) { ++bCount; } @@ -3109,7 +3103,7 @@ void VerifyTownTrainingIsPaidFor( void ) continue; } - pSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if( pSoldier->bActive && ( pSoldier->bAssignment == TRAIN_TOWN ) ) { @@ -3641,15 +3635,13 @@ UINT32 CalculateAllGuardsValueInPrison( INT16 sMapX, INT16 sMapY, INT8 bZ ) UINT32 prisonguardvalue = 0; // count any mercs found here, and sum up their guard values - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID Soldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + for ( ; Soldier <= lastid; ++Soldier) { - if( pSoldier->bActive && ( pSoldier->sSectorX == sMapX ) && ( pSoldier->sSectorY == sMapY ) && ( pSoldier->bSectorZ == bZ) ) + if( Soldier->bActive && ( Soldier->sSectorX == sMapX ) && ( Soldier->sSectorY == sMapY ) && ( Soldier->bSectorZ == bZ) ) { - prisonguardvalue += CalculatePrisonGuardValue(pSoldier ); + prisonguardvalue += CalculatePrisonGuardValue( Soldier ); } } @@ -3664,15 +3656,13 @@ UINT32 CalculateAllSnitchesGuardValueInPrison( INT16 sMapX, INT16 sMapY, INT8 bZ UINT32 prisonguardvalue = 0; // count any mercs found here, and sum up their guard values - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID Soldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + for ( ; Soldier <= lastid; ++Soldier) { - if( pSoldier->bActive && ( pSoldier->sSectorX == sMapX ) && ( pSoldier->sSectorY == sMapY ) && ( pSoldier->bSectorZ == bZ) && pSoldier->flags.fMercAsleep == FALSE ) + if( Soldier->bActive && ( Soldier->sSectorX == sMapX ) && ( Soldier->sSectorY == sMapY ) && ( Soldier->bSectorZ == bZ) && Soldier->flags.fMercAsleep == FALSE ) { - prisonguardvalue += CalculateSnitchGuardValue(pSoldier ); + prisonguardvalue += CalculateSnitchGuardValue(Soldier ); } } @@ -3687,16 +3677,14 @@ UINT32 CalculateAllGuardsNumberInPrison( INT16 sMapX, INT16 sMapY, INT8 bZ ) UINT8 numprisonguards = 0; // count any mercs found here - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID Soldier = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; Soldier <= lastid; ++Soldier) { - if( pSoldier->bActive && ( pSoldier->sSectorX == sMapX ) && ( pSoldier->sSectorY == sMapY ) && ( pSoldier->bSectorZ == bZ) && pSoldier->flags.fMercAsleep == FALSE ) + if( Soldier->bActive && ( Soldier->sSectorX == sMapX ) && ( Soldier->sSectorY == sMapY ) && ( Soldier->bSectorZ == bZ) && Soldier->flags.fMercAsleep == FALSE ) { // anv: undercover snitches don't count as guards as they don't guard in traditional sense - if ( !(pSoldier->bAssignment == FACILITY_PRISON_SNITCH) ) + if ( !(Soldier->bAssignment == FACILITY_PRISON_SNITCH) ) ++numprisonguards; } } @@ -3779,7 +3767,7 @@ UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPt } // Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present -FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID ) +FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, SoldierID *pubID ) { // if nobody is here, nobody can fire FLOAT bestsamcth = 0.0f; @@ -5486,12 +5474,12 @@ void HandleRepairBySoldier( SOLDIERTYPE *pSoldier ) // first our own stuff CollectCleanableItems(pSoldier, pSoldier, itemsToClean); // then other mercs' stuff - for(UINT8 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) + for(SoldierID teamMember = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamMember <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamMember) { // Ignore self, mercs in other sectors, etc. - if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, MercPtrs[teamIndex])) + if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, teamMember)) // silversurfer: This function now needs the guy that does the repairs and the one that owns the stuff. - CollectCleanableItems(pSoldier, MercPtrs[teamIndex], itemsToClean); + CollectCleanableItems(pSoldier, teamMember, itemsToClean); } while (!itemsToClean.empty() && ubCleaningPtsLeft > 0) @@ -5531,12 +5519,12 @@ void HandleRepairBySoldier( SOLDIERTYPE *pSoldier ) // silversurfer: Looks strange? It's not. This function now needs the guy that does the repairs and the one that owns the stuff. CollectRepairableItems(pSoldier, pSoldier, itemsToFix); - for(UINT8 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) + for(SoldierID teamMember = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamMember <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamMember) { // Ignore self, mercs in other sectors, etc. - if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, MercPtrs[teamIndex])) + if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, teamMember)) // silversurfer: This function now needs the guy that does the repairs and the one that owns the stuff. - CollectRepairableItems(pSoldier, MercPtrs[teamIndex], itemsToFix); + CollectRepairableItems(pSoldier, teamMember, itemsToFix); } // Step through items, starting with the highest priority item @@ -6711,17 +6699,15 @@ void HandleStrategicDiseaseAndBurial() // Flugente: handle militia command void HandleMilitiaCommand() { - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID soldier = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; soldier <= lastid; ++soldier) { - if( pSoldier && pSoldier->bAssignment == FACILITY_STRATEGIC_MILITIA_MOVEMENT && pSoldier->flags.fMercAsleep == FALSE ) + if( soldier->bAssignment == FACILITY_STRATEGIC_MILITIA_MOVEMENT && soldier->flags.fMercAsleep == FALSE ) { // every commander gets a bit of leadership and wisdom - StatChange( pSoldier, LDRAMT, 2, TRUE ); - StatChange( pSoldier, WISDOMAMT, 1, TRUE ); + StatChange( soldier, LDRAMT, 2, TRUE ); + StatChange( soldier, WISDOMAMT, 1, TRUE ); } } } @@ -6744,12 +6730,11 @@ void HandleSpyAssignments() std::vector vector_uncoveredmercs; FLOAT intelgained = 0.0f; - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id) { + SOLDIERTYPE *pSoldier = id; if ( pSoldier ) { if ( SPY_LOCATION( pSoldier->bAssignment ) ) @@ -6784,7 +6769,7 @@ void HandleSpyAssignments() { // if we are already in hiding, we will be uncovered if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] > 10 ) - vector_uncoveredmercs.push_back( uiCnt ); + vector_uncoveredmercs.push_back( id ); // we get a penalty, and a chance to be uncovered pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] += 20 + Random( 30 ); @@ -6848,16 +6833,14 @@ struct admintmpstruct UINT16 GetNumberofAdministratableMercs( INT16 sX, INT16 sY ) { UINT16 num = 0; - UINT8 townid_origin = GetTownIdForSector( sX, sY ); - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - if ( pSoldier + SOLDIERTYPE *pSoldier = id; + if ( pSoldier && !pSoldier->flags.fMercAsleep && !pSoldier->bSectorZ && EnoughTimeOnAssignment( pSoldier ) @@ -6890,12 +6873,11 @@ FLOAT GetAdministrationPercentage( INT16 sX, INT16 sY ) data.townid = GetTownIdForSector( sX, sY ); // loop over all soldiers with this assignment, determine percentage applied, determine how much of total that is, award exp points - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pSoldier = id; if ( pSoldier && pSoldier->bAssignment == ADMINISTRATION && !pSoldier->flags.fMercAsleep && EnoughTimeOnAssignment( pSoldier ) ) { // sum up the points for towns, if not a town, for sectors @@ -6921,12 +6903,11 @@ void HandleAdministrationAssignments() std::vector helpervec; // loop over all soldiers with this assignment, determine percentage applied, determine how much of total that is, award exp points - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pSoldier = id; if ( pSoldier && pSoldier->bAssignment == ADMINISTRATION && !pSoldier->flags.fMercAsleep && EnoughTimeOnAssignment( pSoldier ) ) { // sum up the points for towns, if not a town, for sectors @@ -6970,8 +6951,10 @@ void HandleAdministrationAssignments() } } - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pSoldier = id; if ( pSoldier && pSoldier->bAssignment == ADMINISTRATION && !pSoldier->flags.fMercAsleep && EnoughTimeOnAssignment( pSoldier ) ) { UINT8 sector = SECTOR( pSoldier->sSectorX, pSoldier->sSectorY ); @@ -7013,12 +6996,11 @@ void HandleAdministrationAssignments() // Flugente: handle exploration assignments void HandleExplorationAssignments() { - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pSoldier = id; if ( pSoldier && pSoldier->bAssignment == EXPLORATION && !pSoldier->flags.fMercAsleep && EnoughTimeOnAssignment( pSoldier ) ) { UINT32 pts = pSoldier->GetExplorationPoints(); @@ -7102,13 +7084,13 @@ void HandleExplorationAssignments() void HandleMiniEventAssignments() { - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - const UINT32 firstid = gTacticalStatus.Team[gbPlayerNum].bFirstID; - const UINT32 lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pSoldier = id; + if ( pSoldier && pSoldier->bAssignment == ASSIGNMENT_MINIEVENT && EnoughTimeOnAssignment( pSoldier ) ) { if (--pSoldier->ubHoursRemainingOnMiniEvent == 0) @@ -8805,12 +8787,11 @@ void HandleEquipmentMove( INT16 sMapX, INT16 sMapY, INT8 bZ ) if ( (gWorldSectorX == sMapX) && (gWorldSectorY == sMapY) && (gbWorldSectorZ == bZ) ) sDropOffGridNo = gMapInformation.sCenterGridNo; - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pSoldier = id; if( pSoldier->bActive && ( pSoldier->sSectorX == sMapX ) && ( pSoldier->sSectorY == sMapY ) && ( pSoldier->bSectorZ == bZ) && pSoldier->flags.fMercAsleep == FALSE ) { if( ( pSoldier->bAssignment == MOVE_EQUIPMENT ) && ( EnoughTimeOnAssignment( pSoldier ) ) ) @@ -9051,8 +9032,11 @@ void HandleEquipmentMove( INT16 sMapX, INT16 sMapY, INT8 bZ ) // award a bit of experience to the movers UINT16 itemsperperson = moveditems / pair.first; UINT16 weightperperson = movedweight / pair.first; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= lastid; ++id) { + SOLDIERTYPE *pSoldier = id; if( pSoldier->bActive && ( pSoldier->sSectorX == sMapX ) && ( pSoldier->sSectorY == sMapY ) && ( pSoldier->bSectorZ == bZ) && pSoldier->flags.fMercAsleep == FALSE ) { if( ( pSoldier->bAssignment == MOVE_EQUIPMENT ) && ( EnoughTimeOnAssignment( pSoldier ) ) ) @@ -9077,12 +9061,11 @@ void HandleTrainWorkers() { INT32 totalworkersadded = 0; - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; id <= lastid; ++id) { + SOLDIERTYPE *pSoldier = id; if( pSoldier->bActive && !pSoldier->bSectorZ && !pSoldier->flags.fMercAsleep ) { if( ( pSoldier->bAssignment == TRAIN_WORKERS ) && ( EnoughTimeOnAssignment( pSoldier ) ) ) @@ -9510,13 +9493,13 @@ void HandleHealingByNaturalCauses( SOLDIERTYPE *pSoldier ) // SANDRO - experimental - increase health regeneration of soldiers when doctors are around if ( gGameOptions.fNewTraitSystem ) { - SOLDIERTYPE * pMedic = NULL; - UINT8 cnt; UINT16 bRegenerationBonus = 0; - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pMedic = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt, pMedic++) + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; id <= lastid; ++id ) { + SOLDIERTYPE *pMedic = id; if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) ) { continue; // NEXT!!! @@ -9646,7 +9629,8 @@ void CreateDestroyMouseRegionsForAssignmentMenu( void ) return; } - if( ( Menptr[gCharactersList[bSelectedAssignChar].usSolID].stats.bLife == 0 ) || ( Menptr[gCharactersList[bSelectedAssignChar].usSolID].bAssignment == ASSIGNMENT_POW ) ) + + if( ( gCharactersList[bSelectedAssignChar].usSolID->stats.bLife == 0 ) || ( gCharactersList[bSelectedAssignChar].usSolID->bAssignment == ASSIGNMENT_POW ) ) { // dead guy handle menu stuff fShowRemoveMenu = fShowAssignmentMenu | fShowContractMenu; @@ -11117,7 +11101,7 @@ void DetermineWhichAssignmentMenusCanBeShown( void ) CreateDestroyMouseRegionForFacilityMenu(); CreateDestroyMouseRegionsForFacilityAssignmentMenu(); - if( ( ( Menptr[gCharactersList[ bSelectedInfoChar ].usSolID].stats.bLife == 0 )||( Menptr[gCharactersList[bSelectedInfoChar].usSolID].bAssignment == ASSIGNMENT_POW ) ) && ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) ) + if( ( ( gCharactersList[ bSelectedInfoChar ].usSolID->stats.bLife == 0 )||( gCharactersList[bSelectedInfoChar].usSolID->bAssignment == ASSIGNMENT_POW ) ) && ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) ) { // show basic assignment menu ShowBox( ghRemoveMercAssignBox ); @@ -11599,7 +11583,7 @@ void CreateDestroyMouseRegionsForContractMenu( void ) return; } - if( Menptr[gCharactersList[bSelectedContractChar].usSolID].stats.bLife == 0 ) + if( gCharactersList[bSelectedContractChar].usSolID->stats.bLife == 0 ) { // dead guy handle menu stuff @@ -12828,7 +12812,7 @@ void ContractMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) { - pSoldier = &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; } else { @@ -12880,40 +12864,69 @@ void ContractMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) switch( iValue ) { - case( CONTRACT_MENU_DAY ): - MercContractHandling( pSoldier, CONTRACT_EXTEND_1_DAY ); - PostContractMessage( pSoldier, CONTRACT_EXTEND_1_DAY ); + case( CONTRACT_MENU_DAY ): + if (gSelectedSoldiers.size() > 0) + { + for (size_t i=0; i < gSelectedSoldiers.size(); ++i) + { + pSoldier = gSelectedSoldiers[i]; + MercContractHandling(pSoldier, CONTRACT_EXTEND_1_DAY); + } + } + else + { + MercContractHandling( pSoldier, CONTRACT_EXTEND_1_DAY ); + } fOkToClose = TRUE; break; case( CONTRACT_MENU_WEEK ): - MercContractHandling( pSoldier, CONTRACT_EXTEND_1_WEEK ); - PostContractMessage( pSoldier, CONTRACT_EXTEND_1_WEEK ); + if (gSelectedSoldiers.size() > 0) + { + for (size_t i = 0; i < gSelectedSoldiers.size(); ++i) + { + pSoldier = gSelectedSoldiers[i]; + MercContractHandling(pSoldier, CONTRACT_EXTEND_1_WEEK); + } + } + else + { + MercContractHandling(pSoldier, CONTRACT_EXTEND_1_WEEK); + } fOkToClose = TRUE; break; case( CONTRACT_MENU_TWO_WEEKS ): - MercContractHandling( pSoldier, CONTRACT_EXTEND_2_WEEK ); - PostContractMessage( pSoldier, CONTRACT_EXTEND_2_WEEK ); + if (gSelectedSoldiers.size() > 0) + { + for (size_t i = 0; i < gSelectedSoldiers.size(); ++i) + { + pSoldier = gSelectedSoldiers[i]; + MercContractHandling(pSoldier, CONTRACT_EXTEND_2_WEEK); + } + } + else + { + MercContractHandling(pSoldier, CONTRACT_EXTEND_2_WEEK); + } fOkToClose = TRUE; break; case( CONTRACT_MENU_TERMINATE ): - gpDismissSoldier = pSoldier; + gpDismissSoldier = pSoldier; - // If in the renewal sequence.. do right away... - // else put up requester. - if ( gfInContractMenuFromRenewSequence ) - { - MercDismissConfirmCallBack( MSG_BOX_RETURN_YES ); - } - else - { - // The game should be unpaused when this message box disappears - UnPauseGame(); - DoMapMessageBox( MSG_BOX_BASIC_STYLE, gzLateLocalizedString[ 48 ], MAP_SCREEN, MSG_BOX_FLAG_YESNO, MercDismissConfirmCallBack ); - } - - fOkToClose = TRUE; + // If in the renewal sequence.. do right away... + // else put up requester. + if ( gfInContractMenuFromRenewSequence ) + { + MercDismissConfirmCallBack( MSG_BOX_RETURN_YES ); + } + else + { + // The game should be unpaused when this message box disappears + UnPauseGame(); + DoMapMessageBox( MSG_BOX_BASIC_STYLE, gzLateLocalizedString[ 48 ], MAP_SCREEN, MSG_BOX_FLAG_YESNO, MercDismissConfirmCallBack ); + } + fOkToClose = TRUE; break; } @@ -12930,14 +12943,13 @@ void ContractMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) fGlowContractRegion = FALSE; fShowContractMenu = FALSE; - // dirty region + // dirty region fTeamPanelDirty = TRUE; fMapScreenBottomDirty = TRUE; fCharacterInfoPanelDirty = TRUE; - gfRenderPBInterface = TRUE; + gfRenderPBInterface = TRUE; } - return; } @@ -13742,6 +13754,75 @@ void PrisonerMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) } } +static void CheckForSurgery(SOLDIERTYPE *pSoldier) +{ + if ( pSoldier->iHealableInjury >= 100 && gGameOptions.fNewTraitSystem ) // if we can heal at least one life point + { + SOLDIERTYPE *pBestMedic = NULL; + INT8 bSlot; + + // Find the best doctor + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; id <= lastid; ++id ) + { + SOLDIERTYPE *pMedic = id; + if ( !(pMedic->bActive) || !(pMedic->bInSector) || (pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE) || (pMedic->bAssignment == VEHICLE) ) + continue; // is nowhere around! + + if ( (pSoldier->ubID == pMedic->ubID) || !IS_DOCTOR( pMedic->bAssignment ) ) + continue; // cannot make surgery on self or not on the right assignment! + + bSlot = FindMedKit( pMedic ); + if ( bSlot == NO_SLOT ) + continue;// no medical kit! + + if ( pMedic->stats.bLife >= OKLIFE && !(pMedic->bCollapsed) && pMedic->stats.bMedical > 0 && (NUM_SKILL_TRAITS( pMedic, DOCTOR_NT ) >= gSkillTraitValues.ubDONumberTraitsNeededForSurgery) ) + { + if ( pBestMedic != NULL ) + { + if ( NUM_SKILL_TRAITS( pMedic, DOCTOR_NT ) > NUM_SKILL_TRAITS( pBestMedic, DOCTOR_NT ) ) + pBestMedic = pMedic; + } + else + { + pBestMedic = pMedic; + } + } + } + + if ( pBestMedic != NULL ) + { + CHAR16 zStr[200]; + pAutomaticSurgeryDoctor = pBestMedic; + pAutomaticSurgeryPatient = pSoldier; + + INT32 healwithout_bloodbag = pAutomaticSurgeryPatient->iHealableInjury * (gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentOnTop * NUM_SKILL_TRAITS( pAutomaticSurgeryDoctor, DOCTOR_NT )) / 10000; + + // Flugente: check whether we have a bloodbag we can use + INT32 healwith_bloodbag = -1; + if ( gSkillTraitValues.ubDOSurgeryHealPercentBloodbag > 0 && pAutomaticSurgeryDoctor->GetObjectWithItemFlag( BLOOD_BAG ) != NULL ) + healwith_bloodbag = pAutomaticSurgeryPatient->iHealableInjury * (gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentBloodbag + gSkillTraitValues.ubDOSurgeryHealPercentOnTop * NUM_SKILL_TRAITS( pAutomaticSurgeryDoctor, DOCTOR_NT )) / 10000; + + if ( healwith_bloodbag > healwithout_bloodbag ) + { + swprintf( zStr, New113Message[MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT_BLOODBAG], pAutomaticSurgeryPatient->GetName(), healwithout_bloodbag, healwith_bloodbag ); + + wcscpy( gzUserDefinedButton[0], New113Message[MSG113_BLOODBAGOPTIONS_YESSTAR] ); + wcscpy( gzUserDefinedButton[1], New113Message[MSG113_BLOODBAGOPTIONS_YES] ); + wcscpy( gzUserDefinedButton[2], New113Message[MSG113_BLOODBAGOPTIONS_NO] ); + wcscpy( gzUserDefinedButton[3], New113Message[MSG113_BLOODBAGOPTIONS_NO] ); + DoMapMessageBox( MSG_BOX_BASIC_STYLE, zStr, MAP_SCREEN, (MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS | MSG_BOX_BUTTONS_HORIZONTAL_ORIENTATION), SurgeryBeforePatientingRequesterCallback ); + } + else + { + swprintf( zStr, New113Message[MSG113_SURGERY_BEFORE_PATIENT_ASSIGNMENT] ); + DoMapMessageBox( MSG_BOX_BASIC_STYLE, zStr, MAP_SCREEN, MSG_BOX_FLAG_YESNO, SurgeryBeforePatientingRequesterCallback ); + } + } + } +} + void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) { // btn callback handler for assignment region @@ -13820,71 +13901,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) ///////////////////////////////////////////////////////////////////////////////////////// // SANDRO - added check for surgery - if( pSoldier->iHealableInjury >= 100 && gGameOptions.fNewTraitSystem ) // if we can heal at least one life point - { - SOLDIERTYPE * pMedic = NULL; - SOLDIERTYPE * pBestMedic = NULL; - UINT8 cnt; - INT8 bSlot; - - // Find the best doctor - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pMedic = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++,pMedic++) - { - if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) ) - continue; // is nowhere around! - - if ( (pSoldier->ubID == pMedic->ubID) || !IS_DOCTOR(pMedic->bAssignment) ) - continue; // cannot make surgery on self or not on the right assignment! - - bSlot = FindMedKit( pMedic ); - if (bSlot == NO_SLOT) - continue;// no medical kit! - - if (pMedic->stats.bLife >= OKLIFE && !(pMedic->bCollapsed) && pMedic->stats.bMedical > 0 && ( NUM_SKILL_TRAITS( pMedic, DOCTOR_NT ) >= gSkillTraitValues.ubDONumberTraitsNeededForSurgery )) - { - if (pBestMedic != NULL) - { - if (NUM_SKILL_TRAITS( pMedic, DOCTOR_NT ) > NUM_SKILL_TRAITS( pBestMedic, DOCTOR_NT )) - pBestMedic = pMedic; - } - else - { - pBestMedic = pMedic; - } - } - } - - if (pBestMedic != NULL) - { - CHAR16 zStr[200]; - pAutomaticSurgeryDoctor = pBestMedic; - pAutomaticSurgeryPatient = pSoldier; - - INT32 healwithout_bloodbag = pAutomaticSurgeryPatient->iHealableInjury * ( gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentOnTop * NUM_SKILL_TRAITS( pAutomaticSurgeryDoctor, DOCTOR_NT ) ) / 10000; - - // Flugente: check whether we have a bloodbag we can use - INT32 healwith_bloodbag = -1; - if ( gSkillTraitValues.ubDOSurgeryHealPercentBloodbag > 0 && pAutomaticSurgeryDoctor->GetObjectWithItemFlag( BLOOD_BAG ) != NULL ) - healwith_bloodbag = pAutomaticSurgeryPatient->iHealableInjury * ( gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentBloodbag + gSkillTraitValues.ubDOSurgeryHealPercentOnTop * NUM_SKILL_TRAITS( pAutomaticSurgeryDoctor, DOCTOR_NT ) ) / 10000; - - if ( healwith_bloodbag > healwithout_bloodbag ) - { - swprintf( zStr, New113Message[MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT_BLOODBAG], pAutomaticSurgeryPatient->GetName(), healwithout_bloodbag, healwith_bloodbag ); - - wcscpy( gzUserDefinedButton[0], New113Message[MSG113_BLOODBAGOPTIONS_YESSTAR] ); - wcscpy( gzUserDefinedButton[1], New113Message[MSG113_BLOODBAGOPTIONS_YES] ); - wcscpy( gzUserDefinedButton[2], New113Message[MSG113_BLOODBAGOPTIONS_NO] ); - wcscpy( gzUserDefinedButton[3], New113Message[MSG113_BLOODBAGOPTIONS_NO] ); - DoMapMessageBox( MSG_BOX_BASIC_STYLE, zStr, MAP_SCREEN, ( MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS | MSG_BOX_BUTTONS_HORIZONTAL_ORIENTATION ), SurgeryBeforePatientingRequesterCallback ); - } - else - { - swprintf( zStr, New113Message[MSG113_SURGERY_BEFORE_PATIENT_ASSIGNMENT] ); - DoMapMessageBox( MSG_BOX_BASIC_STYLE, zStr, MAP_SCREEN, MSG_BOX_FLAG_YESNO, SurgeryBeforePatientingRequesterCallback ); - } - } - } + CheckForSurgery( pSoldier ); ///////////////////////////////////////////////////////////////////////////////////////// } break; @@ -14102,71 +14119,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) ///////////////////////////////////////////////////////////////////////////////////////// // SANDRO - added check for surgery - if( pSoldier->iHealableInjury >= 100 && gGameOptions.fNewTraitSystem ) // if we can heal at least one life point - { - SOLDIERTYPE * pMedic = NULL; - SOLDIERTYPE * pBestMedic = NULL; - UINT8 cnt; - INT8 bSlot; - - // Find the best doctor - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pMedic = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++,pMedic++) - { - if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) ) - continue; // is nowhere around! - - if ( (pSoldier->ubID == pMedic->ubID) || !IS_DOCTOR(pMedic->bAssignment) ) - continue; // cannot make surgery on self or not on the right assignment! - - bSlot = FindMedKit( pMedic ); - if (bSlot == NO_SLOT) - continue;// no medical kit! - - if (pMedic->stats.bLife >= OKLIFE && !(pMedic->bCollapsed) && pMedic->stats.bMedical > 0 && ( NUM_SKILL_TRAITS( pMedic, DOCTOR_NT ) >= gSkillTraitValues.ubDONumberTraitsNeededForSurgery )) - { - if (pBestMedic != NULL) - { - if (NUM_SKILL_TRAITS( pMedic, DOCTOR_NT ) > NUM_SKILL_TRAITS( pBestMedic, DOCTOR_NT )) - pBestMedic = pMedic; - } - else - { - pBestMedic = pMedic; - } - } - } - - if (pBestMedic != NULL) - { - CHAR16 zStr[200]; - pAutomaticSurgeryDoctor = pBestMedic; - pAutomaticSurgeryPatient = pSoldier; - - INT32 healwithout_bloodbag = pAutomaticSurgeryPatient->iHealableInjury * ( gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentOnTop * NUM_SKILL_TRAITS( pAutomaticSurgeryDoctor, DOCTOR_NT ) ) / 10000; - - // Flugente: check whether we have a bloodbag we can use - INT32 healwith_bloodbag = -1; - if ( gSkillTraitValues.ubDOSurgeryHealPercentBloodbag > 0 && pAutomaticSurgeryDoctor->GetObjectWithItemFlag( BLOOD_BAG ) != NULL ) - healwith_bloodbag = pAutomaticSurgeryPatient->iHealableInjury * ( gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentBloodbag + gSkillTraitValues.ubDOSurgeryHealPercentOnTop * NUM_SKILL_TRAITS( pAutomaticSurgeryDoctor, DOCTOR_NT ) ) / 10000; - - if ( healwith_bloodbag > healwithout_bloodbag ) - { - swprintf( zStr, New113Message[MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT_BLOODBAG], pAutomaticSurgeryPatient->GetName(), healwithout_bloodbag, healwith_bloodbag ); - - wcscpy( gzUserDefinedButton[0], New113Message[MSG113_BLOODBAGOPTIONS_YESSTAR] ); - wcscpy( gzUserDefinedButton[1], New113Message[MSG113_BLOODBAGOPTIONS_YES] ); - wcscpy( gzUserDefinedButton[2], New113Message[MSG113_BLOODBAGOPTIONS_NO] ); - wcscpy( gzUserDefinedButton[3], New113Message[MSG113_BLOODBAGOPTIONS_NO] ); - DoMapMessageBox( MSG_BOX_BASIC_STYLE, zStr, MAP_SCREEN, ( MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS | MSG_BOX_BUTTONS_HORIZONTAL_ORIENTATION ), SurgeryBeforePatientingRequesterCallback ); - } - else - { - swprintf( zStr, New113Message[MSG113_SURGERY_BEFORE_PATIENT_ASSIGNMENT] ); - DoMapMessageBox( MSG_BOX_BASIC_STYLE, zStr, MAP_SCREEN, MSG_BOX_FLAG_YESNO, SurgeryBeforePatientingRequesterCallback ); - } - } - } + CheckForSurgery( pSoldier ); ///////////////////////////////////////////////////////////////////////////////////////// } break; @@ -14724,14 +14677,6 @@ void HandleShadingOfLinesForSquadMenu( void ) } -void PostContractMessage( SOLDIERTYPE *pCharacter, INT32 iContract ) -{ - // send a message stating that offer of contract extension made - //MapScreenMessage(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Offered to extend %s's contract by another %s.", pCharacter->GetName(), pContractExtendStrings[ iContract ] ); - - return; -} - BOOLEAN DisplayVehicleMenu( SOLDIERTYPE *pSoldier ) { BOOLEAN fVehiclePresent=FALSE; @@ -15295,6 +15240,134 @@ void CreateContractBox( SOLDIERTYPE *pCharacter ) } + +void CreateContractBoxMultiSelect(INT32 DailySalaries, INT32 WeeklySalaries, INT32 BiweeklySalaries) +{ + UINT32 hStringHandle; + UINT32 uiCounter; + CHAR16 sString[50]; + CHAR16 sDollarString[50]; + + // rebuild contractbox for this merc + RemoveBox(ghContractBox); + ghContractBox = -1; + fShowContractMenu = TRUE; + + ContractPosition.iX = (SCREEN_WIDTH - INTERFACE_WIDTH) / 2 + OrigContractPosition.iX; + ContractPosition.iY = yResOffset + OrigContractPosition.iY; + + if (giBoxY != 0) + { + ContractPosition.iX = giBoxY; + } + + CreatePopUpBox(&ghContractBox, ContractDimensions, ContractPosition, (POPUP_BOX_FLAG_CLIP_TEXT | POPUP_BOX_FLAG_RESIZE)); + SetBoxBuffer(ghContractBox, FRAME_BUFFER); + SetBorderType(ghContractBox, guiPOPUPBORDERS); + SetBackGroundSurface(ghContractBox, guiPOPUPTEX); + SetMargins(ghContractBox, 6, 6, 4, 4); + SetLineSpace(ghContractBox, 2); + + // set current box to this one + SetCurrentBox(ghContractBox); + + // not null character? + //if (pCharacter != NULL) + { + for (uiCounter = 0; uiCounter < MAX_CONTRACT_MENU_STRING_COUNT; uiCounter++) + { + switch (uiCounter) + { + case(CONTRACT_MENU_CURRENT_FUNDS): + /* + // add current balance after title string + swprintf( sDollarString, L"%d", LaptopSaveInfo.iCurrentBalance); + InsertCommasForDollarFigure( sDollarString ); + InsertDollarSignInToString( sDollarString ); + swprintf( sString, L"%s %s", pContractStrings[uiCounter], sDollarString ); + AddMonoString(&hStringHandle, sString); + */ + AddMonoString(&hStringHandle, pContractStrings[uiCounter]); + break; + case(CONTRACT_MENU_DAY): + + //if (pCharacter->ubWhatKindOfMercAmI != MERC_TYPE__AIM_MERC) + //{ + // swprintf(sDollarString, L"%d", 0); + //} + //else + { + swprintf(sDollarString, L"%d", DailySalaries); + } + InsertCommasForDollarFigure(sDollarString); + InsertDollarSignInToString(sDollarString); + swprintf(sString, L"%s ( %s )", pContractStrings[uiCounter], sDollarString); + AddMonoString(&hStringHandle, sString); + break; + case(CONTRACT_MENU_WEEK): + + //if (pCharacter->ubWhatKindOfMercAmI != MERC_TYPE__AIM_MERC) + //{ + // swprintf(sDollarString, L"%d", 0); + //} + //else + { + swprintf(sDollarString, L"%d", WeeklySalaries); + } + + InsertCommasForDollarFigure(sDollarString); + InsertDollarSignInToString(sDollarString); + swprintf(sString, L"%s ( %s )", pContractStrings[uiCounter], sDollarString); + AddMonoString(&hStringHandle, sString); + break; + case(CONTRACT_MENU_TWO_WEEKS): + + //if (pCharacter->ubWhatKindOfMercAmI != MERC_TYPE__AIM_MERC) + //{ + // swprintf(sDollarString, L"%d", 0); + //} + //else + { + swprintf(sDollarString, L"%d", BiweeklySalaries); + } + + + InsertCommasForDollarFigure(sDollarString); + InsertDollarSignInToString(sDollarString); + swprintf(sString, L"%s ( %s )", pContractStrings[uiCounter], sDollarString); + AddMonoString(&hStringHandle, sString); + break; + default: + AddMonoString(&hStringHandle, pContractStrings[uiCounter]); + break; + } + UnHighLightLine(hStringHandle); + } + } + + + SetBoxFont(ghContractBox, MAP_SCREEN_FONT); + SetBoxHighLight(ghContractBox, FONT_WHITE); + SetBoxForeground(ghContractBox, FONT_LTGREEN); + SetBoxBackground(ghContractBox, FONT_BLACK); + + // shaded color..for darkened text + SetBoxShade(ghContractBox, FONT_GRAY7); + + //if (pCharacter != NULL) + { + // now set the color for the current balance value + SetBoxLineForeground(ghContractBox, 0, FONT_YELLOW); + } + + // resize box to text + ResizeBoxToText(ghContractBox); + + fTeamPanelDirty = TRUE; + fCharacterInfoPanelDirty = TRUE; +} + + void CreateAttributeBox( void ) { UINT32 hStringHandle; @@ -18260,7 +18333,7 @@ BOOLEAN HandleSelectedMercsBeingPutAsleep( BOOLEAN fWakeUp, BOOLEAN fDisplayWarn if( gCharactersList[ iCounter ].fValid ) { // get the soldier pointer - pSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if( pSoldier->bActive == FALSE ) { @@ -18272,7 +18345,7 @@ BOOLEAN HandleSelectedMercsBeingPutAsleep( BOOLEAN fWakeUp, BOOLEAN fDisplayWarn continue; } - if( IsEntryInSelectedListSet( ( INT8 )iCounter ) == FALSE ) + if( IsEntryInSelectedListSet( iCounter ) == FALSE ) { continue; } @@ -18316,12 +18389,12 @@ BOOLEAN HandleSelectedMercsBeingPutAsleep( BOOLEAN fWakeUp, BOOLEAN fDisplayWarn BOOLEAN IsAnyOneOnPlayersTeamOnThisAssignment( INT8 bAssignment ) { - SOLDIERTYPE *pSoldier = NULL; - - for( INT32 iCounter = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++iCounter ) + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for( ; id <= lastid; ++id) { // get the current soldier - pSoldier = &Menptr[ iCounter ]; + SOLDIERTYPE *pSoldier = id; // active? if( pSoldier->bActive == FALSE ) @@ -18352,7 +18425,6 @@ void RebuildAssignmentsBox( void ) void BandageBleedingDyingPatientsBeingTreated( ) { - INT32 iCounter = 0; SOLDIERTYPE *pSoldier = NULL; SOLDIERTYPE *pDoctor = NULL; INT32 iKitSlot; @@ -18361,10 +18433,10 @@ void BandageBleedingDyingPatientsBeingTreated( ) UINT32 uiKitPtsUsed; BOOLEAN fSomeoneStillBleedingDying = FALSE; - for( iCounter = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; iCounter++ ) + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { // get the soldier - pSoldier = &Menptr[ iCounter ]; + pSoldier = id; // check if the soldier is currently active? if( pSoldier->bActive == FALSE ) @@ -18644,7 +18716,7 @@ void SetAssignmentForList( INT8 bAssignment, INT8 bParam ) { if( gCharactersList[ bSelectedAssignChar ].fValid == TRUE ) { - pSelectedSoldier = &Menptr[ gCharactersList[ bSelectedAssignChar ].usSolID ]; + pSelectedSoldier = gCharactersList[ bSelectedAssignChar ].usSolID; } } @@ -18656,9 +18728,9 @@ void SetAssignmentForList( INT8 bAssignment, INT8 bParam ) if( ( gCharactersList[ iCounter ].fValid ) && ( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) && ( iCounter != bSelectedAssignChar ) && - !(Menptr[ gCharactersList[ iCounter ].usSolID].flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + !(gCharactersList[ iCounter ].usSolID->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // assume it's NOT gonna work fItWorked = FALSE; @@ -19453,13 +19525,13 @@ SOLDIERTYPE *GetSelectedAssignSoldier( BOOLEAN fNullOK, BOOLEAN fReturnVehicleDr if( ( bSelectedAssignChar >= 0 ) && ( bSelectedAssignChar < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) && ( gCharactersList[ bSelectedAssignChar ].fValid ) ) { - pSoldier = &Menptr[ gCharactersList[ bSelectedAssignChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedAssignChar ].usSolID; } } else { // tactical version - pSoldier = &Menptr[ gusUIFullTargetID ]; + pSoldier = gusUIFullTargetID; } if ( !fNullOK ) @@ -19498,7 +19570,7 @@ void ResumeOldAssignment( SOLDIERTYPE *pSoldier ) void RepairItemsOnOthers( SOLDIERTYPE *pSoldier, UINT8 *pubRepairPtsLeft ) { UINT8 ubPassType; - INT8 bLoop; + UINT16 bLoop; SOLDIERTYPE * pOtherSoldier; SOLDIERTYPE * pBestOtherSoldier; INT8 bPriority, bBestPriority = -1; @@ -19510,9 +19582,11 @@ void RepairItemsOnOthers( SOLDIERTYPE *pSoldier, UINT8 *pubRepairPtsLeft ) fSomethingWasRepairedThisPass = FALSE; // look for jammed guns on other soldiers in sector and unjam them - for( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - pOtherSoldier = MercPtrs[ bLoop ]; + pOtherSoldier = id; // check character is valid, alive, same sector, not between, has inventory, etc. if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) ) @@ -19530,9 +19604,11 @@ void RepairItemsOnOthers( SOLDIERTYPE *pSoldier, UINT8 *pubRepairPtsLeft ) pBestOtherSoldier = NULL; // now look for items to repair on other mercs - for( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; id <= lastid; ++id ) { - pOtherSoldier = MercPtrs[ bLoop ]; + pOtherSoldier = id; // check character is valid, alive, same sector, not between, has inventory, etc. if ( CanCharacterRepairAnotherSoldiersStuff( pSoldier, pOtherSoldier ) ) @@ -19916,7 +19992,7 @@ BOOLEAN FindAnyAwakeTrainers( SOLDIERTYPE *pTrainee ) while(gCharactersList[ubCounter].fValid) { - pTrainer = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pTrainer = gCharactersList[ ubCounter ].usSolID; // Is trainer awake? if (pTrainer->bAssignment == TRAIN_TEAMMATE && pTrainer->bTrainStat == pTrainee->bTrainStat && @@ -19952,7 +20028,7 @@ BOOLEAN FindAnyAwakeTrainees( SOLDIERTYPE *pTrainer ) while(gCharactersList[ubCounter].fValid) { - pTrainee = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pTrainee = gCharactersList[ ubCounter ].usSolID; // Is trainee awake? if (pTrainee->bAssignment == TRAIN_BY_OTHER && pTrainee->bTrainStat == pTrainer->bTrainStat && @@ -20895,7 +20971,7 @@ INT8 CountFreeFacilitySlots( UINT8 sMapX, UINT8 sMapY, UINT8 ubFacilityType ) // Count number of people doing anything at this facility. while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character operating this facility? if( (UINT8)pSoldier->sFacilityTypeOperated == ubFacilityType && @@ -20938,7 +21014,7 @@ INT8 CountFreeFacilityAssignmentSlots( UINT8 sMapX, UINT8 sMapY, UINT8 ubFacilit // Count number of people doing this assignment at this facility. while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character operating this facility? if( (UINT8)pSoldier->sFacilityTypeOperated == ubFacilityType && @@ -21364,7 +21440,7 @@ void ResetAllExpensiveFacilityAssignments() while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character doing facility work? INT8 ubAssignmentIndex = GetSoldierFacilityAssignmentIndex( pSoldier ); @@ -22715,11 +22791,11 @@ BOOLEAN MercStaffsMilitaryHQ() return TRUE; SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + for ( ; id <= lastid; ++id) { + pSoldier = id; if( pSoldier && pSoldier->bAssignment == FACILITY_STRATEGIC_MILITIA_MOVEMENT && pSoldier->flags.fMercAsleep == FALSE ) { return TRUE; diff --git a/Strategic/Assignments.h b/Strategic/Assignments.h index b58b14ef..3bdae3cc 100644 --- a/Strategic/Assignments.h +++ b/Strategic/Assignments.h @@ -56,6 +56,26 @@ enum SQUAD_18, SQUAD_19, SQUAD_20, + SQUAD_21, + SQUAD_22, + SQUAD_23, + SQUAD_24, + SQUAD_25, + SQUAD_26, + SQUAD_27, + SQUAD_28, + SQUAD_29, + SQUAD_30, + SQUAD_31, + SQUAD_32, + SQUAD_33, + SQUAD_34, + SQUAD_35, + SQUAD_36, + SQUAD_37, + SQUAD_38, + SQUAD_39, + SQUAD_40, ON_DUTY, DOCTOR, PATIENT, @@ -321,7 +341,7 @@ UINT32 CalculatePrisonGuardValue(SOLDIERTYPE *pSoldier ); UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts ); // Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present -FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID ); +FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, SoldierID *pubID ); INT16 GetTrainWorkerPts(SOLDIERTYPE *pSoldier); @@ -595,4 +615,4 @@ UINT8 CalcSoldierNeedForSleep( SOLDIERTYPE *pSoldier ); // Flugente: administration assignment FLOAT GetAdministrationPercentage( INT16 sX, INT16 sY ); -#endif +#endif diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index a64aa84d..fc69df6f 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -163,13 +163,13 @@ typedef struct AUTORESOLVE_STRUCT UINT8 ubEnemyLeadership; UINT8 ubPlayerLeadership; - UINT8 ubMercs, ubCivs, ubEnemies; - UINT8 ubAdmins, ubTroops, ubElites, ubTanks, ubJeeps, ubRobots; - UINT8 ubYMCreatures, ubYFCreatures, ubAMCreatures, ubAFCreatures; - UINT8 ubBloodcats; - UINT8 ubZombies; - UINT8 ubBandits; - UINT8 ubAliveMercs, ubAliveCivs, ubAliveEnemies; + UINT16 ubMercs, ubCivs, ubEnemies; + UINT16 ubAdmins, ubTroops, ubElites, ubTanks, ubJeeps, ubRobots; + UINT16 ubYMCreatures, ubYFCreatures, ubAMCreatures, ubAFCreatures; + UINT16 ubBloodcats; + UINT16 ubZombies; + UINT16 ubBandits; + UINT16 ubAliveMercs, ubAliveCivs, ubAliveEnemies; UINT8 ubMercCols, ubMercRows; UINT8 ubEnemyCols, ubEnemyRows; UINT8 ubCivCols, ubCivRows; @@ -410,10 +410,10 @@ void EliminateAllEnemies( UINT8 ubSectorX, UINT8 ubSectorY ) GROUP *pGroup, *pDeleteGroup; SECTORINFO *pSector; INT32 i; - UINT8 ubNumEnemies[ NUM_ENEMY_RANKS ]; - UINT8 ubNumTanks = 0; - UINT8 ubNumJeeps = 0; - UINT8 ubNumRobots = 0; + UINT16 ubNumEnemies[NUM_ENEMY_RANKS]{}; + UINT16 ubNumTanks = 0; + UINT16 ubNumJeeps = 0; + UINT16 ubNumRobots = 0; UINT8 ubRankIndex; //Clear any possible battle locator @@ -460,7 +460,6 @@ void EliminateAllEnemies( UINT8 ubSectorX, UINT8 ubSectorY ) pSector->ubNumJeeps = 0; pSector->ubNumRobots = 0; pSector->ubNumCreatures = 0; - pSector->bLastKnownEnemies = 0; //Remove the mobile forces here, but only if battle is over. while( pGroup ) { @@ -755,9 +754,9 @@ void AssociateEnemiesWithStrategicGroups() { SECTORINFO *pSector; GROUP *pGroup; - UINT8 ubNumAdmins, ubNumTroops, ubNumElites, ubNumTanks, ubNumJeeps, ubNumRobots; //how many soldiers of the type do we still have to assign to a group? - UINT8 ubISNumAdmins, ubISNumTroops, ubISNumElites, ubISNumTanks, ubISNumJeeps, ubISNumRobots; - UINT8 ubNumElitesInGroup, ubNumTroopsInGroup, ubNumAdminsInGroup, ubNumTanksInGroup, ubNumJeepsInGroup, ubNumRobotsInGroup; + UINT16 ubNumAdmins, ubNumTroops, ubNumElites, ubNumTanks, ubNumJeeps, ubNumRobots; //how many soldiers of the type do we still have to assign to a group? + UINT16 ubISNumAdmins, ubISNumTroops, ubISNumElites, ubISNumTanks, ubISNumJeeps, ubISNumRobots; + UINT16 ubNumElitesInGroup, ubNumTroopsInGroup, ubNumAdminsInGroup, ubNumTanksInGroup, ubNumJeepsInGroup, ubNumRobotsInGroup; INT32 i; UINT8 pSectors[4]; UINT8 ubDirAmount; @@ -1839,7 +1838,6 @@ void RenderAutoResolve() HandleMoraleEvent( NULL, MORALE_BATTLE_WON, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); if( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_WON, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); - SectorInfo[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].bLastKnownEnemies = 0; SetThisSectorAsPlayerControlled( gpAR->ubSectorX, gpAR->ubSectorY, 0, TRUE ); #ifdef NEWMUSIC GlobalSoundID = MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalVictory[0]; @@ -1854,29 +1852,35 @@ void RenderAutoResolve() case BATTLE_SURRENDERED: case BATTLE_CAPTURED: - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + { + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; id <= lastid; ++id ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( MercPtrs[ i ] ) ) + SOLDIERTYPE *pSoldier = id; + + if ( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) ) { //Merc is active and alive, and not a vehicle or robot - if ( PlayerMercInvolvedInThisCombat( MercPtrs[ i ] ) ) + if ( PlayerMercInvolvedInThisCombat( pSoldier ) ) { // This morale event is PER INDIVIDUAL SOLDIER - HandleMoraleEvent( MercPtrs[ i ], MORALE_MERC_CAPTURED, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); + HandleMoraleEvent( pSoldier, MORALE_MERC_CAPTURED, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); } } } HandleMoraleEvent( NULL, MORALE_HEARD_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); - if( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); - #ifdef NEWMUSIC - GlobalSoundID = MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalDeath[0]; - if ( MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalDeath[0] != -1 ) - SetMusicModeID( MUSIC_TACTICAL_DEATH, MusicSoundValues[ SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ) ].SoundTacticalDeath[0] ); + if ( ProcessLoyalty() )HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); +#ifdef NEWMUSIC + GlobalSoundID = MusicSoundValues[SECTOR( gpAR->ubSectorX, gpAR->ubSectorY )].SoundTacticalDeath[0]; + if ( MusicSoundValues[SECTOR( gpAR->ubSectorX, gpAR->ubSectorY )].SoundTacticalDeath[0] != -1 ) + SetMusicModeID( MUSIC_TACTICAL_DEATH, MusicSoundValues[SECTOR( gpAR->ubSectorX, gpAR->ubSectorY )].SoundTacticalDeath[0] ); else - #endif - SetMusicMode( MUSIC_TACTICAL_DEATH ); +#endif + SetMusicMode( MUSIC_TACTICAL_DEATH ); gsEnemyGainedControlOfSectorID = (INT16)SECTOR( gpAR->ubSectorX, gpAR->ubSectorY ); break; + } case BATTLE_DEFEAT: HandleMoraleEvent( NULL, MORALE_HEARD_BATTLE_LOST, gpAR->ubSectorX, gpAR->ubSectorY, 0 ); @@ -2048,7 +2052,7 @@ static void ARCreateMilitia( UINT8 mclass, INT32 i, INT16 sX, INT16 sY) swprintf( gpCivs[i].pSoldier->name, gpStrategicString[ STR_AR_MILITIA_NAME ] ); } -static void ARCreateMilitiaSquad( UINT8 *cnt, UINT8 ubEliteMilitia, UINT8 ubRegMilitia, UINT8 ubGreenMilitia, INT16 sX, INT16 sY) +static void ARCreateMilitiaSquad( UINT16 *cnt, UINT16 ubEliteMilitia, UINT16 ubRegMilitia, UINT16 ubGreenMilitia, INT16 sX, INT16 sY) { while( *cnt < gpAR->ubCivs && (ubEliteMilitia || ubRegMilitia || ubGreenMilitia) ) { @@ -2077,10 +2081,10 @@ void CreateAutoResolveInterface() VOBJECT_DESC VObjectDesc; INT32 i, index; HVOBJECT hVObject; - UINT8 ubGreenMilitia, ubRegMilitia, ubEliteMilitia; + UINT16 ubGreenMilitia, ubRegMilitia, ubEliteMilitia; UINT16 pMoveDir[4][3]; UINT8 uiDirNumber = 0; - UINT8 cnt; + UINT16 cnt; //Setup new autoresolve blanket interface. MSYS_DefineRegion( &gpAR->AutoResolveRegion, 0 + xResOffset, 0, SCREEN_WIDTH, SCREEN_HEIGHT, MSYS_PRIORITY_HIGH-1, 0, @@ -2200,7 +2204,7 @@ void CreateAutoResolveInterface() ubGreenMilitia = MilitiaInSectorOfRank( gpAR->ubSectorX, gpAR->ubSectorY, GREEN_MILITIA ); // see if we get any bonus militia from nearby towns - UINT8 bonusGreenMilitia = 0, bonusRegularMilitia = 0, bonusEliteMilitia = 0; + UINT16 bonusGreenMilitia = 0, bonusRegularMilitia = 0, bonusEliteMilitia = 0; RebelCommand::GetBonusMilitia(gpAR->ubSectorX, gpAR->ubSectorY, bonusGreenMilitia, bonusRegularMilitia, bonusEliteMilitia, FALSE); // no need to create a group for autoresolve as we're just increasing local militia pop ubEliteMilitia += bonusEliteMilitia; ubRegMilitia += bonusRegularMilitia; @@ -2837,7 +2841,7 @@ void RetreatButtonCallback( GUI_BUTTON *btn, INT32 reason ) if( gpAR->pRobotCell ) { //if robot is retreating, set the retreat time to be the same as the robot's controller. - UINT8 ubRobotControllerID; + SoldierID ubRobotControllerID; ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; @@ -3011,9 +3015,7 @@ void MercCellMouseClickCallback( MOUSE_REGION *reg, INT32 reason ) if( gpAR->pRobotCell ) { //if controller is retreating, make the robot retreat too. - UINT8 ubRobotControllerID; - - ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; + SoldierID ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; if( ubRobotControllerID == NOBODY ) { @@ -3067,7 +3069,7 @@ void CalculateAutoResolveInfo() &gpAR->ubAMCreatures, &gpAR->ubAFCreatures ); } - gpAR->ubEnemies = (UINT8)min( gpAR->ubYMCreatures + gpAR->ubYFCreatures + gpAR->ubAMCreatures + gpAR->ubAFCreatures, MAX_AR_TEAM_SIZE ); + gpAR->ubEnemies = min( gpAR->ubYMCreatures + gpAR->ubYFCreatures + gpAR->ubAMCreatures + gpAR->ubAFCreatures, MAX_AR_TEAM_SIZE ); } else if ( GetEnemyEncounterCode() == BLOODCAT_ATTACK_CODE || GetEnemyEncounterCode() == ZOMBIE_ATTACK_CODE || @@ -3087,7 +3089,7 @@ void CalculateAutoResolveInfo() gpAR->ubBandits = gubNumCreaturesAttackingTown; } - gpAR->ubEnemies = (UINT8)min( gubNumCreaturesAttackingTown, MAX_AR_TEAM_SIZE ); + gpAR->ubEnemies = min( gubNumCreaturesAttackingTown, MAX_AR_TEAM_SIZE ); } else { @@ -3096,7 +3098,7 @@ void CalculateAutoResolveInfo() GetNumberOfEnemiesInFiveSectors( gpAR->ubSectorX, gpAR->ubSectorY, &gpAR->ubAdmins, &gpAR->ubTroops, &gpAR->ubElites, &gpAR->ubRobots, &gpAR->ubTanks, &gpAR->ubJeeps ); - gpAR->ubEnemies = (UINT8)min( gpAR->ubAdmins + gpAR->ubTroops + gpAR->ubElites + gpAR->ubTanks + gpAR->ubJeeps + gpAR->ubRobots, MAX_AR_TEAM_SIZE ); + gpAR->ubEnemies = min( gpAR->ubAdmins + gpAR->ubTroops + gpAR->ubElites + gpAR->ubTanks + gpAR->ubJeeps + gpAR->ubRobots, MAX_AR_TEAM_SIZE ); } gfTransferTacticalOppositionToAutoResolve = FALSE; @@ -3735,7 +3737,7 @@ UINT8 GetUnusedMercProfileID() BOOLEAN fUnique = FALSE; while( !fUnique ) { - ubRandom = (UINT8)PreRandom( 40 ); + ubRandom = (UINT8)PreRandom(CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS); for( i = 0; i < 19; i++ ) { fUnique = TRUE; @@ -3753,7 +3755,7 @@ void CreateTempPlayerMerc() { SOLDIERCREATE_STRUCT MercCreateStruct; static INT32 iSoldierCount=0; - UINT8 ubID; + SoldierID ubID; //Init the merc create structure with basic information MercCreateStruct.bTeam = SOLDIER_CREATE_AUTO_TEAM; @@ -5961,12 +5963,16 @@ void CheckForSoldiersWhoRetreatedIntoMilitiaHeldSectors() (!gTacticalStatus.fEnemyInSector)) { unsigned mercCnt = 0; - for( int i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + const SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; id <= lastid; ++id ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( MercPtrs[ i ] ) ) + SOLDIERTYPE *pSoldier = id; + + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) ) { //Merc is active and alive, and not a vehicle or robot - if ((MercPtrs[ i ]->sSectorX == sX) &&(MercPtrs[ i ]->sSectorY == sY) && (MercPtrs[ i ]->bSectorZ == 0)) + if ( (pSoldier->sSectorX == sX) && (pSoldier->sSectorY == sY) && (pSoldier->bSectorZ == 0) ) { ++mercCnt; } diff --git a/Strategic/Campaign Types.h b/Strategic/Campaign Types.h index 2c17739b..2c490fcb 100644 --- a/Strategic/Campaign Types.h +++ b/Strategic/Campaign Types.h @@ -487,21 +487,18 @@ typedef struct SECTORINFO //This value determines how quickly it is investigated by the enemy. UINT8 ubGarrisonID; //IF the sector has an ID for this (non 255), then the queen values this sector and it //indexes the garrison group. - INT8 ubPendingReinforcements; //when the enemy owns this sector, this value will keep track of HIGH priority reinforcements -- not regular. + INT8 ubPendingReinforcements; //when the enemy owns this sector, this value will keep track of HIGH priority reinforcements -- not regular. BOOLEAN fMilitiaTrainingPaid; UINT8 ubMilitiaTrainingPercentDone; UINT8 ubMilitiaTrainingHundredths; //enemy military presence BOOLEAN fPlayer[ 4 ]; //whether the player THINKS the sector is unde his control or not. array is for sublevels //enemy only info - UINT8 ubNumTroops; //the actual number of troops here. - UINT8 ubNumElites; //the actual number of elites here. - UINT8 ubNumAdmins; //the actual number of admins here. - UINT8 ubNumCreatures; //only set when immediately before ground attack made! - UINT8 ubTroopsInBattle, ubElitesInBattle, ubAdminsInBattle, ubCreaturesInBattle; - - INT8 bLastKnownEnemies; // -1 means never been there, no idea, otherwise it's what we'd observed most recently - // while this is being maintained (partially, surely buggy), nothing uses it anymore. ARM + UINT16 ubNumTroops; //the actual number of troops here. + UINT16 ubNumElites; //the actual number of elites here. + UINT16 ubNumAdmins; //the actual number of admins here. + UINT16 ubNumCreatures; //only set when immediately before ground attack made! + UINT16 ubTroopsInBattle, ubElitesInBattle, ubAdminsInBattle, ubCreaturesInBattle; UINT32 ubDayOfLastCreatureAttack; UINT32 uiFacilitiesFlags; // the flags for various facilities @@ -511,15 +508,15 @@ typedef struct SECTORINFO //throught the sector without entering it. INT8 bNameId; INT8 bUSUSED; - INT8 bBloodCats; - INT8 bBloodCatPlacements; + INT16 bBloodCats; + INT16 bBloodCatPlacements; INT8 UNUSEDbSAMCondition; UINT8 ubTravelRating; //Represents how travelled a sector is. Typically, the higher the travel rating, //the more people go near it. A travel rating of 0 means there are never people //around. This value is used for determining how often items would "vanish" from //a sector (nice theory, except it isn't being used that way. Stealing is only in towns. ARM) - UINT8 ubNumberOfCivsAtLevel[ MAX_MILITIA_LEVELS ]; // town militia per experience class, 0/1/2 is GREEN/REGULAR/ELITE + UINT16 ubNumberOfCivsAtLevel[ MAX_MILITIA_LEVELS ]; // town militia per experience class, 0/1/2 is GREEN/REGULAR/ELITE // HEADROCK HAM 3.6: Adding separate training percentage for MOBILES. UINT8 usFiller3; UINT8 usFiller1; @@ -551,8 +548,8 @@ typedef struct SECTORINFO UINT32 uiTimeAIArtillerywasOrdered; // Flugente: updated every time an artillery strike is ordered from the militia - UINT8 ubNumTanks; - UINT8 ubTanksInBattle; + UINT16 ubNumTanks; + UINT16 ubTanksInBattle; // Flugente: disease UINT16 usNumCorpses; // number of corpses in this sector @@ -565,8 +562,8 @@ typedef struct SECTORINFO FLOAT dFortification_UnappliedProgress; // progress done via assignment work. As we cannot update unloaded sectors, update happens once sector is loaded // Flugente: enemy jeeps - UINT8 ubNumJeeps; - UINT8 ubJeepsInBattle; + UINT16 ubNumJeeps; + UINT16 ubJeepsInBattle; UINT8 usWorkers; UINT8 ubWorkerTrainingHundredths; @@ -583,8 +580,8 @@ typedef struct SECTORINFO UINT8 ubNumElites_Turncoat; UINT8 usExplorationProgress; - UINT8 ubNumRobots; - UINT8 ubRobotsInBattle; + UINT16 ubNumRobots; + UINT16 ubRobotsInBattle; INT8 bPadding[ 6 ]; }SECTORINFO; @@ -600,18 +597,18 @@ typedef struct UNDERGROUND_SECTORINFO { UINT32 uiFlags; UINT8 ubSectorX, ubSectorY, ubSectorZ; - UINT8 ubNumElites, ubNumTroops, ubNumAdmins, ubNumCreatures; + UINT16 ubNumElites, ubNumTroops, ubNumAdmins, ubNumCreatures; UINT8 fVisited; - INT8 ubTravelRating; //Represents how travelled a sector is. Typically, the higher the travel rating, + INT8 ubTravelRating; //Represents how travelled a sector is. Typically, the higher the travel rating, //the more people go near it. A travel rating of 0 means there are never people //around. This value is used for determining how often items would "vanish" from //a sector. UINT32 uiTimeCurrentSectorWasLastLoaded; //Specifies the last time the player was in the sector struct UNDERGROUND_SECTORINFO *next; - UINT8 ubNumBloodcats; // Bloodcat population + UINT16 ubNumBloodcats; // Bloodcat population UINT8 ubCreatureHabitat; //determines how creatures live in this sector (see creature spreading.c) - UINT8 ubElitesInBattle, ubTroopsInBattle, ubAdminsInBattle, ubCreaturesInBattle; + UINT16 ubElitesInBattle, ubTroopsInBattle, ubAdminsInBattle, ubCreaturesInBattle; // adding these (should not change struct layout due to padding) UINT8 ubMusicMode, ubUnsed; @@ -622,20 +619,20 @@ typedef struct UNDERGROUND_SECTORINFO BOOLEAN fCampaignSector; #endif - UINT8 uiNumberOfPrisonersOfWar[PRISONER_MAX]; + UINT16 uiNumberOfPrisonersOfWar[PRISONER_MAX]; - UINT8 ubNumTanks; - UINT8 ubTanksInBattle; + UINT16 ubNumTanks; + UINT16 ubTanksInBattle; // Flugente: fortification FLOAT dFortification_MaxPossible; // the amount of fortification that can still be done in this sector, given the current layout plans. Is updated every time we unload a sector FLOAT dFortification_UnappliedProgress; // progress done via assignment work. As we cannot update unloaded sectors, update happens once sector is loaded - UINT8 ubNumJeeps; - UINT8 ubJeepsInBattle; + UINT16 ubNumJeeps; + UINT16 ubJeepsInBattle; UINT8 usExplorationProgress; - UINT8 ubNumRobots; - UINT8 ubRobotsInBattle; + UINT16 ubNumRobots; + UINT16 ubRobotsInBattle; INT8 bPadding[10]; //no padding left! @@ -656,4 +653,4 @@ enum CreateMusic CM_ALWAYS, }; -#endif +#endif diff --git a/Strategic/Creature Spreading.cpp b/Strategic/Creature Spreading.cpp index 79c67c90..ceae13c1 100644 --- a/Strategic/Creature Spreading.cpp +++ b/Strategic/Creature Spreading.cpp @@ -139,11 +139,11 @@ INT32 giDestroyedLairID = 0; //prebattle interface, autoresolve, etc. INT16 gsCreatureInsertionCode = 0; INT32 gsCreatureInsertionGridNo = 0; -UINT8 gubNumCreaturesAttackingTown = 0; -UINT8 gubYoungMalesAttackingTown = 0; -UINT8 gubYoungFemalesAttackingTown = 0; -UINT8 gubAdultMalesAttackingTown = 0; -UINT8 gubAdultFemalesAttackingTown = 0; +UINT16 gubNumCreaturesAttackingTown = 0; +UINT16 gubYoungMalesAttackingTown = 0; +UINT16 gubYoungFemalesAttackingTown = 0; +UINT16 gubAdultMalesAttackingTown = 0; +UINT16 gubAdultFemalesAttackingTown = 0; UINT8 gubCreatureBattleCode = CREATURE_BATTLE_CODE_NONE; UINT8 gubSectorIDOfCreatureAttack = 0; @@ -1634,8 +1634,8 @@ BOOLEAN MineClearOfMonsters( UINT8 ubMineIndex ) return TRUE; } -void DetermineCreatureTownComposition( UINT8 ubNumCreatures, UINT8 *pubNumYoungMales, UINT8 *pubNumYoungFemales, - UINT8 *pubNumAdultMales, UINT8 *pubNumAdultFemales ) +void DetermineCreatureTownComposition( UINT16 ubNumCreatures, UINT16 *pubNumYoungMales, UINT16 *pubNumYoungFemales, + UINT16 *pubNumAdultMales, UINT16 *pubNumAdultFemales ) { INT32 i, iRandom; UINT8 ubYoungMalePercentage = 10; @@ -1667,8 +1667,8 @@ void DetermineCreatureTownComposition( UINT8 ubNumCreatures, UINT8 *pubNumYoungM } } -void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT8 *pubNumCreatures, UINT8 *pubNumYoungMales, UINT8 *pubNumYoungFemales, - UINT8 *pubNumAdultMales, UINT8 *pubNumAdultFemales ) +void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT16 *pubNumCreatures, UINT16 *pubNumYoungMales, UINT16 *pubNumYoungFemales, + UINT16 *pubNumAdultMales, UINT16 *pubNumAdultFemales ) { SOLDIERTYPE *pSoldier; @@ -1676,9 +1676,9 @@ void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT8 *pubNumCr *pubNumCreatures = 0; pSector->ubNumCreatures = 0; pSector->ubCreaturesInBattle = 0; - for( INT32 i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) { switch( pSoldier->ubBodyType ) @@ -1704,7 +1704,7 @@ void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT8 *pubNumCr } } -void DetermineOtherCreatureTownCompositionBasedOnTacticalInformation( UINT8* pubNumCreatures, UINT8* pubNumBloodcats, UINT8* pubNumZombies, UINT8* pubNumBandits ) +void DetermineOtherCreatureTownCompositionBasedOnTacticalInformation( UINT16* pubNumCreatures, UINT16* pubNumBloodcats, UINT16* pubNumZombies, UINT16* pubNumBandits ) { SOLDIERTYPE *pSoldier; @@ -1712,9 +1712,9 @@ void DetermineOtherCreatureTownCompositionBasedOnTacticalInformation( UINT8* pub *pubNumCreatures = 0; pSector->ubNumCreatures = 0; pSector->ubCreaturesInBattle = 0; - for ( INT32 i = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++i ) + for ( SoldierID i = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++i ) { - pSoldier = MercPtrs[i]; + pSoldier = i; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) { if ( pSoldier->IsZombie() ) @@ -1750,13 +1750,13 @@ BOOLEAN PrepareCreaturesForBattle() UINT8 ubAdultMalePercentage; UINT8 ubAdultFemalePercentage; UINT8 ubCreatureHabitat; - UINT8 ubNumLarvae = 0; - UINT8 ubNumInfants = 0; - UINT8 ubNumYoungMales = 0; - UINT8 ubNumYoungFemales = 0; - UINT8 ubNumAdultMales = 0; - UINT8 ubNumAdultFemales = 0; - UINT8 ubNumCreatures; + UINT16 ubNumLarvae = 0; + UINT16 ubNumInfants = 0; + UINT16 ubNumYoungMales = 0; + UINT16 ubNumYoungFemales = 0; + UINT16 ubNumAdultMales = 0; + UINT16 ubNumAdultFemales = 0; + UINT16 ubNumCreatures; if( !gubCreatureBattleCode ) { @@ -2243,7 +2243,6 @@ BOOLEAN PlayerGroupIsInACreatureInfestedMine() { CREATURE_DIRECTIVE *curr; SOLDIERTYPE *pSoldier; - INT32 i; INT16 sSectorX, sSectorY; INT8 bSectorZ; @@ -2261,9 +2260,9 @@ BOOLEAN PlayerGroupIsInACreatureInfestedMine() bSectorZ = (INT8)curr->pLevel->ubSectorZ; //Loop through all the creature directives (mine sectors that are infectible) and //see if players are there. - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bActive && pSoldier->stats.bLife && pSoldier->sSectorX == sSectorX && pSoldier->sSectorY == sSectorY && @@ -2422,4 +2421,4 @@ void ResetCreatureAttackVariables() gubAdultFemalesAttackingTown = 0; gubCreatureBattleCode = CREATURE_BATTLE_CODE_NONE; gubSectorIDOfCreatureAttack = 0; -} +} diff --git a/Strategic/Creature Spreading.h b/Strategic/Creature Spreading.h index acc408e1..67b1daea 100644 --- a/Strategic/Creature Spreading.h +++ b/Strategic/Creature Spreading.h @@ -30,11 +30,11 @@ BOOLEAN GetWarpOutOfMineCodes( INT16 *psSectorX, INT16 *psSectorY, INT8 *pbSecto extern INT16 gsCreatureInsertionCode; extern INT32 gsCreatureInsertionGridNo; -extern UINT8 gubNumCreaturesAttackingTown; -extern UINT8 gubYoungMalesAttackingTown; -extern UINT8 gubYoungFemalesAttackingTown; -extern UINT8 gubAdultMalesAttackingTown; -extern UINT8 gubAdultFemalesAttackingTown; +extern UINT16 gubNumCreaturesAttackingTown; +extern UINT16 gubYoungMalesAttackingTown; +extern UINT16 gubYoungFemalesAttackingTown; +extern UINT16 gubAdultMalesAttackingTown; +extern UINT16 gubAdultFemalesAttackingTown; extern UINT8 gubSectorIDOfCreatureAttack; enum{ CREATURE_BATTLE_CODE_NONE, @@ -53,15 +53,15 @@ enum { }; extern UINT8 guCreatureAttackType; -void DetermineCreatureTownComposition( UINT8 ubNumCreatures, - UINT8 *pubNumYoungMales, UINT8 *pubNumYoungFemales, - UINT8 *pubNumAdultMales, UINT8 *pubNumAdultFemales ); +void DetermineCreatureTownComposition( UINT16 ubNumCreatures, + UINT16 *pubNumYoungMales, UINT16 *pubNumYoungFemales, + UINT16 *pubNumAdultMales, UINT16 *pubNumAdultFemales ); -void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT8 *pubNumCreatures, - UINT8 *pubNumYoungMales, UINT8 *pubNumYoungFemales, - UINT8 *pubNumAdultMales, UINT8 *pubNumAdultFemales ); +void DetermineCreatureTownCompositionBasedOnTacticalInformation( UINT16 *pubNumCreatures, + UINT16 *pubNumYoungMales, UINT16 *pubNumYoungFemales, + UINT16 *pubNumAdultMales, UINT16 *pubNumAdultFemales ); -void DetermineOtherCreatureTownCompositionBasedOnTacticalInformation( UINT8* pubNumCreatures, UINT8* pubNumBloodcats, UINT8* pubNumZombies, UINT8* pubNumBandits ); +void DetermineOtherCreatureTownCompositionBasedOnTacticalInformation( UINT16* pubNumCreatures, UINT16* pubNumBloodcats, UINT16* pubNumZombies, UINT16* pubNumBandits ); BOOLEAN PlayerGroupIsInACreatureInfestedMine(); @@ -114,4 +114,4 @@ extern CREATURECOMPOSITION gCreatureComposition[ MAX_NUMBER_OF_CREATURE_COMPOSIT // Flugente: reset code for creature attacks void ResetCreatureAttackVariables(); -#endif +#endif diff --git a/Strategic/Facilities.cpp b/Strategic/Facilities.cpp index aa7f0b77..47283650 100644 --- a/Strategic/Facilities.cpp +++ b/Strategic/Facilities.cpp @@ -357,7 +357,7 @@ void UpdateStrategicDetectionLevel( ) // Run through list of player-characters while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character truly valid? if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && @@ -499,7 +499,7 @@ void UpdateSkyriderCostModifier() while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character truly valid? if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && @@ -562,7 +562,7 @@ void UpdateFacilityUsageCosts( ) while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character truly valid? if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && @@ -704,7 +704,7 @@ INT32 MineIncomeModifierFromFacility( UINT8 ubMine ) UINT8 ubCounter = 0; while (gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character truly valid? if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && @@ -1112,7 +1112,7 @@ void HandleHourlyRisks() while (gCharactersList[iCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // Is character truly valid? if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && @@ -1994,7 +1994,7 @@ INT32 GetTotalFacilityHourlyCosts( BOOLEAN fPositive ) // Run through list of player-characters while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // Is character truly valid? if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && diff --git a/Strategic/Game Event Hook.cpp b/Strategic/Game Event Hook.cpp index a268b3fa..17f823cc 100644 --- a/Strategic/Game Event Hook.cpp +++ b/Strategic/Game Event Hook.cpp @@ -225,7 +225,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) //If a merc gets hired and they dont show up immediately, the merc gets added to the queue and shows up // uiTimeTillMercArrives minutes later case EVENT_DELAYED_HIRING_OF_MERC: - MercArrivesCallback( (UINT8) pEvent->uiParam ); + MercArrivesCallback( (UINT16) pEvent->uiParam ); break; //handles the life insurance contract for a merc from AIM. case EVENT_HANDLE_INSURED_MERCS: @@ -233,7 +233,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) break; //handles when a merc is killed an there is a life insurance payout case EVENT_PAY_LIFE_INSURANCE_FOR_DEAD_MERC: - InsuranceContractPayLifeInsuranceForDeadMerc( (UINT8) pEvent->uiParam ); + InsuranceContractPayLifeInsuranceForDeadMerc( (UINT16) pEvent->uiParam ); break; //gets called every day at midnight. case EVENT_MERC_DAILY_UPDATE: @@ -251,14 +251,17 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) break; //When a merc is supposed to leave case EVENT_MERC_CONTRACT_OVER: - MercsContractIsFinished( (UINT8) pEvent->uiParam ); + MercsContractIsFinished( pEvent->uiParam ); break; case EVENT_ADDSOLDIER_TO_UPDATE_BOX: + { // if the grunt is currently active, add to update box - if( Menptr[ pEvent->uiParam ].bActive ) + SoldierID usID = pEvent->uiParam; + if ( usID != NOBODY && usID->bActive ) { - AddSoldierToWaitingListQueue( &( Menptr[ pEvent->uiParam ] ) ); + AddSoldierToWaitingListQueue( usID ); } + } break; case EVENT_SET_MENU_REASON: AddReasonToWaitingListQueue( (UINT8) pEvent->uiParam ); @@ -392,10 +395,10 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) HandleEnricoEmail(); break; case EVENT_INSURANCE_INVESTIGATION_STARTED: - StartInsuranceInvestigation( (UINT8) pEvent->uiParam ); + StartInsuranceInvestigation( (UINT16) pEvent->uiParam ); break; case EVENT_INSURANCE_INVESTIGATION_OVER: - EndInsuranceInvestigation( (UINT8) pEvent->uiParam ); + EndInsuranceInvestigation( (UINT16) pEvent->uiParam ); break; case EVENT_TEMPERATURE_UPDATE: UpdateTemperature( (UINT8) pEvent->uiParam ); @@ -429,7 +432,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) BeginContractRenewalSequence( ); break; case EVENT_RPC_WHINE_ABOUT_PAY: - RPCWhineAboutNoPay( (UINT8) pEvent->uiParam ); + RPCWhineAboutNoPay( pEvent->uiParam ); break; case EVENT_HAVENT_MADE_IMP_CHARACTER_EMAIL: diff --git a/Strategic/Game Init.cpp b/Strategic/Game Init.cpp index d4dc7cd2..042d0ad7 100644 --- a/Strategic/Game Init.cpp +++ b/Strategic/Game Init.cpp @@ -842,19 +842,14 @@ fFirstTimeInMapScreen = TRUE; BOOLEAN AnyMercsHired( ) { - INT32 cnt; - SOLDIERTYPE *pTeamSoldier; - INT16 bLastTeamID; - - // Find first guy availible in team - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + // Find first guy available in team + SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pTeamSoldier++) + for ( ; id <= bLastTeamID; ++id) { - if ( pTeamSoldier->bActive ) + if ( id->bActive ) { return( TRUE ); } diff --git a/Strategic/Hourly Update.cpp b/Strategic/Hourly Update.cpp index e87e189e..6984172e 100644 --- a/Strategic/Hourly Update.cpp +++ b/Strategic/Hourly Update.cpp @@ -366,18 +366,18 @@ UINT16 LarryItems[ NUM_LARRY_ITEMS ][ 3 ] = void HourlyLarryUpdate() { - SOLDIERTYPE * pSoldier = NULL; - SOLDIERTYPE * pOtherSoldier = NULL; - INT8 bSlot = NO_SLOT, bBoozeSlot; - UINT16 usTemptation = 0; - UINT16 usCashAmount; - BOOLEAN fBar = FALSE; - OBJECTTYPE* pObj = NULL; - BOOLEAN fTookDrugs = FALSE; + SOLDIERTYPE *pSoldier = NULL; + SOLDIERTYPE *pOtherSoldier = NULL; + INT8 bSlot = NO_SLOT, bBoozeSlot; + UINT16 usTemptation = 0; + UINT16 usCashAmount; + BOOLEAN fBar = FALSE; + OBJECTTYPE* pObj = NULL; + BOOLEAN fTookDrugs = FALSE; - for( UINT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = id; if ( pSoldier && pSoldier->bActive && !pSoldier->flags.fMercAsleep && ( pSoldier->ubProfile == LARRY_NORMAL || pSoldier->ubProfile == LARRY_DRUNK || pSoldier->HasBackgroundFlag( BACKGROUND_DRUGUSE ) ) ) { @@ -489,9 +489,9 @@ void HourlyLarryUpdate() { // anv: snitches stop mercs from getting wasted BOOLEAN fSnitchStoppedBehaviour = FALSE; - for( INT32 cnt2 = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt2 ) + for( SoldierID id2 = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id2 ) { - pOtherSoldier = MercPtrs[ cnt2 ]; + pOtherSoldier = id2; // note - snitches stop others, but can get wasted themselves (if they have drug use specifically set in background...) if( pOtherSoldier && !pOtherSoldier->flags.fBetweenSectors && pOtherSoldier->bActive && !pOtherSoldier->flags.fMercAsleep && pSoldier->ubProfile != pOtherSoldier->ubProfile ) { @@ -617,12 +617,12 @@ void HourlyLarryUpdate() // Flugente: mercs that are smokers occasionally consume smokes if they have some in their inventory void HourlySmokerUpdate( ) { - SOLDIERTYPE * pSoldier = NULL; - OBJECTTYPE* pObj = NULL; + SOLDIERTYPE *pSoldier = NULL; + OBJECTTYPE *pObj = NULL; - for ( UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) + for ( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id ) { - pSoldier = MercPtrs[cnt]; + pSoldier = id; if ( pSoldier && pSoldier->bActive && !pSoldier->flags.fMercAsleep ) { @@ -652,9 +652,9 @@ void HourlyDisabilityUpdate( ) SOLDIERTYPE* pSoldier = NULL; SOLDIERTYPE* pOtherSoldier = NULL; - for ( UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) + for ( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id ) { - pSoldier = MercPtrs[cnt]; + pSoldier = id; if ( pSoldier && pSoldier->bActive ) { @@ -669,9 +669,9 @@ void HourlyDisabilityUpdate( ) { // anv: snitches stop mercs from getting wasted BOOLEAN fSnitchStoppedBehaviour = FALSE; - for ( INT32 cnt2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt2 ) + for ( SoldierID id2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; id2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id2 ) { - pOtherSoldier = MercPtrs[cnt2]; + pOtherSoldier = id2; // note - snitches stop others, but can get wasted themselves (if they have drug use specifically set in background...) if ( pOtherSoldier && !pOtherSoldier->flags.fBetweenSectors && pOtherSoldier->bActive && !pOtherSoldier->flags.fMercAsleep && pSoldier->ubProfile != pOtherSoldier->ubProfile ) @@ -765,9 +765,9 @@ void HourlyStealUpdate() SOLDIERTYPE * pSoldier = NULL; SOLDIERTYPE * pOtherSoldier = NULL; - for( INT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) + for( SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; // 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 @@ -799,9 +799,9 @@ void HourlyStealUpdate() // anv: snitches prevent scrounging in the same sector BOOLEAN fSnitchStoppedBehaviour = FALSE; - for ( UINT32 cnt2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt2 ) + for ( SoldierID cnt2 = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt2 <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt2 ) { - pOtherSoldier = MercPtrs[cnt2]; + pOtherSoldier = cnt2; // note - snitches stop others, but can scrounge themselves (if they have scrounging specifically set in background...) if ( pOtherSoldier diff --git a/Strategic/LuaInitNPCs.cpp b/Strategic/LuaInitNPCs.cpp index 8ce8aa3b..cf410c95 100644 --- a/Strategic/LuaInitNPCs.cpp +++ b/Strategic/LuaInitNPCs.cpp @@ -221,7 +221,7 @@ static int l_iStringToUse(lua_State *L); static int l_StopVideo(lua_State *L); static int l_StartVideo(lua_State *L); -UNDERGROUND_SECTORINFO* NewUndergroundNode( UINT8 ubSectorX, UINT8 ubSectorY, UINT8 ubSectorZ ); +extern UNDERGROUND_SECTORINFO* NewUndergroundNode( UINT8 ubSectorX, UINT8 ubSectorY, UINT8 ubSectorZ ); BOOLEAN LoadLuaGlobalFromLoadGameFile( HWFILE hFile ); BOOLEAN SaveLuaGlobalToSaveGameFile( HWFILE hFile ); @@ -927,7 +927,7 @@ UINT16 PROFILLUA_sSectorX; UINT16 PROFILLUA_sSectorY; UINT8 PROFILLUA_bSectorZ; UINT8 PROFILLUA_Level; -UINT8 PROFILLUA_ubID; +UINT16 PROFILLUA_ubID; UINT32 PROFILLUA_sGridNo; UINT8 PROFILLUA_ubDirectiono; UINT8 PROFILLUA_bTeam; @@ -937,7 +937,7 @@ UINT16 PROFILLUA2_sSectorX; UINT16 PROFILLUA2_sSectorY; UINT8 PROFILLUA2_bSectorZ; UINT32 PROFILLUA2_sGridNo; -UINT8 PROFILLUA2_ubID; +UINT16 PROFILLUA2_ubID; LUA_GLOBAL gLuaGlobal[1000]; @@ -2372,7 +2372,7 @@ static int l_WhoIsThere2 (lua_State *L) { UINT32 sGridNo = lua_tointeger(L,1); INT8 bLevel = lua_tointeger(L,2); - UINT8 Val = WhoIsThere2( sGridNo, bLevel ); + UINT16 Val = WhoIsThere2( sGridNo, bLevel ); lua_pushinteger(L, Val); } @@ -2716,8 +2716,9 @@ void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, B LuaFunction( _LS.L, "HandleSectorLiberation" ).Param( sSectorX ).Param( sSectorY ).Param( bSectorZ ).Param( fFirstTime ).Call( 4 ); } -void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, - INT32 sGridNo, UINT8 bLevel, UINT8 ubId, +void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, + INT8 bSectorZ, + INT32 sGridNo, UINT8 bLevel, SoldierID ubId, UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill ) { const char* filename = "scripts\\Overhead.lua"; @@ -2731,7 +2732,7 @@ void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, INT8 bSec SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget ); - LuaFunction( _LS.L, "HandleInteractiveActionResult" ).Param( sSectorX ).Param( sSectorY ).Param( bSectorZ ).Param( sGridNo ).Param( bLevel ).Param( ubId ).Param( usActionType ).Param( sLuaactionid ).Param( difficulty ).Param( skill ).Call( 10 ); + LuaFunction( _LS.L, "HandleInteractiveActionResult" ).Param( sSectorX ).Param( sSectorY ).Param( bSectorZ ).Param( sGridNo ).Param( bLevel ).Param( ubId.i ).Param( usActionType ).Param( sLuaactionid ).Param( difficulty ).Param( skill ).Call( 10 ); } void LuaRecruitRPCAdditionalHandling( UINT8 usProfile ) @@ -2936,7 +2937,7 @@ BOOLEAN LuaIDScripts(UINT8 Init, UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 u SOLDIERTYPE * FindSoldierByProfileID_( UINT8 ubProfileID ) { - UINT8 ubLoop, ubLoopLimit; + UINT16 ubLoop, ubLoopLimit; SOLDIERTYPE * pSoldier; ubLoopLimit = MAX_NUM_SOLDIERS; @@ -2953,41 +2954,19 @@ SOLDIERTYPE * FindSoldierByProfileID_( UINT8 ubProfileID ) SOLDIERTYPE * FindSoldierByProfileID2( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly ) { - UINT8 cnt2, ubLoopLimit; - SOLDIERTYPE * pSoldier; + SoldierID soldier = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[CIV_TEAM].bLastID; - ubLoopLimit = gTacticalStatus.Team[CIV_TEAM].bLastID; - - cnt2 = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt2 ]; cnt2 <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt2++ ,pSoldier++) + for ( ; soldier <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++soldier) { - if ( pSoldier->bActive && pSoldier->bInSector ) + if ( soldier->bActive && soldier->bInSector ) { - return( pSoldier ); + return( soldier ); } } return( NULL ); } -BOOLEAN FindSoldier(SOLDIERTYPE **ppSoldier, UINT16 usSoldierIndex, BOOLEAN fPlayerMercsOnly) -{ - *ppSoldier = NULL; - - if (usSoldierIndex >= TOTAL_SOLDIERS) - { - return(FALSE); - } - - if (MercPtrs[usSoldierIndex]->bActive) - { - *ppSoldier = MercPtrs[usSoldierIndex]; - return(TRUE); - } - else - { - return(FALSE); - } -} //-------------------------------- @@ -3601,7 +3580,7 @@ static int l_gubBoxerID(lua_State *L) if ( n >= 2 ) { UINT8 val = lua_tointeger( L, 1 ); - UINT8 val2 = lua_tointeger( L, 2 ); + UINT16 val2 = lua_tointeger( L, 2 ); if (val <= 2) { @@ -4748,7 +4727,7 @@ static int l_NumMercsNear(lua_State *L) { UINT8 ubProfileID = lua_tointeger(L,1); UINT8 ubMaxDist = lua_tointeger(L,2); - UINT8 ID2 = NumMercsNear( ubProfileID, ubMaxDist ); + UINT16 ID2 = NumMercsNear( ubProfileID, ubMaxDist ); lua_pushinteger(L, ID2); } @@ -5800,7 +5779,7 @@ static int l_SetOffPanicBombs (lua_State *L) { if ( lua_gettop(L) >= 2 ) { - UINT8 ubID = lua_tointeger(L,1); + UINT16 ubID = lua_tointeger(L,1); INT8 bPanicTrigger = lua_tointeger(L,2); SetOffPanicBombs( ubID, bPanicTrigger ); } @@ -5853,7 +5832,7 @@ static int l_MakeNoise(lua_State *L) if ( lua_gettop(L) >= 6 ) { - UINT8 ubNoiseMaker = lua_tointeger(L,1); + UINT16 ubNoiseMaker = lua_tointeger(L,1); INT32 sGridNo = lua_tointeger(L,2); INT8 bLevel = lua_tointeger(L,3); UINT8 ubTerrType = lua_tointeger(L,4); @@ -5996,7 +5975,6 @@ return 0; static int l_ActionInProgress(lua_State *L) { - UINT8 cnt2; SOLDIERTYPE * pSoldier; if (lua_gettop(L) >= 2) @@ -6014,9 +5992,10 @@ static int l_ActionInProgress(lua_State *L) } else { - cnt2 = gTacticalStatus.Team[CIV_TEAM].bFirstID; - for (pSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[CIV_TEAM].bLastID; cnt2++, pSoldier++) + SoldierID cnt2 = gTacticalStatus.Team[CIV_TEAM].bFirstID; + for ( ; cnt2 <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt2) { + pSoldier = cnt2; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->ubProfile == NO_PROFILE) { pSoldier->aiData.bActionInProgress = ExecuteAction(pSoldier); @@ -6358,7 +6337,7 @@ static int l_ActivateSwitchInGridNo(lua_State *L) { if (lua_gettop(L) >= 2) { - UINT8 ubID = lua_tointeger(L, 1); + UINT16 ubID = lua_tointeger(L, 1); INT32 sGridNo = lua_tointeger(L, 2); if (!TileIsOutOfBounds(sGridNo) && ubID < TOTAL_SOLDIERS) @@ -7129,7 +7108,7 @@ static int l_ACTION_ITEM_SEX (lua_State *L) if ( ! (gTacticalStatus.uiFlags & INCOMBAT) ) { - UINT8 ubID; + SoldierID soldier; OBJECTTYPE DoorCloser; INT16 sTeleportSpot; INT16 sDoorSpot; @@ -7142,16 +7121,16 @@ static int l_ACTION_ITEM_SEX (lua_State *L) if ( TileIsOutOfBounds(sGridNo) ) return 0; - ubID = WhoIsThere2( sGridNo, 0 ); - if ( (ubID != NOBODY) && (MercPtrs[ ubID ]->bTeam == gbPlayerNum) ) + soldier = WhoIsThere2( sGridNo, 0 ); + if ( (soldier != NOBODY) && (soldier->bTeam == gbPlayerNum) ) { - if ( InARoom( sGridNo, &usRoom ) && InARoom( MercPtrs[ ubID ]->sOldGridNo, &usOldRoom ) && usOldRoom != usRoom ) + if ( InARoom( sGridNo, &usRoom ) && InARoom( soldier->sOldGridNo, &usOldRoom ) && usOldRoom != usRoom ) { // also require there to be a miniskirt civ in the room if ( HookerInRoom( usRoom ) ) { // stop the merc... - MercPtrs[ ubID ]->EVENT_StopMerc( MercPtrs[ ubID ]->sGridNo, MercPtrs[ ubID ]->ubDirection ); + soldier->EVENT_StopMerc( soldier->sGridNo, soldier->ubDirection ); if ( sGridNo == gModSettings.iCarlaDoorGridNo +1 ) { @@ -7181,25 +7160,25 @@ static int l_ACTION_ITEM_SEX (lua_State *L) PerformItemAction( sDoorSpot, &DoorCloser ); // Flugente: additional dialogue - AdditionalTacticalCharacterDialogue_CallsLua( MercPtrs[ubID], ADE_SEX ); + AdditionalTacticalCharacterDialogue_CallsLua( soldier, ADE_SEX ); // have sex HandleNPCDoAction( 0, NPC_ACTION_SEX, 0 ); // move the merc outside of the room again - sTeleportSpot = FindGridNoFromSweetSpotWithStructData( MercPtrs[ ubID ], STANDING, sTeleportSpot, 2, &ubDirection, FALSE ); - MercPtrs[ ubID ]->ChangeSoldierState( STANDING, 0, TRUE ); - TeleportSoldier( MercPtrs[ ubID ], sTeleportSpot, FALSE ); + sTeleportSpot = FindGridNoFromSweetSpotWithStructData( soldier, STANDING, sTeleportSpot, 2, &ubDirection, FALSE ); + soldier->ChangeSoldierState( STANDING, 0, TRUE ); + TeleportSoldier( soldier, sTeleportSpot, FALSE ); - HandleMoraleEvent( MercPtrs[ ubID ], MORALE_SEX, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); - FatigueCharacter( MercPtrs[ ubID ] ); - FatigueCharacter( MercPtrs[ ubID ] ); - FatigueCharacter( MercPtrs[ ubID ] ); - FatigueCharacter( MercPtrs[ ubID ] ); - DirtyMercPanelInterface( MercPtrs[ ubID ], DIRTYLEVEL1 ); + HandleMoraleEvent( soldier, MORALE_SEX, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); + FatigueCharacter( soldier ); + FatigueCharacter( soldier ); + FatigueCharacter( soldier ); + FatigueCharacter( soldier ); + DirtyMercPanelInterface( soldier, DIRTYLEVEL1 ); // Flugente: we might get a disease from this... - HandlePossibleInfection( MercPtrs[ubID], NULL, INFECTION_TYPE_SEX ); + HandlePossibleInfection( soldier, NULL, INFECTION_TYPE_SEX ); } } } @@ -7400,7 +7379,7 @@ static int l_SetOffBombsByFrequency (lua_State *L) if ( lua_gettop(L) >= 2 ) { INT8 ACTION = lua_tointeger(L,1); - UINT8 ID = lua_tointeger(L,2); + SoldierID ID = lua_tointeger(L,2); if (ACTION >= 1 || ACTION <=4) @@ -7580,13 +7559,12 @@ static int l_EVENT_InitNewSoldierAnim (lua_State *L) { if ( lua_gettop(L) >= 3 ) { - UINT8 ubTargetNPC = lua_tointeger(L,1); - //if (i == 2 ) BodyType = lua_tointeger(L,i); + UINT16 ubTargetNPC = lua_tointeger(L,1); UINT32 ANIM = lua_tointeger(L,2); - INT32 cnt = lua_tointeger(L,3); - //if (i == 4 ) PlayerControl = lua_tointeger(L,i); + SoldierID solID = lua_tointeger(L,3); - if (ubTargetNPC > NOBODY) + // This is not my favorite, but now it will at least work. -Asdow + if (ubTargetNPC != NOBODY) { SOLDIERTYPE* pSoldier = FindSoldierByProfileID ( ubTargetNPC, TRUE ); if ( pSoldier )//&& pSoldier->ubBodyType == BodyType ) @@ -7595,10 +7573,10 @@ static int l_EVENT_InitNewSoldierAnim (lua_State *L) pSoldier->EVENT_InitNewSoldierAnim( ANIM, 0, TRUE ); } } - else if (ubTargetNPC == NOBODY) + else { - if ( MercPtrs[ cnt ]->bInSector ) - MercPtrs[ cnt ]->EVENT_InitNewSoldierAnim( ANIM, 0, TRUE ); + if ( solID != NOBODY && solID->bInSector ) + solID->EVENT_InitNewSoldierAnim( ANIM, 0, TRUE ); } } @@ -7637,15 +7615,15 @@ static int l_SetEnterCombatMode (lua_State *L) if ( lua_gettop(L) >= 2 ) { UINT16 group = lua_tointeger(L,1); - UINT8 ubID = lua_tointeger(L,2); + SoldierID ubID = lua_tointeger(L,2); if ( ubID == NOBODY ) return 0; SOLDIERTYPE* pGoon = NULL; - for ( UINT8 ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for ( SoldierID ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop) { - pGoon = MercPtrs[ ubLoop ]; + pGoon = ubLoop; if ( pGoon->ubCivilianGroup == group && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ ubID ] == SEEN_CURRENTLY ) { MakeCivHostile(pGoon); @@ -7676,9 +7654,12 @@ static int l_MakeMercPtrsHostile (lua_State *L) { if ( lua_gettop(L) >= 1 ) { - UINT8 ubID = lua_tointeger(L,1); + SoldierID ubID = lua_tointeger(L,1); - MakeCivHostile(MercPtrs[ ubID ]); + if ( ubID != NOBODY ) + { + MakeCivHostile(ubID); + } } return 0; @@ -7735,7 +7716,7 @@ static int l_EVENT_SoldierGotHit (lua_State *L) DeleteTalkingMenu(); if ( pTarget2->stats.bLife >= 0 ) { - pTarget2->EVENT_SoldierGotHit( 1, 100, 10, pTarget2->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + pTarget2->EVENT_SoldierGotHit( 1, 100, 10, pTarget2->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); } } } @@ -7761,13 +7742,13 @@ BOOLEAN Bool; if (i == 2 ) bNewSide = lua_tointeger(L,i); } - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive ) + if ( ubID->bInSector && ubID->bActive ) Bool = TRUE; else Bool = FALSE; if ( Bool == TRUE ) - { pSoldier = MercPtrs[ ubID ]; + { pSoldier = ubID; if (pSoldier) { pSoldier->bSide = bNewSide; @@ -8068,12 +8049,12 @@ static int l_ChangeMercPtrsTeam (lua_State *L) { if ( lua_gettop(L) >= 2 ) { - UINT8 UID = lua_tointeger(L,1); + SoldierID UID = lua_tointeger(L,1); INT8 Side = lua_tointeger(L,2); - if ( MercPtrs[UID] && MercPtrs[ UID ]->bInSector && MercPtrs[ UID ]->bActive ) + if ( UID != NOBODY && UID->bInSector && UID->bActive ) { - MercPtrs[UID]->bSide = Side; + UID->bSide = Side; } } @@ -8470,20 +8451,17 @@ static int l_CreateItemInvOrFloor( lua_State *L ) { if ( lua_gettop( L ) >= 2 ) { - UINT16 ubID = lua_tointeger( L, 1 ); + SoldierID ubID = lua_tointeger( L, 1 ); UINT16 usItem = lua_tointeger( L, 2 ); - if ( ubID < TOTAL_SOLDIERS ) + if ( ubID != NOBODY) { - SOLDIERTYPE* pSoldier = MercPtrs[ubID]; - if ( pSoldier ) - { - CreateItem( usItem, 100, &gTempObject ); + SOLDIERTYPE* pSoldier = ubID; + CreateItem( usItem, 100, &gTempObject ); - if ( !AutoPlaceObject( pSoldier, &gTempObject, TRUE ) ) - { - AddItemToPool( pSoldier->sGridNo, &gTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); - } + if ( !AutoPlaceObject( pSoldier, &gTempObject, TRUE ) ) + { + AddItemToPool( pSoldier->sGridNo, &gTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); } } } @@ -8495,12 +8473,12 @@ static int l_DestroyOneItemInInventory( lua_State *L ) { if ( lua_gettop( L ) >= 2 ) { - UINT16 ubID = lua_tointeger( L, 1 ); + SoldierID ubID = lua_tointeger( L, 1 ); UINT16 usItem = lua_tointeger( L, 2 ); if ( ubID < TOTAL_SOLDIERS ) { - MercPtrs[ubID]->DestroyOneItemInInventory( usItem ); + ubID->DestroyOneItemInInventory( usItem ); } } @@ -8513,12 +8491,12 @@ static int l_HasItemInInventory( lua_State *L ) if ( lua_gettop( L ) >= 2 ) { - UINT16 ubID = lua_tointeger( L, 1 ); + SoldierID ubID = lua_tointeger( L, 1 ); UINT16 usItem = lua_tointeger( L, 2 ); if ( ubID < TOTAL_SOLDIERS ) { - Bool = MercPtrs[ubID]->HasItemInInventory( usItem ); + Bool = ubID->HasItemInInventory( usItem ); } } @@ -8529,36 +8507,25 @@ static int l_HasItemInInventory( lua_State *L ) static int l_CreateKeyProfInvAndAddItemToPool(lua_State *L) { - UINT8 n = lua_gettop(L); - int i; - OBJECTTYPE Object; - UINT8 ubNumberOfKeys; - UINT8 ubKeyIdValue; - UINT8 ubTargetNPC; - SOLDIERTYPE *pSoldier; - INT32 iWorldItem; - INT32 sGridNo; - UINT8 bLevel; - - for (i = 1; i <= n; i++) + if ( lua_gettop( L ) >= 5 ) { - if (i == 1) ubTargetNPC = lua_tointeger(L, i); - if (i == 2) ubNumberOfKeys = lua_tointeger(L, i); - if (i == 3) ubKeyIdValue = lua_tointeger(L, i); - if (i == 4) sGridNo = lua_tointeger(L, i); - if (i == 5) bLevel = lua_tointeger(L, i); + INT32 iWorldItem; + UINT8 ubTargetNPC = lua_tointeger( L, 1 ); + UINT8 ubNumberOfKeys = lua_tointeger( L, 2 ); + UINT8 ubKeyIdValue = lua_tointeger( L, 3 ); + INT32 sGridNo = lua_tointeger( L, 4 ); + UINT8 bLevel = lua_tointeger( L, 5 ); + + SOLDIERTYPE *pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); + + if ( pSoldier ) + { + OBJECTTYPE Key; + CreateKeyObject( &Key, ubNumberOfKeys, ubKeyIdValue ); + AutoPlaceObject( pSoldier, &Key, TRUE ); + AddItemToPoolAndGetIndex( sGridNo, &Key, -1, bLevel, 0, 0, -1, &iWorldItem ); + } } - - pSoldier = FindSoldierByProfileID(ubTargetNPC, FALSE); - - if (pSoldier) - { - OBJECTTYPE Key; - CreateKeyObject(&Key, ubNumberOfKeys, ubKeyIdValue); - AutoPlaceObject(pSoldier, &Key, TRUE); - AddItemToPoolAndGetIndex(sGridNo, &Key, -1, bLevel, 0, 0, -1, &iWorldItem); - } - return 0; } @@ -8879,46 +8846,33 @@ static int l_GetDirection (lua_State *L) static int l_ubID (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT8 ubTargetNPC = 0; - SOLDIERTYPE *pSoldier; - - UINT32 ubID = 0; - - for (i= 1; i<=n; i++ ) + if (lua_gettop(L) >= 1) { - if (i == 1 ) - ubTargetNPC = lua_tointeger(L,i); + UINT8 ubTargetNPC = 0; + SOLDIERTYPE *pSoldier; + + ubTargetNPC = lua_tointeger(L, 1); + pSoldier = FindSoldierByProfileID(ubTargetNPC, FALSE); + if (pSoldier) + lua_pushinteger(L, pSoldier->ubID); + else + lua_pushinteger(L, -1); } - - pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE); - if ( pSoldier ) - ubID = pSoldier->ubID; - else - ubID = -1; - - lua_pushinteger(L, ubID); - return 1; } //------------ static int l_GetFirstID (lua_State *L) { - UINT8 n = lua_gettop(L); - int i; - UINT8 team = 0; - UINT32 id; - - for (i= 1; i<=n; i++ ) + if (lua_gettop(L) >= 1) { - if (i == 1 ) team = lua_tointeger(L,i); + UINT8 team = 0; + UINT32 id; + + team = lua_tointeger(L, 1); + id = gTacticalStatus.Team[team].bFirstID; + + lua_pushinteger(L, id); } - - id = gTacticalStatus.Team[ team ].bFirstID; - - lua_pushinteger(L, id); - return 1; } @@ -8961,145 +8915,111 @@ static int l_SetCivGroupHostile (lua_State *L) //Merc static int l_CheckMercPtrsAssignment (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - INT32 squad = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + + if ( ubID != NOBODY ) + { + INT32 squad = ubID->bAssignment; + + lua_pushinteger( L, squad ); + } } - - squad = MercPtrs[ ubID ]->bAssignment; - - lua_pushinteger(L, squad); - + return 1; } static int l_CheckMercPtrsActive (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + BOOLEAN Bool = FALSE; + + if ( ubID != NOBODY && ubID->bActive ) + Bool = TRUE; + else + Bool = FALSE; + + lua_pushboolean( L, Bool ); } - - if ( MercPtrs[ ubID ]->bActive ) - Bool = TRUE; - else - Bool = FALSE; - - lua_pushboolean(L, Bool); - + return 1; } static int l_CheckMercPtsrInSector (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - lua_pushboolean(L, Bool); + SoldierID ubID = lua_tointeger( L, 1 ); + BOOLEAN Bool = FALSE; + if ( ubID != NOBODY && ubID->bInSector ) + Bool = TRUE; + else + Bool = FALSE; + + lua_pushboolean( L, Bool ); + } return 1; } static int l_GetMercPtsrProfileID (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - UINT8 profil = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - } - - profil = MercPtrs[ ubID ]->ubProfile; - - lua_pushinteger(L, profil); + SoldierID ubID = lua_tointeger( L, 1 ); + if ( ubID != NOBODY ) + { + UINT8 profil = ubID->ubProfile; + lua_pushinteger( L, profil ); + } + } return 1; } static int l_CheckMercPtrsLife (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - UINT8 life = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - } - - life = MercPtrs[ ubID ]->stats.bLife; - - lua_pushinteger(L, life); + SoldierID ubID = lua_tointeger( L, 1 ); + if ( ubID != NOBODY ) + { + INT8 life = ubID->stats.bLife; + + lua_pushinteger( L, life ); + } + } return 1; } static int l_SoldierGiveItem (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID1 = 0; - UINT32 ubID2 = 0; - -SOLDIERTYPE *pSoldier; -SOLDIERTYPE *pSoldier2; -BOOLEAN bol = FALSE; -UINT32 item; - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 3 ) { - if (i == 1 ) ubID1 = lua_tointeger(L,i); - if (i == 2 ) ubID2 = lua_tointeger(L,i); - if (i == 3 ) item = lua_tointeger(L,i); - } - + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pSoldier2; + BOOLEAN bol = FALSE; + + SoldierID ubID1 = lua_tointeger( L, 1 ); + SoldierID ubID2 = lua_tointeger( L, 2 ); + UINT32 item = lua_tointeger( L, 3 ); + + if ( ubID1 != NOBODY && ubID2 != NOBODY) + { pSoldier = FindSoldierByProfileID( ubID1, FALSE ); - pSoldier2 = FindSoldierByProfileID( ubID2, FALSE ); - - if ( !pSoldier || !pSoldier2 ) - bol = FALSE; - else - bol = TRUE; - - if ( bol == TRUE ) - { + + if ( !pSoldier || !pSoldier2 ) + bol = FALSE; + else + bol = TRUE; + + if ( bol == TRUE ) + { // Look for letter.... { INT8 bInvPos; @@ -9109,81 +9029,64 @@ UINT32 item; AssertMsg( bInvPos != NO_SLOT, "Interface Dialogue.C: Gift item does not exist in NPC." ); - SoldierGiveItem( pSoldier, pSoldier2, &(pSoldier->inv[ bInvPos ] ), bInvPos ); + SoldierGiveItem( pSoldier, pSoldier2, &(pSoldier->inv[bInvPos]), bInvPos ); } } - + } + } return 0; } static int l_CheckMercPtsrTeleportToSector (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - INT16 SectorX = 0; - INT16 SectorY = 0; - INT8 SectorZ = 0; - UINT32 GridNo = 0; - SOLDIERTYPE * pSoldier; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 5 ) { - if (i == 1 ) SectorX = lua_tointeger(L,i); - if (i == 2 ) SectorY = lua_tointeger(L,i); - if (i == 3 ) SectorZ = lua_tointeger(L,i); - if (i == 4 ) GridNo = lua_tointeger(L,i); - if (i == 5 ) ubID = lua_tointeger(L,i); - } - - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; + SoldierID ubID = NOBODY; + INT16 SectorX = 0; + INT16 SectorY = 0; + INT8 SectorZ = 0; + UINT32 GridNo = 0; + SOLDIERTYPE *pSoldier; - if (pSoldier) + SectorX = lua_tointeger( L, 1 ); + SectorY = lua_tointeger( L, 2 ); + SectorZ = lua_tointeger( L, 3 ); + GridNo = lua_tointeger( L, 4 ); + ubID = lua_tointeger( L, 5 ); + + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - pSoldier->sSectorX = SectorX; - pSoldier->sSectorY = SectorY; - pSoldier->bSectorZ = SectorZ; + pSoldier = ubID; - // Set gridno - pSoldier->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - pSoldier->usStrategicInsertionData = GridNo; + if ( pSoldier ) + { + pSoldier->sSectorX = SectorX; + pSoldier->sSectorY = SectorY; + pSoldier->bSectorZ = SectorZ; + + // Set gridno + pSoldier->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + pSoldier->usStrategicInsertionData = GridNo; + } } } - return 0; } static int l_GetMercPtrsGroup (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0; - - UINT8 GroupID = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + + if ( ubID != NOBODY) + { + UINT8 GroupID = ubID->ubGroupID; + lua_pushinteger( L, GroupID ); + } } - - GroupID = MercPtrs[ ubID ]->ubGroupID; - - - lua_pushinteger(L, GroupID); - return 1; } @@ -9191,11 +9094,11 @@ static int l_WearGasMaskIfAvailable(lua_State *L) { if ( lua_gettop( L ) >= 1 ) { - UINT8 ubID = lua_tointeger( L, 1 ); + SoldierID ubID = lua_tointeger( L, 1 ); - if ( MercPtrs[ubID] && MercPtrs[ubID]->bInSector && MercPtrs[ubID]->bActive ) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - WearGasMaskIfAvailable( MercPtrs[ubID] ); + WearGasMaskIfAvailable( ubID ); } } @@ -9204,29 +9107,13 @@ static int l_WearGasMaskIfAvailable(lua_State *L) static int l_SetNewSituationMercPtsr(lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; + if ( lua_gettop( L ) >= 1 ) + { + SoldierID ubID = lua_tointeger( L, 1 ); - for (i= 1; i<=n; i++ ) - { - if (i == 1 ) ubID = lua_tointeger(L,i); - } - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - SetNewSituation(pSoldier); + SetNewSituation( ubID); } } @@ -9274,388 +9161,253 @@ static int l_gubPublicNoiseVolume(lua_State *L) static int l_AnimMercPtsrInSector (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - - UINT32 ubID = 0,Anim = 0; - - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) Anim = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + UINT16 Anim = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector ) + ubID->EVENT_InitNewSoldierAnim( Anim, 0, TRUE ); } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->EVENT_InitNewSoldierAnim( Anim, 0, TRUE ); - return 0; } static int l_AnimMercPtsrfAIFlags(lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + + if ( ubID != NOBODY && ubID->bInSector ) + ubID->aiData.fAIFlags |= AI_HANDLE_EVERY_FRAME; } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->aiData.fAIFlags |= AI_HANDLE_EVERY_FRAME; - return 0; } static int l_AnimMercPtsrusStrategicInsertionData(lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,GridNo = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) GridNo = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + INT32 GridNo = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector ) + ubID->usStrategicInsertionData = GridNo; } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->usStrategicInsertionData = GridNo; - return 0; } static int l_AnimMercPtsrubStrategicInsertionCode (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,GridNo = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) GridNo = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + INT32 GridNo = lua_tointeger( L, 2 ); + + + if ( ubID != NOBODY && ubID->bInSector ) + ubID->ubStrategicInsertionCode = GridNo; } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->ubStrategicInsertionCode = GridNo; - return 0; } static int l_WhichBuddy (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID1 = 0,ubID2 = 0,bBuddyIndex = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID1 = lua_tointeger(L,i); - if (i == 2 ) ubID2 = lua_tointeger(L,i); + INT8 bBuddyIndex; + + SoldierID ubID1 = lua_tointeger( L, 1 ); + SoldierID ubID2 = lua_tointeger( L, 2 ); + + + if ( (ubID1 != NOBODY && ubID1->bInSector) && (ubID2 != NOBODY && ubID2->bInSector) ) + bBuddyIndex = WhichBuddy( ubID1->ubProfile, ubID2->ubProfile ); + + lua_pushinteger( L, bBuddyIndex ); } - - if ( MercPtrs[ ubID1 ]->bInSector && MercPtrs[ ubID2 ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - bBuddyIndex = WhichBuddy( ubID1, ubID2 ); - - lua_pushinteger(L, bBuddyIndex); - return 1; } static int l_AnimMercPtsrsAbsoluteFinalDestination (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,GridNo = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) GridNo = lua_tointeger(L,i); + SoldierID ubID; + INT32 GridNo = NOWHERE; + + ubID = lua_tointeger( L, 1 ); + GridNo = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector && GridNo != NOWHERE) + ubID->sAbsoluteFinalDestination = GridNo; } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->sAbsoluteFinalDestination = GridNo; - return 0; } static int l_AnimMercPtsrusNextActionData (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,GridNo = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) GridNo = lua_tointeger(L,i); + SoldierID ubID; + INT32 GridNo = NOWHERE; + + ubID = lua_tointeger( L, 1 ); + GridNo = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector && GridNo != NOWHERE ) + ubID->aiData.usNextActionData = GridNo; } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->aiData.usNextActionData = GridNo; - return 0; } static int l_AnimMercPtsrbNextAction (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,AI_ACTION = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) AI_ACTION = lua_tointeger(L,i); + SoldierID ubID; + INT8 AI_ACTION = 0; + + ubID = lua_tointeger( L, 1 ); + AI_ACTION = lua_tointeger( L, 2 ); + + + if ( ubID != NOBODY && ubID->bInSector ) + ubID->aiData.bNextAction = AI_ACTION; } - - if ( MercPtrs[ ubID ]->bInSector ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->aiData.bNextAction = AI_ACTION; - return 0; } static int l_SetSoldierBodyType (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,Anim = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) Anim = lua_tointeger(L,i); + SoldierID ubID; + UINT8 Anim = 0; + + ubID = lua_tointeger( L, 1 ); + Anim = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) + ubID->ubBodyType = Anim; } - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - MercPtrs[ ubID ]->ubBodyType = Anim; - return 0; } static int l_GetSoldierBodyType (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,Anim = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID; + UINT8 Anim = 0; + + ubID = lua_tointeger( L, 1 ); + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) + Anim = ubID->ubBodyType; + + lua_pushinteger( L, Anim ); } - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - Anim = MercPtrs[ ubID ]->ubBodyType; - - lua_pushinteger(L, Anim); - return 1; } static int l_CheckSoldierBodyType (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,Anim = 0; - BOOLEAN Bool = FALSE, Bool2 = FALSE; + if ( lua_gettop( L ) >= 2 ) + { + SoldierID ubID; + UINT8 Anim = 0; - for (i= 1; i<=n; i++ ) - { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) Anim = lua_tointeger(L,i); - } - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive ) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - if ( MercPtrs[ ubID ]->ubBodyType == Anim ) - Bool2 = TRUE; + ubID = lua_tointeger( L, 1 ); + Anim = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive && ubID->ubBodyType == Anim ) + { + lua_pushboolean( L, true ); + } else - Bool2 = FALSE; + { + lua_pushboolean( L, false ); + } } - - lua_pushboolean(L, Bool2); - return 1; } static int l_IS_CIV_BODY_TYPE (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0; - BOOLEAN Bool = FALSE; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive && IS_CIV_BODY_TYPE( ubID ) ) + lua_pushboolean( L, true ); + else + lua_pushboolean( L, false ); } - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive && IS_CIV_BODY_TYPE (MercPtrs[ ubID ]) == TRUE ) - Bool = TRUE; - else - Bool = FALSE; - - lua_pushboolean(L, Bool); - return 1; } static int l_SetOffBombsInGridNo (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT8 ubID = 0; - INT32 sGridNo = 0; - BOOLEAN fAllBombs = FALSE; - INT8 bLevel = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 4 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) sGridNo = lua_tointeger(L,i); - if (i == 3 ) fAllBombs = lua_toboolean(L,i); - if (i == 4 ) bLevel = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + INT32 sGridNo = lua_tointeger( L, 2 ); + BOOLEAN fAllBombs = lua_toboolean( L, 3 ); + INT8 bLevel = lua_tointeger( L, 4 ); + + SetOffBombsInGridNo( ubID, sGridNo, fAllBombs, bLevel ); } - - SetOffBombsInGridNo( ubID, sGridNo, fAllBombs,bLevel ); return 0; } static int l_AnimMercPtsrSoldierGotHit (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0; - BOOLEAN Bool = FALSE; + if ( lua_gettop( L ) >= 1 ) + { + SoldierID ubID = lua_tointeger( L, 1 ); - for (i= 1; i<=n; i++ ) - { - if (i == 1 ) ubID = lua_tointeger(L,i); - //if (i == 2 ) Anim = lua_tointeger(L,i); - } - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - if ( MercPtrs[ ubID ]->stats.bLife >= 0 ) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - MercPtrs[ ubID ]->EVENT_SoldierGotHit( 1, 100, 10, MercPtrs[ ubID ]->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + if ( ubID->stats.bLife >= 0 ) + { + ubID->EVENT_SoldierGotHit( 1, 100, 10, ubID->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + } } } - return 0; } -static int l_CheckMercPtsrubIDSeenubID2 (lua_State *L) +static int l_CheckMercPtsrubIDSeenubID2( lua_State *L ) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT32 ubID = 0,ubID2 = 0; - UINT16 seen = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 2 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); - if (i == 2 ) ubID2 = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + SoldierID ubID2 = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID2 != NOBODY ) + { + INT8 seen = ubID->aiData.bOppList[ubID2]; + lua_pushinteger( L, seen ); + } } - - seen = MercPtrs[ ubID ]->aiData.bOppList[ ubID2 ]; - - lua_pushinteger(L, seen); - return 1; } static int l_CheckMercPtrsInCivilianGroup (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT8 group = 0; - UINT32 ubID = 0; - - for (i= 1; i<=n; i++ ) + if ( lua_gettop( L ) >= 1 ) { - if (i == 1 ) ubID = lua_tointeger(L,i); + SoldierID ubID = lua_tointeger( L, 1 ); + + if ( ubID != NOBODY ) + { + UINT8 group = ubID->ubCivilianGroup; + lua_pushinteger( L, group ); + } } - - group = MercPtrs[ ubID ]->ubCivilianGroup; - - lua_pushinteger(L, group); return 1; } @@ -9739,7 +9491,8 @@ static int l_FindSoldierByProfileID (lua_State *L) { UINT8 n = lua_gettop(L); int i = 0; - UINT8 ubTargetNPC = 0,ubLoop = 0,ubLoopLimit = 0; + UINT8 ubTargetNPC = 0; + UINT16 ubLoop = 0, ubLoopLimit = 0; SOLDIERTYPE *pSoldier; UINT8 id = -1; @@ -9768,7 +9521,8 @@ static int l_FindSoldierByProfileIDBool (lua_State *L) { UINT8 n = lua_gettop(L); int i = 0; - UINT8 ubTargetNPC = 0,ubLoop = 0,ubLoopLimit = 0; + UINT8 ubTargetNPC = 0; + UINT16 ubLoop = 0, ubLoopLimit = 0; SOLDIERTYPE *pSoldier; UINT8 id = -1; BOOLEAN ProfBool = FALSE; @@ -11446,7 +11200,7 @@ static int l_SetMoneyInSoldierProfile(lua_State *L) static int l_AddToShouldBecomeHostileOrSayQuoteList(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; UINT8 n = lua_gettop(L); int i = 0; @@ -12045,7 +11799,7 @@ static int l_VisibleTown (lua_State *L) static int l_HireMerc(lua_State *L) { MERC_HIRE_STRUCT HireMercStruct; - INT16 sSoldierID = 0; + SoldierID sSoldierID = NOBODY; INT16 iTotalContract = 7; UINT32 iTimeTillMercArrives = 0; UINT8 n = lua_gettop(L); @@ -12082,8 +11836,8 @@ static int l_HireMerc(lua_State *L) if (!HireMerc(&HireMercStruct)) { sSoldierID = GetSoldierIDFromMercID(ubCurrentSoldier); - if (sSoldierID > -1) - Menptr[sSoldierID].bTypeOfLastContract = CONTRACT_EXTEND_1_WEEK; + if (sSoldierID != NOBODY) + sSoldierID->bTypeOfLastContract = CONTRACT_EXTEND_1_WEEK; gMercProfiles[ubCurrentSoldier].bMercStatus = MERC_OK; @@ -12381,286 +12135,126 @@ return 0; static int l_SetMercPtsrSectorZ(lua_State *L) { - - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT8 SectorZ; - if ( lua_gettop(L) >= 2 ) { - ubID = lua_tointeger(L,1); - SectorZ = lua_tointeger(L,2); + SoldierID ubID = lua_tointeger(L,1); + INT8 SectorZ = lua_tointeger(L,2); - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive) { - pSoldier->bSectorZ = SectorZ; + ubID->bSectorZ = SectorZ; } } - - } - return 0; } static int l_SetMercPtsrSectorX(lua_State *L) { - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT16 SectorX; + if ( lua_gettop( L ) >= 2 ) + { + SoldierID ubID = lua_tointeger( L, 1 ); + INT16 SectorX = lua_tointeger( L, 2 ); - if ( lua_gettop(L) >= 2 ) - { - ubID = lua_tointeger(L,1); - SectorX = lua_tointeger(L,2); - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - pSoldier->sSectorX = SectorX; + ubID->sSectorX = SectorX; } } - - } - return 0; } static int l_SetMercPtsrSectorY(lua_State *L) { - - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT16 SectorY; - - if ( lua_gettop(L) >= 2 ) + if ( lua_gettop( L ) >= 2 ) { - ubID = lua_tointeger(L,1); - SectorY = lua_tointeger(L,2); - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) + SoldierID ubID = lua_tointeger( L, 1 ); + INT16 SectorY = lua_tointeger( L, 2 ); + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - pSoldier->sSectorY = SectorY; + ubID->sSectorY = SectorY; } } - - } - return 0; } static int l_SetMercPtsrubGroupID(lua_State *L) { - - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT8 GroupID; - - if ( lua_gettop(L) >= 2 ) + if ( lua_gettop( L ) >= 2 ) { - ubID = lua_tointeger(L,1); - GroupID = lua_tointeger(L,2); - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) - { - pSoldier->ubGroupID = GroupID; - } - } + SoldierID ubID = lua_tointeger( L, 1 ); + INT8 GroupID = lua_tointeger( L, 2 ); - + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) + ubID->ubGroupID = GroupID; } return 0; } static int l_CheckMercPtsrSectorY(lua_State *L) { - - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT16 SectorY; - - if ( lua_gettop(L) >= 1 ) + if ( lua_gettop( L ) >= 1 ) { - ubID = lua_tointeger(L,1); - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) - { - SectorY = pSoldier->sSectorY; - } - } - else - { - SectorY = 0; - } - - lua_pushinteger(L, SectorY); - - } + SoldierID ubID = lua_tointeger( L, 1 ); + INT16 SectorY = 0; + + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) + SectorY = ubID->sSectorY; + + lua_pushinteger( L, SectorY ); + } return 1; } static int l_CheckMercPtsrSectorX(lua_State *L) { - - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT16 SectorX; - - if ( lua_gettop(L) >= 1 ) + if ( lua_gettop( L ) >= 1 ) { - ubID = lua_tointeger(L,1); + SoldierID ubID = lua_tointeger( L, 1 ); + INT16 SectorX = 0; - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - SectorX = pSoldier->sSectorX; + SectorX = ubID->sSectorX; } - } - else - { - SectorX = 0; - } - - lua_pushinteger(L, SectorX); - - } + lua_pushinteger( L, SectorX ); + } return 1; } -static int l_CheckMercPtsrSectorZ(lua_State *L) +static int l_CheckMercPtsrSectorZ( lua_State *L ) { - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - INT16 SectorZ; - - if ( lua_gettop(L) >= 1 ) + if ( lua_gettop( L ) >= 1 ) { - ubID = lua_tointeger(L,1); + SoldierID ubID = lua_tointeger( L, 1 ); + INT8 SectorZ = 0; - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) { - SectorZ = pSoldier->bSectorZ; + SectorZ = ubID->bSectorZ; } - } - else - { - SectorZ = 0; - } - - lua_pushinteger(L, SectorZ); + lua_pushinteger( L, SectorZ ); } - return 1; } static int l_CheckMercPtsrubGroupID(lua_State *L) { - UINT8 ubID = 0; - BOOLEAN Bool = FALSE; - SOLDIERTYPE * pSoldier; - UINT8 GroupID; - - if ( lua_gettop(L) >= 1 ) + if ( lua_gettop( L ) >= 1 ) { - ubID = lua_tointeger(L,1); - - if ( MercPtrs[ ubID ]->bInSector && MercPtrs[ ubID ]->bActive) - Bool = TRUE; - else - Bool = FALSE; - - if ( Bool == TRUE ) - { - pSoldier = MercPtrs[ ubID ]; - - if (pSoldier) - { - GroupID = pSoldier->ubGroupID; - } - else - { - GroupID = NUMBER_OF_SQUADS; - } - } - else - GroupID = NUMBER_OF_SQUADS; - - lua_pushinteger(L, GroupID); - - } + SoldierID ubID = lua_tointeger( L, 1 ); + UINT8 GroupID = NUMBER_OF_SQUADS; + if ( ubID != NOBODY && ubID->bInSector && ubID->bActive ) + { + GroupID = ubID->ubGroupID; + } + + lua_pushinteger( L, GroupID ); + } return 1; } @@ -13221,7 +12815,7 @@ static int l_DoInteractiveActionDefaultResult( lua_State *L ) if ( lua_gettop( L ) >= 3 ) { INT32 sGridNo = lua_tointeger( L, 1 ); - UINT8 ubID = lua_tointeger( L, 2 ); + UINT16 ubID = lua_tointeger( L, 2 ); BOOLEAN success = lua_tointeger( L, 3 ); DoInteractiveActionDefaultResult( sGridNo, ubID, success ); @@ -13234,7 +12828,7 @@ static int l_GiveExp( lua_State *L ) { if ( lua_gettop( L ) >= 3 ) { - UINT8 ubID = lua_tointeger( L, 1 ); + UINT16 ubID = lua_tointeger( L, 1 ); UINT8 ubStat = lua_tointeger( L, 2 ); UINT16 usNumChances = lua_tointeger( L, 3 ); @@ -13327,7 +12921,7 @@ static int l_SoldierSpendMoney( lua_State *L ) { if ( lua_gettop( L ) >= 2 ) { - UINT8 usId = lua_tointeger( L, 1 ); + UINT16 usId = lua_tointeger( L, 1 ); UINT32 amount = lua_tointeger( L, 2 ); lua_pushinteger( L, SpendMoney( MercPtrs[usId], amount ) ); @@ -13566,7 +13160,7 @@ static int l_SetPhotoFactLaptopData( lua_State *L ) return 0; } -extern UINT8 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); +extern UINT16 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); static int l_GetNumHostilesInSector( lua_State *L ) { diff --git a/Strategic/LuaInitNPCs.h b/Strategic/LuaInitNPCs.h index 95d8ec27..41f25eab 100644 --- a/Strategic/LuaInitNPCs.h +++ b/Strategic/LuaInitNPCs.h @@ -33,7 +33,7 @@ extern UINT16 PROFILLUA_sSectorX; extern UINT16 PROFILLUA_sSectorY; extern UINT8 PROFILLUA_bSectorZ; extern UINT8 PROFILLUA_Level; -extern UINT8 PROFILLUA_ubID; +extern UINT16 PROFILLUA_ubID; extern UINT32 PROFILLUA_sGridNo; extern UINT8 PROFILLUA_ubDirectiono; extern UINT8 PROFILLUA_bTeam; @@ -42,7 +42,7 @@ extern UINT8 PROFILLUA2_ubProfile; extern UINT16 PROFILLUA2_sSectorX; extern UINT16 PROFILLUA2_sSectorY; extern UINT8 PROFILLUA2_bSectorZ; -extern UINT8 PROFILLUA2_ubID; +extern UINT16 PROFILLUA2_ubID; extern UINT32 PROFILLUA2_sGridNo; extern BOOLEAN LetHandleLoyaltyChangeForNPCAction(UINT8 ubNPCProfileId , UINT8 Init); @@ -60,8 +60,9 @@ extern BOOLEAN LuaHandleQuestCodeOnSector( INT16 sSectorX, INT16 sSectorY, INT8 //extern BOOLEAN LuaHandleQuestCodeOnSectorEntry( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT8 Init); void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fFirstTime ); -void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, - INT32 sGridNo, UINT8 bLevel, UINT8 ubId, +void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, + INT8 bSectorZ, + INT32 sGridNo, UINT8 bLevel, SoldierID ubId, UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill ); void LuaRecruitRPCAdditionalHandling( UINT8 usProfile ); void LuaHandleSectorTacticalEntry( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fHasEverBeenPlayerControlled ); diff --git a/Strategic/Map Screen Helicopter.cpp b/Strategic/Map Screen Helicopter.cpp index 23f9f31f..f9f7a173 100644 --- a/Strategic/Map Screen Helicopter.cpp +++ b/Strategic/Map Screen Helicopter.cpp @@ -72,7 +72,7 @@ #define HELICOPTER_RETURN_REASON_DAMAGE 2 extern FACETYPE *gpCurrentTalkingFace; -extern UINT8 gubCurrentTalkingID; +extern UINT16 gubCurrentTalkingID; // current temp path for dest char extern PathStPtr pTempHelicopterPath; diff --git a/Strategic/Map Screen Interface Map Inventory.cpp b/Strategic/Map Screen Interface Map Inventory.cpp index 35d25da5..5dc77414 100644 --- a/Strategic/Map Screen Interface Map Inventory.cpp +++ b/Strategic/Map Screen Interface Map Inventory.cpp @@ -201,7 +201,7 @@ INT32 iCurrentInventoryPoolPage = 0; INT32 iLastInventoryPoolPage = 0; INT32 sObjectSourceGridNo = -1;//shadooow: I don't see much of a sense in this, we have gpItemPointerSoldier and we can use gpItemPointerSoldier->sGridNo to do this, this is actually unused -INT8 sObjectSourseSoldierID = -1; +SoldierID sObjectSourseSoldierID = NOBODY; // number of unseen items in sector UINT32 uiNumberOfUnSeenItems = 0; @@ -683,9 +683,9 @@ BOOLEAN RenderItemInPoolSlot( INT32 iCurrentSlot, INT32 iFirstSlotOnPage ) // if the item is not reachable, or if the selected merc is not in the current sector // if( !( pInventoryPoolList[ iCurrentSlot + iFirstSlotOnPage ].usFlags & WORLD_ITEM_REACHABLE ) || - !(( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX == sSelMapX ) && - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY == sSelMapY ) && - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ == iCurrentMapSectorZ ) + !(( gCharactersList[ bSelectedInfoChar ].usSolID->sSectorX == sSelMapX ) && + ( gCharactersList[ bSelectedInfoChar ].usSolID->sSectorY == sSelMapY ) && + ( gCharactersList[ bSelectedInfoChar ].usSolID->bSectorZ == iCurrentMapSectorZ ) ) ) { //Shade the item, but only if it is an active item! @@ -1180,7 +1180,6 @@ void CreateMapInventoryPoolSlots( ) INT16 sXA = 0, sYA = 0; INT16 sULX = 0, sULY = 0; INT16 sBRX = 0, sBRY = 0; - extern MOUSE_REGION gMapViewRegion; //Moa: removed MapInventoryPoolMask, instead we disable map mouseregion and enable again when deleting stash regions MSYS_DisableRegion( &gMapViewRegion ); //MSYS_DefineRegion( &MapInventoryPoolMask, @@ -1217,7 +1216,6 @@ void CreateMapInventoryPoolSlots( ) void DestroyMapInventoryPoolSlots( void ) { INT32 iCounter = 0; - extern MOUSE_REGION gMapViewRegion; for( iCounter = 0; iCounter < MAP_INVENTORY_POOL_SLOT_COUNT; iCounter++ ) { @@ -1351,7 +1349,6 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) UINT16 usOldItemIndex, usNewItemIndex; INT32 iOldNumberOfObjects = 0; INT16 sDistanceFromObject = 0; - SOLDIERTYPE *pSoldier = NULL; CHAR16 sString[ 128 ]; extern OBJECTTYPE *gpItemDescObject; @@ -1370,11 +1367,16 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) { //CHRISL: Make it possible to right click and pull up stack popup and/or item description boxes WORLDITEM * twItem = &(pInventoryPoolList[ ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ) + iCounter ]); - bool fValidPointer = false; + bool fValidPointer = false; + //CHRISL: Try to update InSector value so we don't have to "activate" a sector - if(MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->sSectorX == sSelMapX && MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->sSectorY == sSelMapY && MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->bSectorZ == iCurrentMapSectorZ && !MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->flags.fBetweenSectors) + SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID; + const auto x = pSelectedSoldier->sSectorX; + const auto y = pSelectedSoldier->sSectorY; + const auto z = pSelectedSoldier->bSectorZ; + if(x == sSelMapX && y == sSelMapY && z == iCurrentMapSectorZ && !pSelectedSoldier->flags.fBetweenSectors) { - MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->bInSector=TRUE; + pSelectedSoldier->bInSector = TRUE; } else { @@ -1388,7 +1390,7 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) } if ( !InSectorStackPopup( ) && !InItemStackPopup( ) /*&& !InItemDescriptionBox( ) */ && !InKeyRingPopup( ) && twItem->object.exists() == true && (bSelectedInfoChar != -1 && gCharactersList[bSelectedInfoChar].fValid) ) { - if(OK_CONTROL_MERC( MercPtrs[gCharactersList[bSelectedInfoChar].usSolID] )) + if(OK_CONTROL_MERC( pSelectedSoldier )) { //CHRISL: The old setup had a flaw I didn't consider. if, for some reason, the ItemSlotLimit = 0 // nothing might happen. Now we setup a flag to determine if our cursor is value for the item we're @@ -1474,7 +1476,7 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) } // HEADROCK HAM 5: Sector Inventory Item Desc Box no longer accessible during combat. - if( !CanPlayerUseSectorInventory( &(Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]) ) ) + if( !CanPlayerUseSectorInventory(pSelectedSoldier) ) { DoScreenIndependantMessageBox( New113HAMMessage[ 22 ], MSG_BOX_FLAG_OK, NULL ); return; @@ -1484,23 +1486,23 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) if ( _KeyDown(SHIFT) && gpItemPointer == NULL && Item[twItem->object.usItem].usItemClass == IC_GUN && (twItem->object)[0]->data.gun.ubGunShotsLeft && !ItemIsSingleShotRocketLauncher(twItem->object.usItem)) { EmptyWeaponMagazine( &twItem->object, &gItemPointer ); - InternalMAPBeginItemPointer( MercPtrs[gCharactersList[bSelectedInfoChar].usSolID] ); + InternalMAPBeginItemPointer( pSelectedSoldier ); } else - MAPInternalInitItemDescriptionBox( &twItem->object, 0, MercPtrs[gCharactersList[bSelectedInfoChar].usSolID] ); + MAPInternalInitItemDescriptionBox( &twItem->object, 0, pSelectedSoldier ); } } else if(fValidPointer) { // Sector Inventory Stack Popup no longer accessible during combat. - if( !CanPlayerUseSectorInventory( &(Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]) ) ) + if( !CanPlayerUseSectorInventory(pSelectedSoldier) ) { DoScreenIndependantMessageBox( New113HAMMessage[ 22 ], MSG_BOX_FLAG_OK, NULL ); return; } else { - InitSectorStackPopup( MercPtrs[gCharactersList[bSelectedInfoChar].usSolID], twItem, iCounter, xResOffset, yResOffset - 10, 261, ( SCREEN_HEIGHT - PLAYER_INFO_Y ) ); + InitSectorStackPopup( pSelectedSoldier, twItem, iCounter, xResOffset, yResOffset - 10, 261, ( SCREEN_HEIGHT - PLAYER_INFO_Y ) ); fTeamPanelDirty=TRUE; fInterfacePanelDirty = DIRTYLEVEL2; } @@ -1597,11 +1599,13 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) //if( fShowInventoryFlag ) { + SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID; + // not in sector? - if( ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX != sSelMapX ) || - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY != sSelMapY ) || - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ != iCurrentMapSectorZ ) || - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].flags.fBetweenSectors ) ) + if( ( pSelectedSoldier->sSectorX != sSelMapX ) || + ( pSelectedSoldier->sSectorY != sSelMapY ) || + ( pSelectedSoldier->bSectorZ != iCurrentMapSectorZ ) || + ( pSelectedSoldier->flags.fBetweenSectors ) ) { if ( gpItemPointer == NULL ) { @@ -1633,13 +1637,13 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) } else { - swprintf( sString, pMapInventoryErrorString[ 2 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name ); + swprintf( sString, pMapInventoryErrorString[ 2 ], pSelectedSoldier->name ); DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, MSG_BOX_FLAG_OK, NULL ); } } else { - swprintf( sString, pMapInventoryErrorString[ 5 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name ); + swprintf( sString, pMapInventoryErrorString[ 5 ], pSelectedSoldier->name ); DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, MSG_BOX_FLAG_OK, NULL ); } return; @@ -1650,6 +1654,7 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) // If we do not have an item in hand, start moving it if ( gpItemPointer == NULL ) { + SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID; // Return if empty @@ -1658,7 +1663,7 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) // if in battle inform player they will have to do this in tactical // if( ( ( gTacticalStatus.fEnemyInSector ) ||( ( sSelMapX == gWorldSectorX ) && ( sSelMapY == gWorldSectorY ) && ( iCurrentMapSectorZ == gbWorldSectorZ ) && ( gTacticalStatus.uiFlags & INCOMBAT ) ) ) ) - if( !CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) ) + if( !CanPlayerUseSectorInventory(pSelectedSoldier) ) { DoMapMessageBox( MSG_BOX_BASIC_STYLE, pMapInventoryErrorString[ 3 ], MAP_SCREEN, MSG_BOX_FLAG_OK, NULL ); return; @@ -1673,14 +1678,13 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) if( ( sSelMapX == gWorldSectorX )&&( gWorldSectorY == sSelMapY ) &&(gbWorldSectorZ == iCurrentMapSectorZ ) ) { // notify - pSoldier = &( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ); - sDistanceFromObject = PythSpacesAway( sObjectSourceGridNo, pSoldier->sGridNo); + sDistanceFromObject = PythSpacesAway( sObjectSourceGridNo, pSelectedSoldier->sGridNo); /* if( sDistanceFromObject > MAX_DISTANCE_TO_PICKUP_ITEM ) { // see for the loaded sector if the merc is cloase enough? - swprintf( sString, pMapInventoryErrorString[ 0 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name ); + swprintf( sString, pMapInventoryErrorString[ 0 ], pSelectedSoldier->name ); DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, MSG_BOX_FLAG_OK, NULL ); return; } @@ -1718,10 +1722,11 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) } else {//we have an item on cursor + SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID; // if in battle inform player they will have to do this in tactical // if( ( gTacticalStatus.fEnemyInSector ) ||( ( sSelMapX == gWorldSectorX ) && ( sSelMapY == gWorldSectorY ) && ( iCurrentMapSectorZ == gbWorldSectorZ ) && ( gTacticalStatus.uiFlags & INCOMBAT ) ) ) - if( !CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) ) + if( !CanPlayerUseSectorInventory(pSelectedSoldier) ) { DoMapMessageBox( MSG_BOX_BASIC_STYLE, pMapInventoryErrorString[ 4 ], MAP_SCREEN, MSG_BOX_FLAG_OK, NULL ); return; @@ -1795,7 +1800,7 @@ void MapInvenPoolSlots(MOUSE_REGION * pRegion, INT32 iReason ) /* if ( fShowInventoryFlag && bSelectedInfoChar >= 0 ) { - ReevaluateItemHatches( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ], FALSE ); + ReevaluateItemHatches( gCharactersList[ bSelectedInfoChar ].usSolID, FALSE ); } */ } @@ -2471,7 +2476,7 @@ void BeginInventoryPoolPtr( OBJECTTYPE *pInventorySlot ) if ( _KeyDown ( CTRL ))//MM: Pass item to selected merc. Delete if none selected. { - SOLDIERTYPE *pSoldier = &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; bool placedAllObjects = false; if(pSoldier->exists() == true) @@ -2575,7 +2580,7 @@ void BeginInventoryPoolPtr( OBJECTTYPE *pInventorySlot ) if ( fShowInventoryFlag && bSelectedInfoChar >= 0 ) { - ReevaluateItemHatches( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ], FALSE ); + ReevaluateItemHatches( gCharactersList[ bSelectedInfoChar ].usSolID, FALSE ); fTeamPanelDirty = TRUE; } } @@ -2643,7 +2648,7 @@ void BeginInventoryPoolPtr( OBJECTTYPE *pInventorySlot ) if ( fShowInventoryFlag && bSelectedInfoChar >= 0 ) { - ReevaluateItemHatches( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ], FALSE ); + ReevaluateItemHatches( gCharactersList[ bSelectedInfoChar ].usSolID, FALSE ); fTeamPanelDirty = TRUE; } } @@ -2660,7 +2665,7 @@ BOOLEAN PlaceObjectInInventoryStash( OBJECTTYPE *pInventorySlot, OBJECTTYPE *pIt // anv: swap ownerships too if( pInventoryPoolList[ iSrcSlot ].soldierID == sObjectSourseSoldierID ) { - pInventoryPoolList[ iSrcSlot ].soldierID = (-1); + pInventoryPoolList[ iSrcSlot ].soldierID = NOBODY; } pInventoryPoolList[ iDestSlot ].soldierID = sObjectSourseSoldierID; } @@ -2674,10 +2679,10 @@ BOOLEAN PlaceObjectInInventoryStash( OBJECTTYPE *pInventorySlot, OBJECTTYPE *pIt // anv: disable soldier's ownership, as otherwise stacked backpacks would share it if( iDestSlot != (-1) && iSrcSlot != (-1) ) { - pInventoryPoolList[ iDestSlot ].soldierID = (-1); - pInventoryPoolList[ iSrcSlot ].soldierID = (-1); + pInventoryPoolList[ iDestSlot ].soldierID = NOBODY; + pInventoryPoolList[ iSrcSlot ].soldierID = NOBODY; iCurrentlyPickedUpItem = iDestSlot; - sObjectSourseSoldierID = (-1); + sObjectSourseSoldierID = NOBODY; } // stacking pInventorySlot->AddObjectsToStack(*pItemPtr); @@ -2689,9 +2694,9 @@ BOOLEAN PlaceObjectInInventoryStash( OBJECTTYPE *pInventorySlot, OBJECTTYPE *pIt // anv: swap ownerships too if( pInventoryPoolList[ iSrcSlot ].soldierID == sObjectSourseSoldierID ) { - pInventoryPoolList[ iSrcSlot ].soldierID = (-1); + pInventoryPoolList[ iSrcSlot ].soldierID = NOBODY; } - INT32 iTempSoldierID = pInventoryPoolList[ iDestSlot ].soldierID; + SoldierID iTempSoldierID = pInventoryPoolList[ iDestSlot ].soldierID; pInventoryPoolList[ iDestSlot ].soldierID = sObjectSourseSoldierID; sObjectSourseSoldierID = iTempSoldierID; iCurrentlyPickedUpItem = iDestSlot; @@ -3015,7 +3020,7 @@ void TemplateNameInputCallBack(UINT8 ubResult) { if (ubResult == MSG_BOX_RETURN_OK && wcscmp(gszMsgBoxInputString, L"") > 0) { - SOLDIERTYPE* pSoldier = &Menptr[gCharactersList[bSelectedInfoChar].usSolID]; + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if (pSoldier) { WriteEquipmentTemplate(pSoldier, gszMsgBoxInputString); @@ -3047,7 +3052,7 @@ void MapInventoryWriteEquipmentTemplate(GUI_BUTTON *btn, INT32 reason) { if ( btn->uiFlags & (BUTTON_CLICKED_ON) ) { - SOLDIERTYPE* pSoldier = &Menptr[gCharactersList[bSelectedInfoChar].usSolID]; + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if ( pSoldier ) { DoMessageBox( MSG_BOX_BASIC_SMALL_BUTTONS, szGearTemplateText[0], guiCurrentScreen, MSG_BOX_FLAG_INPUTBOX, TemplateNameInputCallBack, NULL ); @@ -3072,7 +3077,7 @@ void MapInventoryReadEquipmentTemplate(GUI_BUTTON *btn, INT32 reason) { if ( btn->uiFlags & (BUTTON_CLICKED_ON) ) { - SOLDIERTYPE* pSoldier = &Menptr[gCharactersList[bSelectedInfoChar].usSolID]; + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if ( pSoldier && pSoldier->sSectorX == sSelMapX && pSoldier->sSectorY == sSelMapY && pSoldier->bSectorZ == iCurrentMapSectorZ && !pSoldier->flags.fBetweenSectors ) @@ -3525,11 +3530,12 @@ void HandleButtonStatesWhileMapInventoryActive( void ) } // Selected Merc is in sector? Or is in combat? - if(MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->sSectorX != sSelMapX || - MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->sSectorY != sSelMapY || - MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->bSectorZ != iCurrentMapSectorZ || - MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]->flags.fBetweenSectors || - !CanPlayerUseSectorInventory( &(Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]) ) ) + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; + if( pSoldier->sSectorX != sSelMapX || + pSoldier->sSectorY != sSelMapY || + pSoldier->bSectorZ != iCurrentMapSectorZ || + pSoldier->flags.fBetweenSectors || + !CanPlayerUseSectorInventory( pSoldier ) ) { DisableButton( guiMapInvenSortButton[ 0 ] ); DisableButton( guiMapInvenSortButton[ 1 ] ); @@ -3640,7 +3646,7 @@ void HandleMouseInCompatableItemForMapSectorInventory( INT32 iCurrentSlot ) if( fShowInventoryFlag ) { //Soldier inventory is shown, highlight those items - pSoldier = &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; if( pSoldier ) { if( HandleCompatibleAmmoUIForMapScreen( pSoldier, iCurrentSlot + ( iCurrentInventoryPoolPage * MAP_INVENTORY_POOL_SLOT_COUNT ), TRUE, FALSE ) ) @@ -4815,7 +4821,7 @@ void SortSectorInventoryAmmo(bool useBoxes) OBJECTTYPE newCrate; int loopCount = 0; - SOLDIERTYPE * pSoldier = &(Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]); + SOLDIERTYPE * pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; AssertMsg( pSoldier != NULL, "Sector Inventory: Attempting ammo sort without valid selected soldier?" ); @@ -4957,7 +4963,7 @@ void SortSectorInventoryEjectAmmo() { OBJECTTYPE gTempObject; - SOLDIERTYPE * pSoldier = &(Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]); + SOLDIERTYPE * pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; for ( UINT32 uiLoop = 0; uiLoop < pInventoryPoolList.size(); uiLoop++ ) //for all items in sector { @@ -5006,7 +5012,7 @@ void SortSectorInventoryEmptyLBE() { // current item WORLDITEM * pInventoryItem = NULL; - SOLDIERTYPE * pSoldier = &(Menptr[gCharactersList[bSelectedInfoChar].usSolID]); + SOLDIERTYPE * pSoldier = gCharactersList[bSelectedInfoChar].usSolID; for (UINT32 uiLoop = 0; uiLoop < pInventoryPoolList.size(); uiLoop++) //for all items in sector { @@ -5081,7 +5087,7 @@ void SortSectorInventorySeparateAttachments() WORLDITEM * pInventoryItem = NULL; - SOLDIERTYPE * pSoldier = &(Menptr[gCharactersList[bSelectedInfoChar].usSolID]); + SOLDIERTYPE * pSoldier = gCharactersList[bSelectedInfoChar].usSolID; for (UINT32 uiLoop = 0; uiLoop < pInventoryPoolList.size(); uiLoop++) //for all items in sector { @@ -5154,12 +5160,12 @@ void SortSectorInventoryStackAndMerge(bool ammoOnly ) { OBJECTTYPE * StackObject; - SOLDIERTYPE * pSoldier = &(Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]); + SOLDIERTYPE * pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; for ( UINT32 uiLoop = 0; uiLoop < pInventoryPoolList.size(); uiLoop++ ) { // anv: disable soldier's ownership, as otherwise stacked backpacks would share it - pInventoryPoolList[ uiLoop ].soldierID = (-1); + pInventoryPoolList[ uiLoop ].soldierID = NOBODY; } // Run through sector inventory. diff --git a/Strategic/Map Screen Interface Map.cpp b/Strategic/Map Screen Interface Map.cpp index ccc7fbc1..190895cb 100644 --- a/Strategic/Map Screen Interface Map.cpp +++ b/Strategic/Map Screen Interface Map.cpp @@ -476,10 +476,10 @@ UINT32 guiMAPCURSORS; UINT32 guiMapPathingArrows; // assignment selection character -INT8 bSelectedAssignChar=-1; +INT16 bSelectedAssignChar=-1; // current contract char -INT8 bSelectedContractChar = -1; +INT16 bSelectedContractChar = -1; // has the temp path for character or helicopter been already drawn? @@ -523,7 +523,7 @@ void ShowTownText( void ); void DrawTownLabels(STR16 pString, STR16 pStringA,UINT16 usFirstX, UINT16 usFirstY); void ShowTeamAndVehicles(INT32 fShowFlags); BOOLEAN ShadeMapElem( INT16 sMapX, INT16 sMapY, INT32 iColor ); -BOOLEAN ShadeMapElements(const INT32(&colorMap)[16][16]); +BOOLEAN ShadeMapElements(const INT32(&colorMap)[MAXIMUM_VALID_Y_COORDINATE][MAXIMUM_VALID_X_COORDINATE]); void AdjustXForLeftMapEdge(STR16 wString, INT16 *psX, INT32 iFont); void BlitTownGridMarkers( void ); void BlitMineGridMarkers( void ); @@ -602,11 +602,11 @@ BOOLEAN SaveHiddenTownToSaveGameFile( HWFILE hFile ); // Flugente: added getter/setter so that we can easily check when a new char is set // we also set a marker determining when we should update the squads data, so that we only check that when required // destination plotting character -INT8 bSelectedDestChar = -1; +INT16 bSelectedDestChar = -1; bool gSquadEncumbranceCheckNecessary = true; -INT8 GetSelectedDestChar() { return bSelectedDestChar; } -void SetSelectedDestChar( INT8 aVal ) +INT16 GetSelectedDestChar() { return bSelectedDestChar; } +void SetSelectedDestChar( INT16 aVal ) { bSelectedDestChar = aVal; gSquadEncumbranceCheckNecessary = true; @@ -1299,7 +1299,7 @@ INT32 ShowOnDutyTeam( INT16 sMapX, INT16 sMapY ) // run through list while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; if( !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && ( pSoldier->sSectorX == sMapX) && @@ -1351,7 +1351,7 @@ INT32 ShowAssignedTeam(INT16 sMapX, INT16 sMapY, INT32 iCount) while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // given number of on duty members, find number of assigned chars // start at beginning of list, look for people who are in sector and assigned @@ -6232,14 +6232,14 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Map Screen4"); usSector = SECTOR( sSectorX, sSectorY ); // distribute here - SectorInfo[usSector].ubNumberOfCivsAtLevel[ GREEN_MILITIA ] = ( UINT8 )( iNumberOfGreens / iNumberUnderControl ); - SectorInfo[usSector].ubNumberOfCivsAtLevel[ REGULAR_MILITIA ] = ( UINT8 )( iNumberOfRegulars / iNumberUnderControl ); - SectorInfo[usSector].ubNumberOfCivsAtLevel[ ELITE_MILITIA ] = ( UINT8 )( iNumberOfElites / iNumberUnderControl ); + SectorInfo[usSector].ubNumberOfCivsAtLevel[ GREEN_MILITIA ] = ( UINT16 )( iNumberOfGreens / iNumberUnderControl ); + SectorInfo[usSector].ubNumberOfCivsAtLevel[ REGULAR_MILITIA ] = ( UINT16 )( iNumberOfRegulars / iNumberUnderControl ); + SectorInfo[usSector].ubNumberOfCivsAtLevel[ ELITE_MILITIA ] = ( UINT16 )( iNumberOfElites / iNumberUnderControl ); // Flugente: indivdual militia - DropIndividualMilitia( usSector, GREEN_MILITIA, (UINT8)(iNumberOfGreens / iNumberUnderControl) ); - DropIndividualMilitia( usSector, REGULAR_MILITIA, (UINT8)(iNumberOfRegulars / iNumberUnderControl) ); - DropIndividualMilitia( usSector, ELITE_MILITIA, (UINT8)(iNumberOfElites / iNumberUnderControl) ); + DropIndividualMilitia( usSector, GREEN_MILITIA, (UINT16)(iNumberOfGreens / iNumberUnderControl) ); + DropIndividualMilitia( usSector, REGULAR_MILITIA, (UINT16)(iNumberOfRegulars / iNumberUnderControl) ); + DropIndividualMilitia( usSector, ELITE_MILITIA, (UINT16)(iNumberOfElites / iNumberUnderControl) ); // Flugente: as we do not move the group militia, we have to make sure we don't accidentally overfill a sector sTotalSoFar = NumNonPlayerTeamMembersInSector( sSectorX, sSectorY, MILITIA_TEAM ); @@ -6949,19 +6949,15 @@ UINT32 WhatPlayerKnowsAboutEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) BOOLEAN CanMercsScoutThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { - INT32 iFirstId = 0, iLastId = 0; - INT32 iCounter = 0; SOLDIERTYPE *pSoldier = NULL; - // to speed it up a little? - iFirstId = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - - for( iCounter = iFirstId; iCounter <= iLastId; iCounter++ ) + SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + const SoldierID iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + for( ; id <= iLastId; ++id ) { // get the soldier - pSoldier = &Menptr[ iCounter ]; + pSoldier = id; // is the soldier active if( pSoldier->bActive == FALSE ) @@ -7127,7 +7123,7 @@ UINT8 NumActiveCharactersInSector( INT16 sSectorX, INT16 sSectorY, INT16 bSector { if( gCharactersList[ iCounter ].fValid ) { - pSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pSoldier = gCharactersList[ iCounter ].usSolID; if( pSoldier->bActive && ( pSoldier->stats.bLife > 0 ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) ) @@ -8091,7 +8087,7 @@ void MilitiaGroupBoxButtonCallback( GUI_BUTTON *btn, INT32 reason ) UINT8 militiatype = id / 2; // for now, always alter by 1 - UINT8 howmany = 1; + UINT16 howmany = 1; // either add or remove a militia from currently selected group if ( id % 2 ) diff --git a/Strategic/Map Screen Interface Map.h b/Strategic/Map Screen Interface Map.h index 2077ae18..f80ac677 100644 --- a/Strategic/Map Screen Interface Map.h +++ b/Strategic/Map Screen Interface Map.h @@ -372,19 +372,19 @@ extern BOOLEAN fDrawTempHeliPath; extern BOOLEAN fDrawTempMilitiaPath; // selected destination char -INT8 GetSelectedDestChar(); -void SetSelectedDestChar( INT8 aVal ); +INT16 GetSelectedDestChar(); +void SetSelectedDestChar( INT16 aVal ); extern bool gSquadEncumbranceCheckNecessary; // current assignment character -extern INT8 bSelectedAssignChar; +extern INT16 bSelectedAssignChar; // the info character -extern INT8 bSelectedInfoChar; +extern INT16 bSelectedInfoChar; // the contract char -extern INT8 bSelectedContractChar; +extern INT16 bSelectedContractChar; // map arrows graphical index value extern UINT32 guiMAPCURSORS; diff --git a/Strategic/Map Screen Interface TownMine Info.cpp b/Strategic/Map Screen Interface TownMine Info.cpp index d1b7a12b..c2ede643 100644 --- a/Strategic/Map Screen Interface TownMine Info.cpp +++ b/Strategic/Map Screen Interface TownMine Info.cpp @@ -180,11 +180,12 @@ void CreateDestroyTownInfoBox( void ) // set highlight color SetBoxHighLight(ghTownMineBox, FONT_WHITE); - SetBoxSecondColumnForeground( ghTownMineBox, FONT_WHITE ); - SetBoxSecondColumnBackground( ghTownMineBox, FONT_BLACK ); - SetBoxSecondColumnHighLight( ghTownMineBox, FONT_WHITE ); - SetBoxSecondColumnShade( ghTownMineBox, FONT_BLACK ); - SetBoxSecondColumnFont( ghTownMineBox, BLOCKFONT2 ); + const auto column = 1; + SetBoxColumnForeground( ghTownMineBox, FONT_WHITE, column ); + SetBoxColumnBackground( ghTownMineBox, FONT_BLACK, column ); + SetBoxColumnHighLight( ghTownMineBox, FONT_WHITE, column ); + SetBoxColumnShade( ghTownMineBox, FONT_BLACK, column ); + SetBoxColumnFont( ghTownMineBox, BLOCKFONT2, column ); SetBoxSecondColumnMinimumOffset( ghTownMineBox, 20 ); // unhighlighted color diff --git a/Strategic/Map Screen Interface.cpp b/Strategic/Map Screen Interface.cpp index 278dfecd..c171463f 100644 --- a/Strategic/Map Screen Interface.cpp +++ b/Strategic/Map Screen Interface.cpp @@ -1,4 +1,4 @@ - #include "Map Screen Interface.h" +#include "Map Screen Interface.h" #include "string.h" #include "Map Screen Interface Map.h" #include "Render Dirty.h" @@ -66,8 +66,8 @@ extern UILayout_CharPanelIconRegion UI_CHAR_Icon; extern UILayout_CharList UI_CHARLIST; // marke strogg more mercs -extern UINT8 FIRSTmercTOdisplay = 0 ; -extern UINT8 maxNumberOfMercVisibleInStrategyList = 0; // WANNE: Max merc displayed in the list depends on the resolution +extern UINT16 FIRSTmercTOdisplay = 0 ; +extern UINT16 maxNumberOfMercVisibleInStrategyList = 0; // WANNE: Max merc displayed in the list depends on the resolution // inventory pool position on screen #define MAP_INVEN_POOL_X 300 @@ -127,7 +127,7 @@ INT32 iUpdateBoxWaitingList[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; FASTHELPREGION pFastHelpMapScreenList[ MAX_MAPSCREEN_FAST_HELP ]; // the move menu region -MOUSE_REGION gMoveMenuRegion[ MAX_POPUP_BOX_STRING_COUNT ]; +MOUSE_REGION gMoveMenuRegion[ MAX_POPUP_BOX_COLUMNS*MAX_POPUP_BOX_STRING_COUNT ]; MOUSE_REGION gMapScreenHelpTextMask; @@ -223,7 +223,7 @@ extern UINT32 guiSAVEBUFFER; extern BOOLEAN fShowInventoryFlag; extern FACETYPE *gpCurrentTalkingFace; -extern UINT8 gubCurrentTalkingID; +extern UINT16 gubCurrentTalkingID; extern BOOLEAN fMapScreenBottomDirty; extern MOUSE_REGION gMPanelRegion; @@ -450,7 +450,7 @@ void InitalizeVehicleAndCharacterList( void ) memset(&gCharactersList, 0, sizeof( gCharactersList )); } -void SetEntryInSelectedCharacterList( INT8 bEntry ) +void SetEntryInSelectedCharacterList( INT16 bEntry ) { Assert( ( bEntry >= 0 ) && ( bEntry < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ); @@ -458,7 +458,7 @@ void SetEntryInSelectedCharacterList( INT8 bEntry ) fSelectedListOfMercsForMapScreen[ bEntry ] = TRUE; } -void ResetEntryForSelectedList( INT8 bEntry ) +void ResetEntryForSelectedList( INT16 bEntry ) { Assert( ( bEntry >= 0 ) && ( bEntry < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ); @@ -471,6 +471,7 @@ void ResetSelectedListForMapScreen( void ) // WDS - make number of mercenaries, etc. be configurable // set all the entries int he selected list to false memset( fSelectedListOfMercsForMapScreen, FALSE, sizeof(fSelectedListOfMercsForMapScreen) ); + gSelectedSoldiers.clear(); // if we still have a valid dude selected if ( ( bSelectedInfoChar != -1 ) && ( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) ) @@ -480,7 +481,7 @@ void ResetSelectedListForMapScreen( void ) } } -BOOLEAN IsEntryInSelectedListSet( INT8 bEntry ) +BOOLEAN IsEntryInSelectedListSet( INT16 bEntry ) { Assert( ( bEntry >= 0 ) && ( bEntry < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ); @@ -489,7 +490,7 @@ BOOLEAN IsEntryInSelectedListSet( INT8 bEntry ) return( fSelectedListOfMercsForMapScreen[ bEntry ] ); } -void ToggleEntryInSelectedList( INT8 bEntry ) +void ToggleEntryInSelectedList( INT16 bEntry ) { Assert( ( bEntry >= 0 ) && ( bEntry < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ); @@ -497,9 +498,9 @@ void ToggleEntryInSelectedList( INT8 bEntry ) fSelectedListOfMercsForMapScreen[ bEntry ] = !( fSelectedListOfMercsForMapScreen[ bEntry ] ); } -void BuildSelectedListFromAToB( INT8 bA, INT8 bB ) +void BuildSelectedListFromAToB( INT16 bA, INT16 bB ) { - INT8 bStart =0, bEnd = 0; + INT16 bStart =0, bEnd = 0; // run from a to b..set slots as selected @@ -551,7 +552,7 @@ void ResetAssignmentsForMercsTrainingUnpaidSectorsInSelectedList( UINT8 ubMiliti continue; } - pSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if( pSoldier->bActive == FALSE ) { @@ -585,7 +586,7 @@ void ResetAssignmentOfMercsThatWereTrainingMilitiaInThisSector( INT16 sSectorX, continue; } - pSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if( pSoldier->bActive == FALSE ) { @@ -617,7 +618,7 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ) { if( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) { - pSoldier2 = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pSoldier2 = gCharactersList[ iCounter ].usSolID; // skip the guy we are if ( pSoldier == pSoldier2 ) @@ -636,7 +637,7 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ) if ( !CanSoldierMoveWithVehicleId( pSoldier2, pSoldier->iVehicleId ) ) { // reset entry for selected list - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } } // if anchor guy IS a vehicle @@ -645,7 +646,7 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ) if ( !CanSoldierMoveWithVehicleId( pSoldier2, pSoldier->bVehicleID ) ) { // reset entry for selected list - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } } // if this guy is IN a vehicle @@ -654,7 +655,7 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ) if ( !CanSoldierMoveWithVehicleId( pSoldier, pSoldier2->iVehicleId ) ) { // reset entry for selected list - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } } // if this guy IS a vehicle @@ -663,13 +664,13 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ) if ( !CanSoldierMoveWithVehicleId( pSoldier, pSoldier2->bVehicleID ) ) { // reset entry for selected list - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } } // reject those not a squad (vehicle handled above) else if( pSoldier2->bAssignment >= ON_DUTY ) { - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } else { @@ -678,14 +679,14 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ) ( pSoldier->sSectorY != pSoldier2->sSectorY ) || ( pSoldier->bSectorZ != pSoldier2->bSectorZ ) ) { - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } // if either is between sectors, they must be in the same movement group if ( ( pSoldier->flags.fBetweenSectors || pSoldier2->flags.fBetweenSectors ) && ( pSoldier->ubGroupID != pSoldier2->ubGroupID ) ) { - ResetEntryForSelectedList( ( INT8 )iCounter ); + ResetEntryForSelectedList( iCounter ); } } @@ -706,7 +707,7 @@ void SelectUnselectedMercsWhoMustMoveWithThisGuy( void ) // if not already selected if( fSelectedListOfMercsForMapScreen[ iCounter ] == FALSE ) { - pSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pSoldier = gCharactersList[ iCounter ].usSolID; // if on a squad or in a vehicle if ( ( pSoldier->bAssignment < ON_DUTY ) || ( pSoldier->bAssignment == VEHICLE ) ) @@ -715,7 +716,7 @@ void SelectUnselectedMercsWhoMustMoveWithThisGuy( void ) if ( AnyMercInSameSquadOrVehicleIsSelected( pSoldier ) ) { // then also select this guy - SetEntryInSelectedCharacterList( ( INT8 ) iCounter ); + SetEntryInSelectedCharacterList( iCounter ); } } } @@ -734,7 +735,7 @@ BOOLEAN AnyMercInSameSquadOrVehicleIsSelected( SOLDIERTYPE *pSoldier ) // if selected if( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) { - pSoldier2 = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pSoldier2 = gCharactersList[ iCounter ].usSolID; // if they have the same assignment if( pSoldier->bAssignment == pSoldier2->bAssignment ) @@ -1294,10 +1295,10 @@ void CheckAndUpdateBasedOnContractTimes( void ) if( gCharactersList[iCounter].fValid == TRUE ) { // what kind of merc - if(Menptr[gCharactersList[iCounter].usSolID].ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC) + if(gCharactersList[iCounter].usSolID->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC) { // amount of time left on contract - iTimeRemaining=Menptr[gCharactersList[iCounter].usSolID].iEndofContractTime-GetWorldTotalMin(); + iTimeRemaining = gCharactersList[iCounter].usSolID->iEndofContractTime - GetWorldTotalMin(); if(iTimeRemaining >60*24) { // more than a day, display in green @@ -1328,9 +1329,9 @@ void CheckAndUpdateBasedOnContractTimes( void ) } } } - else if( Menptr[gCharactersList[iCounter].usSolID].ubWhatKindOfMercAmI == MERC_TYPE__MERC ) + else if( gCharactersList[iCounter].usSolID->ubWhatKindOfMercAmI == MERC_TYPE__MERC ) { - iTimeRemaining = Menptr[gCharactersList[iCounter].usSolID].iTotalContractLength; + iTimeRemaining = gCharactersList[iCounter].usSolID->iTotalContractLength; if( iTimeRemaining != iOldContractTimes[ iCounter ]) { @@ -1351,7 +1352,7 @@ void HandleDisplayOfSelectedMercArrows( void ) { INT16 sYPosition = 0; HVOBJECT hHandle; - UINT8 ubCount = 0; + UINT16 ubCount = 0; UINT16 selectedCharArrowX = UI_CHARLIST.Region.x + 1; @@ -1394,7 +1395,7 @@ void HandleDisplayOfSelectedMercArrows( void ) if( gCharactersList[ ubCount + FIRSTmercTOdisplay ].fValid == TRUE ) { // are they in the selected list or int he same mvt group as this guy - if( ( IsEntryInSelectedListSet( ubCount + FIRSTmercTOdisplay ) == TRUE ) || ( ( GetSelectedDestChar() != - 1 ) ? ( ( Menptr[ gCharactersList[ ubCount + FIRSTmercTOdisplay ].usSolID ].ubGroupID != 0 ) ? ( Menptr[ gCharactersList[GetSelectedDestChar()].usSolID ].ubGroupID == Menptr[ gCharactersList[ ubCount + FIRSTmercTOdisplay ].usSolID ].ubGroupID ) : FALSE ) : FALSE ) ) + if( ( IsEntryInSelectedListSet( ubCount + FIRSTmercTOdisplay ) == TRUE ) || ( ( GetSelectedDestChar() != - 1 ) ? ( ( gCharactersList[ ubCount + FIRSTmercTOdisplay ].usSolID->ubGroupID != 0 ) ? ( gCharactersList[GetSelectedDestChar()].usSolID->ubGroupID == gCharactersList[ ubCount + FIRSTmercTOdisplay ].usSolID->ubGroupID ) : FALSE ) : FALSE ) ) { sYPosition = y + ( ubCount * ( Y_SIZE + 2) ) - 1; @@ -1425,10 +1426,15 @@ void HandleDisplayOfItemPopUpForSector( INT16 sMapX, INT16 sMapY, INT16 sMapZ ) { if( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) { - if( ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID].sSectorX == sMapX ) && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID].sSectorY == sMapY ) && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID].bSectorZ == sMapZ ) && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID].bActive ) && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID].stats.bLife >= OKLIFE ) ) + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; + if( ( pSoldier->sSectorX == sMapX ) && + ( pSoldier->sSectorY == sMapY ) && + ( pSoldier->bSectorZ == sMapZ ) && + ( pSoldier->bActive ) && + ( pSoldier->stats.bLife >= OKLIFE ) ) { // valid character - InitializeItemPickupMenu( &( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID] ), NOWHERE , pItemPool, MAP_INVEN_POOL_X, MAP_INVEN_POOL_Y, -1 ); + InitializeItemPickupMenu( pSoldier, NOWHERE , pItemPool, MAP_INVEN_POOL_X, MAP_INVEN_POOL_Y, -1 ); fWasInited = TRUE; CreateScreenMaskForInventoryPoolPopUp( ); @@ -1521,22 +1527,25 @@ void GetMoraleString( SOLDIERTYPE *pSoldier, STR16 sString ) // NOTE: This doesn't use the "LeaveList" system at all! -void HandleLeavingOfEquipmentInCurrentSector( UINT32 uiMercId ) +void HandleLeavingOfEquipmentInCurrentSector( SoldierID uiMercId ) { // just drop the stuff in the current sector //INT32 iCounter = 0; INT32 sGridNo, sTempGridNo; - INT8 sectorz = Menptr[uiMercId].bSectorZ; - if ( SPY_LOCATION( Menptr[uiMercId].bAssignment ) ) + INT8 sectorz = uiMercId->bSectorZ; + if ( SPY_LOCATION( uiMercId->bAssignment ) ) sectorz = max( 0, sectorz - 10 ); - - if( Menptr[ uiMercId ].sSectorX != gWorldSectorX || Menptr[ uiMercId ].sSectorY != gWorldSectorY || sectorz != gbWorldSectorZ ) + + const auto x = uiMercId->sSectorX; + const auto y = uiMercId->sSectorY; + + if( x != gWorldSectorX || y != gWorldSectorY || sectorz != gbWorldSectorZ ) { // ATE: Use insertion gridno if not nowhere and insertion is gridno - if ( Menptr[ uiMercId ].ubStrategicInsertionCode == INSERTION_CODE_GRIDNO && !TileIsOutOfBounds(Menptr[ uiMercId ].usStrategicInsertionData) ) + if ( uiMercId->ubStrategicInsertionCode == INSERTION_CODE_GRIDNO && !TileIsOutOfBounds(uiMercId->usStrategicInsertionData) ) { - sGridNo = Menptr[ uiMercId ].usStrategicInsertionData; + sGridNo = uiMercId->usStrategicInsertionData; } else { @@ -1547,7 +1556,7 @@ void HandleLeavingOfEquipmentInCurrentSector( UINT32 uiMercId ) else { // ATE: Mercs can have a gridno of NOWHERE..... - sGridNo = Menptr[ uiMercId ].sGridNo; + sGridNo = uiMercId->sGridNo; if (TileIsOutOfBounds(sGridNo)) { @@ -1564,36 +1573,38 @@ void HandleLeavingOfEquipmentInCurrentSector( UINT32 uiMercId ) } } - UINT32 invsize = Menptr[ uiMercId ].inv.size(); - UINT32 uiFoundItems = 0; - Inventory invTemporaryBeforeDrop; + Inventory &inv = uiMercId->inv; + const UINT32 invsize = inv.size(); - if( Menptr[ uiMercId ].sSectorX != gWorldSectorX || Menptr[ uiMercId ].sSectorY != gWorldSectorY || sectorz != gbWorldSectorZ ) + if( x != gWorldSectorX || y != gWorldSectorY || sectorz != gbWorldSectorZ ) { - if (fShowMapInventoryPool && Menptr[uiMercId].sSectorX == sSelMapX && Menptr[uiMercId].sSectorY == sSelMapY && Menptr[uiMercId].bSectorZ == iCurrentMapSectorZ) + if (fShowMapInventoryPool && x == sSelMapX && y == sSelMapY && uiMercId->bSectorZ == iCurrentMapSectorZ) { for (UINT32 iCounter = 0; iCounter < invsize; ++iCounter) { - if (Menptr[uiMercId].inv[iCounter].exists()) + if (inv[iCounter].exists()) { - AutoPlaceObjectInInventoryStash(&Menptr[uiMercId].inv[iCounter], Menptr[uiMercId].sGridNo, Menptr[uiMercId].pathing.bLevel); + AutoPlaceObjectInInventoryStash(&( inv[iCounter] ), uiMercId->sGridNo, uiMercId->pathing.bLevel); } } } else { + Inventory invTemporaryBeforeDrop; + UINT32 uiFoundItems = 0; + for (UINT32 iCounter = 0; iCounter < invsize; ++iCounter) { // slot found, // check if actual item - if (Menptr[uiMercId].inv[iCounter].exists() == true) + if (inv[iCounter].exists() == true) { - invTemporaryBeforeDrop[uiFoundItems] = Menptr[uiMercId].inv[iCounter]; + invTemporaryBeforeDrop[uiFoundItems] = inv[iCounter]; uiFoundItems++; } } // anv: add all items at once (less file operations = less lag) - AddItemsToUnLoadedSector(Menptr[uiMercId].sSectorX, Menptr[uiMercId].sSectorY, sectorz, sGridNo, uiFoundItems, &(invTemporaryBeforeDrop[0]), Menptr[uiMercId].pathing.bLevel, WOLRD_ITEM_FIND_SWEETSPOT_FROM_GRIDNO | WORLD_ITEM_REACHABLE, 0, 1, FALSE); + AddItemsToUnLoadedSector(x, y, sectorz, sGridNo, uiFoundItems, &(invTemporaryBeforeDrop[0]), uiMercId->pathing.bLevel, WOLRD_ITEM_FIND_SWEETSPOT_FROM_GRIDNO | WORLD_ITEM_REACHABLE, 0, 1, FALSE); } } else @@ -1602,19 +1613,19 @@ void HandleLeavingOfEquipmentInCurrentSector( UINT32 uiMercId ) { // slot found, // check if actual item - if( Menptr[ uiMercId ].inv[ iCounter ].exists() == true ) + if( inv[ iCounter ].exists() == true ) { - AddItemToPool( sGridNo, &( Menptr[ uiMercId ].inv[ iCounter ] ) , 1, Menptr[ uiMercId ].pathing.bLevel, WORLD_ITEM_REACHABLE, 0 ); + AddItemToPool( sGridNo, &( inv[ iCounter ] ) , 1, uiMercId->pathing.bLevel, WORLD_ITEM_REACHABLE, 0 ); } } } - DropKeysInKeyRing( MercPtrs[ uiMercId ], sGridNo, MercPtrs[ uiMercId ]->pathing.bLevel, 1, FALSE, 0, FALSE ); + DropKeysInKeyRing( uiMercId, sGridNo, uiMercId->pathing.bLevel, 1, FALSE, 0, FALSE ); } -void HandleMercLeavingEquipmentInOmerta( UINT32 uiMercId ) +void HandleMercLeavingEquipmentInOmerta( SoldierID uiMercId ) { INT32 iSlotIndex = 0; @@ -1632,7 +1643,7 @@ void HandleMercLeavingEquipmentInOmerta( UINT32 uiMercId ) } -void HandleMercLeavingEquipmentInDrassen( UINT32 uiMercId ) +void HandleMercLeavingEquipmentInDrassen( SoldierID uiMercId ) { INT32 iSlotIndex = 0; @@ -1845,7 +1856,7 @@ INT32 FindFreeSlotInLeaveList( void ) } -INT32 SetUpDropItemListForMerc( UINT32 uiMercId ) +INT32 SetUpDropItemListForMerc( SoldierID uiMercId ) { // will set up a drop list for this grunt, remove items from inventory, and profile INT32 iSlotIndex = -1; @@ -1856,27 +1867,27 @@ INT32 SetUpDropItemListForMerc( UINT32 uiMercId ) return( -1 ); } - UINT32 invsize = Menptr[ uiMercId ].inv.size(); + UINT32 invsize = uiMercId->inv.size(); for( UINT32 iCounter = 0; iCounter < invsize; ++iCounter ) { // slot found, // check if actual item - if( Menptr[ uiMercId ].inv[ iCounter ].exists() == true ) + if( uiMercId->inv[ iCounter ].exists() == true ) { // make a linked list of the items left behind, with the ptr to its head in this free slot - AddItemToLeaveIndex( &( Menptr[ uiMercId ].inv[ iCounter ] ), iSlotIndex ); + AddItemToLeaveIndex( &( uiMercId->inv[ iCounter ] ), iSlotIndex ); // store owner's profile id for the items added to this leave slot index - SetUpMercAboutToLeaveEquipment( Menptr[ uiMercId ].ubProfile, iSlotIndex ); + SetUpMercAboutToLeaveEquipment( uiMercId->ubProfile, iSlotIndex ); } } // ATE: Added this to drop keyring keys - the 2nd last paramter says to add it to a leave list... // the gridno, level and visiblity are ignored - DropKeysInKeyRing( MercPtrs[ uiMercId ], NOWHERE, 0, 0, TRUE, iSlotIndex, FALSE ); + DropKeysInKeyRing( uiMercId, NOWHERE, 0, 0, TRUE, iSlotIndex, FALSE ); // zero out profiles - gMercProfiles[ Menptr[ uiMercId ].ubProfile ].clearInventory(); + gMercProfiles[ uiMercId->ubProfile ].clearInventory(); return( iSlotIndex ); } @@ -1931,19 +1942,19 @@ void UpdateCharRegionHelpText( void ) if( ( bSelectedInfoChar != -1 ) && ( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) ) { // valid soldier selected - pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; // health/energy/morale if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) { if ( pSoldier->stats.bLife != 0 ) { - if ( AM_A_ROBOT( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) ) + if ( AM_A_ROBOT(pSoldier) ) { // robot (condition only) swprintf( sString, L"%s: %d/%d", pMapScreenStatusStrings[ 3 ], pSoldier->stats.bLife, pSoldier->stats.bLifeMax ); } - else if ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].flags.uiStatusFlags & SOLDIER_VEHICLE ) + else if (pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { // vehicle (condition/fuel) swprintf( sString, L"%s: %d/%d, %s: %d/%d", @@ -2115,8 +2126,8 @@ void FindAndSetThisContractSoldier( SOLDIERTYPE *pSoldier ) { if( gCharactersList[ iCounter].usSolID == pSoldier->ubID ) { - ChangeSelectedInfoChar( ( INT8 )iCounter, TRUE ); - bSelectedContractChar = ( INT8 )iCounter; + ChangeSelectedInfoChar( ( INT16 )iCounter, TRUE ); + bSelectedContractChar = ( INT16 )iCounter; fShowContractMenu = TRUE; // create @@ -2369,9 +2380,9 @@ void RandomMercInGroupSaysQuote( GROUP *pGroup, UINT16 usQuoteNum ) { PLAYERGROUP *pPlayer; SOLDIERTYPE *pSoldier; - UINT8 ubMercsInGroup[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + SoldierID ubMercsInGroup[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; // if traversing tactically, don't do this, unless time compression was required for some reason (don't go to sector) @@ -2402,8 +2413,8 @@ void RandomMercInGroupSaysQuote( GROUP *pGroup, UINT16 usQuoteNum ) // At least say quote.... if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); - pSoldier = MercPtrs[ ubMercsInGroup[ ubChosenMerc ] ]; + ubChosenMerc = (UINT16)Random( ubNumMercs ); + pSoldier = ubMercsInGroup[ ubChosenMerc ]; TacticalCharacterDialogue( pSoldier, usQuoteNum ); } @@ -2450,7 +2461,7 @@ BOOLEAN ValidSelectableCharForNextOrPrev( INT32 iNewCharSlot ) if ( fShowInventoryFlag || fHoldingItem ) { // the new guy must have accessible inventory - if ( !MapCharacterHasAccessibleInventory( ( INT8 ) iNewCharSlot ) ) + if ( !MapCharacterHasAccessibleInventory( ( INT16 ) iNewCharSlot ) ) { return( FALSE ); } @@ -2485,7 +2496,7 @@ BOOLEAN MapscreenCanPassItemToCharNum( INT32 iNewCharSlot ) } - pNewSoldier = MercPtrs[ gCharactersList[ iNewCharSlot ].usSolID ]; + pNewSoldier = gCharactersList[ iNewCharSlot ].usSolID; // if in a hostile sector, disallow if (gTacticalStatus.fEnemyInSector && pNewSoldier->bInSector) @@ -2525,7 +2536,7 @@ BOOLEAN MapscreenCanPassItemToCharNum( INT32 iNewCharSlot ) } else { - pOldSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pOldSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; } } @@ -2600,7 +2611,7 @@ void GoToNextCharacterInList( void ) { if ( ( gCharactersList[ iCount ].fValid ) && ( iCount < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) && ValidSelectableCharForNextOrPrev( iCount ) ) { - ChangeSelectedInfoChar( ( INT8 )iCount, TRUE ); + ChangeSelectedInfoChar( iCount, TRUE ); break; } else @@ -2635,7 +2646,7 @@ void GoToFirstCharacterInList( void ) { if ( ( gCharactersList[ iCounter ].fValid ) && ( iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) && ValidSelectableCharForNextOrPrev( iCounter ) ) { - ChangeSelectedInfoChar( ( INT8 )iCounter, TRUE ); + ChangeSelectedInfoChar( iCounter, TRUE ); break; } } @@ -2661,7 +2672,7 @@ void GoToLastCharacterInList( void ) { if ( ( gCharactersList[ iCounter ].fValid ) && ( iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) && ValidSelectableCharForNextOrPrev( iCounter ) ) { - ChangeSelectedInfoChar( ( INT8 )iCounter, TRUE ); + ChangeSelectedInfoChar( iCounter, TRUE ); break; } } @@ -2691,7 +2702,7 @@ void GoToPrevCharacterInList( void ) { if ( ( gCharactersList[ iCount ].fValid ) && ( iCount < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) && ValidSelectableCharForNextOrPrev( iCount ) ) { - ChangeSelectedInfoChar( ( INT8 )iCount, TRUE ); + ChangeSelectedInfoChar( iCount, TRUE ); break; } else @@ -3627,7 +3638,7 @@ void SetUpMovingListsForSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) { if( gCharactersList[ iCounter ].fValid ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if( ( pSoldier->bActive ) && ( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && !SPY_LOCATION( pSoldier->bAssignment ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) && @@ -3672,74 +3683,81 @@ void SetUpMovingListsForSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) void CreatePopUpBoxForMovementBox( void ) { - SGPPoint MovePosition = { UI_MAP.ViewRegion.x + UI_MAP.ViewRegion.width / 2, UI_MAP.ViewRegion.y + 100 }; + SGPPoint MovePosition = { gMapViewRegion.MouseXPos, gMapViewRegion.MouseYPos }; SGPPoint Position; - SGPRect Dimensions; + SGPRect Dimensions = { 0,0, 100, 95 }; // create the pop up box and mouse regions for movement list - // create basic box - CreatePopUpBox(&ghMoveBox, AssignmentDimensions, MovePosition, (POPUP_BOX_FLAG_CLIP_TEXT|POPUP_BOX_FLAG_RESIZE )); + // create basic box + CreatePopUpBox( &ghMoveBox, Dimensions, MovePosition, (POPUP_BOX_FLAG_CLIP_TEXT | POPUP_BOX_FLAG_RESIZE) ); - // which buffer will box render to - SetBoxBuffer(ghMoveBox, FRAME_BUFFER); + // which buffer will box render to + SetBoxBuffer( ghMoveBox, FRAME_BUFFER ); - // border type? - SetBorderType(ghMoveBox,guiPOPUPBORDERS); + // border type? + SetBorderType( ghMoveBox, guiPOPUPBORDERS ); - // background texture - SetBackGroundSurface(ghMoveBox, guiPOPUPTEX); + // background texture + SetBackGroundSurface( ghMoveBox, guiPOPUPTEX ); - // margin sizes - SetMargins( ghMoveBox, 6, 6, 4, 4 ); + // margin sizes + SetMargins( ghMoveBox, 6, 6, 4, 4 ); - // space between lines - SetLineSpace(ghMoveBox, 2); + // space between lines + SetLineSpace( ghMoveBox, 2 ); - // set current box to this one - SetCurrentBox( ghMoveBox ); + // set current box to this one + SetCurrentBox( ghMoveBox ); - // add strings - AddStringsToMoveBox( ); + // add strings + AddStringsToMoveBox(); + // set font type + SetBoxFont( ghMoveBox, MAP_SCREEN_FONT ); - // set font type - SetBoxFont(ghMoveBox, MAP_SCREEN_FONT); + // set highlight color + SetBoxHighLight( ghMoveBox, FONT_WHITE ); - // set highlight color - SetBoxHighLight(ghMoveBox, FONT_WHITE); + // unhighlighted color + SetBoxForeground( ghMoveBox, FONT_LTGREEN ); - // unhighlighted color - SetBoxForeground(ghMoveBox, FONT_LTGREEN); + // make the header line WHITE + SetBoxLineForeground( ghMoveBox, 0, FONT_WHITE ); - // make the header line WHITE - SetBoxLineForeground( ghMoveBox, 0, FONT_WHITE ); - - // make the done and cancel lines YELLOW - SetBoxLineForeground( ghMoveBox, GetNumberOfLinesOfTextInBox( ghMoveBox ) - 1, FONT_YELLOW ); + // make the done and cancel lines YELLOW + SetBoxLineForeground( ghMoveBox, GetNumberOfLinesOfTextInBox( ghMoveBox ) - 1, FONT_YELLOW ); if ( IsAnythingSelectedForMoving() ) { SetBoxLineForeground( ghMoveBox, GetNumberOfLinesOfTextInBox( ghMoveBox ) - 2, FONT_YELLOW ); } - // background color - SetBoxBackground(ghMoveBox, FONT_BLACK); + // background color + SetBoxBackground( ghMoveBox, FONT_BLACK ); - // shaded color..for darkened text - SetBoxShade( ghMoveBox, FONT_BLACK ); + // shaded color..for darkened text + SetBoxShade( ghMoveBox, FONT_BLACK ); + for ( size_t i = 1; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + SetBoxColumnForeground( ghMoveBox, FONT_LTGREEN, i ); + SetBoxColumnBackground( ghMoveBox, FONT_BLACK, i ); + SetBoxColumnHighLight( ghMoveBox, FONT_WHITE, i ); + SetBoxColumnShade( ghMoveBox, FONT_BLACK, i ); + SetBoxColumnFont( ghMoveBox, MAP_SCREEN_FONT, i ); + } - // resize box to text - ResizeBoxToText( ghMoveBox ); + ResizeBoxToText( ghMoveBox ); - GetBoxPosition( ghMoveBox, &Position); + GetBoxPosition( ghMoveBox, &Position ); GetBoxSize( ghMoveBox, &Dimensions ); + // adjust position to try to keep it in the map area as best as possible if ( Position.iX + Dimensions.iRight >= (UI_MAP.ViewRegion.x + UI_MAP.ViewRegion.width) ) { - Position.iX = max(UI_MAP.ViewRegion.x, (UI_MAP.ViewRegion.x + UI_MAP.ViewRegion.width) - Dimensions.iRight ); + Position.iX = max( UI_MAP.ViewRegion.x, (UI_MAP.ViewRegion.x + UI_MAP.ViewRegion.width) - Dimensions.iRight ); SetBoxPosition( ghMoveBox, Position ); } @@ -3751,6 +3769,7 @@ void CreatePopUpBoxForMovementBox( void ) } +UINT32 gColumnEntries[MAX_POPUP_BOX_COLUMNS]; void AddStringsToMoveBox( void ) { @@ -3758,7 +3777,15 @@ void AddStringsToMoveBox( void ) CHAR16 sString[ 128 ], sStringB[ 128 ]; UINT32 hStringHandle; BOOLEAN fFirstOne = TRUE; - + const INT32 columnMaxEntries = 40; + INT32 entries = 0; + bool isFirstColumnFull = false; + bool secondColumnFull = false; + bool thirdColumnFull = false; + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + gColumnEntries[i] = 0; + } // set the current box SetCurrentBox( ghMoveBox ); @@ -3766,21 +3793,31 @@ void AddStringsToMoveBox( void ) // clear all the strings out of the box RemoveAllCurrentBoxStrings(); - // add title GetShortSectorString( sSelMapX, sSelMapY, sStringB ); swprintf( sString, L"%s %s", pMovementMenuStrings[ 0 ], sStringB ); - AddMonoString(&hStringHandle, sString ); - + AddMonoString(&hStringHandle, sString, 0 ); + // Add empty lines to other columns + for ( size_t i = 1; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + AddMonoString( &hStringHandle, L"", i); + } // blank line - AddMonoString(&hStringHandle, L"" ); + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + AddMonoString( &hStringHandle, L"", i ); + } // add Select all line if (giNumberOfSquadsInSectorMoving > 1) { swprintf(sString, L"%s", pMovementMenuStrings[4]); - AddMonoString(&hStringHandle, sString); + AddMonoString( &hStringHandle, sString, 0 ); + for ( size_t i = 1; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + AddMonoString( &hStringHandle, L"", i ); + } } @@ -3802,7 +3839,27 @@ void AddStringsToMoveBox( void ) else swprintf( sString, L"%s", pSquadMenuStrings[iSquadMovingList[ iCount ] ] ); } - AddMonoString(&hStringHandle, sString ); + // Determine which column to add + if (!isFirstColumnFull) + { + AddMonoString( &hStringHandle, sString, 0 ); + } + else if ( !secondColumnFull ) + { + AddMonoString( &hStringHandle, sString, 1 ); + gColumnEntries[1] += 1; + } + else if ( !thirdColumnFull ) + { + AddMonoString( &hStringHandle, sString, 2 ); + gColumnEntries[2] += 1; + } + else + { + AddMonoString( &hStringHandle, sString, 3 ); + gColumnEntries[3] += 1; + } + entries += 1; // now add all the grunts in it for( iCountB = 0; iCountB < giNumberOfSoldiersInSectorMoving; iCountB++ ) @@ -3818,9 +3875,43 @@ void AddStringsToMoveBox( void ) { swprintf( sString, L" %s", pSoldierMovingList[ iCountB ]->name ); } - AddMonoString(&hStringHandle, sString ); + + if ( !isFirstColumnFull ) + { + AddMonoString( &hStringHandle, sString, 0 ); + } + else if ( !secondColumnFull ) + { + AddMonoString( &hStringHandle, sString, 1 ); + gColumnEntries[1] += 1; + } + else if ( !thirdColumnFull ) + { + AddMonoString( &hStringHandle, sString, 2 ); + gColumnEntries[2] += 1; + } + else + { + AddMonoString( &hStringHandle, sString, 3 ); + gColumnEntries[3] += 1; + } + entries += 1; } } + + if (entries > columnMaxEntries && !isFirstColumnFull) + { + isFirstColumnFull = true; + gColumnEntries[0] = entries; + } + else if ( entries - gColumnEntries[0] > columnMaxEntries && !secondColumnFull ) + { + secondColumnFull = true; + } + else if ( entries - gColumnEntries[0] - gColumnEntries[1] > columnMaxEntries && !thirdColumnFull ) + { + thirdColumnFull = true; + } } @@ -3830,15 +3921,33 @@ void AddStringsToMoveBox( void ) // add this vehicle if( fVehicleIsMoving[ iCount ] ) { - // swprintf( sString, L"*%s*", pVehicleStrings[ pVehicleList[ iVehicleMovingList[ iCount ] ].ubVehicleType ] ); swprintf( sString, L"*%s*", gNewVehicle[ pVehicleList[ iVehicleMovingList[ iCount ] ].ubVehicleType ].NewVehicleStrings ); } else { - // swprintf( sString, L"%s", pVehicleStrings[ pVehicleList[ iVehicleMovingList[ iCount ] ].ubVehicleType ] ); swprintf( sString, L"%s", gNewVehicle[ pVehicleList[ iVehicleMovingList[ iCount ] ].ubVehicleType ].NewVehicleStrings); } - AddMonoString(&hStringHandle, sString ); + + if ( !isFirstColumnFull ) + { + AddMonoString( &hStringHandle, sString, 0 ); + } + else if ( !secondColumnFull ) + { + AddMonoString( &hStringHandle, sString, 1 ); + gColumnEntries[1] += 1; + } + else if ( !thirdColumnFull ) + { + AddMonoString( &hStringHandle, sString, 2 ); + gColumnEntries[2] += 1; + } + else + { + AddMonoString( &hStringHandle, sString, 3 ); + gColumnEntries[3] += 1; + } + entries += 1; // now add all the grunts in it for( iCountB = 0; iCountB < giNumberOfSoldiersInSectorMoving; iCountB++ ) @@ -3854,9 +3963,44 @@ void AddStringsToMoveBox( void ) { swprintf( sString, L" %s", pSoldierMovingList[ iCountB ]->name ); } - AddMonoString(&hStringHandle, sString ); + + if ( !isFirstColumnFull ) + { + AddMonoString( &hStringHandle, sString, 0 ); + } + else if ( !secondColumnFull ) + { + AddMonoString( &hStringHandle, sString, 1 ); + gColumnEntries[1] += 1; + } + else if ( !thirdColumnFull ) + { + AddMonoString( &hStringHandle, sString, 2 ); + gColumnEntries[2] += 1; + } + else + { + AddMonoString( &hStringHandle, sString, 3 ); + gColumnEntries[3] += 1; + } + entries += 1; } } + + + if ( entries > columnMaxEntries && !isFirstColumnFull ) + { + isFirstColumnFull = true; + gColumnEntries[0] = entries; + } + else if ( entries - gColumnEntries[0] > columnMaxEntries && !secondColumnFull ) + { + secondColumnFull = true; + } + else if ( entries - gColumnEntries[0] - gColumnEntries[1] > columnMaxEntries && !thirdColumnFull ) + { + thirdColumnFull = true; + } } @@ -3954,7 +4098,6 @@ void BuildMouseRegionsForMoveBox( void ) SetCurrentBox( ghMoveBox ); - // box heading MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK ); @@ -3979,67 +4122,303 @@ void BuildMouseRegionsForMoveBox( void ) // calc total number of "moving" lines in the box iTotalNumberOfLines = giNumberOfSoldiersInSectorMoving + giNumberOfSquadsInSectorMoving + giNumberOfVehiclesInSectorMoving; - // add the blank lines + // add the blank line iTotalNumberOfLines += iCounter; // now add the strings + const UINT32 firstColumnWidth = GetBoxSecondColumnCurrentOffset( ghMoveBox ); + bool firstColumnFull = false; + bool secondColumnFull = false; + bool thirdColumnFull = false; + INT32 entries = 0; + // Take into account any possible entries in the columnns after 1st for entries that come after squads + const UINT32 rowOffset = gColumnEntries[1] + gColumnEntries[2] + gColumnEntries[3]; + while( iCounter < iTotalNumberOfLines ) { // define regions for squad lines for( iCount = 0; iCount < giNumberOfSquadsInSectorMoving; iCount++ ) { - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, - MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); + // First column coordinates + UINT16 tlx = iBoxXPosition; + UINT16 tly = iBoxYPosition + iFontHeight * iCounter; + UINT16 brx = iBoxXPosition + firstColumnWidth; + UINT16 bry = iBoxYPosition + iFontHeight * (iCounter + 1); + + if ( thirdColumnFull ) + { + tlx = iBoxXPosition + 3 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + } + else if ( secondColumnFull ) + { + tlx = iBoxXPosition + 2*firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1])); + } + else if ( firstColumnFull ) + { + tlx = iBoxXPosition + firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - gColumnEntries[0]); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - gColumnEntries[0]); + } + + MSYS_DefineRegion( &gMoveMenuRegion[iCounter], tlx, tly, brx, bry, MSYS_PRIORITY_HIGHEST, + MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines - MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, iCounter ); + if ( thirdColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] - gColumnEntries[2] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 3 ); // Column index + } + else if ( secondColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1]); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 2 ); + } + else if ( firstColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 1 ); + } + else + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 0 ); + } + MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 1, SQUAD_REGION ); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 2, iCount ); - iCounter++; + + iCounter++; + entries += 1; + + // Squad soldiers for( iCountB = 0; iCountB < giNumberOfSoldiersInSectorMoving; iCountB++ ) { if( pSoldierMovingList[ iCountB ]->bAssignment == iSquadMovingList[ iCount ] ) { - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, - MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); + tlx = iBoxXPosition; + tly = iBoxYPosition + iFontHeight * iCounter; + brx = iBoxXPosition + firstColumnWidth; + bry = iBoxYPosition + iFontHeight * (iCounter + 1); + + if ( thirdColumnFull ) + { + tlx = iBoxXPosition + 3 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + } + else if ( secondColumnFull ) + { + tlx = iBoxXPosition + 2 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1])); + } + else if ( firstColumnFull ) + { + tlx = iBoxXPosition + firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - gColumnEntries[0]); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - gColumnEntries[0]); + } + + + MSYS_DefineRegion( &gMoveMenuRegion[iCounter], tlx, tly, brx, bry, MSYS_PRIORITY_HIGHEST, + MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines - MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, iCounter ); + if ( thirdColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] - gColumnEntries[2] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 3 ); + } + else if ( secondColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 2 ); + } + else if ( firstColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 1 ); + } + else + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 0 ); + } MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 1, SOLDIER_REGION ); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 2, iCountB ); + + iCounter++; + entries += 1; } } + + if ( entries >= gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2] && gColumnEntries[2] > 0 ) + { + thirdColumnFull = true; + } + else if ( entries >= gColumnEntries[0] + gColumnEntries[1] && gColumnEntries[1] > 0 ) + { + secondColumnFull = true; + } + else if ( entries >= gColumnEntries[0] && gColumnEntries[0] > 0 ) + { + firstColumnFull = true; + } } + + // Vehicles for( iCount = 0; iCount < giNumberOfVehiclesInSectorMoving; iCount++ ) { // define regions for vehicle lines - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, - MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); + UINT16 tlx = iBoxXPosition; + UINT16 tly = iBoxYPosition + iFontHeight * (iCounter); + UINT16 brx = iBoxXPosition + iBoxWidth; + UINT16 bry = iBoxYPosition + iFontHeight * (iCounter + 1); + + if ( thirdColumnFull ) + { + tlx = iBoxXPosition + 3 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + } + else if ( secondColumnFull ) + { + tlx = iBoxXPosition + 2 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1])); + } + else if ( firstColumnFull ) + { + tlx = iBoxXPosition + firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - gColumnEntries[0]); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - gColumnEntries[0]); + } + + MSYS_DefineRegion( &gMoveMenuRegion[iCounter], tlx, tly, brx, bry, MSYS_PRIORITY_HIGHEST, + MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines - MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, iCounter ); + if ( thirdColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] - gColumnEntries[2] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 3 ); + } + else if ( secondColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 2 ); + } + else if ( firstColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 1 ); + } + else + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 0 ); + } + MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 1, VEHICLE_REGION ); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 2, iCount ); iCounter++; + entries += 1; + // Soldiers inside a vehicle for( iCountB = 0; iCountB < giNumberOfSoldiersInSectorMoving; iCountB++ ) { if( ( pSoldierMovingList[ iCountB ]->bAssignment == VEHICLE ) &&( pSoldierMovingList[ iCountB ]->iVehicleId == iVehicleMovingList[ iCount ] ) ) { - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, - MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); + tlx = iBoxXPosition; + tly = iBoxYPosition + iFontHeight * iCounter; + brx = iBoxXPosition + firstColumnWidth; + bry = iBoxYPosition + iFontHeight * (iCounter + 1); + + if ( thirdColumnFull ) + { + tlx = iBoxXPosition + 3 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2])); + } + else if ( secondColumnFull ) + { + tlx = iBoxXPosition + 2 * firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - (gColumnEntries[0] + gColumnEntries[1])); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - (gColumnEntries[0] + gColumnEntries[1])); + } + else if ( firstColumnFull ) + { + tlx = iBoxXPosition + firstColumnWidth; + brx = tlx + firstColumnWidth; + tly = iBoxYPosition + iFontHeight * (iCounter - gColumnEntries[0]); + bry = iBoxYPosition + iFontHeight * (iCounter + 1 - gColumnEntries[0]); + } + + + MSYS_DefineRegion( &gMoveMenuRegion[iCounter], tlx, tly, brx, bry, MSYS_PRIORITY_HIGHEST, + MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines - MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, iCounter ); + if ( thirdColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] - gColumnEntries[2] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 3 ); + } + else if ( secondColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] - gColumnEntries[1] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 2 ); + } + else if ( firstColumnFull ) + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter - gColumnEntries[0] ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 1 ); + } + else + { + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 0, iCounter ); + MSYS_SetRegionUserData( &gMoveMenuRegion[iCounter], 3, 0 ); + } + MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 1, SOLDIER_REGION ); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 2, iCountB ); iCounter++; + entries += 1; } } + + if ( entries >= gColumnEntries[0] + gColumnEntries[1] + gColumnEntries[2] && gColumnEntries[2] > 0 ) + { + thirdColumnFull = true; + } + else if ( entries >= gColumnEntries[0] + gColumnEntries[1] && gColumnEntries[1] > 0 ) + { + secondColumnFull = true; + } + else if ( entries >= gColumnEntries[0] && gColumnEntries[0] > 0 ) + { + firstColumnFull = true; + } } @@ -4052,7 +4431,7 @@ void BuildMouseRegionsForMoveBox( void ) // this line gets place only once... if( !fDefinedOtherRegion ) { - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, + MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * (iCounter - rowOffset) ), ( INT16 )( iBoxXPosition + firstColumnWidth), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 - rowOffset) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines @@ -4064,7 +4443,7 @@ void BuildMouseRegionsForMoveBox( void ) fDefinedOtherRegion = TRUE; } - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, + MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * (iCounter - rowOffset) ), ( INT16 )( iBoxXPosition + firstColumnWidth), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 - rowOffset) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines @@ -4078,7 +4457,7 @@ void BuildMouseRegionsForMoveBox( void ) // blank line - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, + MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * (iCounter - rowOffset) ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 - rowOffset ) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK ); iCounter++; @@ -4086,11 +4465,16 @@ void BuildMouseRegionsForMoveBox( void ) if ( IsAnythingSelectedForMoving() ) { // DONE line - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, + MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * (iCounter - rowOffset) ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 - rowOffset ) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines - MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, iCounter ); + auto rowIndex = iCounter; + if (firstColumnFull) + { + rowIndex -= rowOffset; + } + MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, rowIndex); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 1, DONE_REGION ); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 2, 0 ); iCounter++; @@ -4098,17 +4482,22 @@ void BuildMouseRegionsForMoveBox( void ) else { // blank line - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, + MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * (iCounter - rowOffset) ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 - rowOffset) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK ); iCounter++; } // CANCEL line - MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * iCounter ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 ) ), MSYS_PRIORITY_HIGHEST, + MSYS_DefineRegion( &gMoveMenuRegion[ iCounter ], ( INT16 )( iBoxXPosition ), ( INT16 )( iBoxYPosition + iFontHeight * (iCounter - rowOffset) ), ( INT16 )( iBoxXPosition + iBoxWidth ), ( INT16 )( iBoxYPosition + iFontHeight * ( iCounter + 1 - rowOffset ) ), MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MoveMenuMvtCallback, MoveMenuBtnCallback ); // set user defines - MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 0, iCounter ); + auto rowIndex = iCounter; + if (firstColumnFull) + { + rowIndex -= rowOffset; + } + MSYS_SetRegionUserData(&gMoveMenuRegion[iCounter], 0, rowIndex); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 1, CANCEL_REGION ); MSYS_SetRegionUserData( &gMoveMenuRegion[ iCounter ], 2, 0 ); iCounter++; @@ -4116,10 +4505,10 @@ void BuildMouseRegionsForMoveBox( void ) void ClearMouseRegionsForMoveBox( void ) { - INT32 iCounter = 0; - + UINT32 iCounter = 0; + UINT32 lines = GetTotalNumberOfLinesOfTextInBox( ghMoveBox ); // run through list of mouse regions - for( iCounter = 0; iCounter < ( INT32 )GetNumberOfLinesOfTextInBox( ghMoveBox ); iCounter++ ) + for( iCounter = 0; iCounter < lines; iCounter++) { // remove this region MSYS_RemoveRegion( &gMoveMenuRegion[ iCounter ] ); @@ -4137,11 +4526,12 @@ void MoveMenuMvtCallback(MOUSE_REGION * pRegion, INT32 iReason ) iValue = MSYS_GetRegionUserData( pRegion, 0 ); + INT32 column = MSYS_GetRegionUserData( pRegion, 3 ); if (iReason & MSYS_CALLBACK_REASON_GAIN_MOUSE ) { // highlight string - HighLightBoxLine( ghMoveBox, iValue ); + HighLightBoxLine( ghMoveBox, iValue, column ); } else if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE ) { @@ -4544,7 +4934,7 @@ void HandleSettingTheSelectedListOfMercs( void ) // is the current guy a valid character? if( gCharactersList[ iCounter ].fValid == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { @@ -4564,15 +4954,15 @@ void HandleSettingTheSelectedListOfMercs( void ) // yes, then set them as the destination plotting character for movement arrow purposes fFirstOne = FALSE; - SetSelectedDestChar(( INT8 )iCounter ); + SetSelectedDestChar(( INT16 )iCounter ); // make DEST column glow giDestHighLine = iCounter; - ChangeSelectedInfoChar( ( INT8 ) iCounter, TRUE ); + ChangeSelectedInfoChar( iCounter, TRUE ); } // add this guy to the selected list of grunts - SetEntryInSelectedCharacterList( ( INT8 )iCounter ); + SetEntryInSelectedCharacterList( iCounter ); } } } @@ -4580,7 +4970,7 @@ void HandleSettingTheSelectedListOfMercs( void ) if( GetSelectedDestChar() != -1 ) { INT8 pbErrorNumber = -1; - pSoldier = MercPtrs[gCharactersList[GetSelectedDestChar()].usSolID]; + pSoldier = gCharactersList[GetSelectedDestChar()].usSolID; INT8 bSquadValue = pSoldier->bAssignment; if (bSquadValue == VEHICLE) { @@ -5639,7 +6029,7 @@ void UpdateHelpTextForMapScreenMercIcons( void ) else { // if merc is an AIM merc - if( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( gCharactersList[ bSelectedInfoChar ].usSolID->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) { SetRegionFastHelpText( &(gContractIconRegion), zMarksMapScreenText[ 22 ] ); } @@ -5649,7 +6039,7 @@ void UpdateHelpTextForMapScreenMercIcons( void ) } // if merc has life insurance - if( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].usLifeInsurance > 0 ) + if( gCharactersList[ bSelectedInfoChar ].usSolID->usLifeInsurance > 0 ) { SetRegionFastHelpText( &(gInsuranceIconRegion), zMarksMapScreenText[ 3 ] ); } @@ -5659,7 +6049,7 @@ void UpdateHelpTextForMapScreenMercIcons( void ) } // if merc has a medical deposit - if( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].usMedicalDeposit > 0 ) + if( gCharactersList[ bSelectedInfoChar ].usSolID->usMedicalDeposit > 0 ) { SetRegionFastHelpText( &(gDepositIconRegion), zMarksMapScreenText[ 12 ] ); } @@ -6128,7 +6518,7 @@ BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbErrorNumber ( !pSoldier->flags.fBetweenSectors ) && gMercProfiles[ ELDIN ].bMercStatus != MERC_IS_DEAD ) { //DBrot: More Rooms - UINT8 /*ubRoom,*/ cnt; + SoldierID /*ubRoom,*/ cnt; UINT16 usRoom; SOLDIERTYPE * pSoldier2; @@ -6136,8 +6526,9 @@ BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbErrorNumber { cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier2 = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier2++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt) { + pSoldier2 = cnt; if ( pSoldier2->bActive ) { if ( FindObj( pSoldier2, CHALICE ) != ITEM_NOT_FOUND ) @@ -6270,7 +6661,7 @@ BOOLEAN CanEntireMovementGroupMercIsInMove( SOLDIERTYPE *pSoldier, INT8 *pbError if( gCharactersList[ iCounter ].fValid == TRUE ) { // get soldier - pCurrentSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pCurrentSoldier = gCharactersList[ iCounter ].usSolID; // skip inactive grunts if( pCurrentSoldier->bActive == FALSE ) diff --git a/Strategic/Map Screen Interface.h b/Strategic/Map Screen Interface.h index 2e8d80ed..daa66868 100644 --- a/Strategic/Map Screen Interface.h +++ b/Strategic/Map Screen Interface.h @@ -24,8 +24,8 @@ typedef struct FASTHELPREGION { // Flugente: externalised squad names extern std::vector gSquadNameVector; -extern UINT8 FIRSTmercTOdisplay ; -extern UINT8 maxNumberOfMercVisibleInStrategyList; +extern UINT16 FIRSTmercTOdisplay ; +extern UINT16 maxNumberOfMercVisibleInStrategyList; // String Lengths Defines #define MAX_NAME_LENGTH 10 @@ -322,7 +322,7 @@ extern BOOLEAN fLockOutMapScreenInterface; // The character data structure typedef struct { - UINT16 usSolID;// soldier ID in MenPtrs + SoldierID usSolID;// soldier ID in MenPtrs BOOLEAN fValid;// is the current soldier a valid soldier } MapScreenCharacterSt; @@ -437,24 +437,24 @@ extern BOOLEAN fResetContractGlow; void InitalizeVehicleAndCharacterList( void ); // set this entry to as selected -void SetEntryInSelectedCharacterList( INT8 bEntry ); +void SetEntryInSelectedCharacterList( INT16 bEntry ); // set this entry to as unselected -void ResetEntryForSelectedList( INT8 bEntry ); +void ResetEntryForSelectedList( INT16 bEntry ); // reset selected list void ResetSelectedListForMapScreen( ); // build a selected list from a to b, inclusive -void BuildSelectedListFromAToB( INT8 bA, INT8 bB ); +void BuildSelectedListFromAToB( INT16 bA, INT16 bB ); // isa this entry int he selected character list set? -BOOLEAN IsEntryInSelectedListSet( INT8 bEntry ); +BOOLEAN IsEntryInSelectedListSet( INT16 bEntry ); // is there more than one person selected? BOOLEAN MultipleCharacterListEntriesSelected( void ); // toggle this entry on or off -void ToggleEntryInSelectedList( INT8 bEntry ); +void ToggleEntryInSelectedList( INT16 bEntry ); // reset assignments for mercs on selected list who have this assignment // HEADROCK HAM 3.6: Argument was unused... adding my own. @@ -513,11 +513,11 @@ void DeselectSelectedListMercsWhoCantMoveWithThisGuy( SOLDIERTYPE *pSoldier ); void GetMoraleString( SOLDIERTYPE *pSoldier, STR16 sString ); // handle leaving of equipment in sector -void HandleLeavingOfEquipmentInCurrentSector( UINT32 uiMercId ); +void HandleLeavingOfEquipmentInCurrentSector( SoldierID uiMercId ); // set up a linked list of items being dropped and post an event to later drop them -void HandleMercLeavingEquipmentInDrassen( UINT32 uiMercId ); -void HandleMercLeavingEquipmentInOmerta( UINT32 uiMercId ); +void HandleMercLeavingEquipmentInDrassen( SoldierID uiMercId ); +void HandleMercLeavingEquipmentInOmerta( SoldierID uiMercId ); // actually drop the stored list of items void HandleEquipmentLeftInOmerta( UINT32 uiSlotIndex ); @@ -537,7 +537,7 @@ void FreeLeaveListSlot( UINT32 uiSlotIndex ); INT32 FindFreeSlotInLeaveList( void ); // set up drop list -INT32 SetUpDropItemListForMerc( UINT32 uiMercId ); +INT32 SetUpDropItemListForMerc( SoldierID uiMercId ); // store owner's profile id for the items added to this leave slot index void SetUpMercAboutToLeaveEquipment( UINT32 ubProfileId, UINT32 uiSlotIndex ); @@ -745,4 +745,4 @@ extern BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbError extern BOOLEAN MapscreenCanPassItemToCharNum( INT32 iNewCharSlot ); -#endif +#endif diff --git a/Strategic/Meanwhile.cpp b/Strategic/Meanwhile.cpp index ed189316..5b58a30a 100644 --- a/Strategic/Meanwhile.cpp +++ b/Strategic/Meanwhile.cpp @@ -418,7 +418,7 @@ void CheckForMeanwhileOKStart( ) SOLDIERTYPE *pSoldier; BOOLEAN fFoundSoldierToInterrogate = FALSE; UINT32 uiCount = 0; - for (pSoldier = MercPtrs[gCharactersList[uiCount].usSolID]; gCharactersList[uiCount].fValid; uiCount++, pSoldier++) + for (pSoldier = gCharactersList[uiCount].usSolID; gCharactersList[uiCount].fValid; uiCount++, pSoldier++) { if (pSoldier->sSectorX == gModSettings.ubMeanwhileInterrogatePOWSectorX && pSoldier->sSectorY == gModSettings.ubMeanwhileInterrogatePOWSectorY && pSoldier->bSectorZ == 0 && pSoldier->bAssignment == ASSIGNMENT_POW && pSoldier->stats.bLife > 0 && gMercProfiles[pSoldier->ubProfile].bMercStatus != MERC_FIRED_AS_A_POW) diff --git a/Strategic/Merc Contract.cpp b/Strategic/Merc Contract.cpp index 291b99aa..21a8259f 100644 --- a/Strategic/Merc Contract.cpp +++ b/Strategic/Merc Contract.cpp @@ -282,9 +282,9 @@ void EndCurrentContractRenewal( ) } } -void HandleMercIsWillingToRenew( UINT8 ubID ) +void HandleMercIsWillingToRenew( SoldierID ubID ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; // We wish to lock interface SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_LOCK_INTERFACE,1,MAP_SCREEN,0,0,0 ); @@ -302,9 +302,9 @@ void HandleMercIsWillingToRenew( UINT8 ubID ) } -void HandleMercIsNotWillingToRenew( UINT8 ubID ) +void HandleMercIsNotWillingToRenew( SoldierID ubID ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; // We wish to lock interface SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_LOCK_INTERFACE,1,MAP_SCREEN,0,0,0 ); @@ -742,16 +742,12 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote ) void HandleBuddiesReactionToFiringMerc(SOLDIERTYPE *pFiredSoldier, INT8 bMoraleEvent ) { - INT8 bMercID; - INT8 bLastTeamID; - SOLDIERTYPE * pSoldier; - - - bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SoldierID bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // loop through all mercs to find buddies - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; bMercID++,pSoldier++) + for ( ; bMercID <= bLastTeamID; ++bMercID) { + SOLDIERTYPE *pSoldier = bMercID; //if the merc is active, in Arulco, not POW and is a buddy if ( WhichBuddy(pSoldier->ubProfile,pFiredSoldier->ubProfile) != (-1) && pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && @@ -1416,9 +1412,9 @@ void FindOutIfAnyMercAboutToLeaveIsGonnaRenew( void ) SOLDIERTYPE *pSoldier = NULL, *pSoldierWhoWillQuit = NULL; INT32 iCounter= 0, iNumberOnTeam = 0; // WDS - make number of mercenaries, etc. be configurable - UINT8 ubPotentialMercs[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + SoldierID ubPotentialMercs[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; gfFirstMercSayQuote = FALSE; @@ -1498,16 +1494,17 @@ void FindOutIfAnyMercAboutToLeaveIsGonnaRenew( void ) // OK, pick one.... if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); + SOLDIERTYPE *pChosenSoldier = ubPotentialMercs[ubChosenMerc]; SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_LOCK_INTERFACE,1 ,MAP_SCREEN ,0 ,0 ,0 ); - HandleImportantMercQuote( MercPtrs[ ubPotentialMercs[ ubChosenMerc ] ], QUOTE_CONTRACTS_OVER ); + HandleImportantMercQuote( pChosenSoldier, QUOTE_CONTRACTS_OVER ); SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_LOCK_INTERFACE,0 ,MAP_SCREEN ,0 ,0 ,0 ); AddReasonToWaitingListQueue( CONTRACT_EXPIRE_WARNING_REASON ); - TacticalCharacterDialogueWithSpecialEvent( MercPtrs[ ubPotentialMercs[ ubChosenMerc ] ], 0, DIALOGUE_SPECIAL_EVENT_SHOW_UPDATE_MENU, 0,0 ); + TacticalCharacterDialogueWithSpecialEvent( pChosenSoldier, 0, DIALOGUE_SPECIAL_EVENT_SHOW_UPDATE_MENU, 0,0 ); - MercPtrs[ ubPotentialMercs[ ubChosenMerc ] ]->ubContractRenewalQuoteCode = SOLDIER_CONTRACT_RENEW_QUOTE_89_USED; + pChosenSoldier->ubContractRenewalQuoteCode = SOLDIER_CONTRACT_RENEW_QUOTE_89_USED; } } } diff --git a/Strategic/Merc Contract.h b/Strategic/Merc Contract.h index 88a0fbfb..dd6ccf4f 100644 --- a/Strategic/Merc Contract.h +++ b/Strategic/Merc Contract.h @@ -68,8 +68,8 @@ void FindOutIfAnyMercAboutToLeaveIsGonnaRenew( void ); void BeginContractRenewalSequence( ); void HandleContractRenewalSequence( ); void EndCurrentContractRenewal( ); -void HandleMercIsWillingToRenew( UINT8 ubID ); -void HandleMercIsNotWillingToRenew( UINT8 ubID ); +void HandleMercIsWillingToRenew( SoldierID ubID ); +void HandleMercIsNotWillingToRenew( SoldierID ubID ); BOOLEAN ContractIsExpiring( SOLDIERTYPE *pSoldier ); UINT32 GetHourWhenContractDone( SOLDIERTYPE *pSoldier ); diff --git a/Strategic/MilitiaIndividual.cpp b/Strategic/MilitiaIndividual.cpp index fa117f44..4a54e30e 100644 --- a/Strategic/MilitiaIndividual.cpp +++ b/Strategic/MilitiaIndividual.cpp @@ -282,11 +282,12 @@ void UpdateMilitia( MILITIA aMilitia ) SOLDIERTYPE* GetUsedSoldierToIndividualMilitia( UINT32 aMilitiaId ) { - for ( UINT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; cnt <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; cnt <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++cnt ) { - if ( MercPtrs[cnt] && MercPtrs[cnt]->bActive && MercPtrs[cnt]->usIndividualMilitiaID == aMilitiaId ) + SOLDIERTYPE *pSoldier = cnt; + if ( pSoldier && pSoldier->bActive && pSoldier->usIndividualMilitiaID == aMilitiaId ) { - return MercPtrs[cnt]; + return pSoldier; } } @@ -299,11 +300,11 @@ void ApplyTacticalLifeRatioToMilitia() if ( !gGameExternalOptions.fIndividualMilitia ) return; - SOLDIERTYPE* pSoldier; - UINT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; - INT32 lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; + for ( ; cnt < lastid; ++cnt ) { + SOLDIERTYPE *pSoldier = cnt; MILITIA militia; if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLifeMax && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) ) { @@ -325,11 +326,11 @@ void ApplyMilitiaHealthRatioToTactical() if ( !gGameExternalOptions.fIndividualMilitia || !gGameExternalOptions.fIndividualMilitia_ManageHealth ) return; - SOLDIERTYPE* pSoldier; - UINT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; - INT32 lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; + for ( ; cnt < lastid; ++cnt ) { + SOLDIERTYPE *pSoldier = cnt; MILITIA militia; if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLifeMax && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) ) { @@ -695,12 +696,12 @@ UINT32 GetIdOfUnusedIndividualMilitia( UINT8 aSoldierClass, UINT8 aSector ) // fitting data found - now we have to make sure this one isn't already in use BOOLEAN found = FALSE; - SOLDIERTYPE* pSoldier; - - INT32 cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; - INT32 lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; + for ( ; cnt < lastid; ++cnt ) { + SOLDIERTYPE *pSoldier = cnt; + if ( pSoldier && pSoldier->bActive && ( *it ).id == pSoldier->usIndividualMilitiaID && IsLegalMilitiaId( pSoldier->usIndividualMilitiaID ) ) { found = TRUE; @@ -852,10 +853,11 @@ FLOAT PromoteIndividualMilitiaInSector( UINT8 aSector, FLOAT aPointsToAdd ) { BOOLEAN changesnecessary = FALSE; - SOLDIERTYPE* pSoldier = NULL; - int cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[MILITIA_TEAM].bLastID; + for ( ; cnt < lastid; ++cnt ) { + SOLDIERTYPE *pSoldier = cnt; MILITIA militia; if ( pSoldier && GetMilitia( pSoldier->usIndividualMilitiaID, &militia ) ) @@ -1004,7 +1006,7 @@ void HandlePossibleMilitiaPromotion( SOLDIERTYPE* pSoldier, BOOLEAN aAutoResolve pSoldier->ubMilitiaAssists = 0; } -void MoveIndividualMilitiaProfiles( UINT8 aSourceSector, UINT8 aTargetSector, UINT8 usGreens, UINT8 usRegulars, UINT8 usElites ) +void MoveIndividualMilitiaProfiles( UINT8 aSourceSector, UINT8 aTargetSector, UINT16 usGreens, UINT16 usRegulars, UINT16 usElites ) { if ( !usGreens && !usRegulars && !usElites ) return; @@ -1042,7 +1044,7 @@ void MoveIndividualMilitiaProfiles( UINT8 aSourceSector, UINT8 aTargetSector, UI // militia are disbanded - we have to take note of that -void DisbandIndividualMilitia( UINT8 aSector, UINT8 usGreens, UINT8 usRegulars, UINT8 usElites ) +void DisbandIndividualMilitia( UINT8 aSector, UINT16 usGreens, UINT16 usRegulars, UINT16 usElites ) { std::vector::iterator itend = gIndividualMilitiaVector.end( ); for ( std::vector::iterator it = gIndividualMilitiaVector.begin( ); it != itend; ++it ) diff --git a/Strategic/MilitiaIndividual.h b/Strategic/MilitiaIndividual.h index cf3b24e1..bb7747e7 100644 --- a/Strategic/MilitiaIndividual.h +++ b/Strategic/MilitiaIndividual.h @@ -179,10 +179,10 @@ FLOAT PromoteIndividualMilitiaInSector( UINT8 aSector, FLOAT aPointsToAdd ); // handle possible militia promotion and individual militia update void HandlePossibleMilitiaPromotion( SOLDIERTYPE* pSoldier, BOOLEAN aAutoResolve ); -void MoveIndividualMilitiaProfiles( UINT8 aSourceSector, UINT8 aTargetSector, UINT8 usGreens, UINT8 usRegulars, UINT8 usElites ); +void MoveIndividualMilitiaProfiles( UINT8 aSourceSector, UINT8 aTargetSector, UINT16 usGreens, UINT16 usRegulars, UINT16 usElites ); // militia are disbanded - we have to take note of that -void DisbandIndividualMilitia( UINT8 aSector, UINT8 usGreens, UINT8 usRegulars, UINT8 usElites ); +void DisbandIndividualMilitia( UINT8 aSector, UINT16 usGreens, UINT16 usRegulars, UINT16 usElites ); void PromoteIndividualMilitia( UINT8 aSector, UINT8 aSoldierClass ); @@ -195,4 +195,4 @@ UINT32 GetDailyUpkeep_IndividualMilitia( UINT32& arNumGreen, UINT32& arNumRegula void PickIndividualMilitia( UINT8 aSector, UINT8 ubType, UINT16 aNumber ); void DropIndividualMilitia( UINT8 aSector, UINT8 ubType, UINT16 aNumber ); -#endif +#endif diff --git a/Strategic/MilitiaSquads.cpp b/Strategic/MilitiaSquads.cpp index 5694509c..26df9005 100644 --- a/Strategic/MilitiaSquads.cpp +++ b/Strategic/MilitiaSquads.cpp @@ -70,7 +70,7 @@ #define DIR_SOUTH 2 #define DIR_WEST 3 -UINT8 gpAttackDirs[5][4]; // 0. Green Militia 1. Regular Militia 2. Elite Militia 3. Insertion code +UINT16 gpAttackDirs[5][4]; // 0. Green Militia 1. Regular Militia 2. Elite Militia 3. Insertion code UINT8 guiDirNumber = 0; BOOLEAN gfMSBattle = FALSE; @@ -140,12 +140,12 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] ); SECTORINFO *pTSectorInfo = &( SectorInfo[ SECTOR( sTMapX, sTMapY ) ] ); - UINT8 bGreensSourceTeam = 0, bGreensDestTeam = 0; - UINT8 bRegularsSourceTeam = 0, bRegularsDestTeam = 0; - UINT8 bElitesSourceTeam = 0, bElitesDestTeam = 0; - UINT8 bTotalGreens = 0, bTotalRegulars = 0, bTotalElites = 0; + UINT16 bGreensSourceTeam = 0, bGreensDestTeam = 0; + UINT16 bRegularsSourceTeam = 0, bRegularsDestTeam = 0; + UINT16 bElitesSourceTeam = 0, bElitesDestTeam = 0; + UINT16 bTotalGreens = 0, bTotalRegulars = 0, bTotalElites = 0; UINT8 bTotalGreensPercent = 0, bTotalRegularsPercent = 0, bTotalElitesPercent = 0; - INT8 bNewSourceGroupSize = 0, bNewDestGroupSize = 0, bGroupSizeRatio = 0; + INT16 bNewSourceGroupSize = 0, bNewDestGroupSize = 0, bGroupSizeRatio = 0; UINT8 ubChanceToSpreadOut; ////////////////////////////////////////////////////////// @@ -165,8 +165,8 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL { // Wilderness->Wilderness movement. Calculate Spread Out chance based on threats. - UINT8 ubNumEnemiesNearOrigin = NumEnemiesInFiveSectors( sMapX, sMapY ); - UINT8 ubNumEnemiesNearTarget = NumEnemiesInFiveSectors( sTMapX, sTMapY ); + UINT16 ubNumEnemiesNearOrigin = NumEnemiesInFiveSectors( sMapX, sMapY ); + UINT16 ubNumEnemiesNearTarget = NumEnemiesInFiveSectors( sTMapX, sTMapY ); if (ubNumEnemiesNearOrigin == 0 && ubNumEnemiesNearTarget > 0 ) @@ -264,9 +264,9 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL // Flugente: mobiles take along their gear // move only gear for those who come new into a sector - UINT8 elites = max(0, bElitesDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ ELITE_MILITIA ]); - UINT8 regulars = max(0, bRegularsDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]); - UINT8 greens = max(0, bGreensDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ GREEN_MILITIA ]); + UINT16 elites = max(0, bElitesDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ ELITE_MILITIA ]); + UINT16 regulars = max(0, bRegularsDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]); + UINT16 greens = max(0, bGreensDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ GREEN_MILITIA ]); MoveMilitiaEquipment(sMapX, sMapY, sTMapX, sTMapY, elites, regulars, greens); @@ -306,9 +306,9 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL // Flugente: mobiles take along their gear // move only gear for those who come new into a sector - UINT8 elites = max(0, bElitesDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ ELITE_MILITIA ]); - UINT8 regulars = max(0, bRegularsDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]); - UINT8 greens = max(0, bGreensDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ GREEN_MILITIA ]); + UINT16 elites = max(0, bElitesDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ ELITE_MILITIA ]); + UINT16 regulars = max(0, bRegularsDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]); + UINT16 greens = max(0, bGreensDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ GREEN_MILITIA ]); MoveMilitiaEquipment(sMapX, sMapY, sTMapX, sTMapY, elites, regulars, greens); @@ -336,7 +336,7 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL { // Source team moves En-Masse to target sector. - bNewDestGroupSize = __min( (NumNonPlayerTeamMembersInSector( sTMapX, sTMapY, MILITIA_TEAM ) + NumNonPlayerTeamMembersInSector( sMapX, sMapY, MILITIA_TEAM )), (UINT8)gGameExternalOptions.iMaxMilitiaPerSector ); + bNewDestGroupSize = __min( (NumNonPlayerTeamMembersInSector( sTMapX, sTMapY, MILITIA_TEAM ) + NumNonPlayerTeamMembersInSector( sMapX, sMapY, MILITIA_TEAM )), (UINT16)gGameExternalOptions.iMaxMilitiaPerSector ); bNewSourceGroupSize = __max( 0, (NumNonPlayerTeamMembersInSector( sTMapX, sTMapY, MILITIA_TEAM ) + NumNonPlayerTeamMembersInSector( sMapX, sMapY, MILITIA_TEAM )) - gGameExternalOptions.iMaxMilitiaPerSector ); // If there are still going to be two teams after the transfer @@ -396,9 +396,9 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL // Flugente: mobiles take along their gear // move only gear for those who come new into a sector - UINT8 elites = max(0, bElitesDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ ELITE_MILITIA ]); - UINT8 regulars = max(0, bRegularsDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]); - UINT8 greens = max(0, bGreensDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ GREEN_MILITIA ]); + UINT16 elites = max(0, bElitesDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ ELITE_MILITIA ]); + UINT16 regulars = max(0, bRegularsDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]); + UINT16 greens = max(0, bGreensDestTeam - pTSectorInfo->ubNumberOfCivsAtLevel[ GREEN_MILITIA ]); MoveMilitiaEquipment(sMapX, sMapY, sTMapX, sTMapY, elites, regulars, greens); @@ -432,9 +432,9 @@ void MoveMilitiaSquad(INT16 sMapX, INT16 sMapY, INT16 sTMapX, INT16 sTMapY, BOOL // Flugente: update individual militia data ApplyTacticalLifeRatioToMilitia( ); - UINT8 greens = pSectorInfo->ubNumberOfCivsAtLevel[GREEN_MILITIA]; - UINT8 regulars = pSectorInfo->ubNumberOfCivsAtLevel[REGULAR_MILITIA]; - UINT8 elites = pSectorInfo->ubNumberOfCivsAtLevel[ELITE_MILITIA]; + UINT16 greens = pSectorInfo->ubNumberOfCivsAtLevel[GREEN_MILITIA]; + UINT16 regulars = pSectorInfo->ubNumberOfCivsAtLevel[REGULAR_MILITIA]; + UINT16 elites = pSectorInfo->ubNumberOfCivsAtLevel[ELITE_MILITIA]; StrategicRemoveMilitiaFromSector( sMapX, sMapY, GREEN_MILITIA, greens ); StrategicRemoveMilitiaFromSector( sMapX, sMapY, REGULAR_MILITIA, regulars ); @@ -549,7 +549,7 @@ UINT16 CountDirectionEnemyRating( INT16 sMapX, INT16 sMapY, UINT8 uiDir ) for( sLMY = MINIMUM_VALID_Y_COORDINATE; sLMY <= MAXIMUM_VALID_Y_COORDINATE ; ++sLMY ) { // SECTORINFO *pSectorInfo = &( SectorInfo[ uiSector ] ); - UINT8 uiSumOfEnemyTroops = NumNonPlayerTeamMembersInSector( sLMX, sLMY, ENEMY_TEAM ); + UINT16 uiSumOfEnemyTroops = NumNonPlayerTeamMembersInSector( sLMX, sLMY, ENEMY_TEAM ); //pSectorInfo->ubNumAdmins + pSectorInfo->ubNumTroops + pSectorInfo->ubNumElites; // there's an enemy @@ -605,21 +605,21 @@ UINT16 CountDirectionRating( INT16 sMapX, INT16 sMapY, UINT8 uiDir ) return iRes; } - UINT8 ubMaxSquadSize = gGameExternalOptions.iMaxMilitiaPerSector; + UINT16 ubMaxSquadSize = gGameExternalOptions.iMaxMilitiaPerSector; - UINT8 ubSourceGreens = SectorInfo[SECTOR(sMapX, sMapY)].ubNumberOfCivsAtLevel[ GREEN_MILITIA ]; - UINT8 ubSourceRegulars = SectorInfo[SECTOR(sMapX, sMapY)].ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]; - UINT8 ubSourceElites = SectorInfo[SECTOR(sMapX, sMapY)].ubNumberOfCivsAtLevel[ ELITE_MILITIA ]; - UINT8 ubTargetGreens = SectorInfo[SECTOR(sDMapX, sDMapY)].ubNumberOfCivsAtLevel[ GREEN_MILITIA ]; - UINT8 ubTargetRegulars = SectorInfo[SECTOR(sDMapX, sDMapY)].ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]; - UINT8 ubTargetElites = SectorInfo[SECTOR(sDMapX, sDMapY)].ubNumberOfCivsAtLevel[ ELITE_MILITIA ]; + UINT16 ubSourceGreens = SectorInfo[SECTOR(sMapX, sMapY)].ubNumberOfCivsAtLevel[ GREEN_MILITIA ]; + UINT16 ubSourceRegulars = SectorInfo[SECTOR(sMapX, sMapY)].ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]; + UINT16 ubSourceElites = SectorInfo[SECTOR(sMapX, sMapY)].ubNumberOfCivsAtLevel[ ELITE_MILITIA ]; + UINT16 ubTargetGreens = SectorInfo[SECTOR(sDMapX, sDMapY)].ubNumberOfCivsAtLevel[ GREEN_MILITIA ]; + UINT16 ubTargetRegulars = SectorInfo[SECTOR(sDMapX, sDMapY)].ubNumberOfCivsAtLevel[ REGULAR_MILITIA ]; + UINT16 ubTargetElites = SectorInfo[SECTOR(sDMapX, sDMapY)].ubNumberOfCivsAtLevel[ ELITE_MILITIA ]; - UINT8 ubSourceMilitia = ubSourceGreens + ubSourceRegulars + ubSourceElites; - UINT8 ubTargetMilitia = ubTargetGreens + ubTargetRegulars + ubTargetElites; + UINT16 ubSourceMilitia = ubSourceGreens + ubSourceRegulars + ubSourceElites; + UINT16 ubTargetMilitia = ubTargetGreens + ubTargetRegulars + ubTargetElites; UINT16 usSourceEnemiesInFiveSectors = NumEnemiesInFiveSectors( sMapX, sMapY ); UINT16 usTargetEnemiesInFiveSectors = NumEnemiesInFiveSectors( sDMapX, sDMapY ); - UINT8 ubTargetEnemies = NumNonPlayerTeamMembersInSector( sDMapX, sDMapY, ENEMY_TEAM ); + UINT16 ubTargetEnemies = NumNonPlayerTeamMembersInSector( sDMapX, sDMapY, ENEMY_TEAM ); UINT16 usSourceMilitiaInFiveSectors = CountAllMilitiaInFiveSectors( sMapX, sMapY ); UINT16 usTargetMilitiaInFiveSectors = CountAllMilitiaInFiveSectors( sDMapX, sDMapY ); @@ -1112,7 +1112,7 @@ void DoMilitiaHelpFromAdjacentSectors( INT16 sMapX, INT16 sMapY ) UINT16 pMoveDir[4][3]; UINT8 uiDirNumber = 0; UINT8 x; - UINT8 uiNumGreen = 0, uiNumReg = 0, uiNumElite = 0; + UINT16 uiNumGreen = 0, uiNumReg = 0, uiNumElite = 0; SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] ); BOOLEAN fMoreTroopsLeft[4] = {FALSE,FALSE,FALSE,FALSE}; BOOLEAN fFirstLoop = TRUE; @@ -1175,7 +1175,7 @@ void DoMilitiaHelpFromAdjacentSectors( INT16 sMapX, INT16 sMapY ) // Flugente: order sNumber reinforcements from src sector to target sector BOOLEAN CallMilitiaReinforcements( INT16 sTargetMapX, INT16 sTargetMapY, INT16 sSrcMapX, INT16 sSrcMapY, UINT16 sNumber ) { - UINT8 uiNumGreen = 0, uiNumReg = 0, uiNumElite = 0; + UINT16 uiNumGreen = 0, uiNumReg = 0, uiNumElite = 0; SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sTargetMapX, sTargetMapY ) ] ); guiDirNumber = 0; @@ -1236,9 +1236,9 @@ BOOLEAN CallMilitiaReinforcements( INT16 sTargetMapX, INT16 sTargetMapY, INT16 s { ++sMilitiaMoved; - UINT8 militia_green = MilitiaInSectorOfRank( sTargetMapX, sTargetMapY, GREEN_MILITIA ); - UINT8 militia_troop = MilitiaInSectorOfRank( sTargetMapX, sTargetMapY, REGULAR_MILITIA ); - UINT8 militia_elite = MilitiaInSectorOfRank( sTargetMapX, sTargetMapY, ELITE_MILITIA ); + UINT16 militia_green = MilitiaInSectorOfRank( sTargetMapX, sTargetMapY, GREEN_MILITIA ); + UINT16 militia_troop = MilitiaInSectorOfRank( sTargetMapX, sTargetMapY, REGULAR_MILITIA ); + UINT16 militia_elite = MilitiaInSectorOfRank( sTargetMapX, sTargetMapY, ELITE_MILITIA ); gpAttackDirs[guiDirNumber][0] += militia_green - uiNumGreen; gpAttackDirs[guiDirNumber][1] += militia_troop - uiNumReg; diff --git a/Strategic/MilitiaSquads.h b/Strategic/MilitiaSquads.h index 4f09125e..5b0be952 100644 --- a/Strategic/MilitiaSquads.h +++ b/Strategic/MilitiaSquads.h @@ -9,7 +9,7 @@ //#define MAXIMUM_MILITIA_SQUAD_SIZE 30 -extern UINT8 gpAttackDirs[5][4]; +extern UINT16 gpAttackDirs[5][4]; extern UINT8 guiDirNumber; // Flugente: militia in this sector is ordered to move according to flags that were applied to it prior @@ -50,4 +50,4 @@ void DissolveAllMilitiaGroupsInSector( INT16 sMapX, INT16 sMapY ); BOOLEAN MilitiaGroupEntersCurrentSector( UINT8 usGroupId, INT16 sMapX, INT16 sMapY ); -#endif +#endif diff --git a/Strategic/MiniEvents.cpp b/Strategic/MiniEvents.cpp index 88516ea3..21e4660e 100644 --- a/Strategic/MiniEvents.cpp +++ b/Strategic/MiniEvents.cpp @@ -1089,9 +1089,9 @@ namespace MiniEventHelpers INT16 x = 0; INT16 y = 0; INT8 z = 0; - for (UINT32 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for (SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - const SOLDIERTYPE* merc = MercPtrs[i]; + const SOLDIERTYPE* merc = i; if (merc && merc->ubProfile == profileId) { x = merc->sSectorX; @@ -1519,9 +1519,9 @@ void MiniEventsLua(UINT32 eventId) gAllMercs.clear(); // get all mercs eligible to get a mini event - for (UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt) + for (SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt) { - SOLDIERTYPE* pSoldier = MercPtrs[ cnt ]; + SOLDIERTYPE* pSoldier = cnt; if (pSoldier && pSoldier->bActive && pSoldier->stats.bLife > 0 @@ -1542,9 +1542,9 @@ void MiniEventsLua(UINT32 eventId) // second param: a table containing basic info about all of the player's mercs ({ nickname = profileid }) f.TableOpen(); - for (UINT32 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for (SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - const SOLDIERTYPE* merc = MercPtrs[i]; + const SOLDIERTYPE* merc = i; if (merc && merc->bActive && merc->bAssignment != IN_TRANSIT && !(merc->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(AM_A_ROBOT(merc))) { std::wstring ws(gMercProfiles[merc->ubProfile].zNickname); @@ -1561,9 +1561,9 @@ void MiniEventsLua(UINT32 eventId) LuaFunction f = LuaFunction(gLS, "BeginRandomEvent"); // first param: a table containing basic info about all of the player's mercs ({ nickname = profileid }) f.TableOpen(); - for (UINT32 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - const SOLDIERTYPE* merc = MercPtrs[i]; + const SOLDIERTYPE* merc = i; if (merc && merc->bActive && merc->bAssignment != IN_TRANSIT && !(merc->flags.uiStatusFlags & SOLDIER_VEHICLE) && !(AM_A_ROBOT(merc))) { std::wstring ws(gMercProfiles[merc->ubProfile].zNickname); diff --git a/Strategic/Player Command.cpp b/Strategic/Player Command.cpp index ba856cb3..eac292de 100644 --- a/Strategic/Player Command.cpp +++ b/Strategic/Player Command.cpp @@ -543,7 +543,7 @@ BOOLEAN SetThisSectorAsEnemyControlled( INT16 sMapX, INT16 sMapY, INT8 bMapZ, BO { // Enemies can steal items left lying about, each one can carry out up to X kg (defined in RemoveRandomItemsInSector). // Don't care underground sectors here -- we are in overground code branch. - UINT8 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; + UINT16 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; GetNumberOfStationaryEnemiesInSector( sMapX, sMapY, &ubNumAdmins, &ubNumTroops, &ubNumElites, &ubNumRobots, &ubNumTanks, &ubNumJeeps ); RemoveRandomItemsInSector( sMapX, sMapY, bMapZ, (UINT32)ubNumAdmins + ubNumTroops + ubNumElites ); } diff --git a/Strategic/PreBattle Interface.cpp b/Strategic/PreBattle Interface.cpp index abc745b8..46ecb0e1 100644 --- a/Strategic/PreBattle Interface.cpp +++ b/Strategic/PreBattle Interface.cpp @@ -296,11 +296,10 @@ FLOAT gAmbushRadiusModifier = 1.0f; void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) { VOBJECT_DESC VObjectDesc; - INT32 i; UINT8 ubGroupID = 0; - UINT8 ubNumStationaryEnemies = 0; - UINT8 ubNumMobileEnemies = 0; - UINT8 ubNumMercs; + UINT16 ubNumStationaryEnemies = 0; + UINT16 ubNumMobileEnemies = 0; + UINT16 ubNumMercs; BOOLEAN fUsePluralVersion = FALSE; INT8 bBestExpLevel = 0; BOOLEAN fRetreatAnOption = TRUE; @@ -407,8 +406,6 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) gubPBSectorY = gpBattleGroup->ubSectorY; gubPBSectorZ = gpBattleGroup->ubSectorZ; - // get number of enemies thought to be here - SectorInfo[SECTOR( gubPBSectorX, gubPBSectorY )].bLastKnownEnemies = NumNonPlayerTeamMembersInSector( gubPBSectorX, gubPBSectorY, ENEMY_TEAM ); fMapPanelDirty = TRUE; } else if( gfPersistantPBI ) @@ -602,11 +599,12 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) //Count the number of players involved or not involved in this battle guiNumUninvolved = 0; guiNumInvolved = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) { - if ( PlayerMercInvolvedInThisCombat( MercPtrs[ i ] ) ) + if ( PlayerMercInvolvedInThisCombat( pSoldier ) ) { // involved if( !ubGroupID ) @@ -615,13 +613,13 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) //can detect it by comparing the first value with future values. If we do, then //we set a flag which determines whether to use the singular help text or plural version //for the retreat button. - ubGroupID = MercPtrs[ i ]->ubGroupID; + ubGroupID = pSoldier->ubGroupID; if( !gpBattleGroup ) gpBattleGroup = GetGroup( ubGroupID ); - //if( bBestExpLevel > MercPtrs[ i ]->stats.bExpLevel ) // SANDRO - WTF!! This is a bug! - if( bBestExpLevel < MercPtrs[ i ]->stats.bExpLevel ) // SANDRO - WTF!! This is a bug! - bBestExpLevel = MercPtrs[ i ]->stats.bExpLevel; - if( MercPtrs[ i ]->ubPrevSectorID == 255 ) + //if( bBestExpLevel > pSoldier->stats.bExpLevel ) // SANDRO - WTF!! This is a bug! + if( bBestExpLevel < pSoldier->stats.bExpLevel ) // SANDRO - WTF!! This is a bug! + bBestExpLevel = pSoldier->stats.bExpLevel; + if( pSoldier->ubPrevSectorID == 255 ) { //Not able to retreat (calculate it for group) GROUP *pTempGroup; pTempGroup = GetGroup( ubGroupID ); @@ -629,7 +627,7 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) CalculateGroupRetreatSector( pTempGroup ); } } - else if( ubGroupID != MercPtrs[ i ]->ubGroupID ) + else if( ubGroupID != pSoldier->ubGroupID ) { fUsePluralVersion = TRUE; } @@ -637,23 +635,23 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) ++guiNumInvolved; // SANDRO - added check if we have a scout in group, needed later - if( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( MercPtrs[ i ], SCOUTING_NT ) && gSkillTraitValues.fSCPreventsTheEnemyToAmbushMercs ) + if( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, SCOUTING_NT ) && gSkillTraitValues.fSCPreventsTheEnemyToAmbushMercs ) { fScoutPresent = TRUE; } - if ( MercPtrs[i]->usSoldierFlagMask & SOLDIER_AIRDROP ) + if ( pSoldier->usSoldierFlagMask & SOLDIER_AIRDROP ) { fAirDrop = TRUE; } - UINT16 deploymentleadership = EffectiveLeadership( MercPtrs[i] ); - FLOAT ambushradiusmodifier = 10 * EffectiveExpLevel( MercPtrs[i] ) + MercPtrs[i]->GetBackgroundValue( BG_AMBUSH_RADIUS ); + UINT16 deploymentleadership = EffectiveLeadership( pSoldier ); + FLOAT ambushradiusmodifier = 10 * EffectiveExpLevel( pSoldier ) + pSoldier->GetBackgroundValue( BG_AMBUSH_RADIUS ); if ( gGameOptions.fNewTraitSystem ) { - deploymentleadership += 50 * NUM_SKILL_TRAITS( MercPtrs[i], SQUADLEADER_NT ); + deploymentleadership += 50 * NUM_SKILL_TRAITS( pSoldier, SQUADLEADER_NT ); - ambushradiusmodifier += 50 * NUM_SKILL_TRAITS( MercPtrs[i], SCOUTING_NT ); + ambushradiusmodifier += 50 * NUM_SKILL_TRAITS( pSoldier, SCOUTING_NT ); } // bonus with old traits, so that the check can be won else @@ -666,7 +664,7 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) gAmbushRadiusModifier = max( gAmbushRadiusModifier, ambushradiusmodifier / 100 ); // Flugente: if a merc is inserted from concealed state, retreat is forbidden, as at least this merc will have to extract manually - if ( MercPtrs[i]->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) + if ( pSoldier->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) fRetreatAnOption = FALSE; } else @@ -890,16 +888,17 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI ) // SANDRO - merc records - ambush experienced if ( GetEnemyEncounterCode() == ENEMY_AMBUSH_CODE || GetEnemyEncounterCode() == BLOODCAT_AMBUSH_CODE || GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE || fAmbushPrevented ) { - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) { - if ( PlayerMercInvolvedInThisCombat( MercPtrs[ i ] ) && MercPtrs[ i ]->ubProfile != NO_PROFILE ) + if ( PlayerMercInvolvedInThisCombat( pSoldier ) && pSoldier->ubProfile != NO_PROFILE ) { if ( GetEnemyEncounterCode() == ENEMY_AMBUSH_CODE || GetEnemyEncounterCode() == BLOODCAT_AMBUSH_CODE || GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE ) - gMercProfiles[ MercPtrs[ i ]->ubProfile ].records.usAmbushesExperienced++; - else if ( fAmbushPrevented && HAS_SKILL_TRAIT( MercPtrs[ i ], SCOUTING_NT ) ) // Scouts actually get this as number of prevented ambushes - gMercProfiles[ MercPtrs[ i ]->ubProfile ].records.usAmbushesExperienced++; + gMercProfiles[ pSoldier->ubProfile ].records.usAmbushesExperienced++; + else if ( fAmbushPrevented && HAS_SKILL_TRAIT( pSoldier, SCOUTING_NT ) ) // Scouts actually get this as number of prevented ambushes + gMercProfiles[ pSoldier->ubProfile ].records.usAmbushesExperienced++; } } } @@ -1547,14 +1546,12 @@ void RenderPreBattleInterface() { // don't know how many swprintf( str, L"?" ); - SectorInfo[ SECTOR( gubPBSectorX, gubPBSectorY ) ].bLastKnownEnemies = -2; } else { // know exactly how many i = NumNonPlayerTeamMembersInSector( gubPBSectorX, gubPBSectorY, ENEMY_TEAM ); swprintf( str, L"%d", i ); - SectorInfo[ SECTOR( gubPBSectorX, gubPBSectorY ) ].bLastKnownEnemies = (INT8)i; } x = 57 + (27 - StringPixLength( str, FONT14ARIAL )) / 2; y = 36; @@ -1579,22 +1576,23 @@ void RenderPreBattleInterface() // | NAME | ASSIGN | COND | HP | BP | line = 0; y = TOP_Y + TOP_Y_TEXT_BUFFER - bListOffset; - for( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++) + for( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id) { - if( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife && !(MercPtrs[i]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) + SOLDIERTYPE *pSoldier = id; + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) { - if( PlayerMercInvolvedInThisCombat( MercPtrs[ i ] ) ) + if( PlayerMercInvolvedInThisCombat( pSoldier ) ) { //NAME - wcscpy( str, MercPtrs[ i ]->name ); + wcscpy( str, pSoldier->name ); x = 17 + (52 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); //ASSIGN - GetMapscreenMercAssignmentString( MercPtrs[ i ], str ); + GetMapscreenMercAssignmentString( pSoldier, str ); x = 72 + (54 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); //COND - GetSoldierConditionInfo( MercPtrs[ i ], str, &ubHPPercent, &ubBPPercent ); + GetSoldierConditionInfo( pSoldier, str, &ubHPPercent, &ubBPPercent ); x = 129 + (58 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); //HP @@ -1624,33 +1622,34 @@ void RenderPreBattleInterface() { pGroup = gpGroupList; y = TOP_Y + TOP_Y_TEXT_BUFFER + ubUninvolvedStartY + UNINVOLVED_RELEVANT_HEIGHT - bListOffset; - for( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++ ) + for( SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; id <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++id ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) + SOLDIERTYPE *pSoldier = id; + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) { - if( !PlayerMercInvolvedInThisCombat(MercPtrs[ i ]) ) + if( !PlayerMercInvolvedInThisCombat(pSoldier) ) { //NAME - wcscpy( str, MercPtrs[ i ]->name ); + wcscpy( str, pSoldier->name ); x = 17 + (52 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); //ASSIGN - GetMapscreenMercAssignmentString( MercPtrs[ i ], str ); + GetMapscreenMercAssignmentString( pSoldier, str ); x = 72 + (54 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); //LOC - GetMapscreenMercLocationString( MercPtrs[ i ], str ); + GetMapscreenMercLocationString( pSoldier, str ); x = 128 + (33 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); //DEST - GetMapscreenMercDestinationString( MercPtrs[ i ], str ); + GetMapscreenMercDestinationString( pSoldier, str ); if (wcslen(str) > 0) { x = 164 + (41 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf( x + xOffset, y + yOffset, str ); } //DEP - GetMapscreenMercDepartureString( MercPtrs[ i ], str, &ubJunk ); + GetMapscreenMercDepartureString( pSoldier, str, &ubJunk ); x = 208 + (34 - StringPixLength(str, BLOCKFONT2)) / 2; mprintf(x + xOffset, y + yOffset, str); @@ -1816,12 +1815,13 @@ void RetreatMercsCallback( GUI_BUTTON *btn, INT32 reason ) { ///////////////////////////////////////////////////////////////////////////////// // SANDRO - merc records - times retreated counter - for( UINT8 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++i ) { - if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife >= OKLIFE ) + SOLDIERTYPE *pSoldier = i; + if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) { - if ( PlayerMercInvolvedInThisCombat( MercPtrs[i] ) && MercPtrs[i]->ubProfile != NO_PROFILE ) - gMercProfiles[ MercPtrs[i]->ubProfile ].records.usBattlesRetreated++; + if ( PlayerMercInvolvedInThisCombat( pSoldier ) && pSoldier->ubProfile != NO_PROFILE ) + gMercProfiles[ pSoldier->ubProfile ].records.usBattlesRetreated++; } } ///////////////////////////////////////////////////////////////////////////////// @@ -2387,9 +2387,9 @@ void RetreatAllInvolvedMilitiaGroups() return; // as group size will be cut to MAX_STRATEGIC_ENEMY_GROUP_SIZE, see how many troops are allowed and reduce sector count accordingly - UINT8 greens = pSector->ubNumberOfCivsAtLevel[0]; - UINT8 regulars = pSector->ubNumberOfCivsAtLevel[1]; - UINT8 elites = pSector->ubNumberOfCivsAtLevel[2]; + UINT16 greens = pSector->ubNumberOfCivsAtLevel[0]; + UINT16 regulars = pSector->ubNumberOfCivsAtLevel[1]; + UINT16 elites = pSector->ubNumberOfCivsAtLevel[2]; pGroup = CreateNewMilitiaGroupDepartingFromSector( SECTOR( sBattleSectorX, sBattleSectorY ), greens, regulars, elites ); @@ -2557,20 +2557,19 @@ BOOLEAN CurrentBattleSectorIs( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) void CheckForRobotAndIfItsControlled( void ) { - INT32 i; - // search for the robot on player's team - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && AM_A_ROBOT( MercPtrs[ i ] )) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && pSoldier->stats.bLife && AM_A_ROBOT( pSoldier )) { // check whether it has a valid controller with it. This sets its ubRobotRemoteHolderID field. - MercPtrs[ i ]->UpdateRobotControllerGivenRobot( ); + pSoldier->UpdateRobotControllerGivenRobot( ); // if he has a controller, set controllers - if ( MercPtrs[ i ]->ubRobotRemoteHolderID != NOBODY ) + if ( pSoldier->ubRobotRemoteHolderID != NOBODY ) { - MercPtrs[ MercPtrs[ i ]->ubRobotRemoteHolderID ]->UpdateRobotControllerGivenController( ); + pSoldier->ubRobotRemoteHolderID->UpdateRobotControllerGivenController( ); } break; diff --git a/Strategic/Queen Command.cpp b/Strategic/Queen Command.cpp index 2b14d1b7..f09964de 100644 --- a/Strategic/Queen Command.cpp +++ b/Strategic/Queen Command.cpp @@ -103,13 +103,13 @@ void ValidateEnemiesHaveWeapons() { #ifdef JA2BETAVERSION SGPRect CenteringRect= {0 + xResOffset, 0, SCREEN_WIDTH - xResOffset, SCREEN_HEIGHT }; - INT32 i, iErrorDialog; + INT32 iErrorDialog; SOLDIERTYPE *pSoldier; INT32 iNumInvalid = 0; - for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( !pSoldier->bActive || !pSoldier->bInSector ) { continue; @@ -141,9 +141,9 @@ void ValidateEnemiesHaveWeapons() } //Counts enemies and crepitus, but not bloodcats. -UINT8 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) +UINT16 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) { - UINT8 ubNumHostiles = 0; + UINT16 ubNumHostiles = 0; AssertGE( sSectorX, MINIMUM_VALID_X_COORDINATE); AssertLE( sSectorX, MAXIMUM_VALID_X_COORDINATE ); @@ -158,7 +158,7 @@ UINT8 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) pSector = FindUnderGroundSector( sSectorX, sSectorY, (UINT8)sSectorZ ); if( pSector ) { - ubNumHostiles = (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumCreatures + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); + ubNumHostiles = (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumCreatures + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); } } else @@ -168,7 +168,7 @@ UINT8 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) //Count stationary hostiles pSector = &SectorInfo[ SECTOR( sSectorX, sSectorY ) ]; - ubNumHostiles = (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumCreatures + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); + ubNumHostiles = (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumCreatures + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); //Count mobile enemies pGroup = gpGroupList; @@ -185,9 +185,9 @@ UINT8 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) return ubNumHostiles; } -UINT8 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) +UINT16 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) { - UINT8 ubNumEnemies = 0; + UINT16 ubNumEnemies = 0; AssertGE( sSectorX, MINIMUM_VALID_X_COORDINATE); AssertLE( sSectorX, MAXIMUM_VALID_X_COORDINATE ); @@ -202,7 +202,7 @@ UINT8 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) pSector = FindUnderGroundSector( sSectorX, sSectorY, (UINT8)sSectorZ ); if( pSector ) { - ubNumEnemies = (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); + ubNumEnemies = (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); } } else @@ -212,7 +212,7 @@ UINT8 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) //Count stationary enemies pSector = &SectorInfo[ SECTOR( sSectorX, sSectorY ) ]; - ubNumEnemies = (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); + ubNumEnemies = (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); //Count mobile enemies pGroup = gpGroupList; @@ -230,11 +230,11 @@ UINT8 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) } // returns how many members of a team are in a sector - not intended for OUR_TEAM! -UINT8 NumNonPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, UINT8 ubTeam ) +UINT16 NumNonPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, UINT8 ubTeam ) { SECTORINFO *pSector; GROUP *pGroup; - UINT8 ubNumTroops; + UINT16 ubNumTroops = 0; // HEADROCK: This is a TEMPORARY fix to avoid the assertion error. Not sure this is the best solution, // probably isn't. But I need this bit to work. @@ -255,14 +255,14 @@ UINT8 NumNonPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, UINT8 ubT if ( ubTeam == ENEMY_TEAM ) { - ubNumTroops = (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); + ubNumTroops = (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); if ( is_networked ) ubNumTroops += numenemyLAN((UINT8)sSectorX,(UINT8)sSectorY ); //hayden } else if ( ubTeam == MILITIA_TEAM ) { - ubNumTroops = (UINT8)(pSector->ubNumberOfCivsAtLevel[0] + pSector->ubNumberOfCivsAtLevel[1] + pSector->ubNumberOfCivsAtLevel[2]); + ubNumTroops = (pSector->ubNumberOfCivsAtLevel[0] + pSector->ubNumberOfCivsAtLevel[1] + pSector->ubNumberOfCivsAtLevel[2]); } else if ( ubTeam == CREATURE_TEAM ) { @@ -287,11 +287,12 @@ UINT16 NumPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, INT8 sSecto { UINT16 teammemberspresent = 0; - SOLDIERTYPE* pTeamSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) + SOLDIERTYPE *pTeamSoldier = NULL; + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pTeamSoldier = bMercID; // we test several conditions before we allow adding an opinion // other merc must be active, have a profile, be someone else and not be in transit or dead if ( pTeamSoldier->bActive && !pTeamSoldier->flags.fBetweenSectors && pTeamSoldier->stats.bLife > 0 && !(pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && @@ -309,7 +310,7 @@ UINT16 NumEnemyArmedVehiclesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 usTe { SECTORINFO *pSector; GROUP *pGroup; - UINT16 ubNum; + UINT16 ubNum = 0; // HEADROCK: This is a TEMPORARY fix to avoid the assertion error. Not sure this is the best solution, // probably isn't. But I need this bit to work. @@ -344,7 +345,7 @@ UINT16 NumEnemyArmedVehiclesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 usTe return ubNum; } -UINT8 NumStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) +UINT16 NumStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) { SECTORINFO *pSector; @@ -368,14 +369,14 @@ UINT8 NumStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) return( 0 ); } - return (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumTanks + pSector->ubNumJeeps + pSector->ubNumRobots); + return (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumTanks + pSector->ubNumJeeps + pSector->ubNumRobots); } -UINT8 NumMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) +UINT16 NumMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) { GROUP *pGroup; SECTORINFO *pSector; - UINT8 ubNumTroops; + UINT16 ubNumTroops; AssertGE( sSectorX, MINIMUM_VALID_X_COORDINATE); AssertLE( sSectorX, MAXIMUM_VALID_X_COORDINATE ); AssertGE( sSectorY, MINIMUM_VALID_Y_COORDINATE); @@ -396,13 +397,13 @@ UINT8 NumMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) if( pSector->ubGarrisonID == ROADBLOCK ) { //consider these troops as mobile troops even though they are in a garrison - ubNumTroops += (UINT8)(pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); + ubNumTroops += (pSector->ubNumAdmins + pSector->ubNumTroops + pSector->ubNumElites + pSector->ubNumRobots + pSector->ubNumJeeps + pSector->ubNumTanks); } return ubNumTroops; } -void GetNumberOfMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ) +void GetNumberOfMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ) { GROUP *pGroup; SECTORINFO *pSector; @@ -441,7 +442,7 @@ void GetNumberOfMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pu } } -void GetNumberOfMobileEnemiesInSectorWithoutRoadBlock( INT16 sSectorX, INT16 sSectorY, UINT8 usTeam, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ) +void GetNumberOfMobileEnemiesInSectorWithoutRoadBlock( INT16 sSectorX, INT16 sSectorY, UINT16 usTeam, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ) { GROUP *pGroup; AssertGE( sSectorX, MINIMUM_VALID_X_COORDINATE); @@ -468,7 +469,7 @@ void GetNumberOfMobileEnemiesInSectorWithoutRoadBlock( INT16 sSectorX, INT16 sSe } -void GetNumberOfStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ) +void GetNumberOfStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ) { SECTORINFO *pSector; AssertGE( sSectorX, MINIMUM_VALID_X_COORDINATE); @@ -486,9 +487,9 @@ void GetNumberOfStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumJeeps = pSector->ubNumJeeps; } -void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ) +void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ) { - UINT8 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; + UINT16 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; GetNumberOfStationaryEnemiesInSector( sSectorX, sSectorY, pubNumAdmins, pubNumTroops, pubNumElites, pubNumRobots, pubNumTanks, pubNumJeeps ); @@ -505,7 +506,6 @@ void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAd void EndTacticalBattleForEnemy() { GROUP *pGroup; - INT32 i; //Clear enemies in battle for all stationary groups in the sector. if( gbWorldSectorZ > 0 ) @@ -558,14 +558,16 @@ void EndTacticalBattleForEnemy() //Check to see if any of our mercs have abandoned the militia during a battle. This is cause for a rather //severe loyalty blow. - for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->bInSector && MercPtrs[ i ]->stats.bLife >= OKLIFE ) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE ) { //found one live militia, so look for any enemies/creatures. // NOTE: this is relying on ENEMY_TEAM being immediately followed by CREATURE_TEAM - for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i ) + for( SoldierID j = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; j <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++j ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->bInSector && MercPtrs[ i ]->stats.bLife >= OKLIFE ) + SOLDIERTYPE *pEnemy = j; + if( pEnemy->bActive && pEnemy->bInSector && pEnemy->stats.bLife >= OKLIFE ) { //confirmed at least one enemy here, so do the loyalty penalty. HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ABANDON_MILITIA, gWorldSectorX, gWorldSectorY, 0 ); break; @@ -576,27 +578,26 @@ void EndTacticalBattleForEnemy() } } -UINT8 NumFreeSlots( UINT8 ubTeam ) +UINT16 NumFreeSlots( UINT8 ubTeam ) { - UINT8 ubNumFreeSlots = 0; + UINT16 ubNumFreeSlots = 0; //Count the number of free enemy slots. It is possible to have multiple groups exceed the maximum. - for ( INT32 i = gTacticalStatus.Team[ubTeam].bFirstID; i <= gTacticalStatus.Team[ubTeam].bLastID; ++i ) + for ( SoldierID i = gTacticalStatus.Team[ubTeam].bFirstID; i <= gTacticalStatus.Team[ubTeam].bLastID; ++i ) { - if ( !Menptr[i].bActive ) + if ( !i->bActive ) ++ubNumFreeSlots; } // the militia team size can be restricted by the ini if ( ubTeam == MILITIA_TEAM ) { - ubNumFreeSlots = (UINT8)max( 0, (INT8)ubNumFreeSlots - (INT8)(gGameExternalOptions.ubGameMaximumNumberOfRebels - gGameExternalOptions.iMaxMilitiaPerSector) ); + ubNumFreeSlots = (UINT16)max( 0, (INT16)ubNumFreeSlots - (INT16)(gGameExternalOptions.ubGameMaximumNumberOfRebels - gGameExternalOptions.iMaxMilitiaPerSector) ); } return ubNumFreeSlots; } - //Called when entering a sector so the campaign AI can automatically insert the //correct number of troops of each type based on the current number in the sector //in global focus (gWorldSectorX/Y) @@ -1191,7 +1192,6 @@ BOOLEAN PrepareEnemyForUndergroundBattle() //The queen AI layer must process the event by subtracting forces, etc. void ProcessQueenCmdImplicationsOfDeath( SOLDIERTYPE *pSoldier ) { - INT32 iNumEnemiesInSector; SECTORINFO *pSector; INT32 iMaxEnemyGroupSize = gGameExternalOptions.iMaxEnemyGroupSize; DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"QueenCommand"); @@ -1738,22 +1738,6 @@ void ProcessQueenCmdImplicationsOfDeath( SOLDIERTYPE *pSoldier ) } } } - if( !pSoldier->bSectorZ ) - { - pSector = &SectorInfo[ SECTOR( pSoldier->sSectorX, pSoldier->sSectorY ) ]; - iNumEnemiesInSector = NumNonPlayerTeamMembersInSector( pSoldier->sSectorX, pSoldier->sSectorY, ENEMY_TEAM ); - if( iNumEnemiesInSector ) - { - if( pSector->bLastKnownEnemies >= 0 ) - { - pSector->bLastKnownEnemies = (INT8)iNumEnemiesInSector; - } - } - else - { - pSector->bLastKnownEnemies = 0; - } - } } //Well, not so rarely with mobile reinforcements! @@ -1772,8 +1756,8 @@ void AddPossiblePendingEnemiesToBattle() BOOLEAN fMagicallyAppeared=FALSE; #endif - UINT8 ubSlots, ubNumAvailable; - UINT8 ubNumRobots, ubNumElites, ubNumTroops, ubNumAdmins, ubNumTanks, ubNumJeeps; + UINT16 ubSlots, ubNumAvailable; + UINT16 ubNumRobots, ubNumElites, ubNumTroops, ubNumAdmins, ubNumTanks, ubNumJeeps; UINT8 ubNumGroupsInSector; UINT8 ubGroupIndex; GROUP *pGroup; @@ -2001,7 +1985,7 @@ void AddPossiblePendingEnemiesToBattle() pGroup = pGroupInSectorList[ ubGroupIndex]; // Flugente fix: check for underflow... - UINT8 currentgroupsize = pGroup->pEnemyGroup->ubElitesInBattle + pGroup->pEnemyGroup->ubTroopsInBattle + pGroup->pEnemyGroup->ubAdminsInBattle + UINT16 currentgroupsize = pGroup->pEnemyGroup->ubElitesInBattle + pGroup->pEnemyGroup->ubTroopsInBattle + pGroup->pEnemyGroup->ubAdminsInBattle + pGroup->pEnemyGroup->ubRobotsInBattle + pGroup->pEnemyGroup->ubTanksInBattle + pGroup->pEnemyGroup->ubJeepsInBattle; if ( currentgroupsize > pGroup->ubGroupSize ) ubNumAvailable = 0; @@ -2122,14 +2106,14 @@ void AddPossiblePendingEnemiesToBattle() void NotifyPlayersOfNewEnemies() { - INT32 iSoldiers, iChosenSoldier, i; + INT32 iSoldiers, iChosenSoldier; SOLDIERTYPE *pSoldier; BOOLEAN fIgnoreBreath = FALSE; iSoldiers = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { //find a merc that is aware. - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bBreath >= OKBREATH ) { iSoldiers++; @@ -2139,9 +2123,9 @@ void NotifyPlayersOfNewEnemies() { // look for an out of breath merc. fIgnoreBreath = TRUE; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { //find a merc that is aware. - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) { iSoldiers++; @@ -2151,9 +2135,9 @@ void NotifyPlayersOfNewEnemies() if( iSoldiers ) { iChosenSoldier = Random( iSoldiers ); - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { //find a merc that is aware. - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bInSector && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && ( ( pSoldier->bBreath >= OKBREATH ) || fIgnoreBreath ) ) { @@ -2176,12 +2160,12 @@ void NotifyPlayersOfNewEnemies() } } -void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ubNumAdmins, UINT8 ubNumTroops, UINT8 ubNumElites, UINT8 ubNumRobots, UINT8 ubNumTanks, UINT8 ubNumJeeps, BOOLEAN fMagicallyAppeared ) +void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT16 ubNumAdmins, UINT16 ubNumTroops, UINT16 ubNumElites, UINT16 ubNumRobots, UINT16 ubNumTanks, UINT16 ubNumJeeps, BOOLEAN fMagicallyAppeared ) { SOLDIERTYPE *pSoldier; MAPEDGEPOINTINFO MapEdgepointInfo; - UINT8 ubCurrSlot; - UINT8 ubTotalSoldiers; + UINT16 ubCurrSlot; + UINT16 ubTotalSoldiers; UINT8 bDesiredDirection=0; // while transport groups can't normally reinforce, this covers the case where a transport group enters a sector (via normal movement) @@ -2323,7 +2307,7 @@ void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if( ubNumTroops && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumTroops) ) + else if( ubNumTroops && Random( ubTotalSoldiers ) < (ubNumElites + ubNumTroops) ) { ubNumTroops--; ubTotalSoldiers--; @@ -2346,7 +2330,7 @@ void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if( ubNumAdmins && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumTroops + ubNumAdmins) ) + else if( ubNumAdmins && Random( ubTotalSoldiers ) < (ubNumElites + ubNumTroops + ubNumAdmins) ) { ubNumAdmins--; ubTotalSoldiers--; @@ -2369,7 +2353,7 @@ void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if( ubNumRobots && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumTroops + ubNumAdmins + ubNumRobots) ) + else if( ubNumRobots && Random( ubTotalSoldiers ) < (ubNumElites + ubNumTroops + ubNumAdmins + ubNumRobots) ) { ubNumRobots--; ubTotalSoldiers--; @@ -2392,7 +2376,7 @@ void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if( ubNumTanks && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumTroops + ubNumAdmins + ubNumRobots + ubNumTanks) && ubNumberOfVehicles < 9 ) + else if( ubNumTanks && Random( ubTotalSoldiers ) < (ubNumElites + ubNumTroops + ubNumAdmins + ubNumRobots + ubNumTanks) && ubNumberOfVehicles < 9 ) { ubNumTanks--; ubTotalSoldiers--; @@ -2415,7 +2399,7 @@ void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if ( ubNumJeeps && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumTroops + ubNumAdmins + ubNumRobots + ubNumTanks + ubNumJeeps) && ubNumberOfVehicles < 9 ) + else if ( ubNumJeeps && Random( ubTotalSoldiers ) < (ubNumElites + ubNumTroops + ubNumAdmins + ubNumRobots + ubNumTanks + ubNumJeeps) && ubNumberOfVehicles < 9 ) { ubNumJeeps--; ubTotalSoldiers--; @@ -2463,12 +2447,12 @@ void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub #endif } -void AddMilitiaToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ubNumGreens, UINT8 ubNumRegulars, UINT8 ubNumElites, BOOLEAN fMagicallyAppeared ) +void AddMilitiaToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT16 ubNumGreens, UINT16 ubNumRegulars, UINT16 ubNumElites, BOOLEAN fMagicallyAppeared ) { SOLDIERTYPE *pSoldier; MAPEDGEPOINTINFO MapEdgepointInfo; - UINT8 ubCurrSlot; - UINT8 ubTotalSoldiers; + UINT16 ubCurrSlot; + UINT16 ubTotalSoldiers; UINT8 bDesiredDirection = 0; switch ( ubStrategicInsertionCode ) @@ -2558,7 +2542,7 @@ void AddMilitiaToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if ( ubNumRegulars && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumRegulars) ) + else if ( ubNumRegulars && Random( ubTotalSoldiers ) < (ubNumElites + ubNumRegulars) ) { ubNumRegulars--; ubTotalSoldiers--; @@ -2581,7 +2565,7 @@ void AddMilitiaToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ub } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if ( ubNumGreens && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumRegulars + ubNumGreens) ) + else if ( ubNumGreens && Random( ubTotalSoldiers ) < (ubNumElites + ubNumRegulars + ubNumGreens) ) { ubNumGreens--; ubTotalSoldiers--; @@ -2964,89 +2948,6 @@ void EnemyCapturesPlayerSoldier( SOLDIERTYPE *pSoldier ) } -void HandleEnemyStatusInCurrentMapBeforeLoadingNewMap() -{ - INT32 i; - BOOLEAN fMadeCorpse; - INT8 bKilledEnemies = 0, bKilledCreatures = 0, bKilledRebels = 0, bKilledCivilians = 0; - return; - //If any of the soldiers are dying, kill them now. - for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; i++ ) - { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife < OKLIFE && MercPtrs[ i ]->stats.bLife ) - { - MercPtrs[ i ]->stats.bLife = 0; - MercPtrs[ i ]->iHealableInjury = 0; // added just for sure - SANDRO - HandleSoldierDeath( MercPtrs[ i ], &fMadeCorpse ); - bKilledEnemies++; - } - } - //Do the same for the creatures. - for( i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; i++ ) - { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife < OKLIFE && MercPtrs[ i ]->stats.bLife ) - { - MercPtrs[ i ]->stats.bLife = 0; - HandleSoldierDeath( MercPtrs[ i ], &fMadeCorpse ); - bKilledCreatures++; - } - } - //Militia - for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; i++ ) - { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife < OKLIFE && MercPtrs[ i ]->stats.bLife ) - { - MercPtrs[ i ]->stats.bLife = 0; - MercPtrs[ i ]->iHealableInjury = 0; // added just for sure - SANDRO - HandleSoldierDeath( MercPtrs[ i ], &fMadeCorpse ); - bKilledRebels++; - } - } - //Civilians - for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; i++ ) - { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife < OKLIFE && MercPtrs[ i ]->stats.bLife ) - { - MercPtrs[ i ]->stats.bLife = 0; - MercPtrs[ i ]->iHealableInjury = 0; // added just for sure - SANDRO - HandleSoldierDeath( MercPtrs[ i ], &fMadeCorpse ); - bKilledCivilians++; - } - } - -// TEST MESSAGES ONLY! - if( bKilledCivilians ) - ScreenMsg( FONT_BLUE, MSG_TESTVERSION, L"%d civilians died after you left the sector.", bKilledCivilians ); - if( bKilledRebels ) - ScreenMsg( FONT_BLUE, MSG_TESTVERSION, L"%d militia died after you left the sector.", bKilledRebels ); - if( bKilledEnemies ) - ScreenMsg( FONT_BLUE, MSG_TESTVERSION, L"%d enemies died after you left the sector.", bKilledEnemies ); - if( bKilledCreatures ) - ScreenMsg( FONT_BLUE, MSG_TESTVERSION, L"%d creatures died after you left the sector.", bKilledCreatures ); - - if( !gbWorldSectorZ ) - { - SECTORINFO *pSector; - pSector = &SectorInfo[ SECTOR(gWorldSectorX, gWorldSectorY) ]; - pSector->ubAdminsInBattle = 0; - pSector->ubTroopsInBattle = 0; - pSector->ubElitesInBattle = 0; - pSector->ubCreaturesInBattle = 0; - //RecalculateSectorWeight( - } - else if( gbWorldSectorZ > 0 ) - { - UNDERGROUND_SECTORINFO *pSector; - pSector = FindUnderGroundSector( gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); - if( !pSector ) - return; - pSector->ubAdminsInBattle = 0; - pSector->ubTroopsInBattle = 0; - pSector->ubElitesInBattle = 0; - pSector->ubCreaturesInBattle = 0; - } -} - BOOLEAN PlayerSectorDefended( UINT8 ubSectorID ) { if ( NumNonPlayerTeamMembersInSector( SECTORX( ubSectorID ), SECTORY( ubSectorID ), MILITIA_TEAM ) ) @@ -3068,13 +2969,13 @@ BOOLEAN PlayerSectorDefended( UINT8 ubSectorID ) BOOLEAN OnlyHostileCivsInSector() { SOLDIERTYPE *pSoldier; - INT32 i; + SoldierID i; BOOLEAN fHostileCivs = FALSE; //Look for any hostile civs. - for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; i++ ) + for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) { if( !pSoldier->aiData.bNeutral ) @@ -3089,9 +2990,9 @@ BOOLEAN OnlyHostileCivsInSector() return FALSE; } //Look for anybody else hostile. If found, return FALSE immediately. - for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; i++ ) + for( i = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; i <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) { if( !pSoldier->aiData.bNeutral ) @@ -3100,9 +3001,9 @@ BOOLEAN OnlyHostileCivsInSector() } } } - for( i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; i++ ) + for( i = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) { if( !pSoldier->aiData.bNeutral ) @@ -3111,9 +3012,9 @@ BOOLEAN OnlyHostileCivsInSector() } } } - for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; i++ ) + for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife ) { if( !pSoldier->aiData.bNeutral ) @@ -3176,8 +3077,8 @@ void HandleBloodCatDeaths( SECTORINFO *pSector ) //if ALL the bloodcats are killed if( pSector->bBloodCats == 0 ) { - UINT8 bId1=-1; - UINT8 bId2=-1; + SoldierID bId1 = NOBODY; + SoldierID bId2 = NOBODY; UINT8 bNum=0; SetFactTrue( FACT_PLAYER_KILLED_ALL_BETTYS_BLOODCATS ); @@ -3192,13 +3093,13 @@ void HandleBloodCatDeaths( SECTORINFO *pSector ) if( bNum != 0 ) { //must make sure TEX doesnt say the quote - if( bId1 != NOBODY && Menptr[ bId1 ].ubProfile != TEX_UB ) + if( bId1 != NOBODY && bId1->ubProfile != TEX_UB ) { - TacticalCharacterDialogue( &Menptr[ bId1 ], QUOTE_UB_HANDLE_BLOODCATDEATHS ); + TacticalCharacterDialogue( bId1, QUOTE_UB_HANDLE_BLOODCATDEATHS ); } - else if( bId2 != NOBODY && Menptr[ bId2 ].ubProfile != TEX_UB ) + else if( bId2 != NOBODY && bId2->ubProfile != TEX_UB ) { - TacticalCharacterDialogue( &Menptr[ bId2 ], QUOTE_UB_HANDLE_BLOODCATDEATHS ); + TacticalCharacterDialogue( bId2, QUOTE_UB_HANDLE_BLOODCATDEATHS ); } } } diff --git a/Strategic/Queen Command.h b/Strategic/Queen Command.h index 541206d0..e2131429 100644 --- a/Strategic/Queen Command.h +++ b/Strategic/Queen Command.h @@ -12,26 +12,26 @@ extern BOOLEAN gfPendingNonPlayerTeam[PLAYER_PLAN]; -UINT8 NumFreeSlots( UINT8 ubTeam ); +UINT16 NumFreeSlots( UINT8 ubTeam ); //Counts enemies and crepitus, but not bloodcats. -UINT8 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); +UINT16 NumHostilesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); -UINT8 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); +UINT16 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); // returns how many members of a team are in a sector - not intended for OUR_TEAM! -UINT8 NumNonPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, UINT8 ubTeam ); +UINT16 NumNonPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, UINT8 ubTeam ); // returns how many members of a team are in a sector - only intended for OUR_TEAM! POWs not included UINT16 NumPlayerTeamMembersInSector( INT16 sSectorX, INT16 sSectorY, INT8 sSectorZ ); UINT16 NumEnemyArmedVehiclesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 usTeam ); -UINT8 NumStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY ); -UINT8 NumMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY ); -void GetNumberOfMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ); -void GetNumberOfMobileEnemiesInSectorWithoutRoadBlock( INT16 sSectorX, INT16 sSectorY, UINT8 usTeam, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ); -void GetNumberOfStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ); -void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ); +UINT16 NumStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY ); +UINT16 NumMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY ); +void GetNumberOfMobileEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ); +void GetNumberOfMobileEnemiesInSectorWithoutRoadBlock( INT16 sSectorX, INT16 sSectorY, UINT16 usTeam, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ); +void GetNumberOfStationaryEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ); +void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ); //Called when entering a sector so the campaign AI can automatically insert the //correct number of troops of each type based on the current number in the sector @@ -39,14 +39,13 @@ void GetNumberOfEnemiesInSector( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAd BOOLEAN PrepareEnemyForSectorBattle(); BOOLEAN PrepareEnemyForUndergroundBattle(); -void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ubNumAdmins, UINT8 ubNumTroops, UINT8 ubNumElites, UINT8 ubNumRobots, UINT8 ubNumTanks, UINT8 abNumJeeps, BOOLEAN fMagicallyAppeared ); -void AddMilitiaToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT8 ubNumGreens, UINT8 ubNumRegulars, UINT8 ubNumElites, BOOLEAN fMagicallyAppeared ); +void AddEnemiesToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT16 ubNumAdmins, UINT16 ubNumTroops, UINT16 ubNumElites, UINT16 ubNumRobots, UINT16 ubNumTanks, UINT16 abNumJeeps, BOOLEAN fMagicallyAppeared ); +void AddMilitiaToBattle( GROUP *pGroup, UINT8 ubStrategicInsertionCode, UINT16 ubNumGreens, UINT16 ubNumRegulars, UINT16 ubNumElites, BOOLEAN fMagicallyAppeared ); void AddPossiblePendingEnemiesToBattle(); void EndTacticalBattleForEnemy(); void ProcessQueenCmdImplicationsOfDeath( SOLDIERTYPE *pSoldier ); -void HandleEnemyStatusInCurrentMapBeforeLoadingNewMap(); BOOLEAN SaveUnderGroundSectorInfoToSaveGame( HWFILE hFile ); BOOLEAN LoadUnderGroundSectorInfoFromSavedGame( HWFILE hFile ); diff --git a/Strategic/Quest Debug System.cpp b/Strategic/Quest Debug System.cpp index 82fd36b3..9641524c 100644 --- a/Strategic/Quest Debug System.cpp +++ b/Strategic/Quest Debug System.cpp @@ -665,19 +665,19 @@ void ChangeFactState( INT32 iNumber ); void DisplayCurrentGridNo(); void EnableQDSButtons(); -BOOLEAN DoQDSMessageBox( UINT8 ubStyle, STR16 zString, UINT32 uiExitScreen, UINT8 ubFlags, MSGBOX_CALLBACK ReturnCallback ); +BOOLEAN DoQDSMessageBox( UINT8 ubStyle, STR16 zString, UINT32 uiExitScreen, UINT8 ubFlags, MSGBOX_CALLBACK ReturnCallback ); void IncrementActiveDropDownBox( INT16 sIncrementValue ); -INT16 IsMercInTheSector( UINT16 usMercID ); +SoldierID IsMercInTheSector( UINT8 ubMercProfileID ); void RefreshAllNPCInventory(); void SetQDSMercProfile(); void HandleQDSTalkingMerc(); void DisplayQDSCurrentlyQuoteNum( ); void SetTalkingMercPauseState( BOOLEAN fState ); -UINT8 WhichPanelShouldTalkingMercUse( ); +UINT8 WhichPanelShouldTalkingMercUse( ); void EndMercTalking(); void EnableFactMouseRegions(); void DisableFactMouseRegions(); -INT32 GetMaxNumberOfQuotesToPlay( ); +INT32 GetMaxNumberOfQuotesToPlay( ); void GetDebugLocationString( UINT16 usProfileID, STR16 pzText ); //ppp @@ -2993,9 +2993,9 @@ void DestroyQuestDebugTextInputBoxes() void AddNPCToGridNo( INT32 iGridNo ) { - SOLDIERCREATE_STRUCT MercCreateStruct; - INT16 sSectorX, sSectorY; - UINT8 ubID; + SOLDIERCREATE_STRUCT MercCreateStruct; + INT16 sSectorX, sSectorY; + SoldierID ubID; GetCurrentWorldSector( &sSectorX, &sSectorY ); MercCreateStruct.bTeam = CIV_TEAM; @@ -3270,7 +3270,7 @@ void BtnQuestDebugAllOrSectorNPCToggleCallback( GUI_BUTTON *btn, INT32 reason ) DisableButton( guiQuestDebugStartMercTalkingButtonButton ); } - if( IsMercInTheSector( gNpcListBox.sCurSelectedItem ) == -1 ) + if( IsMercInTheSector( gNpcListBox.sCurSelectedItem ) == NOBODY ) DisableButton( guiQuestDebugViewNPCInvButton ); EnableQDSButtons(); @@ -3567,7 +3567,7 @@ void EnableQDSButtons() if( gfUseLocalNPCs ) { - if( IsMercInTheSector( gubCurrentNpcInSector[ gNpcListBox.sCurSelectedItem ] ) != -1 ) + if( IsMercInTheSector( gubCurrentNpcInSector[ gNpcListBox.sCurSelectedItem ] ) != NOBODY ) { EnableButton( guiQuestDebugViewNPCInvButton ); EnableButton( guiQuestDebugNPCRefreshButtonButton ); @@ -3664,23 +3664,20 @@ void IncrementActiveDropDownBox( INT16 sIncrementValue ) } -INT16 IsMercInTheSector( UINT16 usMercID ) +SoldierID IsMercInTheSector( UINT8 ubMercProfileID ) { - if( usMercID == -1 ) - return( FALSE ); - - UINT8 cnt; + UINT16 cnt; for ( cnt=0; cnt < TOTAL_SOLDIERS; cnt++ ) { //if the merc is active - if( Menptr[ cnt ].ubProfile == usMercID ) + if( Menptr[ cnt ].ubProfile == ubMercProfileID ) { if( Menptr[ cnt ].bActive ) return( Menptr[ cnt ].ubID ); } } - return( -1 ); + return( NOBODY ); } diff --git a/Strategic/Quests.cpp b/Strategic/Quests.cpp index 24e83f56..399a20f3 100644 --- a/Strategic/Quests.cpp +++ b/Strategic/Quests.cpp @@ -181,7 +181,7 @@ BOOLEAN CheckNPCWithin( UINT8 ubFirstNPC, UINT8 ubSecondNPC, UINT8 ubMaxDistance return( PythSpacesAway( pFirstNPC->sGridNo, pSecondNPC->sGridNo ) <= ubMaxDistance ); } -BOOLEAN CheckGuyVisible( UINT8 ubNPC, UINT8 ubGuy ) +BOOLEAN CheckGuyVisible( UINT16 ubNPC, UINT16 ubGuy ) { // NB ONLY WORKS IF ON DIFFERENT TEAMS SOLDIERTYPE * pNPC, * pGuy; @@ -299,12 +299,12 @@ UINT32 NumWoundedMercsNearby( UINT8 ubProfileID ) return( bNumber ); } -INT8 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ) +UINT16 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ) { - INT8 bNumber = 0; - UINT32 uiLoop; - SOLDIERTYPE * pNPC; - SOLDIERTYPE * pSoldier; + UINT16 bNumber = 0; + UINT32 uiLoop; + SOLDIERTYPE *pNPC; + SOLDIERTYPE *pSoldier; INT32 sGridNo; pNPC = FindSoldierByProfileID( ubProfileID, FALSE ); @@ -394,7 +394,7 @@ BOOLEAN PCInSameRoom( UINT8 ubProfileID ) //DBrot: More Rooms //UINT8 ubRoom; UINT16 usRoom; - INT8 bLoop; + SoldierID bLoop; SOLDIERTYPE * pSoldier; pNPC = FindSoldierByProfileID( ubProfileID, FALSE ); @@ -404,9 +404,9 @@ BOOLEAN PCInSameRoom( UINT8 ubProfileID ) } usRoom = gusWorldRoomInfo[ pNPC->sGridNo ]; - for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLoop++ ) + for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) { - pSoldier = MercPtrs[ bLoop ]; + pSoldier = bLoop; if ( pSoldier && pSoldier->bActive && pSoldier->bInSector ) { if ( gusWorldRoomInfo[ pSoldier->sGridNo ] == usRoom ) @@ -536,12 +536,11 @@ BOOLEAN FemalePresent( UINT8 ubProfileID ) BOOLEAN CheckPlayerHasHead( void ) { - INT8 bLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE * pSoldier; - for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLoop++ ) + for ( SoldierID bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) { - pSoldier = MercPtrs[ bLoop ]; + pSoldier = bLoop; if ( pSoldier->bActive && pSoldier->stats.bLife > 0 ) { @@ -1714,18 +1713,19 @@ void GiveQuestRewardPoint( INT16 sQuestSectorX, INT16 sQuestsSectorY, INT8 bExpR { ScreenMsg( FONT_MCOLOR_LTBLUE, MSG_TESTVERSION, L"QUEST COMPLETED - Adding to merc records and awarding experiences (%d).", (bExpReward * gGameExternalOptions.usAwardSpecialExpForQuests) ); - for ( UINT8 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) + for ( SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife >= CONSCIOUSNESS && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) && MercPtrs[ i ]->ubProfile != NO_PROFILE && - MercPtrs[ i ]->sSectorX == sQuestSectorX && MercPtrs[ i ]->sSectorY == sQuestsSectorY && !MercPtrs[ i ]->flags.fBetweenSectors && MercPtrs[ i ]->bTeam == gbPlayerNum && - MercPtrs[ i ]->bAssignment != IN_TRANSIT && MercPtrs[ i ]->bAssignment != ASSIGNMENT_DEAD && gMercProfiles[ MercPtrs[ i ]->ubProfile ].ubBodyType != 21 ) // != ROBOTNOWEAPON ) + SOLDIERTYPE *pSoldier = id; + if( pSoldier->bActive && pSoldier->stats.bLife >= CONSCIOUSNESS && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && pSoldier->ubProfile != NO_PROFILE && + pSoldier->sSectorX == sQuestSectorX && pSoldier->sSectorY == sQuestsSectorY && !pSoldier->flags.fBetweenSectors && pSoldier->bTeam == gbPlayerNum && + pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD && gMercProfiles[ pSoldier->ubProfile ].ubBodyType != 21 ) // != ROBOTNOWEAPON ) { - if ( MercPtrs[ i ]->ubProfile != bException ) + if ( pSoldier->ubProfile != bException ) { - gMercProfiles[ MercPtrs[ i ]->ubProfile ].records.ubQuestsHandled++; + gMercProfiles[ pSoldier->ubProfile ].records.ubQuestsHandled++; if ( bExpReward > 0 && gGameExternalOptions.usAwardSpecialExpForQuests > 0 ) - StatChange( MercPtrs[ i ], EXPERAMT, (bExpReward * gGameExternalOptions.usAwardSpecialExpForQuests), FALSE ); + StatChange( pSoldier, EXPERAMT, (bExpReward * gGameExternalOptions.usAwardSpecialExpForQuests), FALSE ); } } } diff --git a/Strategic/Quests.h b/Strategic/Quests.h index 71dfca2f..117d6199 100644 --- a/Strategic/Quests.h +++ b/Strategic/Quests.h @@ -728,12 +728,12 @@ extern BOOLEAN CheckNPCWounded( UINT8 ubProfileID, BOOLEAN fByPlayerOnly ); extern BOOLEAN CheckNPCInOkayHealth( UINT8 ubProfileID ); extern BOOLEAN CheckNPCBleeding( UINT8 ubProfileID ); extern BOOLEAN CheckNPCWithin( UINT8 ubFirstNPC, UINT8 ubSecondNPC, UINT8 ubMaxDistance ); -extern BOOLEAN CheckGuyVisible( UINT8 ubNPC, UINT8 ubGuy ); +extern BOOLEAN CheckGuyVisible( UINT16 ubNPC, UINT16 ubGuy ); extern BOOLEAN CheckNPCAt( UINT8 ubNPC, INT32 sGridNo ); extern BOOLEAN CheckNPCIsEnemy( UINT8 ubProfileID ); extern BOOLEAN CheckIfMercIsNearNPC( SOLDIERTYPE *pMerc, UINT8 ubProfileId ); extern UINT32 NumWoundedMercsNearby( UINT8 ubProfileID ); -extern INT8 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); +extern UINT16 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); extern BOOLEAN CheckNPCIsEPC( UINT8 ubProfileID ); //DBrot: More Rooms //extern BOOLEAN NPCInRoom( UINT8 ubProfileID, UINT8 ubRoomID ); diff --git a/Strategic/Rebel Command.cpp b/Strategic/Rebel Command.cpp index d8812ee4..af235a41 100644 --- a/Strategic/Rebel Command.cpp +++ b/Strategic/Rebel Command.cpp @@ -2167,9 +2167,9 @@ BOOLEAN SetupMissionAgentBox(UINT16 x, UINT16 y, INT8 index) // temp/fixme std::vector mercs; - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - SOLDIERTYPE* pSoldier = MercPtrs[i]; + SOLDIERTYPE* pSoldier = i; if (pSoldier && pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) @@ -2812,9 +2812,9 @@ void PrepareMission(INT8 index) // confirmation popup std::vector mercs; - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - SOLDIERTYPE* pSoldier = MercPtrs[i]; + SOLDIERTYPE* pSoldier = i; if (pSoldier && pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) @@ -2977,9 +2977,9 @@ void PrepareMission(INT8 index) if (!evt.sentGenericRebelAgent) { - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - SOLDIERTYPE* pSoldier = MercPtrs[i]; + SOLDIERTYPE* pSoldier = i; if (pSoldier->ubProfile == evt.mercProfileId) { TakeSoldierOutOfVehicle(pSoldier); @@ -3171,7 +3171,7 @@ INT32 GetMiningPolicyBonus(INT16 townId) return 0; } -void GetBonusMilitia(INT16 sx, INT16 sy, UINT8& green, UINT8& regular, UINT8& elite, BOOLEAN createGroup) +void GetBonusMilitia(INT16 sx, INT16 sy, UINT16& green, UINT16& regular, UINT16& elite, BOOLEAN createGroup) { if (!gGameExternalOptions.fRebelCommandEnabled) return; @@ -4882,9 +4882,9 @@ void HandleStrategicEvent(const UINT32 eventParam) // make sure the merc's still on our team BOOLEAN foundMerc = FALSE; - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - const SOLDIERTYPE* pSoldier = MercPtrs[i]; + const SOLDIERTYPE* pSoldier = i; if (pSoldier->ubProfile == evt1.mercProfileId && pSoldier->bActive) { @@ -4953,9 +4953,9 @@ void HandleStrategicEvent(const UINT32 eventParam) if (!evt1.sentGenericRebelAgent) { - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - SOLDIERTYPE* pSoldier = MercPtrs[i]; + SOLDIERTYPE* pSoldier = i; if (pSoldier->ubProfile == evt1.mercProfileId) { if (mission == RCAM_FORGE_TRANSPORT_ORDERS) @@ -4980,9 +4980,9 @@ void HandleStrategicEvent(const UINT32 eventParam) { if (!evt1.sentGenericRebelAgent && foundMerc) { - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - SOLDIERTYPE* pSoldier = MercPtrs[i]; + SOLDIERTYPE* pSoldier = i; if (pSoldier->ubProfile == evt1.mercProfileId) { // mission failed! we tried, give some pity exp @@ -5002,9 +5002,9 @@ void HandleStrategicEvent(const UINT32 eventParam) if (!evt1.sentGenericRebelAgent && foundMerc) { - for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - SOLDIERTYPE* pSoldier = MercPtrs[i]; + SOLDIERTYPE* pSoldier = i; if (pSoldier->ubProfile == evt1.mercProfileId) { // merc ready for reassignment diff --git a/Strategic/Rebel Command.h b/Strategic/Rebel Command.h index 452355a8..b3d26927 100644 --- a/Strategic/Rebel Command.h +++ b/Strategic/Rebel Command.h @@ -188,7 +188,7 @@ void ApplyMilitiaBonuses(SOLDIERTYPE* pMilitia); UINT8 GetApproximateEnemyLocationResolutionIndex(); FLOAT GetAssignmentBonus(INT16 x, INT16 y); INT32 GetMiningPolicyBonus(INT16 townId); -void GetBonusMilitia(INT16 x, INT16 y, UINT8& green, UINT8& regular, UINT8& elite, BOOLEAN createGroup); +void GetBonusMilitia(INT16 x, INT16 y, UINT16& green, UINT16& regular, UINT16& elite, BOOLEAN createGroup); INT16 GetFortificationsBonus(UINT8 sector); FLOAT GetHarriersSpeedPenalty(UINT8 sector); FLOAT GetLoyaltyGainModifier(); diff --git a/Strategic/Reinforcement.cpp b/Strategic/Reinforcement.cpp index bdad2f07..c7738869 100644 --- a/Strategic/Reinforcement.cpp +++ b/Strategic/Reinforcement.cpp @@ -29,9 +29,9 @@ UINT8 gubReinforcementMinEnemyStaticGroupSize = 12; UINT32 guiMilitiaReinforceTurn = 0, guiMilitiaArrived = 0;//dnl ch68 090913 -void GetNumberOfEnemiesInFiveSectors( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ) +void GetNumberOfEnemiesInFiveSectors( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ) { - UINT8 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; + UINT16 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; UINT16 pusMoveDir[4][3]; //first column in this matrix is number of sector, except for 4th row UINT8 ubDirNumber, ubIndex; @@ -156,9 +156,9 @@ void ActivateTurncoatsForAutoResolve( INT16 sSectorX, INT16 sSectorY ) } } -UINT8 NumEnemiesInFiveSectors( INT16 sMapX, INT16 sMapY ) +UINT16 NumEnemiesInFiveSectors( INT16 sMapX, INT16 sMapY ) { - UINT8 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; + UINT16 ubNumAdmins, ubNumTroops, ubNumElites, ubNumRobots, ubNumTanks, ubNumJeeps; GetNumberOfEnemiesInFiveSectors( sMapX, sMapY, &ubNumAdmins, &ubNumTroops, &ubNumElites, &ubNumRobots, &ubNumTanks, &ubNumJeeps ); diff --git a/Strategic/Reinforcement.h b/Strategic/Reinforcement.h index caf7008f..05079013 100644 --- a/Strategic/Reinforcement.h +++ b/Strategic/Reinforcement.h @@ -2,16 +2,16 @@ #define __REINFORCEMENT_H__ //For Autoresolve (mostly) -void GetNumberOfEnemiesInFiveSectors( INT16 sSectorX, INT16 sSectorY, UINT8 *pubNumAdmins, UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 *pubNumRobots, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ); +void GetNumberOfEnemiesInFiveSectors( INT16 sSectorX, INT16 sSectorY, UINT16 *pubNumAdmins, UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 *pubNumRobots, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ); void ActivateTurncoatsForAutoResolve( INT16 sSectorX, INT16 sSectorY ); BOOLEAN IsGroupInARightSectorToReinforce( GROUP *pGroup, INT16 sSectorX, INT16 sSectorY ); UINT8 GetAdjacentSectors( UINT8 pSectors[4], INT16 sSectorX, INT16 sSectorY ); UINT16 CountAllMilitiaInFiveSectors(INT16 sMapX, INT16 sMapY); -UINT8 NumEnemiesInFiveSectors( INT16 sMapX, INT16 sMapY ); +UINT16 NumEnemiesInFiveSectors( INT16 sMapX, INT16 sMapY ); //For Tactical UINT8 DoReinforcementAsPendingNonPlayer( INT16 sMapX, INT16 sMapY, UINT8 usTeam ); void AddPossiblePendingMilitiaToBattle(); GROUP* GetNonPlayerGroupInSectorForReinforcement( INT16 sMapX, INT16 sMapY, UINT8 usTeam ); -#endif +#endif diff --git a/Strategic/Scheduling.cpp b/Strategic/Scheduling.cpp index 06992561..270ace33 100644 --- a/Strategic/Scheduling.cpp +++ b/Strategic/Scheduling.cpp @@ -190,7 +190,7 @@ void ProcessTacticalSchedule( UINT8 ubScheduleID ) } //Validate the existance of the soldier. - pSoldier = MercPtrs[ pSchedule->ubSoldierID ]; + pSoldier = pSchedule->ubSoldierID; if ( pSoldier->stats.bLife < OKLIFE ) { // dead or dying! @@ -331,7 +331,7 @@ void PrepareSchedulesForEditorEntry() prev->next = curr->next; else gpScheduleList = gpScheduleList->next; - MercPtrs[ curr->ubSoldierID ]->ubScheduleID = 0; + curr->ubSoldierID->ubScheduleID = 0; temp = curr; curr = curr->next; MemFree( temp ); @@ -483,7 +483,7 @@ SCHEDULENODE& SCHEDULENODE::operator=(const _OLD_SCHEDULENODE& src) TranslateArrayFields(usData2, src.usData2, OLD_MAX_SCHEDULE_ACTIONS, INT16_INT32); TranslateArrayFields(ubAction, src.ubAction, OLD_MAX_SCHEDULE_ACTIONS, UINT8_UINT8); ubScheduleID = src.ubScheduleID; - ubSoldierID = src.ubSoldierID; + ubSoldierID = static_cast( src.ubSoldierID ); usFlags = src.usFlags; } return(*this); @@ -653,11 +653,11 @@ BOOLEAN SortSchedule( SCHEDULENODE *pSchedule ) BOOLEAN BumpAnyExistingMerc( INT32 sGridNo ) { - UINT8 ubID; - SOLDIERTYPE * pSoldier; // NB this is the person already in the location, - INT32 sNewGridNo; - UINT8 ubDir; - INT16 sCellX, sCellY; + SoldierID ubID; + SOLDIERTYPE *pSoldier; // NB this is the person already in the location, + INT32 sNewGridNo; + UINT8 ubDir; + INT16 sCellX, sCellY; // this is for autoprocessing schedules... // there could be someone in the destination location, in which case @@ -675,7 +675,7 @@ BOOLEAN BumpAnyExistingMerc( INT32 sGridNo ) return( TRUE ); } - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; // what if the existing merc is prone? sNewGridNo = FindGridNoFromSweetSpotWithStructDataFromSoldier( pSoldier, STANDING, 5, &ubDir, 1, pSoldier ); @@ -707,7 +707,7 @@ void AutoProcessSchedule( SCHEDULENODE *pSchedule, INT32 index ) return; } - pSoldier = MercPtrs[ pSchedule->ubSoldierID ]; + pSoldier = pSchedule->ubSoldierID; if (pSoldier->ubID == 0) { @@ -1381,16 +1381,16 @@ void ReplaceSleepSpot( SCHEDULENODE * pSchedule, UINT16 usNewSpot ) void SecureSleepSpot( SOLDIERTYPE * pSoldier, UINT32 usSleepSpot ) { - SOLDIERTYPE * pSoldier2; - UINT32 usSleepSpot2; - UINT32 uiLoop; - SCHEDULENODE * pSchedule; - UINT8 ubDirection; + SOLDIERTYPE *pSoldier2; + UINT32 usSleepSpot2; + UINT16 uiLoop; + SCHEDULENODE *pSchedule; + UINT8 ubDirection; // start after this soldier's ID so we don't duplicate work done in previous passes for ( uiLoop = pSoldier->ubID + 1; uiLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; uiLoop++ ) { - pSoldier2 = MercPtrs[ uiLoop ]; + pSoldier2 = MercPtrs[uiLoop]; if ( pSoldier2->bActive && pSoldier2->bInSector && pSoldier2->ubScheduleID != 0 ) { pSchedule = GetSchedule( pSoldier2->ubScheduleID ); diff --git a/Strategic/Scheduling.h b/Strategic/Scheduling.h index 5a076ac9..bf3e9cd6 100644 --- a/Strategic/Scheduling.h +++ b/Strategic/Scheduling.h @@ -63,7 +63,7 @@ public: UINT32 usData2[MAX_SCHEDULE_ACTIONS]; // Secondary information, not used by most actions UINT8 ubAction[MAX_SCHEDULE_ACTIONS]; UINT8 ubScheduleID; - UINT8 ubSoldierID; + SoldierID ubSoldierID; UINT16 usFlags; public: SCHEDULENODE& operator=(const _OLD_SCHEDULENODE& src); diff --git a/Strategic/Strategic AI.cpp b/Strategic/Strategic AI.cpp index 8c02ae61..17a0f648 100644 --- a/Strategic/Strategic AI.cpp +++ b/Strategic/Strategic AI.cpp @@ -470,9 +470,9 @@ BOOLEAN SendReinforcementsForPatrol( INT32 iPatrolID, GROUP **pOptionalGroup ); void ClearPreviousAIGroupAssignment( GROUP *pGroup ); -void CalcNumTroopsBasedOnComposition( UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 ubTotal, INT32 iCompositionID ); +void CalcNumTroopsBasedOnComposition( UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 ubTotal, INT32 iCompositionID ); void ConvertGroupTroopsToComposition( GROUP *pGroup, INT32 iCompositionID ); -void RemoveSoldiersFromGarrisonBasedOnComposition( INT32 iGarrisonID, UINT8 ubSize ); +void RemoveSoldiersFromGarrisonBasedOnComposition( INT32 iGarrisonID, UINT16 ubSize ); //If there are any enemy groups that will be moving through this sector due, they will have to repath which //will cause them to avoid the sector. Returns the number of redirected groups. @@ -912,7 +912,6 @@ void RemovePlayersFromAllMismatchGroups( SOLDIERTYPE *pSoldier ) #ifdef JA2BETAVERSION void ValidatePlayersAreInOneGroupOnly() { - INT32 i; INT32 iGroups; INT32 iMismatches; INT32 iNumErrors; @@ -923,10 +922,10 @@ void ValidatePlayersAreInOneGroupOnly() UINT8 ubGroupID; //Go through each merc slot in the player team iNumErrors = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { //check to see if the merc has a group ID - pSoldier = MercPtrs[ i ]; + pSoldier = i; if( !pSoldier || !pSoldier->bActive || !pSoldier->stats.bLife || !pSoldier->ubGroupID ) { //non-existant, dead, or in no group (don't care, skip to next merc) @@ -1151,8 +1150,8 @@ void InitStrategicAI() INT32 iStartPop, iDesiredPop, iPriority; SECTORINFO *pSector = NULL; GROUP *pGroup; - UINT8 ubNumTroops; - UINT8 ubNumRobots, ubNumTanks, ubNumJeeps; + UINT16 ubNumTroops; + UINT16 ubNumRobots, ubNumTanks, ubNumJeeps; INT32 iPercentElitesBonus; INT32 iMaxEnemyGroupSize = gGameExternalOptions.iMaxEnemyGroupSize; DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Strategic3"); @@ -1538,9 +1537,9 @@ void InitStrategicAI() //based on the difficulty settings in the above patrol table. //if( gPatrolGroup[ i ].ubUNUSEDStartIfDifficulty <= gGameOptions.ubDifficultyLevel ) { - UINT8 troopCount = (UINT8)(gPatrolGroup[ i ].bSize + Random( 3 ) - 1); - troopCount = (UINT8)max( gubMinEnemyGroupSize, min( iMaxEnemyGroupSize, troopCount) ); - UINT8 ubNumElites; + UINT16 troopCount = (UINT16)(gPatrolGroup[ i ].bSize + Random( 3 ) - 1); + troopCount = (UINT16)max( gubMinEnemyGroupSize, min( iMaxEnemyGroupSize, troopCount) ); + UINT16 ubNumElites; InitializeGroup(GROUP_TYPE_PATROL, troopCount, ubNumTroops, ubNumElites, ubNumRobots, ubNumJeeps, ubNumTanks, Random(10) < gGameOptions.ubDifficultyLevel && i != 3 && i != 4); //Note on adding patrol groups... @@ -2273,12 +2272,12 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Strategic5"); if( gGarrisonGroup[ i ].ubSectorID != SECTOR( gModSettings.ubSAISpawnSectorX, gModSettings.ubSAISpawnSectorY ) ) { EliminateSurplusTroopsForGarrison( pGroup, pSector ); - pSector->ubNumAdmins = (UINT8)(pSector->ubNumAdmins + pGroup->pEnemyGroup->ubNumAdmins); - pSector->ubNumTroops = (UINT8)(pSector->ubNumTroops + pGroup->pEnemyGroup->ubNumTroops); - pSector->ubNumElites = (UINT8)(pSector->ubNumElites + pGroup->pEnemyGroup->ubNumElites); - pSector->ubNumRobots = (UINT8)(pSector->ubNumRobots + pGroup->pEnemyGroup->ubNumRobots); - pSector->ubNumTanks = (UINT8)(pSector->ubNumTanks + pGroup->pEnemyGroup->ubNumTanks); - pSector->ubNumJeeps = (UINT8)(pSector->ubNumJeeps + pGroup->pEnemyGroup->ubNumJeeps); + pSector->ubNumAdmins = (pSector->ubNumAdmins + pGroup->pEnemyGroup->ubNumAdmins); + pSector->ubNumTroops = (pSector->ubNumTroops + pGroup->pEnemyGroup->ubNumTroops); + pSector->ubNumElites = (pSector->ubNumElites + pGroup->pEnemyGroup->ubNumElites); + pSector->ubNumRobots = (pSector->ubNumRobots + pGroup->pEnemyGroup->ubNumRobots); + pSector->ubNumTanks = (pSector->ubNumTanks + pGroup->pEnemyGroup->ubNumTanks); + pSector->ubNumJeeps = (pSector->ubNumJeeps + pGroup->pEnemyGroup->ubNumJeeps); #ifdef JA2BETAVERSION LogStrategicEvent( "%d reinforcements have arrived to garrison sector %c%d", @@ -2361,7 +2360,7 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Strategic5"); pPatrolGroup->pEnemyGroup->ubNumRobots += pGroup->pEnemyGroup->ubNumRobots; pPatrolGroup->pEnemyGroup->ubNumTanks += pGroup->pEnemyGroup->ubNumTanks; pPatrolGroup->pEnemyGroup->ubNumJeeps += pGroup->pEnemyGroup->ubNumJeeps; - pPatrolGroup->ubGroupSize += (UINT8)(pGroup->pEnemyGroup->ubNumTroops + pGroup->pEnemyGroup->ubNumElites + pGroup->pEnemyGroup->ubNumAdmins + pPatrolGroup->ubGroupSize += (pGroup->pEnemyGroup->ubNumTroops + pGroup->pEnemyGroup->ubNumElites + pGroup->pEnemyGroup->ubNumAdmins + pGroup->pEnemyGroup->ubNumRobots + pGroup->pEnemyGroup->ubNumTanks + pGroup->pEnemyGroup->ubNumJeeps); #ifdef JA2BETAVERSION LogStrategicEvent( "%d reinforcements have joined patrol group at sector %c%d (new size: %d)", @@ -2714,7 +2713,7 @@ void CheckEnemyControlledSector( UINT8 ubSectorID ) { if( pGroup->pEnemyGroup->ubPendingReinforcements > 4 ) { - UINT8 ubNum = (UINT8)(3 + Random( 3 )); + UINT16 ubNum = (UINT16)(3 + Random( 3 )); pGroup->pEnemyGroup->ubNumTroops += ubNum; pGroup->ubGroupSize += ubNum; pGroup->pEnemyGroup->ubPendingReinforcements -= ubNum; @@ -3080,7 +3079,7 @@ BOOLEAN SendReinforcementsForGarrison( INT32 iDstGarrisonID, UINT16 usDefencePoi GROUP *pGroup; UINT8 ubSrcSectorX, ubSrcSectorY, ubDstSectorX, ubDstSectorY; UINT8 ubNumExtraReinforcements; - UINT8 ubGroupSize; + UINT16 ubGroupSize; BOOLEAN fLimitMaxTroopsAllowable = FALSE; Ensure_RepairedGarrisonGroup( &gGarrisonGroup, &giGarrisonArraySize ); /* added NULL fix, 2007-03-03, Sgt. Kolja */ @@ -3207,7 +3206,7 @@ BOOLEAN SendReinforcementsForGarrison( INT32 iDstGarrisonID, UINT16 usDefencePoi pGroup->ubMoveType = ONE_WAY; gGarrisonGroup[ iDstGarrisonID ].ubPendingGroupID = pGroup->ubGroupID; - ubGroupSize = (UINT8)(pGroup->pEnemyGroup->ubNumTroops + pGroup->pEnemyGroup->ubNumElites + pGroup->pEnemyGroup->ubNumAdmins + pGroup->pEnemyGroup->ubNumRobots + pGroup->pEnemyGroup->ubNumTanks + pGroup->pEnemyGroup->ubNumJeeps); + ubGroupSize = (UINT16)(pGroup->pEnemyGroup->ubNumTroops + pGroup->pEnemyGroup->ubNumElites + pGroup->pEnemyGroup->ubNumAdmins + pGroup->pEnemyGroup->ubNumRobots + pGroup->pEnemyGroup->ubNumTanks + pGroup->pEnemyGroup->ubNumJeeps); if( ubNumExtraReinforcements ) { @@ -3297,7 +3296,7 @@ BOOLEAN SendReinforcementsForGarrison( INT32 iDstGarrisonID, UINT16 usDefencePoi pGroup->ubOriginalSector = (UINT8)SECTOR( ubDstSectorX, ubDstSectorY ); pGroup->ubMoveType = ONE_WAY; gGarrisonGroup[ iDstGarrisonID ].ubPendingGroupID = pGroup->ubGroupID; - ubGroupSize = (UINT8)(pGroup->pEnemyGroup->ubNumTroops + pGroup->pEnemyGroup->ubNumElites + pGroup->pEnemyGroup->ubNumAdmins + pGroup->pEnemyGroup->ubNumRobots + pGroup->pEnemyGroup->ubNumTanks + pGroup->pEnemyGroup->ubNumJeeps); + ubGroupSize = (UINT16)(pGroup->pEnemyGroup->ubNumTroops + pGroup->pEnemyGroup->ubNumElites + pGroup->pEnemyGroup->ubNumAdmins + pGroup->pEnemyGroup->ubNumRobots + pGroup->pEnemyGroup->ubNumTanks + pGroup->pEnemyGroup->ubNumJeeps); if( ubNumExtraReinforcements ) { @@ -4143,13 +4142,12 @@ BOOLEAN LoadStrategicAI( HWFILE hFile ) } else { //We are in the basement sector, relocate queen to proper position. - INT32 i; - for( i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; i <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->ubProfile == QUEEN ) + if( i->ubProfile == QUEEN ) { //Found queen, relocate her to 16866 BumpAnyExistingMerc( 16866 ); - TeleportSoldier( MercPtrs[ i ], 16866, TRUE ); + TeleportSoldier( i, 16866, TRUE ); break; } } @@ -4546,15 +4544,15 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto UINT8 stagesector0, stagesector1, stagesector2, stagesector3; UINT8 assaultsector0, assaultsector1, assaultsector2, assaultsector3; unsigned ubNumSoldiers; - UINT8 ubNumRobots = 0; - UINT8 ubNumTanks = 0; - UINT8 ubNumJeeps = 0; + UINT16 ubNumRobots = 0; + UINT16 ubNumTanks = 0; + UINT16 ubNumJeeps = 0; UINT32 totalusedsoldiers = 0; - UINT8 grouptroops[4] = {0,0,0,0}; - UINT8 groupelites[4] = {0,0,0,0}; - UINT8 grouprobots[4] = {0,0,0,0}; - UINT8 grouptanks[4] = {0,0,0,0}; - UINT8 groupjeeps[4] = {0, 0, 0, 0}; + UINT16 grouptroops[4] = {0,0,0,0}; + UINT16 groupelites[4] = {0,0,0,0}; + UINT16 grouprobots[4] = {0,0,0,0}; + UINT16 grouptanks[4] = {0,0,0,0}; + UINT16 groupjeeps[4] = {0, 0, 0, 0}; UINT32 difficultyMod; switch (gGameOptions.ubDifficultyLevel) @@ -5247,12 +5245,12 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto soldiersThisSquad = (unsigned)gGameExternalOptions.iMaxEnemyGroupSize; } ubNumSoldiers -= soldiersThisSquad; - UINT8 adminsThisSquad = 0; - UINT8 troopsThisSquad = 0; - UINT8 elitesThisSquad = 0; - UINT8 robotsThisSquad = 0; - UINT8 tanksThisSquad = 0; - UINT8 jeepsThisSquad = 0; + UINT16 adminsThisSquad = 0; + UINT16 troopsThisSquad = 0; + UINT16 elitesThisSquad = 0; + UINT16 robotsThisSquad = 0; + UINT16 tanksThisSquad = 0; + UINT16 jeepsThisSquad = 0; // this is an attack group, but set it to patrol since we'll set the admin/regular/elite composition by hand here InitializeGroup(GROUP_TYPE_PATROL, soldiersThisSquad, troopsThisSquad, elitesThisSquad, robotsThisSquad, jeepsThisSquad, tanksThisSquad, Random(10 * 100) < difficultyMod * direness); if (direness < 25) { @@ -5295,7 +5293,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto // Note: 1st optional parm is a count of troops to send // 2nd optional parm is the composition of troops if (option1 > 0 && option1 < 256) { - ubNumSoldiers = (UINT8)(option1); + ubNumSoldiers = option1; } else { // Something is goofy, just send a default sized squad ubNumSoldiers = gubMinEnemyGroupSize; @@ -5387,7 +5385,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto if ( !gfUnlimitedTroops ) giReinforcementPool -= ubNumSoldiers; - UINT8 ubNumTroops, ubNumElites; + UINT16 ubNumTroops, ubNumElites; // set the type to patrol as we're manually tuning the group composition here (100% elites + ASD upgrades) InitializeGroup(GROUP_TYPE_PATROL, ubNumSoldiers, ubNumTroops, ubNumElites, ubNumRobots, ubNumJeeps, ubNumTanks, Random(10*100) < difficultyMod * HighestPlayerProgressPercentage()); @@ -6774,7 +6772,7 @@ void ClearPreviousAIGroupAssignment( GROUP *pGroup ) } } -void CalcNumTroopsBasedOnComposition( UINT8 *pubNumTroops, UINT8 *pubNumElites, UINT8 ubTotal, INT32 iCompositionID ) +void CalcNumTroopsBasedOnComposition( UINT16 *pubNumTroops, UINT16 *pubNumElites, UINT16 ubTotal, INT32 iCompositionID ) { *pubNumTroops = gArmyComp[ iCompositionID ].bTroopPercentage * ubTotal / 100; *pubNumElites = gArmyComp[ iCompositionID ].bElitePercentage * ubTotal / 100; @@ -6818,19 +6816,19 @@ void ConvertGroupTroopsToComposition( GROUP *pGroup, INT32 iCompositionID ) ValidateLargeGroup( pGroup ); } -void RemoveSoldiersFromGarrisonBasedOnComposition( INT32 iGarrisonID, UINT8 ubSize ) +void RemoveSoldiersFromGarrisonBasedOnComposition( INT32 iGarrisonID, UINT16 ubSize ) { SECTORINFO *pSector; INT32 iCompositionID; - UINT8 ubNumTroops, ubNumElites; + UINT16 ubNumTroops, ubNumElites; //debug stuff - UINT8 ubOrigSectorAdmins; - UINT8 ubOrigSectorTroops; - UINT8 ubOrigSectorElites; - UINT8 ubOrigNumElites; - UINT8 ubOrigNumTroops; - UINT8 ubOrigSize; + UINT16 ubOrigSectorAdmins; + UINT16 ubOrigSectorTroops; + UINT16 ubOrigSectorElites; + UINT16 ubOrigNumElites; + UINT16 ubOrigNumTroops; + UINT16 ubOrigSize; Ensure_RepairedGarrisonGroup( &gGarrisonGroup, &giGarrisonArraySize ); /* added NULL fix, 2007-03-03, Sgt. Kolja */ iCompositionID = gGarrisonGroup[ iGarrisonID ].ubComposition; @@ -7107,12 +7105,12 @@ void ASDInitializePatrolGroup(GROUP *pGroup) } } -void InitializeGroup( const GROUP_TYPE groupType, const UINT8 groupSize, ENEMYGROUP& enemyGroup, const BOOLEAN asdUpgrade ) +void InitializeGroup( const GROUP_TYPE groupType, const UINT16 groupSize, ENEMYGROUP& enemyGroup, const BOOLEAN asdUpgrade ) { InitializeGroup( groupType, groupSize, enemyGroup.ubNumTroops, enemyGroup.ubNumElites, enemyGroup.ubNumRobots, enemyGroup.ubNumJeeps, enemyGroup.ubNumTanks, asdUpgrade ); } -void InitializeGroup( const GROUP_TYPE groupType, const UINT8 groupSize, UINT8 &troopCount, UINT8 &eliteCount, UINT8 &robotCount, UINT8 &jeepCount, UINT8 &tankCount, const BOOLEAN asdUpgrade ) +void InitializeGroup( const GROUP_TYPE groupType, const UINT16 groupSize, UINT16 &troopCount, UINT16 &eliteCount, UINT16 &robotCount, UINT16 &jeepCount, UINT16 &tankCount, const BOOLEAN asdUpgrade ) { troopCount = groupSize; eliteCount = 0; diff --git a/Strategic/Strategic AI.h b/Strategic/Strategic AI.h index 9f494f72..bac2582d 100644 --- a/Strategic/Strategic AI.h +++ b/Strategic/Strategic AI.h @@ -84,8 +84,8 @@ enum GROUP_TYPE }; void ASDInitializePatrolGroup(GROUP *pGroup); -void InitializeGroup(const GROUP_TYPE groupType, const UINT8 groupSize, ENEMYGROUP& enemyGroup, const BOOLEAN asdUpgrade); -void InitializeGroup(const GROUP_TYPE groupType, const UINT8 groupSize, UINT8 &troopCount, UINT8 &eliteCount, UINT8 &robotCount, UINT8 &jeepCount, UINT8 &tankCount, const BOOLEAN asdUpgrade); +void InitializeGroup(const GROUP_TYPE groupType, const UINT16 groupSize, ENEMYGROUP& enemyGroup, const BOOLEAN asdUpgrade); +void InitializeGroup(const GROUP_TYPE groupType, const UINT16 groupSize, UINT16 &troopCount, UINT16 &eliteCount, UINT16 &robotCount, UINT16 &jeepCount, UINT16 &tankCount, const BOOLEAN asdUpgrade); extern BOOLEAN gfDisplayStrategicAILogs; extern BOOLEAN gfFirstBattleMeanwhileScenePending; @@ -181,4 +181,4 @@ typedef struct GARRISON_GROUP #define REGULAR_MILITIA_POINTS_MODIFIER 2 #define ELITE_MILITIA_POINTS_MODIFIER 3 -#endif +#endif diff --git a/Strategic/Strategic Event Handler.cpp b/Strategic/Strategic Event Handler.cpp index 36a929b2..7ea0e689 100644 --- a/Strategic/Strategic Event Handler.cpp +++ b/Strategic/Strategic Event Handler.cpp @@ -51,7 +51,7 @@ UINT32 guiPabloExtraDaysBribed = 0; UINT8 gubCambriaMedicalObjects; -extern INT8 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); +extern UINT16 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); extern SECTOR_EXT_DATA SectorExternalData[256][4]; diff --git a/Strategic/Strategic Merc Handler.cpp b/Strategic/Strategic Merc Handler.cpp index 4f5a8221..ab46eae3 100644 --- a/Strategic/Strategic Merc Handler.cpp +++ b/Strategic/Strategic Merc Handler.cpp @@ -85,7 +85,7 @@ void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier ) //add to the history log the fact that the merc died and the circumstances if( pSoldier->ubAttackerID != NOBODY ) { - pKiller = MercPtrs[ pSoldier->ubAttackerID ]; + pKiller = pSoldier->ubAttackerID; } // CJC Nov 11, 2002 @@ -141,7 +141,7 @@ void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier ) gMercProfiles[ pSoldier->ubProfile ].ubSuspiciousDeath = VERY_SUSPICIOUS_DEATH; } // if killed by someone on our team, or while there weren't any opponents around - else if (Menptr[ pSoldier->ubAttackerID ].bTeam == OUR_TEAM || !gTacticalStatus.fEnemyInSector ) + else if (pSoldier->ubAttackerID->bTeam == OUR_TEAM || !gTacticalStatus.fEnemyInSector ) { // cause insurance company to suspect fraud and investigate this claim gMercProfiles[ pSoldier->ubProfile ].ubSuspiciousDeath = SUSPICIOUS_DEATH; @@ -184,8 +184,8 @@ void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier ) // MercDailyUpdate() gets called every day at midnight. If something is to happen to a merc that day, add an event for it. void MercDailyUpdate() { - INT32 cnt; - INT8 bLastTeamID; + SoldierID id; + SoldierID lastid; SOLDIERTYPE *pSoldier; //SOLDIERTYPE *pQuitList[ 21 ]; MERCPROFILESTRUCT *pProfile; @@ -217,12 +217,13 @@ void MercDailyUpdate() AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_2, 0 ); AddSameDayStrategicEvent( EVENT_BEGIN_CONTRACT_RENEWAL_SEQUENCE, MERC_ARRIVE_TIME_SLOT_3, 0 ); - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + lastid = gTacticalStatus.Team[ gbPlayerNum ].bLastID; //loop though all the mercs - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; ++cnt,++pSoldier) + for ( ; id <= lastid; ++id) { + pSoldier = id; //if the merc is active if ( ( pSoldier->bActive )&&( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) ) { @@ -374,11 +375,10 @@ void MercDailyUpdate() } } - //r eset the counter - cnt = 0; - - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + //reset the counter + for ( id = 0; id <= lastid; ++id ) { + pSoldier = id; //if the merc is active if ( ( pSoldier->bActive )&&( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != IN_TRANSIT ) ) { @@ -402,7 +402,7 @@ void MercDailyUpdate() // WANNE: Only send mails from the original 1.13 merc, and not from the wildfire merc, // otherwise we get wrong mails cause of hardcoded Email.edt structure!!!!! UINT16 numOriginalProfiles = 255; - for( cnt = 0; cnt < numOriginalProfiles; ++cnt) + for( UINT16 cnt = 0; cnt < numOriginalProfiles; ++cnt) { pProfile = &(gMercProfiles[ cnt ]); @@ -721,11 +721,9 @@ void HandleMercsAboutToLeave( SOLDIERTYPE *pMercList ) // ATE: This function deals with MERC MERC and NPC's leaving because of not getting paid... // NOT AIM renewals.... -void MercsContractIsFinished( UINT8 ubID ) +void MercsContractIsFinished( SoldierID ubID ) { - SOLDIERTYPE *pSoldier; - - pSoldier = &Menptr[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; //if the soldier was removed before getting into this function, return if( !pSoldier->bActive ) @@ -775,11 +773,9 @@ void MercsContractIsFinished( UINT8 ubID ) } // ATE: Called for RPCs who should now complain about no pay... -void RPCWhineAboutNoPay( UINT8 ubID ) +void RPCWhineAboutNoPay( SoldierID ubID ) { - SOLDIERTYPE *pSoldier; - - pSoldier = &Menptr[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; //if the soldier was removed before getting into this function, return if( !pSoldier->bActive ) @@ -904,24 +900,22 @@ void MercComplainAboutEquipment( UINT8 ubProfile ) void UpdateBuddyAndHatedCounters( void ) { - INT8 bMercID; - INT32 iLoop; - INT8 bOtherID; - INT8 bLastTeamID; - UINT8 ubOtherProfileID; - SOLDIERTYPE *pSoldier; - SOLDIERTYPE *pOtherSoldier; - MERCPROFILESTRUCT *pProfile; - BOOLEAN fSameGroupOnly; - - BOOLEAN fUpdatedTimeTillNextHatedComplaint = FALSE; + SoldierID bMercID, bOtherID, bLastTeamID; + INT32 iLoop; + UINT8 ubOtherProfileID; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pOtherSoldier; + MERCPROFILESTRUCT *pProfile; + BOOLEAN fSameGroupOnly; + BOOLEAN fUpdatedTimeTillNextHatedComplaint = FALSE; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; //loop though all the mercs - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; bMercID++,pSoldier++) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; fSameGroupOnly = FALSE; //if the merc is active and on a combat assignment @@ -938,9 +932,9 @@ void UpdateBuddyAndHatedCounters( void ) fUpdatedTimeTillNextHatedComplaint = FALSE; bOtherID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - - for ( pOtherSoldier = MercPtrs[ bOtherID ]; bOtherID <= bLastTeamID; bOtherID++, pOtherSoldier++) + for ( ; bOtherID <= bLastTeamID; ++bOtherID ) { + pOtherSoldier = bOtherID; // is this guy in the same sector and on active duty (or in the same moving group) if (bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->bAssignment < ON_DUTY ) @@ -1255,15 +1249,16 @@ void UpdateBuddyAndHatedCounters( void ) void HourlyCamouflageUpdate( void ) { - INT8 bMercID, bLastTeamID; + SoldierID bMercID, bLastTeamID; SOLDIERTYPE * pSoldier; BOOLEAN camoWoreOff = FALSE; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // loop through all mercs - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; bMercID++,pSoldier++) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; if ( pSoldier->bActive ) { // SANDRO - new Ranger trait reduces camo degrading, which replaces camouflage trait diff --git a/Strategic/Strategic Merc Handler.h b/Strategic/Strategic Merc Handler.h index 838a24ab..4e878f2f 100644 --- a/Strategic/Strategic Merc Handler.h +++ b/Strategic/Strategic Merc Handler.h @@ -3,11 +3,12 @@ //forward declarations of common classes to eliminate includes class SOLDIERTYPE; +struct SoldierID; void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier ); void MercDailyUpdate(); -void MercsContractIsFinished( UINT8 ubID ); -void RPCWhineAboutNoPay( UINT8 ubID ); +void MercsContractIsFinished( SoldierID ubID ); +void RPCWhineAboutNoPay( SoldierID ubID ); void MercComplainAboutEquipment( UINT8 ubProfileID ); BOOLEAN SoldierHasWorseEquipmentThanUsedTo( SOLDIERTYPE *pSoldier ); void UpdateBuddyAndHatedCounters( void ); diff --git a/Strategic/Strategic Mines.cpp b/Strategic/Strategic Mines.cpp index c998d1bf..93f4cd27 100644 --- a/Strategic/Strategic Mines.cpp +++ b/Strategic/Strategic Mines.cpp @@ -132,7 +132,7 @@ UINT8 gubMonsterMineInfestation[]={ // the static NPC dialogue faces //extern UINT32 uiExternalStaticNPCFaces[]; extern FACETYPE *gpCurrentTalkingFace; -extern UINT8 gubCurrentTalkingID; +extern UINT16 gubCurrentTalkingID; diff --git a/Strategic/Strategic Movement.cpp b/Strategic/Strategic Movement.cpp index 4e765ad1..9ee5a7e3 100644 --- a/Strategic/Strategic Movement.cpp +++ b/Strategic/Strategic Movement.cpp @@ -806,7 +806,7 @@ GROUP* CreateNewEnemyGroupDepartingFromSector( UINT32 uiSector, UINT8 ubNumAdmin return NULL; } -GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT8& arusNumAdmins, UINT8& arusNumTroops, UINT8& arusNumElites ) +GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT16& arusNumAdmins, UINT16& arusNumTroops, UINT16& arusNumElites ) { GROUP *pNew; AssertMsg( uiSector >= 0 && uiSector <= 255, String( "CreateNewMilitiaGroupDepartingFromSector with out of range value of %d", uiSector ) ); @@ -846,7 +846,7 @@ GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT8& arusNum pNew->pEnemyGroup->ubNumAdmins = arusNumAdmins; pNew->pEnemyGroup->ubNumTroops = arusNumTroops; pNew->pEnemyGroup->ubNumElites = arusNumElites; - pNew->ubGroupSize = (UINT8)(arusNumAdmins + arusNumTroops + arusNumElites); + pNew->ubGroupSize = arusNumAdmins + arusNumTroops + arusNumElites; pNew->ubTransportationMask = FOOT; pNew->fVehicle = FALSE; pNew->ubCreatedSectorID = pNew->ubOriginalSector; @@ -1120,7 +1120,7 @@ void PrepareForPreBattleInterface( GROUP *pPlayerDialogGroup, GROUP *pInitiating gfCantRetreatInPBI = TRUE; } - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); pSoldier = MercPtrs[ ubMercsInGroup[ ubChosenMerc ] ]; gpTacticalTraversalChosenSoldier = pSoldier; @@ -1149,7 +1149,7 @@ void PrepareForPreBattleInterface( GROUP *pPlayerDialogGroup, GROUP *pInitiating gfCantRetreatInPBI = TRUE; } - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); pSoldier = MercPtrs[ ubMercsInGroup[ ubChosenMerc ] ]; @@ -1946,11 +1946,6 @@ void GroupArrivedAtSector( UINT8 ubGroupID, BOOLEAN fCheckForBattle, BOOLEAN fNe if ( pGroup->usGroupTeam == OUR_TEAM ) { - if( pGroup->ubSectorZ == 0 ) - { - SectorInfo[SECTOR( pGroup->ubSectorX, pGroup->ubSectorY )].bLastKnownEnemies = NumNonPlayerTeamMembersInSector( pGroup->ubSectorX, pGroup->ubSectorY, ENEMY_TEAM ); - } - // Flugente: do not award experience gain if we never left if (!fNeverLeft) { @@ -3770,8 +3765,6 @@ INT32 GetTravelTimeForFootTeam( UINT8 ubSector, UINT8 ubDirection ) void HandleArrivalOfReinforcements( GROUP *pGroup ) { SOLDIERTYPE *pSoldier; - SECTORINFO *pSector; - INT32 iNumEnemiesInSector; INT32 cnt; if ( pGroup->usGroupTeam == OUR_TEAM ) @@ -3835,22 +3828,6 @@ void HandleArrivalOfReinforcements( GROUP *pGroup ) gfPendingNonPlayerTeam[MILITIA_TEAM] = TRUE; AddPossiblePendingMilitiaToBattle( ); } - - //Update the known number of enemies in the sector. - pSector = &SectorInfo[ SECTOR( pGroup->ubSectorX, pGroup->ubSectorY ) ]; - iNumEnemiesInSector = NumNonPlayerTeamMembersInSector( pGroup->ubSectorX, pGroup->ubSectorY, ENEMY_TEAM ); - if( iNumEnemiesInSector ) - { - if( pSector->bLastKnownEnemies >= 0 ) - { - pSector->bLastKnownEnemies = (INT8)iNumEnemiesInSector; - } - //if we don't know how many enemies there are, then we can't update this value. - } - else - { - pSector->bLastKnownEnemies = 0; - } } BOOLEAN PlayersBetweenTheseSectors( INT16 sSource, INT16 sDest, INT32 *iCountEnter, INT32 *iCountExit, BOOLEAN *fAboutToArriveEnter ) @@ -4334,12 +4311,12 @@ BOOLEAN LoadPlayerGroupList( HWFILE hFile, GROUP **pGroup ) { PLAYERGROUP *pTemp=NULL; PLAYERGROUP *pHead=NULL; - UINT32 uiNumberOfNodes=0; - UINT32 uiProfileID=0; - UINT32 uiNumBytesRead; - UINT32 cnt=0; - INT16 sTempID; - GROUP *pTempGroup = *pGroup; + UINT32 uiNumberOfNodes=0; + UINT32 uiProfileID=0; + UINT32 uiNumBytesRead; + UINT32 cnt=0; + SoldierID sTempID; + GROUP *pTempGroup = *pGroup; // pTemp = pGroup; @@ -4374,10 +4351,10 @@ BOOLEAN LoadPlayerGroupList( HWFILE hFile, GROUP **pGroup ) sTempID = GetSoldierIDFromMercID( pTemp->ubProfileID ); //Should never happen - Assert( sTempID != -1 ); - pTemp->ubID = (UINT8) sTempID; + Assert( sTempID != NOBODY ); + pTemp->ubID = sTempID; - pTemp->pSoldier = &Menptr[ pTemp->ubID ]; + pTemp->pSoldier = pTemp->ubID; pTemp->next = NULL; @@ -5480,15 +5457,16 @@ BOOLEAN TestForBloodcatAmbush( GROUP *pGroup ) // merc recoeds - get a point to scouts if ( fBloodCatAmbushPrevented ) { - for( UINT16 i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) { - if ( MercPtrs[ i ]->sSectorX == pGroup->ubSectorX && MercPtrs[ i ]->sSectorY == pGroup->ubSectorY && MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW && MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT && MercPtrs[i]->bAssignment != ASSIGNMENT_REBELCOMMAND && MercPtrs[ i ]->stats.bLife >= OKLIFE ) + if ( pSoldier->sSectorX == pGroup->ubSectorX && pSoldier->sSectorY == pGroup->ubSectorY && pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND && pSoldier->stats.bLife >= OKLIFE ) { - if( HAS_SKILL_TRAIT( MercPtrs[ i ], SCOUTING_NT ) && MercPtrs[ i ]->ubProfile != NO_PROFILE ) + if( HAS_SKILL_TRAIT( pSoldier, SCOUTING_NT ) && pSoldier->ubProfile != NO_PROFILE ) { - gMercProfiles[ MercPtrs[ i ]->ubProfile ].records.usAmbushesExperienced++; + gMercProfiles[ pSoldier->ubProfile ].records.usAmbushesExperienced++; } } } @@ -5962,18 +5940,17 @@ BOOLEAN ValidateGroups( GROUP *pGroup ) BOOLEAN ScoutIsPresentInSquad( INT16 ubSectorNumX, INT16 ubSectorNumY ) { BOOLEAN fScoutPresent = FALSE; - INT32 i; - // sevenfm: scout should not be sleeping, in vehicle or on assignment - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && - MercPtrs[ i ]->stats.bLife >= OKLIFE && - MercPtrs[ i ]->sSectorX == ubSectorNumX && - MercPtrs[ i ]->sSectorY == ubSectorNumY && - MercPtrs[ i ]->bAssignment < ON_DUTY && - !MercPtrs[ i ]->flags.fMercAsleep && - HAS_SKILL_TRAIT( MercPtrs[ i ], SCOUTING_NT ) ) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && + pSoldier->stats.bLife >= OKLIFE && + pSoldier->sSectorX == ubSectorNumX && + pSoldier->sSectorY == ubSectorNumY && + pSoldier->bAssignment < ON_DUTY && + !pSoldier->flags.fMercAsleep && + HAS_SKILL_TRAIT( pSoldier, SCOUTING_NT ) ) { fScoutPresent = TRUE; } @@ -6004,13 +5981,14 @@ BOOLEAN ConcealedMercInSector( INT16 ubSectorNumX, INT16 ubSectorNumY, BOOLEAN a if ( !gGameOptions.fNewTraitSystem ) return FALSE; - for ( int i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i ) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i ) { - if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife >= OKLIFE && SPY_LOCATION( MercPtrs[i]->bAssignment ) ) + SOLDIERTYPE *pSoldier = i; + if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && SPY_LOCATION( pSoldier->bAssignment ) ) { - if ( MercPtrs[i]->sSectorX == ubSectorNumX && MercPtrs[i]->sSectorY == ubSectorNumY && MercPtrs[i]->bSectorZ == 10 ) + if ( pSoldier->sSectorX == ubSectorNumX && pSoldier->sSectorY == ubSectorNumY && pSoldier->bSectorZ == 10 ) { - if ( !aScoutsOnly || HAS_SKILL_TRAIT( MercPtrs[i], SCOUTING_NT ) ) + if ( !aScoutsOnly || HAS_SKILL_TRAIT( pSoldier, SCOUTING_NT ) ) { return TRUE; } diff --git a/Strategic/Strategic Movement.h b/Strategic/Strategic Movement.h index 03f0d3ff..6f29c969 100644 --- a/Strategic/Strategic Movement.h +++ b/Strategic/Strategic Movement.h @@ -52,38 +52,38 @@ typedef struct WAYPOINT typedef struct PLAYERGROUP { - UINT8 ubProfileID; //SAVE THIS VALUE ONLY. The others are temp (for quick access) - UINT8 ubID; //index in the Menptr array + UINT8 ubProfileID; //SAVE THIS VALUE ONLY. The others are temp (for quick access) + SoldierID ubID; //index in the Menptr array SOLDIERTYPE *pSoldier; //direct access to the soldier pointer - UINT8 bFlags; //flags referring to individual player soldiers + UINT8 bFlags; //flags referring to individual player soldiers struct PLAYERGROUP *next; //next player in list }PLAYERGROUP; typedef struct ENEMYGROUP { - UINT8 ubNumTroops; //number of regular troops in the group - UINT8 ubNumElites; //number of elite troops in the group - UINT8 ubNumAdmins; //number of administrators in the group + UINT16 ubNumTroops; //number of regular troops in the group + UINT16 ubNumElites; //number of elite troops in the group + UINT16 ubNumAdmins; //number of administrators in the group UINT8 ubLeaderProfileID; //could be Mike, maybe the warden... someone new, but likely nobody. - UINT8 ubPendingReinforcements;//This group is waiting for reinforcements before attacking or attempting to fortify newly aquired sector. - UINT8 ubAdminsInBattle; //number of administrators in currently in battle. + UINT16 ubPendingReinforcements;//This group is waiting for reinforcements before attacking or attempting to fortify newly aquired sector. + UINT16 ubAdminsInBattle; //number of administrators in currently in battle. UINT8 ubIntention; //the type of group this is: patrol, assault, spies, etc. - UINT8 ubTroopsInBattle; //number of soldiers currently in battle. - UINT8 ubElitesInBattle; //number of elite soldiers currently in battle. + UINT16 ubTroopsInBattle; //number of soldiers currently in battle. + UINT16 ubElitesInBattle; //number of elite soldiers currently in battle. // WDS - New AI - UINT8 ubNumTanks; - UINT8 ubTanksInBattle; - UINT8 ubNumJeeps; - UINT8 ubJeepsInBattle; + UINT16 ubNumTanks; + UINT16 ubTanksInBattle; + UINT16 ubNumJeeps; + UINT16 ubJeepsInBattle; // Flugente: number of turncoats UINT8 ubNumAdmins_Turncoat; UINT8 ubNumTroops_Turncoat; UINT8 ubNumElites_Turncoat; - UINT8 ubNumRobots; //number of enemy robots in the group - UINT8 ubRobotsInBattle; //number of enemy robots currently in battle. + UINT16 ubNumRobots; //number of enemy robots in the group + UINT16 ubRobotsInBattle; //number of enemy robots currently in battle. INT8 bPadding[11]; }ENEMYGROUP; @@ -120,7 +120,7 @@ typedef struct GROUP BOOLEAN fVehicle; //vehicle controlled group? BOOLEAN fPersistant; //This flag when set prevents the group from being automatically deleted when it becomes empty. UINT8 ubGroupID; //the unique ID of the group (used for hooking into events and SOLDIERTYPE) - UINT8 ubGroupSize; //total number of individuals in the group. + UINT16 ubGroupSize; //total number of individuals in the group. UINT8 ubSectorX, ubSectorY; //last/curr sector occupied UINT8 ubSectorZ; UINT8 ubNextX, ubNextY; //next sector destination @@ -204,7 +204,7 @@ BOOLEAN SetGroupPatrolParameters( UINT8 ubGroupID, UINT8 ubRestAtFL, UINT8 ubRes //............................................................ GROUP* CreateNewEnemyGroupDepartingFromSector( UINT32 uiSector, UINT8 ubNumAdmins, UINT8 ubNumTroops, UINT8 ubNumElites, UINT8 ubNumRobots, UINT8 ubNumTanks, UINT8 ubNumJeeps ); -GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT8& arusNumAdmins, UINT8& arusNumTroops, UINT8& arusNumElites ); +GROUP* CreateNewMilitiaGroupDepartingFromSector( UINT32 uiSector, UINT16& arusNumAdmins, UINT16& arusNumTroops, UINT16& arusNumElites ); #ifdef JA2UB GROUP* CreateNewEnemyGroupDepartingFromSectorUsingZLevel( UINT32 uiSector, UINT8 ubSectorZ, UINT8 ubNumAdmins, UINT8 ubNumTroops, UINT8 ubNumElites, UINT8 ubNumTanks ); diff --git a/Strategic/Strategic Town Loyalty.cpp b/Strategic/Strategic Town Loyalty.cpp index 2db0a664..dd4a613b 100644 --- a/Strategic/Strategic Town Loyalty.cpp +++ b/Strategic/Strategic Town Loyalty.cpp @@ -680,7 +680,6 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional ) INT8 bTownId = 0; INT32 iLoyaltyChange = 0; INT8 bSeenState = 0; - INT32 iCounter = 0; SOLDIERTYPE *pCivSoldier = NULL; UINT32 uiChanceFalseAccusal = 0; INT8 bKillerTeam = 0; @@ -741,13 +740,13 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional ) } */ // set killer team - bKillerTeam = Menptr[ pSoldier->ubAttackerID ].bTeam; + bKillerTeam = pSoldier->ubAttackerID->bTeam; // if the player did the killing if( bKillerTeam == OUR_TEAM ) { - SOLDIERTYPE *pKiller = MercPtrs[ pSoldier->ubAttackerID ]; + SOLDIERTYPE *pKiller = pSoldier->ubAttackerID; // apply morale penalty for killing a civilian! HandleMoraleEvent( pKiller, MORALE_KILLED_CIVILIAN, pKiller->sSectorX, pKiller->sSectorY, pKiller->bSectorZ ); @@ -790,10 +789,10 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional ) // check if LOS between any civ, killer and killed // if so, then do not adjust - for( iCounter = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iCounter++ ) + for( SoldierID iCounter = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iCounter ) { // set current civ soldier - pCivSoldier = MercPtrs[ iCounter ]; + pCivSoldier = iCounter; if ( pCivSoldier == pSoldier ) { @@ -801,7 +800,7 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional ) } // killer seen by civ? - if ( SoldierToSoldierLineOfSightTest( pCivSoldier, MercPtrs[ pSoldier->ubAttackerID ], TRUE, gGameExternalOptions.ubStraightSightRange ) != 0 ) + if ( SoldierToSoldierLineOfSightTest( pCivSoldier, pSoldier->ubAttackerID, TRUE, gGameExternalOptions.ubStraightSightRange ) != 0 ) { bSeenState |= 1; } @@ -909,7 +908,7 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional ) case CREATURE_TEAM: // killed by a monster - make sure it was one - if( ( Menptr[ pSoldier->ubAttackerID ].ubBodyType >= ADULTFEMALEMONSTER ) && ( Menptr[ pSoldier->ubAttackerID ].ubBodyType <= QUEENMONSTER ) ) + if( ( pSoldier->ubAttackerID->ubBodyType >= ADULTFEMALEMONSTER ) && ( pSoldier->ubAttackerID->ubBodyType <= QUEENMONSTER ) ) { // increase for the extreme horror of being killed by a monster iLoyaltyChange *= MULTIPLIER_FOR_MURDER_BY_MONSTER; @@ -2130,13 +2129,12 @@ BOOLEAN DidFirstBattleTakePlaceInThisTown( INT8 bTownId ) UINT32 PlayerStrength( void ) { - UINT8 ubLoop; - SOLDIERTYPE * pSoldier; - UINT32 uiStrength, uiTotal = 0; + SOLDIERTYPE *pSoldier; + UINT32 uiStrength, uiTotal = 0; - for ( ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++ ) + for ( SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop ) { - pSoldier = MercPtrs[ ubLoop ]; + pSoldier = ubLoop; if ( pSoldier->bActive ) { if ( pSoldier->bInSector || (pSoldier->flags.fBetweenSectors && SECTORX( pSoldier->ubPrevSectorID ) == gWorldSectorX && SECTORY( pSoldier->ubPrevSectorID ) == gWorldSectorY && (pSoldier->bSectorZ == gbWorldSectorZ)) ) @@ -2152,13 +2150,12 @@ UINT32 PlayerStrength( void ) UINT32 EnemyStrength( void ) { - UINT8 ubLoop; - SOLDIERTYPE * pSoldier; - UINT32 uiStrength, uiTotal = 0; + SOLDIERTYPE * pSoldier; + UINT32 uiStrength, uiTotal = 0; - for ( ubLoop = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for ( SoldierID ubLoop = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop ) { - pSoldier = MercPtrs[ ubLoop ]; + pSoldier = ubLoop; if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral ) { // count this person's strength (condition), calculated as life reduced up to half according to maxbreath diff --git a/Strategic/Strategic Transport Groups.cpp b/Strategic/Strategic Transport Groups.cpp index 16916e3f..e385d6b5 100644 --- a/Strategic/Strategic Transport Groups.cpp +++ b/Strategic/Strategic Transport Groups.cpp @@ -52,10 +52,10 @@ extern ARMY_GUN_CHOICE_TYPE gExtendedArmyGunChoices[SOLDIER_GUN_CHOICE_SELECTION extern ARMY_GUN_CHOICE_TYPE gArmyItemChoices[SOLDIER_GUN_CHOICE_SELECTIONS][MAX_ITEM_TYPES]; extern BOOLEAN gfTownUsesLoyalty[MAX_TOWNS]; -std::map> transportGroupIdToSoldierMap; +std::map> transportGroupIdToSoldierMap; std::map transportGroupSectorInfo; -void PopulateTransportGroup(UINT8& admins, UINT8& troops, UINT8& elites, UINT8& jeeps, UINT8& tanks, UINT8& robots, UINT8 progress, int difficulty, BOOLEAN trySpecialCase); +void PopulateTransportGroup(UINT16& admins, UINT16& troops, UINT16& elites, UINT16& jeeps, UINT16& tanks, UINT16& robots, UINT8 progress, int difficulty, BOOLEAN trySpecialCase); BOOLEAN DeployTransportGroup() { @@ -128,7 +128,7 @@ BOOLEAN DeployTransportGroup() TRANSPORT_GROUP_DEBUG(L"DeployTransportGroup sending group to sectorId: %d (%d/%d)", ubSectorID, SECTORX(ubSectorID), SECTORY(ubSectorID)); - UINT8 admins, troops, elites, robots, jeeps, tanks; + UINT16 admins, troops, elites, robots, jeeps, tanks; const UINT8 progress = min(125, HighestPlayerProgressPercentage() + recentLossCount * 5); PopulateTransportGroup(admins, troops, elites, jeeps, tanks, robots, progress, difficulty, mineSectorIds.size() == 1); @@ -152,7 +152,7 @@ BOOLEAN DeployTransportGroup() BOOLEAN ForceDeployTransportGroup(UINT8 sectorId) { - UINT8 admins, troops, elites, robots, jeeps, tanks; + UINT16 admins, troops, elites, robots, jeeps, tanks; const INT8 recentLossCount = min(5, GetAllStrategicEventsOfType(EVENT_TRANSPORT_GROUP_DEFEATED).size()); const UINT8 progress = min(125, HighestPlayerProgressPercentage() + recentLossCount * 5); const UINT8 difficulty = gGameOptions.ubDifficultyLevel; @@ -222,29 +222,31 @@ void FillMapColoursForTransportGroups(INT32(&colorMap)[MAXIMUM_VALID_Y_COORDINAT // build map of detection sectors + ranges std::map, INT8> detectionMap; std::map monitoredTowns; - for( INT16 i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && - MercPtrs[ i ]->stats.bLife >= OKLIFE && - (MercPtrs[ i ]->bAssignment < ON_DUTY || MercPtrs[ i ]->bAssignment == GATHERINTEL) && - !MercPtrs[ i ]->flags.fMercAsleep) + SOLDIERTYPE *pSoldier = i; + + if( pSoldier->bActive && + pSoldier->stats.bLife >= OKLIFE && + (pSoldier->bAssignment < ON_DUTY || pSoldier->bAssignment == GATHERINTEL) && + !pSoldier->flags.fMercAsleep) { if (gGameOptions.fNewTraitSystem) { - if (HAS_SKILL_TRAIT(MercPtrs[i], SCOUTING_NT)) + if (HAS_SKILL_TRAIT(pSoldier, SCOUTING_NT)) { - detectionMap[std::pair(MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY)] = DETECTION_RANGE_SCOUT; + detectionMap[std::pair(pSoldier->sSectorX, pSoldier->sSectorY)] = DETECTION_RANGE_SCOUT; } - else if (HAS_SKILL_TRAIT(MercPtrs[i], RADIO_OPERATOR_NT) && MercPtrs[i]->CanUseRadio(FALSE)) + else if (HAS_SKILL_TRAIT(pSoldier, RADIO_OPERATOR_NT) && pSoldier->CanUseRadio(FALSE)) { - detectionMap[std::pair(MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY)] = DETECTION_RANGE_RADIO; + detectionMap[std::pair(pSoldier->sSectorX, pSoldier->sSectorY)] = DETECTION_RANGE_RADIO; } - else if (HAS_SKILL_TRAIT(MercPtrs[i], COVERT_NT)) + else if (HAS_SKILL_TRAIT(pSoldier, COVERT_NT)) { - if (MercPtrs[i]->bAssignment == GATHERINTEL) + if (pSoldier->bAssignment == GATHERINTEL) { - detectionMap[std::pair(MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY)] = DETECTION_RANGE_COVERT; - monitoredTowns[GetTownIdForSector(MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY)] = MonitoredSectorState::Monitored; + detectionMap[std::pair(pSoldier->sSectorX, pSoldier->sSectorY)] = DETECTION_RANGE_COVERT; + monitoredTowns[GetTownIdForSector(pSoldier->sSectorX, pSoldier->sSectorY)] = MonitoredSectorState::Monitored; } } } @@ -446,8 +448,8 @@ void UpdateTransportGroupInventory() if (gGameExternalOptions.fStrategicTransportGroupsEnabled == FALSE) return; - const int firstSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; - const int lastSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; + const SoldierID firstSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; + const SoldierID lastSlot = gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; const UINT8 progress = CurrentPlayerProgressPercentage(); enum ItemTypes @@ -479,13 +481,14 @@ void UpdateTransportGroupInventory() { // let's be nice to the player and only drop ammo for guns their mercs have in inventory std::set playerCalibres; - for (INT16 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) { - if (MercPtrs[i]->bActive && !(MercPtrs[i]->flags.uiStatusFlags & SOLDIER_VEHICLE)) + SOLDIERTYPE *pSoldier = i; + if (pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE)) { - for (int j = 0 ; j < MercPtrs[i]->inv.size(); ++j) + for (int j = 0 ; j < pSoldier->inv.size(); ++j) { - OBJECTTYPE& obj = MercPtrs[i]->inv[j]; + OBJECTTYPE& obj = pSoldier->inv[j]; if (obj.exists() && Item[obj.usItem].usItemClass == IC_GUN) { @@ -599,11 +602,11 @@ void UpdateTransportGroupInventory() // cache the initial jeep count of every group we find std::map cachedGroupJeepCount; - for (int slot = firstSlot; (slot <= lastSlot); ++slot) + for ( SoldierID slot = firstSlot; (slot <= lastSlot); ++slot) { - SOLDIERTYPE* pSoldier = &Menptr[slot]; + SOLDIERTYPE* pSoldier = slot; - const std::map>::iterator groupIter = transportGroupIdToSoldierMap.find(pSoldier->ubGroupID); + const std::map>::iterator groupIter = transportGroupIdToSoldierMap.find(pSoldier->ubGroupID); if (groupIter != transportGroupIdToSoldierMap.end()) { // let's find out if this group is coming home or still outgoing to its target destination @@ -620,7 +623,7 @@ void UpdateTransportGroupInventory() } // found a matching transport groupid - std::map::iterator soldierClassIter = groupIter->second.find(SOLDIER_CLASS_JEEP); + std::map::iterator soldierClassIter = groupIter->second.find(SOLDIER_CLASS_JEEP); if (cachedGroupJeepCount.find(groupIter->first) == cachedGroupJeepCount.end()) { cachedGroupJeepCount[groupIter->first] = soldierClassIter == groupIter->second.end() ? 0 : groupIter->second[SOLDIER_CLASS_JEEP]; @@ -874,7 +877,7 @@ void UpdateTransportGroupInventory() } } -void AddToTransportGroupMap(UINT8 groupId, int soldierClass, UINT8 amount) +void AddToTransportGroupMap(UINT8 groupId, int soldierClass, UINT16 amount) { if (gGameExternalOptions.fStrategicTransportGroupsEnabled == FALSE) { @@ -913,7 +916,7 @@ void NotifyTransportGroupDefeated() AddStrategicEvent(EVENT_TRANSPORT_GROUP_DEFEATED, GetWorldTotalMin() + 60 * hoursToRememberDefeat, 0); } -void PopulateTransportGroup(UINT8& admins, UINT8& troops, UINT8& elites, UINT8& jeeps, UINT8& tanks, UINT8& robots, UINT8 progress, int difficulty, BOOLEAN trySpecialCase) +void PopulateTransportGroup(UINT16& admins, UINT16& troops, UINT16& elites, UINT16& jeeps, UINT16& tanks, UINT16& robots, UINT8 progress, int difficulty, BOOLEAN trySpecialCase) { admins = troops = elites = robots = jeeps = tanks = 0; diff --git a/Strategic/Strategic Transport Groups.h b/Strategic/Strategic Transport Groups.h index 9cb67104..2da967d9 100644 --- a/Strategic/Strategic Transport Groups.h +++ b/Strategic/Strategic Transport Groups.h @@ -22,7 +22,7 @@ void UpdateTransportGroupInventory(); const std::map GetTransportGroupSectorInfo(); -void AddToTransportGroupMap(UINT8 groupId, int soldierClass, UINT8 amount); +void AddToTransportGroupMap(UINT8 groupId, int soldierClass, UINT16 amount); void ClearTransportGroupMap(); void NotifyTransportGroupDefeated(); diff --git a/Strategic/Town Militia.cpp b/Strategic/Town Militia.cpp index 40eabc8f..742ba47d 100644 --- a/Strategic/Town Militia.cpp +++ b/Strategic/Town Militia.cpp @@ -54,7 +54,7 @@ BOOLEAN gfAreWePromotingRegular = FALSE; //the completed list of sector soldiers for training militia -INT32 giListOfMercsInSectorsCompletedMilitiaTraining[ SIZE_OF_MILITIA_COMPLETED_TRAINING_LIST ]; +SoldierID giListOfMercsInSectorsCompletedMilitiaTraining[ SIZE_OF_MILITIA_COMPLETED_TRAINING_LIST ]; SOLDIERTYPE *pMilitiaTrainerSoldier = NULL; // note that these sector values are STRATEGIC INDEXES, not 0-255! @@ -471,7 +471,7 @@ INT8 MilitiaRankToSoldierClass(UINT8 ubRank) return(bSoldierClass); } -void StrategicAddMilitiaToSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT8 ubHowMany) +void StrategicAddMilitiaToSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT16 ubHowMany) { SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] ); @@ -486,15 +486,15 @@ void StrategicAddMilitiaToSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT8 u fMapPanelDirty = TRUE; } -void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRank, UINT8 ubHowMany) +void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRank, UINT16 ubHowMany) { SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] ); // damn well better have that many around to promote! //Assert(pSectorInfo->ubNumberOfCivsAtLevel[ ubCurrentRank ] >= ubHowMany); - UINT8 stationary = MilitiaInSectorOfRankStationary( sMapX, sMapY, ubCurrentRank ); - UINT8 ingroups = MilitiaInSectorOfRankInGroups( sMapX, sMapY, ubCurrentRank ); + UINT16 stationary = MilitiaInSectorOfRankStationary( sMapX, sMapY, ubCurrentRank ); + UINT16 ingroups = MilitiaInSectorOfRankInGroups( sMapX, sMapY, ubCurrentRank ); //KM : July 21, 1999 patch fix if ( ubCurrentRank >= ELITE_MILITIA || stationary + ingroups < ubHowMany ) @@ -503,8 +503,8 @@ void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRa } // determine how many static and - if necessary - group-based militia we have to remove - UINT8 reducestatic = min( stationary, ubHowMany ); - UINT8 reducegroups = min( ingroups, ubHowMany - reducestatic ); + UINT16 reducestatic = min( stationary, ubHowMany ); + UINT16 reducegroups = min( ingroups, ubHowMany - reducestatic ); pSectorInfo->ubNumberOfCivsAtLevel[ubCurrentRank] -= reducestatic; pSectorInfo->ubNumberOfCivsAtLevel[ubCurrentRank + 1] += reducestatic; @@ -541,7 +541,7 @@ void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRa fMapPanelDirty = TRUE; } -void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT8 ubHowMany) +void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT16 ubHowMany) { SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] ); @@ -549,8 +549,8 @@ void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UI // damn well better have that many around to remove! //Assert(pSectorInfo->ubNumberOfCivsAtLevel[ ubRank ] >= ubHowMany); - UINT8 stationary = MilitiaInSectorOfRankStationary( sMapX, sMapY, ubRank ); - UINT8 ingroups = MilitiaInSectorOfRankInGroups( sMapX, sMapY, ubRank ); + UINT16 stationary = MilitiaInSectorOfRankStationary( sMapX, sMapY, ubRank ); + UINT16 ingroups = MilitiaInSectorOfRankInGroups( sMapX, sMapY, ubRank ); //KM : July 21, 1999 patch fix if ( stationary + ingroups < ubHowMany ) @@ -559,8 +559,8 @@ void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UI } // determine how many static and - if necessary - group-based militia we have to remove - UINT8 reducestatic = min( stationary, ubHowMany ); - UINT8 reducegroups = min( ingroups, ubHowMany - reducestatic ); + UINT16 reducestatic = min( stationary, ubHowMany ); + UINT16 reducegroups = min( ingroups, ubHowMany - reducestatic ); pSectorInfo->ubNumberOfCivsAtLevel[ubRank] -= reducestatic; @@ -571,21 +571,21 @@ void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UI { if ( ubRank == GREEN_MILITIA ) { - UINT8 reduced = min( reducegroups, pGroup->pEnemyGroup->ubNumAdmins ); + UINT16 reduced = min( reducegroups, pGroup->pEnemyGroup->ubNumAdmins ); pGroup->pEnemyGroup->ubNumAdmins -= reduced; pGroup->ubGroupSize -= reduced; reducegroups -= reduced; } else if ( ubRank == REGULAR_MILITIA ) { - UINT8 reduced = min( reducegroups, pGroup->pEnemyGroup->ubNumTroops ); + UINT16 reduced = min( reducegroups, pGroup->pEnemyGroup->ubNumTroops ); pGroup->pEnemyGroup->ubNumTroops -= reduced; pGroup->ubGroupSize -= reduced; reducegroups -= reduced; } else if ( ubRank == ELITE_MILITIA ) { - UINT8 reduced = min( reducegroups, pGroup->pEnemyGroup->ubNumElites ); + UINT16 reduced = min( reducegroups, pGroup->pEnemyGroup->ubNumElites ); pGroup->pEnemyGroup->ubNumElites -= reduced; pGroup->ubGroupSize -= reduced; reducegroups -= reduced; @@ -705,12 +705,12 @@ void HandleMilitiaDefections(INT16 sMapX, INT16 sMapY) } } -UINT8 MilitiaInSectorOfRank(INT16 sMapX, INT16 sMapY, UINT8 ubRank) +UINT16 MilitiaInSectorOfRank(INT16 sMapX, INT16 sMapY, UINT8 ubRank) { return MilitiaInSectorOfRankStationary( sMapX, sMapY, ubRank ) + MilitiaInSectorOfRankInGroups( sMapX, sMapY, ubRank ); } -UINT8 MilitiaInSectorOfRankStationary( INT16 sMapX, INT16 sMapY, UINT8 ubRank ) +UINT16 MilitiaInSectorOfRankStationary( INT16 sMapX, INT16 sMapY, UINT8 ubRank ) { if ( ubRank < MAX_MILITIA_LEVELS ) return SectorInfo[SECTOR( sMapX, sMapY )].ubNumberOfCivsAtLevel[ubRank]; @@ -718,9 +718,9 @@ UINT8 MilitiaInSectorOfRankStationary( INT16 sMapX, INT16 sMapY, UINT8 ubRank ) return 0; } -UINT8 MilitiaInSectorOfRankInGroups( INT16 sMapX, INT16 sMapY, UINT8 ubRank ) +UINT16 MilitiaInSectorOfRankInGroups( INT16 sMapX, INT16 sMapY, UINT8 ubRank ) { - UINT8 count = 0; + UINT16 count = 0; GROUP *pGroup = gpGroupList; while ( pGroup ) @@ -1379,7 +1379,7 @@ void HandleCompletionOfTownTrainingByGroupWithTrainer( SOLDIERTYPE *pTrainer, UI continue; } - pSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // valid soldier? if( pSoldier->bActive == FALSE ) @@ -1421,10 +1421,10 @@ void AddSectorForSoldierToListOfSectorsThatCompletedMilitiaTraining( SOLDIERTYPE // get the sector value sSector = pSoldier->sSectorX + pSoldier->sSectorY * MAP_WORLD_X; - while( giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] != -1 ) + while( giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] != NOBODY ) { // get the current soldier - pCurrentSoldier = &Menptr[ giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] ]; + pCurrentSoldier = giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ]; // get the current sector value sCurrentSector = CALCULATE_STRATEGIC_INDEX( pCurrentSoldier->sSectorX, pCurrentSoldier->sSectorY ); @@ -1455,7 +1455,7 @@ void ClearSectorListForCompletedTrainingOfMilitia( void ) for( iCounter = 0; iCounter < SIZE_OF_MILITIA_COMPLETED_TRAINING_LIST; iCounter++ ) { - giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] = -1; + giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] = NOBODY; } return; @@ -1469,10 +1469,10 @@ void HandleContinueOfTownTraining( void ) BOOLEAN fContinueEventPosted = FALSE; - while( giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] != -1 ) + while( giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] != NOBODY ) { // get the soldier - pSoldier = &Menptr[ giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ] ]; + pSoldier = giListOfMercsInSectorsCompletedMilitiaTraining[ iCounter ]; if( pSoldier->bActive ) { @@ -1532,7 +1532,7 @@ void BuildListOfUnpaidTrainableSectors( UINT8 ubMilitiaType ) // selected? if( ( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) || ( iCounter == bSelectedAssignChar ) ) { - pSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // HEADROCK HAM 3.6: Two different conditions depending on the type of militia being trained. if( ubMilitiaType == TOWN_MILITIA ) @@ -1552,7 +1552,7 @@ void BuildListOfUnpaidTrainableSectors( UINT8 ubMilitiaType ) else { // handle for tactical - pSoldier = &Menptr[ gusUIFullTargetID ]; + pSoldier = gusUIFullTargetID; iCounter = 0; if (ubMilitiaType == TOWN_MILITIA) diff --git a/Strategic/Town Militia.h b/Strategic/Town Militia.h index e2ec865f..b7993333 100644 --- a/Strategic/Town Militia.h +++ b/Strategic/Town Militia.h @@ -30,9 +30,9 @@ INT8 SoldierClassToMilitiaRank(UINT8 ubSoldierClass); INT8 MilitiaRankToSoldierClass(UINT8 ubRank); // these add, promote, and remove militias of a certain rank -void StrategicAddMilitiaToSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT8 ubHowMany); -void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRank, UINT8 ubHowMany); -void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT8 ubHowMany); +void StrategicAddMilitiaToSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT16 ubHowMany); +void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRank, UINT16 ubHowMany); +void StrategicRemoveMilitiaFromSector(INT16 sMapX, INT16 sMapY, UINT8 ubRank, UINT16 ubHowMany); void StrategicRemoveAllStaticMilitiaFromSector( INT16 sMapX, INT16 sMapY, UINT8 ubRank ); @@ -49,9 +49,9 @@ UINT8 FindBestMilitiaTrainingLeadershipInSector ( INT16 sMapX, INT16 sMapY, INT8 // call this if the player attacks his own militia void HandleMilitiaDefections(INT16 sMapX, INT16 sMapY); -UINT8 MilitiaInSectorOfRank(INT16 sMapX, INT16 sMapY, UINT8 ubRank); -UINT8 MilitiaInSectorOfRankStationary( INT16 sMapX, INT16 sMapY, UINT8 ubRank ); -UINT8 MilitiaInSectorOfRankInGroups( INT16 sMapX, INT16 sMapY, UINT8 ubRank ); +UINT16 MilitiaInSectorOfRank(INT16 sMapX, INT16 sMapY, UINT8 ubRank); +UINT16 MilitiaInSectorOfRankStationary( INT16 sMapX, INT16 sMapY, UINT8 ubRank ); +UINT16 MilitiaInSectorOfRankInGroups( INT16 sMapX, INT16 sMapY, UINT8 ubRank ); // Returns TRUE if sector is under player control, has no enemies in it, and isn't currently in combat mode BOOLEAN SectorOursAndPeaceful( INT16 sMapX, INT16 sMapY, INT8 bMapZ ); @@ -135,4 +135,4 @@ FLOAT GetIntel(); void AddRaidPersonnel( INT32 aBloodcats, INT32 aZombie, INT32 aBandits ); void GetRaidPersonnel( INT32& arBloodcats, INT32& arZombie, INT32& arBandits ); -#endif +#endif diff --git a/Strategic/UndergroundInit.cpp b/Strategic/UndergroundInit.cpp index d6b8c410..f2feac82 100644 --- a/Strategic/UndergroundInit.cpp +++ b/Strategic/UndergroundInit.cpp @@ -19,7 +19,7 @@ extern "C" { #include "connect.h" // externals -UNDERGROUND_SECTORINFO* NewUndergroundNode( UINT8 ubSectorX, UINT8 ubSectorY, UINT8 ubSectorZ ); +extern UNDERGROUND_SECTORINFO* NewUndergroundNode( UINT8 ubSectorX, UINT8 ubSectorY, UINT8 ubSectorZ ); extern BOOLEAN gfGettingNameFromSaveLoadScreen; // helper functions @@ -49,6 +49,21 @@ bool LuaTable::getValue(const char * index, UINT8& value) return false; } +template <> +bool LuaTable::getValue(const char* index, UINT16& value) +{ + int dummy; + + bool b = getValue(index, dummy); + if (b) + { + value = static_cast(dummy); + return true; + } + + return false; +} + // Calls into Lua script to let build underground sector list. BOOLEAN LuaUnderground::InitializeSectorList() { diff --git a/Strategic/mapscreen.cpp b/Strategic/mapscreen.cpp index 054ce60a..079343b0 100644 --- a/Strategic/mapscreen.cpp +++ b/Strategic/mapscreen.cpp @@ -126,6 +126,8 @@ #include "LuaInitNPCs.h" #endif +std::vector gSelectedSoldiers{}; + // Flugente: militia movement // plot @@ -492,7 +494,7 @@ BOOLEAN gfMapPanelWasRedrawn = FALSE; UINT8 gubMAP_HandInvDispText[ NUM_INV_SLOTS ]; // currently selected character's list index -INT8 bSelectedInfoChar = -1; +INT16 bSelectedInfoChar = -1; // map sort button images INT32 giMapSortButtonImage[ MAX_SORT_METHODS ] = { -1, -1, -1, -1, -1, -1 }; @@ -785,6 +787,7 @@ void InterruptTimeForMenus( void ); void CreateAttributeBox( void ); void CreateVehicleBox( void ); void CreateContractBox( SOLDIERTYPE *pCharacter ); +void CreateContractBoxMultiSelect(INT32 DailySalaries, INT32 WeeklySalaries, INT32 BiweeklySalaries); void CreateAssignmentsBox( void ); void CreateTrainingBox( void ); void CreateMercRemoveAssignBox( void ); @@ -800,7 +803,7 @@ void HandleShadingOfLinesForContractMenu( void ); void UpdateStatusOfMapSortButtons( void ); void DisplayIconsForMercsAsleep( void ); -BOOLEAN CharacterIsInLoadedSectorAndWantsToMoveInventoryButIsNotAllowed( INT8 bCharId ); +BOOLEAN CharacterIsInLoadedSectorAndWantsToMoveInventoryButIsNotAllowed( INT16 bCharId ); void HandlePostAutoresolveMessages(); @@ -916,14 +919,13 @@ INT32 GetIndexForthis( SOLDIERTYPE *pSoldier ); void CheckForAndRenderNewMailOverlay(); -BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ); void CheckForInventoryModeCancellation(); void ChangeMapScreenMaskCursor( UINT16 usCursor ); void CancelOrShortenPlottedPath( void ); // HEADROCK HAM B2.8: Added argument to enable multi-selecting entire squads -BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickAssignments ); +BOOLEAN HandleCtrlOrShiftInTeamPanel( INT16 bCharNumber, BOOLEAN fFromRightClickAssignments ); INT32 GetContractExpiryTime( SOLDIERTYPE *pSoldier ); @@ -939,7 +941,7 @@ BOOLEAN AnyMovableCharsInOrBetweenThisSector( INT16 sSectorX, INT16 sSectorY, IN void SwapCharactersInList( INT32 iCharA, INT32 iCharB ); -BOOLEAN CanChangeDestinationForCharSlot( INT8 bCharNumber, BOOLEAN fShowErrorMessage ); +BOOLEAN CanChangeDestinationForCharSlot( INT16 bCharNumber, BOOLEAN fShowErrorMessage ); BOOLEAN RequestGiveSkyriderNewDestination( void ); void ExplainWhySkyriderCantFly( void ); @@ -1895,16 +1897,14 @@ BOOLEAN InitializeInvPanelCoordsRobot() } // the tries to select a mapscreen character by his soldier ID -BOOLEAN SetInfoChar( UINT8 ubID ) +BOOLEAN SetInfoChar( SoldierID ubID ) { - INT8 bCounter; - - for ( bCounter = 0; bCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; bCounter++) + for (INT16 bCounter = 0; bCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; bCounter++) { // skip invalid characters if ( gCharactersList[ bCounter ].fValid == TRUE ) { - if ( gCharactersList[ bCounter ].usSolID == (UINT16)ubID ) + if ( gCharactersList[ bCounter ].usSolID == ubID ) { ChangeSelectedInfoChar( bCounter, TRUE ); return( TRUE ); @@ -2218,7 +2218,7 @@ void GlowTrashCan( void ) void DrawFace( INT16 sCharNumber ) { SOLDIERTYPE *pSoldier = NULL; - static INT16 sOldId = -1; + static SoldierID sOldId = NOBODY; // draws the face of the currently selected merc, being displayed int he upper left hand corner @@ -2308,21 +2308,21 @@ void RenderIconsForUpperLeftCornerPiece( INT8 bCharNumber ) GetVideoObject(&hHandle, guiULICONS); // if merc is an AIM merc - if( Menptr[ gCharactersList[ bCharNumber ].usSolID ].ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( gCharactersList[ bCharNumber ].usSolID->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) { // finite contract length icon BltVideoObject( guiSAVEBUFFER, hHandle, 0, x, y, VO_BLT_SRCTRANSPARENCY, NULL ); } // if merc has life insurance - if( Menptr[ gCharactersList[ bCharNumber ].usSolID ].usLifeInsurance > 0 ) + if( gCharactersList[ bCharNumber ].usSolID->usLifeInsurance > 0 ) { // draw life insurance icon BltVideoObject( guiSAVEBUFFER, hHandle, 2, x, y + spacing, VO_BLT_SRCTRANSPARENCY, NULL ); } // if merc has a medical deposit - if( Menptr[ gCharactersList[ bCharNumber ].usSolID ].usMedicalDeposit > 0 ) + if( gCharactersList[ bCharNumber ].usSolID->usMedicalDeposit > 0 ) { // draw medical deposit icon BltVideoObject( guiSAVEBUFFER, hHandle, 1, x, y + ( 2 * spacing), VO_BLT_SRCTRANSPARENCY, NULL ); @@ -2336,11 +2336,11 @@ void DrawPay(INT16 sCharNumber) INT32 uiSalary; CHAR16 sString[7]; INT16 usX, usY; - INT16 usMercProfileID; + UINT8 usMercProfileID; // get merc id - usMercProfileID = MercPtrs[ gCharactersList[ sCharNumber ].usSolID ]->ubProfile; + usMercProfileID = gCharactersList[ sCharNumber ].usSolID->ubProfile; // grab salary uiSalary=( ( UINT32 ) gMercProfiles[ usMercProfileID ].sSalary ); @@ -2366,7 +2366,7 @@ void DrawPay(INT16 sCharNumber) void DrawCharBars( void ) { - UINT16 usSoldierID; + SoldierID usSoldierID; SOLDIERTYPE *pSoldier; // will draw the heath, morale and breath bars for a character being displayed in the upper left hand corner @@ -2381,11 +2381,11 @@ void DrawCharBars( void ) // valid character if( bSelectedInfoChar != -1 ) { - usSoldierID=gCharactersList[ bSelectedInfoChar ].usSolID; + usSoldierID = gCharactersList[ bSelectedInfoChar ].usSolID; } else { - usSoldierID=gCharactersList[GetSelectedDestChar()].usSolID; + usSoldierID = gCharactersList[GetSelectedDestChar()].usSolID; } // grab soldier's id number @@ -2438,7 +2438,7 @@ void DrawCharStats( INT16 sCharNum ) //HVOBJECT hCrossHandle; SOLDIERTYPE *pSoldier = NULL; - pSoldier = &Menptr[gCharactersList[sCharNum].usSolID]; + pSoldier = gCharactersList[sCharNum].usSolID; // set up font SetFont(CHAR_FONT); @@ -2818,7 +2818,7 @@ void DrawCharHealth( INT16 sCharNum ) const auto width = UI_CHARPANEL.Text.CurrentHitpoints.width; const auto height = UI_CHARPANEL.Text.CurrentHitpoints.height; - pSoldier = &Menptr[gCharactersList[sCharNum].usSolID]; + pSoldier = gCharactersList[sCharNum].usSolID; if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) { @@ -2930,7 +2930,7 @@ void DrawCharacterInfo(INT16 sCharNumber) return; } - pSoldier = MercPtrs[ gCharactersList[sCharNumber].usSolID ]; + pSoldier = gCharactersList[sCharNumber].usSolID; if( pSoldier->ubProfile == NO_PROFILE ) { @@ -3243,9 +3243,9 @@ void DrawCharacterInfo(INT16 sCharNumber) } // medical deposit - if( gMercProfiles[ Menptr[ gCharactersList[ sCharNumber ].usSolID ].ubProfile ].sMedicalDepositAmount > 0 ) + if( gMercProfiles[ gCharactersList[ sCharNumber ].usSolID->ubProfile ].sMedicalDepositAmount > 0 ) { - swprintf(sString, L"%d", gMercProfiles[ Menptr[ gCharactersList[ sCharNumber ].usSolID ].ubProfile ].sMedicalDepositAmount ); + swprintf(sString, L"%d", gMercProfiles[ gCharactersList[ sCharNumber ].usSolID->ubProfile ].sMedicalDepositAmount ); // insert commas and dollar sign InsertCommasForDollarFigure( sString ); @@ -3274,7 +3274,7 @@ void DrawCharacterInfo(INT16 sCharNumber) { if ( pSoldier->stats.bLife != 0 ) { - GetMoraleString( MercPtrs[gCharactersList[sCharNumber].usSolID], sString ); + GetMoraleString( gCharactersList[sCharNumber].usSolID, sString ); } else { @@ -3319,7 +3319,7 @@ BOOLEAN CharacterIsInTransitAndHasItemPickedUp( INT8 bCharacterNumber ) } // character in transit? - if( Menptr[ gCharactersList[ bCharacterNumber ].usSolID ].bAssignment != IN_TRANSIT ) + if( gCharactersList[ bCharacterNumber ].usSolID->bAssignment != IN_TRANSIT ) { // nope return( FALSE ); @@ -3349,7 +3349,7 @@ void DisplayCharacterInfo( void ) // This section draws STRATEGIC info pages. Another section is in Interface Panels.cpp and draws TACTICAL info pages. // The feature is toggled by Options-Menu switch, and its color is determined in the INI files. { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[bSelectedInfoChar].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[bSelectedInfoChar].usSolID; UINT8 *pDestBuf; UINT32 uiDestPitchBYTES = 0; @@ -3575,39 +3575,41 @@ INT32 GetPathTravelTimeDuringPlotting( PathStPtr pPath ) else { // plotting for a character... - if( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bAssignment == VEHICLE ) + SOLDIERTYPE* pSoldier = gCharactersList[GetSelectedDestChar()].usSolID; + + if( pSoldier->bAssignment == VEHICLE ) { - ubGroupId = pVehicleList[ Menptr[gCharactersList[GetSelectedDestChar()].usSolID].iVehicleId ].ubMovementGroup; + ubGroupId = pVehicleList[ pSoldier->iVehicleId ].ubMovementGroup; pGroup = GetGroup( ubGroupId ); if( pGroup == NULL ) { - SetUpMvtGroupForVehicle( &( Menptr[gCharactersList[GetSelectedDestChar()].usSolID] ) ); + SetUpMvtGroupForVehicle( pSoldier ); // get vehicle id - ubGroupId = pVehicleList[ Menptr[gCharactersList[GetSelectedDestChar()].usSolID].iVehicleId ].ubMovementGroup; + ubGroupId = pVehicleList[ pSoldier->iVehicleId ].ubMovementGroup; pGroup = GetGroup( ubGroupId ); AssertNotNIL(pGroup); } } - else if( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].flags.uiStatusFlags & SOLDIER_VEHICLE ) + else if( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { - ubGroupId = pVehicleList[ Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bVehicleID ].ubMovementGroup; + ubGroupId = pVehicleList[ pSoldier->bVehicleID ].ubMovementGroup; pGroup = GetGroup( ubGroupId ); if( pGroup == NULL ) { - SetUpMvtGroupForVehicle( &( Menptr[gCharactersList[GetSelectedDestChar()].usSolID] ) ); + SetUpMvtGroupForVehicle( pSoldier ); // get vehicle id - ubGroupId = pVehicleList[ Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bVehicleID ].ubMovementGroup; + ubGroupId = pVehicleList[ pSoldier->bVehicleID ].ubMovementGroup; pGroup = GetGroup( ubGroupId ); AssertNotNIL(pGroup); } } else { - ubGroupId = Menptr[gCharactersList[GetSelectedDestChar()].usSolID].ubGroupID; + ubGroupId = pSoldier->ubGroupID; pGroup = GetGroup( ( UINT8 )( ubGroupId ) ); AssertNotNIL(pGroup); } @@ -3976,7 +3978,7 @@ void AddCharacter( SOLDIERTYPE *pCharacter ) } // copy over soldier id value - gCharactersList[usCount].usSolID = ( UINT16 )pCharacter->ubID; + gCharactersList[usCount].usSolID = pCharacter->ubID; // valid character gCharactersList[usCount].fValid = TRUE; @@ -4054,6 +4056,7 @@ void LoadCharacters( void ) void DisplayCharacterList() { + SOLDIERTYPE *pSoldier; INT16 sCount=0; UINT8 ubForegroundColor = 0; @@ -4079,12 +4082,14 @@ void DisplayCharacterList() // skip invalid characters if ( gCharactersList[( sCount + FIRSTmercTOdisplay )].fValid == TRUE ) { + pSoldier = gCharactersList[(sCount + FIRSTmercTOdisplay)].usSolID; + if( sCount == ( INT16 ) giHighLine ) { ubForegroundColor = FONT_WHITE; } // check to see if character is still alive - else if( Menptr[gCharactersList[(sCount + FIRSTmercTOdisplay)].usSolID].stats.bLife == 0 ) + else if(pSoldier->stats.bLife == 0 ) { ubForegroundColor = FONT_METALGRAY; } @@ -4093,13 +4098,11 @@ void DisplayCharacterList() ubForegroundColor = FONT_LTBLUE; } // in current sector? - else if( ( Menptr[gCharactersList[( sCount + FIRSTmercTOdisplay )].usSolID].sSectorX == sSelMapX ) && - ( Menptr[gCharactersList[( sCount + FIRSTmercTOdisplay )].usSolID].sSectorY == sSelMapY ) && - ( Menptr[gCharactersList[( sCount + FIRSTmercTOdisplay )].usSolID].bSectorZ == iCurrentMapSectorZ ) ) + else if ( pSoldier->sSectorX == sSelMapX && pSoldier->sSectorY == sSelMapY && pSoldier->bSectorZ == iCurrentMapSectorZ ) { // mobile ? - if( ( Menptr[gCharactersList[( sCount + FIRSTmercTOdisplay )].usSolID].bAssignment < ON_DUTY ) || - ( Menptr[gCharactersList[( sCount + FIRSTmercTOdisplay )].usSolID].bAssignment == VEHICLE ) ) + if( ( pSoldier->bAssignment < ON_DUTY ) || + ( pSoldier->bAssignment == VEHICLE ) ) ubForegroundColor = FONT_YELLOW; else ubForegroundColor = FONT_MAP_DKYELLOW; @@ -4112,7 +4115,7 @@ void DisplayCharacterList() SetFontForeground( ubForegroundColor ); - DrawName( Menptr[gCharactersList[( sCount + FIRSTmercTOdisplay )].usSolID].name, sCount, MAP_SCREEN_FONT); + DrawName( pSoldier->name, sCount, MAP_SCREEN_FONT); DrawLocation( sCount + FIRSTmercTOdisplay , sCount, MAP_SCREEN_FONT); DrawDestination( sCount + FIRSTmercTOdisplay, sCount, MAP_SCREEN_FONT); DrawAssignment( sCount + FIRSTmercTOdisplay, sCount, MAP_SCREEN_FONT); @@ -5326,21 +5329,28 @@ UINT32 MapScreenHandle(void) CreateMouseRegionForPauseOfClock( INTERFACE_CLOCK_X, INTERFACE_CLOCK_Y ); // WANNE: The number of merc we can display in the list, depends on the resolution - if (iResolution >= _640x480 && iResolution < _800x600) + if (isWidescreenUI()) { - maxNumberOfMercVisibleInStrategyList = 22; + if (giMAXIMUM_NUMBER_OF_PLAYER_SLOTS <= 57) + maxNumberOfMercVisibleInStrategyList = giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; + else + maxNumberOfMercVisibleInStrategyList = 57; } - else if (iResolution < _1024x768) - { - maxNumberOfMercVisibleInStrategyList = 34; - } - else + else if (iResolution >= _1024x768) { if (giMAXIMUM_NUMBER_OF_PLAYER_SLOTS <= 51) maxNumberOfMercVisibleInStrategyList = giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; else maxNumberOfMercVisibleInStrategyList = 51; } + else if ( iResolution >= _800x600 && iResolution < _1024x768) + { + maxNumberOfMercVisibleInStrategyList = 34; + } + else + { + maxNumberOfMercVisibleInStrategyList = 22; + } // create mouse regions CreateMouseRegionsForTeamList( ); @@ -5416,7 +5426,7 @@ UINT32 MapScreenHandle(void) // make him continue talking - ContinueDialogue( MercPtrs[ gpCurrentTalkingFace->ubSoldierID ], FALSE ); + ContinueDialogue( gpCurrentTalkingFace->ubSoldierID, FALSE ); // reset diabled flag //gpCurrentTalkingFace->fDisabled = FALSE; @@ -6266,17 +6276,17 @@ void DrawAssignment(INT16 sCharNumber, INT16 sRowIndex, INT32 iFont) INT16 usX=0; INT16 usY=0; CHAR16 sString[32]; + SOLDIERTYPE* pSoldier = gCharactersList[sCharNumber].usSolID; - GetMapscreenMercAssignmentString( MercPtrs[ gCharactersList[ sCharNumber ].usSolID ], sString ); + GetMapscreenMercAssignmentString( pSoldier, sString ); FindFontCenterCoordinates((short)UI_CHARLIST.xAssignment + 1, (short)(UI_CHARLIST.y + (sRowIndex*Y_SIZE)), (short)UI_CHARLIST.widthAssignment, (short)Y_SIZE, sString, (long)iFont, &usX, &usY); - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ sCharNumber ].usSolID ]; if( fFlashAssignDone == TRUE ) { - if( Menptr[gCharactersList[sCharNumber].usSolID].flags.fDoneAssignmentAndNothingToDoFlag ) + if( pSoldier->flags.fDoneAssignmentAndNothingToDoFlag ) { SetFontForeground( FONT_RED ); } @@ -6313,8 +6323,7 @@ void DrawAssignment(INT16 sCharNumber, INT16 sRowIndex, INT32 iFont) ubProgress = SectorInfo[SECTOR(sMapX, sMapY)].ubMilitiaTrainingPercentDone; usMaxProgress = 100; } - else if ( pSoldier->bAssignment == TRAIN_SELF || - pSoldier->bAssignment == TRAIN_BY_OTHER ) + else if ( pSoldier->bAssignment == TRAIN_SELF || pSoldier->bAssignment == TRAIN_BY_OTHER ) { switch (pSoldier->bTrainStat) { @@ -6378,7 +6387,7 @@ void DrawLocation(INT16 sCharNumber, INT16 sRowIndex, INT32 iFont) INT16 usY=0; CHAR16 sString[32]; - GetMapscreenMercLocationString( MercPtrs[ gCharactersList[ sCharNumber ].usSolID ], sString ); + GetMapscreenMercLocationString( gCharactersList[ sCharNumber ].usSolID, sString ); FindFontCenterCoordinates((short)UI_CHARLIST.xLocation + 1, (short)(UI_CHARLIST.y + (sRowIndex*Y_SIZE)), (short)UI_CHARLIST.widthLocation, (short)Y_SIZE, sString, (long)iFont, &usX, &usY); @@ -6393,7 +6402,7 @@ void DrawDestination(INT16 sCharNumber, INT16 sRowIndex, INT32 iFont) INT16 usY=0; CHAR16 sString[32]; - GetMapscreenMercDestinationString( MercPtrs[ gCharactersList[ sCharNumber ].usSolID ], sString ); + GetMapscreenMercDestinationString( gCharactersList[ sCharNumber ].usSolID, sString ); if ( wcslen( sString ) == 0 ) { @@ -6413,7 +6422,7 @@ void DrawTimeRemaining( INT16 sCharNumber, INT32 iFont, UINT8 ubFontColor ) CHAR16 sString[32]; // marke strogg more mercs MUST override pointer into array by number of skipped mercs - GetMapscreenMercDepartureString( MercPtrs[ gCharactersList[ sCharNumber + FIRSTmercTOdisplay ].usSolID ], sString, &ubFontColor ); + GetMapscreenMercDepartureString( gCharactersList[ sCharNumber + FIRSTmercTOdisplay ].usSolID, sString, &ubFontColor ); // if merc is highlighted, override the color decided above with bright white if( sCharNumber == ( INT16 ) giHighLine ) @@ -6632,10 +6641,10 @@ UINT32 HandleMapUI( ) break; // check if last sector in character's path is same as where mouse is - if( GetLastSectorIdInCharactersPath( &Menptr[gCharactersList[GetSelectedDestChar()].usSolID] ) != CALCULATE_STRATEGIC_INDEX( sMapX, sMapY ) ) + if( GetLastSectorIdInCharactersPath( gCharactersList[GetSelectedDestChar()].usSolID ) != CALCULATE_STRATEGIC_INDEX( sMapX, sMapY ) ) { - sX = ( GetLastSectorIdInCharactersPath( &Menptr[gCharactersList[GetSelectedDestChar()].usSolID] ) % MAP_WORLD_X ); - sY = ( GetLastSectorIdInCharactersPath( &Menptr[gCharactersList[GetSelectedDestChar()].usSolID] ) / MAP_WORLD_X ); + sX = ( GetLastSectorIdInCharactersPath( gCharactersList[GetSelectedDestChar()].usSolID ) % MAP_WORLD_X ); + sY = ( GetLastSectorIdInCharactersPath( gCharactersList[GetSelectedDestChar()].usSolID ) / MAP_WORLD_X ); GetCursorPos(&MousePos); ScreenToClient(ghWindow, &MousePos); // In window coords! RestoreBackgroundForMapGrid( sX, sY ); @@ -6650,10 +6659,10 @@ UINT32 HandleMapUI( ) // Can we get go there? (NULL temp character path) if ( GetLengthOfPath( pTempCharacterPath ) > 0 ) { - PlotPathForCharacter( &Menptr[gCharactersList[GetSelectedDestChar()].usSolID], sMapX, sMapY, FALSE ); + PlotPathForCharacter( gCharactersList[GetSelectedDestChar()].usSolID, sMapX, sMapY, FALSE ); // copy the path to every other selected character - CopyPathToAllSelectedCharacters( GetSoldierMercPathPtr( MercPtrs[ gCharactersList[GetSelectedDestChar()].usSolID ] ) ); + CopyPathToAllSelectedCharacters( GetSoldierMercPathPtr( gCharactersList[GetSelectedDestChar()].usSolID ) ); StartConfirmMapMoveMode( sMapY ); fMapPanelDirty = TRUE; @@ -6678,9 +6687,9 @@ UINT32 HandleMapUI( ) case MAP_EVENT_SELECT_SECTOR: // will select the sector the selected merc is in - sMapX=Menptr[gCharactersList[bSelectedInfoChar].usSolID].sSectorX; - sMapY=Menptr[gCharactersList[bSelectedInfoChar].usSolID].sSectorY; - bMapZ=Menptr[gCharactersList[bSelectedInfoChar].usSolID].bSectorZ; + sMapX=gCharactersList[bSelectedInfoChar].usSolID.sSectorX; + sMapY=gCharactersList[bSelectedInfoChar].usSolID.sSectorY; + bMapZ=gCharactersList[bSelectedInfoChar].usSolID.bSectorZ; if( ( sSelMapX != sMapX || sSelMapY != sMapY || iCurrentMapSectorZ != bMapZ ) && ( gTacticalStatus.fDidGameJustStart == FALSE ) && ( gfPreBattleInterfaceActive == FALSE ) ) @@ -7333,7 +7342,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if ( bSelectedInfoChar != -1 ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; if ( pSoldier->inv[ HANDPOS ].exists() == true ) { pSoldier->inv[ HANDPOS ][0]->data.objectStatus = 2; @@ -7344,7 +7353,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if ( bSelectedInfoChar != -1 ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; if ( pSoldier->inv[ HANDPOS ].exists() == true ) { pSoldier->inv[ HANDPOS ].usItem = GUN_BARREL_EXTENDER; @@ -7386,7 +7395,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) if ( bSelectedInfoChar != -1 ) { // ALT-F10: force selected character asleep (ignores breathmax) - PutMercInAsleepState( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ] ); + PutMercInAsleepState( gCharactersList[ bSelectedInfoChar ].usSolID ); } } #endif @@ -7432,7 +7441,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if( bSelectedInfoChar != -1 ) { - TownMilitiaTrainingCompleted( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ], sSelMapX, sSelMapY ); + TownMilitiaTrainingCompleted( gCharactersList[ bSelectedInfoChar ].usSolID, sSelMapX, sSelMapY ); } } #endif @@ -7500,7 +7509,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if( bSelectedInfoChar != -1 ) { - StatChange( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ], EXPERAMT, 1000, FROM_SUCCESS ); + StatChange( gCharactersList[ bSelectedInfoChar ].usSolID, EXPERAMT, 1000, FROM_SUCCESS ); } } #endif @@ -7631,9 +7640,9 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if( gCharactersList[ giHighLine ].fValid == TRUE ) { - bSelectedAssignChar = ( INT8 )giHighLine; + bSelectedAssignChar = ( INT16 )giHighLine; RebuildAssignmentsBox( ); - ChangeSelectedInfoChar( ( INT8 ) giHighLine, FALSE ); + ChangeSelectedInfoChar( giHighLine, FALSE ); fShowAssignmentMenu = TRUE; } } @@ -7641,7 +7650,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) { - bSelectedAssignChar = ( INT8 )bSelectedInfoChar; + bSelectedAssignChar = bSelectedInfoChar; RebuildAssignmentsBox( ); fShowAssignmentMenu = TRUE; } @@ -7773,7 +7782,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) case 'E': if(bSelectedInfoChar != -1) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; pSoldier->bInSector = FALSE; //CHRISL: Try to update InSector value so we don't have to "activate" a sector @@ -7900,7 +7909,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) // CTRL-F: Refuel vehicle if( ( fCtrl ) && ( bSelectedInfoChar != -1 ) ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { @@ -7972,9 +7981,9 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) break; case 'H': // swap primary & secondary hand - if ( bSelectedInfoChar != -1 && fShowInventoryFlag && !AM_A_ROBOT( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ] )) + if ( bSelectedInfoChar != -1 && fShowInventoryFlag && !AM_A_ROBOT( gCharactersList[ bSelectedInfoChar ].usSolID )) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; UINT16 usOldHandItem = pSoldier->inv[HANDPOS].usItem; SwapHandItems( pSoldier ); @@ -8010,7 +8019,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) //CHRISL: Swap gunsling if ( bSelectedInfoChar != -1 && fShowInventoryFlag && UsingNewInventorySystem() == true ) { - SOLDIERTYPE *pSoldier = MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]; + SOLDIERTYPE *pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if (fAlt) // switch to knife, or from knife to gun pSoldier->SwitchWeapons(TRUE); @@ -8094,7 +8103,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { static UINT16 gQuoteNum = 0; // Get Soldier - TacticalCharacterDialogue( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ], gQuoteNum ); + TacticalCharacterDialogue( gCharactersList[ bSelectedInfoChar ].usSolID, gQuoteNum ); gQuoteNum++; } else if( fCtrl ) @@ -8103,7 +8112,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) // Get Soldier if ( giHighLine != -1 ) { - TacticalCharacterDialogue( MercPtrs[ gCharactersList[ giHighLine ].usSolID ], gQuoteNum ); + TacticalCharacterDialogue( gCharactersList[ giHighLine ].usSolID, gQuoteNum ); gQuoteNum++; } } @@ -8112,7 +8121,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) case 'N': if ( bSelectedInfoChar != -1 && fShowInventoryFlag ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; SwapGoggles(pSoldier); } break; @@ -8152,7 +8161,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) // ALT-P: Make the selected character a POW! if( ( fAlt ) && ( bSelectedInfoChar != -1 ) ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; EnemyCapturesPlayerSoldier( pSoldier ); @@ -8287,7 +8296,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { INT16 sDeltaX, sDeltaY; INT16 sPrevX = 0, sPrevY = 0; - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[GetSelectedDestChar()].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[GetSelectedDestChar()].usSolID; // can't teleport to where we already are if ( ( sMapX == pSoldier->sSectorX ) && ( sMapY == pSoldier->sSectorY ) ) @@ -8451,7 +8460,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if(bSelectedInfoChar != -1) { - SOLDIERTYPE *pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + SOLDIERTYPE *pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; //CHRISL: Try to update InSector value so we don't have to "activate" a sector if (pSoldier->sSectorX == sSelMapX && pSoldier->sSectorY == sSelMapY && pSoldier->bSectorZ == iCurrentMapSectorZ && !pSoldier->flags.fBetweenSectors) @@ -9452,7 +9461,7 @@ void CreateDestroyMapInvButton() if (bSelectedInfoChar != -1 && gCharactersList[bSelectedInfoChar].fValid) { - SOLDIERTYPE* pSoldier = MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]; + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if (!(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT(pSoldier)) { InitInvSlotInterface(gMapScreenInvPocketXY, &gSCamoXY, MAPInvMoveCallback, MAPInvClickCallback, MAPInvMoveCamoCallback, MAPInvClickCamoCallback, FALSE); @@ -9912,7 +9921,7 @@ void HandleCursorOverRifleAmmo( ) if ( gfCheckForMouseOverItem ) { - if ( HandleCompatibleAmmoUI( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ], (INT8)gbCheckForMouseOverItemPos, TRUE ) ) + if ( HandleCompatibleAmmoUI( gCharactersList[ bSelectedInfoChar ].usSolID, (INT8)gbCheckForMouseOverItemPos, TRUE ) ) { if ( ( GetJA2Clock( ) - guiMouseOverItemTime ) > 100 ) { @@ -9936,7 +9945,7 @@ void MAPInvClickCamoCallback( MOUSE_REGION *pRegion, INT32 iReason ) SOLDIERTYPE* pSoldier = NULL; if( (bSelectedInfoChar != -1) && (gCharactersList[bSelectedInfoChar].fValid == TRUE) ) { - pSoldier = MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]; + pSoldier = gCharactersList[bSelectedInfoChar].usSolID; } if ( gpItemPointer && pSoldier ) @@ -10545,7 +10554,7 @@ void MAPBeginItemPointer( SOLDIERTYPE *pSoldier, UINT8 ubHandPos ) if ( _KeyDown(CTRL) ) { // if in battle inform player they will have to do this in tactical - if( !CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) ) + if( !CanPlayerUseSectorInventory( gCharactersList[ bSelectedInfoChar ].usSolID ) ) { // return item to original slot PlaceObject( pSoldier, ubHandPos, &gItemPointer ); @@ -10611,7 +10620,7 @@ void MAPEndItemPointer( ) if ( fShowInventoryFlag && bSelectedInfoChar >= 0 ) { - ReevaluateItemHatches( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ], FALSE ); + ReevaluateItemHatches( gCharactersList[ bSelectedInfoChar ].usSolID, FALSE ); } } } @@ -10634,7 +10643,7 @@ void RenderAttributeStringsForUpperLeftHandCorner( UINT32 uiBufferToRenderTo ) if ( ( bSelectedInfoChar != - 1) && ( gCharactersList[ bSelectedInfoChar ].fValid ) ) { - pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; } SetFont( CHAR_FONT ); @@ -10753,7 +10762,8 @@ void SetUpCursorForStrategicMap( void ) else // yes - by character { // set cursor based on foot or vehicle - if( ( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bAssignment != VEHICLE ) && !( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + SOLDIERTYPE* pSoldier = gCharactersList[GetSelectedDestChar()].usSolID; + if( ( pSoldier->bAssignment != VEHICLE ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { ChangeMapScreenMaskCursor( CURSOR_STRATEGIC_FOOT ); } @@ -10946,7 +10956,7 @@ void CreateMouseRegionsForTeamList( void ) // will create mouse regions for assignments, path plotting, character info selection // the info region...is the background for the list itself // OJW - MP - int max_rows = giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; + int max_rows = maxNumberOfMercVisibleInStrategyList; if (is_networked) max_rows = 7; // check this value is correct / unhardcode it @@ -11310,14 +11320,14 @@ void TeamListInfoRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if( gCharactersList[ iValue + FIRSTmercTOdisplay].fValid == TRUE && ValidSelectableCharForNextOrPrev(iValue + FIRSTmercTOdisplay)) { // HEADROCK HAM B2.8: Added argument for multi-select entire squads - if ( HandleCtrlOrShiftInTeamPanel( ( INT8 ) iValue + FIRSTmercTOdisplay, FALSE )) + if ( HandleCtrlOrShiftInTeamPanel( iValue + FIRSTmercTOdisplay, FALSE )) { return; } - ChangeSelectedInfoChar( ( INT8 ) iValue+ FIRSTmercTOdisplay, TRUE ); + ChangeSelectedInfoChar( iValue+ FIRSTmercTOdisplay, TRUE ); - pSoldier = &Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID ]; + pSoldier = gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID; // highlight giDestHighLine = -1; @@ -11365,10 +11375,10 @@ void TeamListInfoRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if( gCharactersList[ iValue + FIRSTmercTOdisplay].fValid == TRUE ) { - pSoldier = &Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID ]; + pSoldier = gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID; // select this character - ChangeSelectedInfoChar( ( INT8 ) iValue+ FIRSTmercTOdisplay, TRUE ); + ChangeSelectedInfoChar( iValue+ FIRSTmercTOdisplay, TRUE ); if (!isWidescreenUI()) { @@ -11465,15 +11475,15 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if( gCharactersList[ iValue + FIRSTmercTOdisplay].fValid == TRUE && ValidSelectableCharForNextOrPrev(iValue + FIRSTmercTOdisplay)) { // HEADROCK HAM B2.8: Added argument for multi-select entire squads - if ( HandleCtrlOrShiftInTeamPanel( ( INT8 ) iValue + FIRSTmercTOdisplay, FALSE )) + if ( HandleCtrlOrShiftInTeamPanel( iValue + FIRSTmercTOdisplay, FALSE )) { return; } // reset list if the clicked character isn't also selected - ChangeSelectedInfoChar( ( INT8 ) iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( ( INT8 ) iValue + FIRSTmercTOdisplay) == FALSE ) ); + ChangeSelectedInfoChar( iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( iValue + FIRSTmercTOdisplay) == FALSE ) ); - pSoldier = &Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID ]; + pSoldier = gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID; // if alive (dead guys keep going, use remove menu instead), // and it's between sectors and it can be reassigned (non-vehicles) @@ -11484,7 +11494,7 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) return; } - bSelectedAssignChar = ( INT8 ) iValue + FIRSTmercTOdisplay; + bSelectedAssignChar = ( INT16 ) iValue + FIRSTmercTOdisplay; RebuildAssignmentsBox( ); // reset dest character @@ -11535,7 +11545,7 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if (iReason & MSYS_CALLBACK_REASON_RBUTTON_UP) { // HEADROCK HAM B2.8: Added argument for multi-select entire squads - if ( HandleCtrlOrShiftInTeamPanel( ( INT8 ) iValue + FIRSTmercTOdisplay, TRUE )) + if ( HandleCtrlOrShiftInTeamPanel( iValue + FIRSTmercTOdisplay, TRUE )) { return; } @@ -11552,9 +11562,9 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if( gCharactersList[ iValue + FIRSTmercTOdisplay].fValid == TRUE ) { - ChangeSelectedInfoChar( ( INT8 ) iValue + FIRSTmercTOdisplay, TRUE ); + ChangeSelectedInfoChar( iValue + FIRSTmercTOdisplay, TRUE ); - pSoldier = &Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID ]; + pSoldier = gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID; // highlight giDestHighLine = -1; @@ -11584,7 +11594,7 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) // if not already selected if( fSelectedListOfMercsForMapScreen[ iCounter ] == FALSE ) { - pSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pSoldier = gCharactersList[ iCounter ].usSolID; // if on a squad or in a vehicle if ( ( pSoldier->bAssignment < ON_DUTY ) || ( pSoldier->bAssignment == VEHICLE ) ) @@ -11593,7 +11603,7 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if ( AnyMercInSameSquadOrVehicleIsSelected( pSoldier ) ) { // then also select this guy - SetEntryInSelectedCharacterList( ( INT8 ) iCounter ); + SetEntryInSelectedCharacterList( iCounter ); } } } @@ -11640,7 +11650,7 @@ void TeamListAssignmentRegionMvtCallBack(MOUSE_REGION *pRegion, INT32 iReason ) { giHighLine = iValue; - if( !( Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID ].flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + if( !( gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { giAssignHighLine = iValue; } @@ -11671,7 +11681,7 @@ void TeamListAssignmentRegionMvtCallBack(MOUSE_REGION *pRegion, INT32 iReason ) else if( iReason & MSYS_CALLBACK_REASON_GAIN_MOUSE ) { if( ( gCharactersList[ iValue + FIRSTmercTOdisplay ].fValid == TRUE ) && - !( Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID ].flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + !( gCharactersList[ iValue + FIRSTmercTOdisplay].usSolID->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { // play click PlayGlowRegionSound( ); @@ -11704,32 +11714,32 @@ void TeamListDestinationRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) if( gCharactersList[ iValue + FIRSTmercTOdisplay].fValid == TRUE && ValidSelectableCharForNextOrPrev(iValue + FIRSTmercTOdisplay)) { // HEADROCK HAM B2.8: Added argument for multi-select entire squads - if ( HandleCtrlOrShiftInTeamPanel( ( INT8 ) iValue + FIRSTmercTOdisplay , FALSE )) + if ( HandleCtrlOrShiftInTeamPanel( iValue + FIRSTmercTOdisplay , FALSE )) { return; } // reset list if the clicked character isn't also selected - ChangeSelectedInfoChar( ( INT8 ) iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( ( INT8 ) iValue + FIRSTmercTOdisplay ) == FALSE ) ); + ChangeSelectedInfoChar( iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( iValue + FIRSTmercTOdisplay ) == FALSE ) ); // deselect any characters/vehicles that can't accompany the clicked merc - DeselectSelectedListMercsWhoCantMoveWithThisGuy( &( Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID ] ) ); + DeselectSelectedListMercsWhoCantMoveWithThisGuy( gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID ); // select all characters/vehicles that MUST accompany the clicked merc (same squad/vehicle) SelectUnselectedMercsWhoMustMoveWithThisGuy( ); // Find out if this guy and everyone travelling with him is allowed to move strategically // NOTE: errors are reported within... - if ( CanChangeDestinationForCharSlot( ( INT8 ) iValue + FIRSTmercTOdisplay, TRUE ) ) + if ( CanChangeDestinationForCharSlot( ( INT16 ) iValue + FIRSTmercTOdisplay, TRUE ) ) { // turn off sector inventory, turn on show teams filter, etc. MakeMapModesSuitableForDestPlotting( ( INT8 ) iValue + FIRSTmercTOdisplay ); // check if person is in a vehicle - if( Menptr[gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID].bAssignment == VEHICLE ) + if( gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID->bAssignment == VEHICLE ) { // if he's in the helicopter - if( Menptr[gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID].iVehicleId == iHelicopterVehicleId ) + if( gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID->iVehicleId == iHelicopterVehicleId ) { TurnOnAirSpaceMode( ); if( RequestGiveSkyriderNewDestination( ) == FALSE ) @@ -11742,7 +11752,7 @@ void TeamListDestinationRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) // select this character as the one plotting strategic movement - SetSelectedDestChar( (INT8)iValue + FIRSTmercTOdisplay ); + SetSelectedDestChar( (INT16)iValue + FIRSTmercTOdisplay ); // remember the current paths for all selected characters so we can restore them if need be RememberPreviousPathForAllSelectedChars(); @@ -11790,7 +11800,7 @@ void TeamListDestinationRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) MakeMapModesSuitableForDestPlotting( ( INT8 ) iValue + FIRSTmercTOdisplay ); // reset list if the clicked character isn't also selected - ChangeSelectedInfoChar( ( INT8 ) iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( ( INT8 ) iValue + FIRSTmercTOdisplay ) == FALSE ) ); + ChangeSelectedInfoChar( iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( iValue + FIRSTmercTOdisplay ) == FALSE ) ); CancelPathsOfAllSelectedCharacters(); @@ -11881,18 +11891,18 @@ void TeamListSleepRegionBtnCallBack( MOUSE_REGION *pRegion, INT32 iReason ) if( ( gCharactersList[ iValue + FIRSTmercTOdisplay].fValid == TRUE ) ) { // HEADROCK HAM B2.8: Added argument for multi-select entire squads - if ( HandleCtrlOrShiftInTeamPanel( ( INT8 ) iValue + FIRSTmercTOdisplay , FALSE )) + if ( HandleCtrlOrShiftInTeamPanel( iValue + FIRSTmercTOdisplay , FALSE )) { return; } // reset list if the clicked character isn't also selected - ChangeSelectedInfoChar( ( INT8 ) iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( ( INT8 ) iValue + FIRSTmercTOdisplay ) == FALSE ) ); + ChangeSelectedInfoChar( iValue + FIRSTmercTOdisplay, ( BOOLEAN )( IsEntryInSelectedListSet( iValue + FIRSTmercTOdisplay ) == FALSE ) ); // if this slot's sleep status can be changed if ( CanChangeSleepStatusForCharSlot( (INT8) iValue + FIRSTmercTOdisplay ) ) { - pSoldier = &Menptr[ gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID ]; + pSoldier = gCharactersList[ iValue + FIRSTmercTOdisplay ].usSolID; if( pSoldier->flags.fMercAsleep == TRUE ) { @@ -11998,6 +12008,67 @@ void TeamListSleepRegionMvtCallBack( MOUSE_REGION *pRegion, INT32 iReason ) } +static void HandleSelectedMercsContract() +{ + INT32 iCounter = 0; + UINT8 ubNumberOfSelectedSoldiers = 0; + INT32 DailySalaries = 0; + INT32 WeeklySalaries = 0; + INT32 BiweeklySalaries = 0; + SOLDIERTYPE* pSoldier = nullptr; + gSelectedSoldiers.clear(); + + for (iCounter = 0; iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; ++iCounter) + { + pSoldier = nullptr; + + // if the current character in the list is valid...then grab soldier pointer for the character + if (gCharactersList[iCounter].fValid) + { + // get the soldier pointer + pSoldier = gCharactersList[iCounter].usSolID; + + if (pSoldier->bActive == FALSE) + { + continue; + } + + if (IsEntryInSelectedListSet(iCounter) == FALSE) + { + continue; + } + + if (CanExtendContractForCharSlot(iCounter)) + { + // up the total number of soldiers + gSelectedSoldiers.push_back(pSoldier); + ubNumberOfSelectedSoldiers++; + + DailySalaries += gMercProfiles[pSoldier->ubProfile].sSalary; + WeeklySalaries += gMercProfiles[pSoldier->ubProfile].uiWeeklySalary; + BiweeklySalaries += gMercProfiles[pSoldier->ubProfile].uiBiWeeklySalary; + + bSelectedContractChar = bSelectedInfoChar; + giContractHighLine = bSelectedContractChar; + } + } + } + + if (ubNumberOfSelectedSoldiers > 1) + { + for (size_t i = 0; i < ubNumberOfSelectedSoldiers; i++) + { + CheckIfSalaryIncreasedAndSayQuote(gSelectedSoldiers[i], false); + } + + CreateContractBoxMultiSelect(DailySalaries, WeeklySalaries, BiweeklySalaries); + } + else if (ubNumberOfSelectedSoldiers == 1) + { + RequestContractMenu(); + } +} + void TeamListContractRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) { @@ -12011,6 +12082,7 @@ void TeamListContractRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) // marke strogg more mercs must add skipped mercs FIRSTmercTOdisplay iValue = MSYS_GetRegionUserData( pRegion, 0 ); +#if 0 if( gCharactersList[ iValue ].fValid == TRUE && ValidSelectableCharForNextOrPrev(iValue + FIRSTmercTOdisplay)) { if (iReason & MSYS_CALLBACK_REASON_LBUTTON_UP) @@ -12031,7 +12103,29 @@ void TeamListContractRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) ContractRegionBtnCallback( pRegion, iReason ); } +#else + if (iReason & MSYS_CALLBACK_REASON_LBUTTON_UP) + { + if ((gCharactersList[iValue + FIRSTmercTOdisplay].fValid == TRUE)) + { + // HEADROCK HAM B2.8: Added argument for multi-select entire squads + if (HandleCtrlOrShiftInTeamPanel(iValue + FIRSTmercTOdisplay, FALSE)) + { + return; + } + // reset list if the clicked character isn't also selected + ChangeSelectedInfoChar(iValue + FIRSTmercTOdisplay, (BOOLEAN)(IsEntryInSelectedListSet(iValue + FIRSTmercTOdisplay) == FALSE)); + + HandleSelectedMercsContract(); + } + else + { + // reset selected characters + ResetAllSelectedCharacterModes(); + } + } +#endif if (iReason & MSYS_CALLBACK_REASON_RBUTTON_UP) { // reset selected characters @@ -12059,7 +12153,7 @@ void TeamListContractRegionMvtCallBack(MOUSE_REGION *pRegion, INT32 iReason ) { giHighLine = iValue; - if( CanExtendContractForCharSlot( (INT8) iValue + FIRSTmercTOdisplay ) ) + if( CanExtendContractForCharSlot( iValue + FIRSTmercTOdisplay ) ) { giContractHighLine = iValue; } @@ -12090,7 +12184,7 @@ void TeamListContractRegionMvtCallBack(MOUSE_REGION *pRegion, INT32 iReason ) } else if( iReason & MSYS_CALLBACK_REASON_GAIN_MOUSE ) { - if( CanExtendContractForCharSlot( (INT8) iValue + FIRSTmercTOdisplay ) ) + if( CanExtendContractForCharSlot( iValue + FIRSTmercTOdisplay ) ) { // play click PlayGlowRegionSound( ); @@ -12113,7 +12207,7 @@ INT32 GetIndexForthis( SOLDIERTYPE *pSoldier ) { if( gCharactersList[ iCounter ].fValid == TRUE ) { - if( ( &Menptr[ gCharactersList[ iCounter ].usSolID ] ) == pSoldier ) + if( gCharactersList[ iCounter ].usSolID == pSoldier->ubID ) { iIndex = iCounter; iCounter = iLastGuy; @@ -12185,7 +12279,7 @@ void PlotPermanentPaths( void ) } else if( GetSelectedDestChar() != -1 ) { - DisplaySoldierPath( &Menptr[ gCharactersList[GetSelectedDestChar()].usSolID ] ); + DisplaySoldierPath( gCharactersList[GetSelectedDestChar()].usSolID ); } } @@ -12240,7 +12334,7 @@ void PlotTemporaryPaths( void ) // dest char has been selected, else if( GetSelectedDestChar() != -1 ) { - PlotATemporaryPathForCharacter( &Menptr[ gCharactersList[GetSelectedDestChar()].usSolID ], sMapX, sMapY ); + PlotATemporaryPathForCharacter( gCharactersList[GetSelectedDestChar()].usSolID, sMapX, sMapY ); // check to see if we are drawing path DisplayThePotentialPathForCurrentDestinationCharacterForMapScreenInterface( sMapX, sMapY ); @@ -12251,7 +12345,7 @@ void PlotTemporaryPaths( void ) // clip region ClipBlitsToMapViewRegion( ); // blit - DisplaySoldierTempPath( &Menptr[ gCharactersList[GetSelectedDestChar()].usSolID ] ); + DisplaySoldierTempPath( gCharactersList[GetSelectedDestChar()].usSolID ); // restore RestoreClipRegionToFullScreen( ); } @@ -12493,7 +12587,7 @@ void DetermineIfContractMenuCanBeShown( void ) // determine which lines selectable HandleShadingOfLinesForContractMenu( ); - if( Menptr[gCharactersList[ bSelectedInfoChar ].usSolID].stats.bLife == 0 ) + if( gCharactersList[ bSelectedInfoChar ].usSolID->stats.bLife == 0 ) { // show basic assignment menu ShowBox( ghRemoveMercAssignBox ); @@ -12561,7 +12655,7 @@ void ContractRegionBtnCallback( MOUSE_REGION *pRegion, INT32 iReason ) if( CanExtendContractForCharSlot( bSelectedInfoChar ) ) { - pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; // create RebuildContractBoxForMerc( pSoldier ); @@ -12668,7 +12762,7 @@ void HandleShadingOfLinesForContractMenu( void ) Assert( CanExtendContractForCharSlot( bSelectedContractChar ) ); // grab the character - pSoldier = &Menptr[ gCharactersList[ bSelectedContractChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedContractChar ].usSolID; // is guy in AIM? and well enough to talk and make such decisions? @@ -12725,7 +12819,8 @@ void HandleShadingOfLinesForContractMenu( void ) } // if THIS soldier is involved in a fight (dismissing in a hostile sector IS ok...) - if( ( gTacticalStatus.uiFlags & INCOMBAT ) && pSoldier->bInSector ) + // Also if we have multiple mercs selected, disable terminating contracts + if( gSelectedSoldiers.size() > 0 || (( gTacticalStatus.uiFlags & INCOMBAT ) && pSoldier->bInSector )) { ShadeStringInBox( ghContractBox, CONTRACT_MENU_TERMINATE ); } @@ -12754,15 +12849,15 @@ void ReBuildCharactersList( void ) { // clear this slot gCharactersList[ sCount ].fValid = FALSE; - gCharactersList[ sCount ].usSolID = 0; + gCharactersList[ sCount ].usSolID = NOBODY; } - // fills array with pressence of player controlled characters - for ( INT32 cnt=gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++) + // fills array with presence of player controlled characters + for ( SoldierID soldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; soldier <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++soldier ) { - if(Menptr[ cnt ].bActive == 1) + if( soldier->bActive ) { - AddCharacter( &Menptr[ cnt ] ); + AddCharacter( soldier ); } } @@ -12795,7 +12890,7 @@ void ReBuildCharactersList( void ) void HandleChangeOfInfoChar( void ) { - static INT8 bOldInfoChar = -1; + static INT16 bOldInfoChar = -1; if( bSelectedInfoChar != bOldInfoChar ) { @@ -12807,7 +12902,7 @@ void HandleChangeOfInfoChar( void ) if( gCharactersList[ bOldInfoChar ].fValid == TRUE ) { // set face in active - SetAutoFaceInActiveFromSoldier( Menptr[ gCharactersList[ bOldInfoChar ].usSolID ].ubID ); + SetAutoFaceInActiveFromSoldier( gCharactersList[ bOldInfoChar ].usSolID ); } } @@ -12851,7 +12946,7 @@ void TestMessageSystem( void ) void EnableDisableTeamListRegionsAndHelpText( void ) { // check if valid character here, if so, then do nothing..other wise set help text timer to a gazillion - INT8 bCharNum; + INT16 bCharNum; for( bCharNum = 0; bCharNum < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; bCharNum++ ) @@ -12873,7 +12968,7 @@ void EnableDisableTeamListRegionsAndHelpText( void ) MSYS_EnableRegion( &gTeamListLocationRegion[ bCharNum ] ); // valid character. If it's a vehicle, however - if ( Menptr[ gCharactersList[ bCharNum + FIRSTmercTOdisplay].usSolID ].flags.uiStatusFlags & SOLDIER_VEHICLE ) + if ( gCharactersList[ bCharNum + FIRSTmercTOdisplay].usSolID->flags.uiStatusFlags & SOLDIER_VEHICLE ) { // Can't change assignment for vehicles MSYS_DisableRegion( &gTeamListAssignmentRegion[ bCharNum ] ); @@ -12883,8 +12978,8 @@ void EnableDisableTeamListRegionsAndHelpText( void ) MSYS_EnableRegion( &gTeamListAssignmentRegion[ bCharNum ] ); // POW or dead ? - if ( ( Menptr[ gCharactersList[ bCharNum + FIRSTmercTOdisplay].usSolID ].bAssignment == ASSIGNMENT_POW ) || - ( Menptr[ gCharactersList[ bCharNum + FIRSTmercTOdisplay].usSolID ].stats.bLife == 0 ) ) + if ( ( gCharactersList[ bCharNum + FIRSTmercTOdisplay].usSolID->bAssignment == ASSIGNMENT_POW ) || + ( gCharactersList[ bCharNum + FIRSTmercTOdisplay].usSolID->stats.bLife == 0 ) ) { // "Remove Merc" SetRegionFastHelpText( &gTeamListAssignmentRegion[ bCharNum ], pRemoveMercStrings[ 0 ] ); @@ -13006,10 +13101,10 @@ void UpdatePausedStatesDueToTimeCompression( void ) BOOLEAN ContinueDialogue(SOLDIERTYPE *pSoldier, BOOLEAN fDone ) { // continue this grunts dialogue, restore when done - static INT8 bOldSelectedInfoChar = -1; + static INT16 bOldSelectedInfoChar = -1; static BOOLEAN fTalkingingGuy = FALSE; - INT8 bCounter = 0; + UINT16 bCounter = 0; @@ -13024,7 +13119,7 @@ BOOLEAN ContinueDialogue(SOLDIERTYPE *pSoldier, BOOLEAN fDone ) { ChangeSelectedInfoChar( bOldSelectedInfoChar, TRUE ); - SetAutoFaceInActive( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]->iFaceIndex ); + SetAutoFaceInActive( gCharactersList[ bSelectedInfoChar ].usSolID->iFaceIndex ); } */ @@ -13046,7 +13141,7 @@ BOOLEAN ContinueDialogue(SOLDIERTYPE *pSoldier, BOOLEAN fDone ) { if( gCharactersList[bCounter].fValid == TRUE ) { - if( ( &Menptr[gCharactersList[bCounter].usSolID]) == pSoldier ) + if( gCharactersList[bCounter].usSolID == pSoldier->ubID ) { if( bSelectedInfoChar != bCounter ) { @@ -13070,7 +13165,7 @@ void HandleSpontanousTalking( ) { if( ( bSelectedInfoChar != -1 ) && ( bSelectedInfoChar < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ) { - ContinueDialogue( ( &Menptr[gCharactersList[bSelectedInfoChar].usSolID] ), TRUE ); + ContinueDialogue( gCharactersList[bSelectedInfoChar].usSolID, TRUE ); } } } @@ -13150,22 +13245,24 @@ BOOLEAN CheckIfClickOnLastSectorInPath( INT16 sX, INT16 sY ) return( FALSE ); } - if ( CALCULATE_STRATEGIC_INDEX( sX, sY ) == GetLastSectorIdInCharactersPath( ( &Menptr[ gCharactersList[GetSelectedDestChar()].usSolID ] ) ) ) + SOLDIERTYPE* pSoldier = gCharactersList[GetSelectedDestChar()].usSolID; + + if ( CALCULATE_STRATEGIC_INDEX( sX, sY ) == GetLastSectorIdInCharactersPath( pSoldier ) ) { // clicked on last sector, reset plotting mode // if he's IN a vehicle or IS a vehicle - if( ( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bAssignment == VEHICLE ) || ( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + if( ( pSoldier->bAssignment == VEHICLE ) || ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { - if( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bAssignment == VEHICLE ) + if( pSoldier->bAssignment == VEHICLE ) { // IN a vehicle - iVehicleId = Menptr[gCharactersList[GetSelectedDestChar()].usSolID].iVehicleId; + iVehicleId = pSoldier->iVehicleId; } else { // IS a vehicle - iVehicleId = Menptr[gCharactersList[GetSelectedDestChar()].usSolID].bVehicleID; + iVehicleId = pSoldier->bVehicleID; } // rebuild waypoints - vehicles @@ -13174,7 +13271,7 @@ BOOLEAN CheckIfClickOnLastSectorInPath( INT16 sX, INT16 sY ) else { // rebuild waypoints - mercs on foot - ppMovePath = &( Menptr[gCharactersList[GetSelectedDestChar()].usSolID].pMercPath ); + ppMovePath = &( pSoldier->pMercPath ); } RebuildWayPointsForAllSelectedCharsGroups( ); @@ -13235,7 +13332,7 @@ void RebuildWayPointsForAllSelectedCharsGroups( void ) { if( ( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // if he's IN a vehicle or IS a vehicle @@ -13339,7 +13436,7 @@ void UpdateCursorIfInLastSector( void ) if ( GetSelectedDestChar() != -1 ) { //c heck if we are in the last sector of the characters path? - if ( CALCULATE_STRATEGIC_INDEX( sMapX, sMapY ) == GetLastSectorIdInCharactersPath( (&Menptr[gCharactersList[GetSelectedDestChar()].usSolID]) ) ) + if ( CALCULATE_STRATEGIC_INDEX( sMapX, sMapY ) == GetLastSectorIdInCharactersPath( gCharactersList[GetSelectedDestChar()].usSolID ) ) { // set cursor to checkmark ChangeMapScreenMaskCursor( CURSOR_CHECKMARK ); @@ -13519,7 +13616,7 @@ void UpDateStatusOfContractBox( void ) { ForceUpDateOfBox( ghContractBox ); - if( ( Menptr[gCharactersList[ bSelectedInfoChar ].usSolID].stats.bLife == 0 )||( Menptr[gCharactersList[bSelectedInfoChar].usSolID].bAssignment == ASSIGNMENT_POW ) ) + if( ( gCharactersList[ bSelectedInfoChar ].usSolID->stats.bLife == 0 )||( gCharactersList[bSelectedInfoChar].usSolID->bAssignment == ASSIGNMENT_POW ) ) { ForceUpDateOfBox( ghRemoveMercAssignBox ); } @@ -13667,20 +13764,24 @@ void UpdateStatusOfMapSortButtons( void ) -INT8 GetLastValidCharacterInTeamPanelList( void ) +INT16 GetLastValidCharacterInTeamPanelList( void ) { - INT8 iCounter = 0, iValue = 0; + INT16 iCounter = 0, iValue = 0; + SOLDIERTYPE* pSoldier; + SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID; // run through the list and find the last valid guy in the list for( iCounter = 0; iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounter++ ) { if( gCharactersList[ iCounter ].fValid == TRUE ) { - if(( Menptr[ gCharactersList[ iCounter ].usSolID ].stats.bLife >= OKLIFE ) ) + pSoldier = gCharactersList[iCounter].usSolID; + + if(pSoldier->stats.bLife >= OKLIFE ) { if( fShowMapInventoryPool ) { - if( Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorX == sSelMapX && Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorY == sSelMapY && Menptr[ gCharactersList[ iCounter ].usSolID ].bSectorZ == ( INT8 )( iCurrentMapSectorZ ) ) + if( pSoldier->sSectorX == sSelMapX && pSoldier->sSectorY == sSelMapY && pSoldier->bSectorZ == ( INT8 )( iCurrentMapSectorZ ) ) { iValue = iCounter; } @@ -13693,7 +13794,7 @@ INT8 GetLastValidCharacterInTeamPanelList( void ) { if( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) { - if( Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorX == Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX && Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorY == Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY && Menptr[ gCharactersList[ iCounter ].usSolID ].bSectorZ ==Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ ) + if( pSoldier->sSectorX == pSelectedSoldier->sSectorX && pSoldier->sSectorY == pSelectedSoldier->sSectorY && pSoldier->bSectorZ == pSelectedSoldier->bSectorZ ) { iValue = iCounter; } @@ -13724,11 +13825,11 @@ INT8 GetPrevValidCharacterInTeamPanelList( INT8 bCurrentIndex ) { if( gCharactersList[ iCounter ].fValid == TRUE ) { - if( ( Menptr[ gCharactersList[ iCounter ].usSolID ].bLife >= OKLIFE ) ) + if( ( gCharactersList[ iCounter ].usSolID->bLife >= OKLIFE ) ) { if( fShowMapInventoryPool ) { - if( Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorX == sSelMapX && Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorY == sSelMapY && Menptr[ gCharactersList[ iCounter ].usSolID ].bSectorZ == ( INT8 )( iCurrentMapSectorZ ) ) + if( gCharactersList[ iCounter ].usSolID->sSectorX == sSelMapX && gCharactersList[ iCounter ].usSolID->sSectorY == sSelMapY && gCharactersList[ iCounter ].usSolID->bSectorZ == ( INT8 )( iCurrentMapSectorZ ) ) { iValue = iCounter; } @@ -13741,7 +13842,7 @@ INT8 GetPrevValidCharacterInTeamPanelList( INT8 bCurrentIndex ) { if( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) { - if( Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorX == Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX && Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorY == Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY && Menptr[ gCharactersList[ iCounter ].usSolID ].bSectorZ ==Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ ) + if( gCharactersList[ iCounter ].usSolID->sSectorX == gCharactersList[ bSelectedInfoChar ].usSolID->sSectorX && gCharactersList[ iCounter ].usSolID->sSectorY == gCharactersList[ bSelectedInfoChar ].usSolID->sSectorY && gCharactersList[ iCounter ].usSolID->bSectorZ ==gCharactersList[ bSelectedInfoChar ].usSolID->bSectorZ ) { iValue = iCounter; iCounter = 0; @@ -13771,11 +13872,11 @@ INT8 GetNextValidCharacterInTeamPanelList( INT8 bCurrentIndex ) { if( gCharactersList[ iCounter ].fValid == TRUE ) { - if( ( Menptr[ gCharactersList[ iCounter ].usSolID ].bLife >= OKLIFE ) ) + if( ( gCharactersList[ iCounter ].usSolID->bLife >= OKLIFE ) ) { if( fShowMapInventoryPool ) { - if( Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorX == sSelMapX && Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorY == sSelMapY && Menptr[ gCharactersList[ iCounter ].usSolID ].bSectorZ == ( INT8 )( iCurrentMapSectorZ ) ) + if( gCharactersList[ iCounter ].usSolID->sSectorX == sSelMapX && gCharactersList[ iCounter ].usSolID->sSectorY == sSelMapY && gCharactersList[ iCounter ].usSolID->bSectorZ == ( INT8 )( iCurrentMapSectorZ ) ) { iValue = iCounter; } @@ -13788,7 +13889,7 @@ INT8 GetNextValidCharacterInTeamPanelList( INT8 bCurrentIndex ) { if( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) { - if( Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorX == Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX && Menptr[ gCharactersList[ iCounter ].usSolID ].sSectorY == Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY && Menptr[ gCharactersList[ iCounter ].usSolID ].bSectorZ ==Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ ) + if( gCharactersList[ iCounter ].usSolID->sSectorX == gCharactersList[ bSelectedInfoChar ].usSolID->sSectorX && gCharactersList[ iCounter ].usSolID->sSectorY == gCharactersList[ bSelectedInfoChar ].usSolID->sSectorY && gCharactersList[ iCounter ].usSolID->bSectorZ ==gCharactersList[ bSelectedInfoChar ].usSolID->bSectorZ ) { iValue = iCounter; } @@ -14018,7 +14119,7 @@ void UpdateBadAssignments( void ) { if( gCharactersList[ iCounter ].fValid == TRUE ) { - CheckIfSoldierUnassigned( &Menptr[ gCharactersList[ iCounter ].usSolID ] ); + CheckIfSoldierUnassigned( gCharactersList[ iCounter ].usSolID ); } } @@ -14076,7 +14177,7 @@ BOOLEAN AnyMercsLeavingRealSoon() { if( gCharactersList[ uiCounter ].fValid == TRUE ) { - if( ( Menptr[gCharactersList[uiCounter].usSolID].iEndofContractTime - uiTimeInMin ) <= MINS_TO_FLASH_CONTRACT_TIME ) + if( ( gCharactersList[uiCounter].usSolID->iEndofContractTime - uiTimeInMin ) <= MINS_TO_FLASH_CONTRACT_TIME ) { fFoundOne = TRUE; break; @@ -14159,10 +14260,8 @@ void HandleRemovalOfPreLoadedMapGraphics( void ) } -BOOLEAN CharacterIsInLoadedSectorAndWantsToMoveInventoryButIsNotAllowed( INT8 bCharId ) +BOOLEAN CharacterIsInLoadedSectorAndWantsToMoveInventoryButIsNotAllowed( INT16 bCharId ) { - UINT16 usSoldierId = 0; - // invalid char id if( bCharId == -1 ) { @@ -14176,10 +14275,10 @@ BOOLEAN CharacterIsInLoadedSectorAndWantsToMoveInventoryButIsNotAllowed( INT8 bC } // get the soldier id - usSoldierId = gCharactersList[ bCharId ].usSolID; + SoldierID usSoldierId = gCharactersList[ bCharId ].usSolID; // char is in loaded sector - if( Menptr[ usSoldierId ].sSectorX != gWorldSectorX || Menptr[ usSoldierId ].sSectorY != gWorldSectorY || Menptr[ usSoldierId ].bSectorZ != gbWorldSectorZ ) + if( usSoldierId->sSectorX != gWorldSectorX || usSoldierId->sSectorY != gWorldSectorY || usSoldierId->bSectorZ != gbWorldSectorZ ) { return( FALSE ); } @@ -14545,7 +14644,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse INT32 iCounter = 0, iCounterA = 0; INT16 sEndSectorA, sEndSectorB; INT32 iExpiryTime, iExpiryTimeA; - UINT8 uiID, uiIDA; + SoldierID uiID, uiIDA; SOLDIERTYPE *pSelectedSoldier[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; SOLDIERTYPE *pCurrentSoldier = NULL; SOLDIERTYPE *pPreviousSelectedInfoChar = NULL; @@ -14556,7 +14655,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse // if we have anyone valid selected if ( ( bSelectedInfoChar != -1 ) && ( gCharactersList[ bSelectedInfoChar ].fValid ) ) { - pPreviousSelectedInfoChar = &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pPreviousSelectedInfoChar = gCharactersList[ bSelectedInfoChar ].usSolID; } @@ -14573,7 +14672,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse } // get soldier assoc. with entry - pCurrentSoldier = &Menptr[ gCharactersList[ iCounter ].usSolID ]; + pCurrentSoldier = gCharactersList[ iCounter ].usSolID; // check if soldier is active if( pCurrentSoldier->bActive == FALSE ) @@ -14611,11 +14710,12 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; } - //if( ( wcscmp( Menptr[ gCharactersList[ iCounterA ].usSolID ].name, Menptr[ gCharactersList[ iCounter ].usSolID ].name ) > 0 ) && ( iCounterA < iCounter ) ) + //if( ( wcscmp( gCharactersList[ iCounterA ].usSolID->name, gCharactersList[ iCounter ].usSolID->name ) > 0 ) && ( iCounterA < iCounter ) ) if( iCounterA < iCounter ) { - if((fReverse && ( wcscmp( Menptr[ gCharactersList[ iCounterA ].usSolID ].name, Menptr[ gCharactersList[ iCounter ].usSolID ].name ) < 0 )) || - (!fReverse && ( wcscmp( Menptr[ gCharactersList[ iCounterA ].usSolID ].name, Menptr[ gCharactersList[ iCounter ].usSolID ].name ) > 0 ))) + + if((fReverse && ( wcscmp( gCharactersList[ iCounterA ].usSolID->name, gCharactersList[ iCounter ].usSolID->name ) < 0 )) || + (!fReverse && ( wcscmp( gCharactersList[ iCounterA ].usSolID->name, gCharactersList[ iCounter ].usSolID->name ) > 0 ))) SwapCharactersInList( iCounter, iCounterA ); } } @@ -14630,23 +14730,23 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; } - if( !fReverse && ( Menptr[ gCharactersList[ iCounterA ].usSolID ].bAssignment > Menptr[ gCharactersList[ iCounter ].usSolID ].bAssignment ) && ( iCounterA < iCounter ) ) + if( !fReverse && ( gCharactersList[ iCounterA ].usSolID->bAssignment > gCharactersList[ iCounter ].usSolID->bAssignment ) && ( iCounterA < iCounter ) ) { SwapCharactersInList( iCounter, iCounterA ); } - else if( fReverse && ( Menptr[ gCharactersList[ iCounterA ].usSolID ].bAssignment < Menptr[ gCharactersList[ iCounter ].usSolID ].bAssignment ) && ( iCounterA < iCounter ) ) + else if( fReverse && ( gCharactersList[ iCounterA ].usSolID->bAssignment < gCharactersList[ iCounter ].usSolID->bAssignment ) && ( iCounterA < iCounter ) ) { SwapCharactersInList( iCounter, iCounterA ); } - else if( ( Menptr[ gCharactersList[ iCounterA ].usSolID ].bAssignment == Menptr[ gCharactersList[ iCounter ].usSolID ].bAssignment ) && ( iCounterA < iCounter ) ) + else if( ( gCharactersList[ iCounterA ].usSolID->bAssignment == gCharactersList[ iCounter ].usSolID->bAssignment ) && ( iCounterA < iCounter ) ) { // same assignment // if it's in a vehicle - if( Menptr[ gCharactersList[ iCounterA ].usSolID ].bAssignment == VEHICLE ) + if( gCharactersList[ iCounterA ].usSolID->bAssignment == VEHICLE ) { // then also compare vehicle IDs - if( ( Menptr[ gCharactersList[ iCounterA ].usSolID ].iVehicleId > Menptr[ gCharactersList[ iCounter ].usSolID ].iVehicleId ) && ( iCounterA < iCounter ) ) + if( ( gCharactersList[ iCounterA ].usSolID->iVehicleId > gCharactersList[ iCounter ].usSolID->iVehicleId ) && ( iCounterA < iCounter ) ) { SwapCharactersInList( iCounter, iCounterA ); } @@ -14664,11 +14764,11 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; } - if( !fReverse && ( Menptr[ gCharactersList[ iCounterA ].usSolID ].flags.fMercAsleep == TRUE ) && ( Menptr[ gCharactersList[ iCounter ].usSolID ].flags.fMercAsleep == FALSE ) && ( iCounterA < iCounter ) ) + if( !fReverse && ( gCharactersList[ iCounterA ].usSolID->flags.fMercAsleep == TRUE ) && ( gCharactersList[ iCounter ].usSolID->flags.fMercAsleep == FALSE ) && ( iCounterA < iCounter ) ) { SwapCharactersInList( iCounter, iCounterA ); } - else if( fReverse && ( Menptr[ gCharactersList[ iCounterA ].usSolID ].flags.fMercAsleep == FALSE ) && ( Menptr[ gCharactersList[ iCounter ].usSolID ].flags.fMercAsleep == TRUE ) && ( iCounterA < iCounter ) ) + else if( fReverse && ( gCharactersList[ iCounterA ].usSolID->flags.fMercAsleep == FALSE ) && ( gCharactersList[ iCounter ].usSolID->flags.fMercAsleep == TRUE ) && ( iCounterA < iCounter ) ) { SwapCharactersInList( iCounter, iCounterA ); } @@ -14702,13 +14802,13 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse case( 4 ): // by destination sector - if( GetLengthOfMercPath( MercPtrs[ gCharactersList[ iCounter ].usSolID ] ) == 0 ) + if( GetLengthOfMercPath( gCharactersList[ iCounter ].usSolID ) == 0 ) { sEndSectorA = 9999; } else { - sEndSectorA = GetLastSectorIdInCharactersPath( &Menptr[ gCharactersList[ iCounter ].usSolID ] ); + sEndSectorA = GetLastSectorIdInCharactersPath( gCharactersList[ iCounter ].usSolID ); } for( iCounterA = 0; iCounterA < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounterA++ ) @@ -14718,13 +14818,13 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; } - if( GetLengthOfMercPath( MercPtrs[ gCharactersList[ iCounterA ].usSolID ] ) == 0 ) + if( GetLengthOfMercPath( gCharactersList[ iCounterA ].usSolID ) == 0 ) { sEndSectorB = 9999; } else { - sEndSectorB = GetLastSectorIdInCharactersPath( &Menptr[ gCharactersList[ iCounterA ].usSolID ] ); + sEndSectorB = GetLastSectorIdInCharactersPath( gCharactersList[ iCounterA ].usSolID ); } if( !fReverse && ( sEndSectorB > sEndSectorA ) && ( iCounterA < iCounter ) ) @@ -14739,7 +14839,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; case( 5 ): - iExpiryTime = GetContractExpiryTime( &( Menptr[ gCharactersList[ iCounter ].usSolID ] ) ); + iExpiryTime = GetContractExpiryTime( gCharactersList[ iCounter ].usSolID ); //by contract expiry for( iCounterA = 0; iCounterA < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounterA++ ) @@ -14749,7 +14849,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; } - iExpiryTimeA = GetContractExpiryTime( &( Menptr[ gCharactersList[ iCounterA ].usSolID ] ) ); + iExpiryTimeA = GetContractExpiryTime( gCharactersList[ iCounterA ].usSolID ); if( !fReverse && ( iExpiryTimeA > iExpiryTime ) && ( iCounterA < iCounter ) ) { @@ -14763,7 +14863,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse break; case( 6 ): - uiID = Menptr[ gCharactersList[ iCounter ].usSolID ].ubID; + uiID = gCharactersList[ iCounter ].usSolID->ubID; //by ubID for( iCounterA = 0; iCounterA < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounterA++ ) { @@ -14771,7 +14871,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse { break; } - uiIDA = Menptr[ gCharactersList[ iCounterA ].usSolID ].ubID; + uiIDA = gCharactersList[ iCounterA ].usSolID->ubID; if( !fReverse && ( uiIDA > uiID ) && ( iCounterA < iCounter ) ) { SwapCharactersInList( iCounter, iCounterA ); @@ -14810,7 +14910,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse } // grab current soldier - pCurrentSoldier = &Menptr[ gCharactersList[ iCounterA ].usSolID ]; + pCurrentSoldier = gCharactersList[ iCounterA ].usSolID; // check if soldier is active if( pCurrentSoldier->bActive == FALSE ) @@ -14821,13 +14921,13 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse // this guy is selected if( pSelectedSoldier[ iCounter ] == pCurrentSoldier ) { - SetEntryInSelectedCharacterList( ( INT8 ) iCounterA ); + SetEntryInSelectedCharacterList( iCounterA ); } // update who the currently selected info guy is if( pPreviousSelectedInfoChar == pCurrentSoldier ) { - ChangeSelectedInfoChar( ( INT8 ) iCounterA, FALSE ); + ChangeSelectedInfoChar( iCounterA, FALSE ); } } } @@ -14852,10 +14952,8 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse void SwapCharactersInList( INT32 iCharA, INT32 iCharB ) { - UINT16 usTempSoldID; - // swap - usTempSoldID = gCharactersList[ iCharA ].usSolID; + SoldierID usTempSoldID = gCharactersList[ iCharA ].usSolID; gCharactersList[ iCharA ].usSolID = gCharactersList[ iCharB ].usSolID; gCharactersList[ iCharB ].usSolID = usTempSoldID; } @@ -14951,7 +15049,7 @@ void HandleAssignmentsDoneAndAwaitingFurtherOrders( void ) break; } - pSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + pSoldier = gCharactersList[ iCounter ].usSolID; // toggle and redraw if flash was left ON even though the flag is OFF if( pSoldier->flags.fDoneAssignmentAndNothingToDoFlag || fFlashAssignDone ) @@ -14986,7 +15084,7 @@ void DisplayIconsForMercsAsleep( void ) { if( gCharactersList[ iCounter + FIRSTmercTOdisplay ].fValid == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter + FIRSTmercTOdisplay ].usSolID ]; + pSoldier = gCharactersList[ iCounter + FIRSTmercTOdisplay ].usSolID; if( pSoldier->bActive && pSoldier->flags.fMercAsleep && CanChangeSleepStatusForSoldier( pSoldier ) ) { BltVideoObject( guiSAVEBUFFER , hHandle, 0, UI_CHARLIST.xSleep + 2, ( INT16 )(UI_CHARLIST.y + (iCounter * ( Y_SIZE + 2 ) ) ) , VO_BLT_SRCTRANSPARENCY,NULL ); @@ -15071,7 +15169,7 @@ BOOLEAN CanToggleSelectedCharInventory( void ) return(FALSE); } - pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; // if not in inventory, and holding an item from sector inventory if( !fShowInventoryFlag && @@ -15095,7 +15193,7 @@ BOOLEAN CanToggleSelectedCharInventory( void ) -BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ) +BOOLEAN MapCharacterHasAccessibleInventory( INT16 bCharNumber ) { SOLDIERTYPE *pSoldier = NULL; @@ -15112,7 +15210,7 @@ BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ) return(FALSE); } - pSoldier = MercPtrs[ gCharactersList[ bCharNumber ].usSolID ]; + pSoldier = gCharactersList[ bCharNumber ].usSolID; if( ( pSoldier->bAssignment == IN_TRANSIT ) || ( pSoldier->bAssignment == ASSIGNMENT_POW ) || @@ -15203,9 +15301,8 @@ void ChangeSelectedMapSector( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) fTeamPanelDirty = TRUE; } -BOOLEAN CanChangeDestinationForCharSlot( INT8 bCharNumber, BOOLEAN fShowErrorMessage ) +BOOLEAN CanChangeDestinationForCharSlot( INT16 bCharNumber, BOOLEAN fShowErrorMessage ) { - SOLDIERTYPE *pSoldier = NULL; INT8 bErrorNumber = -1; @@ -15215,7 +15312,7 @@ BOOLEAN CanChangeDestinationForCharSlot( INT8 bCharNumber, BOOLEAN fShowErrorMes if ( gCharactersList[ bCharNumber ].fValid == FALSE ) return (FALSE); - pSoldier = MercPtrs[ gCharactersList[ bCharNumber ].usSolID ]; + SOLDIERTYPE* pSoldier = gCharactersList[ bCharNumber ].usSolID; // valid soldier? Assert( pSoldier ); @@ -15240,18 +15337,15 @@ BOOLEAN CanChangeDestinationForCharSlot( INT8 bCharNumber, BOOLEAN fShowErrorMes -BOOLEAN CanExtendContractForCharSlot( INT8 bCharNumber ) +BOOLEAN CanExtendContractForCharSlot( INT16 bCharNumber ) { - SOLDIERTYPE *pSoldier = NULL; - - if ( bCharNumber == -1 ) return( FALSE ); if ( gCharactersList[ bCharNumber ].fValid == FALSE ) return (FALSE); - pSoldier = MercPtrs[ gCharactersList[ bCharNumber ].usSolID ]; + SOLDIERTYPE* pSoldier = gCharactersList[ bCharNumber ].usSolID; // valid soldier? Assert( pSoldier ); @@ -15281,20 +15375,15 @@ BOOLEAN CanExtendContractForCharSlot( INT8 bCharNumber ) } -BOOLEAN CanChangeSleepStatusForCharSlot( INT8 bCharNumber ) +BOOLEAN CanChangeSleepStatusForCharSlot( INT16 bCharNumber ) { - SOLDIERTYPE *pSoldier = NULL; - if ( bCharNumber == -1 ) return( FALSE ); if ( gCharactersList[ bCharNumber ].fValid == FALSE ) return (FALSE); - - pSoldier = MercPtrs[ gCharactersList[ bCharNumber ].usSolID ]; - - return( CanChangeSleepStatusForSoldier( pSoldier ) ); + return( CanChangeSleepStatusForSoldier(gCharactersList[bCharNumber].usSolID) ); } @@ -15399,7 +15488,7 @@ void CancelOrShortenPlottedPath( void ) return; // try to delete portion of path AFTER the current sector for the helicopter - uiReturnValue = ClearPathAfterThisSectorForCharacter( &Menptr[gCharactersList[GetSelectedDestChar()].usSolID], sMapX, sMapY ); + uiReturnValue = ClearPathAfterThisSectorForCharacter( gCharactersList[GetSelectedDestChar()].usSolID, sMapX, sMapY ); } switch ( uiReturnValue ) @@ -15433,7 +15522,7 @@ void CancelOrShortenPlottedPath( void ) } -BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickAssignments ) +BOOLEAN HandleCtrlOrShiftInTeamPanel( INT16 bCharNumber, BOOLEAN fFromRightClickAssignments ) { // HEADROCK HAM B2.8: New condition based on new argument. if (fFromRightClickAssignments) @@ -15453,8 +15542,8 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA // if not already selected if( fSelectedListOfMercsForMapScreen[ iCounter ] == FALSE ) { - SOLDIERTYPE * pSelected = &( Menptr[ gCharactersList[ bCharNumber ].usSolID ] ); - SOLDIERTYPE * pSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + SOLDIERTYPE * pSelected = gCharactersList[ bCharNumber ].usSolID; + SOLDIERTYPE * pSoldier = gCharactersList[ iCounter ].usSolID; // if on a squad, or in a vehicle, or IS a vehicle if ( pSoldier->bAssignment == VEHICLE ) @@ -15465,7 +15554,7 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA (pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE && pSelected->iVehicleId == pSoldier->bVehicleID ) ) { // then also select this guy - SetEntryInSelectedCharacterList( ( INT8 ) iCounter ); + SetEntryInSelectedCharacterList( iCounter ); } } @@ -15478,7 +15567,7 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA // make sure only trainers/trainees of the same stat are selected together. if (pSoldier->bTrainStat == pSelected->bTrainStat) { - SetEntryInSelectedCharacterList( ( INT8 ) iCounter ); + SetEntryInSelectedCharacterList( iCounter ); } } @@ -15487,7 +15576,7 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA pSoldier->sSectorY == pSelected->sSectorY && pSoldier->sZLevel == pSelected->sZLevel ) { - SetEntryInSelectedCharacterList( ( INT8 ) iCounter ); + SetEntryInSelectedCharacterList( iCounter ); } } } @@ -15508,8 +15597,8 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA // if not already selected if( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) { - SOLDIERTYPE * pSelected = &( Menptr[ gCharactersList[ bCharNumber ].usSolID ] ); - SOLDIERTYPE * pSoldier = &( Menptr[ gCharactersList[ iCounter ].usSolID ] ); + SOLDIERTYPE * pSelected = gCharactersList[ bCharNumber ].usSolID; + SOLDIERTYPE * pSoldier = gCharactersList[ iCounter ].usSolID; // if on a squad, or in a vehicle, or IS a vehicle if ( pSoldier->bAssignment == VEHICLE ) @@ -15520,7 +15609,7 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA (pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE && pSelected->iVehicleId == pSoldier->bVehicleID ) ) { // then also select this guy - ResetEntryForSelectedList( ( INT8 ) iCounter ); + ResetEntryForSelectedList( iCounter ); } } @@ -15533,7 +15622,7 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA // make sure only trainers/trainees of the same stat are selected together. if (pSoldier->bTrainStat == pSelected->bTrainStat) { - ResetEntryForSelectedList( ( INT8 ) iCounter ); + ResetEntryForSelectedList( iCounter ); } } @@ -15542,7 +15631,7 @@ BOOLEAN HandleCtrlOrShiftInTeamPanel( INT8 bCharNumber, BOOLEAN fFromRightClickA pSoldier->sSectorY == pSelected->sSectorY && pSoldier->sZLevel == pSelected->sZLevel ) { - ResetEntryForSelectedList( ( INT8 ) iCounter ); + ResetEntryForSelectedList( iCounter ); } } } @@ -15609,7 +15698,7 @@ INT32 GetContractExpiryTime( SOLDIERTYPE *pSoldier ) -void ChangeSelectedInfoChar( INT8 bCharNumber, BOOLEAN fResetSelectedList ) +void ChangeSelectedInfoChar( INT16 bCharNumber, BOOLEAN fResetSelectedList ) { Assert( ( bCharNumber >= -1 ) && ( bCharNumber < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ); @@ -15666,7 +15755,7 @@ void ChangeSelectedInfoChar( INT8 bCharNumber, BOOLEAN fResetSelectedList ) fShowInventoryFlag = FALSE; } //shadooow: this resets the current highlight item selection to be redrawn again - HandleCompatibleAmmoUI(MercPtrs[gCharactersList[bCharNumber].usSolID], NO_SLOT, FALSE); + HandleCompatibleAmmoUI(gCharactersList[bCharNumber].usSolID, NO_SLOT, FALSE); if (gpItemPointer != NULL) { gfCheckForMouseOverItem = TRUE; @@ -15720,7 +15809,7 @@ void CopyPathToAllSelectedCharacters( PathStPtr pPath ) { if( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // skip itself! if ( GetSoldierMercPathPtr( pSoldier ) != pPath ) @@ -15748,7 +15837,7 @@ void CopyPathToAllSelectedCharacters( PathStPtr pPath ) void CancelPathsOfAllSelectedCharacters() { - INT8 bCounter = 0; + INT16 bCounter = 0; SOLDIERTYPE *pSoldier = NULL; BOOLEAN fSkyriderMsgShown = FALSE; @@ -15758,7 +15847,7 @@ void CancelPathsOfAllSelectedCharacters() // if we've clicked on a selected valid character if( ( gCharactersList[ bCounter ].fValid == TRUE ) && IsEntryInSelectedListSet( bCounter ) ) { - pSoldier = MercPtrs[ gCharactersList[ bCounter ].usSolID ]; + pSoldier = gCharactersList[ bCounter ].usSolID; // and he has a route set if ( GetLengthOfMercPath( pSoldier ) > 0 ) @@ -15829,7 +15918,7 @@ INT32 GetGroundTravelTimeOfCharacter( INT8 bCharNumber ) iTravelTime = GetPathTravelTimeDuringPlotting( pTempCharacterPath ); // add travel time for any prior path segments (stored in the selected character's mercpath, but waypoints aren't built) - iTravelTime += GetPathTravelTimeDuringPlotting( GetSoldierMercPathPtr( MercPtrs[ gCharactersList[ bCharNumber ].usSolID ] ) ); + iTravelTime += GetPathTravelTimeDuringPlotting( GetSoldierMercPathPtr( gCharactersList[ bCharNumber ].usSolID ) ); return( iTravelTime ); } @@ -15857,7 +15946,7 @@ INT16 CalcLocationValueForChar( INT32 iCounter ) if( gCharactersList[ iCounter ].fValid == FALSE ) return( sLocValue ); - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // don't reveal location of POWs! if( pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) @@ -15892,7 +15981,7 @@ void MakeMapModesSuitableForDestPlotting( INT8 bCharNumber ) if( gCharactersList[ bCharNumber ].fValid == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ bCharNumber ].usSolID ]; + pSoldier = gCharactersList[ bCharNumber ].usSolID; CancelSectorInventoryDisplayIfOn( FALSE ); @@ -15928,19 +16017,15 @@ void MakeMapModesSuitableForDestPlotting( INT8 bCharNumber ) BOOLEAN AnyMovableCharsInOrBetweenThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { - INT32 iFirstId = 0, iLastId = 0; - INT32 iCounter = 0; SOLDIERTYPE *pSoldier = NULL; - - // to speed it up a little? - iFirstId = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID iLastId = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for( iCounter = iFirstId; iCounter <= iLastId; iCounter++ ) + for( ; id <= iLastId; ++id) { // get the soldier - pSoldier = &Menptr[ iCounter ]; + pSoldier = id; // is the soldier active if( pSoldier->bActive == FALSE ) @@ -16182,23 +16267,23 @@ void RandomAwakeSelectedMercConfirmsStrategicMove( void ) SOLDIERTYPE *pSoldier = NULL; INT32 iCounter; // WDS - make number of mercenaries, etc. be configurable - UINT8 ubSelectedMercID[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; - UINT8 ubSelectedMercIndex[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + SoldierID ubSelectedMercID[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; + UINT16 ubSelectedMercIndex[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; for( iCounter = 0; iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounter++ ) { if( ( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if ( pSoldier->stats.bLife >= OKLIFE && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) && !pSoldier->flags.fMercAsleep ) { ubSelectedMercID[ ubNumMercs ] = pSoldier->ubID; - ubSelectedMercIndex[ ubNumMercs ] = (UINT8)iCounter; + ubSelectedMercIndex[ ubNumMercs ] = (UINT16)iCounter; ubNumMercs++; } @@ -16207,12 +16292,12 @@ void RandomAwakeSelectedMercConfirmsStrategicMove( void ) if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // select that merc so that when he speaks we're showing his portrait and not someone else ChangeSelectedInfoChar( ubSelectedMercIndex[ ubChosenMerc ], FALSE ); - MercPtrs[ ubSelectedMercID[ ubChosenMerc ] ]->DoMercBattleSound( BATTLE_SOUND_OK1 ); + ubSelectedMercID[ ubChosenMerc ]->DoMercBattleSound( BATTLE_SOUND_OK1 ); //TacticalCharacterDialogue( MercPtrs[ ubSelectedMercID[ ubChosenMerc ] ], ubQuoteNum ); } } @@ -16453,7 +16538,7 @@ void WakeUpAnySleepingSelectedMercsOnFootOrDriving( void ) { if( ( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // if asleep if ( pSoldier->flags.fMercAsleep ) @@ -16746,10 +16831,10 @@ void RememberPreviousPathForAllSelectedChars( void ) { if( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; // remember his previous path by copying it to his slot in the array kept for that purpose - gpCharacterPreviousMercPath[ iCounter ] = CopyPaths( GetSoldierMercPathPtr( MercPtrs[ gCharactersList[ iCounter ].usSolID ] ), gpCharacterPreviousMercPath[ iCounter ] ); + gpCharacterPreviousMercPath[ iCounter ] = CopyPaths( GetSoldierMercPathPtr( gCharactersList[ iCounter ].usSolID ), gpCharacterPreviousMercPath[ iCounter ] ); } } } @@ -16863,7 +16948,7 @@ void RestorePreviousPaths( void ) // if selected if( fSelectedListOfMercsForMapScreen[ iCounter ] == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ iCounter ].usSolID ]; + pSoldier = gCharactersList[ iCounter ].usSolID; if( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { @@ -16945,7 +17030,7 @@ void ClearPreviousPaths( void ) void SelectAllCharactersInSquad( INT8 bSquadNumber ) { - INT8 bCounter; + INT16 bCounter; BOOLEAN fFirstOne = TRUE; SOLDIERTYPE *pSoldier; @@ -16964,7 +17049,7 @@ void SelectAllCharactersInSquad( INT8 bSquadNumber ) // is this entry is valid if( gCharactersList[ bCounter ].fValid == TRUE ) { - pSoldier = MercPtrs[ gCharactersList[ bCounter ].usSolID ]; + pSoldier = gCharactersList[ bCounter ].usSolID; // if this guy is on that squad or in a vehicle which is assigned to that squad // NOTE: There's no way to select everyone aboard Skyrider with this function... @@ -17094,7 +17179,7 @@ void RequestContractMenu( void ) if ( CanExtendContractForCharSlot( bSelectedInfoChar ) ) { // create - RebuildContractBoxForMerc( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ); + RebuildContractBoxForMerc( gCharactersList[ bSelectedInfoChar ].usSolID ); // reset selected characters ResetAllSelectedCharacterModes( ); @@ -17103,7 +17188,7 @@ void RequestContractMenu( void ) giContractHighLine = bSelectedContractChar; // if not triggered internally - if ( CheckIfSalaryIncreasedAndSayQuote( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ], TRUE ) == FALSE ) + if ( CheckIfSalaryIncreasedAndSayQuote( gCharactersList[ bSelectedInfoChar ].usSolID, TRUE ) == FALSE ) { // show contract box fShowContractMenu = TRUE; @@ -17196,7 +17281,7 @@ INT32 GetTotalContractExpenses ( void ) while(gCharactersList[ubCounter].fValid) { - pSoldier = MercPtrs[ gCharactersList[ ubCounter ].usSolID ]; + pSoldier = gCharactersList[ ubCounter ].usSolID; // salary if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) { @@ -17402,9 +17487,9 @@ BOOLEAN MilitiaPlotStart( ) return FALSE; // as group size will be cut to MAX_STRATEGIC_ENEMY_GROUP_SIZE, see how many troops are allowed and reduce sector count accordingly - UINT8 greens = pSector->ubNumberOfCivsAtLevel[0]; - UINT8 regulars = pSector->ubNumberOfCivsAtLevel[1]; - UINT8 elites = pSector->ubNumberOfCivsAtLevel[2]; + UINT16 greens = pSector->ubNumberOfCivsAtLevel[0]; + UINT16 regulars = pSector->ubNumberOfCivsAtLevel[1]; + UINT16 elites = pSector->ubNumberOfCivsAtLevel[2]; // when we start plotting, the group is still empty - we add militia later GROUP* pGroup = CreateNewMilitiaGroupDepartingFromSector( SECTOR( sSelMapX, sSelMapY ), greens, regulars, elites ); @@ -17528,12 +17613,11 @@ BOOLEAN CanGiveStrategicMilitiaMoveOrder( INT16 sMapX, INT16 sMapY ) // 3. they are a radio operator in an adjacent sector // 4. they are a radio operator in a sector adjacent to the militia's town // 5. they are a radio operator in a town adjacent to the militia's sector - SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[OUR_TEAM].bFirstID; - UINT32 lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier ) + SoldierID id = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; id <= lastid; ++id) { + SOLDIERTYPE *pSoldier = id; if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) { BOOLEAN fRadioOperator = pSoldier->CanUseRadio( FALSE ); diff --git a/Strategic/mapscreen.h b/Strategic/mapscreen.h index 3b5a5835..7a464e84 100644 --- a/Strategic/mapscreen.h +++ b/Strategic/mapscreen.h @@ -123,6 +123,8 @@ struct UILayout_CharList int widthTimeRemaining; }; +extern MOUSE_REGION gMapViewRegion; + extern BOOLEAN fCharacterInfoPanelDirty; extern BOOLEAN fTeamPanelDirty; extern BOOLEAN fMapPanelDirty; @@ -134,8 +136,10 @@ extern BOOLEAN gfInChangeArrivalSectorMode; extern BOOLEAN gfSkyriderEmptyHelpGiven; +extern std::vector gSelectedSoldiers; -BOOLEAN SetInfoChar(UINT8 ubSolId); + +BOOLEAN SetInfoChar(SoldierID ubID); void EndMapScreen( BOOLEAN fDuringFade ); void ReBuildCharactersList( void ); @@ -148,11 +152,11 @@ void ChangeSelectedMapSector( INT16 sMapX, INT16 sMapY, INT8 bMapZ ); BOOLEAN CanToggleSelectedCharInventory( void ); -BOOLEAN CanExtendContractForCharSlot( INT8 bCharNumber ); +BOOLEAN CanExtendContractForCharSlot( INT16 bCharNumber ); void TellPlayerWhyHeCantCompressTime( void ); -void ChangeSelectedInfoChar( INT8 bCharNumber, BOOLEAN fResetSelectedList ); +void ChangeSelectedInfoChar( INT16 bCharNumber, BOOLEAN fResetSelectedList ); void MAPEndItemPointer(); @@ -166,10 +170,10 @@ void CancelChangeArrivalSectorMode( void ); void ExplainWhySkyriderCantFly( void ); -BOOLEAN CanChangeSleepStatusForCharSlot( INT8 bCharNumber ); +BOOLEAN CanChangeSleepStatusForCharSlot( INT16 bCharNumber ); BOOLEAN CanChangeSleepStatusForSoldier( SOLDIERTYPE *pSoldier ); -BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ); +BOOLEAN MapCharacterHasAccessibleInventory( INT16 bCharNumber ); // CHRISL: New functions to handle initialization of inventory coordinates BOOLEAN InitializeInvPanelCoordsOld( ); @@ -228,4 +232,4 @@ void RetreatBandageCallback( UINT8 ubResult ); bool isWidescreenUI(void); -#endif +#endif diff --git a/Strategic/strategic.cpp b/Strategic/strategic.cpp index 9d05b97a..f60076e8 100644 --- a/Strategic/strategic.cpp +++ b/Strategic/strategic.cpp @@ -101,16 +101,16 @@ BOOLEAN HandleStrategicDeath( SOLDIERTYPE *pSoldier ) void HandleSoldierDeadComments( SOLDIERTYPE *pSoldier ) { - INT32 cnt = 0; SOLDIERTYPE *pTeamSoldier; INT8 bBuddyIndex; // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; // see if this was the friend of a living merc - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive ) { bBuddyIndex = WhichBuddy( pTeamSoldier->ubProfile, pSoldier->ubProfile ); diff --git a/Strategic/strategicmap.cpp b/Strategic/strategicmap.cpp index 56c735eb..655116ce 100644 --- a/Strategic/strategicmap.cpp +++ b/Strategic/strategicmap.cpp @@ -184,8 +184,8 @@ BOOLEAN fUsingEdgePointsForStrategicEntry = FALSE; BOOLEAN gfInvalidTraversal = FALSE; BOOLEAN gfLoneEPCAttemptingTraversal = FALSE; BOOLEAN gfRobotWithoutControllerAttemptingTraversal = FALSE; -BOOLEAN gubLoneMercAttemptingToAbandonEPCs = 0; -INT8 gbPotentiallyAbandonedEPCSlotID = -1; +BOOLEAN gubLoneMercAttemptingToAbandonEPCs = 0; +SoldierID gbPotentiallyAbandonedEPCSlotID = NOBODY; INT8 gbGreenToElitePromotions = 0; INT8 gbGreenToRegPromotions = 0; @@ -1976,7 +1976,7 @@ void GetCurrentWorldSector( INT16 *psMapX, INT16 *psMapY ) } //not in overhead.h! -extern UINT8 NumEnemyInSector( ); +extern UINT16 NumEnemyInSector( ); void HandleRPCDescriptionOfSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) { @@ -2140,10 +2140,12 @@ BOOLEAN SetCurrentWorldSector( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) // GridNo = NOWHERE, which causes this assertion to fail //CHRISL: There's also an issue with vehicles. Soldiers in any vehicle are considered to be in sGridNo = NOWHERE // This will result in an assertion error, so let's skip the assertion if the merc is assigned to a vehicle - if (!(MercPtrs[i]->flags.uiStatusFlags & SOLDIER_DEAD) && MercPtrs[i]->bAssignment != VEHICLE && !SPY_LOCATION(MercPtrs[i]->bAssignment) && MercPtrs[i]->bAssignment != ASSIGNMENT_POW) + SOLDIERTYPE *pSoldier = MercPtrs[i]; + + if (!(pSoldier->flags.uiStatusFlags & SOLDIER_DEAD) && pSoldier->bAssignment != VEHICLE && !SPY_LOCATION(pSoldier->bAssignment) && pSoldier->bAssignment != ASSIGNMENT_POW) { - //Assert( !MercPtrs[i]->bActive || !MercPtrs[i]->bInSector || MercPtrs[i]->sGridNo != NOWHERE || MercPtrs[i]->bVehicleID == iHelicopterVehicleId ); - Assert( !MercPtrs[i]->bActive || !MercPtrs[i]->bInSector || !TileIsOutOfBounds( MercPtrs[i]->sGridNo ) || MercPtrs[i]->bVehicleID == iHelicopterVehicleId ); + //Assert( !pSoldier->bActive || !pSoldier->bInSector || pSoldier->sGridNo != NOWHERE || pSoldier->bVehicleID == iHelicopterVehicleId ); + Assert( !pSoldier->bActive || !pSoldier->bInSector || !TileIsOutOfBounds( pSoldier->sGridNo ) || pSoldier->bVehicleID == iHelicopterVehicleId ); } } @@ -2190,10 +2192,11 @@ BOOLEAN SetCurrentWorldSector( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) // GridNo = NOWHERE, which causes this assertion to fail //CHRISL: There's also an issue with vehicles. Soldiers in any vehicle are considered to be in sGridNo = NOWHERE // This will result in an assertion error, so let's skip the assertion if the merc is assigned to a vehicle - if (!(MercPtrs[i]->flags.uiStatusFlags & SOLDIER_DEAD) && MercPtrs[i]->bAssignment != VEHICLE && MercPtrs[i]->bAssignment != ASSIGNMENT_POW) + SOLDIERTYPE *pSoldier = MercPtrs[i]; + if (!(pSoldier->flags.uiStatusFlags & SOLDIER_DEAD) && pSoldier->bAssignment != VEHICLE && pSoldier->bAssignment != ASSIGNMENT_POW) { - //Assert( !MercPtrs[i]->bActive || !MercPtrs[i]->bInSector || MercPtrs[i]->sGridNo != NOWHERE || MercPtrs[i]->bVehicleID == iHelicopterVehicleId ); - Assert( !MercPtrs[i]->bActive || !MercPtrs[i]->bInSector || !TileIsOutOfBounds( MercPtrs[i]->sGridNo ) || MercPtrs[i]->bVehicleID == iHelicopterVehicleId ); + //Assert( !pSoldier->bActive || !pSoldier->bInSector || pSoldier->sGridNo != NOWHERE || pSoldier->bVehicleID == iHelicopterVehicleId ); + Assert( !pSoldier->bActive || !pSoldier->bInSector || !TileIsOutOfBounds( pSoldier->sGridNo ) || pSoldier->bVehicleID == iHelicopterVehicleId ); } } @@ -2426,15 +2429,15 @@ BOOLEAN MapExists( UINT8 * szFilename ) void RemoveMercsInSector( ) { - INT32 cnt; SOLDIERTYPE *pSoldier; // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; // ATE: only for OUR guys.. the rest is taken care of in TrashWorld() when a new sector is added... - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { pSoldier->RemoveSoldierFromGridNo( ); @@ -2695,7 +2698,6 @@ void HandleQuestCodeOnSectorEntry( INT16 sNewSectorX, INT16 sNewSectorY, INT8 bN //UINT8 ubRandomMiner[RANDOM_HEAD_MINERS] = { 106, 156, 157, 158 }; //UINT8 ubMiner, ubMinersPlaced, ubMine; UINT8 ubThisMine; - UINT8 cnt; SOLDIERTYPE * pSoldier; // are we in a mine sector, on the surface? @@ -2780,13 +2782,13 @@ void HandleQuestCodeOnSectorEntry( INT16 sNewSectorX, INT16 sNewSectorY, INT8 bN // Check to see if any player merc has the Chalice; if so, // note it as stolen - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { - if ( pSoldier->bActive ) + if ( cnt->bActive ) { - if ( FindObj( pSoldier, CHALICE ) != ITEM_NOT_FOUND ) + if ( FindObj( cnt, CHALICE ) != ITEM_NOT_FOUND ) { SetFactTrue( FACT_CHALICE_STOLEN ); } @@ -2948,7 +2950,6 @@ extern void SetLastTimePlayerWasInSector( ); // @calls SetLastTimePlayerWasInSector BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { - INT32 i; UNDERGROUND_SECTORINFO *pNode = NULL; CHAR8 bFilename[50]; @@ -2965,11 +2966,12 @@ BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) //@@@Evaluate if ( gfWorldLoaded ) { - for ( i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; i++ ) + for ( SoldierID i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++i ) { - if ( MercPtrs[i]->bActive && MercPtrs[i]->bInSector ) + SOLDIERTYPE *pSoldier = i; + if ( pSoldier->bActive && pSoldier->bInSector ) { - SetupProfileInsertionDataForSoldier( MercPtrs[i] ); + SetupProfileInsertionDataForSoldier( pSoldier ); } } } @@ -3095,7 +3097,6 @@ BOOLEAN EnterSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) void UpdateMercsInSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { - INT32 cnt; SOLDIERTYPE *pSoldier; BOOLEAN fPOWSquadSet = FALSE; UINT8 ubPOWSquad = 0; @@ -3125,8 +3126,9 @@ void UpdateMercsInSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) //if( !(gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) ) { - for ( cnt = 0, pSoldier = MercPtrs[cnt]; cnt < MAX_NUM_SOLDIERS; ++cnt, ++pSoldier ) + for ( SoldierID cnt = 0; cnt < MAX_NUM_SOLDIERS; ++cnt ) { + pSoldier = cnt; if ( gfRestoringEnemySoldiersFromTempFile && cnt >= gTacticalStatus.Team[ENEMY_TEAM].bFirstID && cnt <= gTacticalStatus.Team[CREATURE_TEAM].bLastID ) @@ -3950,7 +3952,6 @@ UINT8 GetStrategicInsertionDataFromAdjacentMoveDirection( UINT8 ubTacticalDirect void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 sAdditionalData )//dnl ch56 151009 { - INT32 cnt; SOLDIERTYPE *pSoldier; SOLDIERTYPE *pValidSoldier = NULL; GROUP *pGroup; @@ -3962,17 +3963,18 @@ void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 // Set initial selected // ATE: moved this towards top... - gubPreferredInitialSelectedGuy = (UINT8)gusSelectedSoldier; + gubPreferredInitialSelectedGuy = gusSelectedSoldier; if ( ubJumpCode == JUMP_ALL_LOAD_NEW || ubJumpCode == JUMP_ALL_NO_LOAD ) { // TODO: Check flags to see if we can jump! // Move controllable mercs! - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pSoldier = cnt; // If we are controllable if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) ) { @@ -3993,7 +3995,7 @@ void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 // This guy should always be 1 ) selected and 2 ) close enough to exit sector to leave if ( gusSelectedSoldier != NOBODY ) { - pValidSoldier = MercPtrs[gusSelectedSoldier]; + pValidSoldier = gusSelectedSoldier; ubDirection = GetInsertionDataFromAdjacentMoveDirection( ubTacticalDirection, sAdditionalData ); } @@ -4210,12 +4212,13 @@ void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 void JumpIntoEscapedSector(UINT8 ubTacticalDirection) { // Remove any incapacitated mercs from current squads and assign them to new squad - UINT32 i = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID; + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID; INT8 currentSquad = -1; - for (SOLDIERTYPE* pSoldier = MercPtrs[i]; i <= lastID; ++i, ++pSoldier) + for ( ; id <= lastID; ++id ) { + SOLDIERTYPE *pSoldier = id; // Are we not active in sector if (!pSoldier->bActive || !pSoldier->bInSector || pSoldier->stats.bLife >= OKLIFE) { @@ -4829,7 +4832,6 @@ BOOLEAN SoldierOKForSectorExit( SOLDIERTYPE * pSoldier, INT8 bExitDirection, INT //ATE: Returns FALSE if NOBODY is close enough, 1 if ONLY selected guy is and 2 if all on squad are... BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *puiTraverseTimeInMinutes )//dnl ch56 151009 { - INT32 cnt; SOLDIERTYPE *pSoldier; BOOLEAN fAtLeastOneMercControllable = FALSE; BOOLEAN fOnlySelectedGuy = FALSE; @@ -4839,13 +4841,13 @@ BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *pu UINT8 ubNumMercs = 0, ubNumEPCs = 0; UINT8 ubPlayerControllableMercsInSquad = 0; - if ( gusSelectedSoldier == NOBODY ) + if ( gusSelectedSoldier >= NOBODY ) { //must have a selected soldier to be allowed to tactically traverse. return FALSE; } // anv: vehicles can't use inner exit grids - if ( bExitDirection == (-1) && MercPtrs[gusSelectedSoldier]->bAssignment == VEHICLE ) + if ( bExitDirection == (-1) && gusSelectedSoldier->bAssignment == VEHICLE ) { return FALSE; } @@ -4869,14 +4871,15 @@ BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *pu gfInvalidTraversal = FALSE; gfLoneEPCAttemptingTraversal = FALSE; gubLoneMercAttemptingToAbandonEPCs = 0; - gbPotentiallyAbandonedEPCSlotID = -1; + gbPotentiallyAbandonedEPCSlotID = NOBODY; // Look through all mercs and check if they are within range of east end.... - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, ++pSoldier ) + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pSoldier = cnt; // If we are controllable if ( OK_CONTROLLABLE_MERC( pSoldier ) && (pSoldier->bAssignment == CurrentSquad( ) || (pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId != iHelicopterVehicleId && GetSoldierStructureForVehicle( pSoldier->iVehicleId )->bAssignment == CurrentSquad( ))) ) @@ -4894,7 +4897,7 @@ BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *pu { ubNumEPCs++; //Also record the EPC's slot ID incase we later build a string using the EPC's name. - gbPotentiallyAbandonedEPCSlotID = (INT8)cnt; + gbPotentiallyAbandonedEPCSlotID = cnt; if ( AM_A_ROBOT( pSoldier ) && !pSoldier->CanRobotBeControlled( ) ) { gfRobotWithoutControllerAttemptingTraversal = TRUE; @@ -4959,12 +4962,12 @@ BOOLEAN OKForSectorExit( INT8 bExitDirection, INT32 usAdditionalData, UINT32 *pu // If we are here, at least one guy is controllable in this sector, at least he can go! if ( fAtLeastOneMercControllable ) { - ubPlayerControllableMercsInSquad = (UINT8)NumberOfPlayerControllableMercsInSquad( MercPtrs[gusSelectedSoldier]->bAssignment ); + ubPlayerControllableMercsInSquad = (UINT8)NumberOfPlayerControllableMercsInSquad( gusSelectedSoldier->bAssignment ); if ( fAtLeastOneMercControllable <= ubPlayerControllableMercsInSquad ) { //if the selected merc is an EPC and we can only leave with that merc, then prevent it //as EPCs aren't allowed to leave by themselves. Instead of restricting this in the //exiting sector gui, we restrict it by explaining it with a message box. - if ( AM_AN_EPC( MercPtrs[gusSelectedSoldier] ) ) + if ( AM_AN_EPC( gusSelectedSoldier ) ) { if ( AM_A_ROBOT( pSoldier ) && !pSoldier->CanRobotBeControlled( ) ) { @@ -5153,7 +5156,7 @@ void SetSamHackStatus( INT16 sSectorX, INT16 sSectorY, INT8 sStatus ) BOOLEAN CanGoToTacticalInSector( INT16 sX, INT16 sY, UINT8 ubZ ) { - INT32 cnt; + SoldierID cnt; SOLDIERTYPE *pSoldier; // if not a valid sector @@ -5166,8 +5169,9 @@ BOOLEAN CanGoToTacticalInSector( INT16 sX, INT16 sY, UINT8 ubZ ) cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all living, fighting mercs on player's team. Robot and EPCs qualify! - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // ARM: now allows loading of sector with all mercs below OKLIFE as long as they're alive if( ( pSoldier->bActive && pSoldier->stats.bLife ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && ( pSoldier->bAssignment != IN_TRANSIT ) && ( pSoldier->bAssignment != ASSIGNMENT_POW ) && ( pSoldier->bAssignment != ASSIGNMENT_MINIEVENT ) && ( pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND ) && @@ -6426,8 +6430,6 @@ BOOLEAN IsSectorRoad( INT16 sSectorX, INT16 sSectorY ) BOOLEAN HandleDefiniteUnloadingOfWorld( UINT8 ubUnloadCode ) { - INT32 i; - // clear tactical queue ClearEventQueue( ); @@ -6489,11 +6491,12 @@ BOOLEAN HandleDefiniteUnloadingOfWorld( UINT8 ubUnloadCode ) //Setup the tactical existance of the current soldier. //@@@Evaluate - for ( i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; i++ ) + for ( SoldierID i = gTacticalStatus.Team[CIV_TEAM].bFirstID; i <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++i ) { - if ( MercPtrs[i]->bActive && MercPtrs[i]->bInSector ) + SOLDIERTYPE *pSoldier = i; + if ( pSoldier->bActive && pSoldier->bInSector ) { - SetupProfileInsertionDataForSoldier( MercPtrs[i] ); + SetupProfileInsertionDataForSoldier( pSoldier ); } } @@ -6509,21 +6512,23 @@ BOOLEAN HandlePotentialBringUpAutoresolveToFinishBattle( int pSectorX, int pSect { //We don't have mercs in the sector. Now, we check to see if there are BOTH enemies and militia. If both //co-exist in the sector, then make them fight for control of the sector via autoresolve. - for ( int i = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; i++ ) + for ( SoldierID i = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; i <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++i ) { - if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife ) + SOLDIERTYPE *pEnemy = i; + if ( pEnemy->bActive && pEnemy->stats.bLife ) { - if ( MercPtrs[i]->sSectorX == pSectorX && - MercPtrs[i]->sSectorY == pSectorY && - MercPtrs[i]->bSectorZ == pSectorZ ) + if ( pEnemy->sSectorX == pSectorX && + pEnemy->sSectorY == pSectorY && + pEnemy->bSectorZ == pSectorZ ) { //We have enemies, now look for militia! - for ( i = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; i <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; i++ ) + for ( SoldierID j = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; j <= gTacticalStatus.Team[MILITIA_TEAM].bLastID; ++j ) { - if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife && MercPtrs[i]->bSide == OUR_TEAM ) + SOLDIERTYPE *pMilitia = j; + if ( pMilitia->bActive && pMilitia->stats.bLife && pMilitia->bSide == OUR_TEAM ) { - if ( MercPtrs[i]->sSectorX == pSectorX && - MercPtrs[i]->sSectorY == pSectorY && - MercPtrs[i]->bSectorZ == pSectorZ ) + if ( pMilitia->sSectorX == pSectorX && + pMilitia->sSectorY == pSectorY && + pMilitia->bSectorZ == pSectorZ ) { //We have militia and enemies and no mercs! Let's finish this battle in autoresolve. gfEnteringMapScreen = TRUE; gfEnteringMapScreenToEnterPreBattleInterface = TRUE; @@ -6560,7 +6565,6 @@ BOOLEAN HandlePotentialBringUpAutoresolveToFinishBattle( int pSectorX, int pSect BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( ) { - INT32 i; INT16 sBattleSectorX, sBattleSectorY, sBattleSectorZ; //Don't bother checking this if we don't have a world loaded. @@ -6585,16 +6589,17 @@ BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( ) { //The user has decided to let the game autoresolve the current battle. if ( gWorldSectorX == sBattleSectorX && gWorldSectorY == sBattleSectorY && gbWorldSectorZ == sBattleSectorZ ) { - for ( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++ ) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i ) { //If we have a live and valid soldier - if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife && !MercPtrs[i]->flags.fBetweenSectors && !(MercPtrs[i]->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( MercPtrs[i] ) && !AM_AN_EPC( MercPtrs[i] ) ) + SOLDIERTYPE *pSoldier = i; + if ( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) ) { - if ( MercPtrs[i]->sSectorX == gWorldSectorX && - MercPtrs[i]->sSectorY == gWorldSectorY && - MercPtrs[i]->bSectorZ == gbWorldSectorZ ) + if ( pSoldier->sSectorX == gWorldSectorX && + pSoldier->sSectorY == gWorldSectorY && + pSoldier->bSectorZ == gbWorldSectorZ ) { - MercPtrs[i]->RemoveSoldierFromGridNo( ); - InitSoldierOppList( MercPtrs[i] ); + pSoldier->RemoveSoldierFromGridNo( ); + InitSoldierOppList( pSoldier ); } } } @@ -6602,13 +6607,14 @@ BOOLEAN CheckAndHandleUnloadingOfCurrentWorld( ) } else { //Check and see if we have any live mercs in the sector. - for ( i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; i++ ) + for ( SoldierID i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i ) { //If we have a live and valid soldier - if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife && !MercPtrs[i]->flags.fBetweenSectors && MercPtrs[i]->bInSector && !(MercPtrs[i]->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( MercPtrs[i] ) && !AM_AN_EPC( MercPtrs[i] ) ) + SOLDIERTYPE *pSoldier = i; + if ( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && pSoldier->bInSector && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) ) { - if ( MercPtrs[i]->sSectorX == gWorldSectorX && - MercPtrs[i]->sSectorY == gWorldSectorY && - MercPtrs[i]->bSectorZ == gbWorldSectorZ ) + if ( pSoldier->sSectorX == gWorldSectorX && + pSoldier->sSectorY == gWorldSectorY && + pSoldier->bSectorZ == gbWorldSectorZ ) { return FALSE; } @@ -7530,16 +7536,15 @@ void HandleMovingTheEnemiesToBeNearPlayerWhenEnteringComplexMap( ) //if the player made a 'noise' going through the gate at the end of the tunnel sector if ( gJa25SaveStruct.uiJa25GeneralFlags & JA_GF__DID_PLAYER_MAKE_SOUND_GOING_THROUGH_TUNNEL_GATE ) { - UINT8 cnt; - // //Move some of the enemies to be 'near' them player when the enter the room // // Loop through the list and move some of the enemies - cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; cnt++, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; ++cnt) { + pSoldier = cnt; //if the soldier is active, if ( pSoldier->bActive ) { @@ -7570,8 +7575,9 @@ void HandleMovingTheEnemiesToBeNearPlayerWhenEnteringComplexMap( ) while ( ubNumEnemiesMoved < 3 ) { cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; ++cnt ) { + pSoldier = cnt; //if the soldier is active, if ( pSoldier->bActive && pSoldier->sGridNo != 15705 && pSoldier->sGridNo != 15712 && pSoldier->sGridNo != 15233 ) { diff --git a/Strategic/strategicmap.h b/Strategic/strategicmap.h index 786f1c13..ee752a28 100644 --- a/Strategic/strategicmap.h +++ b/Strategic/strategicmap.h @@ -210,11 +210,11 @@ BOOLEAN EscapeDirectionIsValid( INT8 * pbDirection ); bool IsEscapeDirectionValid(WorldDirections pbDirection); //Used for determining the type of error message that comes up when you can't traverse to //an adjacent sector. THESE VALUES DO NOT NEED TO BE SAVED! -extern BOOLEAN gfInvalidTraversal; -extern BOOLEAN gfLoneEPCAttemptingTraversal; -extern BOOLEAN gfRobotWithoutControllerAttemptingTraversal; -extern UINT8 gubLoneMercAttemptingToAbandonEPCs; -extern INT8 gbPotentiallyAbandonedEPCSlotID; +extern BOOLEAN gfInvalidTraversal; +extern BOOLEAN gfLoneEPCAttemptingTraversal; +extern BOOLEAN gfRobotWithoutControllerAttemptingTraversal; +extern UINT8 gubLoneMercAttemptingToAbandonEPCs; +extern SoldierID gbPotentiallyAbandonedEPCSlotID; extern INT8 gbGreenToElitePromotions; extern INT8 gbGreenToRegPromotions; diff --git a/Tactical/Air Raid.cpp b/Tactical/Air Raid.cpp index 9e6c2fda..a74d0dc6 100644 --- a/Tactical/Air Raid.cpp +++ b/Tactical/Air Raid.cpp @@ -79,7 +79,7 @@ typedef struct { BOOLEAN fInAirRaid; BOOLEAN fAirRaidScheduled; - UINT8 ubAirRaidMode; + UINT8 ubAirRaidMode; UINT32 uiSoundSample; UINT32 uiRaidLastUpdate; BOOLEAN fFadingRaidIn; @@ -87,32 +87,32 @@ typedef struct INT8 bNumDives; INT8 bMaxDives; BOOLEAN fFadingRaidOut; - INT16 sDiveX; - INT16 sDiveY; - INT16 sDiveTargetLocation; - UINT8 ubDiveDirection; - INT16 sNumGridNosMoved; - INT32 iNumTurnsSinceLastDive; - INT32 iNumTurnsSinceDiveStarted; - INT32 iNumGridNosMovedThisTurn; + INT16 sDiveX; + INT16 sDiveY; + INT16 sDiveTargetLocation; + UINT8 ubDiveDirection; + INT16 sNumGridNosMoved; + INT32 iNumTurnsSinceLastDive; + INT32 iNumTurnsSinceDiveStarted; + INT32 iNumGridNosMovedThisTurn; BOOLEAN fAirRaidHasHadTurn; - UINT8 ubBeginTeamTurn; + UINT8 ubBeginTeamTurn; BOOLEAN fHaveTBBatton; AIR_RAID_DEFINITION AirRaidDef; - INT16 sRaidSoldierID; + SoldierID sRaidSoldierID; - INT16 sNotLocatedYet; - INT32 iNumFrames; + INT16 sNotLocatedYet; + INT32 iNumFrames; INT8 bLevel; INT8 bTeam; INT8 bSide; - UINT8 ubAttackerID; + SoldierID ubAttackerID; UINT16 usAttackingWeapon; - FLOAT dXPos; - FLOAT dYPos; - INT16 sX; - INT16 sY; + FLOAT dXPos; + FLOAT dYPos; + INT16 sX; + INT16 sY; INT32 sGridNo; @@ -187,7 +187,6 @@ void ScheduleAirRaid( AIR_RAID_DEFINITION *pAirRaidDef ) BOOLEAN BeginAirRaid( ) { - INT32 cnt=0; BOOLEAN fOK = FALSE; SOLDIERTYPE *pSoldier; gfQuoteSaid = FALSE; @@ -215,9 +214,10 @@ BOOLEAN BeginAirRaid( ) // Do we have any guys in here... DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("BeginAirRaid: check for mercs: first id = %d, last id = %d ",gTacticalStatus.Team[ gbPlayerNum ].bFirstID, gTacticalStatus.Team[ gbPlayerNum ].bLastID)); - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( cnt = 0, pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("BeginAirRaid: soldier id = %d, active = %d",pSoldier->ubID,pSoldier->bActive)); if ( pSoldier->bActive ) { @@ -305,27 +305,27 @@ BOOLEAN BeginAirRaid( ) INT32 PickLocationNearAnyMercInSector( ) { - UINT8 ubMercsInSector[ 20 ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubMercsInSector[ 20 ] = { 0 }; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt=0; // Loop through all our guys and randomly say one from someone in our sector DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"PickLocationNearAnyMercInSector"); // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: total guys = %d", gTacticalStatus.Team[ gbPlayerNum ].bLastID)); - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: looping %d",cnt)); if ( OK_INSECTOR_MERC( pTeamSoldier ) ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -334,7 +334,7 @@ INT32 PickLocationNearAnyMercInSector( ) DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: number of guys %d",ubNumMercs)); if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: chosen guy = %d",ubChosenMerc)); return( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->sGridNo ); @@ -1057,9 +1057,10 @@ void HandleAirRaid( ) DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleAirRaid: check for mercs: first id = %d, last id = %d ",gTacticalStatus.Team[ gbPlayerNum ].bFirstID, gTacticalStatus.Team[ gbPlayerNum ].bLastID)); SOLDIERTYPE * pSoldier; BOOLEAN fOK = FALSE; - int cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( cnt = 0, pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleAirRaid: soldier id = %d, active = %d",pSoldier->ubID,pSoldier->bActive)); if ( pSoldier->bActive ) { @@ -1349,7 +1350,7 @@ BOOLEAN SaveAirRaidInfoToSaveGameFile( HWFILE hFile ) //// sAirRaidSaveStruct.sRaidSoldierID = gpRaidSoldier->ubID; // } // else - sAirRaidSaveStruct.sRaidSoldierID = -1; + sAirRaidSaveStruct.sRaidSoldierID = NOBODY; memcpy( &sAirRaidSaveStruct.AirRaidDef, &gAirRaidDef, sizeof( AIR_RAID_DEFINITION ) ); @@ -1407,9 +1408,9 @@ BOOLEAN LoadAirRaidInfoFromSaveGameFile( HWFILE hFile ) giNumFrames = sAirRaidSaveStruct.iNumFrames; - if( sAirRaidSaveStruct.sRaidSoldierID != -1 ) + if( sAirRaidSaveStruct.sRaidSoldierID != NOBODY ) { - gpRaidSoldier = &Menptr[ sAirRaidSaveStruct.sRaidSoldierID ]; + gpRaidSoldier = sAirRaidSaveStruct.sRaidSoldierID; gpRaidSoldier->pathing.bLevel = sAirRaidSaveStruct.bLevel; gpRaidSoldier->bTeam = sAirRaidSaveStruct.bTeam; @@ -1447,12 +1448,12 @@ void EndAirRaid( ) if ( !gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && !gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive ) { SOLDIERTYPE * pTeamSoldier; - INT32 cnt; // Loop through all militia and restore them to peaceful status - cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++,pTeamSoldier++) + SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN; @@ -1462,8 +1463,9 @@ void EndAirRaid( ) cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; // Loop through all civs and restore them to peaceful status - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN; diff --git a/Tactical/Animation Cache.cpp b/Tactical/Animation Cache.cpp index ee3a3b7d..97ca7a87 100644 --- a/Tactical/Animation Cache.cpp +++ b/Tactical/Animation Cache.cpp @@ -20,16 +20,16 @@ void DetermineOptimumAnimationCacheSize( ) guiCacheSize = MIN_CACHE_SIZE; } -BOOLEAN InitAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ) +BOOLEAN InitAnimationCache( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache ) { UINT32 cnt; // Allocate entries - AnimDebugMsg( String( "*** Initializing anim cache surface for soldier %d", usSoldierID ) ); + AnimDebugMsg( String( "*** Initializing anim cache surface for soldier %d", usSoldierID.i ) ); pAnimCache->usCachedSurfaces = (UINT16 *) MemAlloc( sizeof( UINT16 ) * guiCacheSize ); CHECKF( pAnimCache->usCachedSurfaces!= NULL ); - AnimDebugMsg( String( "*** Initializing anim cache hit counter for soldier %d", usSoldierID ) ); + AnimDebugMsg( String( "*** Initializing anim cache hit counter for soldier %d", usSoldierID.i ) ); pAnimCache->sCacheHits = (INT16 *) MemAlloc( sizeof( UINT16) * guiCacheSize ); CHECKF( pAnimCache->sCacheHits!= NULL ); @@ -41,13 +41,13 @@ BOOLEAN InitAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnim } pAnimCache->ubCacheSize = 0; - // Zero surface databse history for this soldeir + // Zero surface database history for this soldier ClearAnimationSurfacesUsageHistory( usSoldierID ); return( TRUE ); } -void DeleteAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ) +void DeleteAnimationCache( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache ) { // Allocate entries if ( pAnimCache->usCachedSurfaces!= NULL ) @@ -64,7 +64,7 @@ void DeleteAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimC } -BOOLEAN GetCachedAnimationSurface( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache, UINT16 usSurfaceIndex, UINT16 usCurrentAnimation ) +BOOLEAN GetCachedAnimationSurface( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache, UINT16 usSurfaceIndex, UINT16 usCurrentAnimation ) { UINT8 cnt; UINT8 ubLowestIndex = 0; @@ -89,7 +89,7 @@ BOOLEAN GetCachedAnimationSurface( UINT16 usSoldierID, AnimationSurfaceCacheType AnimDebugMsg( String( "Anim Cache: Determining Bump Candidate ( Soldier %d )", usSoldierID ) ); // Determine exisiting surface used by merc - usCurrentAnimSurface = DetermineSoldierAnimationSurface( MercPtrs[ usSoldierID ], usCurrentAnimation ); + usCurrentAnimSurface = DetermineSoldierAnimationSurface( usSoldierID, usCurrentAnimation ); // If the surface we are going to bump is our existing animation, reject it as a candidate // If we get here, we need to remove an animation, pick the best one @@ -142,11 +142,11 @@ BOOLEAN GetCachedAnimationSurface( UINT16 usSoldierID, AnimationSurfaceCacheType } return( TRUE ); - } +} -void UnLoadCachedAnimationSurfaces( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ) +void UnLoadCachedAnimationSurfaces( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache ) { UINT8 cnt; diff --git a/Tactical/Animation Cache.h b/Tactical/Animation Cache.h index 78ad2ac3..635aa1ca 100644 --- a/Tactical/Animation Cache.h +++ b/Tactical/Animation Cache.h @@ -1,7 +1,7 @@ #ifndef __ANIMATION_CACHE_H #define __ANIMATION_CACHE_H -#include "types.h" +#include "Overhead Types.h" #define MAX_CACHE_SIZE 20 //#define MIN_CACHE_SIZE 2 @@ -18,12 +18,12 @@ typedef struct extern UINT32 guiCacheSize; -BOOLEAN GetCachedAnimationSurface( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache, UINT16 usSurfaceIndex, UINT16 usCurrentAnimation ); -BOOLEAN InitAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ); -void DeleteAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ); +BOOLEAN GetCachedAnimationSurface( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache, UINT16 usSurfaceIndex, UINT16 usCurrentAnimation ); +BOOLEAN InitAnimationCache( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache ); +void DeleteAnimationCache( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache ); void DetermineOptimumAnimationCacheSize( ); -void UnLoadCachedAnimationSurfaces( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ); +void UnLoadCachedAnimationSurfaces( SoldierID usSoldierID, AnimationSurfaceCacheType *pAnimCache ); -#endif +#endif diff --git a/Tactical/Animation Data.cpp b/Tactical/Animation Data.cpp index cf369488..d7b0974c 100644 --- a/Tactical/Animation Data.cpp +++ b/Tactical/Animation Data.cpp @@ -913,7 +913,7 @@ BOOLEAN DeInitAnimationSystem( ) -STRUCTURE_FILE_REF *InternalGetAnimationStructureRef( UINT8 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState, BOOLEAN fUseAbsolute ) +STRUCTURE_FILE_REF *InternalGetAnimationStructureRef( SoldierID usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState, BOOLEAN fUseAbsolute ) { INT8 bStructDataType; @@ -935,26 +935,26 @@ STRUCTURE_FILE_REF *InternalGetAnimationStructureRef( UINT8 usSoldierID, UINT16 if ( ( usAnimState == FALLFORWARD_FROMHIT_STAND || usAnimState == GENERIC_HIT_STAND || usAnimState == FALLFORWARD_FROMHIT_CROUCH || usAnimState == STANDING_BURST_HIT ) && !fUseAbsolute ) { - return( gAnimStructureDatabase[ MercPtrs[ usSoldierID ]->ubBodyType ][ S_STRUCT ].pStructureFileRef ); + return( gAnimStructureDatabase[ usSoldierID->ubBodyType ][ S_STRUCT ].pStructureFileRef ); } - return( gAnimStructureDatabase[ MercPtrs[ usSoldierID ]->ubBodyType ][ bStructDataType ].pStructureFileRef ); + return( gAnimStructureDatabase[ usSoldierID->ubBodyType ][ bStructDataType ].pStructureFileRef ); } -STRUCTURE_FILE_REF *GetAnimationStructureRef( UINT8 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ) +STRUCTURE_FILE_REF *GetAnimationStructureRef( SoldierID usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ) { return( InternalGetAnimationStructureRef( usSoldierID, usSurfaceIndex, usAnimState, FALSE ) ); } -STRUCTURE_FILE_REF *GetDefaultStructureRef( UINT8 usSoldierID ) +STRUCTURE_FILE_REF *GetDefaultStructureRef( SoldierID usSoldierID ) { - return( gAnimStructureDatabase[ MercPtrs[ usSoldierID ]->ubBodyType ][ DEFAULT_STRUCT ].pStructureFileRef ); + return( gAnimStructureDatabase[ usSoldierID->ubBodyType ][ DEFAULT_STRUCT ].pStructureFileRef ); } -// Surface mamagement functions -BOOLEAN LoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ) +// Surface management functions +BOOLEAN LoadAnimationSurface( SoldierID usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ) { AuxObjectData *pAuxData; @@ -1022,7 +1022,7 @@ BOOLEAN LoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 } // get structure data if any - pStructureFileRef = InternalGetAnimationStructureRef( (UINT8)usSoldierID, usSurfaceIndex, usAnimState, TRUE ); + pStructureFileRef = InternalGetAnimationStructureRef( usSoldierID, usSurfaceIndex, usAnimState, TRUE ); if ( pStructureFileRef != NULL ) { @@ -1075,7 +1075,7 @@ BOOLEAN LoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 } -BOOLEAN UnLoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex ) +BOOLEAN UnLoadAnimationSurface( SoldierID usSoldierID, UINT16 usSurfaceIndex ) { // Decrement usage flag, only if this soldier has it currently tagged if ( gbAnimUsageHistory[ usSurfaceIndex ][ usSoldierID ] > 0 ) @@ -1120,7 +1120,7 @@ BOOLEAN UnLoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex ) } -void ClearAnimationSurfacesUsageHistory( UINT16 usSoldierID ) +void ClearAnimationSurfacesUsageHistory( SoldierID usSoldierID ) { UINT32 cnt; diff --git a/Tactical/Animation Data.h b/Tactical/Animation Data.h index f194748c..79349537 100644 --- a/Tactical/Animation Data.h +++ b/Tactical/Animation Data.h @@ -688,16 +688,16 @@ extern AnimationStructureType gAnimStructureDatabase[ TOTALBODYTYPES ][ NUM_STRU // Functions BOOLEAN InitAnimationSystem( ); BOOLEAN DeInitAnimationSystem( ); -BOOLEAN LoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ); -BOOLEAN UnLoadAnimationSurface( UINT16 usSoldierID, UINT16 usSurfaceIndex ); -void ClearAnimationSurfacesUsageHistory( UINT16 usSoldierID ); +BOOLEAN LoadAnimationSurface( SoldierID usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ); +BOOLEAN UnLoadAnimationSurface( SoldierID usSoldierID, UINT16 usSurfaceIndex ); +void ClearAnimationSurfacesUsageHistory( SoldierID usSoldierID ); void DeleteAnimationProfiles( ); BOOLEAN LoadAnimationProfiles( ); -STRUCTURE_FILE_REF *GetAnimationStructureRef( UINT8 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ); -STRUCTURE_FILE_REF *GetDefaultStructureRef( UINT8 usSoldierID ); +STRUCTURE_FILE_REF *GetAnimationStructureRef( SoldierID usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ); +STRUCTURE_FILE_REF *GetDefaultStructureRef( SoldierID usSoldierID ); // Profile data extern ANIM_PROF *gpAnimProfiles; diff --git a/Tactical/Arms Dealer Init.cpp b/Tactical/Arms Dealer Init.cpp index 40682b17..8ee5a528 100644 --- a/Tactical/Arms Dealer Init.cpp +++ b/Tactical/Arms Dealer Init.cpp @@ -1699,7 +1699,7 @@ void RemoveRandomItemFromArmsDealerInventory( UINT8 ubArmsDealer, UINT16 usItemI } -BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT8 aMercID ) +BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, SoldierID aMercID ) { //Get Dealer ID from from merc Id INT8 bArmsDealer = GetArmsDealerIDFromMercID( usProfileID ); @@ -1710,7 +1710,7 @@ BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT8 aMercID ) // not if this isn't a proper profile if ( usProfileID == NO_PROFILE ) { - pSoldier = MercPtrs[aMercID]; + pSoldier = aMercID; if ( pSoldier && pSoldier->sNonNPCTraderID > 0 ) bArmsDealer = pSoldier->sNonNPCTraderID; diff --git a/Tactical/Arms Dealer Init.h b/Tactical/Arms Dealer Init.h index 1a409002..e32b3b8d 100644 --- a/Tactical/Arms Dealer Init.h +++ b/Tactical/Arms Dealer Init.h @@ -366,7 +366,7 @@ UINT32 GetTimeToFixItemBeingRepaired( UINT8 ubArmsDealer, UINT16 usItemIndex, UI BOOLEAN CanDealerTransactItem( UINT8 ubArmsDealer, UINT16 usItemIndex, BOOLEAN fPurchaseFromPlayer ); BOOLEAN CanDealerRepairItem( UINT8 ubArmsDealer, UINT16 usItemIndex ); -BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT8 aMercID ); +BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, SoldierID aMercID ); void MakeObjectOutOfDealerItems( DEALER_SPECIAL_ITEM *pSpclItemInfo, OBJECTTYPE *pObject ); void CreateObjectForDealer( int usItem, int status, int numObjects, OBJECTTYPE *pObject ); @@ -393,4 +393,4 @@ extern void GuaranteeAtLeastXItemsOfIndex( UINT8 ubArmsDealer, UINT16 usItemInd extern void GuaranteeAtMostNumOfItemsForItem( UINT8 ubArmsDealer, INT16 sItemIndex, UINT8 ubAtMostNumItems ); -#endif +#endif diff --git a/Tactical/Auto Bandage.cpp b/Tactical/Auto Bandage.cpp index b426268b..2c71bca9 100644 --- a/Tactical/Auto Bandage.cpp +++ b/Tactical/Auto Bandage.cpp @@ -85,14 +85,12 @@ BOOLEAN RemoveFacesForAutoBandage( void ); extern BOOLEAN CanCharacterAutoBandageTeammate( SOLDIERTYPE *pSoldier ); extern BOOLEAN CanCharacterBeAutoBandagedByTeammate( SOLDIERTYPE *pSoldier ); -extern UINT8 NumEnemyInSector( ); +extern UINT16 NumEnemyInSector( ); void BeginAutoBandage( ) { - INT32 cnt; - BOOLEAN fFoundAGuy = FALSE; - SOLDIERTYPE * pSoldier; - BOOLEAN fFoundAMedKit = FALSE; + BOOLEAN fFoundAGuy = FALSE; + BOOLEAN fFoundAMedKit = FALSE; // If we are in combat, we con't... if ( (gTacticalStatus.uiFlags & INCOMBAT) || (NumEnemyInSector() != 0) ) @@ -101,21 +99,21 @@ void BeginAutoBandage( ) return; } - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID soldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // check for anyone needing bandages - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, ++pSoldier ) + for ( ; soldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++soldier ) { // if the soldier isn't active or in sector, we have problems..leave - if ( !(pSoldier->bActive) || !(pSoldier->bInSector) || ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pSoldier->bAssignment == VEHICLE ) ) + if ( !(soldier->bActive) || !(soldier->bInSector) || ( soldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (soldier->bAssignment == VEHICLE ) ) { continue; } // can this character be helped out by a teammate? - if ( CanCharacterBeAutoBandagedByTeammate( pSoldier ) ) + if ( CanCharacterBeAutoBandagedByTeammate( soldier ) ) fFoundAGuy = TRUE; - if ( FindObjClass( pSoldier, IC_MEDKIT ) != NO_SLOT ) + if ( FindObjClass( soldier, IC_MEDKIT ) != NO_SLOT ) fFoundAMedKit = TRUE; if ( fFoundAGuy && fFoundAMedKit ) @@ -155,9 +153,6 @@ void BeginAutoBandage( ) void HandleAutoBandagePending( ) { - INT32 cnt; - SOLDIERTYPE *pSoldier = NULL; - // OK, if we have a pending autobandage.... // check some conditions if ( gTacticalStatus.fAutoBandagePending ) @@ -176,15 +171,15 @@ void HandleAutoBandagePending( ) } // Do any guys have pending actions...? - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt, ++pSoldier) + SoldierID soldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; soldier <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++soldier) { // Are we in sector? - if ( pSoldier->bActive ) + if ( soldier->bActive ) { - if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && !pSoldier->flags.fBetweenSectors ) + if ( soldier->sSectorX == gWorldSectorX && soldier->sSectorY == gWorldSectorY && soldier->bSectorZ == gbWorldSectorZ && !soldier->flags.fBetweenSectors ) { - if ( pSoldier->aiData.ubPendingAction != NO_PENDING_ACTION ) + if ( soldier->aiData.ubPendingAction != NO_PENDING_ACTION ) { return; } @@ -246,14 +241,14 @@ BOOLEAN HandleAutoBandage( ) ShadowVideoSurfaceRect( FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT ); InvalidateScreen( ); RefreshScreen( NULL ); - INT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - SOLDIERTYPE *pSoldier = NULL; - for (pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt, ++pSoldier) + + SoldierID soldier = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; soldier <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++soldier) { - if(pSoldier->bActive && pSoldier->bInSector && pSoldier->aiData.bAction != 0) + if(soldier->bActive && soldier->bInSector && soldier->aiData.bAction != 0) { //shadooow: this fixes autobandaging sometimes hang indefinitely - pSoldier->aiData.bAction = 0; + soldier->aiData.bAction = 0; } } } @@ -310,15 +305,13 @@ BOOLEAN HandleAutoBandage( ) BOOLEAN CreateAutoBandageString( void ) { - INT32 cnt; // WDS - make number of mercenaries, etc. be configurable - UINT8 ubDoctor[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS], ubDoctors = 0; + UINT16 ubDoctor[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS], ubDoctors = 0; UINT32 uiDoctorNameStringLength = 1; // for end-of-string character STR16 sTemp; - SOLDIERTYPE * pSoldier; - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt, ++pSoldier) + SoldierID pSoldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; pSoldier <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++pSoldier ) { if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && !(pSoldier->bCollapsed) && pSoldier->stats.bMedical > 0 && FindObjClass( pSoldier, IC_MEDKIT ) != NO_SLOT) { @@ -364,7 +357,7 @@ BOOLEAN CreateAutoBandageString( void ) return( FALSE ); } wcscpy( sTemp, L"" ); - for (cnt = 0; cnt < ubDoctors - 1; ++cnt) + for (UINT16 cnt = 0; cnt < ubDoctors - 1; ++cnt) { wcscat( sTemp, MercPtrs[ubDoctor[cnt]]->name ); if (ubDoctors > 2) @@ -394,10 +387,7 @@ void SetAutoBandageComplete( void ) void AutoBandage( BOOLEAN fStart ) { - SGPRect aRect; - UINT8 ubLoop; - INT32 cnt; - SOLDIERTYPE * pSoldier; + SGPRect aRect; if ( fStart ) { @@ -417,8 +407,8 @@ void AutoBandage( BOOLEAN fStart ) // Compress time... //SetGameTimeCompressionLevel( TIME_COMPRESS_5MINS ); - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt, ++pSoldier) + SoldierID pSoldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; pSoldier <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++pSoldier) { if ( pSoldier->bActive ) { @@ -456,11 +446,11 @@ void AutoBandage( BOOLEAN fStart ) gTacticalStatus.uiFlags &= ( ~OUR_MERCS_AUTO_MOVE ); // make sure anyone under AI control has their action cancelled - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt, ++pSoldier ) + SoldierID pSoldier = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; pSoldier <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++pSoldier ) { // 0verhaul: Make sure the merc is also in the sector before making him stand up! - if (pSoldier && pSoldier->bActive && pSoldier->bInSector) + if (pSoldier->bActive && pSoldier->bInSector) { ActionDone( pSoldier ); if ( pSoldier->bSlotItemTakenFrom != NO_SLOT ) @@ -480,11 +470,10 @@ void AutoBandage( BOOLEAN fStart ) } } - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop) + pSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; pSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++pSoldier ) { - pSoldier = MercPtrs[ubLoop]; - if (pSoldier && pSoldier->bActive && pSoldier->bInSector) + if ( pSoldier->bActive && pSoldier->bInSector) { ActionDone(pSoldier); @@ -553,7 +542,6 @@ void BeginAutoBandageCallBack( UINT8 bExitValue ) void SetUpAutoBandageUpdatePanel( void ) { - INT32 iNumberDoctoring = 0; INT32 iNumberPatienting = 0; INT32 iNumberOnTeam = 0; @@ -574,24 +562,21 @@ void SetUpAutoBandageUpdatePanel( void ) // grab number of potential grunts on players team iNumberOnTeam = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - // run through mercs on squad...if they can doctor, add to list + // run through mercs on squad...if they can be a doctor or patient, add to list for( iCounterA = 0; iCounterA < iNumberOnTeam; iCounterA++ ) { - if( CanCharacterAutoBandageTeammate( &Menptr[ iCounterA ] ) ) + SOLDIERTYPE *pSoldier = &Menptr[iCounterA]; + + if( CanCharacterAutoBandageTeammate( pSoldier )) { // add to list, up the count iDoctorList[ iNumberDoctoring ] = iCounterA; iNumberDoctoring++; } - } - - // run through mercs on squad, if they can patient, add to list - for( iCounterA = 0; iCounterA < iNumberOnTeam; iCounterA++ ) - { - if( CanCharacterBeAutoBandagedByTeammate( &Menptr[ iCounterA ] ) ) + if ( CanCharacterBeAutoBandagedByTeammate( pSoldier ) ) { // add to list, up the count - iPatientList[ iNumberPatienting ] = iCounterA; + iPatientList[iNumberPatienting] = iCounterA; iNumberPatienting++; } } @@ -1028,7 +1013,7 @@ BOOLEAN AddFacesToAutoBandageBox( void ) INT32 iCounter = 0; INT32 iNumberOfDoctors = 0; VOBJECT_DESC VObjectDesc; - + const MERCPROFILESTRUCT *profile; // WDS - make number of mercenaries, etc. be configurable // reset @@ -1044,21 +1029,24 @@ BOOLEAN AddFacesToAutoBandageBox( void ) // find a free slot if( iDoctorList[ iCounter ] != -1 ) { - if( gMercProfiles[ ( Menptr[ iDoctorList[ iCounter ] ] ).ubProfile ].ubFaceIndex < 100 ) + profile = &gMercProfiles[(Menptr[iDoctorList[iCounter]]).ubProfile]; + const UINT8 face = profile->ubFaceIndex; + + if( face < 100 ) { // grab filename of face - if ((iDoctorList[ iCounter ] != -1) && gMercProfiles[( Menptr[iDoctorList[iCounter]] ).ubProfile].Type == PROFILETYPE_IMP ) - sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%02d.sti", gMercProfiles[ ( Menptr[ iDoctorList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + if ( profile->Type == PROFILETYPE_IMP ) + sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%02d.sti", face ); else - sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%02d.sti", gMercProfiles[ ( Menptr[ iDoctorList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%02d.sti", face ); } else { // grab filename of face - if ((iDoctorList[ iCounter ] != -1) && gMercProfiles[( Menptr[iDoctorList[iCounter]] ).ubProfile].Type == PROFILETYPE_IMP ) - sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%03d.sti", gMercProfiles[ ( Menptr[ iDoctorList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + if ( profile->Type == PROFILETYPE_IMP ) + sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%03d.sti", face ); else - sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%03d.sti", gMercProfiles[ ( Menptr[ iDoctorList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%03d.sti", face ); } // load the face @@ -1077,21 +1065,24 @@ BOOLEAN AddFacesToAutoBandageBox( void ) // find a free slot if( iPatientList[ iCounter ] != -1 ) { - if( gMercProfiles[ ( Menptr[ iPatientList[ iCounter ] ] ).ubProfile ].ubFaceIndex < 100 ) + profile = &gMercProfiles[(Menptr[iPatientList[iCounter]]).ubProfile]; + const UINT8 face = profile->ubFaceIndex; + + if( face < 100 ) { // grab filename of face - if ((iPatientList[ iCounter ] != -1) && gMercProfiles[( Menptr[iPatientList[iCounter]] ).ubProfile].Type == PROFILETYPE_IMP ) - sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%02d.sti", gMercProfiles[ ( Menptr[ iPatientList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + if ( profile->Type == PROFILETYPE_IMP ) + sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%02d.sti", face ); else - sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%02d.sti", gMercProfiles[ ( Menptr[ iPatientList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%02d.sti", face ); } else { // grab filename of face - if ( (iPatientList[ iCounter ] != -1) && gMercProfiles[( Menptr[iPatientList[iCounter]] ).ubProfile].Type == PROFILETYPE_IMP ) - sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%03d.sti", gMercProfiles[ ( Menptr[ iPatientList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + if ( profile->Type == PROFILETYPE_IMP ) + sprintf( VObjectDesc.ImageFile, "IMPFaces\\65Face\\%03d.sti", face ); else - sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%03d.sti", gMercProfiles[ ( Menptr[ iPatientList[ iCounter ] ] ).ubProfile ].ubFaceIndex ); + sprintf( VObjectDesc.ImageFile, "Faces\\65Face\\%03d.sti", face ); } // load the face @@ -1233,15 +1224,15 @@ BOOLEAN RetreatBandagingPending() } // return the ID of best doctor that has a medkit and is travelling with pPatient -UINT16 GetBestRetreatingMercDoctor( SOLDIERTYPE* pPatient ) +SoldierID GetBestRetreatingMercDoctor( SOLDIERTYPE* pPatient ) { // if this is a travelling, bleeding merc, can somebody who travels with him bandage him/her? if ( pPatient && pPatient->bActive && pPatient->flags.fBetweenSectors && pPatient->bBleeding ) { - UINT16 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - SOLDIERTYPE* pSoldier = NULL; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt, ++pSoldier ) + SoldierID ID = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; ID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ID ) { + SOLDIERTYPE *pSoldier = ID; // this requires mercs to travel and thus NOT be in a sector // also we need to be in a specific sector if ( pSoldier->bActive && pSoldier->flags.fBetweenSectors && pSoldier->sSectorX == pPatient->sSectorX && pSoldier->sSectorY == pPatient->sSectorY ) @@ -1249,7 +1240,7 @@ UINT16 GetBestRetreatingMercDoctor( SOLDIERTYPE* pPatient ) // find the best conscious doctor that has a medkit if ( pSoldier->stats.bLife >= OKLIFE && pSoldier->stats.bMedical > 0 && FindObjClass( pSoldier, IC_MEDKIT ) != NO_SLOT ) { - return cnt; + return ID; } } } @@ -1278,12 +1269,12 @@ void HandleRetreatBandaging() BOOLEAN needhelpinsector = FALSE; INT16 sX = -1; INT16 sY = -1; - UINT16 possiblepatient = NOBODY; + SoldierID possiblepatient = NOBODY; - UINT16 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - SOLDIERTYPE* pSoldier = NULL; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt, ++pSoldier ) + SoldierID ID = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; ID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ID ) { + SOLDIERTYPE* pSoldier = ID; // this requires mercs to travel and thus NOT be in a sector // are we bleeding? if ( pSoldier->bActive && pSoldier->flags.fBetweenSectors && pSoldier->bBleeding ) @@ -1327,7 +1318,7 @@ void HandleRetreatBandaging() needhelpinsector = TRUE; sX = pSoldier->sSectorX; sY = pSoldier->sSectorY; - possiblepatient = cnt; + possiblepatient = ID; } } } @@ -1336,16 +1327,17 @@ void HandleRetreatBandaging() if ( needhelpinsector && possiblepatient != NOBODY) { // find the best doctor here - UINT16 bestdoctorid = GetBestRetreatingMercDoctor( MercPtrs[possiblepatient] ); + SoldierID bestdoctorid = GetBestRetreatingMercDoctor( MercPtrs[possiblepatient] ); if ( bestdoctorid != NOBODY ) { // have the doctor treat people - SOLDIERTYPE* pDoctor = MercPtrs[bestdoctorid]; + SOLDIERTYPE* pDoctor = bestdoctorid; - cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt, ++pSoldier ) + SoldierID ID = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; ID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ID) { + SOLDIERTYPE *pSoldier = ID; // this requires mercs to travel and thus NOT be in a sector // also we need to be in a specific sector // treat bleeding people only diff --git a/Tactical/Auto Bandage.h b/Tactical/Auto Bandage.h index 057990b1..ebcdbc88 100644 --- a/Tactical/Auto Bandage.h +++ b/Tactical/Auto Bandage.h @@ -21,8 +21,8 @@ void SetRetreatBandaging( BOOLEAN aVal ); BOOLEAN RetreatBandagingPending( ); // return the ID of best doctor that has a medkit and is travelling with pPatient -UINT16 GetBestRetreatingMercDoctor( SOLDIERTYPE* pPatient ); +SoldierID GetBestRetreatingMercDoctor( SOLDIERTYPE* pPatient ); void HandleRetreatBandaging( ); -#endif +#endif diff --git a/Tactical/Boxing.cpp b/Tactical/Boxing.cpp index 0b1efae7..9b3ed976 100644 --- a/Tactical/Boxing.cpp +++ b/Tactical/Boxing.cpp @@ -23,13 +23,13 @@ #include "message.h" #include "GameSettings.h" // added by SANDRO -INT32 gsBoxerGridNo[ NUM_BOXERS ] = { 11393, 11233, 11073 }; -UINT8 gubBoxerID[ NUM_BOXERS ] = { NOBODY, NOBODY, NOBODY }; -BOOLEAN gfBoxerFought[ NUM_BOXERS ] = { FALSE, FALSE, FALSE }; -BOOLEAN gfLastBoxingMatchWonByPlayer = FALSE; -UINT8 gubBoxingMatchesWon = 0; -UINT8 gubBoxersRests = 0; -BOOLEAN gfBoxersResting = FALSE; +INT32 gsBoxerGridNo[ NUM_BOXERS ] = { 11393, 11233, 11073 }; +SoldierID gubBoxerID[ NUM_BOXERS ] = { NOBODY, NOBODY, NOBODY }; +BOOLEAN gfBoxerFought[ NUM_BOXERS ] = { FALSE, FALSE, FALSE }; +BOOLEAN gfLastBoxingMatchWonByPlayer = FALSE; +UINT8 gubBoxingMatchesWon = 0; +UINT8 gubBoxersRests = 0; +BOOLEAN gfBoxersResting = FALSE; extern void RecalculateOppCntsDueToBecomingNeutral( SOLDIERTYPE * pSoldier ); @@ -326,8 +326,8 @@ void CountPeopleInBoxingRingAndDoActions( void ) BOOLEAN CheckOnBoxers( void ) { - UINT32 uiLoop; - UINT8 ubID; + UINT32 uiLoop; + SoldierID ubID; // repick boxer IDs every time if ( gubBoxerID[0] == NOBODY ) @@ -337,15 +337,15 @@ BOOLEAN CheckOnBoxers( void ) { ubID = WhoIsThere2( gsBoxerGridNo[ uiLoop ], 0 ); - // WANNE: Safty check! + // WANNE: Safety check! if (ubID < TOTAL_SOLDIERS) { - if ( FindObjClass( MercPtrs[ ubID ], IC_WEAPON ) == NO_SLOT && - IS_MERC_BODY_TYPE( MercPtrs[ ubID ] ) ) + if ( FindObjClass( ubID, IC_WEAPON ) == NO_SLOT && + IS_MERC_BODY_TYPE( ubID ) ) { // no weapon and not a civilian so this guy is a boxer gubBoxerID[ uiLoop ] = ubID; - DebugQuestInfo(String("CheckOnBoxers: set gubBoxerID[%d] %d", ubID, gubBoxerID[uiLoop])); + DebugQuestInfo(String("CheckOnBoxers: set gubBoxerID[%d] to %d", uiLoop, ubID.i)); } } } @@ -375,8 +375,8 @@ BOOLEAN BoxerExists( void ) BOOLEAN PickABoxer( void ) { - UINT32 uiLoop; - SOLDIERTYPE* pBoxer; + UINT32 uiLoop; + SOLDIERTYPE *pBoxer; for( uiLoop = 0; uiLoop < NUM_BOXERS; ++uiLoop ) { @@ -385,11 +385,11 @@ BOOLEAN PickABoxer( void ) if ( gfBoxerFought[ uiLoop ] ) { // pathetic attempt to prevent multiple AI boxers - MercPtrs[ gubBoxerID[ uiLoop ] ]->DeleteBoxingFlag(); + gubBoxerID[ uiLoop ]->DeleteBoxingFlag(); } else { - pBoxer = MercPtrs[ gubBoxerID[ uiLoop ] ]; + pBoxer = gubBoxerID[ uiLoop ]; // pick this boxer! if ( pBoxer->bActive && pBoxer->bInSector && pBoxer->stats.bLife >= OKLIFE ) { @@ -446,7 +446,7 @@ BOOLEAN BoxerAvailable( void ) { if ( gubBoxerID[ ubLoop ] != NOBODY && !gfBoxerFought[ ubLoop ] ) { - if( MercPtrs[ gubBoxerID[ ubLoop ] ]->bActive && MercPtrs[ gubBoxerID[ ubLoop ] ]->bInSector && MercPtrs[ gubBoxerID[ ubLoop ] ]->stats.bLife >= OKLIFE ) + if( gubBoxerID[ ubLoop ]->bActive && gubBoxerID[ ubLoop ]->bInSector && gubBoxerID[ ubLoop ]->stats.bLife >= OKLIFE ) return( TRUE ); } } @@ -458,13 +458,13 @@ BOOLEAN BoxerAvailable( void ) // SEQUEL FIGHT. Maybe we could check Kingpin's location instead! UINT8 BoxersAvailable( void ) { - UINT8 ubCount = 0; + UINT8 ubCount = 0; for (UINT8 ubLoop = 0; ubLoop < NUM_BOXERS; ++ubLoop) { if ( gubBoxerID[ ubLoop ] != NOBODY && !gfBoxerFought[ ubLoop ] ) { - if( MercPtrs[ gubBoxerID[ ubLoop ] ]->bActive && MercPtrs[ gubBoxerID[ ubLoop ] ]->bInSector && MercPtrs[ gubBoxerID[ ubLoop ] ]->stats.bLife >= OKLIFE ) + if( gubBoxerID[ ubLoop ]->bActive && gubBoxerID[ ubLoop ]->bInSector && gubBoxerID[ ubLoop ]->stats.bLife >= OKLIFE ) ++ubCount; } } @@ -478,9 +478,7 @@ BOOLEAN AnotherFightPossible( void ) // a player has at least OKLIFE + 5 life // and at least one fight HAS occurred - UINT8 ubLoop; - SOLDIERTYPE * pSoldier; - UINT8 ubAvailable; + UINT8 ubAvailable; ubAvailable = BoxersAvailable(); @@ -490,9 +488,8 @@ BOOLEAN AnotherFightPossible( void ) } // Loop through all mercs on player team - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - pSoldier = MercPtrs[ ubLoop ]; - for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop, pSoldier++ ) + SoldierID pSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; pSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++pSoldier ) { if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > (OKLIFE + 5) && !pSoldier->bCollapsed ) { diff --git a/Tactical/Boxing.h b/Tactical/Boxing.h index 8c9222f6..8f0dd5c5 100644 --- a/Tactical/Boxing.h +++ b/Tactical/Boxing.h @@ -19,14 +19,14 @@ enum DisqualificationReasons BAD_ATTACK } ; -extern INT32 gsBoxerGridNo[ NUM_BOXERS ]; -extern UINT8 gubBoxerID[ NUM_BOXERS ]; -extern BOOLEAN gfBoxerFought[ NUM_BOXERS ]; -extern INT8 gbBoxingState; -extern BOOLEAN gfLastBoxingMatchWonByPlayer; -extern UINT8 gubBoxingMatchesWon; -extern UINT8 gubBoxersRests; -extern BOOLEAN gfBoxersResting; +extern INT32 gsBoxerGridNo[ NUM_BOXERS ]; +extern SoldierID gubBoxerID[ NUM_BOXERS ]; +extern BOOLEAN gfBoxerFought[ NUM_BOXERS ]; +extern INT8 gbBoxingState; +extern BOOLEAN gfLastBoxingMatchWonByPlayer; +extern UINT8 gubBoxingMatchesWon; +extern UINT8 gubBoxersRests; +extern BOOLEAN gfBoxersResting; extern void BoxingPlayerDisqualified( SOLDIERTYPE * pOffender, INT8 bReason ); extern BOOLEAN PickABoxer( void ); @@ -43,4 +43,4 @@ extern BOOLEAN BoxerExists( void ); extern UINT8 CountPeopleInBoxingRing( void ); extern void ClearAllBoxerFlags( void ); -#endif +#endif diff --git a/Tactical/Bullets.h b/Tactical/Bullets.h index 6ae4cbed..58d45171 100644 --- a/Tactical/Bullets.h +++ b/Tactical/Bullets.h @@ -30,49 +30,49 @@ typedef struct LEVELNODE* pNodes[BULLET_TRACER_MAX_LENGTH]; //afp-end INT32 iBullet; - UINT8 ubFirerID; - UINT8 ubTargetID; - INT8 bStartCubesAboveLevelZ; - INT8 bEndCubesAboveLevelZ; - INT32 sGridNo; + SoldierID ubFirerID; + SoldierID ubTargetID; + INT8 bStartCubesAboveLevelZ; + INT8 bEndCubesAboveLevelZ; + INT32 sGridNo; INT16 sUnused; - UINT16 usLastStructureHit; - FIXEDPT qCurrX; - FIXEDPT qCurrY; - FIXEDPT qCurrZ; - FIXEDPT qIncrX; - FIXEDPT qIncrY; - FIXEDPT qIncrZ; - DOUBLE ddHorizAngle; + UINT16 usLastStructureHit; + FIXEDPT qCurrX; + FIXEDPT qCurrY; + FIXEDPT qCurrZ; + FIXEDPT qIncrX; + FIXEDPT qIncrY; + FIXEDPT qIncrZ; + DOUBLE ddHorizAngle; INT32 iCurrTileX; INT32 iCurrTileY; - INT8 bLOSIndexX; - INT8 bLOSIndexY; - BOOLEAN fCheckForRoof; + INT8 bLOSIndexX; + INT8 bLOSIndexY; + BOOLEAN fCheckForRoof; INT32 iCurrCubesZ; INT32 iLoop; - BOOLEAN fAllocated; - BOOLEAN fToDelete; - BOOLEAN fLocated; - BOOLEAN fReal; - BOOLEAN fAimed; - UINT32 uiLastUpdate; + BOOLEAN fAllocated; + BOOLEAN fToDelete; + BOOLEAN fLocated; + BOOLEAN fReal; + BOOLEAN fAimed; + UINT32 uiLastUpdate; UINT8 ubTilesPerUpdate; - UINT16 usClockTicksPerUpdate; - SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first - INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile - INT32 sTargetGridNo; + UINT16 usClockTicksPerUpdate; + SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first + INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile + INT32 sTargetGridNo; INT16 sHitBy; INT32 iImpact; INT32 iImpactReduction; INT32 iRange; INT32 iDistanceLimit; - UINT16 usFlags; - ANITILE *pAniTile; - ANITILE *pShadowAniTile; + UINT16 usFlags; + ANITILE *pAniTile; + ANITILE *pShadowAniTile; UINT16 ubItemStatus; - UINT16 fromItem; - INT32 flash; + UINT16 fromItem; + INT32 flash; // HEADROCK HAM B2.5: Experimental bullet tracer info. If the new tracer system is activated, this flag tells // the bullet animation functions to create a lightpath for this bullet. This means now all bullets in a tracer // magazine will cause a lightshow (that's the intended result). @@ -83,7 +83,7 @@ typedef struct extern UINT32 guiNumBullets; -INT32 CreateBullet( UINT8 ubFirer, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ); +INT32 CreateBullet( SoldierID ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ); void RemoveBullet( INT32 iBullet ); void StopBullet( INT32 iBullet ); void UpdateBullets( ); @@ -107,4 +107,4 @@ BOOLEAN SaveBulletStructureToSaveGameFile( HWFILE hFile ); BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile ); -#endif +#endif diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index 81afbea3..1e17c3a9 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -1836,13 +1836,9 @@ void TestDumpStatChanges(void) void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType ) { - UINT16 usXPs = 0; - UINT8 ubGuynum; - SOLDIERTYPE *pSoldier; - - Assert ( ubExpBonusType < NUM_EXP_BONUS_TYPES ); + UINT16 usXPs = 0; switch ( ubExpBonusType ) { case EXP_BONUS_MINIMUM: usXPs = 25; break; @@ -1853,9 +1849,9 @@ void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType ) } // to do: find guys in sector on the currently active squad, those that are conscious get this amount in XPs - for ( ubGuynum = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pSoldier = MercPtrs[ ubGuynum ]; - ubGuynum <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; - ubGuynum++, pSoldier++ ) + for ( SoldierID pSoldier = gTacticalStatus.Team[ gbPlayerNum ].bFirstID ; + pSoldier <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; + ++pSoldier) { if ( pSoldier->bActive && pSoldier->bInSector && IsMercOnCurrentSquad( pSoldier ) && ( pSoldier->stats.bLife >= CONSCIOUSNESS ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) ) diff --git a/Tactical/Civ Quotes.cpp b/Tactical/Civ Quotes.cpp index 12965cf1..bd36f7fe 100644 --- a/Tactical/Civ Quotes.cpp +++ b/Tactical/Civ Quotes.cpp @@ -1093,9 +1093,8 @@ BOOLEAN LoadCivQuotesFromLoadGameFile( HWFILE hFile ) return( TRUE ); } //-------------------------------------------------------------- - // anv: start enemy taunt with probabilty depending on taunt settings -void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, UINT32 uiTargetID ) +void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SoldierID uiTargetID ) { SOLDIERTYPE *pTarget = NULL; if( uiTargetID != NOBODY ) @@ -2309,7 +2308,7 @@ BOOLEAN PlayVoiceTaunt(SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTa if ((OutFile = fopen("VoiceTauntLog.txt", "a+t")) != NULL) { fprintf(OutFile, "Soldier [%d] TauntType %d %s\n", - pCiv->ubID, + pCiv->ubID.i, iTauntType, filename); fclose(OutFile); diff --git a/Tactical/Civ Quotes.h b/Tactical/Civ Quotes.h index 8cc83770..4dda1ae0 100644 --- a/Tactical/Civ Quotes.h +++ b/Tactical/Civ Quotes.h @@ -154,7 +154,7 @@ enum TAUNTTYPE//enemy taunts - SANDRO TAUNT_RIPOSTE }; -void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, UINT32 uiTargetID = NOBODY ); +void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SoldierID uiTargetID = NOBODY ); void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget = NULL ); //enemy taunts - SANDRO // anv: added pTarget argument void ShowTauntPopupBox( SOLDIERTYPE *pCiv, STR16 gzTauntQuote ); @@ -179,4 +179,4 @@ void BeginChatQuote( SOLDIERTYPE *pCiv, INT16 sX, INT16 sY ); BOOLEAN CivQuoteActive(); -#endif +#endif diff --git a/Tactical/Dialogue Control.cpp b/Tactical/Dialogue Control.cpp index 224fe5c4..cf81581a 100644 --- a/Tactical/Dialogue Control.cpp +++ b/Tactical/Dialogue Control.cpp @@ -173,7 +173,7 @@ UINT8 gubNumStopTimeQuotes = 2; std::queue ghDialogueQ; FACETYPE *gpCurrentTalkingFace = NULL; -UINT8 gubCurrentTalkingID = NO_PROFILE; +UINT16 gubCurrentTalkingID = NO_PROFILE; INT8 gbUIHandlerID; INT32 giNPCReferenceCount = 0; @@ -658,13 +658,13 @@ void HandleDialogue( ) { if( gfMorrisShouldSayHi ) { - SOLDIERTYPE * pMorris; - SOLDIERTYPE * pSoldier; - INT16 sPlayerGridNo; - UINT8 ubPlayerID; - UINT8 ubQualifiedSoldierIDArray[ NUM_MERCS_WITH_NEW_QUOTES ]; - UINT8 ubNumQualifiedMercs=0; - UINT8 ubCnt=0; + SOLDIERTYPE *pMorris; + SOLDIERTYPE *pSoldier; + INT16 sPlayerGridNo; + SoldierID ubPlayerID; + SoldierID ubQualifiedSoldierIDArray[ NUM_MERCS_WITH_NEW_QUOTES ]; + UINT8 ubNumQualifiedMercs=0; + UINT8 ubCnt=0; if( !( gMercProfiles[ MORRIS_UB ].ubMiscFlags2 & PROFILE_MISC_FLAG2_SAID_FIRSTSEEN_QUOTE ) ) { @@ -677,7 +677,7 @@ void HandleDialogue( ) ubPlayerID = WhoIsThere2( sPlayerGridNo, 0 ); if (ubPlayerID != NOBODY) { - InitiateConversation( pMorris, MercPtrs[ ubPlayerID ], NPC_INITIAL_QUOTE, 0 ); + InitiateConversation( pMorris, ubPlayerID, NPC_INITIAL_QUOTE, 0 ); gMercProfiles[ pMorris->ubProfile ].ubMiscFlags2 |= PROFILE_MISC_FLAG2_SAID_FIRSTSEEN_QUOTE; } } @@ -694,7 +694,7 @@ void HandleDialogue( ) //loop through all the mercs for( ubCnt=0; ubCntusQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_MORRIS; @@ -720,7 +720,7 @@ void HandleDialogue( ) { SOLDIERTYPE * pMike; INT32 sPlayerGridNo; - UINT8 ubPlayerID; + UINT16 ubPlayerID; pMike = FindSoldierByProfileID( MIKE, FALSE ); if ( pMike ) @@ -901,11 +901,11 @@ void HandleDialogue( ) } else if ( QItem.uiSpecialEventFlag & DIALOGUE_SPECIAL_EVENT_CONTRACT_WANTS_TO_RENEW ) { - HandleMercIsWillingToRenew( (UINT8)QItem.uiSpecialEventData ); + HandleMercIsWillingToRenew( (UINT16)QItem.uiSpecialEventData ); } else if ( QItem.uiSpecialEventFlag & DIALOGUE_SPECIAL_EVENT_CONTRACT_NOGO_TO_RENEW ) { - HandleMercIsNotWillingToRenew( (UINT8)QItem.uiSpecialEventData ); + HandleMercIsNotWillingToRenew( (UINT16)QItem.uiSpecialEventData ); } else { @@ -978,7 +978,7 @@ void HandleDialogue( ) gTacticalStatus.fLockItemLocators = FALSE; // Slide to location! - SlideToLocation( 0, QItem.uiSpecialEventData ); + SlideToLocation( QItem.uiSpecialEventData ); // Flugente: only set up face if we can access correctly if ( QItem.iFaceIndex >= 0 ) @@ -1596,7 +1596,7 @@ BOOLEAN TacticalCharacterDialogue( SOLDIERTYPE *pSoldier, UINT16 usQuoteNum ) { if ( pSoldier->CanRobotBeControlled( ) ) { - return( TacticalCharacterDialogue( MercPtrs[ pSoldier->ubRobotRemoteHolderID ], usQuoteNum ) ); + return( TacticalCharacterDialogue( pSoldier->ubRobotRemoteHolderID, usQuoteNum ) ); } else { @@ -1760,9 +1760,10 @@ void AdditionalTacticalCharacterDialogue_AllInSector(INT16 aSectorX, INT16 aSect UINT16 usEventNr, UINT32 aData1, UINT32 aData2, UINT32 aData3, INT32 aAroundGridno, INT32 aRadius ) { SOLDIERTYPE* pSoldier; - int cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->stats.bLife >= OKLIFE && pSoldier->bActive && pSoldier->ubProfile != ausIgnoreProfile && pSoldier->sSectorX == aSectorX && pSoldier->sSectorY == aSectorY && pSoldier->bSectorZ == aSectorZ && @@ -1888,7 +1889,7 @@ BOOLEAN CharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32 iFaceI { if ( gusSelectedSoldier != NOBODY ) { - AdditionalTacticalCharacterDialogue_CallsLua( MercPtrs[gusSelectedSoldier], ADE_DIALOGUE_REACTION, ubCharacterNum, usQuoteNum, ( gMercProfiles[ubCharacterNum].ubMiscFlags & PROFILE_MISC_FLAG_RECRUITED ) ? 1 : 0 ); + AdditionalTacticalCharacterDialogue_CallsLua( gusSelectedSoldier, ADE_DIALOGUE_REACTION, ubCharacterNum, usQuoteNum, ( gMercProfiles[ubCharacterNum].ubMiscFlags & PROFILE_MISC_FLAG_RECRUITED ) ? 1 : 0 ); } } // if team members talk, anyone may answer @@ -1993,7 +1994,7 @@ BOOLEAN SpecialCharacterDialogueEventWithExtraParam( UINT32 uiSpecialEventFlag, } extern INT8 gbSelectedArmsDealerID; -extern UINT8 gusIDOfCivTrader; +extern SoldierID gusIDOfCivTrader; BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32 iFaceIndex, UINT8 bUIHandlerID, BOOLEAN fFromSoldier ) { @@ -2108,7 +2109,7 @@ BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32 && iFaceIndex == -1 && gusIDOfCivTrader != NOBODY ) { - SOLDIERTYPE* pShopkeeper = MercPtrs[gusIDOfCivTrader]; + SOLDIERTYPE* pShopkeeper = gusIDOfCivTrader; if ( pShopkeeper ) { @@ -3111,29 +3112,29 @@ void HandleDialogueEnd( FACETYPE *pFace ) SOLDIERTYPE *pSoldier = FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ); if ( pSoldier ) { - UINT8 ubSeenEnemies[ MAX_NUM_SOLDIERS ]; - UINT8 ubSeenEnemiesCnt = 0; + UINT16 ubSeenEnemies[ MAX_NUM_SOLDIERS ]; + UINT16 ubSeenEnemiesCnt = 0; switch( gTacticalStatus.ubLastQuoteSaid ) { case QUOTE_CLOSE_CALL: case QUOTE_UNDER_HEAVY_FIRE: case QUOTE_TAKEN_A_BREATING: - if( pSoldier->ubPreviousAttackerID != NOBODY && !( MercPtrs[pSoldier->ubPreviousAttackerID]->bDeafenedCounter > 0 ) ) - PossiblyStartEnemyTaunt( MercPtrs[pSoldier->ubPreviousAttackerID], TAUNT_RIPOSTE, gTacticalStatus.ubLastQuoteProfileNUm ); + if( pSoldier->ubPreviousAttackerID != NOBODY && !( pSoldier->ubPreviousAttackerID->bDeafenedCounter > 0 ) ) + PossiblyStartEnemyTaunt( pSoldier->ubPreviousAttackerID, TAUNT_RIPOSTE, pSoldier->ubID ); break; default: // select random enemy, who we see, who sees us and isn't deaf - for(UINT8 cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; cnt++ ) + for( SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; ++cnt ) { - if( MercPtrs[cnt] != NULL && MercPtrs[cnt]->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY - && MercPtrs[pSoldier->ubID]->aiData.bOppList[cnt] == SEEN_CURRENTLY && !( MercPtrs[cnt]->bDeafenedCounter > 0 ) ) + if( cnt->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY + && pSoldier->ubID->aiData.bOppList[cnt] == SEEN_CURRENTLY && !( cnt->bDeafenedCounter > 0 ) ) { ubSeenEnemies[ubSeenEnemiesCnt] = cnt; ubSeenEnemiesCnt++; } } if( ubSeenEnemiesCnt > 0 ) - PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_RIPOSTE, gTacticalStatus.ubLastQuoteProfileNUm ); + PossiblyStartEnemyTaunt( MercPtrs[ubSeenEnemies[ Random(ubSeenEnemiesCnt) ]], TAUNT_RIPOSTE, pSoldier->ubID ); } break; } @@ -3294,20 +3295,20 @@ void RenderSubtitleBoxOverlay( VIDEO_OVERLAY *pBlitter ) void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt; // Loop through all our guys and randomly say one from someone in our sector // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { + pTeamSoldier = id; // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { @@ -3330,7 +3331,7 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) #endif } - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)id; ubNumMercs++; } } @@ -3338,16 +3339,16 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // If we are air raid, AND red exists somewhere... if ( usQuoteNum == QUOTE_AIR_RAID ) { - for ( cnt = 0; cnt < ubNumMercs; cnt++ ) + for ( UINT16 cnt = 0; cnt < ubNumMercs; cnt++ ) { if ( ubMercsInSector[ cnt ] == 11 ) { - ubChosenMerc = (UINT8)cnt; + ubChosenMerc = (UINT16)cnt; break; } } @@ -3367,22 +3368,22 @@ void SayQuoteFromAnyBodyInThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSect UINT16 ubNumMercs = 0; UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt; // Loop through all our guys and randomly say one from someone in our sector // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive ) { // Add guy if he's a candidate... if( pTeamSoldier->sSectorX == sSectorX && pTeamSoldier->sSectorY == sSectorY && pTeamSoldier->bSectorZ == bSectorZ && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ++ubNumMercs; } } @@ -3416,20 +3417,20 @@ void SayQuoteFromAnyBodyInThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSect void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuoteNum ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0 ); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0 ); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt; // Loop through all our guys and randomly say one from someone in our sector // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... 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 ) ) @@ -3438,7 +3439,7 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo { continue; } - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -3446,7 +3447,7 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); if (usQuoteNum == 66) { @@ -3461,18 +3462,19 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuoteNum, INT8 bSex ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; // Loop through all our guys and randomly say one from someone in our sector // set up soldier ptr as first element in mercptrs list // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... 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 ) ) @@ -3488,7 +3490,7 @@ void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQ continue; } - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ++ubNumMercs; } } @@ -3496,7 +3498,7 @@ void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQ // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); TacticalCharacterDialogue( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], usQuoteNum ); } } diff --git a/Tactical/DisplayCover.cpp b/Tactical/DisplayCover.cpp index d27d7949..c3f82ea5 100644 --- a/Tactical/DisplayCover.cpp +++ b/Tactical/DisplayCover.cpp @@ -538,11 +538,10 @@ void DisplayCover( BOOLEAN forceUpdate ) static void CalculateCoverFromEnemies() { - if (gusSelectedSoldier == NOBODY) + if (gusSelectedSoldier == NOBODY || gusSelectedSoldier->bActive == false) return; - SOLDIERTYPE* pSoldier; - GetSoldier(&pSoldier, gusSelectedSoldier); + SOLDIERTYPE* pSoldier = gusSelectedSoldier; const INT8 OurSoldierStealth = GetStealth(pSoldier); const INT8 OurSoldierLBESightAdjustment = GetSightAdjustmentBasedOnLBE(pSoldier); @@ -673,10 +672,10 @@ void CalculateCover() INT8 ubZ; SOLDIERTYPE* pSoldier; - if (gusSelectedSoldier == NOBODY) + if (gusSelectedSoldier == NOBODY || gusSelectedSoldier->bActive == false) return; - GetSoldier(&pSoldier, gusSelectedSoldier); + pSoldier = gusSelectedSoldier; for (ubX = gsMinCellX; ubX <= gsMaxCellX; ++ubX) { @@ -712,9 +711,10 @@ void CalculateCover() if (gTacticalStatus.fAtLeastOneGuyOnMultiSelect) // view of selected mercs { // OK, loop through all guys who are 'multi-selected' and - INT32 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for (pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, ++pSoldier) + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector) { if (pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED) @@ -1199,7 +1199,7 @@ void CalculateMines() return; } - const INT32& sSelectedSoldierGridNo = MercPtrs[ gusSelectedSoldier ]->sGridNo; + const INT32& sSelectedSoldierGridNo = gusSelectedSoldier->sGridNo; for ( ubX=gsMinCellX; ubX<=gsMaxCellX; ++ubX ) { @@ -1453,7 +1453,7 @@ void CalculateTraitRange() return; } - const INT32& sSelectedSoldierGridNo = MercPtrs[ gusSelectedSoldier ]->sGridNo; + const INT32& sSelectedSoldierGridNo = gusSelectedSoldier->sGridNo; for ( ubX=gsMinCellX; ubX<=gsMaxCellX; ++ubX ) { @@ -1591,7 +1591,7 @@ void CalculateTrackerRange( ) UINT16 range = gSkillTraitValues.usSVTrackerMaxRange * trackerskill; - const INT32& sSelectedSoldierGridNo = MercPtrs[gusSelectedSoldier]->sGridNo; + const INT32& sSelectedSoldierGridNo = gusSelectedSoldier->sGridNo; for ( ubX = gsMinCellX; ubX <= gsMaxCellX; ++ubX ) { @@ -1775,7 +1775,7 @@ void CalculateWeapondata() BOOLEAN guninhand = WeaponInHand( pSoldier ); - INT32 sSelectedSoldierGridNo = MercPtrs[gusSelectedSoldier]->sGridNo; + INT32 sSelectedSoldierGridNo = gusSelectedSoldier->sGridNo; if ( TileIsOutOfBounds( sSelectedSoldierGridNo ) ) return; diff --git a/Tactical/Drugs And Alcohol.cpp b/Tactical/Drugs And Alcohol.cpp index e5119de4..4da1742b 100644 --- a/Tactical/Drugs And Alcohol.cpp +++ b/Tactical/Drugs And Alcohol.cpp @@ -319,7 +319,7 @@ INT8 GetDrunkLevel( SOLDIERTYPE *pSoldier ) } // does a merc have a disability/personality, or is he under drugs that simulate this? -BOOLEAN DoesMercHaveDisability( SOLDIERTYPE *pSoldier, UINT8 aVal ) +BOOLEAN DoesMercHaveDisability( const SOLDIERTYPE *pSoldier, UINT8 aVal ) { if ( pSoldier->ubProfile != NO_PROFILE ) { @@ -407,16 +407,16 @@ BOOLEAN MercDrugged( SOLDIERTYPE *pSoldier ) void HourlyDrugUpdate( ) { - for ( UINT16 ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ubID ) + for ( SoldierID ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++ubID ) { // every hour, we lower our alcohol counter - if ( MercPtrs[ubID]->newdrugs.drinkstaken > 0.0f ) + if ( ubID->newdrugs.drinkstaken > 0.0f ) { - MercPtrs[ubID]->newdrugs.drinkstaken = max( 0.0, MercPtrs[ubID]->newdrugs.drinkstaken - 0.15f ); + ubID->newdrugs.drinkstaken = max( 0.0, ubID->newdrugs.drinkstaken - 0.15f ); - if ( MercPtrs[ubID]->newdrugs.drinkstaken <= 0.0f ) + if ( ubID->newdrugs.drinkstaken <= 0.0f ) { - MercPtrs[ubID]->usSoldierFlagMask2 &= ~SOLDIER_HUNGOVER; + ubID->usSoldierFlagMask2 &= ~SOLDIER_HUNGOVER; } } } diff --git a/Tactical/Drugs And Alcohol.h b/Tactical/Drugs And Alcohol.h index 887a89b7..b0a7dce0 100644 --- a/Tactical/Drugs And Alcohol.h +++ b/Tactical/Drugs And Alcohol.h @@ -66,7 +66,7 @@ void HandleEndTurnDrugAdjustments_New( SOLDIERTYPE *pSoldier ); INT8 GetDrunkLevel( SOLDIERTYPE *pSoldier ); // does a merc have a disability/personality, or is he under drugs that simulate this? -BOOLEAN DoesMercHaveDisability( SOLDIERTYPE *pSoldier, UINT8 aVal ); +BOOLEAN DoesMercHaveDisability( const SOLDIERTYPE *pSoldier, UINT8 aVal ); BOOLEAN DoesMercHavePersonality( SOLDIERTYPE *pSoldier, UINT8 aVal ); //void HandleEndTurnDrugAdjustments( SOLDIERTYPE *pSoldier ); diff --git a/Tactical/DynamicDialogue.cpp b/Tactical/DynamicDialogue.cpp index ac6e5f95..62af182d 100644 --- a/Tactical/DynamicDialogue.cpp +++ b/Tactical/DynamicDialogue.cpp @@ -1108,7 +1108,7 @@ void SetfDynamicOpinionSpeechInProgress( BOOLEAN aVal ) } -void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue ) +void AddOpinionEvent( UINT16 usProfileA, UINT16 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue ) { if ( usProfileA == NO_PROFILE || usProfileB == NO_PROFILE ) return; @@ -1632,11 +1632,11 @@ void HandleDynamicOpinionsDailyRefresh( ) RolloverDynamicOpinions( usProfileA ); } - SOLDIERTYPE* pSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pSoldier++ ) + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + SOLDIERTYPE* pSoldier = bMercID; if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && !(pSoldier->bAssignment == IN_TRANSIT || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == ASSIGNMENT_DEAD) ) @@ -1672,12 +1672,11 @@ void RolloverDynamicOpinions( UINT8 usProfileA ) // check wether other people are friends with someone else we hate. All persons must be in Arulco void CheckForFriendsofHated( SOLDIERTYPE* pSoldier ) { - INT8 bMercID, bOtherID, bThirdID; - INT8 bOpinion = -1; - INT8 bSecondOpinion = -1; - INT8 bLastTeamID; - SOLDIERTYPE* pOtherSoldier; - SOLDIERTYPE* pThirdSoldier; + SoldierID bMercID, bOtherID, bThirdID, bLastTeamID; + INT8 bOpinion = -1; + INT8 bSecondOpinion = -1; + SOLDIERTYPE *pOtherSoldier; + SOLDIERTYPE *pThirdSoldier; // make sure we ourselves aren't in transit if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) @@ -1688,8 +1687,9 @@ void CheckForFriendsofHated( SOLDIERTYPE* pSoldier ) // loop through all other mercs bOtherID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pOtherSoldier = MercPtrs[bOtherID]; bOtherID <= bLastTeamID; ++bOtherID, pOtherSoldier++ ) + for ( ; bOtherID <= bLastTeamID; ++bOtherID ) { + pOtherSoldier = bOtherID; // skip past ourselves and all inactive mercs if ( bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE && !(pOtherSoldier->bAssignment == IN_TRANSIT || @@ -1703,8 +1703,9 @@ void CheckForFriendsofHated( SOLDIERTYPE* pSoldier ) // there is someone in our team that we hate. We dislike his friends somewhat, purely because they like our foe // loop through all other mercs bThirdID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pThirdSoldier = MercPtrs[bThirdID]; bThirdID <= bLastTeamID; ++bThirdID, pThirdSoldier++ ) + for ( ; bThirdID <= bLastTeamID; ++bThirdID ) { + pThirdSoldier = bThirdID; // skip past ourselves and all inactive mercs if ( bThirdID != bMercID && bThirdID != bOtherID && pThirdSoldier->bActive && pThirdSoldier->ubProfile != NO_PROFILE && !(pThirdSoldier->bAssignment == IN_TRANSIT || @@ -1750,11 +1751,11 @@ void HandleDynamicOpinionOnContractExtension( UINT8 ubCode, UINT8 usProfile ) oldcontract -= 14 * 1440; // someones contract got extended. Other mercs who have less time on their contract will be annoyed by this, as they feel they should have been paid first - SOLDIERTYPE* pSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pSoldier++ ) + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + SOLDIERTYPE *pSoldier = bMercID; if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->ubProfile != usProfile && !(pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD) ) @@ -1844,11 +1845,11 @@ void HandleDynamicOpinionTeamDrinking( SOLDIERTYPE* pSoldier ) if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->newdrugs.drinkstaken <= 0.0 ) return; - SOLDIERTYPE* pTeamSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID) { + SOLDIERTYPE* pTeamSoldier = bMercID; // everybody other merc in the same sector can get updated if they are drugged too if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile && pTeamSoldier->sSectorX == pSoldier->sSectorX && pTeamSoldier->sSectorY == pSoldier->sSectorY && pTeamSoldier->bSectorZ == pSoldier->bSectorZ && @@ -1903,11 +1904,11 @@ void HandleDynamicOpinionTeaching( SOLDIERTYPE* pSoldier, UINT8 ubStat ) break; } - SOLDIERTYPE* pTeamSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID) { + SOLDIERTYPE* pTeamSoldier = bMercID; // award event for every trainer in this sector if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile && pTeamSoldier->sSectorX == pSoldier->sSectorX && pTeamSoldier->sSectorY == pSoldier->sSectorY && pTeamSoldier->bSectorZ == pSoldier->bSectorZ && @@ -1940,16 +1941,16 @@ UINT32 GetSoldierLeaderRating( SOLDIERTYPE* pSoldier ) } -UINT16 GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ) +SoldierID GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ) { - UINT32 highestrating = 0; - UINT16 bestid = NOBODY; + UINT32 highestrating = 0; + SoldierID bestid = NOBODY; + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - SOLDIERTYPE* pSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, ++pSoldier ) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + SOLDIERTYPE* pSoldier = bMercID; // everybody other merc in the same sector gets annoyed if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->sSectorX == sX && pSoldier->sSectorY == sY && pSoldier->bSectorZ == sZ && @@ -1972,10 +1973,11 @@ UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector resultvector; SOLDIERTYPE* pTeamSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, ++pTeamSoldier ) + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pTeamSoldier = bMercID; // everybody other merc in the same sector gets annoyed if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->sSectorX == sX && pTeamSoldier->sSectorY == sY && pTeamSoldier->bSectorZ == sZ && @@ -2002,14 +2004,14 @@ UINT8 GetFittingInterjectorProfile( UINT8 usEvent, UINT8 usProfileVictim, UINT8 if ( usEvent >= OPINIONEVENT_MAX ) return NO_PROFILE; - INT16 idVictim = GetSoldierIDFromMercID( usProfileVictim ); - INT16 idCause = GetSoldierIDFromMercID( usProfileCause ); + SoldierID idVictim = GetSoldierIDFromMercID( usProfileVictim ); + SoldierID idCause = GetSoldierIDFromMercID( usProfileCause ); - if ( idVictim < 0 || idCause < 0 ) + if ( idVictim == NOBODY || idCause == NOBODY ) return NO_PROFILE; - SOLDIERTYPE* pSoldierVictim = MercPtrs[idVictim]; - SOLDIERTYPE* pSoldierCause = MercPtrs[idCause]; + SOLDIERTYPE* pSoldierVictim = idVictim; + SOLDIERTYPE* pSoldierCause = idCause; if ( !pSoldierVictim || !pSoldierCause ) return NO_PROFILE; @@ -2018,10 +2020,11 @@ UINT8 GetFittingInterjectorProfile( UINT8 usEvent, UINT8 usProfileVictim, UINT8 std::vector profilevector; SOLDIERTYPE* pTeamSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[pSoldierVictim->bTeam].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[pSoldierVictim->bTeam].bLastID; - for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) + SoldierID bMercID = gTacticalStatus.Team[pSoldierVictim->bTeam].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[pSoldierVictim->bTeam].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pTeamSoldier = bMercID; // only people that are here if ( !pTeamSoldier->bActive || pTeamSoldier->bAssignment == IN_TRANSIT || pTeamSoldier->bAssignment == ASSIGNMENT_DEAD || pTeamSoldier->bAssignment == ASSIGNMENT_POW || pTeamSoldier->bAssignment == ASSIGNMENT_MINIEVENT || pTeamSoldier->bAssignment == ASSIGNMENT_REBELCOMMAND ) continue; @@ -2157,10 +2160,11 @@ void HandleDynamicOpinionChange( SOLDIERTYPE* pSoldier, UINT8 usEvent, BOOLEAN f UINT8 usEventUsed; // it is possible that the individual event is switched SOLDIERTYPE* pTeamSoldier = NULL; - UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for ( pTeamSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pTeamSoldier++ ) + SoldierID bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pTeamSoldier = bMercID; // we test several conditions before we allow adding an opinion // other merc must be active, have a profile, be someone else and not be in transit or dead if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE && pTeamSoldier->ubProfile != pSoldier->ubProfile && diff --git a/Tactical/DynamicDialogue.h b/Tactical/DynamicDialogue.h index 57c57a9a..8c2951e6 100644 --- a/Tactical/DynamicDialogue.h +++ b/Tactical/DynamicDialogue.h @@ -452,7 +452,7 @@ BOOLEAN LoadDynamicDialogue( HWFILE hwFile ); // modify usProfileA's opinion of usProfileB because of usEvent -void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue = TRUE ); +void AddOpinionEvent( UINT16 usProfileA, UINT16 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue = TRUE ); // get usProfileA's opinion of usProfileB on one of the last 4 days INT8 GetDynamicOpinionDay( UINT8 usProfileA, UINT8 usProfileB, UINT8 usDay ); @@ -480,7 +480,7 @@ void HandleDynamicOpinionTeaching( SOLDIERTYPE* pSoldier, UINT8 ubStat ); // some events require a 'leader' - merc the team will regard as the one being in charge, and subsequently being praised or damned for the way things develop UINT32 GetSoldierLeaderRating( SOLDIERTYPE* pSoldier ); -UINT16 GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ); +SoldierID GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ); // get id of a random merc in a sector, provided one exists UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector aTaboo, BOOLEAN fImpOnly ); diff --git a/Tactical/End Game.cpp b/Tactical/End Game.cpp index ee6eda90..40d51363 100644 --- a/Tactical/End Game.cpp +++ b/Tactical/End Game.cpp @@ -175,8 +175,7 @@ void BeginHandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 void HandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt; - UINT8 ubKillerSoldierID = NOBODY; + SoldierID ubKillerSoldierID = NOBODY; // Start victory music here... SetMusicMode( MUSIC_TACTICAL_VICTORY ); @@ -189,11 +188,13 @@ void HandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLev // STEP 1 ) START ALL QUOTES GOING! // OK - loop through all witnesses and see if they want to say something abou this... - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; + if ( cnt != ubKillerSoldierID ) { if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) ) @@ -239,15 +240,16 @@ void DoneFadeInKilledQueen( void ) void DoneFadeOutKilledQueen( void ) { - INT32 cnt; + SoldierID cnt; SOLDIERTYPE *pSoldier, *pTeamSoldier; // For one, loop through our current squad and move them over cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for (; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) ) { @@ -271,8 +273,9 @@ void DoneFadeOutKilledQueen( void ) cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we active and in sector..... if ( pTeamSoldier->bActive ) { @@ -349,7 +352,7 @@ void HandleDoneLastKilledQueenQuote( ) void EndQueenDeathEndgameBeginEndCimenatic( ) { - INT32 cnt; + SoldierID cnt; SOLDIERTYPE *pSoldier; // Start end cimimatic.... @@ -359,8 +362,9 @@ void EndQueenDeathEndgameBeginEndCimenatic( ) cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) ) { @@ -632,7 +636,7 @@ void FadeOutToLaptopOnEndGame( void ) void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt; + SoldierID cnt; gpKillerSoldier = pKillerSoldier; @@ -653,8 +657,9 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT cnt = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Are we active and ALIVE and in sector..... if ( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 ) { @@ -667,7 +672,7 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT { // gTacticalStatus.ubAttackBusyCount++; DebugAttackBusy( "Killing off a queen ally.\n"); - pTeamSoldier->EVENT_SoldierGotHit( 0, 10000, 0, pTeamSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pTeamSoldier->bAimShotLocation, 0, NOWHERE ); + pTeamSoldier->EVENT_SoldierGotHit( 0, 10000, 0, pTeamSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, pTeamSoldier->bAimShotLocation, 0, NOWHERE ); } } } @@ -678,8 +683,7 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt; - UINT8 ubKillerSoldierID = NOBODY; + SoldierID ubKillerSoldierID = NOBODY; // Start victory music here... SetMusicMode( MUSIC_TACTICAL_VICTORY ); @@ -692,13 +696,14 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLe // STEP 1 ) START ALL QUOTES GOING! // OK - loop through all witnesses and see if they want to say something abou this... - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { if ( cnt != ubKillerSoldierID ) { + pTeamSoldier = cnt; if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) ) { if ( QuoteExp[ pTeamSoldier->ubProfile ].QuoteExpWitnessQueenBugDeath ) diff --git a/Tactical/Enemy Soldier Save.cpp b/Tactical/Enemy Soldier Save.cpp index 09c4c2fd..e6fd9cc2 100644 --- a/Tactical/Enemy Soldier Save.cpp +++ b/Tactical/Enemy Soldier Save.cpp @@ -39,7 +39,7 @@ int gCivPreservedTempFileVersion[256]; BOOLEAN AddPlacementToWorld( SOLDIERINITNODE *pNode, GROUP *pGroup = NULL ); -BOOLEAN CountNumberOfElitesRegularsAdminsAndCreaturesFromEnemySoldiersTempFile( UINT8 *pubNumRobots, UINT8 *pubNumElites, UINT8 *pubNumRegulars, UINT8 *pubNumAdmins, UINT8 *pubNumCreatures, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ); +BOOLEAN CountNumberOfElitesRegularsAdminsAndCreaturesFromEnemySoldiersTempFile( UINT16 *pubNumRobots, UINT16 *pubNumElites, UINT16 *pubNumRegulars, UINT16 *pubNumAdmins, UINT16 *pubNumCreatures, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ); BOOLEAN gfRestoringEnemySoldiersFromTempFile = FALSE; BOOLEAN gfRestoringCiviliansFromTempFile = FALSE; @@ -100,8 +100,8 @@ BOOLEAN LoadEnemySoldiersFromTempFile() #endif INT8 bSectorZ; UINT8 ubSectorID; - UINT8 ubNumRobots = 0, ubNumElites = 0, ubNumTroops = 0, ubNumAdmins = 0, ubNumCreatures = 0, ubNumTanks = 0, ubNumJeeps = 0; - UINT8 ubStrategicRobots, ubStrategicElites, ubStrategicTroops, ubStrategicAdmins, ubStrategicCreatures, ubStrategicTanks, ubStrategicJeeps; + UINT16 ubNumRobots = 0, ubNumElites = 0, ubNumTroops = 0, ubNumAdmins = 0, ubNumCreatures = 0, ubNumTanks = 0, ubNumJeeps = 0; + UINT16 ubStrategicRobots, ubStrategicElites, ubStrategicTroops, ubStrategicAdmins, ubStrategicCreatures, ubStrategicTanks, ubStrategicJeeps; gfRestoringEnemySoldiersFromTempFile = TRUE; @@ -695,8 +695,8 @@ BOOLEAN NewWayOfLoadingEnemySoldiersFromTempFile() #endif INT8 bSectorZ; UINT8 ubSectorID; - UINT8 ubNumRobots = 0, ubNumElites = 0, ubNumTroops = 0, ubNumAdmins = 0, ubNumCreatures = 0, ubNumTanks = 0, ubNumJeeps = 0; - UINT8 ubStrategicRobots = 0, ubStrategicElites, ubStrategicTroops, ubStrategicAdmins, ubStrategicCreatures, ubStrategicTanks, ubStrategicJeeps; + UINT16 ubNumRobots = 0, ubNumElites = 0, ubNumTroops = 0, ubNumAdmins = 0, ubNumCreatures = 0, ubNumTanks = 0, ubNumJeeps = 0; + UINT16 ubStrategicRobots = 0, ubStrategicElites, ubStrategicTroops, ubStrategicAdmins, ubStrategicCreatures, ubStrategicTanks, ubStrategicJeeps; gfRestoringEnemySoldiersFromTempFile = TRUE; @@ -1395,7 +1395,6 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY { SOLDIERINITNODE *curr; SOLDIERTYPE *pSoldier; - INT32 i; INT32 slots = 0; UINT32 uiNumBytesWritten; UINT32 uiTimeStamp; @@ -1428,9 +1427,9 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY //STEP ONE: Prep the soldiers for saving... //modify the map's soldier init list to reflect the changes to the members still alive... - for( i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; //make sure the person is active, alive, in the sector, and is not a profiled person if( pSoldier && pSoldier->bActive /*&& pSoldier->bInSector*/ && pSoldier->stats.bLife && pSoldier->ubProfile == NO_PROFILE ) @@ -1584,9 +1583,9 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY return TRUE; } - for( i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; i++ ) + for( SoldierID i = gTacticalStatus.Team[ ubStartID ].bFirstID; i <= gTacticalStatus.Team[ ubEndID ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; // CJC: note that bInSector is not required; the civ could be offmap! if( pSoldier->bActive /*&& pSoldier->bInSector*/ && pSoldier->stats.bLife ) { @@ -1638,7 +1637,7 @@ BOOLEAN NewWayOfSavingEnemyAndCivliansToTempFile( INT16 sSectorX, INT16 sSectorY -BOOLEAN CountNumberOfElitesRegularsAdminsAndCreaturesFromEnemySoldiersTempFile( UINT8 *pubNumRobots, UINT8 *pubNumElites, UINT8 *pubNumRegulars, UINT8 *pubNumAdmins, UINT8 *pubNumCreatures, UINT8 *pubNumTanks, UINT8 *pubNumJeeps ) +BOOLEAN CountNumberOfElitesRegularsAdminsAndCreaturesFromEnemySoldiersTempFile( UINT16 *pubNumRobots, UINT16 *pubNumElites, UINT16 *pubNumRegulars, UINT16 *pubNumAdmins, UINT16 *pubNumCreatures, UINT16 *pubNumTanks, UINT16 *pubNumJeeps ) { // SOLDIERINITNODE *curr; SOLDIERCREATE_STRUCT tempDetailedPlacement; diff --git a/Tactical/Faces.cpp b/Tactical/Faces.cpp index cd6e505a..38495593 100644 --- a/Tactical/Faces.cpp +++ b/Tactical/Faces.cpp @@ -45,8 +45,6 @@ #endif // Defines -#define NUM_FACE_SLOTS 50 - #define END_FACE_OVERLAY_DELAY 2000 @@ -74,11 +72,11 @@ CAMO_FACE gCamoFace[NUM_PROFILES]; FACE_GEAR_VALUES zNewFaceGear[MAXITEMS]; FACE_GEAR_VALUES zNewFaceGearIMP[MAXITEMS]; -extern BOOLEAN gfSMDisableForItems; -extern INT16 gsCurInterfacePanel; -extern UINT16 gusSMCurrentMerc; -extern BOOLEAN gfRerenderInterfaceFromHelpText; -extern BOOLEAN gfInItemPickupMenu; +extern BOOLEAN gfSMDisableForItems; +extern INT16 gsCurInterfacePanel; +extern SoldierID gusSMCurrentMerc; +extern BOOLEAN gfRerenderInterfaceFromHelpText; +extern BOOLEAN gfInItemPickupMenu; BOOLEAN FaceRestoreSavedBackgroundRect( INT32 iFaceIndex, INT16 sDestLeft, INT16 sDestTop, INT16 sSrcLeft, INT16 sSrcTop, INT16 sWidth, INT16 sHeight ); void SetupFinalTalkingDelay( FACETYPE *pFace ); @@ -131,7 +129,7 @@ INT32 InitSoldierFace( SOLDIERTYPE *pSoldier ) } -INT32 InitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags ) +INT32 InitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags ) { UINT32 uiBlinkFrequency; UINT32 uiExpressionFrequency; @@ -184,7 +182,7 @@ void SetPalettes(HVOBJECT *hVObject, UINT32 uiIndex) (*hVObject)->pShades[FLASH_PORTRAIT_GRAYSHADE] = Create16BPPPaletteShaded(Pal, 255, 255, 255, FALSE); } -INT32 InternalInitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ) +INT32 InternalInitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ) { FACETYPE *pFace; VOBJECT_DESC VObjectDesc; @@ -556,15 +554,14 @@ void DeleteFace( INT32 iFaceIndex ) } -void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT8 ubSoldierID , UINT16 usFaceX, UINT16 usFaceY ) +void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, SoldierID ubSoldierID, UINT16 usFaceX, UINT16 usFaceY ) { - if( ubSoldierID == NOBODY ) + if( ubSoldierID >= NOBODY ) { return; } - SetAutoFaceActive( uiDisplayBuffer, uiRestoreBuffer, MercPtrs[ ubSoldierID ]->iFaceIndex, usFaceX, usFaceY ); - + SetAutoFaceActive( uiDisplayBuffer, uiRestoreBuffer, ubSoldierID->iFaceIndex, usFaceX, usFaceY ); } void GetFaceRelativeCoordinates( FACETYPE *pFace, UINT16 *pusEyesX, UINT16 *pusEyesY, UINT16 *pusMouthX, UINT16 *pusMouthY ) @@ -755,17 +752,17 @@ void InternalSetAutoFaceActive( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, // Are we a soldier? if ( pFace->ubSoldierID != NOBODY ) { - pFace->bOldSoldierLife = MercPtrs[ pFace->ubSoldierID ]->stats.bLife; + pFace->bOldSoldierLife = pFace->ubSoldierID->stats.bLife; } } -void SetAutoFaceInActiveFromSoldier( UINT8 ubSoldierID ) +void SetAutoFaceInActiveFromSoldier( SoldierID ubSoldierID ) { // Check for valid soldier CHECKV( ubSoldierID != NOBODY ); - SetAutoFaceInActive( MercPtrs[ ubSoldierID ]->iFaceIndex ); + SetAutoFaceInActive( ubSoldierID->iFaceIndex ); } @@ -797,7 +794,7 @@ void SetAutoFaceInActive(INT32 iFaceIndex ) // if ( pFace->ubSoldierID != NOBODY ) { - pSoldier = MercPtrs[ pFace->ubSoldierID ]; + pSoldier = pFace->ubSoldierID; // IF we are in tactical if ( pSoldier->bAssignment == iCurrentTacticalSquad && guiCurrentScreen == GAME_SCREEN ) @@ -950,11 +947,11 @@ void BlinkAutoFace( INT32 iFaceIndex ) // CHECK IF BUDDY IS DEAD, UNCONSCIOUS, ASLEEP, OR POW! if ( pFace->ubSoldierID != NOBODY ) { - uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, FALSE); + uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, FALSE); - if ( ( MercPtrs[ pFace->ubSoldierID ]->stats.bLife < OKLIFE ) || - ( MercPtrs[ pFace->ubSoldierID ]->flags.fMercAsleep == TRUE ) || - ( MercPtrs[ pFace->ubSoldierID ]->bAssignment == ASSIGNMENT_POW ) ) + if ( ( pFace->ubSoldierID->stats.bLife < OKLIFE ) || + ( pFace->ubSoldierID->flags.fMercAsleep == TRUE ) || + ( pFace->ubSoldierID->bAssignment == ASSIGNMENT_POW ) ) { return; } @@ -1090,13 +1087,13 @@ void HandleFaceHilights( FACETYPE *pFace, UINT32 uiBuffer, INT16 sFaceX, INT16 s { if ( pFace->ubSoldierID != NOBODY ) { - if ( MercPtrs[ pFace->ubSoldierID ]->stats.bLife >= OKLIFE ) + if ( pFace->ubSoldierID->stats.bLife >= OKLIFE ) { // Lock buffer pDestBuf = LockVideoSurface( uiBuffer, &uiDestPitchBYTES ); SetClippingRegionAndImageWidth( uiDestPitchBYTES, sFaceX-2, sFaceY-1, sFaceX + pFace->usFaceWidth + 4, sFaceY + pFace->usFaceHeight + 4 ); - if ( MercPtrs[ pFace->ubSoldierID ]->bStealthMode ) + if ( pFace->ubSoldierID->bStealthMode ) { usLineColor = Get16BPPColor( FROMRGB( 158, 158, 12 ) ); } @@ -1239,7 +1236,7 @@ void MouthAutoFace( INT32 iFaceIndex ) // Set shade if (pFace->ubSoldierID != NOBODY) { - uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, FALSE); + uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, FALSE); } HandleRenderFaceAdjustments( pFace, TRUE, FALSE, 0, pFace->usFaceX, pFace->usFaceY, pFace->usEyesX, pFace->usEyesY, uiFaceShade); @@ -1365,12 +1362,12 @@ UINT32 GetFaceShade(SOLDIERTYPE *pSoldier, FACETYPE *pFace, BOOLEAN fExternBlit) return FLASH_PORTRAIT_NOSHADE; } -BOOLEAN RenderAutoFaceFromSoldier( UINT8 ubSoldierID ) +BOOLEAN RenderAutoFaceFromSoldier( SoldierID ubSoldierID ) { // Check for valid soldier CHECKF( ubSoldierID != NOBODY ); - return( RenderAutoFace( MercPtrs[ ubSoldierID ]->iFaceIndex ) ); + return( RenderAutoFace( ubSoldierID->iFaceIndex ) ); } //---------------------------------------LEGION------------------------------- @@ -1631,16 +1628,16 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE // BLIT HATCH if ( pFace->ubSoldierID != NOBODY ) { - pSoldier = MercPtrs[ pFace->ubSoldierID ]; + pSoldier = pFace->ubSoldierID; UINT8 faceProfileId = gMercProfiles[pSoldier->ubProfile].ubFaceIndex; BOOLEAN isIMP = gMercProfiles[pSoldier->ubProfile].Type == PROFILETYPE_IMP; - if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_GEAR] && MercPtrs[pFace->ubSoldierID]->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE)) + if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_GEAR] && pSoldier->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE)) { - if (MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem > 0) + if (pSoldier->inv[HELMETPOS].usItem > 0) { - uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem; + uiFaceItemOne = pSoldier->inv[HELMETPOS].usItem; if (uiFaceItemOne != NONE && zNewFaceGear[uiFaceItemOne].Type == 1) //back { @@ -1650,17 +1647,17 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE // this section chooses the pictures for gas mask and NV goggles if the ini setting "SHOW_TACTICAL_FACE_GEAR" is TRUE // and the merc actually wears something to be shown - if (MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem + MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem > 0) + if (pSoldier->inv[HEAD1POS].usItem + pSoldier->inv[HEAD2POS].usItem > 0) { // WANNE: Removed the limitation // silversurfer: don't overwrite icons if they shall be shown! //if ( !gGameSettings.fOptions[ SHOW_TACTICAL_FACE_ICONS ] ) { - uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem; - uiFaceItemTwo = MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem; + uiFaceItemOne = pSoldier->inv[HEAD1POS].usItem; + uiFaceItemTwo = pSoldier->inv[HEAD2POS].usItem; - uiFaceOne = MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem; - uiFaceTwo = MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem; + uiFaceOne = pSoldier->inv[HEAD1POS].usItem; + uiFaceTwo = pSoldier->inv[HEAD2POS].usItem; // check first face slot if (uiFaceItemOne != NONE) @@ -1799,11 +1796,11 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } } - if (MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem > 0) + if (pSoldier->inv[HELMETPOS].usItem > 0) // dirty hack for IMPs because they don't have pictures for face gear - // && ( MercPtrs[ pFace->ubSoldierID ]->ubProfile < 51 || MercPtrs[ pFace->ubSoldierID ]->ubProfile > 56 ) + // && ( pSoldier->ubProfile < 51 || pSoldier->ubProfile > 56 ) { - uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem; + uiFaceItemOne = pSoldier->inv[HELMETPOS].usItem; if (uiFaceItemOne != NONE) { @@ -1817,7 +1814,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE //------------------------------------end of tactical face gear----------------------------- } - if ( (MercPtrs[pFace->ubSoldierID]->stats.bLife < CONSCIOUSNESS || MercPtrs[pFace->ubSoldierID]->flags.fDeadPanel ) ) + if ( (pSoldier->stats.bLife < CONSCIOUSNESS || pSoldier->flags.fDeadPanel ) ) { // Blit Closed eyes here! BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL ); @@ -1826,14 +1823,14 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL ); } - if( MercPtrs[ pFace->ubSoldierID ]->flags.fMercAsleep == TRUE ) + if( pSoldier->flags.fMercAsleep == TRUE ) { // blit eyes closed BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL ); } // Flugente: frozen soldiers are, well, frozen - if ( MercPtrs[pFace->ubSoldierID]->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] ) + if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] ) { // Blit Closed eyes here! BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 2, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL ); @@ -1907,7 +1904,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } - if ( MercPtrs[ pFace->ubSoldierID ]->bInSector && ( ( ( gTacticalStatus.ubCurrentTeam != OUR_TEAM ) || !OK_INTERRUPT_MERC( MercPtrs[ pFace->ubSoldierID ] ) ) && !gfHiddenInterrupt ) || ( ( gfSMDisableForItems && !gfInItemPickupMenu ) && gusSMCurrentMerc == pFace->ubSoldierID && gsCurInterfacePanel == SM_PANEL ) ) + if ( pSoldier->bInSector && ( ( ( gTacticalStatus.ubCurrentTeam != OUR_TEAM ) || !OK_INTERRUPT_MERC( pSoldier ) ) && !gfHiddenInterrupt ) || ( ( gfSMDisableForItems && !gfInItemPickupMenu ) && gusSMCurrentMerc == pSoldier && gsCurInterfacePanel == SM_PANEL ) ) { // Blit hatch! BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL ); @@ -1915,12 +1912,12 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } // sevenfm: only show for alive soldiers, no face icons for big faces - if (MercPtrs[pFace->ubSoldierID]->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE)) + if (pSoldier->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE)) { // Check if a robot and is not controlled.... - if (MercPtrs[pFace->ubSoldierID]->flags.uiStatusFlags & SOLDIER_ROBOT) + if (pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT) { - if (!MercPtrs[pFace->ubSoldierID]->CanRobotBeControlled()) + if (!pSoldier->CanRobotBeControlled()) { // Not controlled robot sIconIndex = 5; @@ -1928,7 +1925,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } } - if (MercPtrs[pFace->ubSoldierID]->ControllingRobot()) + if (pSoldier->ControllingRobot()) { // controlling robot sIconIndex = 4; @@ -1941,10 +1938,10 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE // this section chooses the icons for face gear if the ini setting "SHOW_TACTICAL_FACE_ICONS" is TRUE // and the merc actually wears something to be shown if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_ICONS] && - (MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem + MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem) > 0) + (pSoldier->inv[HEAD1POS].usItem + pSoldier->inv[HEAD2POS].usItem) > 0) { - uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem; - uiFaceItemTwo = MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem; + uiFaceItemOne = pSoldier->inv[HEAD1POS].usItem; + uiFaceItemTwo = pSoldier->inv[HEAD2POS].usItem; //MM: fixing the hardcoded craziness here... // check first face slot @@ -2052,20 +2049,20 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } // If blind... - if (MercPtrs[pFace->ubSoldierID]->bBlindedCounter > 0) + if (pSoldier->bBlindedCounter > 0) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 6); bNumRightIcons++; } // Flugente: add drug symbol if drugged (without alcohol) - if (MercDrugged(MercPtrs[pFace->ubSoldierID])) + if (MercDrugged(pSoldier)) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 7); bNumRightIcons++; } - if (GetDrunkLevel(MercPtrs[pFace->ubSoldierID]) != SOBER) + if (GetDrunkLevel(pSoldier) != SOBER) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 8); bNumRightIcons++; @@ -2074,13 +2071,13 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE // Flugente: food system - symbols used if hungry or thirsty if (UsingFoodSystem()) { - if (MercPtrs[pFace->ubSoldierID]->bDrinkLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold) + if (pSoldier->bDrinkLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 9); bNumRightIcons++; } - if (MercPtrs[pFace->ubSoldierID]->bFoodLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold) + if (pSoldier->bFoodLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 10); bNumRightIcons++; @@ -2090,13 +2087,13 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE // Flugente: are we supplying ammo to someone else? if (gGameExternalOptions.ubExternalFeeding > 0) { - UINT8 ubID1 = 0; + SoldierID ubID1 = NOBODY; UINT16 ubGunSlot1 = 0; UINT16 ubFaceSlot1 = 0; - UINT8 ubID2 = 0; + SoldierID ubID2 = NOBODY; UINT16 ubGunSlot2 = 0; UINT16 ubFaceSlot2 = 0; - if (MercPtrs[pFace->ubSoldierID]->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2)) + if (pSoldier->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2)) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 11); bNumRightIcons++; @@ -2104,33 +2101,33 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } // Flugente: add an icon if we are currently in disguise - if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER)) + if (pSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER)) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 12); bNumRightIcons++; } // Flugente: add an icon if we are performing a multi-turn action - if (MercPtrs[pFace->ubSoldierID]->GetMultiTurnAction() == MTA_HACK) + if (pSoldier->GetMultiTurnAction() == MTA_HACK) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 30); bNumRightIcons++; } - else if (MercPtrs[pFace->ubSoldierID]->GetMultiTurnAction() > MTA_NONE) + else if (pSoldier->GetMultiTurnAction() > MTA_NONE) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 14); bNumRightIcons++; } // Flugente: icons for radio operator actions (not the assignment) - if (MercPtrs[pFace->ubSoldierID]->bAssignment != RADIO_SCAN) + if (pSoldier->bAssignment != RADIO_SCAN) { - if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask & (SOLDIER_RADIO_OPERATOR_SCANNING | SOLDIER_RADIO_OPERATOR_LISTENING)) + if (pSoldier->usSoldierFlagMask & (SOLDIER_RADIO_OPERATOR_SCANNING | SOLDIER_RADIO_OPERATOR_LISTENING)) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 19); bNumRightIcons++; } - else if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask & SOLDIER_RADIO_OPERATOR_JAMMING) + else if (pSoldier->usSoldierFlagMask & SOLDIER_RADIO_OPERATOR_JAMMING) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 20); bNumRightIcons++; @@ -2138,9 +2135,9 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } // Flugente: spotter - if (MercPtrs[pFace->ubSoldierID]->usSkillCounter[SOLDIER_COUNTER_SPOTTER] > 0) + if (pSoldier->usSkillCounter[SOLDIER_COUNTER_SPOTTER] > 0) { - if (MercPtrs[pFace->ubSoldierID]->IsSpotting()) + if (pSoldier->IsSpotting()) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 24); bNumRightIcons++; @@ -2153,21 +2150,21 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } // Flugente: focus trait - if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask2 & SOLDIER_TRAIT_FOCUS) + if (pSoldier->usSoldierFlagMask2 & SOLDIER_TRAIT_FOCUS) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 17); bNumRightIcons++; } // Flugente: disease - if (MercPtrs[pFace->ubSoldierID]->HasDisease(TRUE, FALSE, TRUE)) + if (pSoldier->HasDisease(TRUE, FALSE, TRUE)) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 28); bNumRightIcons++; } // Flugente: drag stuff - if (MercPtrs[pFace->ubSoldierID]->IsDragging()) + if (pSoldier->IsDragging()) { DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 31); ++bNumRightIcons; @@ -2180,7 +2177,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE case DOCTOR_MILITIA: sIconIndex_Assignment = 1; fDoIcon_Assignment = TRUE; - sPtsAvailable = CalculateHealingPointsForDoctor(MercPtrs[pFace->ubSoldierID], &usMaximumPts, FALSE); + sPtsAvailable = CalculateHealingPointsForDoctor(pSoldier, &usMaximumPts, FALSE); fShowCustomText = TRUE; @@ -2203,8 +2200,8 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE sIconIndex_Assignment = 2; fDoIcon_Assignment = TRUE; // show current health / maximum health - sPtsAvailable = MercPtrs[pFace->ubSoldierID]->stats.bLife; - usMaximumPts = MercPtrs[pFace->ubSoldierID]->stats.bLifeMax; + sPtsAvailable = pSoldier->stats.bLife; + usMaximumPts = pSoldier->stats.bLifeMax; fShowNumber = TRUE; fShowMaximum = TRUE; break; @@ -2220,27 +2217,27 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE fShowNumber = TRUE; fShowMaximum = TRUE; - switch (MercPtrs[pFace->ubSoldierID]->bAssignment) + switch (pSoldier->bAssignment) { case(TRAIN_SELF) : - sPtsAvailable = GetSoldierTrainingPts(MercPtrs[pFace->ubSoldierID], MercPtrs[pFace->ubSoldierID]->bTrainStat, &usMaximumPts); + sPtsAvailable = GetSoldierTrainingPts(pSoldier, pSoldier->bTrainStat, &usMaximumPts); break; case(TRAIN_BY_OTHER) : - sPtsAvailable = GetSoldierStudentPts(MercPtrs[pFace->ubSoldierID], MercPtrs[pFace->ubSoldierID]->bTrainStat, &usMaximumPts); + sPtsAvailable = GetSoldierStudentPts(pSoldier, pSoldier->bTrainStat, &usMaximumPts); break; case(TRAIN_TOWN) : case DRILL_MILITIA: - sPtsAvailable = GetTownTrainPtsForCharacter(MercPtrs[pFace->ubSoldierID], &usMaximumPts); + sPtsAvailable = GetTownTrainPtsForCharacter(pSoldier, &usMaximumPts); // divide both amounts by 10 to make the displayed numbers a little more user-palatable (smaller) sPtsAvailable = (sPtsAvailable + 5) / 10; usMaximumPts = (usMaximumPts + 5) / 10; break; case(TRAIN_TEAMMATE) : - sPtsAvailable = GetBonusTrainingPtsDueToInstructor(MercPtrs[pFace->ubSoldierID], NULL, MercPtrs[pFace->ubSoldierID]->bTrainStat, &usMaximumPts); + sPtsAvailable = GetBonusTrainingPtsDueToInstructor(pSoldier, NULL, pSoldier->bTrainStat, &usMaximumPts); break; case TRAIN_WORKERS: fShowMaximum = FALSE; - sPtsAvailable = GetTrainWorkerPts(MercPtrs[pFace->ubSoldierID]); + sPtsAvailable = GetTrainWorkerPts(pSoldier); break; } break; @@ -2251,24 +2248,24 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE fDoIcon_Assignment = TRUE; // Show repair points if merc has a toolkit in his hand. Otherwise show cleaning points. if (ItemIsToolkit(pSoldier->inv[HANDPOS].usItem)) - sPtsAvailable = CalculateRepairPointsForRepairman(MercPtrs[pFace->ubSoldierID], &usMaximumPts, FALSE); + sPtsAvailable = CalculateRepairPointsForRepairman(pSoldier, &usMaximumPts, FALSE); else - sPtsAvailable = CalculateCleaningPointsForRepairman(MercPtrs[pFace->ubSoldierID], &usMaximumPts); + sPtsAvailable = CalculateCleaningPointsForRepairman(pSoldier, &usMaximumPts); fShowNumber = TRUE; fShowMaximum = TRUE; // check if we are repairing a vehicle - if (Menptr[pFace->ubSoldierID].bVehicleUnderRepairID != -1) + if (pSoldier->bVehicleUnderRepairID != -1) { // reduce to a multiple of VEHICLE_REPAIR_POINTS_DIVISOR. This way skill too low will show up as 0 repair pts. sPtsAvailable -= (sPtsAvailable % VEHICLE_REPAIR_POINTS_DIVISOR); usMaximumPts -= (usMaximumPts % VEHICLE_REPAIR_POINTS_DIVISOR); } - else if (Menptr[pFace->ubSoldierID].flags.fFixingSAMSite) + else if (pSoldier->flags.fFixingSAMSite) { sPtsAvailable = (sPtsAvailable / SAM_SITE_REPAIR_DIVISOR); - INT16 sector = CALCULATE_STRATEGIC_INDEX(Menptr[pFace->ubSoldierID].sSectorX, Menptr[pFace->ubSoldierID].sSectorY); + INT16 sector = CALCULATE_STRATEGIC_INDEX(pSoldier->sSectorX, pSoldier->sSectorY); usMaximumPts = 100 - StrategicMap[sector].bSAMCondition; } @@ -2338,7 +2335,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE case DISEASE_DOCTOR_SECTOR: sIconIndex_Assignment = 1; fDoIcon_Assignment = TRUE; - sPtsAvailable = CalculateHealingPointsForDoctor(MercPtrs[pFace->ubSoldierID], &usMaximumPts, FALSE); + sPtsAvailable = CalculateHealingPointsForDoctor(pSoldier, &usMaximumPts, FALSE); fShowNumber = TRUE; fShowMaximum = TRUE; @@ -2350,15 +2347,15 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE case FORTIFICATION: sIconIndex_Assignment = 14; fDoIcon_Assignment = TRUE; - sPtsAvailable = (INT16)(MercPtrs[pFace->ubSoldierID]->GetConstructionPoints()); + sPtsAvailable = (INT16)(pSoldier->GetConstructionPoints()); fShowNumber = TRUE; fShowMaximum = TRUE; { - if (MercPtrs[pFace->ubSoldierID]->bSectorZ) + if (pSoldier->bSectorZ) { UNDERGROUND_SECTORINFO *pSectorInfo; - pSectorInfo = FindUnderGroundSector(MercPtrs[pFace->ubSoldierID]->sSectorX, MercPtrs[pFace->ubSoldierID]->sSectorY, MercPtrs[pFace->ubSoldierID]->bSectorZ); + pSectorInfo = FindUnderGroundSector(pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ); if (pSectorInfo) usMaximumPts = (INT16)(pSectorInfo->dFortification_MaxPossible); @@ -2366,7 +2363,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE else { SECTORINFO *pSectorInfo; - pSectorInfo = &SectorInfo[SECTOR(MercPtrs[pFace->ubSoldierID]->sSectorX, MercPtrs[pFace->ubSoldierID]->sSectorY)]; + pSectorInfo = &SectorInfo[SECTOR(pSoldier->sSectorX, pSoldier->sSectorY)]; if (pSectorInfo) usMaximumPts = (INT16)(pSectorInfo->dFortification_MaxPossible); @@ -2386,8 +2383,8 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } else { - bPtsAvailable = MercPtrs[pFace->ubSoldierID]->GetIntelGain(); - usMaximumPts = (UINT16)(MercPtrs[pFace->ubSoldierID]->GetUncoverRisk()); + bPtsAvailable = pSoldier->GetIntelGain(); + usMaximumPts = (UINT16)(pSoldier->GetUncoverRisk()); swprintf(sString, L"%4.2f/%d%%%%", bPtsAvailable, usMaximumPts); @@ -2399,7 +2396,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE sIconIndex_Assignment = 35; fDoIcon_Assignment = TRUE; fShowCustomText = TRUE; - bPtsAvailable = MercPtrs[pFace->ubSoldierID]->GetBurialPoints(&usMaximumPts); + bPtsAvailable = pSoldier->GetBurialPoints(&usMaximumPts); swprintf(sString, L"%3.1f/%d", bPtsAvailable, usMaximumPts); break; @@ -2408,8 +2405,8 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE sIconIndex_Assignment = 36; fDoIcon_Assignment = TRUE; fShowCustomText = TRUE; - sPtsAvailable = (INT16)MercPtrs[pFace->ubSoldierID]->GetAdministrationPoints(); - bPtsAvailable = GetAdministrationPercentage(MercPtrs[pFace->ubSoldierID]->sSectorX, MercPtrs[pFace->ubSoldierID]->sSectorY); + sPtsAvailable = (INT16)pSoldier->GetAdministrationPoints(); + bPtsAvailable = GetAdministrationPercentage(pSoldier->sSectorX, pSoldier->sSectorY); swprintf(sString, L"%d/%3.1f", sPtsAvailable, bPtsAvailable); break; @@ -2418,7 +2415,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE sIconIndex_Assignment = 34; fDoIcon_Assignment = TRUE; fShowCustomText = TRUE; - sPtsAvailable = (INT16)MercPtrs[pFace->ubSoldierID]->GetExplorationPoints(); + sPtsAvailable = (INT16)pSoldier->GetExplorationPoints(); // we only show our points, not how far we are with the task, lest the player deduct how many items there are to find in the first place swprintf( sString, L"%d", sPtsAvailable ); @@ -2426,14 +2423,14 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } // Check for being serviced... - if (MercPtrs[pFace->ubSoldierID]->ubServicePartner != NOBODY) + if (pSoldier->ubServicePartner != NOBODY) { // Doctor... sIconIndex_Assignment = 1; fDoIcon_Assignment = TRUE; } - if (MercPtrs[pFace->ubSoldierID]->ubServiceCount != 0) + if (pSoldier->ubServiceCount != 0) { // Patient sIconIndex_Assignment = 2; @@ -2624,7 +2621,7 @@ BOOLEAN RenderAutoFace( INT32 iFaceIndex ) // Set shade if ( pFace->ubSoldierID != NOBODY ) { - uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, FALSE); + uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, FALSE); SetFaceShade(pFace, uiFaceShade); } @@ -2657,12 +2654,12 @@ BOOLEAN RenderAutoFace( INT32 iFaceIndex ) } -BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT8 ubSoldierID, INT16 sX, INT16 sY ) +BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, SoldierID ubSoldierID, INT16 sX, INT16 sY ) { // Check for valid soldier CHECKF( ubSoldierID != NOBODY ); - return( ExternRenderFace( uiBuffer, MercPtrs[ ubSoldierID ]->iFaceIndex, sX, sY ) ); + return( ExternRenderFace( uiBuffer, ubSoldierID->iFaceIndex, sX, sY ) ); } @@ -2688,7 +2685,7 @@ BOOLEAN ExternRenderFace( UINT32 uiBuffer, INT32 iFaceIndex, INT16 sX, INT16 sY UINT32 uiFaceShade = FLASH_PORTRAIT_NOSHADE; if ( pFace->ubSoldierID != NOBODY ) { - uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, TRUE); + uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, TRUE); SetFaceShade(pFace, uiFaceShade); } @@ -2850,7 +2847,7 @@ void HandleAutoFaces( ) if ( pFace->ubSoldierID != NOBODY ) { // Get Life now - pSoldier = MercPtrs[ pFace->ubSoldierID ]; + pSoldier = pFace->ubSoldierID; bLife = pSoldier->stats.bLife; bInSector = pSoldier->bInSector; bAPs = pSoldier->bActionPoints; diff --git a/Tactical/Food.cpp b/Tactical/Food.cpp index 70bbb298..acf9f92a 100644 --- a/Tactical/Food.cpp +++ b/Tactical/Food.cpp @@ -101,7 +101,7 @@ BOOLEAN DoesSoldierRefuseToEat( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObj ) if ( UsingFoodSystem() ) { // static variables to remember the last food someone was forced to eat - static UINT8 lasteater = 0; + static UINT16 lasteater = 0; static UINT16 lastitem = 0; UINT32 foodtype = Item[pObj->usItem].foodtype; @@ -763,15 +763,16 @@ void EatFromInventory( SOLDIERTYPE *pSoldier, BOOLEAN fcanteensonly ) void HourlyFoodUpdate( void ) { - INT8 bMercID, bLastTeamID; - SOLDIERTYPE * pSoldier = NULL; + SoldierID bMercID, bLastTeamID; + SOLDIERTYPE * pSoldier = NULL; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // loop through all mercs to calculate their morale - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID, ++pSoldier) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; //if the merc is active, and in Arulco if ( pSoldier && pSoldier->bActive && !AM_AN_EPC(pSoldier) && pSoldier->ubProfile != ROBOT && !IsVehicle(pSoldier) && !(pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) ) { @@ -829,15 +830,16 @@ void SectorFillCanteens( void ) addtemperature = FOOD_WATER_POISONOUS_TEMPERATURE; // first step: fill all canteens in inventories - INT8 bMercID, bLastTeamID; - SOLDIERTYPE * pSoldier = NULL; + SoldierID bMercID, bLastTeamID; + SOLDIERTYPE * pSoldier = NULL; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // loop through all mercs - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID, pSoldier++) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; //if the merc is in this sector if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { @@ -903,15 +905,16 @@ void SectorFillCanteens( void ) INT32 drumsize = Food[Item[pWaterDrum->usItem].foodtype].bDrinkPoints; // first step: fill all canteens in inventories - INT8 bMercID, bLastTeamID; - SOLDIERTYPE * pSoldier = NULL; + SoldierID bMercID, bLastTeamID; + SOLDIERTYPE * pSoldier = NULL; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // loop through all mercs - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID, pSoldier++) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; //if the merc is in this sector if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { diff --git a/Tactical/Handle Doors.cpp b/Tactical/Handle Doors.cpp index dd018bd5..5a419b07 100644 --- a/Tactical/Handle Doors.cpp +++ b/Tactical/Handle Doors.cpp @@ -439,12 +439,10 @@ void ProcessImplicationsOfPCMessingWithDoor( SOLDIERTYPE * pSoldier ) // if player is hacking at a door in the brothel and a kingpin guy can see him if ( (InARoom( pSoldier->sGridNo, &usRoom ) && IN_BROTHEL( usRoom )) || (gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_D && gbWorldSectorZ == 0 && (pSoldier->sGridNo == gModSettings.iBrothelDoor1 || pSoldier->sGridNo == gModSettings.iBrothelDoor2 || pSoldier->sGridNo == gModSettings.iBrothelDoor3 ) ) )//11010,11177,11176 { - UINT8 ubLoop; - // see if a kingpin goon can see us - for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for ( SoldierID ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop ) { - pGoon = MercPtrs[ ubLoop ]; + pGoon = ubLoop; if ( pGoon->ubCivilianGroup == KINGPIN_CIV_GROUP && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) { MakeCivHostile(pGoon); diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index 90bfba9f..91ccf48e 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -239,20 +239,20 @@ BOOLEAN HandleCheckForBadChangeToGetThrough( SOLDIERTYPE *pSoldier, SOLDIERTYPE INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHandItem, BOOLEAN fFromUI ) { - SOLDIERTYPE *pTargetSoldier = NULL; - UINT16 usSoldierIndex; - INT32 sTargetGridNo; - INT16 sAPCost; - INT32 sActionGridNo; - UINT8 ubDirection = 0; - INT32 sAdjustedGridNo; - BOOLEAN fDropBomb = FALSE; - BOOLEAN fAddingTurningCost = FALSE; - BOOLEAN fAddingRaiseGunCost = FALSE; - LEVELNODE *pIntNode; - STRUCTURE *pStructure; - UINT16 usRaiseGunCost = 0; - UINT16 usTurningCost = 0; + SOLDIERTYPE *pTargetSoldier = NULL; + SoldierID usSoldierIndex; + INT32 sTargetGridNo; + INT16 sAPCost; + INT32 sActionGridNo; + UINT8 ubDirection = 0; + INT32 sAdjustedGridNo; + BOOLEAN fDropBomb = FALSE; + BOOLEAN fAddingTurningCost = FALSE; + BOOLEAN fAddingRaiseGunCost = FALSE; + LEVELNODE *pIntNode; + STRUCTURE *pStructure; + UINT16 usRaiseGunCost = 0; + UINT16 usTurningCost = 0; //shadooow: automatically close EDB when opened and trying to use any weapon or action if (gfInItemDescBox) @@ -277,7 +277,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa //if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) if ( ( usSoldierIndex = WhoIsThere2( sGridNo, bLevel ) ) != NOBODY ) { - pTargetSoldier = MercPtrs[ usSoldierIndex ]; + pTargetSoldier = usSoldierIndex; // anv: don't try to heal interactive spots if (fFromUI && Item[usHandItem].usItemClass != IC_MEDKIT) @@ -1027,7 +1027,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa if (ItemIsToolkit(usHandItem)) { - UINT8 ubMercID; + UINT16 ubMercID; BOOLEAN fVehicle = FALSE; INT32 sVehicleGridNo=-1; @@ -1100,7 +1100,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa if (ItemIsGascan(usHandItem)) { - UINT8 ubMercID; + UINT16 ubMercID; INT32 sVehicleGridNo=-1; // For repair, check if we are over a vehicle, then get gridnot to edge of that vehicle! @@ -1394,11 +1394,11 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa } } - UINT8 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); + SoldierID ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); // Flugente: apply misc items to other soldiers // sevenfm: check that target soldier is visible - if (ItemCanBeAppliedToOthers(usHandItem) && ubPerson != NOBODY && MercPtrs[ubPerson] && MercPtrs[ubPerson]->bVisible != 0) + if (ItemCanBeAppliedToOthers(usHandItem) && ubPerson != NOBODY && ubPerson->bVisible != 0) { // ATE: AI CANNOT GO THROUGH HERE! BOOLEAN fHadToUseCursorPos = FALSE; @@ -2137,7 +2137,7 @@ void SoldierHandleDropItem( SOLDIERTYPE *pSoldier ) } } - AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); OBJECTTYPE::DeleteMe( &pSoldier->pTempObject ); @@ -2380,7 +2380,7 @@ void HandleAutoPlaceFail( SOLDIERTYPE *pSoldier, INT32 iItemIndex, INT32 sGridNo else { // Add back to world... - AddItemToPool( sGridNo, &(gWorldItems[ iItemIndex ].object ), 1 , pSoldier->pathing.bLevel, 0, -1 ); + AddItemToPool( sGridNo, &(gWorldItems[ iItemIndex ].object ), 1, pSoldier->pathing.bLevel, 0, -1 ); // If we are a merc, say DAMN quote.... if ( pSoldier->bTeam == gbPlayerNum ) @@ -2948,17 +2948,17 @@ void RemoveItemGraphicFromWorld( INVTYPE *pItem, INT32 sGridNo, UINT8 ubLevel, L } // INVENTORY POOL STUFF -OBJECTTYPE* AddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID ) +OBJECTTYPE* AddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID) { return InternalAddItemToPool( &sGridNo, pObject, bVisible, ubLevel, usFlags, bRenderZHeightAboveLevel, soldierID, NULL ); } -OBJECTTYPE * AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ) +OBJECTTYPE * AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, SoldierID soldierID, INT32 * piItemIndex ) { return( InternalAddItemToPool( &sGridNo, pObject, bVisible, ubLevel, usFlags, bRenderZHeightAboveLevel, soldierID, piItemIndex ) ); } -OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ) +OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, SoldierID soldierID, INT32 * piItemIndex ) { ITEM_POOL *pItemPool; ITEM_POOL *pItemPoolTemp; @@ -4292,9 +4292,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I if (gGameExternalOptions.gfShowBackpackOwner && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && - gWorldItems[pItemPool->iItemIndex].soldierID != -1 && - MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) - swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], gWorldItems[pTempItemPool->iItemIndex].object.ubNumberOfObjects, MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName()); + gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY) + swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], gWorldItems[pTempItemPool->iItemIndex].object.ubNumberOfObjects, gWorldItems[pItemPool->iItemIndex].soldierID->GetName()); else swprintf( pStr, L"%s (%d)", ShortItemNames[ gWorldItems[ pTempItemPool->iItemIndex ].object.usItem ], gWorldItems[ pTempItemPool->iItemIndex ].object.ubNumberOfObjects ); } @@ -4303,9 +4302,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I if (gGameExternalOptions.gfShowBackpackOwner && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && - gWorldItems[pItemPool->iItemIndex].soldierID != -1 && - MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) - swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName()); + gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY) + swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].soldierID->GetName()); else swprintf( pStr, L"%s", ShortItemNames[ gWorldItems[ pTempItemPool->iItemIndex ].object.usItem ] ); } @@ -4413,9 +4411,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I if (gGameExternalOptions.gfShowBackpackOwner && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && - gWorldItems[pItemPool->iItemIndex].soldierID != -1 && - MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) - swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].object.ubNumberOfObjects, MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName()); + gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY) + swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].object.ubNumberOfObjects, gWorldItems[pItemPool->iItemIndex].soldierID->GetName()); else swprintf( pStr, L"%s (%d)", ShortItemNames[ gWorldItems[ pItemPool->iItemIndex ].object.usItem ], gWorldItems[ pItemPool->iItemIndex ].object.ubNumberOfObjects ); } @@ -4424,9 +4421,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I if (gGameExternalOptions.gfShowBackpackOwner && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && - gWorldItems[pItemPool->iItemIndex].soldierID != -1 && - MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) - swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName()); + gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY) + swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].soldierID->GetName()); else swprintf( pStr, L"%s", ShortItemNames[ gWorldItems[ pItemPool->iItemIndex ].object.usItem ] ); } @@ -4814,12 +4810,12 @@ void RenderTopmostFlashingItems( ) BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) { SOLDIERTYPE *pTSoldier; - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; OBJECTTYPE *pObject; INT32 sGridNo; - UINT8 ubDirection; - UINT8 ubTargetMercID; + UINT8 ubDirection; + SoldierID ubTargetMercID; // DO SOME CHECKS IF WE CAN DO ANIMATION..... @@ -4828,7 +4824,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) sGridNo = pSoldier->aiData.sPendingActionData2; ubDirection = pSoldier->aiData.bPendingActionData3; - ubTargetMercID = (UINT8)pSoldier->aiData.uiPendingActionData4; + ubTargetMercID = static_cast( pSoldier->aiData.uiPendingActionData4 ); usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); @@ -4854,7 +4850,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) { if ( pSoldier->pTempObject != NULL ) { - AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); // Place it on the ground! ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ ITEM_HAS_BEEN_PLACED_ON_GROUND_STR ], ShortItemNames[ pSoldier->pTempObject->usItem ] ); @@ -4864,7 +4860,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) if ( ubTargetMercID != NOBODY ) { - MercPtrs[ ubTargetMercID ]->flags.uiStatusFlags &= (~SOLDIER_ENGAGEDINACTION ); + ubTargetMercID->flags.uiStatusFlags &= (~SOLDIER_ENGAGEDINACTION ); } OBJECTTYPE::DeleteMe( &pSoldier->pTempObject ); @@ -4884,7 +4880,7 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) INT32 sGridNo; UINT8 ubDirection; - UINT8 ubTargetMercID; + UINT16 ubTargetMercID; UINT16 usItemNum; BOOLEAN fToTargetPlayer = FALSE; @@ -4913,7 +4909,7 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) sGridNo = pSoldier->aiData.sPendingActionData2; ubDirection = pSoldier->aiData.bPendingActionData3; - ubTargetMercID = (UINT8)pSoldier->aiData.uiPendingActionData4; + ubTargetMercID = (UINT16)pSoldier->aiData.uiPendingActionData4; // ATE: Deduct APs! DeductPoints( pSoldier, GetBasicAPsToPickupItem( pSoldier ), 0 ); // SANDRO @@ -5007,7 +5003,7 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) DirtyMercPanelInterface( pSoldier, DIRTYLEVEL2 ); } - AddItemToPool( pSoldier->sGridNo, &gTempObject, 1, pSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( pSoldier->sGridNo, &gTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); // We could not place it! // Drop it on the ground? @@ -5078,13 +5074,13 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) INT32 AdjustGridNoForItemPlacement( SOLDIERTYPE *pSoldier, INT32 sGridNo ) { - STRUCTURE *pStructure; - INT16 sDesiredLevel; - INT32 sActionGridNo; - BOOLEAN fStructFound = FALSE; - UINT8 ubDirection; - INT32 sAdjustedGridNo; - UINT8 ubTargetID; + STRUCTURE *pStructure; + INT16 sDesiredLevel; + INT32 sActionGridNo; + BOOLEAN fStructFound = FALSE; + UINT8 ubDirection; + INT32 sAdjustedGridNo; + SoldierID ubTargetID; sActionGridNo = sGridNo; @@ -5393,15 +5389,16 @@ void UpdateGear() if ( (guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != MSG_BOX_SCREEN) ) return; - UINT16 bMercID, bLastTeamID; + SoldierID bMercID, bLastTeamID; SOLDIERTYPE* pSoldier = NULL; bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; // loop through all mercs - for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, ++pSoldier ) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; //if the merc is in this sector if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) { @@ -6171,7 +6168,7 @@ void BoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) { // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( gsBoobyTrapGridNo , gpBoobyTrapItemPool->iItemIndex , gpBoobyTrapSoldier->ubID ); + send_disarm_explosive( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gpBoobyTrapSoldier->ubID ); // remove it from the ground RemoveItemFromPool( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gbBoobyTrapLevel ); } @@ -6193,7 +6190,7 @@ void BoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( gsBoobyTrapGridNo , gpBoobyTrapItemPool->iItemIndex , gpBoobyTrapSoldier->ubID ); + send_disarm_explosive( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gpBoobyTrapSoldier->ubID ); RemoveItemFromPool( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gbBoobyTrapLevel ); } @@ -6210,7 +6207,7 @@ void BoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) } // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( gsBoobyTrapGridNo , gpBoobyTrapItemPool->iItemIndex , gpBoobyTrapSoldier->ubID ); + send_disarm_explosive( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gpBoobyTrapSoldier->ubID ); // remove it from the ground RemoveItemFromPool( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gbBoobyTrapLevel ); @@ -6365,7 +6362,7 @@ void SwitchMessageBoxCallBack( UINT8 ubExitValue ) // Message that switch is activated... ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, gzLateLocalizedString[ 60 ] ); - SetOffBombsByFrequency( gpTempSoldier->ubID, bTempFrequency ); + SetOffBombsByFrequency( gpTempSoldier->ubID, bTempFrequency ); } } @@ -6735,11 +6732,11 @@ void TestPotentialOwner( SOLDIERTYPE * pSoldier ) void CheckForPickedOwnership( void ) { - ITEM_POOL * pItemPool; - UINT8 ubProfile; - UINT8 ubCivGroup; - SOLDIERTYPE * pSoldier; - UINT8 ubLoop; + ITEM_POOL * pItemPool; + UINT8 ubProfile; + UINT8 ubCivGroup; + SOLDIERTYPE * pSoldier; + SoldierID ubLoop; // LOOP THROUGH LIST TO FIND NODE WE WANT GetItemPool( gsTempGridNo, &pItemPool, gpTempSoldier->pathing.bLevel ); @@ -6766,9 +6763,9 @@ void CheckForPickedOwnership( void ) pItemPool = pItemPool->pNext; continue; } - for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop ) { - pSoldier = MercPtrs[ ubLoop ]; + pSoldier = ubLoop; if ( pSoldier && pSoldier->ubCivilianGroup == ubCivGroup ) { TestPotentialOwner( pSoldier ); @@ -7798,9 +7795,9 @@ BOOLEAN BuildStructFromName( INT32 sGridNo, INT8 sLevel, const char* aStr, UINT8 return FALSE; } -UINT16 gusTempDragBuildSoldierID = NOBODY; +SoldierID gusTempDragBuildSoldierID = NOBODY; -BOOLEAN BuildStructDrag( INT32 sGridNo, INT8 sLevel, UINT32 uiTileType, UINT8 usIndex, UINT16 usSoldierID ) +BOOLEAN BuildStructDrag( INT32 sGridNo, INT8 sLevel, UINT32 uiTileType, UINT8 usIndex, SoldierID usSoldierID ) { // needs to be a valid location if ( TileIsOutOfBounds( sGridNo ) ) @@ -9405,11 +9402,11 @@ void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier ) // handle the default result of an interactive action // This is called either if no lua action id is set, or by lua if this should happen as a supplement to whatever lua does -void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT8 ubID, BOOLEAN aSuccess ) +void DoInteractiveActionDefaultResult( INT32 sGridNo, SoldierID ubID, BOOLEAN aSuccess ) { SOLDIERTYPE* pSoldier = NULL; if ( ubID != NOBODY ) - pSoldier = MercPtrs[ubID]; + pSoldier = ubID; // we need a valid soldier and a valid object if ( !pSoldier ) @@ -10457,9 +10454,9 @@ void TakePhoto(SOLDIERTYPE* pSoldier, INT32 sGridNo, INT8 bLevel ) InARoom( newgridno, &room ); // check if there is someone here - UINT16 ubid = WhoIsThere2( newgridno, bLevel ); + SoldierID ubid = WhoIsThere2( newgridno, bLevel ); - LuaAddPhotoData( gWorldSectorX, gWorldSectorY, gbWorldSectorZ, newgridno, bLevel, pSoldier->ubProfile, room, ( ubid == NOBODY ) ? NO_PROFILE : MercPtrs[ubid]->ubProfile ); + LuaAddPhotoData( gWorldSectorX, gWorldSectorY, gbWorldSectorZ, newgridno, bLevel, pSoldier->ubProfile, room, ( ubid == NOBODY ) ? NO_PROFILE : ubid->ubProfile ); } } } diff --git a/Tactical/Handle Items.h b/Tactical/Handle Items.h index cdc362b3..d43a42b5 100644 --- a/Tactical/Handle Items.h +++ b/Tactical/Handle Items.h @@ -194,9 +194,9 @@ void AllSoldiersLookforItems( BOOLEAN RevealRoofsAndItems ); void SoldierGetItemFromWorld( SOLDIERTYPE *pSoldier, INT32 iItemIndex, INT32 sGridNo, INT8 bZLevel, BOOLEAN *pfSelectionList ); -OBJECTTYPE* AddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID = -1 ); -OBJECTTYPE* AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ); -OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ); +OBJECTTYPE* AddItemToPool(INT32 sGridNo, OBJECTTYPE* pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID = -1); +OBJECTTYPE* AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, SoldierID soldierID, INT32 * piItemIndex ); +OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, SoldierID soldierID, INT32 * piItemIndex ); INT32 AdjustGridNoForItemPlacement( SOLDIERTYPE *pSoldier, INT32 sGridNo ); BOOLEAN GetItemPool( INT32 usMapPos, ITEM_POOL **ppItemPool, UINT8 ubLevel ); @@ -297,7 +297,7 @@ BOOLEAN IsDragStructurePresent( INT32 sGridNo, INT8 sLevel, UINT32& arusTileType void GetDragStructureXmlEntry( UINT32 ausTileType, UINT16 ausStructureNumber, int& arXmlVectorEntry ); BOOLEAN RemoveStructDrag( INT32 sGridNo, INT8 sLevel, UINT32 uiTileType ); void CorrectDragStructData( INT32 sGridNo, INT8 sLevel, UINT8 ausHitpoints, UINT8 ausDecalFlags ); -BOOLEAN BuildStructDrag( INT32 sGridNo, INT8 sLevel, UINT32 uiTileType, UINT8 usIndex, UINT16 usSoldierID ); +BOOLEAN BuildStructDrag( INT32 sGridNo, INT8 sLevel, UINT32 uiTileType, UINT8 usIndex, SoldierID usSoldierID ); void UpdateFortificationPossibleAmount(); void HandleFortificationUpdate(); @@ -329,7 +329,7 @@ extern ITEM_POOL *gpItemPool;//dnl ch26 210909 // Flugente: interactive actions void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier ); -void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT8 ubID, BOOLEAN aSuccess ); +void DoInteractiveActionDefaultResult( INT32 sGridNo, SoldierID ubID, BOOLEAN aSuccess ); BOOLEAN SpendMoney( SOLDIERTYPE *pSoldier, UINT32 aAmount ); // character spends money - either from inventory or the account // Flugente: intel diff --git a/Tactical/Handle UI Plan.cpp b/Tactical/Handle UI Plan.cpp index 6dc32608..9ee7d680 100644 --- a/Tactical/Handle UI Plan.cpp +++ b/Tactical/Handle UI Plan.cpp @@ -37,12 +37,12 @@ BOOLEAN BeginUIPlan( SOLDIERTYPE *pSoldier ) BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) { SOLDIERTYPE *pPlanSoldier; - INT16 sXPos, sYPos; - INT16 sAPCost = 0; - INT8 bDirection; - INT32 iLoop; + INT16 sXPos, sYPos; + INT16 sAPCost = 0; + INT8 bDirection; + INT32 iLoop; SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubNewIndex; + SoldierID ubNewIndex; // Depeding on stance and direction facing, add guy! @@ -79,7 +79,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) if ( TacticalCreateSoldier( &MercCreateStruct, &ubNewIndex ) ) { // Get pointer to soldier - GetSoldier( &pPlanSoldier, (UINT16)ubNewIndex ); + GetSoldier( &pPlanSoldier, ubNewIndex ); pPlanSoldier->sPlannedTargetX = -1; pPlanSoldier->sPlannedTargetY = -1; @@ -118,7 +118,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) pPlanSoldier->ChangeSoldierState( pPlanSoldier->usUIMovementMode, 0, FALSE ); // Change selected soldier - gusSelectedSoldier = (UINT16)pPlanSoldier->ubID; + gusSelectedSoldier = pPlanSoldier->ubID; // Change global planned mode to this guy! gpUIPlannedSoldier = pPlanSoldier; @@ -161,7 +161,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) if ( TacticalCreateSoldier( &MercCreateStruct, &ubNewIndex ) ) { // Get pointer to soldier - GetSoldier( &pPlanSoldier, (UINT16)ubNewIndex ); + GetSoldier( &pPlanSoldier, ubNewIndex ); pPlanSoldier->sPlannedTargetX = -1; pPlanSoldier->sPlannedTargetY = -1; @@ -197,7 +197,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) pPlanSoldier->ChangeSoldierState( pPlanSoldier->usUIMovementMode, 0, FALSE ); // Change selected soldier - gusSelectedSoldier = (UINT16)pPlanSoldier->ubID; + gusSelectedSoldier = pPlanSoldier->ubID; // Change global planned mode to this guy! gpUIPlannedSoldier = pPlanSoldier; @@ -243,6 +243,7 @@ void EndUIPlan( ) SOLDIERTYPE *pSoldier; // Zero out any planned soldiers + //FIXME for( cnt = MAX_NUM_SOLDIERS; cnt < TOTAL_SOLDIERS; cnt++ ) { pSoldier = MercPtrs[ cnt ]; diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index 2c24e53b..62a71e75 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -272,12 +272,12 @@ extern BOOLEAN gfGetNewPathThroughPeople; extern BOOLEAN gfIgnoreOnSelectedGuy; extern BOOLEAN gfInOpenDoorMenu; -BOOLEAN gfUIFullTargetFound; -UINT32 guiUIFullTargetFlags; -UINT16 gusUIFullTargetID; -BOOLEAN gfUISelectiveTargetFound; -UINT32 guiUISelectiveTargetFlags; -UINT16 gusUISelectiveTargetID; +BOOLEAN gfUIFullTargetFound; +UINT32 guiUIFullTargetFlags; +SoldierID gusUIFullTargetID; +BOOLEAN gfUISelectiveTargetFound; +UINT32 guiUISelectiveTargetFlags; +SoldierID gusUISelectiveTargetID; SOLDIERTYPE *gpRequesterMerc = NULL; SOLDIERTYPE *gpRequesterTargetMerc = NULL; @@ -293,7 +293,7 @@ BOOLEAN gfResetUIMovementOptimization = FALSE; BOOLEAN gfResetUIItemCursorOptimization = FALSE; BOOLEAN gfBeginVehicleCursor = FALSE; INT32 gsOutOfRangeGridNo = NOWHERE; -UINT8 gubOutOfRangeMerc = NOBODY; +SoldierID gubOutOfRangeMerc = NOBODY; BOOLEAN gfOKForExchangeCursor = FALSE; UINT32 guiUIInterfaceSwapCursorsTime = 0; INT32 gsJumpOverGridNo = 0; @@ -423,69 +423,65 @@ BOOLEAN gRubberBandActive = FALSE; BOOLEAN gfIgnoreOnSelectedGuy = FALSE; BOOLEAN gfViewPortAdjustedForSouth = FALSE; -INT16 guiCreateGuyIndex = 0; -// Temp values for placing bad guys -INT16 guiCreateBadGuyIndex = 8; // FLAGS // These flags are set for a single frame execution and then are reset for the next iteration. -BOOLEAN gfUIDisplayActionPoints = FALSE; +BOOLEAN gfUIDisplayActionPoints = FALSE; BOOLEAN gfUIDisplayActionPointsInvalid = FALSE; BOOLEAN gfUIDisplayActionPointsBlack = FALSE; -BOOLEAN gfUIDisplayActionPointsCenter = FALSE; +BOOLEAN gfUIDisplayActionPointsCenter = FALSE; -INT16 gUIDisplayActionPointsOffY = 0; -INT16 gUIDisplayActionPointsOffX = 0; -BOOLEAN gfUIDoNotHighlightSelMerc = FALSE; -BOOLEAN gfUIHandleSelection = FALSE; -BOOLEAN gfUIHandleSelectionAboveGuy = FALSE; -BOOLEAN gfUIInDeadlock = FALSE; -UINT8 gUIDeadlockedSoldier = NOBODY; -BOOLEAN gfUIHandleShowMoveGrid = FALSE; +INT16 gUIDisplayActionPointsOffY = 0; +INT16 gUIDisplayActionPointsOffX = 0; +BOOLEAN gfUIDoNotHighlightSelMerc = FALSE; +BOOLEAN gfUIHandleSelection = FALSE; +BOOLEAN gfUIHandleSelectionAboveGuy = FALSE; +BOOLEAN gfUIInDeadlock = FALSE; +BOOLEAN gfUIHandleShowMoveGrid = FALSE; INT32 gsUIHandleShowMoveGridLocation = NOWHERE ; -BOOLEAN gfUIOverItemPool = FALSE; -INT32 gfUIOverItemPoolGridNo = 0; -INT16 gsCurrentActionPoints = 1; -BOOLEAN gfUIHandlePhysicsTrajectory = FALSE; -BOOLEAN gfUIMouseOnValidCatcher = FALSE; -UINT8 gubUIValidCatcherID = 0; +BOOLEAN gfUIOverItemPool = FALSE; +INT32 gfUIOverItemPoolGridNo = 0; +INT16 gsCurrentActionPoints = 1; +BOOLEAN gfUIHandlePhysicsTrajectory = FALSE; +BOOLEAN gfUIMouseOnValidCatcher = FALSE; +SoldierID gubUIValidCatcherID = NOBODY; -BOOLEAN gfUIConfirmExitArrows = FALSE; +BOOLEAN gfUIConfirmExitArrows = FALSE; -BOOLEAN gfUIShowCurIntTile = FALSE; +BOOLEAN gfUIShowCurIntTile = FALSE; -BOOLEAN gfUIWaitingForUserSpeechAdvance = FALSE; // Waiting for key input/mouse click to advance speech -BOOLEAN gfUIKeyCheatModeOn = FALSE; // Sets cool cheat keys on -BOOLEAN gfUIAllMoveOn = FALSE; // Sets to all move -BOOLEAN gfUICanBeginAllMoveCycle = FALSE; // GEts set so we know that the next right-click is a move-call inc\stead of a movement cycle through +BOOLEAN gfUIWaitingForUserSpeechAdvance = FALSE; // Waiting for key input/mouse click to advance speech +BOOLEAN gfUIKeyCheatModeOn = FALSE; // Sets cool cheat keys on +BOOLEAN gfUIAllMoveOn = FALSE; // Sets to all move +BOOLEAN gfUICanBeginAllMoveCycle = FALSE; // GEts set so we know that the next right-click is a move-call inc\stead of a movement cycle through -INT32 gsSelectedGridNo = 0; -INT16 gsSelectedLevel = I_GROUND_LEVEL; -INT16 gsSelectedGuy = NOBODY; +INT32 gsSelectedGridNo = 0; +INT16 gsSelectedLevel = I_GROUND_LEVEL; +SoldierID gsSelectedGuy = NOBODY; -BOOLEAN gfUIDisplayDamage = FALSE; -INT8 gbDamage = 0; -INT32 gsDamageGridNo = 0; +BOOLEAN gfUIDisplayDamage = FALSE; +INT8 gbDamage = 0; +INT32 gsDamageGridNo = 0; -BOOLEAN gfUIRefreshArrows = FALSE; +BOOLEAN gfUIRefreshArrows = FALSE; // Thse flags are not re-set after each frame -BOOLEAN gfPlotNewMovement = FALSE; -BOOLEAN gfPlotNewMovementNOCOST = FALSE; -UINT32 guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN; -INT8 gbAdjustStanceDiff = 0; -INT8 gbClimbID = 0; +BOOLEAN gfPlotNewMovement = FALSE; +BOOLEAN gfPlotNewMovementNOCOST = FALSE; +UINT32 guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN; +INT8 gbAdjustStanceDiff = 0; +INT8 gbClimbID = 0; -BOOLEAN gfUIShowExitEast = FALSE; -BOOLEAN gfUIShowExitWest = FALSE; -BOOLEAN gfUIShowExitNorth = FALSE; -BOOLEAN gfUIShowExitSouth = FALSE; -BOOLEAN gfUIShowExitExitGrid = FALSE; +BOOLEAN gfUIShowExitEast = FALSE; +BOOLEAN gfUIShowExitWest = FALSE; +BOOLEAN gfUIShowExitNorth = FALSE; +BOOLEAN gfUIShowExitSouth = FALSE; +BOOLEAN gfUIShowExitExitGrid = FALSE; -BOOLEAN gfUINewStateForIntTile = FALSE; +BOOLEAN gfUINewStateForIntTile = FALSE; BOOLEAN gfUIForceReExamineCursorData = FALSE; @@ -495,7 +491,7 @@ UINT8 GetAdjustedAnimHeight( UINT8 ubAnimHeight, INT8 bChange ); //-------------------------Legion 2 okno----------------------------------------------------------- -void GetMercOknoDirection( UINT8 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) +void GetMercOknoDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) { INT8 bNewDirection; SOLDIERTYPE *pSoldier; @@ -576,7 +572,7 @@ UINT32 HandleTacticalUI( void ) gfUIInterfaceSetBusy = FALSE; //UNLOCK UI - UnSetUIBusy( (UINT8)gusSelectedSoldier ); + UnSetUIBusy( gusSelectedSoldier ); // Decrease global busy counter... gTacticalStatus.ubAttackBusyCount = 0; @@ -1013,7 +1009,7 @@ void SetUIMouseCursor( ) if( GetMouseMapPos( &usMapPos) ) { - if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->pathing.bLevel == 0 ) + if ( gusSelectedSoldier != NOBODY && gusSelectedSoldier->pathing.bLevel == 0 ) { // ATE: Is this place revealed? if ( !InARoom( usMapPos, &usRoomNum ) || ( InARoom( usMapPos, &usRoomNum ) && gpWorldLevelData[ usMapPos ].uiFlags & MAPELEMENT_REVEALED ) ) @@ -1404,15 +1400,16 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent ) // WANNE: Ignore, so the game can continue ... } - INT32 tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; SOLDIERTYPE *tS; INT16 sXOffset, sYOffset; INT32 sGridNo; UINT16 usSightLimit=0; - for ( tS = MercPtrs[ tcnt ]; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++tcnt, tS++ ) + for ( ; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++tcnt ) { + tS = tcnt; if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector ) { //loop through all the gridnos that we are interested in @@ -1499,7 +1496,7 @@ UINT32 UIHandleTestHit( UI_EVENT *pUIEvent ) // gTacticalStatus.ubAttackBusyCount++; DebugAttackBusy( "Testing a hit.\n" ); - pSoldier->EVENT_SoldierGotHit( 1, bDamage, 10, pSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pSoldier->bAimShotLocation, 0, NOWHERE ); + pSoldier->EVENT_SoldierGotHit( 1, bDamage, 10, pSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, pSoldier->bAimShotLocation, 0, NOWHERE ); // callahan update end - put everything as it was } return( GAME_SCREEN ); @@ -1551,7 +1548,7 @@ UINT32 UIHandleChangeLevel( UI_EVENT *pUIEvent ) } -extern void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ); +extern void InternalSelectSoldier( SoldierID usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ); UINT32 UIHandleSelectMerc( UI_EVENT *pUIEvent ) { @@ -1715,16 +1712,15 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent ) // THIS IS JUST A CRUDE TEST FOR NOW if ( pSoldier->stats.bLife < OKLIFE ) { - UINT8 ubID; // Show reg. cursor // GO INTO IDLE MODE // guiPendingOverrideEvent = I_CHANGE_TO_IDLE; // gusSelectedSoldier = NOBODY; - ubID = FindNextActiveAndAliveMerc( pSoldier, FALSE, FALSE ); + SoldierID ubID = FindNextActiveAndAliveMerc( pSoldier, FALSE, FALSE ); if ( ubID != NOBODY ) { - SelectSoldier( (INT16)ubID, FALSE, FALSE ); + SelectSoldier( ubID, FALSE, FALSE ); } else { @@ -1953,7 +1949,7 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent ) if ( gfUIFullTargetFound ) { // No, ok display message IF this is the first time at this gridno - if ( gsOutOfRangeGridNo != MercPtrs[ gusUIFullTargetID ]->sGridNo || gubOutOfRangeMerc != gusSelectedSoldier ) + if ( gsOutOfRangeGridNo != gusUIFullTargetID->sGridNo || gubOutOfRangeMerc != gusSelectedSoldier ) { // Display ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ OUT_OF_RANGE_STRING ] ); @@ -1961,14 +1957,14 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent ) //PlayJA2Sample( TARGET_OUT_OF_RANGE, RATE_11025, MIDVOLUME, 1, MIDDLEPAN ); // Set - gsOutOfRangeGridNo = MercPtrs[ gusUIFullTargetID ]->sGridNo; - gubOutOfRangeMerc = (UINT8)gusSelectedSoldier; + gsOutOfRangeGridNo = gusUIFullTargetID->sGridNo; + gubOutOfRangeMerc = gusSelectedSoldier; } } } } - guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE ); + guiNewUICursor = GetProperItemCursor( gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE ); // Show UI ON GUY UIHandleOnMerc( FALSE ); @@ -2058,7 +2054,7 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent ) { if( pSoldier->flags.uiStatusFlags & SOLDIER_DRIVER ) { - pSoldier = GetSoldierStructureForVehicle( MercPtrs[ gusSelectedSoldier ]->iVehicleId ); + pSoldier = GetSoldierStructureForVehicle( gusSelectedSoldier->iVehicleId ); } pInvTile = GetCurInteractiveTile( ); @@ -2115,17 +2111,17 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent ) // SelectedMercCanAffordMove UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent ) { - INT32 usMapPos; - SOLDIERTYPE *pSoldier; - INT32 sDestGridNo; - INT32 sActionGridNo; - STRUCTURE *pStructure; - UINT8 ubDirection = 0xff; - BOOLEAN fAllMove; - INT8 bLoop; - LEVELNODE *pIntTile; - INT32 sIntTileGridNo; - BOOLEAN fOldFastMove; + INT32 usMapPos; + SOLDIERTYPE *pSoldier; + INT32 sDestGridNo; + INT32 sActionGridNo; + STRUCTURE *pStructure; + UINT8 ubDirection = 0xff; + BOOLEAN fAllMove; + SoldierID bLoop; + LEVELNODE *pIntTile; + INT32 sIntTileGridNo; + BOOLEAN fOldFastMove; if ( gusSelectedSoldier != NOBODY ) { @@ -2146,13 +2142,14 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent ) // Loop through all mercs and make go! // TODO: Only our squad! - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pSoldier++) + for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) { + pSoldier = bLoop; if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) && !pSoldier->flags.fMercAsleep ) { - // If we can't be controlled, returninvalid... - if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT ) - { + // If we can't be controlled, returninvalid... + if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT ) + { if ( !pSoldier->CanRobotBeControlled( ) ) { continue; @@ -2211,7 +2208,7 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent ) // anv: if we selected vehicle driver, move his vehicle if ( pSoldier->flags.uiStatusFlags & (SOLDIER_DRIVER ) ) { - pSoldier = GetSoldierStructureForVehicle( MercPtrs[ pSoldier->ubID ]->iVehicleId ); + pSoldier = GetSoldierStructureForVehicle( pSoldier->iVehicleId ); // anv: if shift is pressed, treat is as ram + move - flag has to be set for later add structure checks if ( _KeyDown( SHIFT ) ) { @@ -2744,7 +2741,7 @@ UINT32 UIHandleCAOnTerrain( UI_EVENT *pUIEvent ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) { - guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE ); + guiNewUICursor = GetProperItemCursor( gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE ); UIHandleOnMerc( FALSE ); } @@ -2982,7 +2979,7 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent ) if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; } if ( pTSoldier != NULL ) @@ -3304,35 +3301,6 @@ void HandleObjectHighlighting( ) } -void AdjustSoldierCreationStartValues( ) -{ - INT32 cnt; - SOLDIERTYPE *pSoldier; - - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - guiCreateGuyIndex = (INT16)cnt; - - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; pSoldier++, ++cnt ) - { - if ( !pSoldier->bActive ) - { - guiCreateGuyIndex = (INT16)cnt; - break; - } - } - - cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID + 1; - guiCreateBadGuyIndex = (INT16)cnt; - - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; pSoldier++, ++cnt ) - { - if ( !pSoldier->bActive && cnt > gTacticalStatus.Team[ gbPlayerNum ].bLastID ) - { - guiCreateBadGuyIndex = (INT16)cnt; - break; - } - } -} BOOLEAN SelectedMercCanAffordAttack( ) { @@ -3465,7 +3433,7 @@ BOOLEAN SelectedMercCanAffordMove( ) return( FALSE ); } -void GetMercClimbDirection( UINT8 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) +void GetMercClimbDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) { INT8 bNewDirection; SOLDIERTYPE *pSoldier; @@ -3626,11 +3594,11 @@ void ToggleLookCursorMode( UINT32 *puiNewEvent ) BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode ) { - SOLDIERTYPE *pSoldier; - UINT16 usSoldierIndex; - UINT32 uiMercFlags; - INT32 usMapPos; - BOOLEAN fFoundMerc = FALSE; + SOLDIERTYPE *pSoldier; + SoldierID usSoldierIndex; + UINT32 uiMercFlags; + INT32 usMapPos; + BOOLEAN fFoundMerc = FALSE; if( !GetMouseMapPos( &usMapPos) ) { @@ -3746,7 +3714,7 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode ) // anv: don't switch if passengers are blocked from attacking if( gusSelectedSoldier != NOBODY ) { - SOLDIERTYPE *pSelectedSoldier = MercPtrs[gusSelectedSoldier]; + SOLDIERTYPE *pSelectedSoldier = gusSelectedSoldier; if( pSelectedSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) { SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( pSelectedSoldier->iVehicleId ); @@ -3769,16 +3737,16 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode ) ErasePath( TRUE ); // Show cursor with highlight on selected merc - guiNewUICursor = NO_UICURSOR; + guiNewUICursor = NO_UICURSOR; // Show cursor with highlight - gfUIHandleSelection = ENEMY_GUY_SELECTION; - gsSelectedGridNo = pSoldier->sGridNo; - gsSelectedLevel = pSoldier->pathing.bLevel; + gfUIHandleSelection = ENEMY_GUY_SELECTION; + gsSelectedGridNo = pSoldier->sGridNo; + gsSelectedLevel = pSoldier->pathing.bLevel; } } - gfUIHandleSelectionAboveGuy = TRUE; - gsSelectedGuy = usSoldierIndex; + gfUIHandleSelectionAboveGuy = TRUE; + gsSelectedGuy = usSoldierIndex; } } else @@ -3839,9 +3807,9 @@ UINT32 UIHandleIETOnTerrain( UI_EVENT *pUIEvent ) } -void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance ) +void UIHandleSoldierStanceChange( SoldierID ubSoldierID, INT8 bNewStance ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; + SOLDIERTYPE *pSoldier = ubSoldierID; if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) { @@ -4059,7 +4027,7 @@ void GetCursorMovementFlags( UINT32 *puiCursorFlags ) BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags ) { BOOLEAN fSetCursor = FALSE; - static UINT16 usTargetID = NOBODY; + static SoldierID usTargetID = NOBODY; static BOOLEAN fTargetFound = FALSE; BOOLEAN fTargetFoundAndLookingForOne = FALSE; @@ -4251,7 +4219,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) LEVELNODE *pIntTile; INT8 bReturnCode = 0; BOOLEAN fPlot; - UINT8 ubMercID; + UINT16 ubMercID; if ( (gTacticalStatus.uiFlags & INCOMBAT ) && ( gTacticalStatus.uiFlags & TURNBASED ) || _KeyDown( SHIFT ) ) { @@ -4589,7 +4557,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) // Check if we are on a target if ( gfUIFullTargetFound ) { - sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if ( sActionGridNo == -1 ) { sActionGridNo = sAdjustedGridNo; @@ -4597,7 +4565,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) ///////////////////////////////////////////////////////////////////////////////////////// // CHANGED BY SANDRO - REDUCE AP COST TO STEAL FOR MARTIAL ARTS AND HAND TO HAND NEW TRAITS - if (MercPtrs[ gusUIFullTargetID ]->bCollapsed && gGameExternalOptions.fEnhancedCloseCombatSystem) + if (gusUIFullTargetID->bCollapsed && gGameExternalOptions.fEnhancedCloseCombatSystem) { sAPCost += (GetBasicAPsToPickupItem( pSoldier )); // stealing from collapsed soldiers is treated differently } @@ -4642,7 +4610,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) { if ( gfUIFullTargetFound ) { - sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if (!TileIsOutOfBounds(sActionGridNo)) { @@ -4814,7 +4782,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } if ( IsRepairableStructAtGridNo( usMapPos, NULL ) && pSoldier->pathing.bLevel == 0 ) @@ -4831,7 +4799,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } if ( IsRefuelableStructAtGridNo( usMapPos, NULL ) && pSoldier->pathing.bLevel == 0 ) @@ -4848,7 +4816,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } if ( pSoldier->pathing.bLevel == 0 ) @@ -4875,7 +4843,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[gusUIFullTargetID]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } UINT16 structindex; @@ -4894,7 +4862,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; return( TRUE ); } @@ -4917,7 +4885,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - if ( pSoldier->ubID != gusUIFullTargetID && MercPtrs[gusUIFullTargetID]->IsValidBloodDonor() ) + if ( pSoldier->ubID != gusUIFullTargetID && gusUIFullTargetID->IsValidBloodDonor() ) return( TRUE ); } } @@ -4931,7 +4899,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - if ( pSoldier->ubID != gusUIFullTargetID && MercPtrs[gusUIFullTargetID]->CanReceiveSplint() ) + if ( pSoldier->ubID != gusUIFullTargetID && gusUIFullTargetID->CanReceiveSplint() ) return( TRUE ); } } @@ -4945,7 +4913,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) { if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; return( TRUE ); } @@ -4999,7 +4967,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ) } // IF a guy's here, chack if they need medical help! - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; // If we are a vehicle... if ( ( pTSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_ROBOT ) ) ) @@ -5535,9 +5503,9 @@ BOOLEAN MakeSoldierTurn( SOLDIERTYPE *pSoldier, INT16 sXPos, INT16 sYPos ) UINT32 UIHandleLCLook( UI_EVENT *pUIEvent ) { - INT16 sXPos, sYPos; - SOLDIERTYPE *pSoldier; - INT32 cnt; + INT16 sXPos, sYPos; + SOLDIERTYPE *pSoldier; + SoldierID cnt; if ( !GetMouseXY( &sXPos, &sYPos ) ) { return( GAME_SCREEN ); @@ -5547,8 +5515,9 @@ UINT32 UIHandleLCLook( UI_EVENT *pUIEvent ) { // OK, loop through all guys who are 'multi-selected' and cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -5579,12 +5548,12 @@ UINT32 UIHandleLCLook( UI_EVENT *pUIEvent ) UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent ) { - SOLDIERTYPE *pSoldier; - UINT8 ubTargID; - UINT32 uiRange; - INT32 usMapPos; - BOOLEAN fValidTalkableGuy = FALSE; - INT32 sTargetGridNo; + SOLDIERTYPE *pSoldier; + SoldierID ubTargID; + UINT32 uiRange; + INT32 usMapPos; + BOOLEAN fValidTalkableGuy = FALSE; + INT32 sTargetGridNo; // Get soldier if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) ) @@ -5611,13 +5580,13 @@ UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent ) //CHECK FOR VALID TALKABLE GUY HERE - fValidTalkableGuy = IsValidTalkableNPCFromMouse( &ubTargID, FALSE, TRUE , FALSE ); + fValidTalkableGuy = IsValidTalkableNPCFromMouse( &ubTargID, FALSE, TRUE, FALSE ); // USe cursor based on distance // Get distance away if ( fValidTalkableGuy ) { - sTargetGridNo = MercPtrs[ ubTargID ]->sGridNo; + sTargetGridNo = ubTargID->sGridNo; } uiRange = PythSpacesAway( pSoldier->sGridNo, sTargetGridNo ); @@ -5852,10 +5821,10 @@ void GetGridNoScreenXY( INT32 sGridNo, INT16 *pScreenX, INT16 *pScreenY ) void EndMultiSoldierSelection( BOOLEAN fAcknowledge ) { - SOLDIERTYPE * pSoldier; - INT32 cnt; - SOLDIERTYPE *pFirstSoldier = NULL; - BOOLEAN fSelectedSoldierInBatch = FALSE; + SOLDIERTYPE *pSoldier; + SoldierID cnt; + SOLDIERTYPE *pFirstSoldier = NULL; + BOOLEAN fSelectedSoldierInBatch = FALSE; gTacticalStatus.fAtLeastOneGuyOnMultiSelect = FALSE; @@ -5865,8 +5834,9 @@ void EndMultiSoldierSelection( BOOLEAN fAcknowledge ) // check if our currently selected guy is among the // lucky few.. if not, change to a guy who is... cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -5911,15 +5881,16 @@ BOOLEAN StopRubberBandedMercFromMoving(void) } SOLDIERTYPE *pSoldier; - INT32 cnt; + SoldierID cnt; BOOLEAN fFound = FALSE; // OK, loop through all guys who are 'multi-selected' and // check if our currently selected guy is among the // lucky few.. if not, change to a guy who is... cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -5955,10 +5926,10 @@ void EndRubberBanding( ) BOOLEAN HandleMultiSelectionMove( INT32 sDestGridNo ) { - SOLDIERTYPE * pSoldier; - INT32 cnt; - BOOLEAN fAtLeastOneMultiSelect = FALSE; - BOOLEAN fMoveFast = FALSE; + SOLDIERTYPE *pSoldier; + SoldierID cnt; + BOOLEAN fAtLeastOneMultiSelect = FALSE; + BOOLEAN fMoveFast = FALSE; // OK, loop through all guys who are 'multi-selected' and // Make them move.... @@ -5967,8 +5938,9 @@ BOOLEAN HandleMultiSelectionMove( INT32 sDestGridNo ) gfGetNewPathThroughPeople = TRUE; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -5990,8 +5962,9 @@ BOOLEAN HandleMultiSelectionMove( INT32 sDestGridNo ) INT32 highestY = 0; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -6010,8 +5983,9 @@ BOOLEAN HandleMultiSelectionMove( INT32 sDestGridNo ) INT32 centerY = (highestY + lowestY)/2; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -6100,9 +6074,10 @@ void ResetMultiSelection( ) { // OK, loop through all guys who are 'multi-selected' and // Make them move.... - INT32 cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for (SOLDIERTYPE* pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + SOLDIERTYPE *pSoldier = cnt; if ( pSoldier && pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -6119,12 +6094,12 @@ void ResetMultiSelection( ) UINT32 UIHandleRubberBandOnTerrain( UI_EVENT *pUIEvent ) { - SOLDIERTYPE * pSoldier; - INT32 cnt; - INT16 sScreenX, sScreenY; - INT32 iTemp; - SGPRect aRect; - BOOLEAN fAtLeastOne = FALSE; + SOLDIERTYPE *pSoldier; + SoldierID cnt; + INT16 sScreenX, sScreenY; + INT32 iTemp; + SGPRect aRect; + BOOLEAN fAtLeastOne = FALSE; guiNewUICursor = NO_UICURSOR; //SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR ); @@ -6152,8 +6127,9 @@ UINT32 UIHandleRubberBandOnTerrain( UI_EVENT *pUIEvent ) // ATE:Check at least for one guy that's in point! cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Check if this guy is OK to control.... if ( OK_CONTROLLABLE_MERC( pSoldier ) && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) ) { @@ -6180,9 +6156,9 @@ UINT32 UIHandleRubberBandOnTerrain( UI_EVENT *pUIEvent ) // ATE: Now loop through our guys and see if any fit! cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { - + pSoldier = cnt; // Check if this guy is OK to control.... if ( OK_CONTROLLABLE_MERC( pSoldier ) && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) ) { @@ -6366,27 +6342,27 @@ UINT32 UIHandleLAEndLockOurTurn( UI_EVENT *pUIEvent ) -BOOLEAN IsValidTalkableNPCFromMouse( UINT8 *pubSoldierID , BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) +BOOLEAN IsValidTalkableNPCFromMouse( SoldierID *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) { // Check if there is a guy here to talk to! if ( gfUIFullTargetFound ) { - *pubSoldierID = (UINT8)gusUIFullTargetID; - return( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, fGive, fAllowMercs, fCheckCollapsed ) ); + *pubSoldierID = gusUIFullTargetID; + return( IsValidTalkableNPC( gusUIFullTargetID, fGive, fAllowMercs, fCheckCollapsed ) ); } return( FALSE ); } -BOOLEAN IsValidTalkableNPC( UINT8 ubSoldierID, BOOLEAN fGive , BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) +BOOLEAN IsValidTalkableNPC( SoldierID ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; + SOLDIERTYPE *pSoldier = ubSoldierID; BOOLEAN fValidGuy = FALSE; if ( gusSelectedSoldier != NOBODY ) { - if ( AM_A_ROBOT( MercPtrs[ gusSelectedSoldier ] ) ) + if ( AM_A_ROBOT( gusSelectedSoldier ) ) { return( FALSE ); } @@ -6501,7 +6477,7 @@ BOOLEAN HandleTalkInit( ) if ( gfUIFullTargetFound ) { // Is he a valid NPC? - if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, TRUE , FALSE ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, TRUE, FALSE ) ) { GetSoldier( &pTSoldier, gusUIFullTargetID ); @@ -6708,7 +6684,7 @@ BOOLEAN HandleTalkInit( ) -void SetUIBusy( UINT8 ubID ) +void SetUIBusy( SoldierID ubID ) { if ( (gTacticalStatus.uiFlags & INCOMBAT ) && ( gTacticalStatus.uiFlags & TURNBASED ) && ( gTacticalStatus.ubCurrentTeam == gbPlayerNum ) ) { @@ -6720,7 +6696,7 @@ void SetUIBusy( UINT8 ubID ) } } -void UnSetUIBusy( UINT8 ubID ) +void UnSetUIBusy( SoldierID ubID ) { if ( gfUserTurnRegionActive && (gTacticalStatus.uiFlags & INCOMBAT ) && ( gTacticalStatus.uiFlags & TURNBASED ) && ( gTacticalStatus.ubCurrentTeam == gbPlayerNum ) ) { @@ -6791,7 +6767,7 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM // unless we are over our own vehicle, then we can call vehicle menu if( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; if( pSoldier->iVehicleId == pTSoldier->bVehicleID ) { guiNewUICursor = ENTER_VEHICLE_UICURSOR; @@ -6804,7 +6780,7 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM if ( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; // anv: added condition - make sure we won't put vehicle in another vehicle if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) ) @@ -7042,7 +7018,7 @@ BOOLEAN SelectedGuyInBusyAnimation( ) if ( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; if ( pSoldier->usAnimState == LOB_ITEM || pSoldier->usAnimState == THROW_ITEM || @@ -7199,7 +7175,7 @@ BOOLEAN ValidQuickExchangePosition( ) // Check if we over a civ if ( gfUIFullTargetFound ) { - pOverSoldier = MercPtrs[ gusUIFullTargetID ]; + pOverSoldier = gusUIFullTargetID; //KM: Replaced this older if statement for the new one which allows exchanging with militia //if ( ( pOverSoldier->bSide != gbPlayerNum ) && pOverSoldier->aiData.bNeutral ) @@ -7266,7 +7242,8 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec INT32 sFourGrids[4], sDistance=0, sSpot, sInBetween, sInBetween2, iDoorGridNo; static const UINT8 sDirs[4] = { NORTH, EAST, SOUTH, WEST }; //INT32 cnt; - UINT8 ubGuyThere, ubMovementCost, ubDirection; + SoldierID ubGuyThere; + UINT8 ubMovementCost, ubDirection; INT8 bTileHeight = 0; // SANDRO: commented out to allow jumping even in cases we could get to the destination normally @@ -7370,7 +7347,7 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec ubGuyThere = WhoIsThere2( sInBetween, pSoldier->pathing.bLevel ); if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID ) { - if ( gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE ) { return( FALSE ); } @@ -7444,12 +7421,12 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec // If there's a guy on any of the two middle tiles, and he's not prone, we can't jump over him ubGuyThere = WhoIsThere2( sInBetween, pSoldier->pathing.bLevel ); - if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE ) { return( FALSE ); } ubGuyThere = WhoIsThere2( sInBetween2, pSoldier->pathing.bLevel ); - if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE ) { return( FALSE ); } diff --git a/Tactical/Handle UI.h b/Tactical/Handle UI.h index 896cf34b..acfc4cab 100644 --- a/Tactical/Handle UI.h +++ b/Tactical/Handle UI.h @@ -181,7 +181,7 @@ extern UI_EVENT gEvents[ NUM_UI_EVENTS ]; extern UI_MODE gCurrentUIMode; extern UI_MODE gOldUIMode; extern UINT32 guiCurrentEvent; -extern INT16 gsSelectedLevel; +extern INT16 gsSelectedLevel; extern BOOLEAN gfPlotNewMovement; extern UINT32 guiPendingOverrideEvent; @@ -191,34 +191,33 @@ extern BOOLEAN gfUIDisplayActionPoints; extern BOOLEAN gfUIDisplayActionPointsInvalid; extern BOOLEAN gfUIDisplayActionPointsBlack; extern BOOLEAN gfUIDisplayActionPointsCenter; -extern INT16 gUIDisplayActionPointsOffY; -extern INT16 gUIDisplayActionPointsOffX; +extern INT16 gUIDisplayActionPointsOffY; +extern INT16 gUIDisplayActionPointsOffX; extern BOOLEAN gfUIDoNotHighlightSelMerc; extern UINT32 guiShowUPDownArrows; extern BOOLEAN gfUIHandleSelection; extern BOOLEAN gfUIHandleSelectionAboveGuy; -extern INT32 gsSelectedGridNo; -extern INT16 gsSelectedGuy; +extern INT32 gsSelectedGridNo; +extern SoldierID gsSelectedGuy; extern BOOLEAN gfUIInDeadlock; -extern UINT8 gUIDeadlockedSoldier; extern BOOLEAN gfUIMouseOnValidCatcher; -extern UINT8 gubUIValidCatcherID; +extern SoldierID gubUIValidCatcherID; extern BOOLEAN gUIUseReverse; extern BOOLEAN gfUIHandleShowMoveGrid; -extern INT32 gsUIHandleShowMoveGridLocation; +extern INT32 gsUIHandleShowMoveGridLocation; extern BOOLEAN gfUIDisplayDamage; extern INT8 gbDamage; -extern INT32 gsDamageGridNo; +extern INT32 gsDamageGridNo; extern BOOLEAN gfFontPopupDo; extern BOOLEAN gUITargetReady; extern BOOLEAN gUITargetShotWaiting; -extern INT32 gsUITargetShotGridNo; +extern INT32 gsUITargetShotGridNo; extern CHAR16 gzLocation[ 20 ]; extern BOOLEAN gfUIBodyHitLocation; @@ -268,16 +267,16 @@ extern BOOLEAN gfUIHandlePhysicsTrajectory; // GLOBALS FOR FAST LOOKUP FOR FINDING MERCS FROM THE MOUSE -extern BOOLEAN gfUISelectiveTargetFound; -extern UINT16 gusUISelectiveTargetID; -extern UINT32 guiUISelectiveTargetFlags; +extern BOOLEAN gfUISelectiveTargetFound; +extern SoldierID gusUISelectiveTargetID; +extern UINT32 guiUISelectiveTargetFlags; -extern BOOLEAN gfUIFullTargetFound; -extern UINT16 gusUIFullTargetID; -extern UINT32 guiUIFullTargetFlags; +extern BOOLEAN gfUIFullTargetFound; +extern SoldierID gusUIFullTargetID; +extern UINT32 guiUIFullTargetFlags; extern BOOLEAN gfUIConfirmExitArrows; -extern INT32 gsJumpOverGridNo; +extern INT32 gsJumpOverGridNo; extern UINT32 HandleTacticalUI(void); extern UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent ); @@ -293,9 +292,6 @@ void HandleObjectHighlighting( ); extern BOOLEAN gfUIForceReExamineCursorData; -extern INT16 guiCreateGuyIndex; -extern INT16 guiCreateBadGuyIndex; - // WANNE: Calculate the APs to turn around INT16 APsToTurnAround(SOLDIERTYPE *pSoldier, INT32 sAdjustedGridNo); @@ -316,17 +312,16 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ); void QueryRTLeftButton( UINT32 *puiNewEvent ); void QueryRTRightButton( UINT32 *puiNewEvent ); -void AdjustSoldierCreationStartValues( ); BOOLEAN SelectedMercCanAffordAttack( ); BOOLEAN SelectedMercCanAffordMove( ); -void GetMercClimbDirection( UINT8 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); +void GetMercClimbDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); void ToggleHandCursorMode( UINT32 *puiNewEvent ); void ToggleTalkCursorMode( UINT32 *puiNewEvent ); void ToggleLookCursorMode( UINT32 *puiNewEvent ); -void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance ); +void UIHandleSoldierStanceChange( SoldierID ubSoldierID, INT8 bNewStance ); void GetCursorMovementFlags( UINT32 *puiCursorFlags ); BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags ); @@ -334,15 +329,15 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ); BOOLEAN UIOkForItemPickup( SOLDIERTYPE *pSoldier, INT32 sGridNo ); -BOOLEAN IsValidTalkableNPCFromMouse( UINT8 *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); -BOOLEAN IsValidTalkableNPC( UINT8 ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); +BOOLEAN IsValidTalkableNPCFromMouse( SoldierID *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); +BOOLEAN IsValidTalkableNPC( SoldierID ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); BOOLEAN HandleTalkInit( ); BOOLEAN HandleCheckForExitArrowsInput( BOOLEAN fAdjustForConfirm ); -void SetUIBusy( UINT8 ubID ); -void UnSetUIBusy( UINT8 ubID ); +void SetUIBusy( SoldierID ubID ); +void UnSetUIBusy( SoldierID ubID ); UINT32 UIHandleLUIEndLock( UI_EVENT *pUIEvent ); @@ -380,6 +375,6 @@ void PreventFromTheFreezingBug(SOLDIERTYPE* pSoldier); void GetGridNoScreenXY( INT32 sGridNo, INT16 *pScreenX, INT16 *pScreenY ); //Legion by Jazz -void GetMercOknoDirection( UINT8 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); +void GetMercOknoDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); -#endif +#endif diff --git a/Tactical/Interface Control.cpp b/Tactical/Interface Control.cpp index a34e89b6..6987ac0a 100644 --- a/Tactical/Interface Control.cpp +++ b/Tactical/Interface Control.cpp @@ -317,7 +317,7 @@ void SetUpInterface( ) { if ( gusSelectedSoldier != NOBODY ) { - if ( MercPtrs[ gusSelectedSoldier ]->sGridNo != gsUIHandleShowMoveGridLocation ) + if ( gusSelectedSoldier->sGridNo != gsUIHandleShowMoveGridLocation ) { if ( gfUIHandleShowMoveGrid == 2 ) { @@ -327,7 +327,7 @@ void SetUpInterface( ) } else { - if ( MercPtrs[ gusSelectedSoldier ]->bStealthMode ) + if ( gusSelectedSoldier->bStealthMode ) { AddTopmostToHead( gsUIHandleShowMoveGridLocation, GetSnapCursorIndex( FIRSTPOINTERS9 ) ); gpWorldLevelData[gsUIHandleShowMoveGridLocation].pTopmostHead->ubShadeLevel=DEFAULT_SHADE_LEVEL; @@ -917,7 +917,7 @@ void RenderTopmostTacticalInterface( ) } else { - DrawSelectedUIAboveGuy((UINT16)pSoldier->ubID); + DrawSelectedUIAboveGuy(pSoldier->ubID); } DrawCounters( pSoldier ); diff --git a/Tactical/Interface Cursors.cpp b/Tactical/Interface Cursors.cpp index 4573e139..6ebd89fc 100644 --- a/Tactical/Interface Cursors.cpp +++ b/Tactical/Interface Cursors.cpp @@ -335,7 +335,7 @@ BOOLEAN DrawUICursor( ) // If we are over a target, jump to that.... if ( gfUIFullTargetFound ) { - gusTargetDropPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + gusTargetDropPos = gusUIFullTargetID->sGridNo; } // Put tile on the floor @@ -354,7 +354,7 @@ BOOLEAN DrawUICursor( ) // ATE; Is the current guy in steath mode? if ( gusSelectedSoldier != NOBODY ) { - if ( MercPtrs[ gusSelectedSoldier ]->bStealthMode ) + if ( gusSelectedSoldier->bStealthMode ) { usTileCursor = FIRSTPOINTERS9; } @@ -367,7 +367,7 @@ BOOLEAN DrawUICursor( ) // ATE; Is the current guy in steath mode? if ( gusSelectedSoldier != NOBODY ) { - if ( MercPtrs[ gusSelectedSoldier ]->bStealthMode ) + if ( gusSelectedSoldier->bStealthMode ) { usTileCursor = FIRSTPOINTERS10; } diff --git a/Tactical/Interface Dialogue.cpp b/Tactical/Interface Dialogue.cpp index 19e575a5..07fece5b 100644 --- a/Tactical/Interface Dialogue.cpp +++ b/Tactical/Interface Dialogue.cpp @@ -182,7 +182,7 @@ BOOLEAN InternalInitiateConversation( SOLDIERTYPE *pDestSoldier, SOLDIERTYPE *pS extern void EndGameMessageBoxCallBack( UINT8 ubExitValue ); extern INT32 FindNearestOpenableNonDoor( INT32 sStartGridNo ); extern void RecalculateOppCntsDueToBecomingNeutral( SOLDIERTYPE * pSoldier ); -extern UINT8 NumCapableEnemyInSector( ); +extern UINT16 NumCapableEnemyInSector( ); #ifdef JA2UB //JA25 UB @@ -1037,7 +1037,7 @@ void TalkPanelClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) // open inv panel... gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)gpSrcSoldier->ubID; + gubNewPanelParam = gpSrcSoldier->ubID; // Wait! gpDestSoldier->aiData.bNextAction = AI_ACTION_WAIT; @@ -1555,7 +1555,7 @@ void HandleNPCTriggerNPC( UINT8 ubTargetNPC, UINT8 ubTargetRecord, BOOLEAN fShow guiWaitingForTriggerTime = GetJA2Clock( ); // Setup locator! - ShowRadioLocator( (UINT8)pSoldier->ubID, SHOW_LOCATOR_FAST ); + ShowRadioLocator( pSoldier->ubID, SHOW_LOCATOR_FAST ); // If he's visible, locate... if ( pSoldier->bVisible != -1 ) @@ -1584,7 +1584,7 @@ void HandleNPCTrigger( ) { SOLDIERTYPE *pSoldier; INT32 sPlayerGridNo; - UINT8 ubPlayerID; + UINT16 ubPlayerID; pSoldier = FindSoldierByProfileID( gubTargetNPC, FALSE ); if (!pSoldier) @@ -1818,16 +1818,16 @@ void HandleFactForNPCUnescorted( UINT8 ubNPC ) void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum ) { - INT32 cnt; - SOLDIERTYPE *pSoldier, *pSoldier2; - INT8 bNumDone = 0; - INT32 sGridNo = NOWHERE, sAdjustedGridNo; - INT8 bItemIn; - UINT8 ubDesiredMercDir; - EXITGRID ExitGrid; - INT32 iRandom = 0; - UINT8 ubMineIndex; - INT16 sX, sY, sX2, sY2; + SoldierID cnt; + SOLDIERTYPE *pSoldier, *pSoldier2; + INT8 bNumDone = 0; + INT32 sGridNo = NOWHERE, sAdjustedGridNo; + INT8 bItemIn; + UINT8 ubDesiredMercDir; + EXITGRID ExitGrid; + INT32 iRandom = 0; + UINT8 ubMineIndex; + INT16 sX, sY, sX2, sY2; pSoldier2 = NULL; //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Handling %s, action %d at %ld", gMercProfiles[ ubTargetNPC ].zNickname, usActionCode, GetJA2Clock() ); @@ -1880,8 +1880,9 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum // Squad here to search for... // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) ) { @@ -2170,8 +2171,9 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector ) { @@ -2481,7 +2483,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum if (pSoldier) { DeleteTalkingMenu(); - pSoldier->EVENT_SoldierGotHit( 1, 100, 10, pSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + pSoldier->EVENT_SoldierGotHit( 1, 100, 10, pSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); } break; @@ -2826,7 +2828,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum bItemIn = FindObj( pSoldier, DEED ); if (bItemIn != NO_SLOT) { - AddItemToPool( 12541, &(pSoldier->inv[bItemIn]), -1 , 0, 0, 0 ); + AddItemToPool( 12541, &(pSoldier->inv[bItemIn]), -1, 0, 0, 0 ); DeleteObj( &(pSoldier->inv[ bItemIn ]) ); RemoveObjectFromSoldierProfile( ubTargetNPC, DEED ); } @@ -3225,7 +3227,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum if ( pSoldier ) { INT32 sNearestPC; - UINT8 ubID; + SoldierID ubID; INT8 bMoneySlot; INT8 bEmptySlot; @@ -3236,7 +3238,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum ubID = WhoIsThere2( sNearestPC, 0 ); if (ubID != NOBODY) { - pSoldier2 = MercPtrs[ ubID ]; + pSoldier2 = ubID; } } @@ -3358,7 +3360,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); if (pSoldier) { - UINT8 ubTargetID; + SoldierID ubTargetID; SOLDIERTYPE *pTarget; // Target a different merc.... @@ -3385,7 +3387,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum } else { - pTarget = MercPtrs[ ubTargetID ]; + pTarget = ubTargetID; } // Use a different approach.... @@ -3478,7 +3480,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); if (pSoldier) { - UINT8 ubTargetID; + SoldierID ubTargetID; SOLDIERTYPE *pTarget; INT32 cnt; BOOLEAN fGoodTarget = FALSE; @@ -3492,7 +3494,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum } else { - pTarget = MercPtrs[ ubTargetID ]; + pTarget = ubTargetID; } pSoldier->aiData.uiPendingActionData4 = APPROACH_DONE_PUNCH_1; @@ -3727,8 +3729,9 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum { //HOSPITAL_PATIENT_DISTANCE cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && (pSoldier->stats.bLife < pSoldier->stats.bLifeMax || NumberOfDamagedStats(pSoldier) > 0) && pSoldier->bAssignment != ASSIGNMENT_HOSPITAL && PythSpacesAway( pSoldier->sGridNo, pSoldier2->sGridNo ) < HOSPITAL_PATIENT_DISTANCE ) { @@ -3902,7 +3905,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum if ( !gfInTalkPanel ) { INT32 sNearestPC; - UINT8 ubID; + SoldierID ubID; pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); if ( pSoldier ) @@ -3915,7 +3918,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum ubID = WhoIsThere2( sNearestPC, 0 ); if (ubID != NOBODY) { - pSoldier2 = MercPtrs[ ubID ]; + pSoldier2 = ubID; } } @@ -4579,9 +4582,9 @@ UINT32 CalcMedicalCost( UINT8 ubId ) INT32 sGridNo = pNPC->sGridNo; - for ( UINT32 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->bAssignment != ASSIGNMENT_HOSPITAL ) { if ( pSoldier->stats.bLife < pSoldier->stats.bLifeMax || NumberOfDamagedStats(pSoldier) > 0) @@ -4851,13 +4854,14 @@ void DialogueMessageBoxCallBack( UINT8 ubExitValue ) { // He tried to lie..... // Find the best conscious merc with a chance.... - UINT8 cnt; - SOLDIERTYPE * pLier = NULL; - SOLDIERTYPE * pSoldier; + SoldierID cnt; + SOLDIERTYPE *pLier = NULL; + SOLDIERTYPE *pSoldier; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->bBreath >= OKBREATH ) { if (!pLier || (EffectiveWisdom( pSoldier ) + EffectiveLeadership( pSoldier ) > EffectiveWisdom( pLier ) + EffectiveLeadership( pSoldier ) ) ) @@ -5017,13 +5021,13 @@ void DoneFadeInActionBasement( ) { // Start conversation, etc SOLDIERTYPE *pSoldier, *pNPCSoldier; - INT32 cnt; // Look for someone to talk to // look for all mercs on the same team, - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) ) { @@ -5207,10 +5211,10 @@ void CarmenLeavesSectorCallback( void ) void PerformJerryMiloAction301() { - UINT8 ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; + SoldierID ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; UINT8 usNumMercsPresent; SOLDIERTYPE *pSoldier=NULL; - UINT8 ubId; + SoldierID ubId; //Get the number and array of the new soldiers usNumMercsPresent = GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( ubMercsPresent, NULL ); @@ -5220,7 +5224,7 @@ void PerformJerryMiloAction301() { ubId = ubMercsPresent[ cnt ]; - TacticalCharacterDialogue( MercPtrs[ubId], QUOTE_DEATH_RATE_REFUSAL ); + TacticalCharacterDialogue( ubId, QUOTE_DEATH_RATE_REFUSAL ); } //Trigger Jerry Milo's script record 11 ( call action 302 ) @@ -5232,8 +5236,8 @@ void PerformJerryMiloAction301() void PerformJerryMiloAction302() { - UINT8 ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; - UINT8 usNumMercsPresent; + SoldierID ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; + UINT8 usNumMercsPresent; //off jazz //Get the number and array of the new soldiers @@ -5385,11 +5389,11 @@ void HandleSpecificQuoteWhenLeavingNpcTalkMenu() void HaveQualifiedMercSayQuoteAboutNpcWhenLeavingTalkScreen( UINT8 ubNpcProfileID, UINT32 uiQuoteNum ) { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; - UINT8 ValidSoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES] = {0}; - UINT8 ubNumValidSoldiers=0; - UINT8 ubCnt; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + SoldierID ValidSoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES] = {0}; + UINT8 ubNumValidSoldiers=0; + UINT8 ubCnt; SOLDIERTYPE *pSoldier=NULL; SOLDIERTYPE * pNPC; @@ -5485,7 +5489,7 @@ BOOLEAN IsMineEntranceInSectorI13AtThisGridNo( UINT32 sGridNo ) void HaveBiggensDetonatingExplosivesByTheMine() { SOLDIERTYPE *pSoldier = NULL; - UINT8 ubID=NOBODY; + SoldierID ubID = NOBODY; pSoldier = FindSoldierByProfileID( BIGGENS_UB , FALSE ); //BIGGENS if( pSoldier != NULL ) @@ -5639,7 +5643,7 @@ void HandleRaulBlowingHimselfUp() usItem = HAND_GRENADE; INT16 sX, sY; ConvertGridNoToCenterCellXY(pSoldier->sGridNo, &sX, &sY); - IgniteExplosion( RAUL_UB, sX, sY, 0, pSoldier->sGridNo, usItem, pSoldier->pathing.bLevel ); + IgniteExplosion( pSoldier->ubID, sX, sY, 0, pSoldier->sGridNo, usItem, pSoldier->pathing.bLevel ); SetJa25GeneralFlag( JA_GF__RAUL_BLOW_HIMSELF_UP ); } diff --git a/Tactical/Interface Items.cpp b/Tactical/Interface Items.cpp index 561bcee3..4dda8a17 100644 --- a/Tactical/Interface Items.cpp +++ b/Tactical/Interface Items.cpp @@ -230,12 +230,12 @@ enum MOUSE_REGION gInvRegions[ NUM_INV_SLOTS ]; extern MOUSE_REGION gMPanelRegion; -extern BOOLEAN fMapInventoryItem; -extern BOOLEAN gfAddingMoneyToMercFromPlayersAccount; -extern SOLDIERTYPE *gpSMCurrentMerc; -extern UINT8 gubSelectSMPanelToMerc; +extern BOOLEAN fMapInventoryItem; +extern BOOLEAN gfAddingMoneyToMercFromPlayersAccount; +extern SOLDIERTYPE *gpSMCurrentMerc; +extern SoldierID gubSelectSMPanelToMerc; extern MOUSE_REGION gSM_SELMERCMoneyRegion; -extern UINT32 guiMapInvSecondHandBlockout; +extern UINT32 guiMapInvSecondHandBlockout; //jackaians: global variables added for the stealing pickup menu BOOLEAN gfStealing = FALSE; @@ -2362,16 +2362,17 @@ void addAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup ) } POPUP * createPopupForPocket( SOLDIERTYPE *pSoldier, INT16 sPocket ){ + SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID; if( !( guiCurrentItemDescriptionScreen == MAP_SCREEN - && fShowMapInventoryPool - && ( ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX == sSelMapX ) - && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY == sSelMapY ) - && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ == iCurrentMapSectorZ ) + && fShowMapInventoryPool + && ( ( pSelectedSoldier->sSectorX == sSelMapX ) + && ( pSelectedSoldier->sSectorY == sSelMapY ) + && ( pSelectedSoldier->bSectorZ == iCurrentMapSectorZ ) ) - && CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) - ) ) + && CanPlayerUseSectorInventory( pSelectedSoldier ) + ) ) { return NULL; } @@ -3547,7 +3548,7 @@ void DegradeNewlyAddedItems( ) // GET SOLDIER if ( gTeamPanel[ cnt2 ].fOccupied ) { - pSoldier = MercPtrs[ gTeamPanel[ cnt2 ].ubID ]; + pSoldier = gTeamPanel[ cnt2 ].ubID; UINT32 invsize = pSoldier->inv.size(); for ( UINT32 cnt = 0; cnt < invsize; ++cnt ) @@ -4433,7 +4434,7 @@ void INVRenderSteeringWheel( UINT32 uiBuffer, UINT32 uiSteeringWheelIndex, SOLDI return; } - pVehicle = GetSoldierStructureForVehicle ( MercPtrs[ pSoldier->ubID ]->iVehicleId ); + pVehicle = GetSoldierStructureForVehicle ( pSoldier->ubID->iVehicleId ); if ( pVehicle == NULL ) { @@ -5853,13 +5854,14 @@ void UpdateAttachmentTooltips(OBJECTTYPE *pObject, UINT8 ubStatusIndex) } } BOOLEAN showAttachmentPopups = FALSE; + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if( guiCurrentItemDescriptionScreen == MAP_SCREEN && fShowMapInventoryPool - && ( (Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX == sSelMapX ) - && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY == sSelMapY ) - && ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ == iCurrentMapSectorZ ) ) - && CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) + && ( (pSoldier->sSectorX == sSelMapX ) + && ( pSoldier->sSectorY == sSelMapY ) + && ( pSoldier->bSectorZ == iCurrentMapSectorZ ) ) + && CanPlayerUseSectorInventory( pSoldier ) && attachList.size()>0 ) // silversurfer: no need to show popups if we have nothing to display { showAttachmentPopups = TRUE; @@ -8771,34 +8773,34 @@ BOOLEAN SoldierCanSeeCatchComing( SOLDIERTYPE *pSoldier, INT32 sSrcGridNo ) void DrawItemTileCursor( ) { - INT32 usMapPos; - UINT16 usIndex; - UINT8 ubSoldierID; - INT16 sAPCost; - BOOLEAN fRecalc; - UINT32 uiCursorFlags; - INT32 sFinalGridNo; - UINT32 uiCursorId = CURSOR_ITEM_GOOD_THROW; - SOLDIERTYPE *pSoldier; - BOOLEAN fGiveItem = FALSE; - INT32 sActionGridNo; - UINT8 ubDirection; - static UINT32 uiOldCursorId = 0; - static UINT16 usOldMousePos = 0; - INT16 sEndZ = 0; - INT16 sDist; - INT8 bLevel; + INT32 usMapPos; + UINT16 usIndex; + SoldierID ubSoldierID; + INT16 sAPCost; + BOOLEAN fRecalc; + UINT32 uiCursorFlags; + INT32 sFinalGridNo; + UINT32 uiCursorId = CURSOR_ITEM_GOOD_THROW; + SOLDIERTYPE *pSoldier; + BOOLEAN fGiveItem = FALSE; + INT32 sActionGridNo; + UINT8 ubDirection; + static UINT32 uiOldCursorId = 0; + static UINT16 usOldMousePos = 0; + INT16 sEndZ = 0; + INT16 sDist; + INT8 bLevel; if (GetMouseMapPos( &usMapPos) ) { /*CHRISL: For some reason it's possible that gpItemPointerSoldier is not correctly set when we come into this function, but we require it to be set for this function to work. So for now, let's set it using gusUIFullTargetID.*/ if(gpItemPointerSoldier->exists() == false) - gpItemPointerSoldier = MercPtrs[ gusUIFullTargetID ]; + gpItemPointerSoldier = gusUIFullTargetID; if ( gfUIFullTargetFound ) { // Force mouse position to guy... - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } gusCurMousePos = usMapPos; @@ -8869,7 +8871,7 @@ void DrawItemTileCursor( ) if ( gfUIFullTargetFound ) { // Get soldier - pSoldier = MercPtrs[ gusUIFullTargetID ]; + pSoldier = gusUIFullTargetID; // Are they on our team? // ATE: Can't be an EPC @@ -8879,7 +8881,7 @@ void DrawItemTileCursor( ) { // OK, on a valid pass gfUIMouseOnValidCatcher = 4; - gubUIValidCatcherID = (UINT8)gusUIFullTargetID; + gubUIValidCatcherID = gusUIFullTargetID; } else { @@ -8888,7 +8890,7 @@ void DrawItemTileCursor( ) { // OK, set global that this buddy can see catch... gfUIMouseOnValidCatcher = TRUE; - gubUIValidCatcherID = (UINT8)gusUIFullTargetID; + gubUIValidCatcherID = gusUIFullTargetID; } } } @@ -8922,10 +8924,10 @@ void DrawItemTileCursor( ) // OK, set global that this buddy can see catch... gfUIMouseOnValidCatcher = 2; - gubUIValidCatcherID = (UINT8)gusUIFullTargetID; + gubUIValidCatcherID = gusUIFullTargetID; // If this is a robot, change to say 'reload' - if ( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_ROBOT ) { gfUIMouseOnValidCatcher = 3; } @@ -8945,9 +8947,9 @@ void DrawItemTileCursor( ) // Get AP cost - if ( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_ROBOT ) { - sAPCost = GetAPsToReloadRobot( gpItemPointerSoldier, MercPtrs[ gusUIFullTargetID ] ); + sAPCost = GetAPsToReloadRobot( gpItemPointerSoldier, gusUIFullTargetID ); } else { @@ -9009,7 +9011,7 @@ void DrawItemTileCursor( ) { if ( gfUIMouseOnValidCatcher ) { - switch( gAnimControl[ MercPtrs[ gubUIValidCatcherID ]->usAnimState ].ubHeight ) + switch( gAnimControl[ gubUIValidCatcherID->usAnimState ].ubHeight ) { case ANIM_STAND: @@ -9027,7 +9029,7 @@ void DrawItemTileCursor( ) break; } - if ( MercPtrs[ gubUIValidCatcherID ]->pathing.bLevel > 0 ) + if ( gubUIValidCatcherID->pathing.bLevel > 0 ) { sEndZ = 0; } @@ -9118,24 +9120,24 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) } - UINT8 ubDirection; - UINT8 ubSoldierID; - UINT16 usItem; + UINT8 ubDirection; + SoldierID ubSoldierID; + UINT16 usItem; INT16 sAPCost; SOLDIERTYPE *pSoldier=NULL; UINT8 ubThrowActionCode=0; - UINT32 uiThrowActionData=0; + UINT32 uiThrowActionData=0; INT16 sEndZ = 0; - BOOLEAN fGiveItem = FALSE; + BOOLEAN fGiveItem = FALSE; INT32 sGridNo; INT16 sDist; if ( gfUIFullTargetFound ) { // Force mouse position to guy... - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; - if ( gAnimControl[ MercPtrs[ gusUIFullTargetID ]->usAnimState ].uiFlags & ANIM_MOVING ) + if ( gAnimControl[ gusUIFullTargetID->usAnimState ].uiFlags & ANIM_MOVING ) { return( FALSE ); } @@ -9183,10 +9185,10 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) usItem = gpItemPointer->usItem; // If the target is a robot, - if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( ubSoldierID->flags.uiStatusFlags & SOLDIER_ROBOT ) { // Charge APs to reload robot! - sAPCost = GetAPsToReloadRobot( gpItemPointerSoldier, MercPtrs[ ubSoldierID ] ); + sAPCost = GetAPsToReloadRobot( gpItemPointerSoldier, ubSoldierID ); } else { @@ -9206,12 +9208,12 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) // } /* //if the user just clicked on an arms dealer - if( IsMercADealer( MercPtrs[ ubSoldierID ]->ubProfile ) ) + if( IsMercADealer( ubSoldierID->ubProfile ) ) { if ( EnoughPoints( gpItemPointerSoldier, sAPCost, 0, TRUE ) ) { //Enter the shopkeeper interface - EnterShopKeeperInterfaceScreen( MercPtrs[ ubSoldierID ]->ubProfile ); + EnterShopKeeperInterfaceScreen( ubSoldierID->ubProfile ); EndItemPointer( ); } @@ -9223,10 +9225,10 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) if ( EnoughPoints( gpItemPointerSoldier, sAPCost, 0, TRUE ) ) { // If we are a robot, check if this is proper item to reload! - if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( ubSoldierID->flags.uiStatusFlags & SOLDIER_ROBOT ) { // Check if we can reload robot.... - if ( IsValidAmmoToReloadRobot( MercPtrs[ ubSoldierID ], &gTempObject ) ) + if ( IsValidAmmoToReloadRobot( ubSoldierID, &gTempObject ) ) { INT32 sActionGridNo; UINT8 ubDirection; @@ -9234,7 +9236,7 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) // Walk up to him and reload! // See if we can get there to stab - sActionGridNo = FindAdjacentGridEx( gpItemPointerSoldier, MercPtrs[ ubSoldierID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( gpItemPointerSoldier, ubSoldierID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if ( sActionGridNo != -1 && gbItemPointerSrcSlot != NO_SLOT ) { @@ -9277,16 +9279,16 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) //if (gbItemPointerSrcSlot != NO_SLOT ) { // Give guy this item..... - SoldierGiveItem( gpItemPointerSoldier, MercPtrs[ ubSoldierID ], &gTempObject, gbItemPointerSrcSlot ); + SoldierGiveItem( gpItemPointerSoldier, ubSoldierID, &gTempObject, gbItemPointerSrcSlot ); gfDontChargeAPsToPickup = FALSE; EndItemPointer( ); // If we are giving it to somebody not on our team.... - if ( gMercProfiles[MercPtrs[ubSoldierID]->ubProfile].Type == PROFILETYPE_AIM || - gMercProfiles[MercPtrs[ubSoldierID]->ubProfile].Type == PROFILETYPE_MERC || - gMercProfiles[MercPtrs[ubSoldierID]->ubProfile].Type == PROFILETYPE_IMP - || RPC_RECRUITED( MercPtrs[ubSoldierID] ) ) + if ( gMercProfiles[ubSoldierID->ubProfile].Type == PROFILETYPE_AIM || + gMercProfiles[ubSoldierID->ubProfile].Type == PROFILETYPE_MERC || + gMercProfiles[ubSoldierID->ubProfile].Type == PROFILETYPE_IMP + || RPC_RECRUITED( ubSoldierID ) ) { } @@ -9355,7 +9357,7 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) case ANIM_CROUCH: case ANIM_PRONE: - AddItemToPool( usMapPos, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( usMapPos, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); break; } @@ -9378,14 +9380,14 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) sGridNo = usMapPos; // Kaiden: Vehicle Inventory change - Commented the following If test: - //if ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && MercPtrs[ gusUIFullTargetID ]->bTeam == gbPlayerNum && !AM_AN_EPC( MercPtrs[ gusUIFullTargetID ] ) && !( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + //if ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && gusUIFullTargetID->bTeam == gbPlayerNum && !AM_AN_EPC( gusUIFullTargetID ) && !( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) // And added this one instead: - if ( ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && MercPtrs[ gusUIFullTargetID ]->bTeam == gbPlayerNum && !AM_AN_EPC( MercPtrs[ gusUIFullTargetID ] ) ) && !( (!gGameExternalOptions.fVehicleInventory) && (MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) ) + if ( ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && gusUIFullTargetID->bTeam == gbPlayerNum && !AM_AN_EPC( gusUIFullTargetID ) ) && !( (!gGameExternalOptions.fVehicleInventory) && (gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE) ) ) { // OK, do the transfer... { - pSoldier = MercPtrs[ gusUIFullTargetID ]; + pSoldier = gusUIFullTargetID; { // Change to inventory.... @@ -9487,7 +9489,7 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) // IF OVER OUR GUY... if ( gfUIFullTargetFound ) { - pSoldier = MercPtrs[ gusUIFullTargetID ]; + pSoldier = gusUIFullTargetID; // Kaiden: Vehicle Inventory change - Commented the following If Test: //if ( pSoldier->bTeam == gbPlayerNum && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) @@ -10531,7 +10533,7 @@ void ItemPopupRegionCallback( MOUSE_REGION * pRegion, INT32 iReason ) { UINT32 uiItemPos; UINT32 iItemCap; - INT32 ubID; + SoldierID ubID; CHAR16 sString[ 128 ]; uiItemPos = MSYS_GetRegionUserData( pRegion, 0 ); @@ -10546,18 +10548,20 @@ void ItemPopupRegionCallback( MOUSE_REGION * pRegion, INT32 iReason ) if (iReason & MSYS_CALLBACK_REASON_LBUTTON_DWN) { - if( ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX != sSelMapX ) || - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY != sSelMapY ) || - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ != iCurrentMapSectorZ ) || - ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].flags.fBetweenSectors ) ) + SOLDIERTYPE* pSelected = gCharactersList[bSelectedInfoChar].usSolID; + + if( ( pSelected->sSectorX != sSelMapX ) || + ( pSelected->sSectorY != sSelMapY ) || + ( pSelected->bSectorZ != iCurrentMapSectorZ ) || + ( pSelected->flags.fBetweenSectors ) ) { if ( gpItemPointer == NULL ) { - swprintf( sString, pMapInventoryErrorString[ 2 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name ); + swprintf( sString, pMapInventoryErrorString[ 2 ], pSelected->name ); } else { - swprintf( sString, pMapInventoryErrorString[ 5 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name ); + swprintf( sString, pMapInventoryErrorString[ 5 ], pSelected->name ); } DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, MSG_BOX_FLAG_OK, NULL ); return; @@ -10621,11 +10625,11 @@ void ItemPopupRegionCallback( MOUSE_REGION * pRegion, INT32 iReason ) fTeamPanelDirty=TRUE; // remember which gridno the object came from - sObjectSourceGridNo = MercPtrs[ubID]->sGridNo; + sObjectSourceGridNo = ubID->sGridNo; // and who owned it last - gpItemPointerSoldier = MercPtrs[ubID]; + gpItemPointerSoldier = ubID; - ReevaluateItemHatches( MercPtrs[ubID], FALSE ); + ReevaluateItemHatches( ubID, FALSE ); } //Dirty interface @@ -10904,7 +10908,7 @@ BOOLEAN InitializeItemPickupMenu( SOLDIERTYPE *pSoldier, INT32 sGridNo, ITEM_POO // Change to INV panel if not there already... gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)pSoldier->ubID; + gubNewPanelParam = pSoldier->ubID; //Determine total # cnt = 0; @@ -11478,10 +11482,10 @@ void RenderItemPickupMenu( ) !gfStealing && Item[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && LoadBearingEquipment[Item[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && - gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID != -1 && - MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]) + gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID != NOBODY && + gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID) //swprintf(pStr, L"%s (%s)", ShortItemNames[pObject->usItem], MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]->GetName()); - swprintf(pStr, L"(%s)", MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]->GetName()); + swprintf(pStr, L"(%s)", gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID->GetName()); else swprintf( pStr, L"%s", ShortItemNames[ pObject->usItem ] ); } @@ -12838,7 +12842,7 @@ void CancelItemPointer( ) if ( !AutoPlaceObject( gpItemPointerSoldier, gpItemPointer, FALSE ) ) { // Alright, place of the friggen ground! - AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); } } @@ -12846,7 +12850,7 @@ void CancelItemPointer( ) else { // We drop it here..... - AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); } EndItemPointer( ); @@ -12875,7 +12879,7 @@ BOOLEAN LoadItemCursorFromSavedGame( HWFILE hFile ) } else { - gpItemPointerSoldier = MercPtrs[ SaveStruct.ubSoldierID ]; + gpItemPointerSoldier = SaveStruct.ubSoldierID; } // Inv slot @@ -12946,7 +12950,7 @@ void UpdateItemHatches() { if ( fShowInventoryFlag && bSelectedInfoChar >= 0 ) { - pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ]; + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; } } else @@ -12997,7 +13001,7 @@ BOOLEAN InitializeStealItemPickupMenu( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOppo // Change to INV panel if not there already... gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)pSoldier->ubID; + gubNewPanelParam = pSoldier->ubID; gItemPickupMenu.ubTotalItems = ubCount; @@ -14661,7 +14665,7 @@ void UpdateMercBodyRegionHelpText( ) wcscpy( sString, L"" ); // valid soldier selected - pSoldier = MercPtrs[gCharactersList[bSelectedInfoChar].usSolID]; + pSoldier = gCharactersList[bSelectedInfoChar].usSolID; // health/energy/morale if ( pSoldier->bAssignment != ASSIGNMENT_POW ) @@ -14673,7 +14677,7 @@ void UpdateMercBodyRegionHelpText( ) // robot (condition only) swprintf( sString, L"%s: %d/%d", pMapScreenStatusStrings[3], pSoldier->stats.bLife, pSoldier->stats.bLifeMax ); } - else if ( Menptr[gCharactersList[bSelectedInfoChar].usSolID].flags.uiStatusFlags & SOLDIER_VEHICLE ) + else if (pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { // vehicle (condition/fuel) swprintf( sString, L"%s: %d/%d, %s: %d/%d", diff --git a/Tactical/Interface Items.h b/Tactical/Interface Items.h index 48953969..3053401d 100644 --- a/Tactical/Interface Items.h +++ b/Tactical/Interface Items.h @@ -159,18 +159,19 @@ public: this->fCursorActive = src.fCursorActive; this->ItemPointerInfo = src.ItemPointerInfo; this->ubInvSlot = src.ubInvSlot; - this->ubSoldierID = src.ubSoldierID; + this->ubSoldierID = static_cast(src.ubSoldierID); return *this; } //could use a little tidying up BOOLEAN Save(HWFILE hFile); BOOLEAN Load(HWFILE hFile); - UINT8 ubSoldierID; + SoldierID ubSoldierID; UINT8 ubInvSlot; BOOLEAN fCursorActive; OBJECTTYPE ItemPointerInfo; }; +#define SIZEOF_ITEM_CURSOR_SAVE_INFO_POD offsetof( ITEM_CURSOR_SAVE_INFO, ItemPointerInfo ) // HEADROCK HAM 5: Enums for big-item display attachment asterisks. enum diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index e3f4c0c3..d399f0f6 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -392,7 +392,7 @@ INT32 giSMZipperButton = -1; BOOLEAN gfSwitchPanel = FALSE; UINT8 gbNewPanel = SM_PANEL; -UINT8 gubNewPanelParam = 0; +SoldierID gubNewPanelParam = NOBODY; BOOLEAN gfUIStanceDifferent = FALSE; BOOLEAN gfAllDisabled = FALSE; @@ -401,9 +401,9 @@ BOOLEAN gfDisableTacticalPanelButtons = FALSE; BOOLEAN gfAddingMoneyToMercFromPlayersAccount = FALSE; BOOLEAN gfCheckForMouseOverItem = FALSE; -UINT32 guiMouseOverItemTime = 0; -INT8 gbCheckForMouseOverItemPos = 0; -UINT8 gubSelectSMPanelToMerc = NOBODY; +UINT32 guiMouseOverItemTime = 0; +INT8 gbCheckForMouseOverItemPos = 0; +SoldierID gubSelectSMPanelToMerc = NOBODY; BOOLEAN gfReEvaluateDisabledINVPanelButtons = FALSE; UINT32 guiBrownBackgroundForTeamPanel; @@ -480,8 +480,8 @@ void HelpTextDoneCallback( void ); // Globals - for one - the current merc here INT8 gbSMCurStanceObj; -UINT16 gusSMCurrentMerc = 0; -SOLDIERTYPE *gpSMCurrentMerc = NULL; +SoldierID gusSMCurrentMerc = NOBODY; +SOLDIERTYPE *gpSMCurrentMerc = NULL; // CHRISL: extern INT8 gbCompatibleApplyItem; extern SOLDIERTYPE *gpItemPopupSoldier; @@ -571,7 +571,7 @@ void UpdateSelectedSoldier( UINT16 usSoldierID, BOOLEAN fSelect ); void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sPanelY ); void HandleSoldierFaceFlash( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY ); -BOOLEAN PlayerExistsInSlot( UINT8 ubID ); +BOOLEAN PlayerExistsInSlot( SoldierID ubID ); void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged, BOOLEAN fAugmented ); // SANDRO - added argument // Flugente - me too extern void UpdateItemHatches(); @@ -591,11 +591,11 @@ INT16 GetUIApsToDisplay( SOLDIERTYPE *pSoldier ) void CheckForDisabledForGiveItem( ) { INT16 sDist; - INT32 sDestGridNo; - INT8 bDestLevel; - INT32 cnt; + INT32 sDestGridNo; + INT8 bDestLevel; + SoldierID cnt; SOLDIERTYPE *pSoldier; - UINT8 ubSrcSoldier; + SoldierID ubSrcSoldier; // CHRISL: If Merc hasn't been set, default to first merc if(gpSMCurrentMerc==NULL) @@ -616,8 +616,9 @@ void CheckForDisabledForGiveItem( ) { // Go through each merc and see if there is one closeby.... cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) && pSoldier->bInSector && IsMercOnCurrentSquad( pSoldier ) ) { sDist = PythSpacesAway( gpSMCurrentMerc->sGridNo, pSoldier->sGridNo ); @@ -636,7 +637,7 @@ void CheckForDisabledForGiveItem( ) } else { - ubSrcSoldier = (UINT8)gusSelectedSoldier; + ubSrcSoldier = gusSelectedSoldier; if ( gpItemPointer != NULL ) { @@ -648,17 +649,17 @@ void CheckForDisabledForGiveItem( ) { if ( gusSMCurrentMerc != ubSrcSoldier ) { - sDestGridNo = MercPtrs[ gusSMCurrentMerc ]->sGridNo; - bDestLevel = MercPtrs[ gusSMCurrentMerc ]->pathing.bLevel; + sDestGridNo = gusSMCurrentMerc->sGridNo; + bDestLevel = gusSMCurrentMerc->pathing.bLevel; // Get distance.... - sDist = PythSpacesAway( MercPtrs[ ubSrcSoldier ]->sGridNo, sDestGridNo ); + sDist = PythSpacesAway( ubSrcSoldier->sGridNo, sDestGridNo ); // Check LOS.... - if ( SoldierTo3DLocationLineOfSightTest( MercPtrs[ ubSrcSoldier ], sDestGridNo, bDestLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) ) + if ( SoldierTo3DLocationLineOfSightTest( ubSrcSoldier, sDestGridNo, bDestLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) ) { // UNCONSCIOUS GUYS ONLY 1 tile AWAY - if ( MercPtrs[ gusSMCurrentMerc ]->stats.bLife < CONSCIOUSNESS ) + if ( gusSMCurrentMerc->stats.bLife < CONSCIOUSNESS ) { if ( sDist <= PASSING_ITEM_DISTANCE_NOTOKLIFE ) { @@ -671,7 +672,7 @@ void CheckForDisabledForGiveItem( ) } } // anv: passengers in the same vehicle can pass items freely - else if ( MercPtrs[ ubSrcSoldier ]->iVehicleId != -1 && MercPtrs[ ubSrcSoldier ]->iVehicleId == MercPtrs[ gusSMCurrentMerc ]->iVehicleId ) + else if ( ubSrcSoldier->iVehicleId != -1 && ubSrcSoldier->iVehicleId == gusSMCurrentMerc->iVehicleId ) { gfSMDisableForItems = FALSE; } @@ -688,13 +689,13 @@ void CheckForDisabledForGiveItem( ) } } -void SetSMPanelCurrentMerc( UINT8 ubNewID ) +void SetSMPanelCurrentMerc( SoldierID ubNewID ) { gubSelectSMPanelToMerc = NOBODY; gusSMCurrentMerc = ubNewID; - gpSMCurrentMerc = MercPtrs[ ubNewID ]; + gpSMCurrentMerc = ubNewID; // Set to current guy's interface level //if ( gsInterfaceLevel != gpSMCurrentMerc->bUIInterfaceLevel ) @@ -1386,7 +1387,7 @@ void EnableSMPanelButtons( BOOLEAN fEnable , BOOLEAN fFromItemPickup ) } } -UINT16 GetSMPanelCurrentMerc( ) +SoldierID GetSMPanelCurrentMerc( ) { return( gusSMCurrentMerc ); } @@ -3727,7 +3728,7 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) } else // item in cursor { - UINT8 ubSrcID, ubDestID; + SoldierID ubSrcID, ubDestID; BOOLEAN fOKToGo = FALSE; BOOLEAN fDeductPoints = FALSE; @@ -4211,11 +4212,11 @@ BOOLEAN ChangeDropPackStatus(SOLDIERTYPE *pSoldier, BOOLEAN newStatus) { if(gWorldItems[wi].soldierID == pSoldier->ubID) { - gWorldItems[wi].soldierID = -1; + gWorldItems[wi].soldierID = NOBODY; } } MoveItemToLBEItem( pSoldier, BPACKPOCKPOS ); - AddItemToPoolAndGetIndex(pSoldier->sGridNo, &pSoldier->inv[BPACKPOCKPOS], 1, pSoldier->pathing.bLevel, 0 , -1, pSoldier->ubID, &worldKey ); + AddItemToPoolAndGetIndex(pSoldier->sGridNo, &pSoldier->inv[BPACKPOCKPOS], 1, pSoldier->pathing.bLevel, 0, -1, pSoldier->ubID, &worldKey ); // Item successfully added to world if(worldKey != ITEM_NOT_FOUND) { @@ -4233,7 +4234,7 @@ BOOLEAN ChangeDropPackStatus(SOLDIERTYPE *pSoldier, BOOLEAN newStatus) //CHRISL: There's the remote chance that a non-LBE item might get associated with a merc. If that happens, we can // have a CTD, so lets resolve that here. if(Item[gWorldItems[wi].object.usItem].usItemClass != IC_LBEGEAR) - gWorldItems[wi].soldierID = -1; + gWorldItems[wi].soldierID = NOBODY; if(gWorldItems[wi].soldierID == pSoldier->ubID && gWorldItems[wi].fExists == TRUE && Item[gWorldItems[wi].object.usItem].usItemClass == IC_LBEGEAR && LoadBearingEquipment[Item[gWorldItems[wi].object.usItem].ubClassIndex].lbeClass == BACKPACK) { for (int x = 0; x < gWorldItems[wi].object.ubNumberOfObjects; ++x) { @@ -4513,19 +4514,20 @@ void BtnDropPackCallback(GUI_BUTTON *btn,INT32 reason) if ( _KeyDown( SHIFT ) ) { INT8 bAssignment = gpSMCurrentMerc->bAssignment; - for( int x = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; x <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; x++ ) + for( SoldierID x = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; x <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++x ) { + SOLDIERTYPE *pSoldier = x; /* Is DropPackFlag currently false and is there something in the backpack pocket? If so, we haven't dropped a pack yet and apparently want to*/ - if(MercPtrs[x]->bAssignment == bAssignment && MercPtrs[x]->inv[BPACKPOCKPOS].exists() == true && !MercPtrs[x]->flags.DropPackFlag) + if(pSoldier->bAssignment == bAssignment && pSoldier->inv[BPACKPOCKPOS].exists() == true && !pSoldier->flags.DropPackFlag) { - ChangeDropPackStatus(MercPtrs[x], TRUE); + ChangeDropPackStatus(pSoldier, TRUE); } /* Is DropPackFlag currently true, is nothing in the backpack pocket and have we dropped a pack? If so, we must want to retreive a backpack we previously dropped.*/ - else if(MercPtrs[x]->bAssignment == bAssignment && MercPtrs[x]->inv[BPACKPOCKPOS].exists() == false && MercPtrs[x]->flags.DropPackFlag) + else if(pSoldier->bAssignment == bAssignment && pSoldier->inv[BPACKPOCKPOS].exists() == false && pSoldier->flags.DropPackFlag) { - ChangeDropPackStatus(MercPtrs[x], FALSE); + ChangeDropPackStatus(pSoldier, FALSE); } } } @@ -4800,8 +4802,6 @@ void BtnMuteCallback(GUI_BUTTON *btn,INT32 reason) void BtnPrevMercCallback(GUI_BUTTON *btn,INT32 reason) { - INT16 sID; - if (!(btn->uiFlags & BUTTON_ENABLED)) return; @@ -4813,9 +4813,9 @@ void BtnPrevMercCallback(GUI_BUTTON *btn,INT32 reason) { btn->uiFlags &= (~BUTTON_CLICKED_ON ); - sID = FindPrevActiveAndAliveMerc( gpSMCurrentMerc, TRUE, TRUE ); + SoldierID sID = FindPrevActiveAndAliveMerc( gpSMCurrentMerc, TRUE, TRUE ); - gubSelectSMPanelToMerc = (UINT8)sID; + gubSelectSMPanelToMerc = sID; if ( !gfInItemPickupMenu ) { @@ -4848,8 +4848,6 @@ void BtnPrevMercCallback(GUI_BUTTON *btn,INT32 reason) void BtnNextMercCallback(GUI_BUTTON *btn,INT32 reason) { - INT16 sID; - if (!(btn->uiFlags & BUTTON_ENABLED)) return; @@ -4861,10 +4859,10 @@ void BtnNextMercCallback(GUI_BUTTON *btn,INT32 reason) { btn->uiFlags &= (~BUTTON_CLICKED_ON ); - sID = FindNextActiveAndAliveMerc( gpSMCurrentMerc, TRUE, TRUE ); + SoldierID sID = FindNextActiveAndAliveMerc( gpSMCurrentMerc, TRUE, TRUE ); // Give him the panel! - gubSelectSMPanelToMerc = (UINT8)sID; + gubSelectSMPanelToMerc = sID; if ( !gfInItemPickupMenu ) { @@ -5283,7 +5281,7 @@ BOOLEAN InitializeTEAMPanel( ) { if ( gTeamPanel[ cnt ].ubID != NOBODY ) { - HandleMouseOverSoldierFaceForContMove( MercPtrs[ gTeamPanel[ cnt ].ubID ], TRUE ); + HandleMouseOverSoldierFaceForContMove( gTeamPanel[ cnt ].ubID, TRUE ); } } @@ -5358,7 +5356,7 @@ BOOLEAN ShutdownTEAMPanel( ) if ( gTeamPanel[ cnt ].ubID != NOBODY ) { - HandleMouseOverSoldierFaceForContMove( MercPtrs[ gTeamPanel[ cnt ].ubID ], FALSE ); + HandleMouseOverSoldierFaceForContMove( gTeamPanel[ cnt ].ubID, FALSE ); } } @@ -5422,7 +5420,7 @@ void RenderTEAMPanel( BOOLEAN fDirty ) } else { - pSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ]; + pSoldier = gTeamPanel[ cnt ].ubID; if ( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER ) ) { @@ -5526,7 +5524,7 @@ void RenderTEAMPanel( BOOLEAN fDirty ) // GET SOLDIER if ( gTeamPanel[ cnt ].fOccupied ) { - pSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ]; + pSoldier = gTeamPanel[ cnt ].ubID; // Update animations.... if ( pSoldier->flags.fClosePanel || pSoldier->flags.fClosePanelToDie ) @@ -5889,7 +5887,7 @@ void BtnSquadCallback(GUI_BUTTON *btn,INT32 reason) } -void SetTEAMPanelCurrentMerc( UINT8 ubNewID ) +void SetTEAMPanelCurrentMerc( UINT16 ubNewID ) { // Ignore ther ID given! // ALWYAS USE CURRENT MERC! @@ -6022,10 +6020,11 @@ void HandleMouseOverTeamFaceForContMove( BOOLEAN fOn ) void MercFacePanelMoveCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID; + SoldierID ubSoldierID; SOLDIERTYPE *pSoldier; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); // If our flags are set to do this, gofoit! if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) @@ -6046,7 +6045,7 @@ void MercFacePanelMoveCallback( MOUSE_REGION * pRegion, INT32 iReason ) return; } - pSoldier = MercPtrs[ ubSoldierID ]; + pSoldier = ubSoldierID; if ( !pSoldier->bActive ) { @@ -6068,9 +6067,10 @@ void MercFacePanelMoveCallback( MOUSE_REGION * pRegion, INT32 iReason ) void EnemyIndicatorClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID; + SoldierID ubSoldierID; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); if ( ubID == NOBODY ) { @@ -6091,7 +6091,7 @@ void EnemyIndicatorClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) return; } - if ( !MercPtrs[ ubSoldierID ]->bActive ) + if ( !ubSoldierID->bActive ) { return; } @@ -6099,14 +6099,14 @@ void EnemyIndicatorClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) if (iReason & MSYS_CALLBACK_REASON_LBUTTON_DWN) { - //if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) + //if ( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) //{ //} //else { SOLDIERTYPE *pSoldier; - pSoldier = MercPtrs[ ubSoldierID ]; + pSoldier = ubSoldierID; if ( pSoldier->aiData.bOppCnt > 0 ) { // Cycle.... @@ -6123,9 +6123,10 @@ void EnemyIndicatorClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID; + SoldierID ubSoldierID; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); // If our flags are set to do this, gofoit! if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) @@ -6161,12 +6162,12 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) return; } - if ( !MercPtrs[ ubSoldierID ]->bActive ) + if ( !ubSoldierID->bActive ) { return; } - if (!OK_INTERRUPT_MERC(MercPtrs[ubSoldierID])) + if (!OK_INTERRUPT_MERC(ubSoldierID)) { return; } @@ -6175,10 +6176,10 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) { if ( !gfInItemPickupMenu && gpItemPointer == NULL ) { - //if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) - //if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER ) ) + //if ( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) + //if ( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_DRIVER ) ) //{ - // pVehicle = GetSoldierStructureForVehicle( MercPtrs[ ubSoldierID ]->iVehicleId ); + // pVehicle = GetSoldierStructureForVehicle( ubSoldierID->iVehicleId ); // HandleLocateSelectMerc( pVehicle->ubID, 0 ); //} @@ -6187,10 +6188,10 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) if ( !InOverheadMap( ) ) { // If we can continue a move, do so! - if ( CheckForMercContMove( MercPtrs[ ubSoldierID ] ) ) + if ( CheckForMercContMove( ubSoldierID ) ) { // Continue - ContinueMercMovement( MercPtrs[ ubSoldierID ] ); + ContinueMercMovement( ubSoldierID ); ErasePath( TRUE ); } else @@ -6198,31 +6199,31 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) // HEADROCK HAM 3.5: Shift-Click a merc's face will add him to the current selection. if (!(gTacticalStatus.uiFlags & INCOMBAT) && _KeyDown( SHIFT ) ) { - if ( ! (MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) ) + if ( ! (ubSoldierID->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) ) { - if ( OK_CONTROLLABLE_MERC( MercPtrs[ ubSoldierID ] ) && !( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) ) + if ( OK_CONTROLLABLE_MERC( ubSoldierID ) && !( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) ) { - //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s added", MercPtrs[ ubSoldierID ]->name ); - MercPtrs[ gusSelectedSoldier ]->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; - MercPtrs[ ubSoldierID ]->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; + //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s added", ubSoldierID->name ); + gusSelectedSoldier->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; + ubSoldierID->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; EndMultiSoldierSelection( TRUE ); } } // A shift-click on a selected character will remove that character from the current selection. else { - //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s removed", MercPtrs[ ubSoldierID ]->name ); - MercPtrs[ ubSoldierID ]->flags.uiStatusFlags &= (~SOLDIER_MULTI_SELECTED ); + //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s removed", ubSoldierID->name ); + ubSoldierID->flags.uiStatusFlags &= (~SOLDIER_MULTI_SELECTED ); if (ubSoldierID != gusSelectedSoldier) { - MercPtrs[ gusSelectedSoldier ]->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; + gusSelectedSoldier->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; } EndMultiSoldierSelection( TRUE ); } } else { - //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s selected", MercPtrs[ ubSoldierID ]->name ); + //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s selected", ubSoldierID->name ); HandleLocateSelectMerc( ubSoldierID, 0 ); } } @@ -6239,12 +6240,12 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) if ( !InOverheadMap( ) ) { // Only if guy is not dead! - //if ( !( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & SOLDIER_DEAD ) && !AM_AN_EPC( MercPtrs[ ubSoldierID ] ) && !( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) ) - if ( !( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & SOLDIER_DEAD ) && !AM_AN_EPC( MercPtrs[ ubSoldierID ] ) ) + //if ( !( ubSoldierID->flags.uiStatusFlags & SOLDIER_DEAD ) && !AM_AN_EPC( ubSoldierID ) && !( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) ) + if ( !( ubSoldierID->flags.uiStatusFlags & SOLDIER_DEAD ) && !AM_AN_EPC( ubSoldierID ) ) { gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)ubSoldierID; + gubNewPanelParam = ubSoldierID; // silversurfer: This needs to be reset to TRUE because inventory view only allows radar screen to be displayed and not the squad list. fRenderRadarScreen = TRUE; } @@ -6253,13 +6254,13 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) } -extern void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ); +extern void InternalSelectSoldier( SoldierID usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ); -void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) +void HandleLocateSelectMerc( SoldierID ubID, INT8 bFlag ) { BOOLEAN fSelect = FALSE; - if( !MercPtrs[ ubID ]->bActive ) + if( !ubID->bActive ) { return; } @@ -6272,14 +6273,14 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) // ATE: No matter what we do... if below OKLIFE, just locate.... - if ( MercPtrs[ ubID ]->stats.bLife < OKLIFE ) + if ( ubID->stats.bLife < OKLIFE ) { LocateSoldier( ubID, SETLOCATOR ); return; } // Flugente: frozen soldiers can't be selected - if ( MercPtrs[ubID]->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] ) + if ( ubID->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] ) { LocateSoldier( ubID, SETLOCATOR ); return; @@ -6291,7 +6292,7 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) { // Select merc InternalSelectSoldier( ubID, TRUE, FALSE, TRUE); - MercPtrs[ ubID ]->flags.fFlashLocator = FALSE; + ubID->flags.fFlashLocator = FALSE; ResetMultiSelection( ); } else @@ -6302,14 +6303,14 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) } else { - if ( MercPtrs[ ubID ]->flags.fFlashLocator == FALSE ) + if ( ubID->flags.fFlashLocator == FALSE ) { if ( gGameSettings.fOptions[ TOPTION_OLD_SELECTION_METHOD ] ) { // If we are currently selected, slide to location if ( ubID == gusSelectedSoldier ) { - SlideTo( NOWHERE, gusSelectedSoldier, NOBODY ,SETLOCATOR); + SlideTo(gusSelectedSoldier, SETLOCATOR); } else { @@ -6320,7 +6321,7 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) { if ( ubID == gusSelectedSoldier ) { - SlideTo( NOWHERE, gusSelectedSoldier, NOBODY ,SETLOCATOR ); + SlideTo(gusSelectedSoldier, SETLOCATOR ); } else { @@ -6336,7 +6337,7 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) // If we are currently selected, slide to location if ( ubID == gusSelectedSoldier ) { - SlideTo( NOWHERE, gusSelectedSoldier, NOBODY ,DONTSETLOCATOR); + SlideTo(gusSelectedSoldier, DONTSETLOCATOR); } else { @@ -6366,7 +6367,7 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) if ( fSelect ) { // Select merc, only if alive! - if ( !( MercPtrs[ ubID ]->flags.uiStatusFlags & SOLDIER_DEAD ) ) + if ( !( ubID->flags.uiStatusFlags & SOLDIER_DEAD ) ) { InternalSelectSoldier( ubID, TRUE, FALSE, TRUE ); } @@ -6376,43 +6377,43 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) ResetMultiSelection( ); // Handle locate select merc.... - HandleMouseOverSoldierFaceForContMove( MercPtrs[ ubID ], TRUE ); + HandleMouseOverSoldierFaceForContMove( ubID, TRUE ); } -void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ) +void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed ) { - RESETTIMECOUNTER( MercPtrs[ ubID ]->timeCounters.FlashSelCounter, FLASH_SELECTOR_DELAY ); + RESETTIMECOUNTER( ubID->timeCounters.FlashSelCounter, FLASH_SELECTOR_DELAY ); //LocateSoldier( ubID, FALSE ); // IC - this is already being done outside of this function :) - MercPtrs[ ubID ]->flags.fFlashLocator = TRUE; + ubID->flags.fFlashLocator = TRUE; //gbPanelSelectedGuy = ubID; IC - had to move this outside to make this function versatile - MercPtrs[ ubID ]->sLocatorFrame = 0; + ubID->sLocatorFrame = 0; if ( ubLocatorSpeed == SHOW_LOCATOR_NORMAL ) { // If we are an AI guy, and we have the baton, make lower... - // ( MercPtrs[ ubID ]->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL && MercPtrs[ ubID ]->bTeam != gbPlayerNum ) + // ( ubID->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL && ubID->bTeam != gbPlayerNum ) // //ercPtrs[ ubID ]->ubNumLocateCycles = 3; // //se // - MercPtrs[ ubID ]->ubNumLocateCycles = 5; + ubID->ubNumLocateCycles = 5; // } else { - MercPtrs[ ubID ]->ubNumLocateCycles = 3; + ubID->ubNumLocateCycles = 3; } } -void EndRadioLocator( UINT8 ubID ) +void EndRadioLocator( SoldierID ubID ) { - MercPtrs[ ubID ]->flags.fFlashLocator = FALSE; - MercPtrs[ ubID ]->flags.fShowLocator = FALSE; + ubID->flags.fFlashLocator = FALSE; + ubID->flags.fShowLocator = FALSE; } @@ -6439,13 +6440,12 @@ void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sP void FinishAnySkullPanelAnimations( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt2; - - cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt2 ]; cnt2 <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt2++,pTeamSoldier++ ) + for ( ; cnt2 <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt2 ) { + pTeamSoldier = cnt2; if ( pTeamSoldier->bActive && pTeamSoldier->stats.bLife == 0 ) { if ( pTeamSoldier->flags.fUIdeadMerc || pTeamSoldier->flags.fClosePanelToDie ) @@ -6457,7 +6457,6 @@ void FinishAnySkullPanelAnimations( ) } } } - } void HandlePanelFaceAnimations( SOLDIERTYPE *pSoldier ) @@ -6677,9 +6676,10 @@ void RenderSoldierTeamInv( SOLDIERTYPE *pSoldier, INT16 sX, INT16 sY, UINT8 ubPa void TMFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID; + SoldierID ubSoldierID; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); // If our flags are set to do this, gofoit! if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) @@ -6700,7 +6700,7 @@ void TMFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) ubSoldierID = gTeamPanel[ ubID ].ubID; - if ( !MercPtrs[ ubSoldierID ]->bActive ) + if ( !ubSoldierID->bActive ) { return; } @@ -6727,10 +6727,11 @@ void TMFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) void TMClickFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID; + SoldierID ubSoldierID; UINT16 usOldHandItem; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); if ( ubID == NOBODY ) @@ -6745,9 +6746,9 @@ void TMClickFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) if (iReason == MSYS_CALLBACK_REASON_LBUTTON_UP ) { // anv: select vehicle by clicking on the steering wheel - //if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & SOLDIER_DRIVER ) + //if ( ubSoldierID->flags.uiStatusFlags & SOLDIER_DRIVER ) //{ - // SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( MercPtrs[ ubSoldierID ]->iVehicleId ); + // SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( ubSoldierID->iVehicleId ); // HandleLocateSelectMerc( pVehicle->ubID, 0 ); //} //else @@ -6759,12 +6760,12 @@ void TMClickFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) if (iReason == MSYS_CALLBACK_REASON_RBUTTON_UP ) { - if ( !AM_A_ROBOT( MercPtrs[ ubSoldierID ] ) ) + if ( !AM_A_ROBOT( ubSoldierID ) ) { - usOldHandItem = MercPtrs[ ubSoldierID ]->inv[HANDPOS].usItem; - //SwapOutHandItem( MercPtrs[ ubSoldierID ] ); - SwapHandItems( MercPtrs[ ubSoldierID ] ); - MercPtrs[ ubSoldierID ]->ReLoadSoldierAnimationDueToHandItemChange( usOldHandItem, MercPtrs[ ubSoldierID ]->inv[HANDPOS].usItem ); + usOldHandItem = ubSoldierID->inv[HANDPOS].usItem; + //SwapOutHandItem( ubSoldierID ); + SwapHandItems( ubSoldierID ); + ubSoldierID->ReLoadSoldierAnimationDueToHandItemChange( usOldHandItem, ubSoldierID->inv[HANDPOS].usItem ); fInterfacePanelDirty = DIRTYLEVEL2; } } @@ -6773,10 +6774,11 @@ void TMClickFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) void TMClickSecondHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID; + SoldierID ubSoldierID; UINT16 usOldHandItem; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); if ( ubID == NOBODY ) return; @@ -6789,28 +6791,28 @@ void TMClickSecondHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) if (iReason == MSYS_CALLBACK_REASON_LBUTTON_UP ) { - if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) + if ( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) { - ExitVehicle( MercPtrs[ ubSoldierID ] ); + ExitVehicle( ubSoldierID ); } - else if (UsingNewInventorySystem() && !AM_A_ROBOT(MercPtrs[ubSoldierID])) + else if (UsingNewInventorySystem() && !AM_A_ROBOT(ubSoldierID)) { - MercPtrs[ubSoldierID]->SwitchWeapons(); + ubSoldierID->SwitchWeapons(); } } if (iReason == MSYS_CALLBACK_REASON_RBUTTON_UP ) { - if ( MercPtrs[ ubSoldierID ]->flags.uiStatusFlags & ( SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) + if ( ubSoldierID->flags.uiStatusFlags & ( SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) { } else { - if ( !AM_A_ROBOT( MercPtrs[ ubSoldierID ] ) ) + if ( !AM_A_ROBOT( ubSoldierID ) ) { - usOldHandItem = MercPtrs[ ubSoldierID ]->inv[HANDPOS].usItem; - SwapHandItems( MercPtrs[ ubSoldierID ] ); - MercPtrs[ ubSoldierID ]->ReLoadSoldierAnimationDueToHandItemChange( usOldHandItem, MercPtrs[ ubSoldierID ]->inv[HANDPOS].usItem ); + usOldHandItem = ubSoldierID->inv[HANDPOS].usItem; + SwapHandItems( ubSoldierID ); + ubSoldierID->ReLoadSoldierAnimationDueToHandItemChange( usOldHandItem, ubSoldierID->inv[HANDPOS].usItem ); fInterfacePanelDirty = DIRTYLEVEL2; } } @@ -6818,7 +6820,7 @@ void TMClickSecondHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) } -BOOLEAN PlayerExistsInSlot( UINT8 ubID ) +BOOLEAN PlayerExistsInSlot( SoldierID ubID ) { INT32 cnt; @@ -6837,7 +6839,7 @@ BOOLEAN PlayerExistsInSlot( UINT8 ubID ) } -INT8 GetTeamSlotFromPlayerID( UINT8 ubID ) +INT8 GetTeamSlotFromPlayerID( SoldierID ubID ) { INT8 cnt; @@ -6856,7 +6858,7 @@ INT8 GetTeamSlotFromPlayerID( UINT8 ubID ) } -BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT8 ubMercID ) +BOOLEAN RemovePlayerFromTeamSlotGivenMercID( SoldierID ubMercID ) { INT32 cnt; @@ -6876,17 +6878,17 @@ BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT8 ubMercID ) } -void AddPlayerToInterfaceTeamSlot( UINT8 ubID ) +void AddPlayerToInterfaceTeamSlot( SoldierID ubID ) { INT32 cnt; // If we are a vehicle don't ever add..... - if ( MercPtrs[ ubID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) + if ( ubID->flags.uiStatusFlags & SOLDIER_VEHICLE ) { return; } - if ( !( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) ) + if ( !( ubID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) ) { if ( !PlayerExistsInSlot( ubID ) ) { @@ -6905,7 +6907,7 @@ void AddPlayerToInterfaceTeamSlot( UINT8 ubID ) fInterfacePanelDirty = DIRTYLEVEL2; // Set ID to do open anim - MercPtrs[ ubID ]->flags.fUInewMerc = TRUE; + ubID->flags.fUInewMerc = TRUE; break; } @@ -6915,14 +6917,14 @@ void AddPlayerToInterfaceTeamSlot( UINT8 ubID ) else { // anv: for passengers, position on team panel will be linked with seat in vehicle - if ( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) + if ( ubID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) { - SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( MercPtrs[ ubID ]->iVehicleId ); + SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( ubID->iVehicleId ); if( pVehicle != NULL ) { - for( UINT8 iCounter = 0; iCounter < gNewVehicle[ pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].ubVehicleType ].iNewSeatingCapacities; iCounter++ ) + for( UINT8 iCounter = 0; iCounter < gNewVehicle[ pVehicleList[ ubID->iVehicleId ].ubVehicleType ].iNewSeatingCapacities; iCounter++ ) { - SOLDIERTYPE *pPassenger = pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].pPassengers[ iCounter ]; + SOLDIERTYPE *pPassenger = pVehicleList[ ubID->iVehicleId ].pPassengers[ iCounter ]; if( pPassenger != NULL && pPassenger->ubID == ubID ) { gTeamPanel[ iCounter ].fOccupied = TRUE; @@ -6935,7 +6937,7 @@ void AddPlayerToInterfaceTeamSlot( UINT8 ubID ) fInterfacePanelDirty = DIRTYLEVEL2; // Set ID to do open anim - MercPtrs[ ubID ]->flags.fUInewMerc = TRUE; + ubID->flags.fUInewMerc = TRUE; return; } @@ -6960,7 +6962,7 @@ BOOLEAN InitTEAMSlots( ) } -BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT8 *pubID ) +BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, SoldierID * pubID ) { if ( ubPanelSlot >= gGameOptions.ubSquadSize ) { @@ -6998,14 +7000,14 @@ BOOLEAN RemovePlayerFromInterfaceTeamSlot( UINT8 ubPanelSlot ) if ( gTeamPanel[ ubPanelSlot ].fOccupied ) { - if ( !( MercPtrs[ gTeamPanel[ ubPanelSlot ].ubID ]->flags.uiStatusFlags & SOLDIER_DEAD ) ) + if ( !( gTeamPanel[ ubPanelSlot ].ubID->flags.uiStatusFlags & SOLDIER_DEAD ) ) { // Set Id to close - MercPtrs[ gTeamPanel[ ubPanelSlot ].ubID ]->flags.fUICloseMerc = TRUE; + gTeamPanel[ ubPanelSlot ].ubID->flags.fUICloseMerc = TRUE; } // Set face to inactive... - SetAutoFaceInActive( MercPtrs[ gTeamPanel[ ubPanelSlot ].ubID ]->iFaceIndex ); + SetAutoFaceInActive( gTeamPanel[ ubPanelSlot ].ubID->iFaceIndex ); gTeamPanel[ ubPanelSlot ].fOccupied = FALSE; @@ -7138,7 +7140,7 @@ void CleanUpStack( OBJECTTYPE * pObj, OBJECTTYPE * pCursorObj ) } } -UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) +SoldierID FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) { INT32 cnt; INT32 bFirstID; @@ -7157,7 +7159,7 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife if ( gTeamPanel[ cnt ].fOccupied ) { // Set Id to close - pTeamSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ]; + pTeamSoldier = gTeamPanel[ cnt ].ubID; if ( fOnlyRegularMercs ) { @@ -7171,14 +7173,14 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } } @@ -7196,7 +7198,7 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife //Select next squad iCurrentSquad = CurrentSquad( ); - pNewSoldier = FindNextActiveSquad( MercPtrs[ gusSelectedSoldier ] ); + pNewSoldier = FindNextActiveSquad( gusSelectedSoldier ); if ( pNewSoldier->bAssignment != iCurrentSquad ) { @@ -7217,7 +7219,7 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife { if ( gTeamPanel[ cnt ].fOccupied ) { - pTeamSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ]; + pTeamSoldier = gTeamPanel[ cnt ].ubID; if ( fOnlyRegularMercs ) { @@ -7231,14 +7233,14 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } } @@ -7322,9 +7324,7 @@ void KeyRingItemPanelButtonCallback( MOUSE_REGION * pRegion, INT32 iReason ) } - - - pSoldier = &( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] ); + pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID; sStartYPosition = MAP_START_KEYRING_Y; sWidth = 261; sHeight = ( 359 - 107 ); @@ -7459,7 +7459,7 @@ void KeyRingSlotInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) } else { - UINT8 ubSrcID, ubDestID; + SoldierID ubSrcID, ubDestID; BOOLEAN fOKToGo = FALSE; BOOLEAN fDeductPoints = FALSE; @@ -7470,7 +7470,7 @@ void KeyRingSlotInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) } // ATE: OK, get source, dest guy if different... check for and then charge appropriate APs - ubSrcID = ( UINT8 )gCharactersList[ bSelectedInfoChar ].usSolID; + ubSrcID = gCharactersList[ bSelectedInfoChar ].usSolID; if ( gpItemPointerSoldier ) { ubDestID = gpItemPointerSoldier->ubID; diff --git a/Tactical/Interface Panels.h b/Tactical/Interface Panels.h index 5e5699e0..78fe0367 100644 --- a/Tactical/Interface Panels.h +++ b/Tactical/Interface Panels.h @@ -77,18 +77,18 @@ void UpdateTEAMPanel( ); */ BOOLEAN InitializeTEAMPanelCoords( ); -void SetSMPanelCurrentMerc( UINT8 ubNewID ); -void SetTEAMPanelCurrentMerc( UINT8 ubNewID ); -UINT16 GetSMPanelCurrentMerc( ); +void SetSMPanelCurrentMerc( SoldierID ubNewID ); +void SetTEAMPanelCurrentMerc( UINT16 ubNewID ); +SoldierID GetSMPanelCurrentMerc( ); void UpdateSMPanel( ); BOOLEAN InitTEAMSlots( ); -void AddPlayerToInterfaceTeamSlot( UINT8 ubID ); +void AddPlayerToInterfaceTeamSlot( SoldierID ubID ); BOOLEAN RemovePlayerFromInterfaceTeamSlot( UINT8 ubID ); -BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT8 *pubID ); +BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, SoldierID * pubID ); void RemoveAllPlayersFromSlot( ); -BOOLEAN PlayerExistsInSlot( UINT8 ubID ); -BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT8 ubMercID ); +BOOLEAN PlayerExistsInSlot( SoldierID ubID ); +BOOLEAN RemovePlayerFromTeamSlotGivenMercID( SoldierID ubMercID ); void CheckForAndAddMercToTeamPanel( SOLDIERTYPE *pSoldier ); void CleanUpStack( OBJECTTYPE * pObj, OBJECTTYPE * pCursorObj ); @@ -105,10 +105,10 @@ void InitOldInventorySystem( ); // ATE TO BE MOVED TO INTERFACE_ITEMS.C extern INT8 gbNewItem[ NUM_INV_SLOTS ]; extern INT8 gbNewItemCycle[ NUM_INV_SLOTS ]; -extern UINT8 gubNewItemMerc; +extern UINT8 gubNewItemMerc; -void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ); -void EndRadioLocator( UINT8 ubID ); +void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed ); +void EndRadioLocator( SoldierID ubID ); extern MOUSE_REGION gSMPanelRegion; @@ -118,12 +118,12 @@ extern BOOLEAN gfDisableTacticalPanelButtons; typedef struct { - UINT8 ubID; - BOOLEAN fOccupied; + SoldierID ubID; + BOOLEAN fOccupied; } TEAM_PANEL_SLOTS_TYPE; -extern TEAM_PANEL_SLOTS_TYPE gTeamPanel[ NUM_TEAM_SLOTS ]; +extern TEAM_PANEL_SLOTS_TYPE gTeamPanel[ NUM_TEAM_SLOTS ]; @@ -149,7 +149,7 @@ void GoToMapScreenFromTactical( void ); void FinishAnySkullPanelAnimations( ); -UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); +SoldierID FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); // CHRISL: New callback functions for backpack buttons BOOLEAN ChangeDropPackStatus(SOLDIERTYPE *pSoldier, BOOLEAN newStatus); @@ -168,4 +168,4 @@ extern UINT8 gubDescBoxTotalAdvLines; // Jenilee: determine the cost of moving this item around in our inventory UINT16 GetInvMovementCost(OBJECTTYPE* pObj, INT16 old_pos, INT16 new_pos); -#endif +#endif diff --git a/Tactical/Interface Utils.cpp b/Tactical/Interface Utils.cpp index a37f4522..4337622f 100644 --- a/Tactical/Interface Utils.cpp +++ b/Tactical/Interface Utils.cpp @@ -43,7 +43,7 @@ extern UINT32 guiBrownBackgroundForTeamPanel; extern UINT32 guiGoldBackgroundForTeamPanel; // selected grunt -extern UINT16 gusSelectedSoldier; +extern SoldierID gusSelectedSoldier; // car portraits enum{ @@ -494,7 +494,7 @@ void RenderSoldierFace( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY, BOOLE } else { - SetAutoFaceActiveFromSoldier( FRAME_BUFFER, guiSAVEBUFFER, pSoldier->ubID , sFaceX, sFaceY ); + SetAutoFaceActiveFromSoldier( FRAME_BUFFER, guiSAVEBUFFER, pSoldier->ubID, sFaceX, sFaceY ); // SetAutoFaceActiveFromSoldier( FRAME_BUFFER, FACE_AUTO_RESTORE_BUFFER, pSoldier->ubID , sFaceX, sFaceY ); } } diff --git a/Tactical/Interface.cpp b/Tactical/Interface.cpp index 64881ccc..8684daf6 100644 --- a/Tactical/Interface.cpp +++ b/Tactical/Interface.cpp @@ -122,8 +122,8 @@ extern BOOLEAN gfCannotGetThrough; // will use it when showing red laser dot extern void SoldierTooltip(SOLDIERTYPE*); BOOLEAN gfProgBarActive = FALSE; -UINT8 gubProgNumEnemies = 0; -UINT8 gubProgCurEnemy = 0; +UINT16 gubProgNumEnemies = 0; +UINT16 gubProgCurEnemy = 0; UINT32 guiPORTRAITICONS; @@ -164,8 +164,6 @@ MOUSE_REGION gMenuOverlayRegion; MOUSE_REGION gBottomPanalRegion; -UINT16 gusOldSelectedSoldier = NOBODY; - // OVerlay ID INT32 giPopupSlideMessageOverlay = -1; UINT16 gusOverlayPopupBoxWidth, gusOverlayPopupBoxHeight; @@ -187,9 +185,9 @@ BOOLEAN gfPanelAllocated = FALSE; extern MOUSE_REGION gDisableRegion; extern MOUSE_REGION gUserTurnRegion; -extern BOOLEAN gfUserTurnRegionActive; -extern UINT8 gubSelectSMPanelToMerc; -extern BOOLEAN gfIgnoreOnSelectedGuy; +extern BOOLEAN gfUserTurnRegionActive; +extern SoldierID gubSelectSMPanelToMerc; +extern BOOLEAN gfIgnoreOnSelectedGuy; enum { @@ -656,10 +654,7 @@ void ShutdownCurrentPanel( ) - - - -void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ) +void SetCurrentTacticalPanelCurrentMerc( SoldierID ubID ) { SOLDIERTYPE *pSoldier; @@ -669,7 +664,7 @@ void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ) if ( gsCurInterfacePanel == SM_PANEL ) { // If we are not of merc bodytype, or am an epc, and going into inv, goto another.... - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; if ( !IS_MERC_BODY_TYPE( pSoldier ) || AM_AN_EPC( pSoldier ) ) { @@ -685,13 +680,12 @@ void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ) break; case TEAM_PANEL: - SetTEAMPanelCurrentMerc( (UINT8)gusSelectedSoldier ); + SetTEAMPanelCurrentMerc( gusSelectedSoldier ); break; } - - } + void CreateCurrentTacticalPanelButtons( ) { switch( gsCurInterfacePanel ) @@ -723,7 +717,7 @@ void SetCurrentInterfacePanel( UINT8 ubNewPanel ) void ToggleTacticalPanels( ) { gfSwitchPanel = TRUE; - gubNewPanelParam = (UINT8)gusSelectedSoldier; + gubNewPanelParam = gusSelectedSoldier; if ( gsCurInterfacePanel == SM_PANEL ) { @@ -753,7 +747,7 @@ void RemoveCurrentTacticalPanelButtons( ) } -BOOLEAN IsMercPortraitVisible( UINT8 ubSoldierID ) +BOOLEAN IsMercPortraitVisible( UINT16 ubSoldierID ) { if ( gsCurInterfacePanel == TEAM_PANEL ) { @@ -844,7 +838,7 @@ void PopupMovementMenu( UI_EVENT *pUIEvent ) if ( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; } // Blit background! @@ -1666,7 +1660,7 @@ void DrawCTHPixelToBuffer( UINT16 *pBuffer, UINT32 uiPitch, INT16 sLeft, INT16 s //QUOTE_SYSTEM_STRUCT soldierTTInfo; -void DrawSelectedUIAboveGuy( UINT16 usSoldierID ) +void DrawSelectedUIAboveGuy( SoldierID usSoldierID ) { SOLDIERTYPE *pSoldier; INT16 sXPos, sYPos; @@ -4208,7 +4202,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_OPEN_DOOR], APBPConstants[BP_OPEN_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); if ( gOpenDoorMenu.fClosingDoor ) { @@ -4232,7 +4226,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToOpenDoor( gOpenDoorMenu.pSoldier ), APBPConstants[BP_OPEN_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); if ( gOpenDoorMenu.fClosingDoor ) { @@ -4257,7 +4251,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_BOOT_DOOR], APBPConstants[BP_BOOT_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_FORCE ); } @@ -4274,7 +4268,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_UNLOCK_DOOR], APBPConstants[BP_UNLOCK_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_UNLOCK ); } @@ -4291,7 +4285,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToPicklock( gOpenDoorMenu.pSoldier ), APBPConstants[BP_PICKLOCK], FALSE ) ) // SANDRO { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_LOCKPICK ); } @@ -4308,7 +4302,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_EXAMINE_DOOR], APBPConstants[BP_EXAMINE_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_EXAMINE ); } @@ -4334,7 +4328,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_EXPLODE_DOOR], APBPConstants[BP_EXPLODE_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_EXPLODE ); } @@ -4349,7 +4343,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToBombDoor( gOpenDoorMenu.pSoldier ), APBPConstants[BP_EXPLODE_DOOR], FALSE ) ) // SANDRO { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_EXPLODE ); } @@ -4367,7 +4361,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToUntrapDoor( gOpenDoorMenu.pSoldier ), APBPConstants[BP_UNTRAP_DOOR], FALSE ) ) // SANDRO { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_UNTRAP ); } @@ -4393,7 +4387,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_USE_CROWBAR], APBPConstants[BP_USE_CROWBAR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_CROWBAR ); } @@ -4408,7 +4402,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_USE_CROWBAR], APBPConstants[BP_USE_CROWBAR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_CROWBAR ); } @@ -5166,7 +5160,7 @@ void PauseRT( BOOLEAN fPause ) } -void InitEnemyUIBar( UINT8 ubNumEnemies, UINT8 ubDoneEnemies ) +void InitEnemyUIBar( UINT16 ubNumEnemies, UINT16 ubDoneEnemies ) { // OK, set value gubProgNumEnemies = ubNumEnemies + ubDoneEnemies; @@ -5205,8 +5199,7 @@ void UpdateEnemyUIBar( ) void InitPlayerUIBar( BOOLEAN fInterrupt ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - INT8 bNumOK = 0, bNumNotOK = 0; + INT16 bNumOK = 0, bNumNotOK = 0; if ( !gGameOptions.fTurnTimeLimit ) { @@ -5231,11 +5224,12 @@ void InitPlayerUIBar( BOOLEAN fInterrupt ) gTacticalStatus.usTactialTurnLimitCounter = 0; // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Are we active and in sector..... if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { @@ -5704,7 +5698,6 @@ void BeginMultiPurposeLocator( INT32 sGridNo, INT8 bLevel, BOOLEAN fSlideTo ) // sGridNo here for DG compatibility gTacticalStatus.sSlideTarget = sGridNo; - gTacticalStatus.sSlideReason = NOBODY; // Plot new path! gfPlotNewMovement = TRUE; @@ -6123,7 +6116,7 @@ void ShowEnemyWeapon( INT16 sX, INT16 sY, SOLDIERTYPE* pTargetSoldier ) INT32 iVisibleDistance; if ( gusSelectedSoldier != NOBODY ) - pSelectedSoldier = MercPtrs[ gusSelectedSoldier ]; + pSelectedSoldier = gusSelectedSoldier; else return; @@ -6169,7 +6162,7 @@ void ShowEnemyHealthBar( INT16 sX, INT16 sY, SOLDIERTYPE* pSoldier ) SOLDIERTYPE *pSelectedSoldier; if ( gusSelectedSoldier != NOBODY ) - pSelectedSoldier = MercPtrs[ gusSelectedSoldier ]; + pSelectedSoldier = gusSelectedSoldier; else return; diff --git a/Tactical/Interface.h b/Tactical/Interface.h index ea13f36b..0c5c5546 100644 --- a/Tactical/Interface.h +++ b/Tactical/Interface.h @@ -372,9 +372,9 @@ enum extern BOOLEAN gfSwitchPanel; extern BOOLEAN gfUIStanceDifferent; -extern UINT8 gbNewPanel; -extern UINT8 gubNewPanelParam; -extern INT16 gsCurInterfacePanel; +extern UINT8 gbNewPanel; +extern SoldierID gubNewPanelParam; +extern INT16 gsCurInterfacePanel; extern UINT32 guiRENDERBUFFER; extern UINT32 guiCLOSE; @@ -458,16 +458,16 @@ void HandleInterfaceBackgrounds( ); void BeginOverlayMessage( UINT32 uiFont, STR16 pFontString, ... ); void EndOverlayMessage( ); -void DrawSelectedUIAboveGuy( UINT16 usSoldierID ); +void DrawSelectedUIAboveGuy( SoldierID usSoldierID ); // HEADROCK HAM 4: Draw the CTH indicator, using values grabbed from the global CTH array BOOLEAN DrawCTHIndicator(); void CreateCurrentTacticalPanelButtons( ); void RemoveCurrentTacticalPanelButtons( ); -void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ); +void SetCurrentTacticalPanelCurrentMerc( SoldierID ubID ); void SetCurrentInterfacePanel( UINT8 ubNewPanel ); -BOOLEAN IsMercPortraitVisible( UINT8 ubSoldierID ); +BOOLEAN IsMercPortraitVisible( UINT16 ubSoldierID ); BOOLEAN InitializeCurrentPanel( ); void ShutdownCurrentPanel( ); @@ -482,7 +482,7 @@ void HandleUpDownArrowBackgrounds( ); void EndDeadlockMsg( ); -void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ); +void HandleLocateSelectMerc( SoldierID ubID, INT8 bFlag ); void DirtyMercPanelInterface( SOLDIERTYPE *pSoldier, UINT8 ubDirtyLevel ); @@ -522,7 +522,7 @@ void EndTopMessage( ); void PauseRT( BOOLEAN fPause ); -void InitEnemyUIBar( UINT8 ubNumEnemies, UINT8 ubDoneEnemies ); +void InitEnemyUIBar( UINT16 ubNumEnemies, UINT16 ubDoneEnemies ); STR16 GetSoldierHealthString( SOLDIERTYPE *pSoldier ); @@ -581,4 +581,4 @@ void NCTHShowMounted( SOLDIERTYPE* pSoldier, UINT16* ptrBuf, UINT32 uiPitch, INT BOOLEAN HasBackgroundFlag( UINT8 usProfile, UINT64 aFlag ); INT16 GetBackgroundValue( UINT8 usProfile, UINT16 aNr ); -#endif +#endif diff --git a/Tactical/Inventory Choosing.cpp b/Tactical/Inventory Choosing.cpp index 060f9d22..5630b81e 100644 --- a/Tactical/Inventory Choosing.cpp +++ b/Tactical/Inventory Choosing.cpp @@ -3901,7 +3901,7 @@ void MoveOneMilitiaEquipmentSet(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, pWorldItem_tmp[uiCount].usFlags = WORLD_ITEM_REACHABLE; pWorldItem_tmp[uiCount].bVisible = 1; pWorldItem_tmp[uiCount].bRenderZHeightAboveLevel = 0; - pWorldItem_tmp[uiCount].soldierID = -1; + pWorldItem_tmp[uiCount].soldierID = NOBODY; pWorldItem_tmp[uiCount].object = tmp.Inv[ i ]; } } @@ -3924,23 +3924,23 @@ void MoveOneMilitiaEquipmentSet(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, } } -void MoveMilitiaEquipment(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, INT16 sTargetY, UINT8 usElites, UINT8 usRegulars, UINT8 usGreens) +void MoveMilitiaEquipment(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, INT16 sTargetY, UINT16 usElites, UINT16 usRegulars, UINT16 usGreens) { if ( !gGameExternalOptions.fMilitiaUseSectorInventory ) return; // atm there is no class-specific selection, but that might change in the future - for (UINT8 i = 0; i < usElites; ++i) + for (UINT16 i = 0; i < usElites; ++i) { MoveOneMilitiaEquipmentSet( sSourceX, sSourceY, sTargetX, sTargetY, SOLDIER_CLASS_ELITE_MILITIA); } - for (UINT8 i = 0; i < usRegulars; ++i) + for (UINT16 i = 0; i < usRegulars; ++i) { MoveOneMilitiaEquipmentSet( sSourceX, sSourceY, sTargetX, sTargetY, SOLDIER_CLASS_REG_MILITIA); } - for (UINT8 i = 0; i < usGreens; ++i) + for (UINT16 i = 0; i < usGreens; ++i) { MoveOneMilitiaEquipmentSet( sSourceX, sSourceY, sTargetX, sTargetY, SOLDIER_CLASS_GREEN_MILITIA); } @@ -4647,7 +4647,7 @@ void TakeMilitiaEquipmentfromSector( INT16 sMapX, INT16 sMapY, INT8 sMapZ, SOLDI pWorldItem[uiCount].usFlags = WORLD_ITEM_REACHABLE; pWorldItem[uiCount].bVisible = 1; pWorldItem[uiCount].bRenderZHeightAboveLevel = 0; - pWorldItem[uiCount].soldierID = -1; + pWorldItem[uiCount].soldierID = NOBODY; pWorldItem[uiCount].object = newAmmoObj; fNewMagCreated = FALSE; @@ -4686,7 +4686,7 @@ void TakeMilitiaEquipmentfromSector( INT16 sMapX, INT16 sMapY, INT8 sMapZ, SOLDI pWorldItem_tmp[uiCount].usFlags = WORLD_ITEM_REACHABLE; pWorldItem_tmp[uiCount].bVisible = 1; pWorldItem_tmp[uiCount].bRenderZHeightAboveLevel = 0; - pWorldItem_tmp[uiCount].soldierID = -1; + pWorldItem_tmp[uiCount].soldierID = NOBODY; pWorldItem_tmp[uiCount].object = newAmmoObj; fNewMagCreated = FALSE; diff --git a/Tactical/Inventory Choosing.h b/Tactical/Inventory Choosing.h index 396f13fe..0fa4a469 100644 --- a/Tactical/Inventory Choosing.h +++ b/Tactical/Inventory Choosing.h @@ -121,9 +121,9 @@ extern ARMY_GUN_CHOICE_TYPE gArmyItemChoices[SOLDIER_GUN_CHOICE_SELECTIONS][MAX_ void MoveOneMilitiaEquipmentSet(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, INT16 sTargetY, INT8 bSoldierClass); // move a number of militia equipment sets between sectors -void MoveMilitiaEquipment(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, INT16 sTargetY, UINT8 usElites, UINT8 usRegulars, UINT8 usGreens); +void MoveMilitiaEquipment(INT16 sSourceX, INT16 sSourceY, INT16 sTargetX, INT16 sTargetY, UINT16 usElites, UINT16 usRegulars, UINT16 usGreens); // take militia items from sector void TakeMilitiaEquipmentfromSector( INT16 sMapX, INT16 sMapY, INT8 sMapZ, SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass ); -#endif +#endif diff --git a/Tactical/Item Types.cpp b/Tactical/Item Types.cpp index 5a4fed34..218cfe91 100644 --- a/Tactical/Item Types.cpp +++ b/Tactical/Item Types.cpp @@ -48,27 +48,27 @@ bool checkLBEArrayIntegrity(bool verbose) { ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"LBENODE integrity check start: checking soldier items..."); for (int i = 0; i < CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS; i++) { - if (!gCharactersList[i].fValid || gCharactersList[i].usSolID < 0) continue; + if (!gCharactersList[i].fValid || gCharactersList[i].usSolID >= NOBODY) continue; - int id = gCharactersList[i].usSolID; - SOLDIERTYPE soldier = Menptr[id]; + SoldierID id = gCharactersList[i].usSolID; + SOLDIERTYPE *soldier = id; - if (verbose)ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"LBENODE integrity check start: checking soldier items (%s)...", soldier.name); + if (verbose)ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"LBENODE integrity check start: checking soldier items (%s)...", soldier->name); - for (int j = 0; j < soldier.inv.size(); j++) { - OBJECTTYPE * object = &(soldier.inv[j]); + for (int j = 0; j < soldier->inv.size(); j++) { + OBJECTTYPE * object = &(soldier->inv[j]); if (object->HasAnyActiveLBEs()) { if (!checkObjectLBEIntegrity(object)) { - ScreenMsg(FONT_MCOLOR_LTRED, MSG_INTERFACE, L"> LBENODE missing: %s -> %s!", soldier.name, Item[object->usItem].szItemName); + ScreenMsg(FONT_MCOLOR_LTRED, MSG_INTERFACE, L"> LBENODE missing: %s -> %s!", soldier->name, Item[object->usItem].szItemName); integrityCheck = false; } else { - if (verbose)ScreenMsg(FONT_MCOLOR_LTGREEN, MSG_INTERFACE, L"> OK: %s -> %s", soldier.name, Item[object->usItem].szItemName); + if (verbose)ScreenMsg(FONT_MCOLOR_LTGREEN, MSG_INTERFACE, L"> OK: %s -> %s", soldier->name, Item[object->usItem].szItemName); } } else { - if (verbose)ScreenMsg(FONT_MCOLOR_LTGRAY, MSG_INTERFACE, L"> SKIP: %s -> %s", soldier.name, Item[object->usItem].szItemName); + if (verbose)ScreenMsg(FONT_MCOLOR_LTGRAY, MSG_INTERFACE, L"> SKIP: %s -> %s", soldier->name, Item[object->usItem].szItemName); } } } @@ -125,7 +125,7 @@ bool IsSlotASmallPocket(int slot) return false; } -void CreateLBE (OBJECTTYPE* pObj, UINT8 ubID, int numSubPockets) +void CreateLBE (OBJECTTYPE* pObj, SoldierID ubID, int numSubPockets) { int uniqueID; LBENODE* pLBE = NULL; @@ -1566,7 +1566,7 @@ OBJECTTYPE& OBJECTTYPE::operator=(const OLD_OBJECTTYPE_101& src) (*this)[0]->data.misc.bDetonatorType = src.ugYucky.bDetonatorType; (*this)[0]->data.misc.usBombItem = src.ugYucky.usBombItem; (*this)[0]->data.misc.bDelay = src.ugYucky.bDelay; // includes bFrequency - (*this)[0]->data.misc.ubBombOwner = src.ugYucky.ubBombOwner; + (*this)[0]->data.misc.ubBombOwner = static_cast(src.ugYucky.ubBombOwner); (*this)[0]->data.misc.bActionValue = src.ugYucky.bActionValue; (*this)[0]->data.misc.ubTolerance = src.ugYucky.ubTolerance; // includes ubLocationID (*this)[0]->data.ubDirection = DIRECTION_IRRELEVANT; @@ -1658,7 +1658,7 @@ OBJECTTYPE& OBJECTTYPE::operator=(const OLD_OBJECTTYPE_101& src) (*this)[0]->data.misc.bDetonatorType = src.ugYucky.bDetonatorType; (*this)[0]->data.misc.usBombItem = src.ugYucky.usBombItem; (*this)[0]->data.misc.bDelay = src.ugYucky.bDelay; // includes bFrequency - (*this)[0]->data.misc.ubBombOwner = src.ugYucky.ubBombOwner; + (*this)[0]->data.misc.ubBombOwner = static_cast(src.ugYucky.ubBombOwner); (*this)[0]->data.misc.bActionValue = src.ugYucky.bActionValue; (*this)[0]->data.misc.ubTolerance = src.ugYucky.ubTolerance; // includes ubLocationID (*this)[0]->data.ubWireNetworkFlag = TRIPWIRE_NETWORK_OWNER_ENEMY; // it is always assumed that preplated traps are of hostile origin diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h index b71a3cad..34799f74 100644 --- a/Tactical/Item Types.h +++ b/Tactical/Item Types.h @@ -1,7 +1,7 @@ #ifndef ITEM_TYPES_H #define ITEM_TYPES_H -#include "types.h" +#include "Overhead Types.h" #include #include // THE_BOB : added for pocket popup definitions @@ -247,7 +247,7 @@ public: UINT32 lbeClass; UINT16 lbeIndex; - UINT8 ubID; + SoldierID ubID; BOOLEAN ZipperFlag; int uniqueID; UINT32 uiNodeChecksum; @@ -259,7 +259,7 @@ public: #define SIZEOF_LBENODE_POD (offsetof(LBENODE, endOfPOD)) bool checkLBEArrayIntegrity(bool verbose=false); // BOB: checks all worldItems for missing LBE info -void CreateLBE(OBJECTTYPE* pObj, UINT8 ubID, int numSubPockets); +void CreateLBE(OBJECTTYPE* pObj, SoldierID ubID, int numSubPockets); bool DestroyLBEIfEmpty(OBJECTTYPE* pObj, int stackIndex = 0); void DestroyLBE(OBJECTTYPE* pObj, int stackIndex = 0); void GetLBESlots(UINT32 LBEType, std::vector& LBESlots); @@ -408,15 +408,15 @@ namespace ObjectDataStructs { struct OBJECT_BOMBS_AND_OTHER { // this is used by placed bombs, switches, and the action item INT16 bBombStatus; // % status - INT8 bDetonatorType; // timed, remote, or pressure-activated + INT8 bDetonatorType; // timed, remote, or pressure-activated UINT16 usBombItem; // the usItem of the bomb. union { INT8 bDelay; // >=0 values used only INT8 bFrequency; // >=0 values used only }; - UINT8 ubBombOwner; // side which placed the bomb - UINT8 bActionValue; // this is used by the ACTION_ITEM fake item + SoldierID ubBombOwner; // side which placed the bomb + UINT8 bActionValue; // this is used by the ACTION_ITEM fake item union { UINT8 ubTolerance; // tolerance value for panic triggers @@ -1052,8 +1052,8 @@ typedef struct UINT64 nasLayoutClass; UINT64 ulAvailableAttachmentPoint; UINT64 ulAttachmentPoint; - UINT64 usItemFlag; // bitflags to store various item properties (better than introducing 64 BOOLEAN values). If I only had thought of this earlier.... - UINT64 usItemFlag2; // bitflags to store various item properties + FLAGS64 usItemFlag; // bitflags to store various item properties (better than introducing 64 BOOLEAN values). If I only had thought of this earlier.... + FLAGS64 usItemFlag2; // bitflags to store various item properties UINT32 uiIndex; UINT32 usItemClass; diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 74dd2e79..2f8a3ab6 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -3175,7 +3175,7 @@ UINT32 CalculateCarriedWeight( SOLDIERTYPE * pSoldier, BOOLEAN fConsiderDragging { if (pSoldier->usDragPersonID != NOBODY) { - SOLDIERTYPE* pOtherSoldier = MercPtrs[pSoldier->usDragPersonID]; + SOLDIERTYPE* pOtherSoldier = pSoldier->usDragPersonID; uiTotalWeight += GetTotalWeight( pOtherSoldier ); uiTotalWeight += pOtherSoldier->GetBodyWeight(); @@ -9312,11 +9312,11 @@ void CheckEquipmentForFragileItemDamage( SOLDIERTYPE *pSoldier, INT32 iDamage ) } -BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT8 ubOwner ) +BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, SoldierID ubOwner ) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"DamageItemOnGround ( usItem : %i , sGridNo : %i , bLevel : %i , iDamage : %i , ubOwner : %i )\n",pObject->usItem, sGridNo , bLevel , iDamage , ubOwner ); + sprintf(tmpMPDbgString,"DamageItemOnGround ( usItem : %i , sGridNo : %i , bLevel : %i , iDamage : %i , ubOwner : %i )\n",pObject->usItem, sGridNo , bLevel , iDamage , ubOwner.i ); MPDebugMsg(tmpMPDbgString); #endif @@ -15257,18 +15257,18 @@ void CheckBombSpecifics( OBJECTTYPE * pObj, INT8* detonatortype, INT8* setting, } // Flugente: check for specific flags -BOOLEAN HasItemFlag( UINT16 usItem, UINT64 aFlag ) +BOOLEAN HasItemFlag( UINT16 usItem, FLAGS64 aFlag ) { return( (Item[usItem].usItemFlag & aFlag) != 0 ); } -BOOLEAN HasItemFlag2(UINT16 usItem, UINT64 aFlag) +BOOLEAN HasItemFlag2(UINT16 usItem, FLAGS64 aFlag) { return((Item[usItem].usItemFlag2 & aFlag) != 0); } // Flugente: get first item number that has this flag. Use with caution, as we search in all items -BOOLEAN GetFirstItemWithFlag( UINT16* pusItem, UINT64 aFlag ) +BOOLEAN GetFirstItemWithFlag( UINT16* pusItem, FLAGS64 aFlag ) { UINT16 i; for ( i = 1; i < gMAXITEMS_READ; ++i ) @@ -15295,10 +15295,10 @@ BOOLEAN ObjectIsExternalFeeder(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject) if ( !pSoldier || !pObject) return( FALSE ); - UINT8 usSoldierFeedingTarget1 = 0; + SoldierID usSoldierFeedingTarget1 = NOBODY; UINT16 usGunSlot1 = 0; UINT16 usAmmoSlot1 = 0; - UINT8 usSoldierFeedingTarget2 = 0; + SoldierID usSoldierFeedingTarget2 = NOBODY; UINT16 usGunSlot2 = 0; UINT16 usAmmoSlot2 = 0; if ( pSoldier->IsFeedingExternal(&usSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) ) @@ -15340,10 +15340,11 @@ OBJECTTYPE* GetExternalFeedingObject(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject // loop over other members of our team in this sector. This includes ourself, as our gun can be fed from a belt in our inventory SOLDIERTYPE* pTeamSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; - INT32 lastid = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier) + SoldierID cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pTeamSoldier = cnt; // check if teamsoldier exists in this sector if ( !pTeamSoldier || !pTeamSoldier->bActive || !pTeamSoldier->bInSector || pTeamSoldier->stats.bLife < OKLIFE || pTeamSoldier->sSectorX != pSoldier->sSectorX || pTeamSoldier->sSectorY != pSoldier->sSectorY || pTeamSoldier->bSectorZ != pSoldier->bSectorZ ) continue; @@ -15353,10 +15354,10 @@ OBJECTTYPE* GetExternalFeedingObject(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject continue; // we check if that guy is feeding someone, and that someone is really us - UINT8 usTeamSoldierFeedingTarget1 = 0; + SoldierID usTeamSoldierFeedingTarget1 = NOBODY; UINT16 usGunSlot1 = 0; UINT16 usAmmoSlot1 = 0; - UINT8 usTeamSoldierFeedingTarget2 = 0; + SoldierID usTeamSoldierFeedingTarget2 = NOBODY; UINT16 usGunSlot2 = 0; UINT16 usAmmoSlot2 = 0; if ( pTeamSoldier->IsFeedingExternal(&usTeamSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usTeamSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) ) diff --git a/Tactical/Items.h b/Tactical/Items.h index 9db8c798..05060e95 100644 --- a/Tactical/Items.h +++ b/Tactical/Items.h @@ -294,7 +294,7 @@ UINT16 StandardGunListReplacement( UINT16 usGun ); UINT16 FindReplacementMagazine( UINT8 ubCalibre, UINT16 ubMagSize, UINT8 ubAmmoType); UINT16 FindReplacementMagazineIfNecessary( UINT16 usOldGun, UINT16 usOldAmmo, UINT16 usNewGun ); -BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT8 ubOwner ); +BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, SoldierID ubOwner ); BOOLEAN CompatibleFaceItem( UINT16 usItem1, UINT16 usItem2 ); @@ -564,11 +564,11 @@ UINT64 GetAvailableAttachmentPoint ( OBJECTTYPE * pObject, UINT8 subObject ); void CheckBombSpecifics( OBJECTTYPE * pObj, INT8* detonatortype, INT8* setting, INT8* defusefrequency ); // Flugente: check for specific flags -BOOLEAN HasItemFlag(UINT16 usItem, UINT64 aFlag); -BOOLEAN HasItemFlag2(UINT16 usItem, UINT64 aFlag); +BOOLEAN HasItemFlag(UINT16 usItem, FLAGS64 aFlag); +BOOLEAN HasItemFlag2(UINT16 usItem, FLAGS64 aFlag); // Flugente: get first item number that has this flag. Use with caution, as we search in all items -BOOLEAN GetFirstItemWithFlag( UINT16* pusItem, UINT64 aFlag ); +BOOLEAN GetFirstItemWithFlag( UINT16* pusItem, FLAGS64 aFlag ); // Flugente: check if this object is currently fed from an external source (belts in inventory, other mercs) BOOLEAN ObjectIsBeingFedExternal(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject); diff --git a/Tactical/Ja25_Tactical.cpp b/Tactical/Ja25_Tactical.cpp index e77b35f2..e3acfde5 100644 --- a/Tactical/Ja25_Tactical.cpp +++ b/Tactical/Ja25_Tactical.cpp @@ -84,7 +84,7 @@ typedef struct //Morris items //UINT32 MORRIS_INSTRUCTION_NOTE = 1362; -UINT8 Get3RandomQualifiedMercs( UINT8 *pSoldierId1, UINT8 *pSoldierId2, UINT8 *pSoldierId3 ); +UINT8 Get3RandomQualifiedMercs( SoldierID *pSoldierId1, SoldierID *pSoldierId2, SoldierID *pSoldierId3 ); //******************************************************************* // @@ -464,7 +464,7 @@ BOOLEAN IsSoldierQualifiedInitialHireMerc( SOLDIERTYPE *pSoldier ) } } -UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( UINT8 *pSoldierIdArray, UINT8 *pProfileIdArray ) +UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierID *pSoldierIdArray, UINT8 *pProfileIdArray ) { SOLDIERTYPE *pSoldier=NULL; UINT8 usNumMercsPresent=0; @@ -535,10 +535,10 @@ INT16 RandomProfileIdFromNewMercsOnPlayerTeam() } } -INT16 RandomSoldierIdFromNewMercsOnPlayerTeam() +SoldierID RandomSoldierIdFromNewMercsOnPlayerTeam() { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; //Get the number and array of the new soldiers usNumMercsPresent = GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierIdArray, NULL ); @@ -548,20 +548,20 @@ INT16 RandomSoldierIdFromNewMercsOnPlayerTeam() if( usNumMercsPresent > 0 ) { //return a random merc from the array - return( (INT16)( SoldierIdArray[ Random( usNumMercsPresent ) ] )); + return( ( SoldierIdArray[ Random( usNumMercsPresent ) ] )); } else { - return( -1 ); + return( NOBODY ); } } -UINT8 RandomArrayOfQualifiedMercs( UINT8 *pRandomSoldierIdArray ) +UINT8 RandomArrayOfQualifiedMercs( SoldierID *pRandomSoldierIdArray ) { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; - BOOLEAN UsedArray[NUM_MERCS_WITH_NEW_QUOTES]; - BOOLEAN fFound=FALSE; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + BOOLEAN UsedArray[NUM_MERCS_WITH_NEW_QUOTES]; + BOOLEAN fFound=FALSE; UINT8 ubRand; memset( UsedArray, 0, NUM_MERCS_WITH_NEW_QUOTES ); @@ -596,11 +596,11 @@ UINT8 RandomArrayOfQualifiedMercs( UINT8 *pRandomSoldierIdArray ) return( usNumMercsPresent ); } -UINT8 Get3RandomQualifiedMercs( UINT8 *pSoldierId1, UINT8 *pSoldierId2, UINT8 *pSoldierId3 ) +UINT8 Get3RandomQualifiedMercs( SoldierID *pSoldierId1, SoldierID *pSoldierId2, SoldierID *pSoldierId3 ) { - UINT8 usNumMercs; - UINT8 RandomSoldierIdArray[ NUM_MERCS_WITH_NEW_QUOTES ]; - UINT8 ubNumberDifMercsAssigned=0; + UINT8 usNumMercs; + SoldierID RandomSoldierIdArray[ NUM_MERCS_WITH_NEW_QUOTES ]; + UINT8 ubNumberDifMercsAssigned=0; usNumMercs = RandomArrayOfQualifiedMercs( RandomSoldierIdArray ); @@ -887,20 +887,20 @@ void HandlePowerGenAlarm() } else { - UINT8 bSoldierId1, bSoldierId2, bSoldierId3; + SoldierID bSoldierId1, bSoldierId2, bSoldierId3; Get3RandomQualifiedMercs( &bSoldierId1, &bSoldierId2, &bSoldierId3 ); - if( bSoldierId1 != -1 && Menptr[ bSoldierId1 ].ubProfile != BIGGENS_UB ) //BIGGENS + if( bSoldierId1 != NOBODY && bSoldierId1->ubProfile != BIGGENS_UB ) //BIGGENS { - TacticalCharacterDialogue( &Menptr[ bSoldierId1 ], QUOTE_HATED_1_ON_TEAM_LONGTIMETOHATE ); + TacticalCharacterDialogue( bSoldierId1, QUOTE_HATED_1_ON_TEAM_LONGTIMETOHATE ); } - else if( bSoldierId2 != -1 && Menptr[ bSoldierId2 ].ubProfile != BIGGENS_UB ) //BIGGENS + else if( bSoldierId2 != NOBODY && bSoldierId2->ubProfile != BIGGENS_UB ) //BIGGENS { - TacticalCharacterDialogue( &Menptr[ bSoldierId2 ], QUOTE_HATED_1_ON_TEAM_LONGTIMETOHATE ); + TacticalCharacterDialogue( bSoldierId2, QUOTE_HATED_1_ON_TEAM_LONGTIMETOHATE ); } - else if( bSoldierId3 != -1 && Menptr[ bSoldierId3 ].ubProfile != BIGGENS_UB ) // BIGGENS + else if( bSoldierId3 != NOBODY && bSoldierId3->ubProfile != BIGGENS_UB ) // BIGGENS { - TacticalCharacterDialogue( &Menptr[ bSoldierId3 ], QUOTE_HATED_1_ON_TEAM_LONGTIMETOHATE ); + TacticalCharacterDialogue( bSoldierId3, QUOTE_HATED_1_ON_TEAM_LONGTIMETOHATE ); } } } @@ -1072,8 +1072,8 @@ void HandlePlayingQuoteWhenHiringNpc( UINT8 ubProfile ) BOOLEAN SayQuoteFromAllNewHiredMercButDoGastonLast( UINT8 ubProfile, UINT32 uiQuoteNum ) { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; SOLDIERTYPE *pSoldier=NULL; //Get an array of the mercs on the team diff --git a/Tactical/Ja25_Tactical.h b/Tactical/Ja25_Tactical.h index 9e1205f6..48d36b81 100644 --- a/Tactical/Ja25_Tactical.h +++ b/Tactical/Ja25_Tactical.h @@ -36,8 +36,8 @@ typedef struct extern BOOLEAN gfFirstTimeInGameHeliCrash; INT16 RandomProfileIdFromNewMercsOnPlayerTeam(); -INT16 RandomSoldierIdFromNewMercsOnPlayerTeam(); -UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( UINT8 *pSoldierIdArray, UINT8 *pProfileIdArray ); +SoldierID RandomSoldierIdFromNewMercsOnPlayerTeam(); +UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierID *pSoldierIdArray, UINT8 *pProfileIdArray ); BOOLEAN IsSoldierQualifiedMerc( SOLDIERTYPE *pSoldier ); BOOLEAN IsSoldierQualifiedInitialHireMerc( SOLDIERTYPE *pSoldier ); BOOLEAN IsSoldierQualifiedMercForSeeingPowerGenFan( SOLDIERTYPE *pSoldier ); @@ -46,10 +46,10 @@ BOOLEAN SayQuoteFromAllNewHiredMercButDoGastonLast( UINT8 ubProfile, UINT32 uiQu //Pass in an array of size NUM_MERCS_WITH_NEW_QUOTES, array will be filled with //random soldier IDs of the qualified mercs -UINT8 RandomArrayOfQualifiedMercs( UINT8 *pRandomSoldierIdArray ); +UINT8 RandomArrayOfQualifiedMercs( SoldierID *pRandomSoldierIdArray ); -extern UINT8 Get3RandomQualifiedMercs( UINT8 *pSoldierId1, UINT8 *pSoldierId2, UINT8 *pSoldierId3 ); +extern UINT8 Get3RandomQualifiedMercs( SoldierID *pSoldierId1, SoldierID *pSoldierId2, SoldierID *pSoldierId3 ); void HandleWhenCertainPercentageOfEnemiesDie(); @@ -154,4 +154,4 @@ extern void InitGridNoUB(); #endif -#endif +#endif diff --git a/Tactical/Keys.cpp b/Tactical/Keys.cpp index 0c489d7a..439b6dcf 100644 --- a/Tactical/Keys.cpp +++ b/Tactical/Keys.cpp @@ -1390,11 +1390,11 @@ DOOR_STATUS *GetDoorStatus( INT32 sGridNo ) BOOLEAN AllMercsLookForDoor( INT32 sGridNo, BOOLEAN fUpdateValue ) { - INT32 cnt, cnt2; - INT8 bDirs[ 8 ] = { NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST }; - SOLDIERTYPE *pSoldier; - DOOR_STATUS *pDoorStatus; - INT32 usNewGridNo; + INT32 cnt2; + INT8 bDirs[ 8 ] = { NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST }; + SOLDIERTYPE *pSoldier; + DOOR_STATUS *pDoorStatus; + INT32 usNewGridNo; // Get door pDoorStatus = GetDoorStatus( sGridNo ); @@ -1405,11 +1405,12 @@ BOOLEAN AllMercsLookForDoor( INT32 sGridNo, BOOLEAN fUpdateValue ) } // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // ATE: Ok, lets check for some basic things here! if ( pSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bActive && pSoldier->bInSector ) { @@ -2070,11 +2071,10 @@ BOOLEAN LoadKeyTableFromSaveedGameFile( HWFILE hFile, UINT32 uiSaveGameVersion ) void ExamineDoorsOnEnteringSector( ) { - INT32 cnt; - DOOR_STATUS *pDoorStatus; - SOLDIERTYPE *pSoldier; - BOOLEAN fOK = FALSE; - INT8 bTownId; + DOOR_STATUS *pDoorStatus; + SOLDIERTYPE *pSoldier; + BOOLEAN fOK = FALSE; + INT8 bTownId; // OK, only do this if conditions are met.... // If this is any omerta tow, don't do it... @@ -2093,10 +2093,11 @@ void ExamineDoorsOnEnteringSector( ) // there is at least one human being in that sector. // check for civ - cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; cnt++ ,pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { if ( pSoldier->bInSector ) @@ -2110,7 +2111,7 @@ void ExamineDoorsOnEnteringSector( ) // Let's do it! if ( fOK ) { - for ( cnt = 0; cnt < gubNumDoorStatus; cnt++ ) + for ( UINT8 cnt = 0; cnt < gubNumDoorStatus; cnt++ ) { pDoorStatus = &( gpDoorStatus[ cnt ] ); @@ -2126,12 +2127,11 @@ void ExamineDoorsOnEnteringSector( ) void HandleDoorsChangeWhenEnteringSectorCurrentlyLoaded( ) { - INT32 cnt; - DOOR_STATUS *pDoorStatus; - SOLDIERTYPE *pSoldier; - BOOLEAN fOK = FALSE; - INT32 iNumNewMercs = 0; - INT8 bTownId; + DOOR_STATUS *pDoorStatus; + SOLDIERTYPE *pSoldier; + BOOLEAN fOK = FALSE; + INT32 iNumNewMercs = 0; + INT8 bTownId; // OK, only do this if conditions are met.... @@ -2145,7 +2145,7 @@ void HandleDoorsChangeWhenEnteringSectorCurrentlyLoaded( ) // 1 ) there is at least one human being in that sector. // check for civ - cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; // Check time... if ( ( GetWorldTotalMin( ) - gTacticalStatus.uiTimeSinceLastInTactical ) < 30 ) @@ -2154,8 +2154,9 @@ void HandleDoorsChangeWhenEnteringSectorCurrentlyLoaded( ) } // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; cnt++ ,pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { fOK = TRUE; @@ -2165,8 +2166,9 @@ void HandleDoorsChangeWhenEnteringSectorCurrentlyLoaded( ) // Loop through our team now.... cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++ ,pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && gbMercIsNewInThisSector[ cnt ] ) { iNumNewMercs++; @@ -2182,7 +2184,7 @@ void HandleDoorsChangeWhenEnteringSectorCurrentlyLoaded( ) // Let's do it! if ( fOK ) { - for ( cnt = 0; cnt < gubNumDoorStatus; cnt++ ) + for ( UINT8 cnt = 0; cnt < gubNumDoorStatus; cnt++ ) { pDoorStatus = &( gpDoorStatus[ cnt ] ); diff --git a/Tactical/LOS.cpp b/Tactical/LOS.cpp index 2821976f..5d2bb763 100644 --- a/Tactical/LOS.cpp +++ b/Tactical/LOS.cpp @@ -2435,7 +2435,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr { FLOAT dStartZPos, dEndZPos; INT16 sX, sY, sX2, sY2; - UINT8 ubTargetID; + SoldierID ubTargetID; BOOLEAN fOk; CHECKF( pStartSoldier ); @@ -2455,7 +2455,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr if (ubTargetID != NOBODY) { // there's a merc there; do a soldier-to-soldier test - return( SoldierToSoldierLineOfSightTest( pStartSoldier, MercPtrs[ubTargetID], bAware, iTileSightLimit, LOS_POS, adjustForSight) ); + return( SoldierToSoldierLineOfSightTest( pStartSoldier, ubTargetID, bAware, iTileSightLimit, LOS_POS, adjustForSight) ); } // else... assume standing height dEndZPos = STANDING_LOS_POS + bLevel * HEIGHT_UNITS; @@ -3436,7 +3436,7 @@ BOOLEAN BulletHitMerc( BULLET * pBullet, STRUCTURE * pStructure, BOOLEAN fIntend // be legal, but the bLevel May change... sNewGridNo = NewGridNo( pBullet->sGridNo, DirectionInc( gOppositeDirection[ SWeaponHit.usDirection ] ) ); - bSpewBloodLevel = MercPtrs[ SWeaponHit.usSoldierID ]->pathing.bLevel; + bSpewBloodLevel = SWeaponHit.usSoldierID->pathing.bLevel; fCanSpewBlood = TRUE; // If on anything other than bLevel of 0, we can pretty much freely spew blood @@ -4390,7 +4390,7 @@ UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, S return( ChanceToGetThrough( pStartSoldier, (FLOAT) sX, (FLOAT) sY, dEndZPos ) ); } -UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT8 ubTargetID ) +UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, SoldierID ubTargetID ) { FLOAT dEndZPos; INT16 sXPos; @@ -4640,7 +4640,7 @@ void CalculateFiringIncrementsSimple( DOUBLE ddHorizAngle, DOUBLE ddVerticAngle, pBullet->qIncrZ = FloatToFixed( (FLOAT) ( sin( ddVerticAngle ) / sin( (PI/2) - ddVerticAngle ) * HEIGHTUNITS_PER_CELL ) );//dnl ch60 010913 } -INT8 FireBullet( UINT8 ubFirer, BULLET * pBullet, BOOLEAN fFake ) +INT8 FireBullet( SoldierID ubFirer, BULLET * pBullet, BOOLEAN fFake ) { //DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("FireBullet")); @@ -4654,7 +4654,7 @@ INT8 FireBullet( UINT8 ubFirer, BULLET * pBullet, BOOLEAN fFake ) pBullet->sGridNo = MAPROWCOLTOPOS( pBullet->iCurrTileY, pBullet->iCurrTileX ); if ( ubFirer != NOBODY ) - pBullet->pFirer = MercPtrs[ ubFirer ]; + pBullet->pFirer = ubFirer; else pBullet->pFirer = NULL; @@ -4907,7 +4907,7 @@ INT8 FireBulletGivenTargetNCTH( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, ubImpact = (UINT8) (ubImpact * AmmoTypes[weapon->gun.ubGunAmmoType].multipleBulletDamageMultiplier / max(1,AmmoTypes[weapon->gun.ubGunAmmoType].multipleBulletDamageDivisor) ); if (pFirer->ubTargetID != NOBODY) { - MercPtrs[ pFirer->ubTargetID ]->bNumPelletsHitBy = 0; + pFirer->ubTargetID->bNumPelletsHitBy = 0; } } weapon=NULL; @@ -5435,7 +5435,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA ubImpact = (UINT8) (ubImpact * AmmoTypes[weapon->gun.ubGunAmmoType].multipleBulletDamageMultiplier / max(1,AmmoTypes[weapon->gun.ubGunAmmoType].multipleBulletDamageDivisor) ); if (pFirer->ubTargetID != NOBODY) { - MercPtrs[ pFirer->ubTargetID ]->bNumPelletsHitBy = 0; + pFirer->ubTargetID->bNumPelletsHitBy = 0; } } weapon=NULL; @@ -5639,7 +5639,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA fprintf(OutFile, "{ % 9.8f , % 9.8f , % 9.8f , % 9.8f }, //DEBUG: merc %4d fired pellet %4d of %4d using method %4d %12s with SpreadPattern %4d %s\n", ddRawHorizAngle, ddRawVerticAngle, ddHorizAngle, ddVerticAngle, - pFirer->ubID, ubLoop, ubShots, + pFirer->ubID.i, ubLoop, ubShots, gpSpreadPattern[ubSpreadIndex].method, gSpreadPatternMethodNames[gpSpreadPattern[ubSpreadIndex].method], ubSpreadIndex, gpSpreadPattern[ubSpreadIndex].Name ); @@ -5775,7 +5775,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA // Note that this function does not make provisions for Fake Firing. There is no need for it, and it would needlessly // complicate things anyway. // Also note we receive start coordinates from the bomb itself, because there's nowhere else to get them. -INT8 FireFragmentGivenTarget( UINT8 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ) +INT8 FireFragmentGivenTarget( SoldierID ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ) { // Artificial... dStartZ++; @@ -6284,7 +6284,7 @@ INT8 FireBulletGivenTargetTrapOnly( SOLDIERTYPE* pThrower, OBJECTTYPE* pObj, INT fprintf(OutFile, "{ % 9.8f , % 9.8f , % 9.8f , % 9.8f }, //DEBUG: merc %4d fired pellet %4d of %4d using method %4d %12s with SpreadPattern %4d %s\n", ddRawHorizAngle, ddRawVerticAngle, ddHorizAngle, ddVerticAngle, - NOBODY, ubLoop, ubShots, + NOBODY.i, ubLoop, ubShots, gpSpreadPattern[ubSpreadIndex].method, gSpreadPatternMethodNames[gpSpreadPattern[ubSpreadIndex].method], ubSpreadIndex, gpSpreadPattern[ubSpreadIndex].Name ); @@ -6834,7 +6834,7 @@ INT8 FireBulletGivenTarget_NoObjectNoSoldier( UINT16 usItem, UINT8 ammotype, UIN fprintf( OutFile, "{ % 9.8f , % 9.8f , % 9.8f , % 9.8f }, //DEBUG: merc %4d fired pellet %4d of %4d using method %4d %12s with SpreadPattern %4d %s\n", ddRawHorizAngle, ddRawVerticAngle, ddHorizAngle, ddVerticAngle, - NOBODY, ubLoop, ubShots, + NOBODY.i, ubLoop, ubShots, gpSpreadPattern[ubSpreadIndex].method, gSpreadPatternMethodNames[gpSpreadPattern[ubSpreadIndex].method], ubSpreadIndex, gpSpreadPattern[ubSpreadIndex].Name ); @@ -6951,7 +6951,7 @@ INT8 ChanceToGetThrough(SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dE // sevenfm: additionally initialize usAttackingWeapon, ubTargetID, bDoBurst and bDoAutofire which are used by FireBulletGivenTarget() UINT16 oldAttackingWeapon = pFirer->usAttackingWeapon; UINT8 oldAttackingHand = pFirer->ubAttackingHand; - UINT8 oldTargetID = pFirer->ubTargetID; + SoldierID oldTargetID = pFirer->ubTargetID; INT8 oldBurst = pFirer->bDoBurst; INT8 oldAutofire = pFirer->bDoAutofire; @@ -6986,9 +6986,8 @@ INT8 ChanceToGetThrough(SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dE void MoveBullet( INT32 iBullet ) { - BULLET *pBullet; - - FIXEDPT qLandHeight; + BULLET *pBullet; + FIXEDPT qLandHeight; INT32 iCurrAboveLevelZ; INT32 iCurrCubesAboveLevelZ; INT16 sDesiredLevel; @@ -6997,48 +6996,48 @@ void MoveBullet( INT32 iBullet ) INT32 iOldTileY; INT32 iOldCubesZ; - MAP_ELEMENT * pMapElement; - STRUCTURE * pStructure; - STRUCTURE * pRoofStructure = NULL; + MAP_ELEMENT *pMapElement; + STRUCTURE *pStructure; + STRUCTURE *pRoofStructure = NULL; - FIXEDPT qLastZ; + FIXEDPT qLastZ; - SOLDIERTYPE * pTarget; - UINT8 ubTargetID; - BOOLEAN fIntended; - BOOLEAN fStopped; - INT8 bOldLOSIndexX; - INT8 bOldLOSIndexY; + SOLDIERTYPE *pTarget; + SoldierID ubTargetID; + BOOLEAN fIntended; + BOOLEAN fStopped; + INT8 bOldLOSIndexX; + INT8 bOldLOSIndexY; - UINT32 uiTileInc = 0; - UINT32 uiTime; + UINT32 uiTileInc = 0; + UINT32 uiTime; - INT8 bDir; - INT32 iGridNo, iAdjGridNo; + INT8 bDir; + INT32 iGridNo, iAdjGridNo; - INT32 iRemainingImpact; + INT32 iRemainingImpact; - FIXEDPT qDistToTravelX; - FIXEDPT qDistToTravelY; - INT32 iStepsToTravelX; - INT32 iStepsToTravelY; - INT32 iStepsToTravel; + FIXEDPT qDistToTravelX; + FIXEDPT qDistToTravelY; + INT32 iStepsToTravelX; + INT32 iStepsToTravelY; + INT32 iStepsToTravel; - INT32 iNumLocalStructures; - INT32 iStructureLoop; - UINT32 uiChanceOfHit; + INT32 iNumLocalStructures; + INT32 iStructureLoop; + UINT32 uiChanceOfHit; - BOOLEAN fResolveHit; + BOOLEAN fResolveHit; - INT32 i; - BOOLEAN fGoingOver = FALSE; - BOOLEAN fHitStructure; + INT32 i; + BOOLEAN fGoingOver = FALSE; + BOOLEAN fHitStructure; - FIXEDPT qWallHeight; - FIXEDPT qWindowBottomHeight; - FIXEDPT qWindowTopHeight; + FIXEDPT qWallHeight; + FIXEDPT qWindowBottomHeight; + FIXEDPT qWindowTopHeight; - UINT16 lastriotshieldholder = NOBODY; // added by Flugente + SoldierID lastriotshieldholder = NOBODY; // added by Flugente pBullet = GetBulletPtr( iBullet ); @@ -7224,8 +7223,10 @@ void MoveBullet( INT32 iBullet ) } else if (pStructure->fFlags & STRUCTURE_PERSON) { + SOLDIERTYPE *pSoldier = MercPtrs[pStructure->usStructureID]; + // HEADROCK HAM 5: Fragments can hit the shooter. - if ( MercPtrs[ pStructure->usStructureID ] != pBullet->pFirer || pBullet->fFragment == TRUE ) + if ( pSoldier != pBullet->pFirer || pBullet->fFragment == TRUE ) { // in actually moving the bullet, we consider only count friends as targets if the bullet is unaimed // (buckshot), if they are the intended target, or beyond the range of automatic friendly fire hits @@ -7244,13 +7245,13 @@ void MoveBullet( INT32 iBullet ) else if ( pBullet->pFirer->flags.uiStatusFlags & SOLDIER_MONSTER ) { // monsters firing will always accidentally hit people but never accidentally hit each other. - if ( !(MercPtrs[ pStructure->usStructureID ]->flags.uiStatusFlags & SOLDIER_MONSTER) ) + if ( !(pSoldier->flags.uiStatusFlags & SOLDIER_MONSTER) ) { gpLocalStructure[iNumLocalStructures] = pStructure; iNumLocalStructures++; } } - else if (MercPtrs[pStructure->usStructureID]->bVisible == TRUE && + else if (pSoldier->bVisible == TRUE && PositionAllowsHit(pBullet, pStructure) && (pBullet->fAimed && pBullet->iLoop > MIN_DIST_FOR_HIT_FRIENDS || !pBullet->fAimed && pBullet->iLoop > MIN_DIST_FOR_HIT_FRIENDS_UNAIMED || @@ -7262,16 +7263,16 @@ void MoveBullet( INT32 iBullet ) } // this might be a close call - if ( pBullet->ubFirerID != NOBODY && MercPtrs[ pStructure->usStructureID ]->bTeam == gbPlayerNum && pBullet->pFirer->bTeam != gbPlayerNum && sDesiredLevel == MercPtrs[ pStructure->usStructureID ]->pathing.bLevel ) + if ( pBullet->ubFirerID != NOBODY && pSoldier->bTeam == gbPlayerNum && pBullet->pFirer->bTeam != gbPlayerNum && sDesiredLevel == pSoldier->pathing.bLevel ) { - MercPtrs[ pStructure->usStructureID ]->flags.fCloseCall = TRUE; + pSoldier->flags.fCloseCall = TRUE; } - if ( IS_MERC_BODY_TYPE( MercPtrs[pStructure->usStructureID] ) ) + if ( IS_MERC_BODY_TYPE( pSoldier ) ) { // apply suppression, regardless of friendly or enemy // except if friendly, not within a few tiles of shooter - if (pBullet->ubFirerID == NOBODY || MercPtrs[pStructure->usStructureID]->bSide != pBullet->pFirer->bSide || pBullet->iLoop > gGameExternalOptions.usMinDistanceFriendlySuppression) + if (pBullet->ubFirerID == NOBODY || pSoldier->bSide != pBullet->pFirer->bSide || pBullet->iLoop > gGameExternalOptions.usMinDistanceFriendlySuppression) { // buckshot has only a 1 in 2 chance of applying a suppression point // HEADROCK HAM 5: For NCTH, make pellets as effective as any other bullet. @@ -7280,7 +7281,7 @@ void MoveBullet( INT32 iBullet ) if (!(pBullet->usFlags & BULLET_FLAG_BUCKSHOT) || Chance(gGameExternalOptions.ubBuckshotSuppressionEffectiveness)) { // bullet goes whizzing by this guy! - switch ( gAnimControl[ MercPtrs[pStructure->usStructureID]->usAnimState ].ubEndHeight ) + switch ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight ) { case ANIM_PRONE: // two 1/4 chances of avoiding suppression pt - one below @@ -7297,8 +7298,8 @@ void MoveBullet( INT32 iBullet ) } // else fall through default: - MercPtrs[pStructure->usStructureID]->ubSuppressionPoints++; - MercPtrs[pStructure->usStructureID]->ubSuppressorID = pBullet->ubFirerID; + pSoldier->ubSuppressionPoints++; + pSoldier->ubSuppressorID = pBullet->ubFirerID; break; } } @@ -7358,7 +7359,7 @@ void MoveBullet( INT32 iBullet ) ubTargetID = WhoIsThere2( iAdjGridNo, (INT8) sDesiredLevel ); if (ubTargetID != NOBODY) { - pTarget = MercPtrs[ ubTargetID ]; + pTarget = ubTargetID; if ( IS_MERC_BODY_TYPE( pTarget ) && (pBullet->ubFirerID == NOBODY || pBullet->pFirer->bSide != pTarget->bSide) ) { // buckshot has only a 1 in 2 chance of applying a suppression point @@ -9911,7 +9912,7 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT // If we can't see the target, but buddies can see it, CF-Accuracy drops by 50% // If we can't see the target and neither can buddies, CF-Accuracy drops by 75% - UINT8 ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID + SoldierID ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID INT16 sDistVis = pShooter->GetMaxDistanceVisible(pShooter->sTargetGridNo, pShooter->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE; gbForceWeaponNotReady = true; INT16 sDistVisNoScope = pShooter->GetMaxDistanceVisible(pShooter->sTargetGridNo, pShooter->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE; @@ -9920,12 +9921,12 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT INT32 iSightRange = 0; if (ubTargetID != NOBODY) - iSightRange = SoldierToSoldierLineOfSightTest( pShooter, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false ); + iSightRange = SoldierToSoldierLineOfSightTest( pShooter, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false ); if (iSightRange == 0) { // didn't do a bodypart-based test or can't see specific body part aimed at iSightRange = SoldierTo3DLocationLineOfSightTest( pShooter, pShooter->sTargetGridNo, pShooter->bTargetLevel, pShooter->bTargetCubeLevel, TRUE, NO_DISTANCE_LIMIT, false ); } if (iSightRange == 0) { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties - iSightRange = SoldierToSoldierLineOfSightTest( pShooter, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false, true ); + iSightRange = SoldierToSoldierLineOfSightTest( pShooter, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false, true ); } // Modify iSightRange for scope use diff --git a/Tactical/LOS.h b/Tactical/LOS.h index 41748872..69e03f0e 100644 --- a/Tactical/LOS.h +++ b/Tactical/LOS.h @@ -69,7 +69,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA // HEADROCK HAM 4: Changed the name of one argument to avoid confusion with the new CTH system. INT8 FireBulletGivenTargetNCTH( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usHandItem, INT16 sApertureRatio, BOOLEAN fBuckshot, BOOLEAN fFake ); // HEADROCK HAM 5: Function for fragments ejected from an explosion. -INT8 FireFragmentGivenTarget( UINT8 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ); +INT8 FireFragmentGivenTarget( SoldierID ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ); // Flugente: fire a shot from a gun that has no user (used for traps with attached guns) INT8 FireBulletGivenTargetTrapOnly( SOLDIERTYPE* pThrower, OBJECTTYPE* pObj, INT32 gridno, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, INT16 sHitBy); @@ -152,7 +152,7 @@ UINT8 SoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTY UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, UINT8 ubAimLocation ); UINT8 AISoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier ); UINT8 AISoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel ); -UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT8 ubTargetID ); +UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, SoldierID ubTargetID ); INT32 SoldierToLocationWindowTest( SOLDIERTYPE * pStartSoldier, INT32 sEndGridNo ); // sevenfm: AI LOS functions INT32 LOS_Raised(SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, int iTileSightLimit = CALC_FROM_ALL_DIRS, UINT8 ubAimLocation = LOS_POS); @@ -261,4 +261,4 @@ void DamageRiotShield( SOLDIERTYPE* pSoldier, INT32& rsDamage, INT32& rsSecondar extern INT8 GetStealth(SOLDIERTYPE* pSoldier); extern INT8 GetSightAdjustmentBasedOnLBE(SOLDIERTYPE* pSoldier); -#endif +#endif diff --git a/Tactical/Merc Entering.cpp b/Tactical/Merc Entering.cpp index 003052e2..2ca82669 100644 --- a/Tactical/Merc Entering.cpp +++ b/Tactical/Merc Entering.cpp @@ -355,7 +355,7 @@ UINT8 ubHeliScripts[ NUM_HELI_STATES ][ MAX_HELI_SCRIPT ] = BOOLEAN gfHandleHeli = FALSE; -UINT8 gusHeliSeats[ MAX_MERC_IN_HELI ]; +SoldierID gusHeliSeats[ MAX_MERC_IN_HELI ]; INT8 gbNumHeliSeatsOccupied = 0; BOOLEAN gfFirstGuyDown = FALSE; @@ -392,7 +392,7 @@ void ResetHeliSeats( ) gbNumHeliSeatsOccupied = 0; } -void AddMercToHeli( UINT8 ubID ) +void AddMercToHeli( SoldierID ubID ) { if ( gbNumHeliSeatsOccupied < MAX_MERC_IN_HELI ) { @@ -502,21 +502,21 @@ void HandleHeliDrop( BOOLEAN fPlayer ) { // Add merc to sector #ifdef JA2UB - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; #else - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; #endif // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[ gusHeliSeats[ cnt ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); + UpdateMercInSector( gusHeliSeats[ cnt ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); // Check for merc arrives quotes... - HandleMercArrivesQuotes( MercPtrs[ gusHeliSeats[ cnt ] ] ); + HandleMercArrivesQuotes( gusHeliSeats[ cnt ] ); - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ cnt ] ]->GetName() ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ cnt ]->GetName() ); } @@ -558,23 +558,23 @@ void HandleHeliDrop( BOOLEAN fPlayer ) { // Add merc to sector #ifdef JA2UB - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO; #else - //MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; - MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + //gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH; + gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; // sevenfm: if soldiers land into enemy sector, use gsGridNoSweetSpot - //MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; - MercPtrs[gusHeliSeats[cnt]]->usStrategicInsertionData = gsGridNoSweetSpot; + //gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation; + gusHeliSeats[ cnt ]->usStrategicInsertionData = gsGridNoSweetSpot; #endif // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[ gusHeliSeats[ cnt ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); + UpdateMercInSector( gusHeliSeats[ cnt ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); // Check for merc arrives quotes... - HandleMercArrivesQuotes( MercPtrs[ gusHeliSeats[ cnt ] ] ); + HandleMercArrivesQuotes( gusHeliSeats[ cnt ] ); - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ cnt ] ]->GetName() ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ cnt ]->GetName() ); } // Remove heli @@ -698,24 +698,24 @@ void HandleHeliDrop( BOOLEAN fPlayer ) { // Flugente: it is now possible to use airdrops with soldiers after they have arrived in Arulco. In that case, they might have an animation that breaks EVENT_InitNewSoldierAnim prematurely. // In the worst case, this can cause the game to be unable to finish the airdrop. For that reason, we set all those soldiers to the STANDING animation. - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usAnimState = STANDING; - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->EVENT_InitNewSoldierAnim( HELIDROP, 0 , FALSE ); + gusHeliSeats[ gbCurDrop ]->usAnimState = STANDING; + gusHeliSeats[ gbCurDrop ]->EVENT_InitNewSoldierAnim( HELIDROP, 0 , FALSE ); // Change insertion code - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usStrategicInsertionData = gsGridNoSweetSpot; + gusHeliSeats[ gbCurDrop ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[ gbCurDrop ]->usStrategicInsertionData = gsGridNoSweetSpot; // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[ gusHeliSeats[ gbCurDrop ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); - //EVENT_SetSoldierPosition( MercPtrs[ gusHeliSeats[ gbCurDrop ] ], sWorldX, sWorldY ); + UpdateMercInSector( gusHeliSeats[ gbCurDrop ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ ); + //EVENT_SetSoldierPosition( gusHeliSeats[ gbCurDrop ], sWorldX, sWorldY ); // IF the first guy down, set squad! if ( gfFirstGuyDown ) { gfFirstGuyDown = FALSE; - SetCurrentSquad( MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->bAssignment, TRUE ); + SetCurrentSquad( gusHeliSeats[ gbCurDrop ]->bAssignment, TRUE ); } - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->GetName() ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ gbCurDrop ]->GetName() ); ++gbCurDrop; @@ -1024,7 +1024,7 @@ void HandleFirstHeliDropOfGame( ) CharacterDialogueWithSpecialEvent( 0, 0, 0, DIALOGUE_TACTICAL_UI , FALSE , FALSE , DIALOGUE_SPECIAL_EVENT_ENABLE_AI ,0, 0 ); } -UINT8 SpawnAirDropElite( INT32 sGridNo ) +SoldierID SpawnAirDropElite( INT32 sGridNo ) { SOLDIERTYPE *pSoldier; @@ -1076,7 +1076,7 @@ void InitiateEnemyAirDropSoldiers( INT32 sGridNo ) for ( int i = 0; i < 6; ++i ) { - UINT8 id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i ); + SoldierID id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i ); if ( id == NOBODY ) return; @@ -1192,23 +1192,23 @@ void HandleEnemyAirdrop( ) { // Flugente: it is now possible to use airdrops with soldiers after they have arrived in Arulco. In that case, they might have an animation that breaks EVENT_InitNewSoldierAnim prematurely. // In the worst case, this can cause the game to be unable to finish the airdrop. For that reason, we set all those soldiers to the STANDING aniamtion. - //MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usAnimState = STANDING; - MercPtrs[gusHeliSeats[gbCurDrop]]->EVENT_InitNewSoldierAnim( HELIDROP, 0, FALSE ); + //gusHeliSeats[ gbCurDrop ]->usAnimState = STANDING; + gusHeliSeats[gbCurDrop]->EVENT_InitNewSoldierAnim( HELIDROP, 0, FALSE ); // Change insertion code - MercPtrs[gusHeliSeats[gbCurDrop]]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; - MercPtrs[gusHeliSeats[gbCurDrop]]->usStrategicInsertionData = gsGridNoSweetSpot; + gusHeliSeats[gbCurDrop]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; + gusHeliSeats[gbCurDrop]->usStrategicInsertionData = gsGridNoSweetSpot; // HEADROCK HAM 3.5: Externalized! - UpdateMercInSector( MercPtrs[gusHeliSeats[gbCurDrop]], gWorldSectorX, gWorldSectorY, startingZ ); + UpdateMercInSector( gusHeliSeats[gbCurDrop], gWorldSectorX, gWorldSectorY, startingZ ); // IF the first guy down, set squad! if ( gfFirstGuyDown ) { gfFirstGuyDown = FALSE; - //SetCurrentSquad( MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->bAssignment, TRUE ); + //SetCurrentSquad( gusHeliSeats[ gbCurDrop ]->bAssignment, TRUE ); } - ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[MERC_HAS_ARRIVED_STR], MercPtrs[gusHeliSeats[gbCurDrop]]->GetName( ) ); + ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[MERC_HAS_ARRIVED_STR], gusHeliSeats[gbCurDrop]->GetName( ) ); ++gbCurDrop; diff --git a/Tactical/Merc Hiring.cpp b/Tactical/Merc Hiring.cpp index 154b7351..202ec1fb 100644 --- a/Tactical/Merc Hiring.cpp +++ b/Tactical/Merc Hiring.cpp @@ -127,7 +127,7 @@ UINT16 GetInitialHeliRandomTime(); INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) { SOLDIERTYPE *pSoldier; - UINT8 iNewIndex; + SoldierID iNewIndex; UINT8 ubCurrentSoldier = pHireMerc->ubProfileID; MERCPROFILESTRUCT *pMerc; SOLDIERCREATE_STRUCT MercCreateStruct; @@ -211,18 +211,18 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) // make an objecttype CreateItem(LETTER, 100, &gTempObject); // Give it - fReturn = AutoPlaceObject( MercPtrs[iNewIndex], &gTempObject, FALSE ); + fReturn = AutoPlaceObject( iNewIndex, &gTempObject, FALSE ); // CHRISL: This condition should resolve the issue of the letter not being issued to the first merc if(!fReturn) { if (UsingNewInventorySystem()) { - (MercPtrs[iNewIndex]->inv[NUM_INV_SLOTS-1]) = gTempObject; + (iNewIndex->inv[NUM_INV_SLOTS-1]) = gTempObject; fReturn=TRUE; } else { - (MercPtrs[iNewIndex]->inv[SMALLPOCK8POS]) = gTempObject; + (iNewIndex->inv[SMALLPOCK8POS]) = gTempObject; fReturn = TRUE; } } @@ -239,7 +239,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) //record how long the merc will be gone for pMerc->bMercStatus = (UINT8)pHireMerc->iTotalContractLength; - pSoldier = &Menptr[iNewIndex]; + pSoldier = iNewIndex; //Copy over insertion data.... pSoldier->ubStrategicInsertionCode = pHireMerc->ubInsertionCode; @@ -425,7 +425,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) } -void MercArrivesCallback( UINT8 ubSoldierID ) +void MercArrivesCallback( SoldierID ubSoldierID ) { MERCPROFILESTRUCT *pMerc; SOLDIERTYPE *pSoldier; @@ -457,7 +457,7 @@ void MercArrivesCallback( UINT8 ubSoldierID ) // stop time compression until player restarts it StopTimeCompression(); - pSoldier = &Menptr[ ubSoldierID ]; + pSoldier = ubSoldierID; pMerc = &gMercProfiles[ pSoldier->ubProfile ]; @@ -498,11 +498,11 @@ void MercArrivesCallback( UINT8 ubSoldierID ) { bool force_helidrop = true; SOLDIERTYPE *pTeamSoldier; - for (UINT8 cnt = 0; cnt < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; cnt++) + for (UINT16 cnt = 0; cnt < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; cnt++) { if (gCharactersList[cnt].fValid) { - pTeamSoldier = &Menptr[gCharactersList[cnt].usSolID]; + pTeamSoldier = gCharactersList[cnt].usSolID; if (pTeamSoldier != pSoldier && pTeamSoldier->bAssignment != ASSIGNMENT_DEAD && pTeamSoldier->bAssignment != ASSIGNMENT_POW && pTeamSoldier->bAssignment != IN_TRANSIT && pSoldier->ubStrategicInsertionCode != INSERTION_CODE_CHOPPER) { force_helidrop = false; @@ -671,12 +671,12 @@ BOOLEAN IsTheSoldierAliveAndConcious( SOLDIERTYPE *pSoldier ) return(FALSE); } -UINT8 NumberOfMercsOnPlayerTeam() +UINT16 NumberOfMercsOnPlayerTeam() { - INT8 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - UINT8 ubCount=0; + SoldierID cnt; + SOLDIERTYPE *pSoldier; + SoldierID bLastTeamID; + UINT16 ubCount=0; // Set locator to first merc cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -685,8 +685,9 @@ UINT8 NumberOfMercsOnPlayerTeam() if (! MercPtrs[cnt]) return 0; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pSoldier++) + for ( ; cnt <= bLastTeamID; ++cnt ) { + pSoldier = cnt; AssertNotNIL(pSoldier); //if the is active, and is not a vehicle @@ -702,9 +703,9 @@ UINT8 NumberOfMercsOnPlayerTeam() void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier ) { - UINT8 cnt, usLastTeamID; - INT8 bHated; - SOLDIERTYPE *pTeamSoldier; + SoldierID cnt, usLastTeamID; + INT8 bHated; + SOLDIERTYPE *pTeamSoldier; #ifdef JA2UB //if we are at the begining of the game going through the initial heli scequence if( pSoldier->fWaitingToGetupFromJA25Start ) @@ -730,8 +731,9 @@ void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier ) cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; usLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; //loop though all the mercs - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= usLastTeamID; ++cnt, ++pTeamSoldier) + for ( ; cnt <= usLastTeamID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive ) { if ( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) @@ -819,14 +821,13 @@ UINT32 GetMercArrivalTimeOfDay( ) void UpdateAnyInTransitMercsWithGlobalArrivalSector( ) { - INT32 cnt; SOLDIERTYPE *pSoldier; - - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { if ( pSoldier->bAssignment == IN_TRANSIT ) diff --git a/Tactical/Merc Hiring.h b/Tactical/Merc Hiring.h index 78dcf93b..a7366b48 100644 --- a/Tactical/Merc Hiring.h +++ b/Tactical/Merc Hiring.h @@ -46,10 +46,10 @@ extern INT16 gsMercArriveSectorY; INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc); -void MercArrivesCallback( UINT8 ubSoldierID ); +void MercArrivesCallback( SoldierID ubSoldierID ); BOOLEAN IsMercHireable( UINT8 ubMercID ); BOOLEAN IsMercDead( UINT8 ubMercID ); -UINT8 NumberOfMercsOnPlayerTeam(); +UINT16 NumberOfMercsOnPlayerTeam(); BOOLEAN IsTheSoldierAliveAndConcious( SOLDIERTYPE *pSoldier ); void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier ); void UpdateAnyInTransitMercsWithGlobalArrivalSector( ); diff --git a/Tactical/Militia Control.cpp b/Tactical/Militia Control.cpp index 52a2ea57..1960bb4d 100644 --- a/Tactical/Militia Control.cpp +++ b/Tactical/Militia Control.cpp @@ -176,12 +176,11 @@ void ResetMilitia() void RemoveMilitiaFromTactical() { SOLDIERINITNODE *curr; - INT32 i; - for( i = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; i <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; i++ ) + for( SoldierID id = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; id <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++id ) { - if( MercPtrs[ i ]->bActive ) + if( id->bActive ) { - TacticalRemoveSoldier( MercPtrs[ i ]->ubID ); + TacticalRemoveSoldier( id ); } } curr = gSoldierInitHead; @@ -199,7 +198,7 @@ void PrepareMilitiaForTactical( BOOLEAN fPrepareAll) { SECTORINFO *pSector; INT32 x; - UINT8 ubGreen, ubRegs, ubElites; + UINT16 ubGreen, ubRegs, ubElites; if( gbWorldSectorZ > 0 ) return; @@ -327,7 +326,6 @@ void PrepareMilitiaForTactical( BOOLEAN fPrepareAll) void HandleMilitiaPromotions( void ) { - UINT8 cnt; SOLDIERTYPE* pTeamSoldier; gbGreenToElitePromotions = 0; @@ -335,10 +333,11 @@ void HandleMilitiaPromotions( void ) gbRegToElitePromotions = 0; gbMilitiaPromotions = 0; - cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt, ++pTeamSoldier) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife > 0 ) { // Flugente: take care of promotions and individual militia update @@ -1422,13 +1421,14 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_ATTACK ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1459,13 +1459,14 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_HOLD ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1495,14 +1496,15 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_RETREAT ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; INT16 sActionGridNo; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1558,14 +1560,16 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_COMETOME ): if (fAllowSectorOrder) { - UINT8 cnt, ubDirection; + SoldierID cnt; + UINT8 ubDirection; INT32 sActionGridNo, sGridNo, sAdjustedGridNo; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1614,14 +1618,15 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_SPREAD ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; INT32 sActionGridNo; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1667,13 +1672,14 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_GETDOWN ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1705,13 +1711,14 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_CROUCH ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt, ++pTeamSoldier) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI @@ -1743,15 +1750,16 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_TAKE_COVER ): if (fAllowSectorOrder) { - UINT8 cnt; + SoldierID cnt; INT16 sActionGridNo; INT32 iDummy; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->stats.bLife >= OKLIFE) ) { // sevenfm: stop any AI diff --git a/Tactical/Morale.cpp b/Tactical/Morale.cpp index bd8c6fe9..bf8404cb 100644 --- a/Tactical/Morale.cpp +++ b/Tactical/Morale.cpp @@ -253,12 +253,13 @@ void DecayStrategicMorale( SOLDIERTYPE * pSoldier ) void DecayTacticalMoraleModifiers( void ) { SOLDIERTYPE * pSoldier; - UINT8 ubLoop, ubLoop2; + SoldierID ubLoop, ubLoop2; BOOLEAN fHandleNervous; ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pSoldier++ ) + for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop ) { + pSoldier = ubLoop; //if the merc is active, in Arulco // CJC: decay modifiers while asleep! or POW! if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && @@ -313,9 +314,10 @@ void DecayTacticalMoraleModifiers( void ) { // look for anyone else in same sector fHandleNervous = TRUE; - for ( ubLoop2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop2 <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop2++ ) + for ( ubLoop2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop2 <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop2 ) { - if ( MercPtrs[ ubLoop2 ] != pSoldier && MercPtrs[ ubLoop2 ]->bActive && MercPtrs[ ubLoop2 ]->sSectorX == pSoldier->sSectorX && MercPtrs[ ubLoop2 ]->sSectorY == pSoldier->sSectorY && MercPtrs[ ubLoop2 ]->bSectorZ == pSoldier->bSectorZ ) + SOLDIERTYPE *pSoldier2 = ubLoop2; + if ( pSoldier2 != pSoldier && pSoldier2->bActive && pSoldier2->sSectorX == pSoldier->sSectorX && pSoldier2->sSectorY == pSoldier->sSectorY && pSoldier2->bSectorZ == pSoldier->bSectorZ ) { // found someone! fHandleNervous = FALSE; @@ -360,11 +362,11 @@ void DecayTacticalMoraleModifiers( void ) void DecayStrategicMoraleModifiers( void ) { SOLDIERTYPE * pSoldier; - UINT8 ubLoop; + SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pSoldier++ ) + for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop ) { + pSoldier = ubLoop; //if the merc is active, in Arulco // CJC: decay modifiers while asleep! or POW! if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && @@ -726,9 +728,9 @@ void HandleMoraleEventForSoldier( SOLDIERTYPE * pSoldier, INT8 bMoraleEvent ) void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, INT16 sMapY, INT8 bMapZ ) { - UINT8 ubLoop; - SOLDIERTYPE * pTeamSoldier; - MERCPROFILESTRUCT * pProfile; + SoldierID id; + SOLDIERTYPE *pTeamSoldier; + MERCPROFILESTRUCT *pProfile; gfSomeoneSaidMoraleQuote = FALSE; @@ -776,9 +778,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I case MORALE_BATTLE_WON: // affects everyone to varying degrees - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive ) { if ( SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) ) @@ -795,9 +798,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I break; case MORALE_RAN_AWAY: // affects everyone to varying degrees - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive ) { // CJC: adding to SOLDIER_IN_SECTOR check special stuff because the old sector values might @@ -867,9 +871,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I case MORALE_MONSTER_QUEEN_KILLED: case MORALE_DEIDRANNA_KILLED: // affects everyone, everywhere - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive ) { if ( gGameOptions.fNewTraitSystem && bMoraleEvent != MORALE_DEIDRANNA_KILLED) @@ -896,9 +901,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I case MORALE_GREAT_MORALE: case MORALE_AIRSTRIKE: // affects every in sector - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive && SOLDIER_IN_SECTOR( pTeamSoldier, sMapX, sMapY, bMapZ ) ) { HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent ); @@ -911,9 +917,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I Assert( pSoldier ); // affects everyone - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive ) { HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent ); @@ -925,9 +932,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I Assert( pSoldier ); // affects everyone, in sector differently than not, extra bonuses if it's a buddy or hated merc - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE) { pProfile = &(gMercProfiles[ pTeamSoldier->ubProfile ]); @@ -980,9 +988,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I // female mercs get unhappy based on how sexist they are (=hate men) // gentlemen males get unhappy too - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive && pTeamSoldier->ubProfile != NO_PROFILE ) { if ( WhichHated( pTeamSoldier->ubProfile, pSoldier->ubProfile ) != -1 ) @@ -1042,9 +1051,10 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I case MORALE_ENEMYGROUP_COWARD: // affects coward in sector - ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pTeamSoldier = MercPtrs[ubLoop]; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++, pTeamSoldier++ ) + id = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( pTeamSoldier->bActive && (pTeamSoldier->sSectorX == sMapX) && (pTeamSoldier->sSectorY == sMapY) && (pTeamSoldier->bSectorZ == bMapZ) ) { if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) ) @@ -1140,28 +1150,28 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I void HourlyMoraleUpdate( void ) { - INT8 bMercID, bOtherID; - INT8 bActualTeamOpinion; - INT8 bTeamMoraleModChange, bTeamMoraleModDiff; - INT8 bOpinion=-1; - INT32 iTotalOpinions; - INT8 bNumTeamMembers; - INT8 bHighestTeamLeadership = 0; - INT8 bLastTeamID; - SOLDIERTYPE * pSoldier; - SOLDIERTYPE * pOtherSoldier; - MERCPROFILESTRUCT * pProfile; - BOOLEAN fSameGroupOnly; - static INT8 bStrategicMoraleUpdateCounter = 0; - BOOLEAN fFoundHated = FALSE; - INT8 bHated; + SoldierID bMercID, bOtherID, bLastTeamID; + INT8 bActualTeamOpinion; + INT8 bTeamMoraleModChange, bTeamMoraleModDiff; + INT8 bOpinion=-1; + INT32 iTotalOpinions; + INT8 bNumTeamMembers; + INT8 bHighestTeamLeadership = 0; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pOtherSoldier; + MERCPROFILESTRUCT *pProfile; + BOOLEAN fSameGroupOnly; + static INT8 bStrategicMoraleUpdateCounter = 0; + BOOLEAN fFoundHated = FALSE; + INT8 bHated; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // loop through all mercs to calculate their morale - for ( pSoldier = MercPtrs[ bMercID ]; bMercID <= bLastTeamID; ++bMercID,pSoldier++) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; //if the merc is active, in Arulco, and conscious, not POW if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && !(pSoldier->bAssignment == IN_TRANSIT || @@ -1193,8 +1203,9 @@ void HourlyMoraleUpdate( void ) // loop through all other mercs bOtherID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pOtherSoldier = MercPtrs[ bOtherID ]; bOtherID <= bLastTeamID; bOtherID++,pOtherSoldier++) + for ( ; bOtherID <= bLastTeamID; ++bOtherID ) { + pOtherSoldier = bOtherID; // skip past ourselves and all inactive mercs if (bOtherID != bMercID && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE && !(pOtherSoldier->bAssignment == IN_TRANSIT || @@ -1344,13 +1355,12 @@ void HourlyMoraleUpdate( void ) void HandleSnitchCheck( void ) { - UINT16 bMercID, bOtherID; - INT8 bOpinion = -1; - UINT16 bLastTeamID; - SOLDIERTYPE* pSoldier; - SOLDIERTYPE* pOtherSoldier; - MERCPROFILESTRUCT* pProfile; - BOOLEAN fSameGroupOnly; + SoldierID bMercID, bOtherID, bLastTeamID; + INT8 bOpinion = -1; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pOtherSoldier; + MERCPROFILESTRUCT *pProfile; + BOOLEAN fSameGroupOnly; // anv: save merc id and his negative morale event for snitches std::vector snitcheventvector; @@ -1358,8 +1368,9 @@ void HandleSnitchCheck( void ) bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; // loop through all mercs to calculate their morale - for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pSoldier++ ) + for ( ; bMercID <= bLastTeamID; ++bMercID ) { + pSoldier = bMercID; //if the merc is active, in Arulco, not POW, not a vehicle if ( pSoldier && pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && !(pSoldier->bAssignment == IN_TRANSIT || @@ -1382,8 +1393,9 @@ void HandleSnitchCheck( void ) } // loop through all other mercs bOtherID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pOtherSoldier = MercPtrs[bOtherID]; bOtherID <= bLastTeamID; ++bOtherID, pOtherSoldier++ ) + for ( ; bOtherID <= bLastTeamID; ++bOtherID ) { + pOtherSoldier = bOtherID; // skip past ourselves and all inactive mercs if ( bOtherID != bMercID && pOtherSoldier && pOtherSoldier->bActive && pOtherSoldier->ubProfile != NO_PROFILE && !(pOtherSoldier->bAssignment == IN_TRANSIT || @@ -1557,7 +1569,7 @@ void HandleSnitchesReports( std::vector& aVec ) void RememberSnitchableEvent( UINT8 ubTargetProfile, UINT8 ubSecondaryTargetProfile, BOOLEAN fSameGroupOnly, UINT8 ubEventType, std::vector& aVec ) { - UINT16 bSnitchID; + SoldierID bSnitchID; INT16 sSnitchingChance = 0; UINT8 ubSnitchProfile; SOLDIERTYPE * pSnitch; @@ -1569,8 +1581,9 @@ void RememberSnitchableEvent( UINT8 ubTargetProfile, UINT8 ubSecondaryTargetProf // loop through all other mercs bSnitchID = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pSnitch = MercPtrs[bSnitchID]; bSnitchID <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bSnitchID, pSnitch++ ) + for ( ; bSnitchID <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bSnitchID ) { + pSnitch = bSnitchID; ubSnitchProfile = pSnitch->ubProfile; // skip past ourselves and all inactive mercs if ( ProfileHasSkillTrait( ubSnitchProfile, SNITCH_NT ) && @@ -1702,10 +1715,10 @@ void DailyMoraleUpdate(SOLDIERTYPE *pSoldier) // Added by SANDRO BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier ) { - UINT32 uiLoop; - SOLDIERTYPE * pTeammate; - BOOLEAN fOneException = FALSE; - BOOLEAN fYesHeIs = FALSE; + SoldierID uiLoop; + SOLDIERTYPE *pTeammate; + BOOLEAN fOneException = FALSE; + BOOLEAN fYesHeIs = FALSE; if (!pSoldier) { @@ -1716,9 +1729,9 @@ BOOLEAN IsShowOffNearBy( SOLDIERTYPE * pSoldier ) return( FALSE ); } - for ( uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; uiLoop++) + for ( uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++uiLoop ) { - pTeammate = MercPtrs[ uiLoop ]; + pTeammate = uiLoop; if ( pTeammate == NULL ) { continue; diff --git a/Tactical/Overhead Types.h b/Tactical/Overhead Types.h index abe6f5e4..e7a8061a 100644 --- a/Tactical/Overhead Types.h +++ b/Tactical/Overhead Types.h @@ -32,7 +32,7 @@ //TACTICAL OVERHEAD STUFF //#define NO_SOLDIER TOTAL_SOLDIERS // SAME AS NOBODY //#define NOBODY NO_SOLDIER -#define NOBODY TOTAL_SOLDIERS +//#define NOBODY TOTAL_SOLDIERS @@ -277,31 +277,32 @@ const int startingZ = 0; // ENUMERATION OF SOLDIER POSIITONS IN GLOBAL SOLDIER LIST // WDS - make number of mercenaries, etc. be configurable -#define CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS 32 -extern UINT8 giMAXIMUM_NUMBER_OF_PLAYER_MERCS; +#define CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS 254 +extern UINT16 giMAXIMUM_NUMBER_OF_PLAYER_MERCS; #define CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES 6 -extern UINT8 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES; +extern UINT16 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES; #define CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS+CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES -extern UINT8 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; -#define CODE_MAXIMUM_NUMBER_OF_ENEMIES 64 -extern UINT8 giMAXIMUM_NUMBER_OF_ENEMIES; -#define CODE_MAXIMUM_NUMBER_OF_CREATURES 40 -extern UINT8 giMAXIMUM_NUMBER_OF_CREATURES; -#define CODE_MAXIMUM_NUMBER_OF_REBELS 64 -extern UINT8 giMAXIMUM_NUMBER_OF_REBELS; -#define CODE_MAXIMUM_NUMBER_OF_CIVS 40 -extern UINT8 giMAXIMUM_NUMBER_OF_CIVS; +extern UINT16 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; +#define CODE_MAXIMUM_NUMBER_OF_ENEMIES 256 +extern UINT16 giMAXIMUM_NUMBER_OF_ENEMIES; +#define CODE_MAXIMUM_NUMBER_OF_CREATURES 256 +extern UINT16 giMAXIMUM_NUMBER_OF_CREATURES; +#define CODE_MAXIMUM_NUMBER_OF_REBELS 256 +extern UINT16 giMAXIMUM_NUMBER_OF_REBELS; +#define CODE_MAXIMUM_NUMBER_OF_CIVS 256 +extern UINT16 giMAXIMUM_NUMBER_OF_CIVS; // The following should be the largest from the above set of constants. // Note: Is there any way to compute this via the preprocessor? -#define LARGEST_NUMBER_IN_ANY_GROUP 64 +#define LARGEST_NUMBER_IN_ANY_GROUP 260 #define MAX_NUM_SOLDIERS (CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS+CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES+CODE_MAXIMUM_NUMBER_OF_ENEMIES+CODE_MAXIMUM_NUMBER_OF_CREATURES+CODE_MAXIMUM_NUMBER_OF_REBELS+CODE_MAXIMUM_NUMBER_OF_CIVS) #define NUM_PLANNING_MERCS 8 -#define TOTAL_SOLDIERS ( NUM_PLANNING_MERCS + MAX_NUM_SOLDIERS ) +//#define TOTAL_SOLDIERS ( NUM_PLANNING_MERCS + MAX_NUM_SOLDIERS ) +#define TOTAL_SOLDIERS (MAX_NUM_SOLDIERS ) // If there are more than (one less the size of the field used to store IDs (currently a char)) then fail -#if TOTAL_SOLDIERS > 254 +#if TOTAL_SOLDIERS > 2048 #error Too many! #endif #if CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS > LARGEST_NUMBER_IN_ANY_GROUP @@ -360,7 +361,7 @@ typedef CHAR8 PaletteRepID[ 30 ]; typedef struct { UINT8 ubType; - PaletteRepID ID; + PaletteRepID ID; UINT8 ubPaletteSize; UINT8 *r; UINT8 *g; @@ -374,4 +375,116 @@ typedef struct // strcmp returns 0 if true! #define COMPARE_PALETTEREP_ID( a, b ) ( strcmp( a, b ) ? FALSE : TRUE ) + +struct SOLDIERTYPE; +extern SOLDIERTYPE *MercPtrs[TOTAL_SOLDIERS]; + +typedef struct SoldierID +{ + UINT16 i; + + // Implicit conversion and constructor to provide compatibility with unchanged code + // TODO: Remove once SoldierID is used everywhere and these are no longer needed + inline operator UINT16() const { return i; } + + constexpr SoldierID(const UINT16 val = TOTAL_SOLDIERS) : i(val) + { + // Limit the maximum value to TOTAL_SOLDIERS. Anything beyond that is invalid + if ( i > TOTAL_SOLDIERS ) + i = TOTAL_SOLDIERS; + } + constexpr SoldierID( const UINT32 val ) : i( val ) + { + // Limit the maximum value to TOTAL_SOLDIERS. Anything beyond that is invalid + if ( i > TOTAL_SOLDIERS ) + i = TOTAL_SOLDIERS; + } + constexpr SoldierID( const INT32 val ) : i( val ) + { + // Limit the maximum value to TOTAL_SOLDIERS. Anything beyond that is invalid + if ( i > TOTAL_SOLDIERS || i < 0) + i = TOTAL_SOLDIERS; + } + + // No conversions from 8-bit integers! + SoldierID( const UINT8 ) = delete; + SoldierID( const INT8 ) = delete; + + + SOLDIERTYPE* operator->() { return MercPtrs[i]; } + const SOLDIERTYPE* operator->() const { return MercPtrs[i]; } + inline operator SOLDIERTYPE* () { return MercPtrs[i]; } + inline operator const SOLDIERTYPE*() const { return MercPtrs[i]; } + inline SoldierID &operator++() + { + i++; + return *this; + } + inline SoldierID &operator--() + { + i--; + return *this; + } +} SoldierID; + +inline bool operator==(const SoldierID lhs, const SoldierID rhs) { return lhs.i == rhs.i; } +inline bool operator==(const SoldierID lhs, const int rhs) { return lhs.i == rhs; } +inline bool operator==(const SoldierID lhs, const UINT32 rhs) { return lhs.i == rhs; } +inline bool operator==(const SoldierID lhs, const UINT16 rhs) { return lhs.i == rhs; } +inline bool operator==(const SoldierID lhs, const INT16 rhs) { return lhs.i == rhs; } +inline bool operator==(const int lhs, const SoldierID rhs) { return lhs == rhs.i; } +inline bool operator==(const UINT16 lhs, const SoldierID rhs) { return lhs == rhs.i; } +inline bool operator==(const INT16 lhs, const SoldierID rhs) { return lhs == rhs.i; } + +inline bool operator!=(const SoldierID lhs, const SoldierID rhs) { return lhs.i != rhs.i; } +inline bool operator!=(const SoldierID lhs, const UINT32 rhs) { return lhs.i != rhs; } +inline bool operator!=(const SoldierID lhs, const UINT16 rhs) { return lhs.i != rhs; } +inline bool operator!=(const int lhs, const SoldierID rhs) { return lhs != rhs.i; } +inline bool operator!=(const UINT32 lhs, const SoldierID rhs) { return lhs != rhs.i; } +inline bool operator!=(const UINT16 lhs, const SoldierID rhs) { return lhs != rhs.i; } +inline bool operator!=(const INT16 lhs, const SoldierID rhs) { return lhs != rhs.i; } + +inline bool operator<(const SoldierID lhs, const SoldierID rhs) { return lhs.i < rhs.i; } +inline bool operator<(const SoldierID lhs, const int rhs) { return lhs.i < rhs; } +inline bool operator<(const SoldierID lhs, UINT16 rhs) { return lhs.i < rhs; } +inline bool operator<(const int lhs, const SoldierID rhs) { return lhs < rhs.i; } +inline bool operator<(const unsigned int lhs, const SoldierID rhs) { return lhs < rhs.i; } +inline bool operator<(const UINT16 lhs, const SoldierID rhs) { return lhs < rhs.i; } + +inline bool operator>(const SoldierID lhs, const SoldierID rhs) { return lhs.i > rhs.i; } +inline bool operator>(const SoldierID lhs, const int rhs) { return lhs.i > rhs; } +inline bool operator>(const int lhs, const SoldierID rhs) { return lhs > rhs.i; } +inline bool operator>(const UINT16 lhs, const SoldierID rhs) { return lhs > rhs.i; } + +inline bool operator<=(const SoldierID lhs, const SoldierID rhs) { return lhs.i <= rhs.i; } +inline bool operator<=(const SoldierID lhs, const int rhs) { return lhs.i <= rhs; } +inline bool operator<=(const SoldierID lhs, const UINT16 rhs) { return lhs.i <= rhs; } +inline bool operator<=(const int lhs, const SoldierID rhs) { return lhs <= rhs.i; } +inline bool operator<=(const UINT32 lhs, const SoldierID rhs) { return lhs <= rhs.i; } +inline bool operator<=(const UINT16 lhs, const SoldierID rhs) { return lhs <= rhs.i; } +inline bool operator<=(const INT16 lhs, const SoldierID rhs) { return lhs <= rhs.i; } + +inline bool operator>=(const SoldierID lhs, const SoldierID rhs) { return lhs.i >= rhs.i; } +inline bool operator>=(const SoldierID lhs, const int rhs) { return lhs.i >= rhs; } +inline bool operator>=(const SoldierID lhs, const UINT16 rhs) { return lhs.i >= rhs; } +inline bool operator>=(const int lhs, const SoldierID rhs) { return lhs >= rhs.i; } +inline bool operator>=(const unsigned int lhs, const SoldierID rhs) { return lhs >= rhs.i; } +inline bool operator>=(const UINT16 lhs, const SoldierID rhs) { return lhs >= rhs.i; } + +inline SoldierID operator-(const SoldierID lhs, const SoldierID rhs) { return SoldierID{ static_cast(lhs.i - rhs.i) }; } +inline SoldierID operator-(const SoldierID lhs, const int rhs) { return SoldierID{ static_cast(lhs.i - rhs) }; } +inline SoldierID operator-(const SoldierID lhs, const unsigned int rhs) { return SoldierID{ static_cast(lhs.i - rhs) }; } +inline SoldierID operator-(const SoldierID lhs, const UINT16 rhs) { return SoldierID{ static_cast(lhs.i - rhs) }; } +inline SoldierID operator-(const int lhs, const SoldierID rhs) { return SoldierID{ static_cast(lhs - rhs.i) }; } +inline SoldierID operator-(const unsigned int lhs, const SoldierID rhs) { return SoldierID{ static_cast(lhs - rhs.i) }; } + +inline SoldierID operator+(const SoldierID lhs, const SoldierID rhs) { return SoldierID{ static_cast(lhs.i + rhs.i) }; } +inline SoldierID operator+(const SoldierID lhs, const int rhs) { return SoldierID{ static_cast(lhs.i + rhs) }; } +inline SoldierID operator+(const SoldierID lhs, const unsigned int rhs) { return SoldierID{ static_cast(lhs.i + rhs) }; } +inline SoldierID operator+(const SoldierID lhs, const UINT16 rhs) { return SoldierID{ static_cast(lhs.i + rhs) }; } +inline SoldierID operator+(const unsigned int lhs, const SoldierID rhs) { return SoldierID{ static_cast(lhs + rhs.i) }; } +inline SoldierID operator+(const INT16 lhs, const SoldierID rhs) { return SoldierID{ static_cast(lhs + rhs.i) }; } + + +inline constexpr SoldierID NOBODY{ TOTAL_SOLDIERS }; #endif diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 1e54041a..dd79d2ad 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -138,19 +138,19 @@ #include "GameInitOptionsScreen.h" // OJW - 20090419 -UINT8 giMAXIMUM_NUMBER_OF_PLAYER_MERCS = CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS; -UINT8 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES = CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES; -UINT8 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS = CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS; -UINT8 giMAXIMUM_NUMBER_OF_ENEMIES = CODE_MAXIMUM_NUMBER_OF_ENEMIES; -UINT8 giMAXIMUM_NUMBER_OF_CREATURES = CODE_MAXIMUM_NUMBER_OF_CREATURES; -UINT8 giMAXIMUM_NUMBER_OF_REBELS = CODE_MAXIMUM_NUMBER_OF_REBELS; -UINT8 giMAXIMUM_NUMBER_OF_CIVS = CODE_MAXIMUM_NUMBER_OF_CIVS; +UINT16 giMAXIMUM_NUMBER_OF_PLAYER_MERCS = CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS; +UINT16 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES = CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES; +UINT16 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS = CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS; +UINT16 giMAXIMUM_NUMBER_OF_ENEMIES = CODE_MAXIMUM_NUMBER_OF_ENEMIES; +UINT16 giMAXIMUM_NUMBER_OF_CREATURES = CODE_MAXIMUM_NUMBER_OF_CREATURES; +UINT16 giMAXIMUM_NUMBER_OF_REBELS = CODE_MAXIMUM_NUMBER_OF_REBELS; +UINT16 giMAXIMUM_NUMBER_OF_CIVS = CODE_MAXIMUM_NUMBER_OF_CIVS; //forward declarations of common classes to eliminate includes class OBJECTTYPE; class SOLDIERTYPE; - +extern void HandleTBPickUpBackpacks(BOOLEAN fAll); extern void HandleBestSightingPositionInRealtime(); extern INT32 GetCurrentBalance( void ); @@ -274,11 +274,12 @@ UINT32 guiNumMercSlots = 0; SOLDIERTYPE* AwaySlots[ TOTAL_SOLDIERS ]; UINT32 guiNumAwaySlots = 0; + // DEF: changed to have client wait for gPlayerNum assigned from host UINT8 gbPlayerNum = 0; // Global for current selected soldier -UINT16 gusSelectedSoldier = NOBODY; +SoldierID gusSelectedSoldier = NOBODY; INT8 gbShowEnemies = FALSE; BOOLEAN gfMovingAnimation = FALSE; @@ -367,7 +368,7 @@ CHAR8 gzDirectionStr[][ 30 ] = }; // TEMP VALUES FOR TEAM DEFAULT POSITIONS -UINT8 bDefaultTeamRangesMP[ MAXTEAMS ][ 2 ] = +UINT16 bDefaultTeamRangesMP[ MAXTEAMS ][ 2 ] = { 0, 19, //20 US @@ -383,7 +384,7 @@ UINT8 bDefaultTeamRangesMP[ MAXTEAMS ][ 2 ] = MAX_NUM_SOLDIERS, TOTAL_SOLDIERS - 1 // PLANNING SOLDIERS }; -UINT8 bDefaultTeamRanges[ MAXTEAMS_SP ][ 2 ] = +UINT16 bDefaultTeamRanges[ MAXTEAMS_SP ][ 2 ] = { 0, CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS+CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES-1, @@ -415,16 +416,16 @@ COLORVAL bDefaultTeamColors[ MAXTEAMS ] = }; // UTILITY FUNCTIONS -INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); -UINT8 NumEnemyInSector( ); -UINT8 NumEnemyInSectorExceptCreatures(); -UINT8 NumCapableEnemyInSector( ); +UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); +UINT16 NumEnemyInSector( ); +UINT16 NumEnemyInSectorExceptCreatures(); +UINT16 NumCapableEnemyInSector( ); BOOLEAN KillIncompacitatedEnemyInSector( ); BOOLEAN CheckForLosingEndOfBattle( ); void EndBattleWithUnconsciousGuysCallback( UINT8 bExitValue ); -UINT8 NumEnemyInSectorNotDeadOrDying( ); -UINT8 NumBloodcatsInSectorNotDeadOrDying( ); +UINT16 NumEnemyInSectorNotDeadOrDying( ); +UINT16 NumBloodcatsInSectorNotDeadOrDying( ); UINT8 gubWaitingForAllMercsToExitCode = 0; UINT8 gusNumMercsUntilWaitingOver = 0; @@ -654,13 +655,14 @@ void ShutdownTacticalEngine( ) BOOLEAN InitOverhead( ) { UINT32 cnt; - UINT8 cnt2; // Set pointers list for( cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ ) { MercPtrs[ cnt ] = &Menptr[ cnt ]; MercPtrs[ cnt ]->bActive = FALSE; + // Zero out merc slots! + MercSlots[cnt] = NULL; } memset( &gTacticalStatus, 0, sizeof( TacticalStatusType ) ); UINT8 maxteams; @@ -748,17 +750,12 @@ BOOLEAN InitOverhead( ) gTacticalStatus.Team[ cnt ].bAwareOfOpposition = FALSE; // set team values in soldier structures for all who are on this team - for ( cnt2 = gTacticalStatus.Team[ cnt ].bFirstID; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; cnt2++ ) + for (SoldierID cnt2 = gTacticalStatus.Team[ cnt ].bFirstID; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; ++cnt2 ) { - MercPtrs[ cnt2 ]->bTeam = (INT8) cnt; + cnt2->bTeam = (INT8) cnt; } } - // Zero out merc slots! - for ( cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ ) - { - MercSlots[ cnt ] = NULL; - } // Set other tactical flags gTacticalStatus.uiFlags = TURNBASED | TRANSLUCENCY_TYPE; @@ -766,15 +763,15 @@ BOOLEAN InitOverhead( ) gTacticalStatus.uiTimeOfLastInput = GetJA2Clock(); gTacticalStatus.uiTimeSinceDemoOn = GetJA2Clock(); gTacticalStatus.uiCountdownToRestart = GetJA2Clock(); - gTacticalStatus.fGoingToEnterDemo = FALSE; - gTacticalStatus.fNOTDOLASTDEMO = FALSE; + gTacticalStatus.fGoingToEnterDemo = FALSE; + gTacticalStatus.fNOTDOLASTDEMO = FALSE; if (is_networked) - gTacticalStatus.fDidGameJustStart = FALSE; + gTacticalStatus.fDidGameJustStart = FALSE; else - gTacticalStatus.fDidGameJustStart = TRUE; + gTacticalStatus.fDidGameJustStart = TRUE; - gTacticalStatus.ubLastRequesterTargetID = NO_PROFILE; + gTacticalStatus.ubLastRequesterTargetID = NO_PROFILE; gTacticalStatus.ubLastRequesterSurgeryTargetID = NOBODY; // SANDRO - reset surgery requester too for ( cnt = 0; cnt < NUM_PANIC_TRIGGERS; cnt++ ) @@ -815,21 +812,21 @@ BOOLEAN ShutdownOverhead( ) return( TRUE ); } -BOOLEAN GetSoldier( SOLDIERTYPE **ppSoldier, UINT16 usSoldierIndex ) +BOOLEAN GetSoldier( SOLDIERTYPE **ppSoldier, SoldierID usSoldierIndex ) { // Check range of index given *ppSoldier = NULL; - if ( usSoldierIndex < 0 || usSoldierIndex > TOTAL_SOLDIERS-1 ) + if ( usSoldierIndex >= NOBODY ) { // Set debug message return( FALSE ); } // Check if a guy exists here // Does another soldier exist here? - if ( MercPtrs[ usSoldierIndex ]->bActive ) + if ( usSoldierIndex->bActive ) { // Set Existing guy - *ppSoldier = MercPtrs[ usSoldierIndex ]; + *ppSoldier = usSoldierIndex; return( TRUE); } else @@ -994,7 +991,7 @@ BOOLEAN ExecuteOverhead( ) // check if bonus militia join us if (checkBonusMilitia == TRUE && gGameExternalOptions.fRebelCommandEnabled && gubPBSectorZ == 0) { - UINT8 bonusGreenMilitia = 0, bonusRegularMilitia = 0, bonusEliteMilitia = 0; + UINT16 bonusGreenMilitia = 0, bonusRegularMilitia = 0, bonusEliteMilitia = 0; RebelCommand::GetBonusMilitia(gubPBSectorX, gubPBSectorY, bonusGreenMilitia, bonusRegularMilitia, bonusEliteMilitia, TRUE); checkBonusMilitia = FALSE; } @@ -1320,7 +1317,7 @@ BOOLEAN ExecuteOverhead( ) } // OK, if we are the selected soldier, refresh some UI stuff - if ( pSoldier->ubID == (UINT8)gusSelectedSoldier ) + if ( pSoldier->ubID == gusSelectedSoldier ) { gfUIRefreshArrows = TRUE; } @@ -1472,7 +1469,7 @@ BOOLEAN ExecuteOverhead( ) } else if ( pSoldier->aiData.ubPendingAction == MERC_TALK ) { - pSoldier->PlayerSoldierStartTalking( (UINT8)pSoldier->aiData.uiPendingActionData1, TRUE ); + pSoldier->PlayerSoldierStartTalking ( pSoldier->aiData.uiPendingActionData1, TRUE ); pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION; } else if ( pSoldier->aiData.ubPendingAction == MERC_DROPBOMB ) @@ -1491,12 +1488,10 @@ BOOLEAN ExecuteOverhead( ) } else // otherwise determine our target position { - SOLDIERTYPE *pTarget; - UINT16 usSoldierIndex; - usSoldierIndex = WhoIsThere2( pSoldier->aiData.sPendingActionData2, pSoldier->pathing.bLevel ); + SoldierID usSoldierIndex = WhoIsThere2( pSoldier->aiData.sPendingActionData2, pSoldier->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { - pTarget = MercPtrs[ usSoldierIndex ]; + SOLDIERTYPE* pTarget = usSoldierIndex; // we always need to crouch to prone target if ( gAnimControl[ pTarget->usAnimState ].ubEndHeight == ANIM_PRONE ) @@ -2280,14 +2275,13 @@ BOOLEAN HandleGotoNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving, BOOLE // IF not in combat, stop them all if ( !( gTacticalStatus.uiFlags & INCOMBAT ) ) { - INT32 cnt2; - SOLDIERTYPE *pSoldier2; - - cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SOLDIERTYPE *pSoldier2; + SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // look for all mercs on the same team, - for ( pSoldier2 = MercPtrs[ cnt2 ]; cnt2 >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt2-- ,pSoldier2-- ) + for ( ; id >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; --id ) { + pSoldier2 = id; if ( pSoldier2->bActive ) { pSoldier2->EVENT_StopMerc( pSoldier2->sGridNo, pSoldier2->ubDirection ); @@ -2987,14 +2981,13 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving ) // IF not in combat, stop them all if ( !( gTacticalStatus.uiFlags & INCOMBAT ) ) { - INT32 cnt2; - SOLDIERTYPE *pSoldier2; - - cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + SOLDIERTYPE *pSoldier2; + SoldierID cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bLastID; // look for all mercs on the same team, - for ( pSoldier2 = MercPtrs[ cnt2 ]; cnt2 >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt2-- ,pSoldier2-- ) + for ( ; cnt2 >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID; --cnt2 ) { + pSoldier2 = cnt2; if ( pSoldier2->bActive ) { pSoldier2->EVENT_StopMerc( pSoldier2->sGridNo, pSoldier2->ubDirection ); @@ -3234,17 +3227,17 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving ) void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier ) { - INT32 cnt; SOLDIERTYPE *pTeamSoldier; BOOLEAN fSoldierFound = FALSE; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SelectNextAvailSoldier")); // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; + SoldierID id = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++) + for ( ; id <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++id ) { + pTeamSoldier = id; if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) ) { fSoldierFound = TRUE; @@ -3255,7 +3248,7 @@ void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier ) if ( fSoldierFound ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SelectNextAvailSoldier: selectsoldier")); - SelectSoldier( (INT16)cnt, FALSE, FALSE ); + SelectSoldier( id, FALSE, FALSE ); } else { @@ -3270,9 +3263,9 @@ void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier ) -void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ) +void InternalSelectSoldier( SoldierID usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ) { - SOLDIERTYPE *pSoldier, *pOldSoldier; + SOLDIERTYPE *pSoldier, *pOldSoldier; // ARM: can't call SelectSoldier() in mapscreen, that will initialize interface panels!!! // ATE: Adjusted conditions a bit ( sometimes were not getting selected ) @@ -3295,7 +3288,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF // Get guy - pSoldier = MercPtrs[ usSoldierID ]; + pSoldier = usSoldierID; if( ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { @@ -3345,7 +3338,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF if ( gusSelectedSoldier != NOBODY ) { // Get guy - pOldSoldier = MercPtrs[ gusSelectedSoldier ]; + pOldSoldier = gusSelectedSoldier; pOldSoldier->flags.fShowLocator = FALSE; pOldSoldier->flags.fFlashLocator = FALSE; @@ -3367,7 +3360,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF UpdateForContOverPortrait( pOldSoldier, FALSE ); } - gusSelectedSoldier = (UINT16)usSoldierID; + gusSelectedSoldier = usSoldierID; // find which squad this guy is, then set selected squad to this guy if( pSoldier->bAssignment == VEHICLE ) @@ -3394,7 +3387,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF //pSoldier->SetCheckSoldierLightFlag( ); // Set interface to reflect new selection! - SetCurrentTacticalPanelCurrentMerc( (UINT8)usSoldierID ); + SetCurrentTacticalPanelCurrentMerc( usSoldierID ); // PLay ATTN SOUND if ( fAcknowledge ) @@ -3443,7 +3436,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF } -void SelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect ) +void SelectSoldier( SoldierID usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect ) { InternalSelectSoldier( usSoldierID, fAcknowledge, fForceReselect, FALSE ); } @@ -3451,18 +3444,16 @@ void SelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceRese BOOLEAN ResetAllAnimationCache( ) { - UINT32 cnt; - SOLDIERTYPE *pSoldier; + UINT16 cnt; + SOLDIERTYPE *pSoldier; // Loop through all mercs and make go for ( pSoldier = Menptr, cnt = 0; cnt < TOTAL_SOLDIERS; pSoldier++, cnt++ ) { if ( pSoldier != NULL ) { - InitAnimationCache( (UINT16)cnt, &(pSoldier->AnimCache) ); - + InitAnimationCache( pSoldier->ubID, &(pSoldier->AnimCache) ); } - } return( TRUE ); @@ -3471,7 +3462,7 @@ BOOLEAN ResetAllAnimationCache( ) -void LocateSoldier( UINT16 usID, BOOLEAN fSetLocator) +void LocateSoldier( SoldierID usID, BOOLEAN fSetLocator) { SOLDIERTYPE *pSoldier; INT16 sNewCenterWorldX, sNewCenterWorldY; @@ -3484,7 +3475,7 @@ void LocateSoldier( UINT16 usID, BOOLEAN fSetLocator) if (!SoldierOnScreen(usID) || fSetLocator == 10 ) { // Get pointer of soldier - pSoldier = MercPtrs[ usID ]; + pSoldier = usID; // Center on guy sNewCenterWorldX = (INT16)pSoldier->dXPos; @@ -3502,11 +3493,11 @@ void LocateSoldier( UINT16 usID, BOOLEAN fSetLocator) { if ( fSetLocator == SETLOCATOR || fSetLocator == 10 ) { - ShowRadioLocator((UINT8)usID, SHOW_LOCATOR_NORMAL ); + ShowRadioLocator(usID, SHOW_LOCATOR_NORMAL ); } else { - ShowRadioLocator((UINT8)usID, SHOW_LOCATOR_FAST ); + ShowRadioLocator(usID, SHOW_LOCATOR_FAST ); } } } @@ -3534,11 +3525,8 @@ void LocateGridNo( INT32 sGridNo ) -void SlideTo(INT32 sGridNo, UINT16 usSoldierID , UINT16 usReasonID, BOOLEAN fSetLocator) +void SlideTo(SoldierID usSoldierID, BOOLEAN fSetLocator) { - INT32 cnt; - - if ( usSoldierID == NOBODY ) { return; @@ -3546,7 +3534,7 @@ void SlideTo(INT32 sGridNo, UINT16 usSoldierID , UINT16 usReasonID, BOOLEAN fSet if ( fSetLocator == SETANDREMOVEPREVIOUSLOCATOR ) { - for ( cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ ) + for (INT32 cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ ) { if ( MercPtrs[ cnt ]->bActive && MercPtrs[ cnt ]->bInSector ) { @@ -3558,24 +3546,23 @@ void SlideTo(INT32 sGridNo, UINT16 usSoldierID , UINT16 usReasonID, BOOLEAN fSet // Locate even if on screen if (fSetLocator) - ShowRadioLocator((UINT8) usSoldierID, SHOW_LOCATOR_NORMAL ); + ShowRadioLocator( usSoldierID, SHOW_LOCATOR_NORMAL ); // FIRST CHECK IF WE ARE ON SCREEN - if ( GridNoOnScreen( MercPtrs[ usSoldierID ]->sGridNo ) ) + if ( GridNoOnScreen( usSoldierID->sGridNo ) ) { return; } // sGridNo here for DG compatibility - gTacticalStatus.sSlideTarget = MercPtrs[ usSoldierID ]->sGridNo; - gTacticalStatus.sSlideReason = usReasonID; + gTacticalStatus.sSlideTarget = usSoldierID->sGridNo; // Plot new path! gfPlotNewMovement = TRUE; } -void SlideToLocation( UINT16 usReasonID, INT32 sDestGridNo ) +void SlideToLocation( INT32 sDestGridNo ) { if (TileIsOutOfBounds(sDestGridNo)) { @@ -3590,7 +3577,6 @@ void SlideToLocation( UINT16 usReasonID, INT32 sDestGridNo ) // sGridNo here for DG compatibility gTacticalStatus.sSlideTarget = sDestGridNo; - gTacticalStatus.sSlideReason = usReasonID; // Plot new path! gfPlotNewMovement = TRUE; @@ -3599,8 +3585,8 @@ void SlideToLocation( UINT16 usReasonID, INT32 sDestGridNo ) void RebuildAllSoldierShadeTables( ) { - UINT32 cnt; - SOLDIERTYPE *pSoldier; + UINT32 cnt; + SOLDIERTYPE *pSoldier; // Loop through all mercs and make go for ( pSoldier = Menptr, cnt = 0; cnt < TOTAL_SOLDIERS; pSoldier++, cnt++ ) @@ -3615,11 +3601,11 @@ void RebuildAllSoldierShadeTables( ) void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier ) { - INT32 cnt; - INT32 iNewSelectedSoldier = -1; - SOLDIERTYPE *pTeamSoldier; - BOOLEAN fMissionFailed = TRUE; - INT8 bBuddyIndex; + SoldierID cnt; + SoldierID iNewSelectedSoldier; + SOLDIERTYPE *pTeamSoldier; + BOOLEAN fMissionFailed = TRUE; + INT8 bBuddyIndex; VerifyPublicOpplistDueToDeath( pSoldier ); @@ -3630,8 +3616,9 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier ) cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive && pTeamSoldier->bInSector ) { iNewSelectedSoldier = cnt; @@ -3647,15 +3634,16 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier ) { if ( pSoldier->ubAutoBandagingMedic != NOBODY ) { - DebugAI(AI_MSG_INFO, MercPtrs[pSoldier->ubAutoBandagingMedic], String("CancelAIAction: stop autobandaging in HandlePlayerTeamMemberDeath")); - CancelAIAction( MercPtrs[ pSoldier->ubAutoBandagingMedic ], TRUE ); + DebugAI(AI_MSG_INFO, pSoldier->ubAutoBandagingMedic, String("CancelAIAction: stop autobandaging in HandlePlayerTeamMemberDeath")); + CancelAIAction( pSoldier->ubAutoBandagingMedic, TRUE ); } } // see if this was the friend of a living merc cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife >= OKLIFE ) { bBuddyIndex = WhichBuddy( pTeamSoldier->ubProfile, pSoldier->ubProfile ); @@ -3745,7 +3733,7 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier ) { if ( !fMissionFailed ) { - SelectSoldier( (INT16)iNewSelectedSoldier, FALSE, FALSE ); + SelectSoldier( iNewSelectedSoldier, FALSE, FALSE ); } else { @@ -3779,7 +3767,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) { if ( pSoldierOld->ubAttackerID != NOBODY ) { - pKiller = MercPtrs[ pSoldierOld->ubAttackerID ]; + pKiller = pSoldierOld->ubAttackerID; } if( pKiller && pKiller->bTeam == OUR_TEAM ) { @@ -3973,7 +3961,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) #ifdef JA2UB if ( pSoldierOld->ubProfile == MORRIS_UB ) { - INT16 bSoldierID; + SoldierID bSoldierID; SOLDIERTYPE* pOther = FindSoldierByProfileID( MORRIS_UB, FALSE ); if ( pOther ) { @@ -3986,10 +3974,10 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) bSoldierID = RandomSoldierIdFromNewMercsOnPlayerTeam(); //if there is any - if( bSoldierID != -1 ) + if( bSoldierID != NOBODY ) { //say the MORRIS dead quote - TacticalCharacterDialogue( &Menptr[ bSoldierID ], QUOTE_LEARNED_TO_HATE_ON_TEAM_WONT_RENEW ); + TacticalCharacterDialogue( bSoldierID, QUOTE_LEARNED_TO_HATE_ON_TEAM_WONT_RENEW ); } } // Ja25no queen @@ -3999,7 +3987,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) { if ( pSoldierOld->ubAttackerID != NOBODY ) { - pKiller = MercPtrs[ pSoldierOld->ubAttackerID ]; + pKiller = pSoldierOld->ubAttackerID; } BeginHandleDeidrannaDeath( pKiller, pSoldierOld->sGridNo, pSoldierOld->pathing.bLevel ); @@ -4071,7 +4059,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) // If the militia's killer is known // silversurfer: did the player team kill the militia? If not, militia shouldn't become hostile towards the player. - if ( pSoldierOld->ubAttackerID != NOBODY && MercPtrs[ pSoldierOld->ubAttackerID ]->bTeam == OUR_TEAM ) + if ( pSoldierOld->ubAttackerID != NOBODY && pSoldierOld->ubAttackerID->bTeam == OUR_TEAM ) { // also treat this as murder - but player will never be blamed for militia death he didn't cause // HEADROCK HAM 3.6: Actually this function never runs for militia (see function for details) @@ -4101,7 +4089,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) if ( pSoldierOld->ubAttackerID != NOBODY ) { - pKiller = MercPtrs[ pSoldierOld->ubAttackerID ]; + pKiller = pSoldierOld->ubAttackerID; BeginHandleQueenBitchDeath( pKiller, pSoldierOld->sGridNo, pSoldierOld->pathing.bLevel ); } @@ -4113,9 +4101,9 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) TrackEnemiesKilled( ENEMY_KILLED_IN_TACTICAL, pSoldierOld->ubSoldierClass ); } // If enemy guy was killed by the player, give morale boost to player's team! - if (pSoldierOld->ubAttackerID != NOBODY && MercPtrs[ pSoldierOld->ubAttackerID ]->bTeam == gbPlayerNum ) + if (pSoldierOld->ubAttackerID != NOBODY && pSoldierOld->ubAttackerID->bTeam == gbPlayerNum ) { - HandleMoraleEvent( MercPtrs[pSoldierOld->ubAttackerID], MORALE_KILLED_ENEMY, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); + HandleMoraleEvent( pSoldierOld->ubAttackerID, MORALE_KILLED_ENEMY, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); } HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_ENEMY_KILLED, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); @@ -4156,10 +4144,10 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) // killing crows/cows is not worth any experience! if ( ( pSoldierOld->ubBodyType != CROW ) && ( pSoldierOld->ubBodyType != COW ) ) //&& pSoldierOld->ubLastDamageReason != TAKE_DAMAGE_BLOODLOSS ) // SANDRO - why not give exp for bleeding out? { - UINT8 ubAssister = NOBODY; + SoldierID ubAssister = NOBODY; // if it was a kill by a player's merc - if (pSoldierOld->ubAttackerID != NOBODY && MercPtrs[ pSoldierOld->ubAttackerID ]->bTeam == gbPlayerNum ) + if (pSoldierOld->ubAttackerID != NOBODY && pSoldierOld->ubAttackerID->bTeam == gbPlayerNum ) { // SANDRO - for special NPCs, you gain more experiences UINT16 usNumExpChances = ( 10 * pSoldierOld->stats.bExpLevel ); // basic value @@ -4190,7 +4178,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) break; } // EXPERIENCE CLASS GAIN: Earned a kill - StatChange( MercPtrs[ pSoldierOld->ubAttackerID ], EXPERAMT, usNumExpChances, FALSE ); + StatChange( pSoldierOld->ubAttackerID, EXPERAMT, usNumExpChances, FALSE ); } // JA2 Gold: if previous and current attackers are the same, the next-to-previous attacker gets the assist @@ -4205,16 +4193,16 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) } // if it was assisted by a player's merc - if (ubAssister != NOBODY && MercPtrs[ ubAssister ]->bTeam == gbPlayerNum ) + if (ubAssister != NOBODY && ubAssister->bTeam == gbPlayerNum ) { // EXPERIENCE CLASS GAIN: Earned an assist - StatChange( MercPtrs[ ubAssister ], EXPERAMT, (UINT16)( 5 * pSoldierOld->stats.bExpLevel ), FALSE ); + StatChange( ubAssister, EXPERAMT, (UINT16)( 5 * pSoldierOld->stats.bExpLevel ), FALSE ); } } - if (pSoldierOld->ubAttackerID != NOBODY && MercPtrs[ pSoldierOld->ubAttackerID ]->bTeam == MILITIA_TEAM ) + if (pSoldierOld->ubAttackerID != NOBODY && pSoldierOld->ubAttackerID->bTeam == MILITIA_TEAM ) { - MercPtrs[pSoldierOld->ubAttackerID]->ubMilitiaAssists++; + pSoldierOld->ubAttackerID->ubMilitiaAssists++; } //if the NPC is a dealer, add the dealers items to the ground @@ -4232,14 +4220,14 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) //if the person was Raul, and we are to say the blown up quotes if( pSoldierOld->ubProfile == RAUL_UB /*RAUL */ && IsJa25GeneralFlagSet( JA_GF__RAUL_BLOW_HIMSELF_UP ) ) { - UINT8 SoldierId1; - UINT8 SoldierId2; + SoldierID SoldierId1; + SoldierID SoldierId2; //Get some random Soldier ID's of the valid mercs if( Get3RandomQualifiedMercs( &SoldierId1, &SoldierId2, NULL ) != 0 ) { //Say the "he blew himself up quote" - TacticalCharacterDialogue( &Menptr[SoldierId1], QUOTE_GREETING ); + TacticalCharacterDialogue( SoldierId1, QUOTE_GREETING ); //if there isnt a second soldier if( SoldierId2 == NOBODY ) @@ -4248,7 +4236,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) } //say the "darn he took the inventoruy with him" - TacticalCharacterDialogue( &Menptr[SoldierId2], QUOTE_SMALL_TALK ); + TacticalCharacterDialogue( SoldierId2, QUOTE_SMALL_TALK ); } } #endif @@ -4256,19 +4244,18 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) CheckForEndOfBattle( FALSE ); } -UINT8 LastActiveTeamMember( UINT8 ubTeam ) +SoldierID LastActiveTeamMember( UINT16 ubTeam ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; - - cnt = gTacticalStatus.Team[ ubTeam ].bLastID; + SOLDIERTYPE *pSoldier; + SoldierID cnt = gTacticalStatus.Team[ ubTeam ].bLastID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ ubTeam ].bFirstID; cnt-- ,pSoldier--) + for ( ; cnt >= gTacticalStatus.Team[ ubTeam ].bFirstID; --cnt) { + pSoldier = cnt; if ( pSoldier->bActive ) { - return( (INT8)cnt ); + return( cnt ); } } @@ -4490,9 +4477,10 @@ void MakeCivHostile(SOLDIERTYPE *pSoldier) // rehandle sight for everybody SOLDIERTYPE* pTeamSoldier; - UINT16 iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID; - for ( pTeamSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop, ++pTeamSoldier ) + SoldierID iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop ) { + pTeamSoldier = iLoop; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->stats.bLife > 0 ) { RecalculateOppCntsDueToNoLongerNeutral( pTeamSoldier ); @@ -4531,18 +4519,18 @@ void MakeCivHostile(SOLDIERTYPE *pSoldier) UINT8 CivilianGroupMembersChangeSidesWithinProximity( SOLDIERTYPE * pAttacked ) { - SOLDIERTYPE * pSoldier; - UINT8 ubFirstProfile = NO_PROFILE; - UINT8 cnt; + SOLDIERTYPE * pSoldier; + UINT8 ubFirstProfile = NO_PROFILE; if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP ) { return( pAttacked->ubProfile ); } - cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral ) { if ( pSoldier->ubCivilianGroup == pAttacked->ubCivilianGroup && pSoldier->ubBodyType != COW ) @@ -4550,7 +4538,7 @@ UINT8 CivilianGroupMembersChangeSidesWithinProximity( SOLDIERTYPE * pAttacked ) // if in LOS of this guy's attacker if ( (pAttacked->ubAttackerID != NOBODY && pSoldier->aiData.bOppList[pAttacked->ubAttackerID] == SEEN_CURRENTLY) || ( PythSpacesAway( pSoldier->sGridNo, pAttacked->sGridNo ) < pAttacked->GetMaxDistanceVisible(pSoldier->sGridNo, pSoldier->pathing.bLevel) ) - || ( pAttacked->ubAttackerID != NOBODY && PythSpacesAway( pSoldier->sGridNo, MercPtrs[ pAttacked->ubAttackerID ]->sGridNo ) < pAttacked->GetMaxDistanceVisible(MercPtrs[ pAttacked->ubAttackerID ]->sGridNo, MercPtrs[ pAttacked->ubAttackerID ]->pathing.bLevel) ) ) + || ( pAttacked->ubAttackerID != NOBODY && PythSpacesAway( pSoldier->sGridNo, pAttacked->ubAttackerID->sGridNo ) < pAttacked->GetMaxDistanceVisible(pAttacked->ubAttackerID->sGridNo, pAttacked->ubAttackerID->pathing.bLevel) ) ) { MakeCivHostile(pSoldier); if ( pSoldier->aiData.bOppCnt > 0 ) @@ -4573,11 +4561,10 @@ UINT8 CivilianGroupMembersChangeSidesWithinProximity( SOLDIERTYPE * pAttacked ) SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked ) { - SOLDIERTYPE * pNew; - SOLDIERTYPE * pNewAttacked = pAttacked; - SOLDIERTYPE * pSoldier; - UINT8 cnt; - UINT8 ubFirstProfile = NO_PROFILE; + SOLDIERTYPE * pNew; + SOLDIERTYPE * pNewAttacked = pAttacked; + SOLDIERTYPE * pSoldier; + UINT8 ubFirstProfile = NO_PROFILE; if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP ) { @@ -4586,9 +4573,10 @@ SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked ) } // remove anyone (rebels) on our team and put them back in the civ team - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++ ,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife) { if (pSoldier->ubCivilianGroup == pAttacked->ubCivilianGroup) @@ -4669,15 +4657,15 @@ SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked ) void CivilianGroupChangesSides( UINT8 ubCivilianGroup ) { // change civ group side due to external event (wall blowing up) - INT32 cnt; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; gTacticalStatus.fCivGroupHostile[ ubCivilianGroup ] = CIV_GROUP_HOSTILE; // now change sides for anyone on the civ team - cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral) { if ( pSoldier->ubCivilianGroup == ubCivilianGroup && pSoldier->ubBodyType != COW ) @@ -4707,13 +4695,13 @@ void CivilianGroupChangesSides( UINT8 ubCivilianGroup ) void HickCowAttacked( SOLDIERTYPE * pNastyGuy, SOLDIERTYPE * pTarget ) { - INT32 cnt; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; // now change sides for anyone on the civ team - cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral && pSoldier->ubCivilianGroup == HICKS_CIV_GROUP ) { if ( SoldierToSoldierLineOfSightTest( pSoldier, pNastyGuy, TRUE ) ) @@ -4728,9 +4716,7 @@ void HickCowAttacked( SOLDIERTYPE * pNastyGuy, SOLDIERTYPE * pTarget ) void MilitiaChangesSides( ) { // make all the militia change sides - - INT32 cnt; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; if ( gTacticalStatus.Team[ MILITIA_TEAM ].bMenInSector == 0 ) { @@ -4738,9 +4724,10 @@ void MilitiaChangesSides( ) } // remove anyone (rebels) on our team and put them back in the civ team - cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++ ,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife) { if ( (gWorldSectorX == 0 && gWorldSectorY == 0) || !NumNonPlayerTeamMembersInSector( gWorldSectorX, gWorldSectorY, ENEMY_TEAM ) ) @@ -4767,17 +4754,16 @@ gTacticalStatus.fCivGroupHostile[ ubLoop ] = CIV_GROUP_HOSTILE; } */ -INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ) +UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; - UINT8 ubCount = 0; - - cnt = gTacticalStatus.Team[ ubTeam ].bFirstID; + SOLDIERTYPE *pSoldier; + UINT16 ubCount = 0; + SoldierID cnt = gTacticalStatus.Team[ ubTeam ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; ++cnt ) { + pSoldier = cnt; if ( OK_CONTROLLABLE_MERC( pSoldier) ) { ubCount++; @@ -4788,18 +4774,16 @@ INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ) } -UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) +SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) { - UINT8 bLastTeamID; - INT32 cnt; - SOLDIERTYPE *pTeamSoldier; - - cnt = pSoldier->ubID + 1; - bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; + SOLDIERTYPE *pTeamSoldier; + SoldierID cnt = pSoldier->ubID + 1; + SoldierID bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pTeamSoldier++) + for ( ; cnt <= bLastTeamID; ++cnt ) { + pTeamSoldier = cnt; if ( fOnlyRegularMercs ) { if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) ) @@ -4812,14 +4796,14 @@ UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } } @@ -4829,8 +4813,9 @@ UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; bLastTeamID = pSoldier->ubID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pTeamSoldier++) + for ( ; cnt <= bLastTeamID; ++cnt ) { + pTeamSoldier = cnt; if ( fOnlyRegularMercs ) { if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) ) @@ -4843,14 +4828,14 @@ UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } } @@ -4902,19 +4887,18 @@ SOLDIERTYPE *FindNextActiveSquad( SOLDIERTYPE *pSoldier ) } -UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) +SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) { - UINT8 bLastTeamID; - INT32 cnt; - SOLDIERTYPE *pTeamSoldier; + SOLDIERTYPE *pTeamSoldier; // loop back - bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; - cnt = pSoldier->ubID - 1; + SoldierID bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; + SoldierID cnt = pSoldier->ubID - 1; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt >= bLastTeamID; cnt--,pTeamSoldier-- ) + for ( ; cnt > bLastTeamID; --cnt ) { + pTeamSoldier = cnt; if ( fOnlyRegularMercs ) { if ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) @@ -4928,14 +4912,14 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL // Check for bLife > 0 if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } } @@ -4944,8 +4928,9 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL cnt = gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt >= bLastTeamID; cnt--,pTeamSoldier-- ) + for ( ; cnt > bLastTeamID; --cnt ) { + pTeamSoldier = cnt; if ( fOnlyRegularMercs ) { if ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) @@ -4958,14 +4943,14 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } } @@ -4978,16 +4963,16 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL BOOLEAN CheckForPlayerTeamInMissionExit( ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; - UINT8 bGuysIn = 0; + SOLDIERTYPE *pSoldier; + UINT16 bGuysIn = 0; // End the turn of player charactors - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE ) { if ( pSoldier->flags.fInMissionExitNode ) @@ -5071,15 +5056,15 @@ CHAR8 *GetSceneFilename( ) return( gzLevelFilenames[ gubCurrentScene ] ); } -extern BOOLEAN InternalOkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal, INT16 sSoldierID ); +extern BOOLEAN InternalOkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal, SoldierID sSoldierID ); // NB if making changes don't forget to update NewOKDestinationAndDirection BOOLEAN NewOKDestination( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, BOOLEAN fPeopleToo, INT8 bLevel ) { - UINT8 bPerson; - STRUCTURE * pStructure; - INT16 sDesiredLevel; - BOOLEAN fOKCheckStruct; + SoldierID bPerson; + STRUCTURE *pStructure; + INT16 sDesiredLevel; + BOOLEAN fOKCheckStruct; // Allow civilians and NPCs with profile to go off screen, and also enemies if tactical retreat is enabled auto destinationOffscreen = !(GridNoOnVisibleWorldTile(sGridNo)); @@ -5101,7 +5086,7 @@ BOOLEAN NewOKDestination( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, BOOLEAN fPe { if ( pCurrSoldier->bTeam == gbPlayerNum ) { - if ( ( Menptr[ bPerson ].bVisible >= 0) || ( gTacticalStatus.uiFlags & SHOW_ALL_MERCS ) ) + if ( ( bPerson->bVisible >= 0) || ( gTacticalStatus.uiFlags & SHOW_ALL_MERCS ) ) return( FALSE ); // if someone there it's NOT OK } else @@ -5223,10 +5208,10 @@ BOOLEAN NewOKDestination( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, BOOLEAN fPe // NB if making changes don't forget to update NewOKDestination INT16 NewOKDestinationAndDirection( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, INT8 bDirection, BOOLEAN fPeopleToo, INT8 bLevel ) { - UINT8 bPerson; - STRUCTURE * pStructure; - INT16 sDesiredLevel; - BOOLEAN fOKCheckStruct; + SoldierID bPerson; + STRUCTURE *pStructure; + INT16 sDesiredLevel; + BOOLEAN fOKCheckStruct; if (fPeopleToo && ( bPerson = WhoIsThere2( sGridNo, bLevel ) ) != NOBODY ) { @@ -5236,7 +5221,7 @@ INT16 NewOKDestinationAndDirection( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, I { if ( pCurrSoldier->bTeam == gbPlayerNum ) { - if ( ( Menptr[ bPerson ].bVisible >= 0) || ( gTacticalStatus.uiFlags & SHOW_ALL_MERCS ) ) + if ( ( bPerson->bVisible >= 0) || ( gTacticalStatus.uiFlags & SHOW_ALL_MERCS ) ) return( FALSE ); // if someone there it's NOT OK } else @@ -5432,23 +5417,23 @@ BOOLEAN IsLocationSittableExcludingPeople( INT32 iMapIndex, BOOLEAN fOnRoof ) } -BOOLEAN TeamMemberNear(INT8 bTeam, INT32 sGridNo, INT32 iRange) +BOOLEAN TeamMemberNear( INT8 bTeam, INT32 sGridNo, INT32 iRange ) { - UINT8 bLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; - for (bLoop=gTacticalStatus.Team[bTeam].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop, pSoldier++) - { - if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) ) - { - if (PythSpacesAway(pSoldier->sGridNo,sGridNo) <= iRange) - { - return(TRUE); - } - } - } + for ( SoldierID bLoop = gTacticalStatus.Team[bTeam].bFirstID; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop ) + { + pSoldier = bLoop; + if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !(pSoldier->flags.uiStatusFlags & SOLDIER_GASSED) ) + { + if ( PythSpacesAway( pSoldier->sGridNo, sGridNo ) <= iRange ) + { + return(TRUE); + } + } + } - return(FALSE); + return(FALSE); } INT32 FindAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pubDirection, INT32 *psAdjustedGridNo, BOOLEAN fForceToPerson, BOOLEAN fDoor, bool allow_diagonal ) @@ -5465,13 +5450,13 @@ INT32 FindAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pubDirect INT32 sClosest = -1, sSpot; INT32 sCloseGridNo = NOWHERE; UINT32 uiMercFlags; - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; UINT8 ubDir; STRUCTURE *pDoor; UINT8 ubWallOrientation; BOOLEAN fCheckGivenGridNo = TRUE; UINT8 ubTestDirection; - EXITGRID ExitGrid; + EXITGRID ExitGrid; // Set default direction if (pubDirection) @@ -5540,7 +5525,7 @@ INT32 FindAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pubDirect { if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) { - SOLDIERTYPE *pTargetSoldier = MercPtrs[usSoldierIndex]; + SOLDIERTYPE *pTargetSoldier = usSoldierIndex; sGridNo = pTargetSoldier->sGridNo; if (CREATURE_OR_BLOODCAT(pTargetSoldier) || gAnimControl[pTargetSoldier->usAnimState].ubEndHeight == ANIM_PRONE) { @@ -5827,14 +5812,14 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub //INT32 cnt; INT32 sClosest = -1, sSpot, sSpot2; INT32 sCloseGridNo = NOWHERE; - UINT32 uiMercFlags; - UINT16 usSoldierIndex; - UINT8 ubDir; - STRUCTURE *pDoor; - UINT8 ubWallOrientation; - BOOLEAN fCheckGivenGridNo = TRUE; - UINT8 ubTestDirection; - UINT8 ubWhoIsThere; + UINT32 uiMercFlags; + SoldierID usSoldierIndex; + UINT8 ubDir; + STRUCTURE *pDoor; + UINT8 ubWallOrientation; + BOOLEAN fCheckGivenGridNo = TRUE; + UINT8 ubTestDirection; + SoldierID ubWhoIsThere; // CHECK IF WE WANT TO FORCE GRIDNO TO PERSON if ( psAdjustedGridNo != NULL ) @@ -5863,7 +5848,7 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub { if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) { - SOLDIERTYPE *pTargetSoldier = MercPtrs[usSoldierIndex]; + SOLDIERTYPE *pTargetSoldier = usSoldierIndex; sGridNo = pTargetSoldier->sGridNo; if (CREATURE_OR_BLOODCAT(pTargetSoldier) || gAnimControl[pTargetSoldier->usAnimState].ubEndHeight == ANIM_PRONE) { @@ -6140,7 +6125,7 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub INT32 FindAdjacentPunchTarget( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTargetSoldier, INT32 * psAdjustedTargetGridNo, UINT8 * pubDirection ) { INT32 sSpot; - UINT8 ubGuyThere; + SoldierID ubGuyThere; for ( UINT8 cnt = 0; cnt < NUM_WORLD_DIRECTIONS; ++cnt ) { @@ -6210,20 +6195,20 @@ BOOLEAN UIOKMoveDestination( SOLDIERTYPE *pSoldier, INT32 usMapPos ) void HandleTeamServices( UINT8 ubTeamNum ) { - INT32 cnt; - SOLDIERTYPE *pTeamSoldier, *pTargetSoldier; - UINT32 uiPointsUsed; - UINT16 usSoldierIndex; - UINT16 usKitPts; - INT8 bSlot; - BOOLEAN fDone; + SOLDIERTYPE *pTeamSoldier, *pTargetSoldier; + UINT32 uiPointsUsed; + SoldierID usSoldierIndex; + UINT16 usKitPts; + INT8 bSlot; + BOOLEAN fDone; // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ ubTeamNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ ubTeamNum ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeamNum ].bLastID; ++cnt, pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ ubTeamNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive && pTeamSoldier->bInSector ) { fDone = FALSE; @@ -6235,7 +6220,7 @@ void HandleTeamServices( UINT8 ubTeamNum ) usSoldierIndex = WhoIsThere2( pTeamSoldier->sTargetGridNo, pTeamSoldier->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { - pTargetSoldier = MercPtrs[ usSoldierIndex ]; + pTargetSoldier = usSoldierIndex; if ( pTargetSoldier->ubServiceCount ) { @@ -6302,11 +6287,11 @@ void HandleTeamServices( UINT8 ubTeamNum ) void HandlePlayerServices( SOLDIERTYPE *pTeamSoldier ) { SOLDIERTYPE *pTargetSoldier; - UINT32 uiPointsUsed; - UINT16 usSoldierIndex; - UINT16 usKitPts; - INT8 bSlot; - BOOLEAN fDone = FALSE; + UINT32 uiPointsUsed; + SoldierID usSoldierIndex; + UINT16 usKitPts; + INT8 bSlot; + BOOLEAN fDone = FALSE; if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive ) { @@ -6319,7 +6304,7 @@ void HandlePlayerServices( SOLDIERTYPE *pTeamSoldier ) if ( usSoldierIndex != NOBODY ) { - pTargetSoldier = MercPtrs[ usSoldierIndex ]; + pTargetSoldier = usSoldierIndex; if ( pTargetSoldier->ubServiceCount ) { @@ -6423,9 +6408,9 @@ void CommonEnterCombatModeCode( ) // Loop through all mercs and make go for ( pSoldier = Menptr, cnt = 0; cnt < TOTAL_SOLDIERS; pSoldier++, ++cnt ) { - if ( pSoldier && pSoldier->bActive ) + if ( pSoldier->bActive && pSoldier->bInSector ) { - if ( pSoldier->bInSector && pSoldier->ubBodyType != CROW ) + if ( pSoldier->ubBodyType != CROW ) { // Set some flags for quotes pSoldier->usQuoteSaidFlags &= (~SOLDIER_QUOTE_SAID_IN_SHIT ); @@ -6514,7 +6499,6 @@ void CommonEnterCombatModeCode( ) void EnterCombatMode( UINT8 ubStartingTeam ) { - UINT32 cnt; SOLDIERTYPE *pTeamSoldier; DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode"); @@ -6554,13 +6538,14 @@ void EnterCombatMode( UINT8 ubStartingTeam ) DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("EnterCombatMode continuing... start player turn, selected soldier = %d",gusSelectedSoldier)); // OK, make sure we have a selected guy // Madd: this was causing a weird crash becuase gusSelectedSoldier was 156 (out of the array bounds) for some reason - //if ( MercPtrs[ gusSelectedSoldier ]->aiData.bOppCnt == 0 ) - if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->aiData.bOppCnt == 0 ) + //if ( gusSelectedSoldier->aiData.bOppCnt == 0 ) + if ( gusSelectedSoldier != NOBODY && gusSelectedSoldier->aiData.bOppCnt == 0 ) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode continuing... nobody selected"); // OK, look through and find one.... - for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, pTeamSoldier++ ) + for ( SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppCnt > 0 ) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"EnterCombatMode continuing... select soldier"); @@ -6618,45 +6603,42 @@ void ExitCombatMode( ) // Loop through all mercs and make go for ( pSoldier = Menptr, cnt = 0; cnt < TOTAL_SOLDIERS; pSoldier++, cnt++ ) { - if ( pSoldier->bActive ) + if ( pSoldier->bActive && pSoldier->bInSector ) { - if ( pSoldier->bInSector ) + // Reset some flags + if ( pSoldier->flags.fNoAPToFinishMove && pSoldier->stats.bLife >= OKLIFE ) { - // Reset some flags - if ( pSoldier->flags.fNoAPToFinishMove && pSoldier->stats.bLife >= OKLIFE ) + pSoldier->AdjustNoAPToFinishMove( FALSE ); + + // ary-05/05/2009 : fix lower ready weapons + //previously "ready weapon" state was being dropped in a couple of cases + //the fix involves bypassing the reset animation state for the various "ready weapon" types + //since this is a reset animation function, we should be VERY specific about when and what we dont reset + + UINT16 test; + test = pSoldier->usAnimState; + if (!( test == AIM_RIFLE_STAND || test == AIM_RIFLE_CROUCH || + test == AIM_RIFLE_PRONE || test == AIM_DUAL_STAND || + test == AIM_DUAL_CROUCH || test == AIM_DUAL_PRONE + )) { - pSoldier->AdjustNoAPToFinishMove( FALSE ); - - // ary-05/05/2009 : fix lower ready weapons - //previously "ready weapon" state was being dropped in a couple of cases - //the fix involves bypassing the reset animation state for the various "ready weapon" types - //since this is a reset animation function, we should be VERY specific about when and what we dont reset - - UINT16 test; - test = pSoldier->usAnimState; - if (!( test == AIM_RIFLE_STAND || test == AIM_RIFLE_CROUCH || - test == AIM_RIFLE_PRONE || test == AIM_DUAL_STAND || - test == AIM_DUAL_CROUCH || test == AIM_DUAL_PRONE - )) - { - pSoldier->SoldierGotoStationaryStance( ); - } - } - - //Cancel pending events - pSoldier->usPendingAnimation = NO_PENDING_ANIMATION; - pSoldier->ubPendingDirection = NO_PENDING_DIRECTION; - pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION; - - // Reset moved flag - pSoldier->aiData.bMoved = FALSE; - - // Set final destination - pSoldier->pathing.sFinalDestination = pSoldier->sGridNo; - - // remove AI controlled flag - pSoldier->flags.uiStatusFlags &= ~SOLDIER_UNDERAICONTROL; + pSoldier->SoldierGotoStationaryStance( ); + } } + + //Cancel pending events + pSoldier->usPendingAnimation = NO_PENDING_ANIMATION; + pSoldier->ubPendingDirection = NO_PENDING_DIRECTION; + pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION; + + // Reset moved flag + pSoldier->aiData.bMoved = FALSE; + + // Set final destination + pSoldier->pathing.sFinalDestination = pSoldier->sGridNo; + + // remove AI controlled flag + pSoldier->flags.uiStatusFlags &= ~SOLDIER_UNDERAICONTROL; } } @@ -6765,13 +6747,12 @@ void SetEnemyPresence() } -extern BOOLEAN gfLastMercTalkedAboutKillingID; +extern SoldierID gfLastMercTalkedAboutKillingID; BOOLEAN SoldierHasSeenEnemiesLastFewTurns( SOLDIERTYPE *pTeamSoldier ) { - INT32 cnt2; - SOLDIERTYPE *pSoldier; - INT32 cnt; + SOLDIERTYPE *pSoldier; + INT32 cnt; for ( cnt = 0; cnt < MAXTEAMS; cnt++ ) { @@ -6780,9 +6761,10 @@ BOOLEAN SoldierHasSeenEnemiesLastFewTurns( SOLDIERTYPE *pTeamSoldier ) { // check this team for possible enemies - cnt2 = gTacticalStatus.Team[ cnt ].bFirstID; - for ( pSoldier = MercPtrs[ cnt2 ]; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; cnt2++, pSoldier++ ) + SoldierID cnt2 = gTacticalStatus.Team[ cnt ].bFirstID; + for ( ; cnt2 <= gTacticalStatus.Team[ cnt ].bLastID; ++cnt2 ) { + pSoldier = cnt2; if ( pSoldier->bActive && pSoldier->bInSector && ( pSoldier->bTeam == gbPlayerNum || pSoldier->stats.bLife >= OKLIFE ) ) { if ( !CONSIDERED_NEUTRAL( pTeamSoldier, pSoldier ) && ( pTeamSoldier->bSide != pSoldier->bSide ) ) @@ -6876,25 +6858,23 @@ BOOLEAN WeSawSomeoneThisTurn( ) void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd ) { // WDS - make number of mercenaries, etc. be configurable - // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + SoldierID ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = {}; + UINT16 ubNumMercs = 0; SOLDIERTYPE *pTeamSoldier; - INT32 cnt; // Loop through all our guys and randomly say one from someone in our sector // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = cnt; ubNumMercs++; } } @@ -6902,11 +6882,10 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + SoldierID ubChosenMerc = ubMercsInSector[ (UINT16)Random( ubNumMercs ) ]; - MercPtrs[ ubChosenMerc ]->DoMercBattleSound( (UINT8)iBattleSnd ); + ubChosenMerc->DoMercBattleSound( (UINT8)iBattleSnd ); } - } @@ -7295,7 +7274,7 @@ void RemoveCapturedEnemiesFromSectorInfo( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) // HEADROCK HAM B2.8: Now also reveals equipment dropped by militia, if requirement is met. if ( pTeamSoldier->bTeam == ENEMY_TEAM || (gGameExternalOptions.ubMilitiaDropEquipment == 2 && pTeamSoldier->bTeam == MILITIA_TEAM) || - (gGameExternalOptions.ubMilitiaDropEquipment == 1 && pTeamSoldier->bTeam == MILITIA_TEAM && Menptr[pTeamSoldier->ubAttackerID].bTeam != OUR_TEAM) ) + (gGameExternalOptions.ubMilitiaDropEquipment == 1 && pTeamSoldier->bTeam == MILITIA_TEAM && pTeamSoldier->ubAttackerID->bTeam != OUR_TEAM) ) { //add a flag to the item so when all enemies are killed, we can run through and reveal all the enemies items usItemFlags |= WORLD_ITEM_DROPPED_FROM_ENEMY; @@ -7316,7 +7295,7 @@ void RemoveCapturedEnemiesFromSectorInfo( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) // HEADROCK HAM B2.8: Militia will drop items only if allowed. if ( !(gGameExternalOptions.ubMilitiaDropEquipment == 0 && pTeamSoldier->bTeam == MILITIA_TEAM) && - !(gGameExternalOptions.ubMilitiaDropEquipment == 1 && pTeamSoldier->bTeam == MILITIA_TEAM && Menptr[pTeamSoldier->ubAttackerID].bTeam == OUR_TEAM) ) + !(gGameExternalOptions.ubMilitiaDropEquipment == 1 && pTeamSoldier->bTeam == MILITIA_TEAM && pTeamSoldier->ubAttackerID->bTeam == OUR_TEAM) ) { AddItemToPool( pTeamSoldier->sGridNo, pObj, bVisible, pTeamSoldier->pathing.bLevel, usItemFlags, -1 ); } @@ -7396,10 +7375,6 @@ void UpdateWoundedFromSectorInfo( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) { SOLDIERTYPE *pSoldier; INT32 cnt = 0; - UINT8 ubNumPrisoners = 0; - UINT8 ubNumPrisonerAdmin = 0; - UINT8 ubNumPrisonerTroop = 0; - UINT8 ubNumPrisonerElite = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -7523,11 +7498,6 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) if ( fBattleLost || fBattleWon ) { - if( !gbWorldSectorZ ) - { - SectorInfo[SECTOR( gWorldSectorX, gWorldSectorY )].bLastKnownEnemies = NumNonPlayerTeamMembersInSector( gWorldSectorX, gWorldSectorY, ENEMY_TEAM ); - } - // Flugente: note number of wounded for campaign stats UpdateWoundedFromSectorInfo( gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); } @@ -7537,12 +7507,13 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) if (fBattleLost) { // sevenfm: count alive/dead/not covert mercs in sector/retreating from sector - UINT8 ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; BOOLEAN fFoundNotCovertMerc = FALSE; BOOLEAN fFoundAliveMerc = FALSE; BOOLEAN fFoundDeadMerc = FALSE; - for (pTeamSoldier = MercPtrs[ubLoop]; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++, pTeamSoldier++) + for (; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) { + pTeamSoldier = ubLoop; if (pTeamSoldier->bActive) { if (pTeamSoldier->bInSector || @@ -7586,7 +7557,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) memset(&(gTacticalStatus.bNumFoughtInBattle), 0, MAXTEAMS); // If here, the battle has been lost! - UnSetUIBusy((UINT8)gusSelectedSoldier); + UnSetUIBusy(gusSelectedSoldier); if (gTacticalStatus.uiFlags & INCOMBAT) { @@ -7695,7 +7666,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) // battle for us EndAllAITurns( ); - UnSetUIBusy( (UINT8)gusSelectedSoldier ); + UnSetUIBusy( gusSelectedSoldier ); // ATE: // If we ended battle in any team other than the player's @@ -7781,7 +7752,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_BATTLE_WON, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); // Change music modes - if ( gfLastMercTalkedAboutKillingID == NOBODY || ( gfLastMercTalkedAboutKillingID != NOBODY && !( MercPtrs[ gfLastMercTalkedAboutKillingID ]->flags.uiStatusFlags & SOLDIER_MONSTER ) ) ) + if ( gfLastMercTalkedAboutKillingID == NOBODY || ( gfLastMercTalkedAboutKillingID != NOBODY && !( gfLastMercTalkedAboutKillingID->flags.uiStatusFlags & SOLDIER_MONSTER ) ) ) { #ifdef NEWMUSIC GlobalSoundID = MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalVictory[gbWorldSectorZ]; @@ -7795,7 +7766,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) if (!is_networked) ShouldBeginAutoBandage( ); } - else if ( gfLastMercTalkedAboutKillingID != NOBODY && ( MercPtrs[ gfLastMercTalkedAboutKillingID ]->flags.uiStatusFlags & SOLDIER_MONSTER ) ) + else if ( gfLastMercTalkedAboutKillingID != NOBODY && ( gfLastMercTalkedAboutKillingID->flags.uiStatusFlags & SOLDIER_MONSTER ) ) { // OJW - 20081222 - dont auto-bandage if networked if (!is_networked) @@ -7817,11 +7788,11 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) { // OK, If we have just finished a battle with creatures........ play killed creature quote... // - if ( gfLastMercTalkedAboutKillingID != NOBODY && ( MercPtrs[ gfLastMercTalkedAboutKillingID ]->flags.uiStatusFlags & SOLDIER_MONSTER ) ) + if ( gfLastMercTalkedAboutKillingID != NOBODY && ( gfLastMercTalkedAboutKillingID->flags.uiStatusFlags & SOLDIER_MONSTER ) ) { } - else if ( gfLastMercTalkedAboutKillingID != NOBODY && ( MercPtrs[ gfLastMercTalkedAboutKillingID ]->ubBodyType == BLOODCAT ) ) + else if ( gfLastMercTalkedAboutKillingID != NOBODY && ( gfLastMercTalkedAboutKillingID->ubBodyType == BLOODCAT ) ) { SayBattleSoundFromAnyBodyInSector( BATTLE_SOUND_COOL1 ); } @@ -7856,9 +7827,10 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) // Loop through all militia and restore them to peaceful status - cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++,pTeamSoldier++) + SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN; @@ -7888,8 +7860,9 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) // Loop through all civs and restore them to peaceful status cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { pTeamSoldier->aiData.bAlertStatus = STATUS_GREEN; @@ -7942,7 +7915,10 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) // Flugente: in any case, reset creature attack variables ResetCreatureAttackVariables(); - // sevenfm: switch off radio + // sevenfm: pick up dropped backpacks + HandleTBPickUpBackpacks(TRUE); + + // sevenfm: switch off radio //SwitchOffAllRadio(); // If we are the server, we escape this function at the top if we think the game should still be running @@ -7965,10 +7941,9 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) void CycleThroughKnownEnemies( BOOLEAN backward ) { // static to indicate last position we were at: - SOLDIERTYPE *pSoldier; - static BOOLEAN fFirstTime = TRUE; - static UINT16 usStartToLook; - UINT32 cnt; + static BOOLEAN fFirstTime = TRUE; + static SoldierID usStartToLook; + SoldierID enemy; BOOLEAN fEnemyBehindStartLook = FALSE; BOOLEAN fEnemiesFound = FALSE; @@ -7979,30 +7954,31 @@ void CycleThroughKnownEnemies( BOOLEAN backward ) if(backward) usStartToLook = TOTAL_SOLDIERS; else - usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; } - if(backward) - for ( cnt = TOTAL_SOLDIERS-1 , pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt--, pSoldier-- ) + if (backward) + { + for ( enemy = TOTAL_SOLDIERS-1; enemy >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; --enemy ) { // try to find first active, OK enemy - if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) + if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) ) { - if ( pSoldier->bVisible != -1 ) + if ( enemy->bVisible != -1 ) { fEnemiesFound = TRUE; // If we are < ok start, this is the one! - if ( cnt < usStartToLook ) + if ( enemy < usStartToLook ) { - usStartToLook = (UINT16)cnt; + usStartToLook = enemy; // Locate to! //LocateSoldier( pSoldier->ubID, 1 ); //ATE: Change to Slide To... - SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); + SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR ); return; } else @@ -8012,31 +7988,34 @@ void CycleThroughKnownEnemies( BOOLEAN backward ) } } } + } else - for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ ) { - // try to find first active, OK enemy - if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) + for ( enemy = gTacticalStatus.Team[gbPlayerNum].bLastID; enemy < TOTAL_SOLDIERS; ++enemy ) { - if ( pSoldier->bVisible != -1 ) + // try to find first active, OK enemy + if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) ) { - fEnemiesFound = TRUE; - - // If we are > ok start, this is the one! - if ( cnt > usStartToLook ) + if (enemy->bVisible != -1) { - usStartToLook = (UINT16)cnt; + fEnemiesFound = TRUE; - // Locate to! - //LocateSoldier( pSoldier->ubID, 1 ); + // If we are > ok start, this is the one! + if (enemy > usStartToLook) + { + usStartToLook = enemy; - //ATE: Change to Slide To... - SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); - return; - } - else - { - fEnemyBehindStartLook = TRUE; + // Locate to! + //LocateSoldier( pSoldier->ubID, 1 ); + + //ATE: Change to Slide To... + SlideTo(enemy, SETANDREMOVEPREVIOUSLOCATOR); + return; + } + else + { + fEnemyBehindStartLook = TRUE; + } } } } @@ -8058,39 +8037,34 @@ void CycleThroughKnownEnemies( BOOLEAN backward ) } else { - usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - - CycleThroughKnownEnemies( ); - } + usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + CycleThroughKnownEnemies( ); + } } } void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier ) { - // static to indicate last position we were at: - SOLDIERTYPE *pSoldier; - UINT16 usStartToLook; - UINT32 cnt; + SoldierID enemy; + SoldierID usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - - for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ ) + for ( enemy = gTacticalStatus.Team[ gbPlayerNum ].bLastID; enemy < TOTAL_SOLDIERS; ++enemy ) { // try to find first active, OK enemy - if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) + if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) ) { - if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) + if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY ) { // If we are > ok start, this is the one! - if ( cnt > pSrcSoldier->ubLastEnemyCycledID ) + if ( enemy > pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = enemy; //ATE: Change to Slide To... - SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); + SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR ); - ChangeInterfaceLevel( pSoldier->pathing.bLevel ); + ChangeInterfaceLevel( enemy->pathing.bLevel ); return; } } @@ -8102,58 +8076,51 @@ void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier ) usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ ) + for ( enemy = gTacticalStatus.Team[ gbPlayerNum ].bLastID; enemy < TOTAL_SOLDIERS; ++enemy ) { // try to find first active, OK enemy - if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) + if (enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) ) { - if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) + if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY ) { // If we are > ok start, this is the one! - if ( cnt > pSrcSoldier->ubLastEnemyCycledID ) + if ( enemy > pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = enemy; //ATE: Change to Slide To... - SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); + SlideTo(enemy, SETANDREMOVEPREVIOUSLOCATOR ); - ChangeInterfaceLevel( pSoldier->pathing.bLevel ); + ChangeInterfaceLevel( enemy->pathing.bLevel ); return; } } } } - - } void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier ) { - // static to indicate last position we were at: - SOLDIERTYPE *pSoldier; - UINT16 usStartToLook; - UINT32 cnt; + SoldierID enemy; + SoldierID usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - -// for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt < TOTAL_SOLDIERS; cnt++, pSoldier++ ) - for ( cnt = TOTAL_SOLDIERS-1, pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ gbPlayerNum ].bLastID ; cnt--, pSoldier-- ) + for ( enemy = TOTAL_SOLDIERS-1; enemy >= gTacticalStatus.Team[ gbPlayerNum ].bLastID ; --enemy ) { // try to find first active, OK enemy - if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) + if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) ) { - if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) + if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY ) { // If we are > ok start, this is the one! - if ( cnt < pSrcSoldier->ubLastEnemyCycledID ) + if ( enemy < pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = enemy; //ATE: Change to Slide To... - SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); + SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR ); - ChangeInterfaceLevel( pSoldier->pathing.bLevel ); + ChangeInterfaceLevel( enemy->pathing.bLevel ); return; } } @@ -8165,24 +8132,23 @@ void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier ) usStartToLook = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - //for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID, pSoldier = MercPtrs[ cnt ]; cnt >= 0; cnt--, pSoldier-- ) - for ( cnt = TOTAL_SOLDIERS-1, pSoldier = MercPtrs[ cnt ]; cnt >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt--, pSoldier-- ) + for ( enemy = TOTAL_SOLDIERS-1; enemy >= gTacticalStatus.Team[ gbPlayerNum ].bLastID; --enemy ) { // try to find first active, OK enemy - if ( pSoldier->bActive && pSoldier->bInSector && !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum) && (pSoldier->stats.bLife > 0) ) + if ( enemy->bActive && enemy->bInSector && !enemy->aiData.bNeutral && (enemy->bSide != gbPlayerNum) && (enemy->stats.bLife > 0) ) { - if ( pSrcSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) + if ( pSrcSoldier->aiData.bOppList[ enemy ] == SEEN_CURRENTLY ) { // If we are > ok start, this is the one! - if ( cnt < pSrcSoldier->ubLastEnemyCycledID ) + if ( enemy < pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = enemy; //ATE: Change to Slide To... - SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); + SlideTo( enemy, SETANDREMOVEPREVIOUSLOCATOR ); - ChangeInterfaceLevel( pSoldier->pathing.bLevel ); + ChangeInterfaceLevel( enemy->pathing.bLevel ); return; } } @@ -8192,12 +8158,12 @@ void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier ) UINT32 CountNonVehiclesOnPlayerTeam( ) { - UINT32 cnt; - SOLDIERTYPE *pSoldier; - UINT32 bNumber = 0; + SOLDIERTYPE *pSoldier; + UINT32 bNumber = 0; - for ( cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pSoldier = MercPtrs[ cnt ]; cnt <= (UINT32)( gTacticalStatus.Team[ gbPlayerNum ].bLastID ); cnt++, pSoldier++ ) + for ( SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { bNumber++; @@ -8205,7 +8171,6 @@ UINT32 CountNonVehiclesOnPlayerTeam( ) } return( bNumber ); - } @@ -8220,11 +8185,11 @@ BOOLEAN PlayerTeamFull( ) return( TRUE ); } -UINT8 NumPCsInSector( ) +UINT16 NumPCsInSector( ) { SOLDIERTYPE *pTeamSoldier; UINT32 cnt = 0; - UINT8 ubNumPlayers = 0; + UINT16 ubNumPlayers = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8245,11 +8210,11 @@ UINT8 NumPCsInSector( ) } -UINT8 NumEnemyInSector( ) +UINT16 NumEnemyInSector( ) { SOLDIERTYPE *pTeamSoldier; INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8269,11 +8234,11 @@ UINT8 NumEnemyInSector( ) } -UINT8 NumZombiesInSector( ) +UINT16 NumZombiesInSector( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumZombies = 0; + INT32 cnt = 0; + UINT16 ubNumZombies = 0; for ( pTeamSoldier = Menptr, cnt = 0; cnt < TOTAL_SOLDIERS; ++pTeamSoldier, ++cnt ) { @@ -8289,11 +8254,11 @@ UINT8 NumZombiesInSector( ) return( ubNumZombies ); } -UINT8 NumEnemyInSectorExceptCreatures() +UINT16 NumEnemyInSectorExceptCreatures() { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8314,11 +8279,11 @@ UINT8 NumEnemyInSectorExceptCreatures() } -UINT8 NumEnemyInSectorNotDeadOrDying( ) +UINT16 NumEnemyInSectorNotDeadOrDying( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8349,11 +8314,11 @@ UINT8 NumEnemyInSectorNotDeadOrDying( ) } -UINT8 NumBloodcatsInSectorNotDeadOrDying( ) +UINT16 NumBloodcatsInSectorNotDeadOrDying( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8388,11 +8353,11 @@ UINT8 NumBloodcatsInSectorNotDeadOrDying( ) } -UINT8 NumCapableEnemyInSector( ) +UINT16 NumCapableEnemyInSector( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8435,18 +8400,18 @@ UINT8 NumCapableEnemyInSector( ) BOOLEAN CheckForLosingEndOfBattle( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - INT8 bNumDead = 0, bNumNotOK = 0, bNumInBattle = 0, bNumNotOKRealMercs = 0; - BOOLEAN fMadeCorpse; - BOOLEAN fDoCapture = FALSE; - BOOLEAN fOnlyEPCsLeft = TRUE; - BOOLEAN fMilitiaInSector = FALSE; + UINT16 bNumDead = 0, bNumNotOK = 0, bNumInBattle = 0, bNumNotOKRealMercs = 0; + BOOLEAN fMadeCorpse; + BOOLEAN fDoCapture = FALSE; + BOOLEAN fOnlyEPCsLeft = TRUE; + BOOLEAN fMilitiaInSector = FALSE; // ATE: Check for MILITIA - we won't lose if we have some..... - cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++,pTeamSoldier++) + SoldierID cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bSide == gbPlayerNum ) { if ( pTeamSoldier->stats.bLife >= OKLIFE ) @@ -8463,8 +8428,9 @@ BOOLEAN CheckForLosingEndOfBattle( ) cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Are we active and in sector..... if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { @@ -8549,8 +8515,9 @@ BOOLEAN CheckForLosingEndOfBattle( ) // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Are we active and in sector..... if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { @@ -8619,14 +8586,15 @@ BOOLEAN KillIncompacitatedEnemyInSector( ) { // KIll...... // SANDRO - if the soldier is bleeding out, consider this damage as done by the last attacker + SoldierID usAttacker = NOBODY; if ( pTeamSoldier->ubAttackerID != NOBODY ) - pTeamSoldier->SoldierTakeDamage( ANIM_CROUCH, pTeamSoldier->stats.bLife, 100, TAKE_DAMAGE_BLOODLOSS, pTeamSoldier->ubAttackerID, NOWHERE, 0, TRUE ); + usAttacker = pTeamSoldier->ubAttackerID; else if ( pTeamSoldier->ubPreviousAttackerID != NOBODY ) - pTeamSoldier->SoldierTakeDamage( ANIM_CROUCH, pTeamSoldier->stats.bLife, 100, TAKE_DAMAGE_BLOODLOSS, pTeamSoldier->ubPreviousAttackerID, NOWHERE, 0, TRUE ); + usAttacker = pTeamSoldier->ubPreviousAttackerID; else if ( pTeamSoldier->ubNextToPreviousAttackerID != NOBODY ) - pTeamSoldier->SoldierTakeDamage( ANIM_CROUCH, pTeamSoldier->stats.bLife, 100, TAKE_DAMAGE_BLOODLOSS, pTeamSoldier->ubNextToPreviousAttackerID, NOWHERE, 0, TRUE ); - else - pTeamSoldier->SoldierTakeDamage( ANIM_CROUCH, pTeamSoldier->stats.bLife, 100, TAKE_DAMAGE_BLOODLOSS, NOBODY, NOWHERE, 0, TRUE ); + usAttacker = pTeamSoldier->ubNextToPreviousAttackerID; + + pTeamSoldier->SoldierTakeDamage( ANIM_CROUCH, pTeamSoldier->stats.bLife, 100, TAKE_DAMAGE_BLOODLOSS, usAttacker, NOWHERE, 0, TRUE ); fReturnVal = TRUE; } @@ -8791,9 +8759,9 @@ INT8 CalcSuppressionTolerance( SOLDIERTYPE * pSoldier ) return( bTolerance ); } -extern void IncrementWatchedLoc(UINT8 ubID, INT32 sGridNo, INT8 bLevel); +extern void IncrementWatchedLoc(UINT16 ubID, INT32 sGridNo, INT8 bLevel); -void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker ) +void HandleSuppressionFire( SoldierID ubTargetedMerc, SoldierID ubCausedAttacker ) { /////////////////////////////////////////////////////////////////////////////// // @@ -8825,7 +8793,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker ) //////////////////////////////////////////////////////////////////////////////////////////////////// // SANDRO - modify suppression effectiveness based on weapon caliber (i.e. damage) INT16 sFinalSuppressionEffectiveness = gGameExternalOptions.sSuppressionEffectiveness; - pAttacker = MercPtrs[ubCausedAttacker]; + pAttacker = ubCausedAttacker; if (pAttacker && pAttacker->inv[pAttacker->ubAttackingHand].exists() && Item[pAttacker->inv[pAttacker->ubAttackingHand].usItem].usItemClass == IC_GUN) { OBJECTTYPE *pWeapon = &pAttacker->inv[pAttacker->ubAttackingHand]; @@ -9172,7 +9140,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker ) // "Soldier is pinned down!" ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113HAMMessage[1], pSoldier->GetName() ); // HEADROCK HAM 3.2: Added a radio locator! - ShowRadioLocator( (UINT8)pSoldier->ubID, SHOW_LOCATOR_NORMAL ); + ShowRadioLocator( pSoldier->ubID, SHOW_LOCATOR_NORMAL ); } } } @@ -9571,11 +9539,10 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) // Strange as this may seem, this function returns a pointer to // the *target* in case the target has changed sides as a result // of being attacked - SOLDIERTYPE * pSoldier; - SOLDIERTYPE * pTarget; - BOOLEAN fEnterCombat = FALSE; - UINT32 cnt; - UINT8 ubID; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pTarget; + BOOLEAN fEnterCombat = FALSE; + SoldierID ubID; // if ((gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT)) @@ -9619,18 +9586,17 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) if (gTacticalStatus.ubCurrentTeam == gbPlayerNum && gusSelectedSoldier < TOTAL_SOLDIERS) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; } else { - for (cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; - cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; - cnt++) + for ( SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; + id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; + ++id) { - if (MercPtrs[ cnt ] && - MercPtrs[ cnt ]->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL) + if (id != NOBODY && id->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = id; break; } } @@ -9646,7 +9612,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) return( NULL ); } - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; } if (!pSoldier) @@ -9664,7 +9630,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) pTarget = NULL; if (pSoldier->ubTargetID != NOBODY) { - pTarget = MercPtrs[ pSoldier->ubTargetID ]; + pTarget = pSoldier->ubTargetID; } // Flugente 18-07-22: commenting this out - it doesn't do harm in realtime, and is more realistic @@ -9731,14 +9697,12 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) { // Loop through our team, make guys who can see this fly away.... { - UINT32 cnt; - SOLDIERTYPE *pTeamSoldier; - UINT8 ubTeam; + SOLDIERTYPE *pTeamSoldier; + UINT8 ubTeam = pTarget->bTeam; - ubTeam = pTarget->bTeam; - - for ( cnt = gTacticalStatus.Team[ ubTeam ].bFirstID, pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; cnt++, pTeamSoldier++ ) + for ( SoldierID cnt = gTacticalStatus.Team[ ubTeam ].bFirstID; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { if ( pTeamSoldier->ubBodyType == CROW ) @@ -9872,21 +9836,22 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) // Turn off item lock for locators... gTacticalStatus.fLockItemLocators = FALSE; // Slide to location! - SlideToLocation( 0, gTacticalStatus.usItemsSeenOnAttackGridNo ); + SlideToLocation( gTacticalStatus.usItemsSeenOnAttackGridNo ); } } if ( gTacticalStatus.uiFlags & CHECK_SIGHT_AT_END_OF_ATTACK ) { - UINT8 ubLoop; + SoldierID ubLoop; SOLDIERTYPE * pSightSoldier; AllTeamsLookForAll( FALSE ); // call fov code ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSightSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pSightSoldier++ ) + for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop ) { + pSightSoldier = ubLoop; if ( pSightSoldier->bActive && pSightSoldier->bInSector ) { RevealRoofsAndItems( pSightSoldier, TRUE, FALSE, pSightSoldier->pathing.bLevel, FALSE ); @@ -9955,7 +9920,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Reset various flags and values that should be 0 once the action is overwith - for (cnt = 0; cnt < guiNumMercSlots; cnt++) + for (UINT32 cnt = 0; cnt < guiNumMercSlots; cnt++) { pSoldier = MercSlots[ cnt ]; if ( pSoldier ) @@ -10167,7 +10132,7 @@ void RemoveManFromTeam( INT8 bTeam ) void RemoveSoldierFromTacticalSector( SOLDIERTYPE *pSoldier, BOOLEAN fAdjustSelected ) { - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE *pNewSoldier; // reset merc's opplist @@ -10260,9 +10225,9 @@ void EndBattleWithUnconsciousGuysCallback( UINT8 bExitValue ) void InitializeTacticalStatusAtBattleStart( ) { - INT8 bLoop; - INT32 cnt; - SOLDIERTYPE * pSoldier; + INT8 bLoop; + SoldierID cnt; + SOLDIERTYPE *pSoldier; gTacticalStatus.ubArmyGuysKilled = 0; gTacticalStatus.bOriginalSizeOfEnemyForce = 0; @@ -10276,10 +10241,10 @@ void InitializeTacticalStatusAtBattleStart( ) gTacticalStatus.ubPanicTolerance[ bLoop ] = 0; } - for( cnt = 0; cnt < MAXTEAMS; cnt++ ) + for( bLoop = 0; bLoop < MAXTEAMS; bLoop++ ) { - gTacticalStatus.Team[ cnt ].ubLastMercToRadio = NOBODY; - gTacticalStatus.Team[ cnt ].bAwareOfOpposition = FALSE; + gTacticalStatus.Team[ bLoop ].ubLastMercToRadio = NOBODY; + gTacticalStatus.Team[ bLoop ].bAwareOfOpposition = FALSE; } gTacticalStatus.ubTheChosenOne = NOBODY; @@ -10287,19 +10252,18 @@ void InitializeTacticalStatusAtBattleStart( ) ClearIntList(); // make sure none of our guys have leftover shock values etc - for ( cnt = gTacticalStatus.Team[ 0 ].bFirstID; cnt <= gTacticalStatus.Team[ 0 ].bLastID; cnt++ ) + for ( cnt = gTacticalStatus.Team[ 0 ].bFirstID; cnt <= gTacticalStatus.Team[ 0 ].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; pSoldier->aiData.bShock = 0; pSoldier->bTilesMoved = 0; } // loop through everyone; clear misc flags - for ( cnt = 0; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ) + for ( cnt = 0; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { - MercPtrs[ cnt ]->ubMiscSoldierFlags = 0; + cnt->ubMiscSoldierFlags = 0; } - } @@ -10348,16 +10312,15 @@ void CaptureTimerCallback( ) void DoPOWPathChecks( ) { - INT32 iLoop; SOLDIERTYPE *pSoldier; BOOLEAN is_this_tixa = (gWorldSectorX == gModSettings.ubTixaPrisonSectorX && gWorldSectorY == gModSettings.ubTixaPrisonSectorY); // loop through all mercs on our team and if they are POWs in sector, do POW path check and // put on a squad if available - for ( iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; iLoop++ ) + for ( SoldierID iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++iLoop ) { - pSoldier = MercPtrs[ iLoop ]; + pSoldier = iLoop; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->bAssignment == ASSIGNMENT_POW ) { @@ -10397,7 +10360,6 @@ void DoPOWPathChecks( ) BOOLEAN HostileCiviliansPresent( ) { - INT32 iLoop; SOLDIERTYPE * pSoldier; if ( gTacticalStatus.Team[ CIV_TEAM ].bTeamActive == FALSE ) @@ -10405,9 +10367,9 @@ BOOLEAN HostileCiviliansPresent( ) return( FALSE ); } - for ( iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iLoop++ ) + for ( SoldierID iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iLoop ) { - pSoldier = MercPtrs[ iLoop ]; + pSoldier = iLoop; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && !pSoldier->aiData.bNeutral ) { @@ -10420,17 +10382,16 @@ BOOLEAN HostileCiviliansPresent( ) BOOLEAN HostileCiviliansWithGunsPresent( ) { - INT32 iLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; if ( gTacticalStatus.Team[ CIV_TEAM ].bTeamActive == FALSE ) { return( FALSE ); } - for ( iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iLoop++ ) + for ( SoldierID iLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iLoop ) { - pSoldier = MercPtrs[ iLoop ]; + pSoldier = iLoop; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && !pSoldier->aiData.bNeutral ) { @@ -10447,17 +10408,16 @@ BOOLEAN HostileCiviliansWithGunsPresent( ) BOOLEAN HostileBloodcatsPresent( ) { - INT32 iLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE ) { return( FALSE ); } - for ( iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; iLoop++ ) + for ( SoldierID iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop ) { - pSoldier = MercPtrs[ iLoop ]; + pSoldier = iLoop; //KM : Aug 11, 1999 -- Patch fix: Removed the check for bNeutral. Bloodcats automatically become hostile // on site. Because the check used to be there, it was possible to get into a 2nd battle elsewhere @@ -10473,17 +10433,16 @@ BOOLEAN HostileBloodcatsPresent( ) BOOLEAN HostileZombiesPresent( ) { - INT32 iLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE ) { return( FALSE ); } - for ( iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop ) + for ( SoldierID iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop ) { - pSoldier = MercPtrs[ iLoop ]; + pSoldier = iLoop; if ( pSoldier && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->IsZombie( ) ) { @@ -10503,9 +10462,9 @@ BOOLEAN HostileCreaturesPresent() return( FALSE ); } - for ( INT32 iLoop = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; iLoop <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++iLoop ) + for ( SoldierID iLoop = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; iLoop <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++iLoop ) { - pSoldier = MercPtrs[iLoop]; + pSoldier = iLoop; if ( pSoldier && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) { @@ -10519,12 +10478,10 @@ BOOLEAN HostileCreaturesPresent() void HandleCreatureTenseQuote( ) { // WDS - make number of mercenaries, etc. be configurable - // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + SoldierID ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = {}; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt; INT32 uiTime; @@ -10542,15 +10499,16 @@ void HandleCreatureTenseQuote( ) gTacticalStatus.uiCreatureTenseQuoteLastUpdate = uiTime; // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = cnt; ubNumMercs++; } } @@ -10558,9 +10516,9 @@ void HandleCreatureTenseQuote( ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); - DoCreatureTensionQuote ( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ] ); + DoCreatureTensionQuote ( ubMercsInSector[ ubChosenMerc ] ); } // Adjust delay.... @@ -10671,9 +10629,9 @@ INT8 CheckStatusNearbyFriendlies( SOLDIERTYPE *pSoldier ) INT8 bLevelDifference = 0; // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter ) { - pLeader = MercPtrs[ iCounter ]; + pLeader = iCounter; // Make sure that character is alive, not too shocked, and conscious, and of higher experience level // than the character being suppressed. if (pLeader != pSoldier && pLeader->bActive && pLeader->aiData.bShock < pLeader->stats.bLeadership/5 && @@ -10763,9 +10721,9 @@ INT8 CheckStatusNearbyFriendliesSimple(SOLDIERTYPE *pSoldier) } // Run through each friendly. - for (UINT8 ubFriend = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; ubFriend <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ubFriend ++) + for ( SoldierID ubFriend = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; ubFriend <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++ubFriend) { - pFriend = MercPtrs[ ubFriend ]; + pFriend = ubFriend; // Make sure that character is alive and active if (pFriend && @@ -10876,11 +10834,11 @@ BOOLEAN CanMsgBoxForPlayerToBeNotifiedOfSomeoneElseInSector() } -INT8 NumMercsOnPlayerTeam( ) +UINT16 NumMercsOnPlayerTeam( ) { - INT32 cnt; + INT32 cnt; SOLDIERTYPE *pSoldier; - UINT8 ubCount = 0; + UINT16 ubCount = 0; cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; @@ -10906,7 +10864,7 @@ void HandleDisplayingOfPlayerLostDialogue( ) } #endif -static UINT8 prisonerdialoguetargetID = NOBODY; +static SoldierID prisonerdialoguetargetID = NOBODY; void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue ) { @@ -10916,14 +10874,14 @@ void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue ) || gusSelectedSoldier == NOBODY ) return; - SOLDIERTYPE* pSoldier = MercPtrs[prisonerdialoguetargetID]; + SOLDIERTYPE* pSoldier = prisonerdialoguetargetID; if ( !pSoldier ) return; INT16 approachselected = DropDownTemplate::getInstance().GetSelectedEntryKey(); - UINT8 approachchance = MercPtrs[gusSelectedSoldier]->GetTurncoatConvinctionChance( prisonerdialoguetargetID, approachselected ); + UINT8 approachchance = gusSelectedSoldier->GetTurncoatConvinctionChance( prisonerdialoguetargetID, approachselected ); // you can never turn a VIP (though we don't tell the player if someone is a VIP, lest they have an exploit to find out) if ( pSoldier->usSoldierFlagMask & SOLDIER_VIP ) @@ -10941,24 +10899,24 @@ void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue ) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szTurncoatText[0], pSoldier->GetName() ); // increase intel penalty. We can only try to convert enemies if the penalty is low, and having a high penalty means we can't mine intel for a few hours but have to hide - MercPtrs[gusSelectedSoldier]->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] += 1; + gusSelectedSoldier->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] += 1; - StatChange( MercPtrs[gusSelectedSoldier], EXPERAMT, 2, FROM_SUCCESS ); - StatChange( MercPtrs[gusSelectedSoldier], LDRAMT, 4, FROM_SUCCESS ); + StatChange( gusSelectedSoldier, EXPERAMT, 2, FROM_SUCCESS ); + StatChange( gusSelectedSoldier, LDRAMT, 4, FROM_SUCCESS ); } else { ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szTurncoatText[1], pSoldier->GetName() ); // increase intel penalty. We can only try to convert enemies if the penalty is low, and having a high penalty means we can't mine intel for a few hours but have to hide - MercPtrs[gusSelectedSoldier]->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] += 4; + gusSelectedSoldier->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] += 4; - StatChange( MercPtrs[gusSelectedSoldier], EXPERAMT, 1, FROM_FAILURE ); - StatChange( MercPtrs[gusSelectedSoldier], LDRAMT, 1, FROM_FAILURE ); + StatChange( gusSelectedSoldier, EXPERAMT, 1, FROM_FAILURE ); + StatChange( gusSelectedSoldier, LDRAMT, 1, FROM_FAILURE ); } // explain that suspicion is so high that we have to stop - if ( MercPtrs[gusSelectedSoldier]->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] >= 20 ) + if ( gusSelectedSoldier->usSkillCooldown[SOLDIER_COOLDOWN_INTEL_PENALTY] >= 20 ) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szTurncoatText[2] ); // use up resources spent, regardless of whether or not we were successful @@ -10967,7 +10925,7 @@ void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue ) INT32 bribeamount = 10 * min( 10, CurrentPlayerProgressPercentage() ); // substract money spent - AddTransactionToPlayersBook ( TRANSFER_FUNDS_TO_MERC, MercPtrs[gusSelectedSoldier]->ubProfile, GetWorldTotalMin(), -bribeamount ); + AddTransactionToPlayersBook ( TRANSFER_FUNDS_TO_MERC, gusSelectedSoldier->ubProfile, GetWorldTotalMin(), -bribeamount ); } else if ( approachselected == 4 ) { @@ -10977,7 +10935,7 @@ void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue ) } // spend AP - DeductPoints( MercPtrs[gusSelectedSoldier], APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); + DeductPoints( gusSelectedSoldier, APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); //ReduceAttackBusyCount(); } @@ -11002,12 +10960,12 @@ void HandleTurncoatAttempt( SOLDIERTYPE* pSoldier ) std::vector > dropdownvector_1; INT16 cnt = 1; - UINT8 chance = MercPtrs[gusSelectedSoldier]->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); + UINT8 chance = gusSelectedSoldier->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); swprintf( gTurncoatDropdownText[cnt-1], szTurncoatText[3], chance ); dropdownvector_1.push_back( std::make_pair( cnt, gTurncoatDropdownText[cnt - 1] ) ); ++cnt; - chance = MercPtrs[gusSelectedSoldier]->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); + chance = gusSelectedSoldier->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); swprintf( gTurncoatDropdownText[cnt - 1], szTurncoatText[4], chance ); dropdownvector_1.push_back( std::make_pair( cnt, gTurncoatDropdownText[cnt - 1] ) ); @@ -11016,7 +10974,7 @@ void HandleTurncoatAttempt( SOLDIERTYPE* pSoldier ) INT32 bribeamount = 10 * min( 10, ubCurrentProgress ); if ( bribeamount <= balance ) { - chance = MercPtrs[gusSelectedSoldier]->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); + chance = gusSelectedSoldier->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); swprintf( gTurncoatDropdownText[cnt - 1], szTurncoatText[5], bribeamount, chance ); dropdownvector_1.push_back( std::make_pair( cnt, gTurncoatDropdownText[cnt - 1] ) ); } @@ -11026,7 +10984,7 @@ void HandleTurncoatAttempt( SOLDIERTYPE* pSoldier ) int intelbribeneeded = max( 2, ( ubCurrentProgress + 5 ) / 10 ); if ( intelbribeneeded <= intelreserve ) { - chance = MercPtrs[gusSelectedSoldier]->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); + chance = gusSelectedSoldier->GetTurncoatConvinctionChance( prisonerdialoguetargetID, cnt ); swprintf( gTurncoatDropdownText[cnt - 1], szTurncoatText[6], intelbribeneeded, chance ); dropdownvector_1.push_back( std::make_pair( cnt, gTurncoatDropdownText[cnt - 1] ) ); } @@ -11084,10 +11042,11 @@ void AttemptToCapturePlayerSoldiers() BeginCaptureSquence(); const UINT8 currentPOWs = gStrategicStatus.ubNumCapturedForRescue; // Do capture - UINT32 i = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID; - for (SOLDIERTYPE* pSoldier = MercPtrs[i]; i <= lastID; ++i, ++pSoldier) + SoldierID i = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID const lastID = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; i <= lastID; ++i ) { + SOLDIERTYPE *pSoldier = i; // Are we active and in sector if (pSoldier->bActive && pSoldier->bInSector && pSoldier->bAssignment != ASSIGNMENT_POW) { @@ -11119,10 +11078,11 @@ void AttemptToCapturePlayerSoldiers() // If we have any remaining active mercs in sector after capture, give them a chance to escape from the clutches of Deidranna's soldiers! bool activeMercs = false; - UINT32 i = gTacticalStatus.Team[gbPlayerNum].bFirstID; - UINT32 lastId = gTacticalStatus.Team[gbPlayerNum].bLastID; - for (SOLDIERTYPE* pSoldier = MercPtrs[i]; i <= lastId; ++i, ++pSoldier) + SoldierID i = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID lastId = gTacticalStatus.Team[gbPlayerNum].bLastID; + for ( ; i <= lastId; ++i ) { + SOLDIERTYPE *pSoldier = i; // Are we active and in sector const bool inSector = (pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ); if (pSoldier->bActive && inSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->bAssignment != ASSIGNMENT_POW) @@ -11145,13 +11105,12 @@ void AttemptToCapturePlayerSoldiers() void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) { SOLDIERTYPE *pSoldier = NULL; - UINT32 uiCnt=0; BOOLEAN success = FALSE; if ( ubExitValue == 1 ) { - SOLDIERTYPE *pSoldierToSurrender = MercPtrs[prisonerdialoguetargetID]; - DeductPoints( MercPtrs[gusSelectedSoldier], APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); + SOLDIERTYPE *pSoldierToSurrender = prisonerdialoguetargetID; + DeductPoints( gusSelectedSoldier, APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); if ( !gGameExternalOptions.fEnemyCanSurrender ) { @@ -11167,10 +11126,11 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) UINT32 enemysidestrength = 0; // player team - UINT32 firstid = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ gbPlayerNum ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ gbPlayerNum ].bLastID; + for ( ; id <= lastid; ++id ) { + pSoldier = id; if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { // if we are disguised as a civilian, the enemy does not take us into the equation - he does not consider us @@ -11186,10 +11146,11 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) } // militia team - firstid = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + id = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; lastid = gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + for ( ; id <= lastid; ++id ) { + pSoldier = id; if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { playersidestrength += pSoldier->GetSurrenderStrength(); @@ -11209,10 +11170,12 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) BOOLEAN fNoSurrender = FALSE; // shadooow: rewritten to only check soldiers from the same team - firstid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bFirstID; + SoldierID firstid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bFirstID; lastid = gTacticalStatus.Team[pSoldierToSurrender->bTeam].bLastID; - for (uiCnt = firstid, pSoldier = MercPtrs[uiCnt]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + + for (SoldierID id = firstid; id <= lastid; ++id ) { + pSoldier = id; if (pSoldier->bActive && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ)) { if (pSoldierToSurrender->bTeam == CIV_TEAM) @@ -11252,8 +11215,9 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) if ( !fNoSurrender && playersidestrength >= gGameExternalOptions.fSurrenderMultiplier * enemysidestrength ) { // it is enough to simply set all soldiers to captured - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + for ( SoldierID id = firstid; id <= lastid; ++id ) { + pSoldier = id; if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { // can this guy be captured? @@ -11273,7 +11237,7 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) // dynamic opinion: a merc caused the remaining enemies to give up if (gGameExternalOptions.fDynamicOpinions && gusSelectedSoldier != NOBODY ) - HandleDynamicOpinionChange( MercPtrs[gusSelectedSoldier], OPINIONEVENT_BATTLE_TOOK_PRISONER, TRUE, TRUE ); + HandleDynamicOpinionChange( gusSelectedSoldier, OPINIONEVENT_BATTLE_TOOK_PRISONER, TRUE, TRUE ); } else { @@ -11283,26 +11247,26 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szPrisonerTextStr[STR_PRISONER_REFUSE_SURRENDER] ); // if asking for surrender while undercover and the enemy refuses, he learns who you are, so he uncovers you - if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->usSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER) ) + if ( gusSelectedSoldier != NOBODY && gusSelectedSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER) ) { - MercPtrs[ gusSelectedSoldier ]->LooseDisguise(); + gusSelectedSoldier->LooseDisguise(); if ( gSkillTraitValues.fCOStripIfUncovered ) - MercPtrs[ gusSelectedSoldier ]->Strip(); + gusSelectedSoldier->Strip(); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_SURRENDER_FAILED] ); - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_UNCOVER_SINGLE], MercPtrs[ gusSelectedSoldier ]->GetName() ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_UNCOVER_SINGLE], gusSelectedSoldier->GetName() ); } } } // we offered to surrender OURSELVES TO the enemy else if ( ubExitValue == 2 ) { - DeductPoints( MercPtrs[gusSelectedSoldier], APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); + DeductPoints( gusSelectedSoldier, APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); - if ( !gGameExternalOptions.fPlayerCanAsktoSurrender || MercPtrs[prisonerdialoguetargetID]->bTeam == CREATURE_TEAM ) + if ( !gGameExternalOptions.fPlayerCanAsktoSurrender || prisonerdialoguetargetID->bTeam == CREATURE_TEAM ) { - StartCivQuote( MercPtrs[prisonerdialoguetargetID] ); + StartCivQuote( prisonerdialoguetargetID ); return; } @@ -11311,29 +11275,29 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) // we distract the enemy by essentially talking them to death else if ( ubExitValue == 3 ) { - DeductPoints( MercPtrs[gusSelectedSoldier], APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); + DeductPoints( gusSelectedSoldier, APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); // Flugente: if we are disguised and talk to a non-profile NPC, we will continue to 'chat' with the enemy as long as we aren't ordered to do something else. // This way we can easily order our spies to 'distract' enemies if ( GetSoldier( &pSoldier, gusSelectedSoldier ) && pSoldier->bTeam == gbPlayerNum && - MercPtrs[prisonerdialoguetargetID] && - MercPtrs[prisonerdialoguetargetID]->bTeam == ENEMY_TEAM && - MercPtrs[prisonerdialoguetargetID]->ubProfile == NO_PROFILE && - MercPtrs[prisonerdialoguetargetID]->aiData.bAlertStatus < STATUS_RED && - !MercPtrs[prisonerdialoguetargetID]->RecognizeAsCombatant( gusSelectedSoldier ) ) + prisonerdialoguetargetID && + prisonerdialoguetargetID->bTeam == ENEMY_TEAM && + prisonerdialoguetargetID->ubProfile == NO_PROFILE && + prisonerdialoguetargetID->aiData.bAlertStatus < STATUS_RED && + !prisonerdialoguetargetID->RecognizeAsCombatant( gusSelectedSoldier ) ) { // both soldiers face each other - pSoldier->EVENT_SetSoldierDesiredDirection( GetDirectionToGridNoFromGridNo( pSoldier->sGridNo, MercPtrs[prisonerdialoguetargetID]->sGridNo ) ); - MercPtrs[prisonerdialoguetargetID]->EVENT_SetSoldierDesiredDirection( GetDirectionToGridNoFromGridNo( MercPtrs[prisonerdialoguetargetID]->sGridNo, pSoldier->sGridNo ) ); + pSoldier->EVENT_SetSoldierDesiredDirection( GetDirectionToGridNoFromGridNo( pSoldier->sGridNo, prisonerdialoguetargetID->sGridNo ) ); + prisonerdialoguetargetID->EVENT_SetSoldierDesiredDirection( GetDirectionToGridNoFromGridNo( prisonerdialoguetargetID->sGridNo, pSoldier->sGridNo ) ); - MercPtrs[prisonerdialoguetargetID]->usChatPartnerID = gusSelectedSoldier; + prisonerdialoguetargetID->usChatPartnerID = gusSelectedSoldier; pSoldier->usChatPartnerID = prisonerdialoguetargetID; } else { // normal dialog - StartCivQuote( MercPtrs[prisonerdialoguetargetID] ); + StartCivQuote( prisonerdialoguetargetID ); } } else @@ -11342,21 +11306,21 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) if (gSkillTraitValues.fCOTurncoats == TRUE && GetSoldier( &pSoldier, gusSelectedSoldier ) && pSoldier->bTeam == gbPlayerNum && - MercPtrs[prisonerdialoguetargetID] && - MercPtrs[prisonerdialoguetargetID]->bTeam == ENEMY_TEAM && - MercPtrs[prisonerdialoguetargetID]->ubProfile == NO_PROFILE && - MercPtrs[prisonerdialoguetargetID]->aiData.bAlertStatus < STATUS_RED && - !MercPtrs[prisonerdialoguetargetID]->RecognizeAsCombatant( gusSelectedSoldier ) ) + prisonerdialoguetargetID && + prisonerdialoguetargetID->bTeam == ENEMY_TEAM && + prisonerdialoguetargetID->ubProfile == NO_PROFILE && + prisonerdialoguetargetID->aiData.bAlertStatus < STATUS_RED && + !prisonerdialoguetargetID->RecognizeAsCombatant( gusSelectedSoldier ) ) { MSYS_RemoveRegion(&(gMsgBox.BackRegion)); - pSoldier->UseSkill(SKILLS_CREATE_TURNCOAT, MercPtrs[prisonerdialoguetargetID]->sGridNo, MercPtrs[prisonerdialoguetargetID]->ubID); + pSoldier->UseSkill(SKILLS_CREATE_TURNCOAT, prisonerdialoguetargetID->sGridNo, prisonerdialoguetargetID->ubID); // AP reduction is handled inside the turncoat attempt flow (TurnCoatAttemptMessageBoxCallBack) } else { // normal dialog - DeductPoints( MercPtrs[gusSelectedSoldier], APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); - StartCivQuote(MercPtrs[prisonerdialoguetargetID]); + DeductPoints( gusSelectedSoldier, APBPConstants[AP_TALK], 0, UNTRIGGERED_INTERRUPT ); + StartCivQuote(prisonerdialoguetargetID); } } @@ -11374,18 +11338,18 @@ void CheckChatPartners() SOLDIERTYPE* pSoldier = NULL; - for ( int ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) + for ( SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) { - pSoldier = MercPtrs[ubLoop]; + pSoldier = ubLoop; - if ( pSoldier && pSoldier->bVisible && pSoldier->usChatPartnerID != NOBODY && MercPtrs[pSoldier->usChatPartnerID]->bVisible ) + if ( pSoldier && pSoldier->bVisible && pSoldier->usChatPartnerID != NOBODY && pSoldier->usChatPartnerID->bVisible ) { INT16 sScreenX, sScreenY; if ( fMercQuoteThisTime ) GetSoldierScreenPos( pSoldier, &sScreenX, &sScreenY ); else - GetSoldierScreenPos( MercPtrs[pSoldier->usChatPartnerID], &sScreenX, &sScreenY ); + GetSoldierScreenPos( pSoldier->usChatPartnerID, &sScreenX, &sScreenY ); if ( gsVIEWPORT_START_X <= sScreenX && gsVIEWPORT_END_X >= sScreenX && @@ -11395,7 +11359,7 @@ void CheckChatPartners() if ( fMercQuoteThisTime ) BeginChatQuote( pSoldier, sScreenX, sScreenY ); else - BeginChatQuote( MercPtrs[pSoldier->usChatPartnerID], sScreenX, sScreenY ); + BeginChatQuote( pSoldier->usChatPartnerID, sScreenX, sScreenY ); fMercQuoteThisTime = !fMercQuoteThisTime; @@ -11467,11 +11431,11 @@ void TeamDropAll(UINT8 bTeam, BOOLEAN fForce) #endif SOLDIERTYPE *pSoldier; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ bTeam ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ bTeam ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[ bTeam ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ bTeam ].bLastID; + for ( ; id <= lastid; ++id ) { + pSoldier = id; // if soldier is in the current sector, drop all equipment (that has the TAKEN_BY_MILITIA-flag set) if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { @@ -11498,11 +11462,11 @@ void TeamRestock(UINT8 bTeam) #endif SOLDIERTYPE *pSoldier; - UINT32 uiCnt = 0; - UINT32 firstid = gTacticalStatus.Team[ bTeam ].bFirstID; - UINT32 lastid = gTacticalStatus.Team[ bTeam ].bLastID; - for ( uiCnt = firstid, pSoldier = MercPtrs[ uiCnt ]; uiCnt <= lastid; ++uiCnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[ bTeam ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ bTeam ].bLastID; + for ( ; id <= lastid; ++id ) { + pSoldier = id; if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) ) { // the function fills a createstruct, so create one @@ -11523,9 +11487,9 @@ void TeamRestock(UINT8 bTeam) } // are we allowed to steal access this guy's inventory? -BOOLEAN AllowedToStealFromTeamMate( UINT8 ubID, UINT8 ubTargetID ) +BOOLEAN AllowedToStealFromTeamMate( SoldierID ubID, SoldierID ubTargetID ) { - if ( gGameExternalOptions.fAccessOtherMercInventories && ubID != ubTargetID && MercPtrs[ubID]->bTeam == MercPtrs[ubTargetID]->bTeam && !AM_AN_EPC(MercPtrs[ubTargetID]) && !IsVehicle(MercPtrs[ubTargetID]) ) + if ( gGameExternalOptions.fAccessOtherMercInventories && ubID != ubTargetID && ubID->bTeam == ubTargetID->bTeam && !AM_AN_EPC(ubTargetID) && !IsVehicle(ubTargetID) ) return TRUE; return FALSE; @@ -11558,9 +11522,9 @@ BOOLEAN IsProfileInUse(UINT8 usTeam, INT8 aType, UINT16 aNr) } SOLDIERTYPE* pSoldier = NULL; - for( INT32 i = gTacticalStatus.Team[ usTeam ].bFirstID; i <= gTacticalStatus.Team[ usTeam ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ usTeam ].bFirstID; i <= gTacticalStatus.Team[ usTeam ].bLastID; ++i ) { - pSoldier = MercPtrs[ i ]; + pSoldier = i; if ( pSoldier && pSoldier->ubSoldierClass == searchedclass && pSoldier->usSoldierProfile == aNr ) return TRUE; @@ -11682,15 +11646,15 @@ INT8 CalcEffectiveShockLevel( SOLDIERTYPE * pSoldier ) } // Flugente: count number of enemy officers -UINT8 HighestEnemyOfficersInSector( UINT8& aType ) +UINT16 HighestEnemyOfficersInSector( UINT8& aType ) { - SOLDIERTYPE* pSoldier; - INT32 cnt = 0; - UINT8 num = 0; - UINT8 type = OFFICER_NONE; + SOLDIERTYPE *pSoldier; + UINT16 num = 0; + UINT8 type = OFFICER_NONE; - for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; pSoldier++, ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) { // count officers, but do not count those that we have already captured @@ -11710,12 +11674,12 @@ UINT8 HighestEnemyOfficersInSector( UINT8& aType ) // count all soldiers in the current sector that have a specific flag set UINT16 NumSoldiersWithFlagInSector( UINT8 aTeam, UINT32 aFlag ) { - SOLDIERTYPE* pSoldier; - INT32 cnt = 0; - UINT8 num = 0; + SOLDIERTYPE *pSoldier; + UINT16 num = 0; - for ( cnt = gTacticalStatus.Team[aTeam].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; pSoldier++, ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[aTeam].bFirstID; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) { if ( pSoldier->usSoldierFlagMask & aFlag ) @@ -11730,12 +11694,12 @@ UINT16 NumSoldiersWithFlagInSector( UINT8 aTeam, UINT32 aFlag ) UINT16 NumSoldiersofClassWithFlag2InSector( UINT8 aTeam, UINT8 aSoldierClass, UINT32 aFlag ) { - SOLDIERTYPE* pSoldier; - INT32 cnt = 0; - UINT16 num = 0; + SOLDIERTYPE *pSoldier; + UINT16 num = 0; - for ( cnt = gTacticalStatus.Team[aTeam].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; pSoldier++, ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[aTeam].bFirstID; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) { if ( (pSoldier->usSoldierFlagMask2 & aFlag) @@ -11749,14 +11713,6 @@ UINT16 NumSoldiersofClassWithFlag2InSector( UINT8 aTeam, UINT8 aSoldierClass, UI return num; } -INT32 GetClosestSoldierWithFlag( UINT8 aTeam, UINT32 aFlag ) -{ - INT32 sBestGridNo = NOWHERE; - - - - return sBestGridNo; -} // Flugente: VIP targets // can a new VIP be created? @@ -12021,11 +11977,12 @@ BOOLEAN IsCivFactionMemberAliveInSector( UINT8 usCivilianGroup ) SOLDIERTYPE *pSoldier = NULL; // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - UINT16 cnt = gTacticalStatus.Team[CIV_TEAM].bFirstID; + SoldierID cnt = gTacticalStatus.Team[CIV_TEAM].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt, ++pSoldier ) + for ( ; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) { if ( pSoldier->ubCivilianGroup == usCivilianGroup && pSoldier->stats.bLife > 0 ) @@ -12036,15 +11993,15 @@ BOOLEAN IsCivFactionMemberAliveInSector( UINT8 usCivilianGroup ) return FALSE; } -BOOLEAN IsFreeSlotAvailable( int aTeam ) +BOOLEAN IsFreeSlotAvailable( int aTeam ) { SOLDIERTYPE *pSoldier; - INT32 cnt = gTacticalStatus.Team[aTeam].bFirstID; + SoldierID cnt = gTacticalStatus.Team[aTeam].bFirstID; // run through list - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt, ++pSoldier ) + for ( ; cnt <= gTacticalStatus.Team[aTeam].bLastID; ++cnt ) { - if ( !pSoldier->bActive ) + if ( !cnt->bActive ) { return TRUE; } diff --git a/Tactical/Overhead.h b/Tactical/Overhead.h index 9c0fa095..26b10674 100644 --- a/Tactical/Overhead.h +++ b/Tactical/Overhead.h @@ -23,12 +23,12 @@ enum // TACTICAL ENGINE STATUS FLAGS typedef struct { - UINT8 bFirstID; - UINT8 bLastID; + SoldierID bFirstID; + SoldierID bLastID; COLORVAL RadarColor; INT8 bSide; - INT8 bMenInSector; - UINT8 ubLastMercToRadio; + INT16 bMenInSector; + SoldierID ubLastMercToRadio; INT8 bTeamActive; INT8 bAwareOfOpposition; INT8 bHuman; @@ -60,109 +60,108 @@ enum struct TacticalStatusType { - UINT32 uiFlags; + UINT32 uiFlags; TacticalTeamType Team[ MAXTEAMS ]; - UINT8 ubCurrentTeam; - INT32 sSlideTarget; - INT16 sSlideReason; - UINT32 uiTimeSinceMercAIStart; - INT8 fPanicFlags; - INT32 sPanicTriggerGridNoUnused; - INT16 sHandGrid; - UINT8 ubSpottersCalledForBy; - UINT8 ubTheChosenOne; - UINT32 uiTimeOfLastInput; - UINT32 uiTimeSinceDemoOn; - UINT32 uiCountdownToRestart; - BOOLEAN fGoingToEnterDemo; - BOOLEAN fNOTDOLASTDEMO; - BOOLEAN fMultiplayer; - BOOLEAN fCivGroupHostile[ NUM_CIV_GROUPS ]; - UINT8 ubLastBattleSectorX; - UINT8 ubLastBattleSectorY; - BOOLEAN fLastBattleWon; - INT8 bOriginalSizeOfEnemyForce; - INT8 bPanicTriggerIsAlarmUnused; - BOOLEAN fVirginSector; - BOOLEAN fEnemyInSector; - BOOLEAN fInterruptOccurred; - INT8 bRealtimeSpeed; - UINT8 ubEnemyIntention; - UINT8 ubEnemyIntendedRetreatDirection; - UINT8 ubEnemySightingOnTheirTurnEnemyID; - UINT8 ubEnemySightingOnTheirTurnPlayerID; - BOOLEAN fEnemySightingOnTheirTurn; - BOOLEAN fAutoBandageMode; - UINT8 ubAttackBusyCount; - INT8 bNumEnemiesFoughtInBattleUnused; - UINT8 ubEngagedInConvFromActionMercID; - UINT16 usTactialTurnLimitCounter; - BOOLEAN fInTopMessage; - UINT8 ubTopMessageType; - CHAR16 zTopMessageString[20]; - UINT16 usTactialTurnLimitMax; - UINT32 uiTactialTurnLimitClock; - BOOLEAN fTactialTurnLimitStartedBeep; - INT8 bBoxingState; - INT8 bConsNumTurnsNotSeen; - UINT8 ubArmyGuysKilled; + UINT8 ubCurrentTeam; + INT32 sSlideTarget; + INT16 sSlideReason_UNUSED; + UINT32 uiTimeSinceMercAIStart; + INT8 fPanicFlags; + INT32 sPanicTriggerGridNoUnused; + INT16 sHandGrid; + SoldierID ubSpottersCalledForBy; + SoldierID ubTheChosenOne; + UINT32 uiTimeOfLastInput; + UINT32 uiTimeSinceDemoOn; + UINT32 uiCountdownToRestart; + BOOLEAN fGoingToEnterDemo; + BOOLEAN fNOTDOLASTDEMO; + BOOLEAN fMultiplayer; + BOOLEAN fCivGroupHostile[ NUM_CIV_GROUPS ]; + UINT8 ubLastBattleSectorX; + UINT8 ubLastBattleSectorY; + BOOLEAN fLastBattleWon; + INT8 bOriginalSizeOfEnemyForce; + INT8 bPanicTriggerIsAlarmUnused; + BOOLEAN fVirginSector; + BOOLEAN fEnemyInSector; + BOOLEAN fInterruptOccurred; + INT8 bRealtimeSpeed; + UINT8 ubEnemyIntention; + UINT8 ubEnemyIntendedRetreatDirection; + SoldierID ubEnemySightingOnTheirTurnEnemyID; + SoldierID ubEnemySightingOnTheirTurnPlayerID; + BOOLEAN fEnemySightingOnTheirTurn; + BOOLEAN fAutoBandageMode; + UINT8 ubAttackBusyCount; + INT8 bNumEnemiesFoughtInBattleUnused; + UINT16 ubEngagedInConvFromActionMercID; + UINT16 usTactialTurnLimitCounter; + BOOLEAN fInTopMessage; + UINT8 ubTopMessageType; + CHAR16 zTopMessageString[20]; + UINT16 usTactialTurnLimitMax; + UINT32 uiTactialTurnLimitClock; + BOOLEAN fTactialTurnLimitStartedBeep; + INT8 bBoxingState; + INT8 bConsNumTurnsNotSeen; + UINT8 ubArmyGuysKilled; - INT32 sPanicTriggerGridNo[ NUM_PANIC_TRIGGERS ]; - INT8 bPanicTriggerIsAlarm[ NUM_PANIC_TRIGGERS ]; - UINT8 ubPanicTolerance[ NUM_PANIC_TRIGGERS ]; - BOOLEAN fAtLeastOneGuyOnMultiSelect; - BOOLEAN fSaidCreatureFlavourQuote; - BOOLEAN fHaveSeenCreature; - BOOLEAN fKilledEnemyOnAttack; - UINT8 ubEnemyKilledOnAttack; - INT8 bEnemyKilledOnAttackLevel; - UINT16 ubEnemyKilledOnAttackLocation; - BOOLEAN fItemsSeenOnAttack; - BOOLEAN ubItemsSeenOnAttackSoldier; - BOOLEAN fBeenInCombatOnce; - BOOLEAN fSaidCreatureSmellQuote; - UINT32 usItemsSeenOnAttackGridNo; - BOOLEAN fLockItemLocators; - UINT8 ubLastQuoteSaid; - UINT8 ubLastQuoteProfileNUm; - BOOLEAN fCantGetThrough; - INT32 sCantGetThroughGridNo; - INT32 sCantGetThroughSoldierGridNo; - UINT8 ubCantGetThroughID; - BOOLEAN fDidGameJustStart; - BOOLEAN fStatChangeCheatOn; - UINT8 ubLastRequesterTargetID; - BOOLEAN fGoodToAllowCrows; - UINT8 ubNumCrowsPossible; - UINT32 uiTimeCounterForGiveItemSrc; - BOOLEAN fUnLockUIAfterHiddenInterrupt; - INT8 bNumFoughtInBattle[ MAXTEAMS ]; - UINT32 uiDecayBloodLastUpdate; - UINT32 uiTimeSinceLastInTactical; - BOOLEAN fHasAGameBeenStarted; - INT8 bConsNumTurnsWeHaventSeenButEnemyDoes; - BOOLEAN fSomeoneHit; - UINT8 ubPaddingSmall; - UINT32 uiTimeSinceLastOpplistDecay; - INT8 bMercArrivingQuoteBeingUsed; - UINT8 ubEnemyKilledOnAttackKiller; - BOOLEAN fCountingDownForGuideDescription; - INT8 bGuideDescriptionCountDown; - UINT8 ubGuideDescriptionToUse; - INT8 bGuideDescriptionSectorX; - INT8 bGuideDescriptionSectorY; - INT8 fEnemyFlags; - BOOLEAN fAutoBandagePending; - BOOLEAN fHasEnteredCombatModeSinceEntering; - BOOLEAN fDontAddNewCrows; - UINT8 ubMorePadding; - UINT16 sCreatureTenseQuoteDelay; - UINT32 uiCreatureTenseQuoteLastUpdate; + INT32 sPanicTriggerGridNo[ NUM_PANIC_TRIGGERS ]; + INT8 bPanicTriggerIsAlarm[ NUM_PANIC_TRIGGERS ]; + UINT8 ubPanicTolerance[ NUM_PANIC_TRIGGERS ]; + BOOLEAN fAtLeastOneGuyOnMultiSelect; + BOOLEAN fSaidCreatureFlavourQuote; + BOOLEAN fHaveSeenCreature; + BOOLEAN fKilledEnemyOnAttack; + UINT16 ubEnemyKilledOnAttack; + INT8 bEnemyKilledOnAttackLevel; + UINT16 ubEnemyKilledOnAttackLocation; + BOOLEAN fItemsSeenOnAttack; + BOOLEAN ubItemsSeenOnAttackSoldier; + BOOLEAN fBeenInCombatOnce; + BOOLEAN fSaidCreatureSmellQuote; + UINT32 usItemsSeenOnAttackGridNo; + BOOLEAN fLockItemLocators; + UINT8 ubLastQuoteSaid; + UINT8 ubLastQuoteProfileNUm; + BOOLEAN fCantGetThrough; + INT32 sCantGetThroughGridNo; + INT32 sCantGetThroughSoldierGridNo; + SoldierID ubCantGetThroughID; + BOOLEAN fDidGameJustStart; + BOOLEAN fStatChangeCheatOn; + UINT8 ubLastRequesterTargetID; + BOOLEAN fGoodToAllowCrows; + UINT8 ubNumCrowsPossible; + UINT32 uiTimeCounterForGiveItemSrc; + BOOLEAN fUnLockUIAfterHiddenInterrupt; + INT8 bNumFoughtInBattle[ MAXTEAMS ]; + UINT32 uiDecayBloodLastUpdate; + UINT32 uiTimeSinceLastInTactical; + BOOLEAN fHasAGameBeenStarted; + INT8 bConsNumTurnsWeHaventSeenButEnemyDoes; + BOOLEAN fSomeoneHit; + UINT32 uiTimeSinceLastOpplistDecay; + INT8 bMercArrivingQuoteBeingUsed; + UINT16 ubEnemyKilledOnAttackKiller; + BOOLEAN fCountingDownForGuideDescription; + INT8 bGuideDescriptionCountDown; + UINT8 ubGuideDescriptionToUse; + INT8 bGuideDescriptionSectorX; + INT8 bGuideDescriptionSectorY; + INT8 fEnemyFlags; + BOOLEAN fAutoBandagePending; + BOOLEAN fHasEnteredCombatModeSinceEntering; + BOOLEAN fDontAddNewCrows; + UINT8 ubMorePadding; + UINT16 sCreatureTenseQuoteDelay; + UINT32 uiCreatureTenseQuoteLastUpdate; // SANDRO - added these - UINT8 ubLastRequesterSurgeryTargetID; - UINT8 ubInterruptPending; + SoldierID ubLastRequesterSurgeryTargetID; + UINT8 ubInterruptPending; // sevenfm: Ctrl+D disable interrupts - BOOLEAN ubDisablePlayerInterrupts; + BOOLEAN ubDisablePlayerInterrupts; // PADDING GONE!!!!! }; @@ -171,8 +170,7 @@ struct TacticalStatusType extern UINT8 gbPlayerNum; extern INT8 gbShowEnemies; -extern UINT16 gusSelectedSoldier; -extern UINT16 gusOldSelectedSoldier; +extern SoldierID gusSelectedSoldier; extern CHAR8 gzAlertStr[][ 30 ]; extern CHAR8 gzActionStr[][ 30 ]; @@ -205,7 +203,7 @@ void ShutdownTacticalEngine( ); BOOLEAN InitOverhead( ); BOOLEAN ShutdownOverhead( ); -BOOLEAN GetSoldier( SOLDIERTYPE **ppSoldier, UINT16 usSoldierIndex ); +BOOLEAN GetSoldier( SOLDIERTYPE **ppSoldier, SoldierID usSoldierIndex ); UINT32 CountNonVehiclesOnPlayerTeam( ); @@ -226,25 +224,25 @@ void EndTurn( UINT8 ubNextTeam ); void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode ); void EndTacticalDemo( ); -void SelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect ); +void SelectSoldier( SoldierID usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect ); //Kaiden: Function declaration from UB to reveal all items after combat. void RevealAllDroppedEnemyItems(); void LocateGridNo( INT32 sGridNo ); -void LocateSoldier( UINT16 usID, BOOLEAN fSetLocator); +void LocateSoldier( SoldierID usID, BOOLEAN fSetLocator); void BeginTeamTurn( UINT8 ubTeam ); -void SlideTo(INT32 sGridNo, UINT16 usSoldierID , UINT16 usReasonID, BOOLEAN fSetLocator) ; -void SlideToLocation( UINT16 usReasonID, INT32 sDestGridNo ); +void SlideTo(SoldierID usSoldierID, BOOLEAN fSetLocator) ; +void SlideToLocation( INT32 sDestGridNo ); void RebuildAllSoldierShadeTables( ); void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier ); -UINT8 LastActiveTeamMember( UINT8 ubTeam ); +SoldierID LastActiveTeamMember( UINT16 ubTeam ); BOOLEAN SoldierOnVisibleWorldTile( SOLDIERTYPE *pSoldier ); -UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); -UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); +SoldierID FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); +SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); BOOLEAN CheckForPlayerTeamInMissionExit( ); void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldier ); @@ -261,7 +259,7 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier ); BOOLEAN TeamMemberNear(INT8 bTeam, INT32 sGridNo, INT32 iRange); -BOOLEAN IsValidTargetMerc( UINT8 ubSoldierID ); +BOOLEAN IsValidTargetMerc( SoldierID ubSoldierID ); // FUNCTIONS FOR MANIPULATING MERC SLOTS - A LIST OF ALL ACTIVE MERCS INT32 GetFreeMercSlot( ); @@ -323,7 +321,7 @@ BOOLEAN HostileBloodcatsPresent( ); BOOLEAN HostileZombiesPresent( ); BOOLEAN HostileCreaturesPresent(); -UINT8 NumPCsInSector( ); +UINT16 NumPCsInSector( ); void SetSoldierNonNeutral( SOLDIERTYPE * pSoldier ); void SetSoldierNeutral( SOLDIERTYPE * pSoldier ); @@ -334,10 +332,10 @@ void SetMsgBoxForPlayerBeNotifiedOfSomeoneElseInSector(); void HandleDisplayingOfPlayerLostDialogue( ); // UTILITY FUNCTIONS -INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); -UINT8 NumEnemyInSector( ); -UINT8 NumCapableEnemyInSector( ); -INT8 NumMercsOnPlayerTeam( ); +UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); +UINT16 NumEnemyInSector( ); +UINT16 NumCapableEnemyInSector( ); +UINT16 NumMercsOnPlayerTeam( ); #endif extern BOOLEAN sniperwarning; @@ -351,10 +349,10 @@ extern BOOLEAN gogglewarning; // will a sam site under the players control shoot down an airraid? BOOLEAN WillAirRaidBeStopped( INT16 sSectorX, INT16 sSectorY ); // HEADROCK HAM 3.5: Externalized for First Arrival enemy check -extern UINT8 NumEnemyInSector(); +extern UINT16 NumEnemyInSector(); // Flugente -extern UINT8 NumZombiesInSector(); +extern UINT16 NumZombiesInSector(); // Flugente: offer the enemy the chance to surrender void HandleSurrenderOffer( SOLDIERTYPE* pSoldier ); @@ -371,7 +369,7 @@ void TeamDropAll(UINT8 bTeam, BOOLEAN fForce = FALSE); void TeamRestock(UINT8 bTeam); // are we allowed to steal access this guy's inventory? -BOOLEAN AllowedToStealFromTeamMate( UINT8 aAccessorID, UINT8 aTargetID ); +BOOLEAN AllowedToStealFromTeamMate( SoldierID ubID, SoldierID ubTargetID ); // Flugente: is an soldier profile already used? BOOLEAN IsProfileInUse(UINT8 usTeam, INT8 aType, UINT16 aNr); @@ -402,12 +400,11 @@ enum { }; // Flugente: return number of enemy officers and highest rank found -UINT8 HighestEnemyOfficersInSector(UINT8& aType); +UINT16 HighestEnemyOfficersInSector(UINT8& aType); // count all soldiers in the current sector that have a specific flag set UINT16 NumSoldiersWithFlagInSector(UINT8 aTeam, UINT32 aFlag); UINT16 NumSoldiersofClassWithFlag2InSector( UINT8 aTeam, UINT8 aSoldierClass, UINT32 aFlag ); -INT32 GetClosestSoldierWithFlag( UINT8 aTeam, UINT32 aFlag ); // Flugente: VIP targets // can a new VIP be created? @@ -434,5 +431,6 @@ BOOLEAN IsCivFactionMemberAliveInSector( UINT8 usCivilianGroup ); BOOLEAN IsFreeSlotAvailable( int aTeam ); void AttemptToCapturePlayerSoldiers(); + #endif diff --git a/Tactical/PATHAI.cpp b/Tactical/PATHAI.cpp index 54c83a16..c150178e 100644 --- a/Tactical/PATHAI.cpp +++ b/Tactical/PATHAI.cpp @@ -2078,7 +2078,7 @@ bool AStarPathfinder::IsSomeoneInTheWay() if (fPathAroundPeople && ( (CurrentNode != DestNode) || fCopyReachable) ) { // ATE: ONLY cancel if they are moving..... - UINT8 ubMerc = WhoIsThere2( CurrentNode, pSoldier->pathing.bLevel); + UINT16 ubMerc = WhoIsThere2( CurrentNode, pSoldier->pathing.bLevel); if ( ubMerc < NOBODY && ubMerc != pSoldier->ubID ) { // Check for movement.... @@ -2198,7 +2198,7 @@ INT32 FindBestPath(SOLDIERTYPE *s , INT32 sDestination, INT8 bLevel, INT16 usMov INT8 bLoopState = LOOPING_CLOCKWISE; //BOOLEAN fLoopForwards = FALSE; BOOLEAN fCheckedBehind = FALSE; - UINT8 ubMerc; + SoldierID ubMerc; INT32 iDestX,iDestY, iLocX, iLocY, dx, dy; INT32 newLoc,curLoc; //INT32 curY; @@ -3145,7 +3145,7 @@ if(!GridNoOnVisibleWorldTile(iDestination)) // sevenfm: for player mercs, ignore invisible opponents if (ubMerc < TOTAL_SOLDIERS && ubMerc != s->ubID && - (!(s->flags.uiStatusFlags & SOLDIER_PC) || MercPtrs[ubMerc]->bSide == s->bSide || MercPtrs[ubMerc]->aiData.bNeutral || MercPtrs[ubMerc]->bVisible >= 0 || SoldierToSoldierLineOfSightTest(s, MercPtrs[ubMerc], TRUE, CALC_FROM_ALL_DIRS))) + (!(s->flags.uiStatusFlags & SOLDIER_PC) || ubMerc->bSide == s->bSide || ubMerc->aiData.bNeutral || ubMerc->bVisible >= 0 || SoldierToSoldierLineOfSightTest(s, ubMerc, TRUE, CALC_FROM_ALL_DIRS))) //if ( ubMerc < TOTAL_SOLDIERS && ubMerc != s->ubID ) { goto NEXTDIR; diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index 42d8cc46..136d5b08 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -1994,7 +1994,7 @@ void GetAPChargeForShootOrStabWRTGunRaises( SOLDIERTYPE *pSoldier, INT32 sGridNo { UINT8 ubDirection; UINT32 uiMercFlags; - UINT16 usTargID; + SoldierID usTargID; BOOLEAN fAddingTurningCost = FALSE; BOOLEAN fAddingRaiseGunCost = FALSE; @@ -2006,7 +2006,7 @@ void GetAPChargeForShootOrStabWRTGunRaises( SOLDIERTYPE *pSoldier, INT32 sGridNo // Given a gridno here, check if we are on a guy - if so - get his gridno if ( FindSoldier( sGridNo, &usTargID, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) { - sGridNo = MercPtrs[ usTargID ]->sGridNo; + sGridNo = usTargID->sGridNo; } ubDirection = (UINT8)GetDirectionFromGridNo( sGridNo, pSoldier ); @@ -2177,7 +2177,7 @@ UINT16 CalculateRaiseGunCost(SOLDIERTYPE *pSoldier, BOOLEAN fAddingRaiseGunCost, INT16 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 bAimTime, UINT8 ubAddTurningCost, UINT8 ubForceRaiseGunCost ) { UINT32 uiMercFlags; - UINT16 usTargID; + SoldierID usTargID; INT16 bFullAPs; INT16 bAimSkill; INT16 bAPCost = APBPConstants[AP_MIN_AIM_ATTACK]; @@ -2218,7 +2218,7 @@ INT16 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 bAimTime, // Given a gridno here, check if we are on a guy - if so - get his gridno if ( FindSoldier( sGridNo, &usTargID, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) { - sGridNo = MercPtrs[ usTargID ]->sGridNo; + sGridNo = usTargID->sGridNo; } //usRange = GetRangeFromGridNoDiff( pSoldier->sGridNo, sGridNo ); } @@ -2461,12 +2461,12 @@ INT16 MinAPsToPunch(SOLDIERTYPE *pSoldier, INT32 sGridNo) // sevenfm: check enemy only if we have correct gridNo if( !TileIsOutOfBounds(sGridNo) ) { - UINT16 usTargID = WhoIsThere2(sGridNo, pSoldier->bTargetLevel); + SoldierID usTargID = WhoIsThere2(sGridNo, pSoldier->bTargetLevel); // Given a gridno here, check if we are on a guy - if so - get his gridno if(usTargID != NOBODY) { // Check if target is prone, if so, calc cost... - if(gAnimControl[MercPtrs[usTargID]->usAnimState].ubEndHeight == ANIM_PRONE) + if(gAnimControl[usTargID->usAnimState].ubEndHeight == ANIM_PRONE) bAPCost += GetAPsToChangeStance(pSoldier, ANIM_CROUCH); else bAPCost += GetAPsToChangeStance(pSoldier, ANIM_STAND); diff --git a/Tactical/Real Time Input.cpp b/Tactical/Real Time Input.cpp index 1560b738..6f00baf7 100644 --- a/Tactical/Real Time Input.cpp +++ b/Tactical/Real Time Input.cpp @@ -180,7 +180,7 @@ void GetRTMouseButtonInput( UINT32 *puiNewEvent ) void QueryRTLeftButton( UINT32 *puiNewEvent ) { - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; SOLDIERTYPE *pSoldier; SOLDIERTYPE *pVehicle; UINT32 uiMercFlags; @@ -190,7 +190,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) static BOOLEAN fValidDoubleClickPossible = FALSE; static BOOLEAN fCanCheckForSpeechAdvance = FALSE; static INT32 sMoveClickGridNo = 0; - UINT16 usSubjectSoldier = gusSelectedSoldier; + SoldierID usSubjectSoldier = gusSelectedSoldier; // LEFT MOUSE BUTTON if ( gViewportRegion.uiFlags & MSYS_MOUSE_IN_AREA ) @@ -202,13 +202,13 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) if ( gusSelectedSoldier != NOBODY ) { - if ( MercPtrs[ gusSelectedSoldier ]->pTempObject != NULL ) + if ( gusSelectedSoldier->pTempObject != NULL ) { return; } - if ( MercPtrs[ gusSelectedSoldier ]->flags.uiStatusFlags & SOLDIER_DRIVER ) + if ( gusSelectedSoldier->flags.uiStatusFlags & SOLDIER_DRIVER ) { - pVehicle = GetSoldierStructureForVehicle( MercPtrs[ usSubjectSoldier ]->iVehicleId ); + pVehicle = GetSoldierStructureForVehicle( usSubjectSoldier->iVehicleId ); usSubjectSoldier = pVehicle->ubID; } } @@ -313,7 +313,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) if ( usSubjectSoldier != NOBODY ) { - if ( ( fResult = UIOKMoveDestination( MercPtrs[ usSubjectSoldier ], usMapPos ) ) == 1 ) + if ( ( fResult = UIOKMoveDestination( usSubjectSoldier, usMapPos ) ) == 1 ) { if ( gsCurrentActionPoints != 0 ) { @@ -365,7 +365,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) if( FindSoldierFromMouse( &usSoldierIndex, &uiMercFlags ) ) { // Select guy - if ( (uiMercFlags & SELECTED_MERC) && !( uiMercFlags & UNCONSCIOUS_MERC ) && !( MercPtrs[ usSoldierIndex ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + if ( (uiMercFlags & SELECTED_MERC) && !( uiMercFlags & UNCONSCIOUS_MERC ) && !( usSoldierIndex->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { *puiNewEvent = M_CHANGE_TO_ADJPOS_MODE; } @@ -448,10 +448,10 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) { // Set movement mode // OK, only change this if we are stationary! - //if ( gAnimControl[ MercPtrs[ gusSelectedSoldier ]->usAnimState ].uiFlags & ANIM_STATIONARY ) - //if ( MercPtrs[ gusSelectedSoldier ]->usAnimState == WALKING ) + //if ( gAnimControl[ gusSelectedSoldier->usAnimState ].uiFlags & ANIM_STATIONARY ) + //if ( gusSelectedSoldier->usAnimState == WALKING ) { - MercPtrs[ usSubjectSoldier ]->flags.fUIMovementFast = TRUE; + usSubjectSoldier->flags.fUIMovementFast = TRUE; *puiNewEvent = C_MOVE_MERC; } } @@ -595,13 +595,13 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) if ( usSubjectSoldier != NOBODY ) { - if ( MercPtrs[ usSubjectSoldier ]->usAnimState != RUNNING ) + if ( usSubjectSoldier->usAnimState != RUNNING ) { *puiNewEvent = C_MOVE_MERC; } else { - MercPtrs[ usSubjectSoldier ]->flags.fUIMovementFast = 2; + usSubjectSoldier->flags.fUIMovementFast = 2; *puiNewEvent = C_MOVE_MERC; } } @@ -621,7 +621,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) //{ // if ( gusSelectedSoldier != NOBODY ) // { - // if ( !( gAnimControl[ MercPtrs[ gusSelectedSoldier ]->usAnimState ].uiFlags & ANIM_STATIONARY ) ) + // if ( !( gAnimControl[ gusSelectedSoldier->usAnimState ].uiFlags & ANIM_STATIONARY ) ) // { //gUITargetShotWaiting = TRUE; @@ -680,7 +680,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) // OK, if we have a selected guy.. make him part too.... if ( gusSelectedSoldier != NOBODY ) { - MercPtrs[ gusSelectedSoldier ]->flags.uiStatusFlags |= (SOLDIER_MULTI_SELECTED ); + gusSelectedSoldier->flags.uiStatusFlags |= (SOLDIER_MULTI_SELECTED ); } } @@ -715,7 +715,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) // OK, if we have a selected guy.. make him part too.... if ( gusSelectedSoldier != NOBODY ) { - MercPtrs[ gusSelectedSoldier ]->flags.uiStatusFlags |= (SOLDIER_MULTI_SELECTED ); + gusSelectedSoldier->flags.uiStatusFlags |= (SOLDIER_MULTI_SELECTED ); } gfIgnoreOnSelectedGuy = TRUE; @@ -792,7 +792,7 @@ void QueryRTLeftButton( UINT32 *puiNewEvent ) if ( usSubjectSoldier != NOBODY ) { - if ( ( fResult = UIOKMoveDestination( MercPtrs[ usSubjectSoldier ], usMapPos ) ) == 1 ) + if ( ( fResult = UIOKMoveDestination( usSubjectSoldier, usMapPos ) ) == 1 ) { if ( gfUIAllMoveOn ) { @@ -1017,7 +1017,7 @@ void QueryRTRightButton( UINT32 *puiNewEvent ) if ( gfUICanBeginAllMoveCycle ) { // ATE: Here, check if we can do this.... - if ( !UIOKMoveDestination( MercPtrs[ gusSelectedSoldier ], usMapPos ) ) + if ( !UIOKMoveDestination( gusSelectedSoldier, usMapPos ) ) { ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ CANT_MOVE_THERE_STR ] ); gfRTClickLeftHoldIntercepted = TRUE; @@ -1041,7 +1041,7 @@ void QueryRTRightButton( UINT32 *puiNewEvent ) { gfBeginBurstSpreadTracking = FALSE; gfRTClickLeftHoldIntercepted = TRUE; - MercPtrs[ gusSelectedSoldier ]->flags.fDoSpread = FALSE; + gusSelectedSoldier->flags.fDoSpread = FALSE; fClickHoldIntercepted = TRUE; *puiNewEvent = A_END_ACTION; gCurrentUIMode = MOVE_MODE; @@ -1234,7 +1234,7 @@ void QueryRTRightButton( UINT32 *puiNewEvent ) case MOVE_MODE: case TALKCURSOR_MODE: // anv: don't switch if passengers are blocked from attacking - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) { SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( pSoldier->iVehicleId ); @@ -1489,7 +1489,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ) { if( gfUIFullTargetFound ) { - if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && gusUIFullTargetID->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) ) { uiMoveTargetSoldierId = gusUIFullTargetID; *puiNewEvent = T_CHANGE_TO_TALKING; @@ -1532,11 +1532,11 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) //if ( gfUIFullTargetFound ) { - if ( IsValidTargetMerc( (UINT8)gusUIFullTargetID ) ) + if ( IsValidTargetMerc( gusUIFullTargetID ) ) { guiUITargetSoldierId = gusUIFullTargetID; - if ( MercPtrs[ gusUIFullTargetID ]->bTeam != gbPlayerNum ) + if ( gusUIFullTargetID->bTeam != gbPlayerNum ) { fOnValidGuy = TRUE; } @@ -2021,51 +2021,53 @@ void HandleAltMouseRTX2Button(UINT32 *puiNewEvent) // sevenfm: original mouse commands functionality void HandleMouseRTWheel( void ) { - UINT8 bID; - // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel - if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && - ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) - { - if ( gViewportRegion.WheelState > 0 ) //wheel up - { - //change stance ->DOWN - if ( _KeyDown( ALT ) ) + SoldierID bID; + // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel + if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && + ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) + { + if ( gViewportRegion.WheelState > 0 ) //wheel up + { + //change stance ->DOWN + if ( _KeyDown( ALT ) ) { if ( (gusSelectedSoldier != NOBODY) && ( gpItemPointer == NULL ) ) - GotoLowerStance(MercPtrs[ gusSelectedSoldier ]); + GotoLowerStance(gusSelectedSoldier); return; - } + } - if ( gusSelectedSoldier != NOBODY ) - { //Select prev merc - bID = FindPrevActiveAndAliveMerc( MercPtrs[ gusSelectedSoldier ], TRUE, TRUE ); - HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); - // Center to guy.... - LocateSoldier( gusSelectedSoldier, SETLOCATOR ); - } - } - else - { - //change stance ->UP - if ( _KeyDown( ALT ) ) + if ( gusSelectedSoldier != NOBODY ) + { //Select prev merc + bID = FindPrevActiveAndAliveMerc( gusSelectedSoldier, TRUE, TRUE ); + HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); + // Center to guy.... + LocateSoldier( gusSelectedSoldier, SETLOCATOR ); + } + } + else + { + //change stance ->UP + if ( _KeyDown( ALT ) ) { if ( (gusSelectedSoldier != NOBODY) && ( gpItemPointer == NULL ) ) - GotoHeigherStance( MercPtrs[ gusSelectedSoldier ] ); + GotoHeigherStance( gusSelectedSoldier ); return; - } + } - //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"wheel %d", gViewportRegion.WheelState); - if ( gusSelectedSoldier != NOBODY ) - { //Select next merc - bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); - HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); - // Center to guy.... - LocateSoldier( gusSelectedSoldier, SETLOCATOR ); - } - } - //*puiNewEvent = M_ON_TERRAIN; ???????????????? - } + //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"wheel %d", gViewportRegion.WheelState); + if ( gusSelectedSoldier != NOBODY ) + { //Select next merc + bID = FindNextMercInTeamPanel( gusSelectedSoldier, FALSE, FALSE ); + HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); + // Center to guy.... + LocateSoldier( gusSelectedSoldier, SETLOCATOR ); + } + } + //*puiNewEvent = M_ON_TERRAIN; ???????????????? + } } + + void HandleMouseRTMButton( UINT32 *puiNewEvent ) { if ( _KeyDown( ALT ) ) @@ -2073,11 +2075,13 @@ void HandleMouseRTMButton( UINT32 *puiNewEvent ) // toggle fire mode if ( ( gpItemPointer == NULL ) && ( gusSelectedSoldier != NOBODY ) && ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ BURSTMODE_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) - ChangeWeaponMode( MercPtrs[ gusSelectedSoldier ] ); + ChangeWeaponMode( gusSelectedSoldier ); } else *puiNewEvent = LC_LOOK; } + + void HandleMouseRTX1Button( UINT32 *puiNewEvent ) { if ( !_KeyDown( ALT ) && !_KeyDown( SHIFT )) @@ -2139,55 +2143,57 @@ void HandleMouseRTX1Button( UINT32 *puiNewEvent ) void HandleMouseRTX2Button( UINT32 *puiNewEvent ) { - if ( _KeyDown( ALT ) ) - AutoReload( MercPtrs[ gusSelectedSoldier ] ); - else - // Toggle squad's stealth mode..... - // For each guy on squad... + if ( _KeyDown( ALT ) ) + AutoReload( gusSelectedSoldier ); + else + // Toggle squad's stealth mode..... + // For each guy on squad... + { + SOLDIERTYPE *pTeamSoldier; + SoldierID bLoop; + BOOLEAN fStealthOn = FALSE; + + // Check if at least one guy is on stealth.... + for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() ) { - SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; - BOOLEAN fStealthOn = FALSE; - - // Check if at least one guy is on stealth.... - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + if ( pTeamSoldier->bStealthMode ) { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) ) - { - if ( pTeamSoldier->bStealthMode ) - { - fStealthOn = TRUE; - } - } - } - - fStealthOn = !fStealthOn; - - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) - { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) - { - if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID ) - { - gfUIStanceDifferent = TRUE; - } - - pTeamSoldier->bStealthMode = fStealthOn; - } - } - - fInterfacePanelDirty = DIRTYLEVEL2; - - // OK, display message - if ( fStealthOn ) - { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ON_STEALTHMODE ] ); - } - else - { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] ); + fStealthOn = TRUE; } } + } + + fStealthOn = !fStealthOn; + + for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) ) + { + if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID ) + { + gfUIStanceDifferent = TRUE; + } + + pTeamSoldier->bStealthMode = fStealthOn; + } + } + + fInterfacePanelDirty = DIRTYLEVEL2; + + // OK, display message + if ( fStealthOn ) + { + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[MSG_SQUAD_ON_STEALTHMODE] ); + } + else + { + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[MSG_SQUAD_OFF_STEALTHMODE] ); + } + } } // sevenfm: common functionality @@ -2252,7 +2258,7 @@ void HandleRTToggleFireMode( void ) // toggle fire mode if ( ( gpItemPointer == NULL ) && ( gusSelectedSoldier != NOBODY ) && ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ BURSTMODE_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) - ChangeWeaponMode( MercPtrs[ gusSelectedSoldier ] ); + ChangeWeaponMode( gusSelectedSoldier ); } void HandleRTLocateSoldier( void ) { diff --git a/Tactical/Rotting Corpses.cpp b/Tactical/Rotting Corpses.cpp index fb77052d..992d2cca 100644 --- a/Tactical/Rotting Corpses.cpp +++ b/Tactical/Rotting Corpses.cpp @@ -1022,7 +1022,7 @@ BOOLEAN TurnSoldierIntoCorpse( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveMerc, BOOLE // HEADROCK HAM B2.8: Now also reveals equipment dropped by militia, if requirement is met. if( pSoldier->bTeam == ENEMY_TEAM || ( gGameExternalOptions.ubMilitiaDropEquipment == 2 && pSoldier->bTeam == MILITIA_TEAM ) || - ( gGameExternalOptions.ubMilitiaDropEquipment == 1 && pSoldier->bTeam == MILITIA_TEAM && Menptr[ pSoldier->ubAttackerID ].bTeam != OUR_TEAM )) + ( gGameExternalOptions.ubMilitiaDropEquipment == 1 && pSoldier->bTeam == MILITIA_TEAM && pSoldier->ubAttackerID->bTeam != OUR_TEAM )) { //add a flag to the item so when all enemies are killed, we can run through and reveal all the enemies items usItemFlags |= WORLD_ITEM_DROPPED_FROM_ENEMY; @@ -1054,7 +1054,7 @@ BOOLEAN TurnSoldierIntoCorpse( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveMerc, BOOLE // HEADROCK HAM B2.8: Militia will drop items only if allowed. if (!(gGameExternalOptions.ubMilitiaDropEquipment == 0 && pSoldier->bTeam == MILITIA_TEAM ) && - !(gGameExternalOptions.ubMilitiaDropEquipment == 1 && pSoldier->bTeam == MILITIA_TEAM && Menptr[ pSoldier->ubAttackerID ].bTeam == OUR_TEAM )) + !(gGameExternalOptions.ubMilitiaDropEquipment == 1 && pSoldier->bTeam == MILITIA_TEAM && pSoldier->ubAttackerID->bTeam == OUR_TEAM )) { AddItemToPool( pSoldier->sGridNo, pObj, bVisible , pSoldier->pathing.bLevel, usItemFlags, -1 ); } @@ -1155,14 +1155,14 @@ INT16 FindNearestRottingCorpse( SOLDIERTYPE *pSoldier ) void AddCrowToCorpse( ROTTING_CORPSE *pCorpse ) { SOLDIERCREATE_STRUCT MercCreateStruct; - INT8 ubBodyType = CROW; - UINT8 iNewIndex; - INT32 sGridNo; - UINT8 ubDirection; - SOLDIERTYPE *pSoldier; + INT8 ubBodyType = CROW; + SoldierID iNewIndex; + INT32 sGridNo; + UINT8 ubDirection; + SOLDIERTYPE *pSoldier; //DBrot: More Rooms - //UINT8 ubRoomNum; - UINT16 usRoomNum; + //UINT8 ubRoomNum; + UINT16 usRoomNum; // No crows inside :( if ( InARoom( pCorpse->def.sGridNo, &usRoomNum ) ) { @@ -1272,11 +1272,11 @@ void HandleRottingCorpses( ) // ATE: Check for multiple crows..... // Couint how many we have now... { - UINT16 bLoop; SOLDIERTYPE * pSoldier; - for ( bLoop=gTacticalStatus.Team[ CIV_TEAM ].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; bLoop++, pSoldier++) + for ( SoldierID bLoop=gTacticalStatus.Team[ CIV_TEAM ].bFirstID; bLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++bLoop ) { + pSoldier = bLoop; if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) ) { if ( pSoldier->ubBodyType == CROW ) @@ -1344,8 +1344,7 @@ void MakeCorpseVisible( SOLDIERTYPE *pSoldier, ROTTING_CORPSE *pCorpse ) void AllMercsOnTeamLookForCorpse( ROTTING_CORPSE *pCorpse, INT8 bTeam ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pSoldier; INT32 sGridNo; // If this cump is already visible, return @@ -1360,13 +1359,14 @@ void AllMercsOnTeamLookForCorpse( ROTTING_CORPSE *pCorpse, INT8 bTeam ) } // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ bTeam ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ bTeam ].bFirstID; sGridNo = pCorpse->def.sGridNo; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; cnt++,pSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; ++cnt ) { + pSoldier = cnt; // ATE: Ok, lets check for some basic things here! if ( pSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bActive && pSoldier->bInSector ) { @@ -1436,7 +1436,7 @@ void MercLooksForCorpses( SOLDIERTYPE *pSoldier ) BeginMultiPurposeLocator( sGridNo, pCorpse->def.bLevel, FALSE ); // Slide to... - SlideToLocation( 0, sGridNo ); + SlideToLocation( sGridNo ); return; } @@ -2526,7 +2526,6 @@ void LookForAndMayCommentOnSeeingCorpse( SOLDIERTYPE *pSoldier, INT32 sGridNo, U { ROTTING_CORPSE *pCorpse; INT8 bToleranceThreshold = 0; - INT32 cnt; SOLDIERTYPE *pTeamSoldier; if ( QuoteExp[ pSoldier->ubProfile ].QuoteExpHeadShotOnly == 1 ) @@ -2567,11 +2566,12 @@ void LookForAndMayCommentOnSeeingCorpse( SOLDIERTYPE *pSoldier, INT32 sGridNo, U if ( Random( 2 ) == 1 ) { // IF IT'S THE SELECTED GUY, MAKE ANOTHER SELECTED! - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // ATE: Ok, lets check for some basic things here! if ( pTeamSoldier->stats.bLife >= OKLIFE && !TileIsOutOfBounds(pTeamSoldier->sGridNo) && pTeamSoldier->bActive && pTeamSoldier->bInSector ) { @@ -2918,13 +2918,13 @@ void CreateZombiefromCorpse( ROTTING_CORPSE * pCorpse, UINT16 usAnimState ) MercCreateStruct.fVisible = TRUE; - INT8 iNewIndex; - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + SoldierID iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { /* certain values have to be set afterwards - the alternative would be to edit each and every function that gets called from TacticalCreateSoldier() subsequently and * make an exception for zombies every time... */ - SOLDIERTYPE* pNewSoldier = MercPtrs[ (UINT8)iNewIndex ]; + SOLDIERTYPE* pNewSoldier = iNewIndex; pNewSoldier->bActionPoints = 60; pNewSoldier->bInitialActionPoints = 60; diff --git a/Tactical/ShopKeeper Interface.cpp b/Tactical/ShopKeeper Interface.cpp index d940af9b..427f1438 100644 --- a/Tactical/ShopKeeper Interface.cpp +++ b/Tactical/ShopKeeper Interface.cpp @@ -295,7 +295,7 @@ INT32 giSKIMessageBox=-1; INT8 gbSelectedArmsDealerID = -1; //Contains the enum value for the currently selected arms dealer // Flugente: while we're trading, store the ID of non-NPC dealers -UINT8 gusIDOfCivTrader = NOBODY; +SoldierID gusIDOfCivTrader = NOBODY; //the quote that is in progress, in certain circumstances, we don't want queuing of related but different quotes INT32 giShopKeepDialogueEventinProgress = - 1; @@ -356,7 +356,7 @@ BOOLEAN gfDoneBusinessThisSession = FALSE; // this is used within SKI exclusively, to handle small faces UINT8 gubArrayOfEmployedMercs[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; UINT32 guiSmallSoldiersFace[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; -UINT8 gubNumberMercsInArray; +UINT16 gubNumberMercsInArray; //The subutitled text for what the merc is saying CHAR16 gsShopKeeperTalkingText[ SKI_SUBTITLE_TEXT_SIZE ]; @@ -379,17 +379,17 @@ BOOLEAN gfPerformTransactionInProgress = FALSE; BOOLEAN gfCommonQuoteUsedThisSession[ NUM_COMMON_SK_QUOTES ]; -extern SOLDIERTYPE *gpSMCurrentMerc; -extern SOLDIERTYPE *gpItemDescSoldier; +extern SOLDIERTYPE *gpSMCurrentMerc; +extern SOLDIERTYPE *gpItemDescSoldier; extern MOUSE_REGION gItemDescAttachmentRegions[MAX_ATTACHMENTS]; extern MOUSE_REGION gInvDesc; -extern BOOLEAN gfSMDisableForItems; -extern OBJECTTYPE *gpItemDescObject; -extern OBJECTTYPE *gpItemDescPrevObject; -extern OBJECTTYPE *gpItemDescPrevObject; -extern void HandleShortCutExitState( void ); -extern UINT8 gubSelectSMPanelToMerc; -extern INT32 giItemDescAmmoButton; +extern BOOLEAN gfSMDisableForItems; +extern OBJECTTYPE *gpItemDescObject; +extern OBJECTTYPE *gpItemDescPrevObject; +extern OBJECTTYPE *gpItemDescPrevObject; +extern void HandleShortCutExitState( void ); +extern SoldierID gubSelectSMPanelToMerc; +extern INT32 giItemDescAmmoButton; extern BOOLEAN BltVSurfaceUsingDD( HVSURFACE hDestVSurface, HVSURFACE hSrcVSurface, UINT32 fBltFlags, INT32 iDestX, INT32 iDestY, RECT *SrcRect ); @@ -759,18 +759,17 @@ UINT32 ShopKeeperScreenShutdown() BOOLEAN EnterShopKeeperInterface() { VOBJECT_DESC VObjectDesc; - UINT16 ubCnt; CHAR8 zTemp[32]; VSURFACE_DESC vs_desc; //ADB if we are here, we must be able to talk with an extended ear (CheckIfRadioIsEquipped()) //but if we are physically too far away, we don't have extended arms! - SOLDIERTYPE* pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE* pSoldier = gusSelectedSoldier; SOLDIERTYPE* pShopkeeper = NULL; if ( gusIDOfCivTrader != NOBODY ) - pShopkeeper = MercPtrs[gusIDOfCivTrader]; + pShopkeeper = gusIDOfCivTrader; else pShopkeeper = FindSoldierByProfileID( armsDealerInfo[gbSelectedArmsDealerID].ubShopKeeperID, FALSE ); @@ -826,7 +825,7 @@ BOOLEAN EnterShopKeeperInterface() } // make sure current merc is close enough and eligible to talk to the shopkeeper. - AssertMsg( CanMercInteractWithSelectedShopkeeper( MercPtrs[ gusSelectedSoldier ] ), "Selected merc can't interact with shopkeeper. Send save AM-1"); + AssertMsg( CanMercInteractWithSelectedShopkeeper( gusSelectedSoldier ), "Selected merc can't interact with shopkeeper. Send save AM-1"); // Create a video surface to blt corner of the tactical screen that still shines through vs_desc.fCreateFlags = VSURFACE_CREATE_DEFAULT | VSURFACE_SYSTEM_MEM_USAGE; @@ -869,8 +868,8 @@ BOOLEAN EnterShopKeeperInterface() //Reinitialize the team panel to be the SM panel SetCurrentInterfacePanel( SM_PANEL ); - SetCurrentTacticalPanelCurrentMerc( (UINT8)gusSelectedSoldier ); - SetSMPanelCurrentMerc( (UINT8)gusSelectedSoldier ); + SetCurrentTacticalPanelCurrentMerc( gusSelectedSoldier ); + SetSMPanelCurrentMerc( gusSelectedSoldier ); // load the Main trade screen background image VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; @@ -886,9 +885,9 @@ BOOLEAN EnterShopKeeperInterface() //Create an array of all mercs (anywhere!) currently in the player's employ, and load their small faces // This is to support showing of repair item owner's faces even when they're not in the sector, as long as they still work for player gubNumberMercsInArray = 0; - for( ubCnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; ubCnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++ubCnt ) + for( SoldierID ubCnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; ubCnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++ubCnt ) { - pSoldier = MercPtrs[ ubCnt ]; + pSoldier = ubCnt; if( pSoldier->bActive && ( pSoldier->ubProfile != NO_PROFILE ) && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) ) @@ -1027,7 +1026,7 @@ BOOLEAN EnterShopKeeperInterface() { //add the item back to the current PC into the slot it came from //ADB screw slot, slot is (used to be, before it was deleted) only ever, so autoplace it - AutoPlaceObject(&Menptr[ gpSMCurrentMerc->ubID ], &gItemToAdd.ItemObject, FALSE); + AutoPlaceObject(gpSMCurrentMerc->ubID, &gItemToAdd.ItemObject, FALSE); } //Clear the contents of the structure @@ -1126,7 +1125,7 @@ BOOLEAN ExitShopKeeperInterface() UnloadButtonImage( guiSKI_InvPageDownButtonImage ); //loop through the area and delete small faces - for (UINT8 ubCnt=0; ubCnt= 0 ? (UINT32)ubArmsDealerID : 0 ); + AdditionalTacticalCharacterDialogue_CallsLua( gusSelectedSoldier, ADE_MERCHANT_CHAT, ubArmsDealerID >= 0 ? (UINT32)ubArmsDealerID : 0 ); LeaveTacticalScreen( SHOPKEEPER_SCREEN ); } @@ -3668,12 +3664,10 @@ void DisplayPlayersOfferArea() //get an updated status from the amount in the pocket if( PlayersOfferArea[ sCnt ].bSlotIdInOtherLocation != -1 && PlayersOfferArea[ sCnt ].ubIdOfMercWhoOwnsTheItem != NO_PROFILE ) { - INT16 sSoldierID; + SoldierID sSoldierID = GetSoldierIDFromMercID( PlayersOfferArea[ sCnt ].ubIdOfMercWhoOwnsTheItem ); + Assert(sSoldierID != NOBODY); - sSoldierID = GetSoldierIDFromMercID( PlayersOfferArea[ sCnt ].ubIdOfMercWhoOwnsTheItem ); - Assert(sSoldierID != -1); - - PlayersOfferArea[ sCnt ].ItemObject[0]->data.money.uiMoneyAmount = Menptr[ sSoldierID ].inv[ PlayersOfferArea[ sCnt ].bSlotIdInOtherLocation ][0]->data.money.uiMoneyAmount; + PlayersOfferArea[ sCnt ].ItemObject[0]->data.money.uiMoneyAmount = sSoldierID->inv[ PlayersOfferArea[ sCnt ].bSlotIdInOtherLocation ][0]->data.money.uiMoneyAmount; PlayersOfferArea[ sCnt ].uiItemPrice = PlayersOfferArea[ sCnt ].ItemObject[0]->data.money.uiMoneyAmount; } } @@ -5191,7 +5185,7 @@ int CountNumberOfItemsInTheArmsDealersOfferArea( ) INT8 GetSlotNumberForMerc( UINT8 ubProfile ) { - for( INT8 bCnt = 0; bCnt < gubNumberMercsInArray; ++bCnt ) + for( UINT16 bCnt = 0; bCnt < gubNumberMercsInArray; ++bCnt ) { if( gubArrayOfEmployedMercs[ bCnt ] == ubProfile ) return( bCnt ); @@ -6492,23 +6486,21 @@ void ShopkeeperAddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, void IfMercOwnedCopyItemToMercInv( INVENTORY_IN_SLOT *pInv ) { - INT16 sSoldierID; - //if the item picked up was in a previous location, and that location is on a merc's inventory if ( ( pInv->bSlotIdInOtherLocation != -1 ) && ( pInv->ubIdOfMercWhoOwnsTheItem != NO_PROFILE ) ) { // get soldier - sSoldierID = GetSoldierIDFromMercID( pInv->ubIdOfMercWhoOwnsTheItem ); - Assert( sSoldierID != -1 ); - Assert( CanMercInteractWithSelectedShopkeeper( MercPtrs[ sSoldierID ] ) ); + SoldierID sSoldierID = GetSoldierIDFromMercID( pInv->ubIdOfMercWhoOwnsTheItem ); + Assert( sSoldierID != NOBODY ); + Assert( CanMercInteractWithSelectedShopkeeper( sSoldierID ) ); // then it better be a valid slot # - Assert( pInv->bSlotIdInOtherLocation < (INT8)Menptr[ sSoldierID ].inv.size() ); + Assert( pInv->bSlotIdInOtherLocation < (INT8)(sSoldierID->inv.size()) ); // and it better have a valid merc who owned it Assert( pInv->ubIdOfMercWhoOwnsTheItem != NO_PROFILE ); //Copy the object back into that merc's original inventory slot - Menptr[ sSoldierID ].inv[ pInv->bSlotIdInOtherLocation ] = pInv->ItemObject; + sSoldierID->inv[ pInv->bSlotIdInOtherLocation ] = pInv->ItemObject; } } @@ -6524,15 +6516,15 @@ void IfMercOwnedRemoveItemFromMercInv2( UINT8 ubOwnerProfileId, INT16 bOwnerSlot { // and it better have a valid merc who owned it Assert( ubOwnerProfileId != NO_PROFILE ); - INT16 sSoldierID = GetSoldierIDFromMercID( ubOwnerProfileId ); - Assert( sSoldierID != -1 ); + SoldierID sSoldierID = GetSoldierIDFromMercID( ubOwnerProfileId ); + Assert( sSoldierID != NOBODY ); // then it better be a valid slot # - Assert( bOwnerSlotId < (INT8)Menptr[ sSoldierID ].inv.size() ); + Assert( bOwnerSlotId < (INT8)(sSoldierID->inv.size() )); - Assert( CanMercInteractWithSelectedShopkeeper( MercPtrs[ sSoldierID ] ) ); + Assert( CanMercInteractWithSelectedShopkeeper( sSoldierID ) ); //remove the object from that merc's original inventory slot - DeleteObj(&(Menptr[ sSoldierID ].inv[bOwnerSlotId])); + DeleteObj(&(sSoldierID->inv[bOwnerSlotId])); } } @@ -6544,9 +6536,7 @@ BOOLEAN SKITryToReturnInvToOwnerOrCurrentMerc( INVENTORY_IN_SLOT *pInv ) // if it does have an owner if( pInv->ubIdOfMercWhoOwnsTheItem != NO_PROFILE ) { - INT16 sSoldierID; - - sSoldierID = GetSoldierIDFromMercID( pInv->ubIdOfMercWhoOwnsTheItem ); + SoldierID sSoldierID = GetSoldierIDFromMercID( pInv->ubIdOfMercWhoOwnsTheItem ); // if that soldier is not in player's hire any longer if ( sSoldierID == -1 ) { @@ -6555,13 +6545,13 @@ BOOLEAN SKITryToReturnInvToOwnerOrCurrentMerc( INVENTORY_IN_SLOT *pInv ) // For owners of repaired items, this checks that owner is still hired, in sector, // on current squad, close enough to the shopkeeper, etc. - if ( !CanMercInteractWithSelectedShopkeeper( MercPtrs[ sSoldierID ] ) ) + if ( !CanMercInteractWithSelectedShopkeeper( sSoldierID ) ) { return(FALSE); } // Try to find a place to put in its owner's inventory (regardless of which merc is currently displayed!) - if ( SKITryToAddInvToMercsInventory( pInv, MercPtrs[ sSoldierID ] ) ) + if ( SKITryToAddInvToMercsInventory( pInv, sSoldierID ) ) { return( TRUE ); } @@ -6634,7 +6624,7 @@ BOOLEAN CanMercInteractWithSelectedShopkeeper( SOLDIERTYPE *pSoldier ) Assert( gbSelectedArmsDealerID != -1 ); if ( gusIDOfCivTrader != NOBODY ) - pShopkeeper = MercPtrs[gusIDOfCivTrader]; + pShopkeeper = gusIDOfCivTrader; else pShopkeeper = FindSoldierByProfileID( armsDealerInfo[gbSelectedArmsDealerID].ubShopKeeperID, FALSE ); @@ -6675,7 +6665,7 @@ void AddShopkeeperToGridNo( UINT8 ubProfile, INT32 sGridNo ) { SOLDIERCREATE_STRUCT MercCreateStruct; INT16 sSectorX, sSectorY; - UINT8 ubID; + UINT16 ubID; GetCurrentWorldSector( &sSectorX, &sSectorY ); @@ -6780,7 +6770,7 @@ void DealWithItemsStillOnTheTable() } else { - pDropSoldier = MercPtrs[ gusSelectedSoldier ]; + pDropSoldier = gusSelectedSoldier; } // this guy HAS to be valid! @@ -7023,7 +7013,7 @@ void SelectArmsDealersDropItemToGroundRegionCallBack(MOUSE_REGION * pRegion, INT } else { - pDropSoldier = MercPtrs[ gusSelectedSoldier ]; + pDropSoldier = gusSelectedSoldier; } //if we don't have an item, pick one up @@ -7090,9 +7080,8 @@ UINT32 EvaluateInvSlot( INVENTORY_IN_SLOT *pInvSlot ) //if the dealer is Micky if( gbSelectedArmsDealerID == ARMS_DEALER_MICKY ) { - INT16 sSoldierID; - sSoldierID = GetSoldierIDFromMercID( armsDealerInfo[ gbSelectedArmsDealerID ].ubShopKeeperID ); - if( ( sSoldierID != -1 ) && ( GetDrunkLevel( &Menptr[ sSoldierID ] ) == DRUNK ) ) + SoldierID sSoldierID = GetSoldierIDFromMercID( armsDealerInfo[ gbSelectedArmsDealerID ].ubShopKeeperID ); + if( ( sSoldierID != NOBODY ) && ( GetDrunkLevel( sSoldierID ) == DRUNK ) ) { //Micky is DRUNK, pays more! dPriceModifier = armsDealerInfo[ gbSelectedArmsDealerID ].dSellModifier; diff --git a/Tactical/ShopKeeper Interface.h b/Tactical/ShopKeeper Interface.h index cdff5274..af7565a0 100644 --- a/Tactical/ShopKeeper Interface.h +++ b/Tactical/ShopKeeper Interface.h @@ -97,7 +97,7 @@ bool RepairmanItemQsortCompare(INVENTORY_IN_SLOT& pInvSlot1, INVENTORY_IN_SLOT& void EnterShopKeeperInterfaceScreen( UINT8 ubArmsDealer ); // Flugente: set up shopkeeper with a non-NPC -void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, UINT8 aMercID ); +void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, SoldierID aMercID ); void EnableDisableShopkeeperButtons(UINT32 uiCurrentItemDescriptionScreen, int bpAction); diff --git a/Tactical/SkillCheck.cpp b/Tactical/SkillCheck.cpp index 28b35b6a..7eb3ad67 100644 --- a/Tactical/SkillCheck.cpp +++ b/Tactical/SkillCheck.cpp @@ -339,7 +339,6 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod ) INT32 iSkill; INT32 iChance, iReportChance; INT32 iRoll, iMadeItBy; - INT32 iLoop; SOLDIERTYPE * pTeamSoldier; INT8 bBuddyIndex; BOOLEAN fForceDamnSound = FALSE; @@ -946,9 +945,10 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod ) if (iRoll < iChance) { // If a buddy of this merc is standing around nearby, they'll make a positive comment. - iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ iLoop ]; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; iLoop++,pTeamSoldier++ ) + SoldierID iLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; iLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++iLoop ) { + pTeamSoldier = iLoop; if ( OK_INSECTOR_MERC( pTeamSoldier ) ) { if ( SpacesAway( pSoldier->sGridNo, pTeamSoldier->sGridNo ) < 15 ) diff --git a/Tactical/SkillMenu.cpp b/Tactical/SkillMenu.cpp index 93bfb503..9f4f15ac 100644 --- a/Tactical/SkillMenu.cpp +++ b/Tactical/SkillMenu.cpp @@ -23,7 +23,7 @@ std::vector gTemplateVector; extern void ReadEquipmentTable( SOLDIERTYPE* pSoldier, std::string name ); -extern INT8 bSelectedInfoChar; +extern INT16 bSelectedInfoChar; // sevenfm: need this for correct calculation of traits menu position extern INT16 gsInterfaceLevel; @@ -395,7 +395,7 @@ SkillSelection::Functions( UINT32 aVal ) if ( pSoldier == NULL ) return; - UINT8 ubID = WhoIsThere2(sTraitsMenuTargetGridNo, 0 ); + UINT16 ubID = WhoIsThere2(sTraitsMenuTargetGridNo, 0 ); BOOLEAN result = pSoldier->UseSkill(aVal, sTraitsMenuTargetGridNo, ubID); @@ -784,17 +784,17 @@ SoldierSelection::Setup( UINT32 aVal ) // pretty simple: we find every soldier in a radius around the target position and add him to the list // loop through all soldiers around - for ( UINT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID ; ++cnt ) + for ( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID ; id <= gTacticalStatus.Team[ CIV_TEAM ].bLastID ; ++id ) { - INT32 iRange = GetRangeInCellCoordsFromGridNoDiff( sTraitsMenuTargetGridNo, MercPtrs[ cnt ]->sGridNo ); + INT32 iRange = GetRangeInCellCoordsFromGridNoDiff( sTraitsMenuTargetGridNo, id->sGridNo ); if ( iRange < 100 ) { - if ( cnt != pSoldier->ubID ) + if ( id != pSoldier->ubID ) { - swprintf( pStr, L"%s", MercPtrs[ cnt ]->GetName() ); + swprintf( pStr, L"%s", id->GetName() ); - pOption = new POPUP_OPTION(&std::wstring( pStr ), new popupCallbackFunction( &Wrapper_Function_SoldierSelection, cnt ) ); + pOption = new POPUP_OPTION(&std::wstring( pStr ), new popupCallbackFunction( &Wrapper_Function_SoldierSelection, id ) ); // grey out if no artillery can be called from this sector if ( 0 ) @@ -865,11 +865,11 @@ DragSelection::Setup( UINT32 aVal ) // pretty simple: we find every soldier in a radius around the target position and add him to the list // loop through all soldiers around - for ( UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt ) { if ( cnt != pSoldier->ubID && pSoldier->CanDragPerson(cnt) ) { - swprintf( pStr, L"%s", MercPtrs[cnt]->GetName( ) ); + swprintf( pStr, L"%s", cnt->GetName( ) ); pOption = new POPUP_OPTION( &std::wstring( pStr ), new popupCallbackFunction( &Wrapper_Function_DragSelection, cnt ) ); @@ -1098,7 +1098,7 @@ EquipmentSelection::Functions(UINT32 aVal) } else if ( aVal < gTemplateVector.size( ) ) { - SOLDIERTYPE* pSoldier = &Menptr[gCharactersList[bSelectedInfoChar].usSolID]; + SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID; if ( pSoldier ) { std::string name = gTemplateVector[aVal]; diff --git a/Tactical/Soldier Add.cpp b/Tactical/Soldier Add.cpp index 71689197..276ee471 100644 --- a/Tactical/Soldier Add.cpp +++ b/Tactical/Soldier Add.cpp @@ -1135,18 +1135,16 @@ INT32 FindRandomGridNoBetweenCircles( INT32 sCenterGridNo, UINT8 uInnerRadius, U return(sGridNo); } - -BOOLEAN InternalAddSoldierToSector( UINT8 ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ) +BOOLEAN InternalAddSoldierToSector(SoldierID ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ) { - UINT8 ubDirection = 0; - UINT8 ubCalculatedDirection = 0; - SOLDIERTYPE *pSoldier = 0; - INT32 sGridNo = NOWHERE; - INT32 sExitGridNo = NOWHERE; + UINT8 ubDirection = 0; + UINT8 ubCalculatedDirection = 0; + INT32 sGridNo = NOWHERE; + INT32 sExitGridNo = NOWHERE; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("InternalAddSoldierToSector")); - pSoldier = MercPtrs[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; if ( pSoldier->bActive ) { @@ -1340,20 +1338,19 @@ BOOLEAN InternalAddSoldierToSector( UINT8 ubID, BOOLEAN fCalculateDirection, BOO return( FALSE ); } - -BOOLEAN AddSoldierToSector( UINT8 ubID ) +BOOLEAN AddSoldierToSector( SoldierID ubID ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierToSector")); return( InternalAddSoldierToSector( ubID, TRUE, FALSE, 0 , 0) ); } -BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT8 ubID ) +BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT16 ubID ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierToSectorNoCalculateDirection")); return( InternalAddSoldierToSector( ubID, FALSE, FALSE, 0, 0 ) ); } -BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, UINT16 usAnimState, UINT16 usAnimCode ) +BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT16 ubID, UINT16 usAnimState, UINT16 usAnimCode ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierToSectorNoCalculateDirectionUseAnimation")); return( InternalAddSoldierToSector( ubID, FALSE, TRUE, usAnimState, usAnimCode ) ); @@ -1771,16 +1768,14 @@ void AddSoldierToSectorGridNo( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDir // IsMercOnTeam() checks to see if the passed in Merc Profile ID is currently on the player's team BOOLEAN IsMercOnTeam(UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive) { - UINT16 cnt; - UINT8 ubLastTeamID; - SOLDIERTYPE *pTeamSoldier; - - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - ubLastTeamID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + SOLDIERTYPE *pTeamSoldier; + SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID ubLastTeamID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= ubLastTeamID; ++cnt, pTeamSoldier++) + for ( ; cnt <= ubLastTeamID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->ubProfile == ubMercID && pTeamSoldier->bActive ) { if ( aAlreadyInCountry && pTeamSoldier->bAssignment == IN_TRANSIT ) @@ -1797,16 +1792,16 @@ BOOLEAN IsMercOnTeam(UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive) } -// GetSoldierIDFromMercID() Gets the Soldier ID from the Merc Profile ID, else returns -1 -INT16 GetSoldierIDFromMercID(UINT8 ubMercID) +// GetSoldierIDFromMercID() Gets the Soldier ID from the Merc Profile ID, else returns NOBODY +SoldierID GetSoldierIDFromMercID(UINT8 ubMercID) { SOLDIERTYPE *pTeamSoldier = NULL; - - UINT16 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt, ++pTeamSoldier ) + for ( ; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->ubProfile == ubMercID ) { if( pTeamSoldier->bActive ) @@ -1814,7 +1809,7 @@ INT16 GetSoldierIDFromMercID(UINT8 ubMercID) } } - return -1 ; + return NOBODY; } diff --git a/Tactical/Soldier Add.h b/Tactical/Soldier Add.h index bb96f44e..3f67759a 100644 --- a/Tactical/Soldier Add.h +++ b/Tactical/Soldier Add.h @@ -30,19 +30,19 @@ INT32 FindRandomGridNoBetweenCircles( INT32 sCenterGridNo, UINT8 uInnerRadius, U // Adds a soldier ( already created in mercptrs[] array )! // Finds a good placement based on data in the loaded sector and if they are enemy's or not, etc... -BOOLEAN AddSoldierToSector( UINT8 ubID ); +BOOLEAN AddSoldierToSector( SoldierID ubID ); -BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT8 ubID ); +BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT16 ubID ); -BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, UINT16 usAnimState, UINT16 usAnimCode ); +BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT16 ubID, UINT16 usAnimState, UINT16 usAnimCode ); // IsMercOnTeam() checks to see if the passed in Merc Profile ID is currently on the player's team BOOLEAN IsMercOnTeam( UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive ); -// GetSoldierIDFromMercID() Gets the Soldier ID from the Merc Profile ID, else returns -1 -INT16 GetSoldierIDFromMercID(UINT8 ubMercID); +// GetSoldierIDFromMercID() Gets the Soldier ID from the Merc Profile ID, else returns NOBODY +SoldierID GetSoldierIDFromMercID(UINT8 ubMercID); INT32 FindGridNoFromSweetSpotWithStructData( SOLDIERTYPE *pSoldier, UINT16 usAnimState, INT32 sSweetGridNo, INT8 ubRadius, UINT8 *pubDirection, BOOLEAN fClosestToMerc ); diff --git a/Tactical/Soldier Ani.cpp b/Tactical/Soldier Ani.cpp index f294f9da..6c33da15 100644 --- a/Tactical/Soldier Ani.cpp +++ b/Tactical/Soldier Ani.cpp @@ -78,7 +78,7 @@ class SOLDIERTYPE; //#define TIME_FOR_RANDOM_ANIM_CHECK 10 #define TIME_FOR_RANDOM_ANIM_CHECK 1 -BOOLEAN gfLastMercTalkedAboutKillingID = NOBODY; +SoldierID gfLastMercTalkedAboutKillingID = NOBODY; extern void AddFuelToVehicle( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pVehicle ); @@ -104,10 +104,10 @@ BOOLEAN HandleUnjamAnimation( SOLDIERTYPE *pSoldier ); extern void HandleSystemNewAISituation( SOLDIERTYPE *pSoldier, BOOLEAN fResetABC ); extern void PlaySoldierFootstepSound( SOLDIERTYPE *pSoldier ); -extern UINT8 NumCapableEnemyInSector( ); +extern UINT16 NumCapableEnemyInSector( ); extern BOOLEAN gfKillingGuysForLosingBattle; -extern UINT8 gubInterruptProvoker; +extern SoldierID gubInterruptProvoker; extern UINT16 PickSoldierReadyAnimation( SOLDIERTYPE *pSoldier, BOOLEAN fEndReady, BOOLEAN fHipStance ); @@ -1163,7 +1163,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) { - send_grenade( pSoldier->pTempObject , pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, pSoldier->sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iRealObjectID , true); + send_grenade( pSoldier->pTempObject, pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, pSoldier->sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iRealObjectID, true); } } @@ -1557,7 +1557,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) if ( pSoldier->bTeam != gbPlayerNum ) { // only locate if the enemy is visible or he's aiming at a player - if ( pSoldier->bVisible != -1 || (pSoldier->ubTargetID != NOBODY && MercPtrs[ pSoldier->ubTargetID ]->bTeam == gbPlayerNum) ) + if ( pSoldier->bVisible != -1 || (pSoldier->ubTargetID != NOBODY && pSoldier->ubTargetID->bTeam == gbPlayerNum) ) { LocateGridNo( pSoldier->sTargetGridNo ); } @@ -1785,7 +1785,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) pSoldier->uiTimeOfLastRandomAction = 0; // Don't play these generally if this is the guy selected by player, as this one is "awaiting orders" - if (pSoldier->ubID != (UINT8)gusSelectedSoldier || Random( 10 ) == 0 ) + if (pSoldier->ubID != gusSelectedSoldier || Random( 10 ) == 0 ) { // Don't do any in water! // Also don't play if we are in the middle of something @@ -2046,7 +2046,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) { SOLDIERTYPE *pTSoldier; UINT32 uiMercFlags; - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; if ( FindSoldier( pSoldier->sTargetGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) { @@ -3126,15 +3126,11 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) // Reload robot.... { - UINT8 ubPerson; - SOLDIERTYPE *pRobot; + SoldierID ubPerson = WhoIsThere2( pSoldier->aiData.sPendingActionData2, pSoldier->pathing.bLevel ); - // Get pointer... - ubPerson = WhoIsThere2( pSoldier->aiData.sPendingActionData2, pSoldier->pathing.bLevel ); - - if ( ubPerson != NOBODY && MercPtrs[ ubPerson ]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( ubPerson != NOBODY && ubPerson->flags.uiStatusFlags & SOLDIER_ROBOT ) { - pRobot = MercPtrs[ ubPerson ]; + SOLDIERTYPE *pRobot = ubPerson; ReloadGun( pRobot, &(pRobot->inv[ HANDPOS ] ), pSoldier->pTempObject ); @@ -3303,17 +3299,17 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) // REFUELING A VEHICLE // THE GAS_CAN IS IN THE MERCS MAIN HAND AT THIS TIME { - UINT8 ubPerson; - SOLDIERTYPE *pVehicle; - // Get pointer to vehicle... - ubPerson = WhoIsThere2( pSoldier->aiData.sPendingActionData2, pSoldier->pathing.bLevel ); - pVehicle = MercPtrs[ ubPerson ]; + SoldierID ubPerson = WhoIsThere2( pSoldier->aiData.sPendingActionData2, pSoldier->pathing.bLevel ); + if ( ubPerson != NOBODY ) + { + SOLDIERTYPE *pVehicle = ubPerson; - // this is a ubID for soldiertype.... - AddFuelToVehicle( pSoldier, pVehicle ); + // this is a ubID for soldiertype.... + AddFuelToVehicle( pSoldier, pVehicle ); - fInterfacePanelDirty = DIRTYLEVEL2; + fInterfacePanelDirty = DIRTYLEVEL2; + } } break; @@ -3555,15 +3551,14 @@ BOOLEAN ShouldMercSayHappyWithGunQuote( SOLDIERTYPE *pSoldier ) void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; std::vector bBuddyIndex (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, -1); // INT8 bBuddyIndex[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { -1 }; INT8 bTempBuddyIndex; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; - INT32 cnt; UINT16 usQuoteNum; BOOLEAN buddyquoteused = FALSE; @@ -3574,11 +3569,12 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, return; // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, ++pTeamSoldier ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep && !TileIsOutOfBounds(pTeamSoldier->sGridNo) && pTeamSoldier->ubProfile != pKillerSoldier->ubProfile ) @@ -3647,7 +3643,7 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, } // OK, a good candidate... - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; bBuddyIndex[ ubNumMercs ] = bTempBuddyIndex; ++ubNumMercs; } @@ -3657,51 +3653,52 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); + SOLDIERTYPE *pChosen = MercPtrs[ubMercsInSector[ubChosenMerc]]; switch( bBuddyIndex[ ubChosenMerc ] ) { case 0: usQuoteNum = QUOTE_BUDDY_1_GOOD; - MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_1_WITNESSED; + pChosen->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_1_WITNESSED; break; case 1: usQuoteNum = QUOTE_BUDDY_2_GOOD; - MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED; + pChosen->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED; break; case 2: - if( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( pChosen->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) usQuoteNum = QUOTE_AIM_BUDDY_3_GOOD; else usQuoteNum = QUOTE_NON_AIM_BUDDY_3_GOOD; - MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED; + pChosen->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED; break; case 3: - if( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( pChosen->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) usQuoteNum = QUOTE_AIM_BUDDY_4_GOOD; else usQuoteNum = QUOTE_NON_AIM_BUDDY_4_GOOD; - MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_4_WITNESSED; + pChosen->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_4_WITNESSED; break; case 4: - if( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) + if( pChosen->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) usQuoteNum = QUOTE_AIM_BUDDY_5_GOOD; else usQuoteNum = QUOTE_NON_AIM_BUDDY_5_GOOD; - MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_5_WITNESSED; + pChosen->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_5_WITNESSED; break; case 5: usQuoteNum = QUOTE_LEARNED_TO_LIKE_WITNESSED; - MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_6_WITNESSED; + pChosen->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_6_WITNESSED; break; } - TacticalCharacterDialogue( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], usQuoteNum ); + TacticalCharacterDialogue( pChosen, usQuoteNum ); buddyquoteused = TRUE; } @@ -3712,8 +3709,9 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, { cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, ++pTeamSoldier ) + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pTeamSoldier = cnt; // we do not exclude the buddies from above. If we get to this point, it might have been a buddy that already said his line. In that case additional dialogue might play other ones // Add guy if he's a candidate... @@ -3745,12 +3743,10 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt; // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); -// UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; BOOLEAN fDoSomeoneElse = FALSE; gfLastMercTalkedAboutKillingID = pKilledSoldier->ubID; @@ -3806,11 +3802,12 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier if ( fDoSomeoneElse ) { // Check if a person is here that has this quote.... - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( cnt != pKillerSoldier->ubID ) { if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) ) @@ -3818,7 +3815,7 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier // Can we see location? if ( SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, bLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -3828,7 +3825,7 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier // Did we find anybody? if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // We have a random chance of not saying our we killed a guy quote if ( Random( 100 ) < 50 ) @@ -3933,11 +3930,11 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) SOLDIERTYPE *pKillerSoldier = NULL; if(pSoldier->ubAttackerID != NOBODY) { - pKillerSoldier = MercPtrs[pSoldier->ubAttackerID]; + pKillerSoldier = pSoldier->ubAttackerID; } else if(pSoldier->ubPreviousAttackerID != NOBODY) { - pKillerSoldier = MercPtrs[pSoldier->ubPreviousAttackerID]; + pKillerSoldier = pSoldier->ubPreviousAttackerID; } if(pKillerSoldier != NULL) { @@ -3996,8 +3993,8 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) { ////////////////////////////////////////////////////////////// // SANDRO - some changes here - UINT8 ubAttacker = pSoldier->ubAttackerID; - UINT8 ubAssister = pSoldier->ubPreviousAttackerID; + SoldierID ubAttacker = pSoldier->ubAttackerID; + SoldierID ubAssister = pSoldier->ubPreviousAttackerID; // If attacker is nobody, and we died, then set the last attacker(if exists) as our killer if ( ubAttacker == NOBODY ) { @@ -4025,9 +4022,9 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) { // anv: note that ubAttacker can be already different from pSoldier->ubAttackerID // IF this guy has an attacker and he's a good guy, play sound - if ( pSoldier->ubAttackerID != NOBODY ) + if ( pSoldier->ubAttackerID < NOBODY ) { - if ( MercPtrs[ pSoldier->ubAttackerID ] != NULL && MercPtrs[ pSoldier->ubAttackerID ]->bTeam == gbPlayerNum && gTacticalStatus.ubAttackBusyCount > 0 ) + if ( pSoldier->ubAttackerID->bTeam == gbPlayerNum && gTacticalStatus.ubAttackBusyCount > 0 ) { gTacticalStatus.fKilledEnemyOnAttack = TRUE; gTacticalStatus.ubEnemyKilledOnAttack = pSoldier->ubID; @@ -4044,13 +4041,13 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) else if ( pSoldier->bVisible == TRUE ) { // We were a visible enemy, say laugh! - if ( Random(3) == 0 && !CREATURE_OR_BLOODCAT( MercPtrs[ ubAttacker ] ) ) + if ( Random(3) == 0 && !CREATURE_OR_BLOODCAT( ubAttacker ) ) { // if the attacker was from the same team, play a curse, otherwise play a laugh - if ( MercPtrs[ubAttacker]->bSide == pSoldier->bSide ) - MercPtrs[ubAttacker]->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); + if ( ubAttacker->bSide == pSoldier->bSide ) + ubAttacker->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); else - MercPtrs[ ubAttacker ]->DoMercBattleSound( BATTLE_SOUND_LAUGH1 ); + ubAttacker->DoMercBattleSound( BATTLE_SOUND_LAUGH1 ); } } } @@ -4062,7 +4059,7 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) // militia also now track kills... if ( ubAttacker != NOBODY ) { - if ( MercPtrs[ ubAttacker ]->bTeam == gbPlayerNum ) + if ( ubAttacker->bTeam == gbPlayerNum ) { // increment kills ///////////////////////////////////////////////////////////////////////////////////// @@ -4070,109 +4067,109 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) switch(pSoldier->ubSoldierClass) { case SOLDIER_CLASS_ROBOT: - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsOthers++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsOthers++; break; case SOLDIER_CLASS_ELITE : - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsElites++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsElites++; break; case SOLDIER_CLASS_ARMY : - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsRegulars++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsRegulars++; break; case SOLDIER_CLASS_ADMINISTRATOR : - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsAdmins++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsAdmins++; break; case SOLDIER_CLASS_CREATURE : - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsCreatures++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsCreatures++; break; case SOLDIER_CLASS_ZOMBIE : - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsZombies++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsZombies++; break; case SOLDIER_CLASS_BANDIT: - gMercProfiles[MercPtrs[ubAttacker]->ubProfile].records.usKillsOthers++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsOthers++; break; default : if ( CREATURE_OR_BLOODCAT( pSoldier ) ) - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsCreatures++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsCreatures++; else if ( ARMED_VEHICLE( pSoldier ) ) - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsTanks++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsTanks++; else if ( pSoldier->bTeam == CIV_TEAM && !pSoldier->aiData.bNeutral && pSoldier->bSide != gbPlayerNum ) - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsHostiles++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsHostiles++; else { - gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsOthers++; + gMercProfiles[ ubAttacker->ubProfile ].records.usKillsOthers++; // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians - if (gGameExternalOptions.fDynamicOpinions && pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) + if (gGameExternalOptions.fDynamicOpinions && pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == ubAttacker->bSide) ) { // not for killing animals though... if ( pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW ) - HandleDynamicOpinionChange( MercPtrs[ubAttacker], OPINIONEVENT_CIVKILLER, TRUE, TRUE ); + HandleDynamicOpinionChange( ubAttacker, OPINIONEVENT_CIVKILLER, TRUE, TRUE ); } } break; } - //gMercProfiles[ MercPtrs[ pSoldier->ubAttackerID ]->ubProfile ].usKills++; + //gMercProfiles[ pSoldier->ubAttackerID->ubProfile ].usKills++; ///////////////////////////////////////////////////////////////////////////////////// gStrategicStatus.usPlayerKills++; // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians if (gGameExternalOptions.fDynamicOpinions) { - if (pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide)) + if (pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == ubAttacker->bSide)) { // not for killing animals though... if (pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW) - HandleDynamicOpinionChange(MercPtrs[ubAttacker], OPINIONEVENT_CIVKILLER, TRUE, TRUE); + HandleDynamicOpinionChange(ubAttacker, OPINIONEVENT_CIVKILLER, TRUE, TRUE); } else { // if this enemy was attacking a freshly wounded merc, it is likely they posed a real threat - the merc will be thankful for saving their life - if (pSoldier->ubTargetID != NOBODY && MercPtrs[pSoldier->ubTargetID]->bBleeding > 10) + if (pSoldier->ubTargetID != NOBODY && pSoldier->ubTargetID->bBleeding > 10) { - AddOpinionEvent(MercPtrs[pSoldier->ubTargetID]->ubProfile, MercPtrs[ubAttacker]->ubProfile, OPINIONEVENT_BATTLE_SAVIOUR); + AddOpinionEvent(pSoldier->ubTargetID->ubProfile, ubAttacker->ubProfile, OPINIONEVENT_BATTLE_SAVIOUR); } else { // complain about a fragthief, or thank for assistance - correct event is chosen internally - HandleDynamicOpinionChange(MercPtrs[ubAttacker], OPINIONEVENT_FRAGTHIEF, TRUE, TRUE); + HandleDynamicOpinionChange(ubAttacker, OPINIONEVENT_FRAGTHIEF, TRUE, TRUE); } } } } - else if ( MercPtrs[ ubAttacker ]->bTeam == MILITIA_TEAM ) + else if ( ubAttacker->bTeam == MILITIA_TEAM ) { // get a kill! 2 points! - MercPtrs[ ubAttacker ]->ubMilitiaKills += 1; + ubAttacker->ubMilitiaKills += 1; } } if ( ubAssister != NOBODY && ubAssister != ubAttacker ) { - if ( MercPtrs[ ubAssister ]->bTeam == gbPlayerNum ) + if ( ubAssister->bTeam == gbPlayerNum ) { ///////////////////////////////////////////////////////////////////////////////////// // SANDRO - new mercs' records - if( MercPtrs[ ubAttacker ] != NULL ) + if( ubAttacker != NOBODY ) { - if( MercPtrs[ ubAttacker ]->bTeam == gbPlayerNum ) - gMercProfiles[ MercPtrs[ ubAssister ]->ubProfile ].records.usAssistsMercs++; - else if ( MercPtrs[ ubAttacker ]->bTeam == MILITIA_TEAM ) - gMercProfiles[ MercPtrs[ ubAssister ]->ubProfile ].records.usAssistsMilitia++; + if( ubAttacker->bTeam == gbPlayerNum ) + gMercProfiles[ ubAssister->ubProfile ].records.usAssistsMercs++; + else if ( ubAttacker->bTeam == MILITIA_TEAM ) + gMercProfiles[ ubAssister->ubProfile ].records.usAssistsMilitia++; else - gMercProfiles[ MercPtrs[ ubAssister ]->ubProfile ].records.usAssistsOthers++; + gMercProfiles[ ubAssister->ubProfile ].records.usAssistsOthers++; } else { - gMercProfiles[ MercPtrs[ ubAssister ]->ubProfile ].records.usAssistsOthers++; + gMercProfiles[ ubAssister->ubProfile ].records.usAssistsOthers++; } - //gMercProfiles[ MercPtrs[ ubAssister ]->ubProfile ].usAssists++; + //gMercProfiles[ ubAssister->ubProfile ].usAssists++; ///////////////////////////////////////////////////////////////////////////////////// } - else if ( MercPtrs[ ubAssister ]->bTeam == MILITIA_TEAM ) + else if ( ubAssister->bTeam == MILITIA_TEAM ) { // get an assist - 1 points - MercPtrs[ubAssister]->ubMilitiaAssists += 1; + ubAssister->ubMilitiaAssists += 1; } } /* @@ -4457,7 +4454,7 @@ void CheckForAndHandleSoldierIncompacitated( SOLDIERTYPE *pSoldier ) // SANDRO - if Martial Artist took someone down, always fall back if possible (for the fun) if ( pSoldier->ubAttackerID != NOBODY && gGameOptions.fNewTraitSystem ) { - if ( HAS_SKILL_TRAIT( MercPtrs[ pSoldier->ubAttackerID ], MARTIAL_ARTS_NT ) && (!MercPtrs[ pSoldier->ubAttackerID ]->usAttackingWeapon || ItemIsBrassKnuckles(MercPtrs[ pSoldier->ubAttackerID ]->inv[HANDPOS].usItem)) ) + if ( HAS_SKILL_TRAIT( pSoldier->ubAttackerID, MARTIAL_ARTS_NT ) && (!pSoldier->ubAttackerID->usAttackingWeapon || ItemIsBrassKnuckles(pSoldier->ubAttackerID->inv[HANDPOS].usItem)) ) { fAlwaysFallBack = TRUE; } @@ -4469,7 +4466,7 @@ void CheckForAndHandleSoldierIncompacitated( SOLDIERTYPE *pSoldier ) if ( pSoldier->ubAttackerID != NOBODY ) { // Find direction! - bTestDirection = (INT8)GetDirectionFromGridNo( MercPtrs[ pSoldier->ubAttackerID ]->sGridNo, pSoldier ); + bTestDirection = (INT8)GetDirectionFromGridNo( pSoldier->ubAttackerID->sGridNo, pSoldier ); fForceDirection = TRUE; } diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 5efcf821..fdcc1c0e 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -153,7 +153,7 @@ extern BOOLEAN gfShiftBombPlant; #include "connect.h" extern void TeleportSelectedSoldier( void ); -extern BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, UINT16 usAnimState, UINT16 usAnimCode ); +extern BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT16 ubID, UINT16 usAnimState, UINT16 usAnimCode ); // Flugente: external sector data extern SECTOR_EXT_DATA SectorExternalData[256][4]; @@ -632,7 +632,7 @@ void STRUCT_AIData::ConvertFrom_101_To_102( const OLDSOLDIERTYPE_101& src ) this->bMoved = src.bMoved; this->bHunting = src.bHunting; this->ubLastCall = src.ubLastCall; - this->ubCaller = src.ubCaller; + this->ubCaller = static_cast( src.ubCaller ); this->sCallerGridNo = src.sCallerGridNo; this->bCallPriority = src.bCallPriority; this->bCallActedUpon = src.bCallActedUpon; @@ -694,8 +694,8 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->sLastTwoLocations[0] = src.sLastTwoLocations[0]; this->sLastTwoLocations[1] = src.sLastTwoLocations[1]; - this->ubID = src.ubID; - this->bReserved1 = src.bReserved1; + this->ubID = static_cast( src.ubID ); + //this->bReserved1 = src.bReserved1; this->ubBodyType = src.ubBodyType; this->bActionPoints = src.bActionPoints; @@ -717,7 +717,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->ubWaitActionToDo = src.ubWaitActionToDo; this->ubInsertionDirection = src.ubInsertionDirection; this->bGunType = src.bGunType; - this->ubOppNum = src.ubOppNum; + this->ubOppNum = static_cast( src.ubOppNum ); this->bLastRenderVisibleValue = src.bLastRenderVisibleValue; this->ubAttackingHand = src.ubAttackingHand; this->sWeightCarriedAtTurnStart = src.sWeightCarriedAtTurnStart; @@ -756,8 +756,8 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->uiAIDelay = src.uiAIDelay; this->sReloadDelay = src.sReloadDelay; - this->ubAttackerID = src.ubAttackerID; - this->ubPreviousAttackerID = src.ubPreviousAttackerID; + this->ubAttackerID = static_cast( src.ubAttackerID ); + this->ubPreviousAttackerID = static_cast( src.ubPreviousAttackerID ); this->sInsertionGridNo = src.sInsertionGridNo; @@ -808,7 +808,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->pCurrentShade = src.pCurrentShade; this->ubFadeLevel = src.ubFadeLevel; this->ubServiceCount = src.ubServiceCount; - this->ubServicePartner = src.ubServicePartner; + this->ubServicePartner = static_cast( src.ubServicePartner ); this->pThrowParams = src.pThrowParams; this->bReverse = src.bReverse; this->pLevelNode = src.pLevelNode; @@ -931,7 +931,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->ubSoldierClass = src.ubSoldierClass; //admin, elite, troop (creature types?) this->ubAPsLostToSuppression = src.ubAPsLostToSuppression; - this->ubSuppressorID = src.ubSuppressorID; + this->ubSuppressorID = static_cast( src.ubSuppressorID ); this->ubDesiredSquadAssignment = src.ubDesiredSquadAssignment; this->ubNumTraversalsAllowedToMerge = src.ubNumTraversalsAllowedToMerge; @@ -946,7 +946,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->bBlockedByAnotherMercDirection = src.bBlockedByAnotherMercDirection; this->usAttackingWeapon = src.usAttackingWeapon; this->bWeaponMode = src.bWeaponMode; - this->ubTargetID = src.ubTargetID; + this->ubTargetID = static_cast( src.ubTargetID ); this->bAIScheduleProgress = src.bAIScheduleProgress; this->sOffWorldGridNo = src.sOffWorldGridNo; this->pAniTile = src.pAniTile; @@ -966,8 +966,8 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->bOldBattleSnd = src.bOldBattleSnd; this->iBurstSoundID = src.iBurstSoundID; this->bSlotItemTakenFrom = src.bSlotItemTakenFrom; - this->ubAutoBandagingMedic = src.ubAutoBandagingMedic; - this->ubRobotRemoteHolderID = src.ubRobotRemoteHolderID; + this->ubAutoBandagingMedic = static_cast( src.ubAutoBandagingMedic ); + this->ubRobotRemoteHolderID = static_cast( src.ubRobotRemoteHolderID ); this->uiTimeOfLastContractUpdate = src.uiTimeOfLastContractUpdate; this->bTypeOfLastContract = src.bTypeOfLastContract; this->bTurnsCollapsed = src.bTurnsCollapsed; @@ -992,7 +992,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->bRegenBoostersUsedToday = src.bRegenBoostersUsedToday; this->bNumPelletsHitBy = src.bNumPelletsHitBy; this->sSkillCheckGridNo = src.sSkillCheckGridNo; - this->ubLastEnemyCycledID = src.ubLastEnemyCycledID; + this->ubLastEnemyCycledID = static_cast( src.ubLastEnemyCycledID ); this->ubPrevSectorID = src.ubPrevSectorID; this->ubNumTilesMovesSinceLastForget = src.ubNumTilesMovesSinceLastForget; @@ -1003,7 +1003,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->usValueGoneUp = src.usValueGoneUp; this->ubNumLocateCycles = src.ubNumLocateCycles; this->ubDelayedMovementFlags = src.ubDelayedMovementFlags; - this->ubCTGTTargetID = src.ubCTGTTargetID; + this->ubCTGTTargetID = static_cast( src.ubCTGTTargetID ); this->uiMercChecksum = src.uiMercChecksum; @@ -1027,7 +1027,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->pGroup = src.pGroup; this->ubLeaveHistoryCode = src.ubLeaveHistoryCode; - this->bOverrideMoveSpeed = src.bOverrideMoveSpeed; + this->bOverrideMoveSpeed = static_cast( src.bOverrideMoveSpeed ); this->uiTimeSoldierWillArrive = src.uiTimeSoldierWillArrive; this->bVehicleUnderRepairID = src.bVehicleUnderRepairID; @@ -1040,7 +1040,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->iTuringSoundID = src.iTuringSoundID; this->ubLastDamageReason = src.ubLastDamageReason; this->uiTimeSinceLastBleedGrunt = src.uiTimeSinceLastBleedGrunt; - this->ubNextToPreviousAttackerID = src.ubNextToPreviousAttackerID; + this->ubNextToPreviousAttackerID = static_cast( src.ubNextToPreviousAttackerID ); this->bDoAutofire = src.bDoAutofire; this->numFlanks = src.numFlanks; this->lastFlankSpot = src.lastFlankSpot; @@ -1142,8 +1142,25 @@ void SOLDIERTYPE::initialize( ) // sevenfm:initialize additional data this->InitializeExtraData(); + + // Initialize all SoldierID fields to NOBODY. 0 is a valid value! + this->ubID = NOBODY; + this->ubOppNum = NOBODY; + this->ubAttackerID = NOBODY; + this->ubPreviousAttackerID = NOBODY; + this->ubServicePartner = NOBODY; + this->ubSuppressorID = NOBODY; + this->ubTargetID = NOBODY; + this->ubAutoBandagingMedic = NOBODY; + this->ubRobotRemoteHolderID = NOBODY; + this->ubCTGTTargetID = NOBODY; + this->bOverrideMoveSpeed = NOBODY; + this->ubNextToPreviousAttackerID = NOBODY; + this->usDragPersonID = NOBODY; + this->usChatPartnerID = NOBODY; } + bool SOLDIERTYPE::exists( ) { if ( this == NULL ) @@ -1730,11 +1747,11 @@ void AdjustForFastTurnAnimation( SOLDIERTYPE *pSoldier ); UINT16 SelectFireAnimation( SOLDIERTYPE *pSoldier, UINT8 ubHeight ); void SelectFallAnimation( SOLDIERTYPE *pSoldier ); BOOLEAN FullStructAlone( INT32 sGridNo, UINT8 ubRadius ); -void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); -void SoldierGotHitBlade( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); -void SoldierGotHitPunch( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); -void SoldierGotHitExplosion( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); -void SoldierGotHitVehicle( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); +void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); +void SoldierGotHitBlade( SOLDIERTYPE* pSoldier, UINT8 ubHitLocation ); +void SoldierGotHitPunch( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); +void SoldierGotHitExplosion( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); +void SoldierGotHitVehicle( SOLDIERTYPE* pSoldier, UINT16 bDirection ); UINT8 CalcScreamVolume( SOLDIERTYPE * pSoldier, UINT8 ubCombinedLoss ); void PlaySoldierFootstepSound( SOLDIERTYPE *pSoldier ); void HandleSystemNewAISituation( SOLDIERTYPE *pSoldier, BOOLEAN fResetABC ); @@ -2285,14 +2302,13 @@ void SOLDIERTYPE::CalcNewActionPoints( void ) void SOLDIERTYPE::DoNinjaAttack( void ) { - //UINT32 uiMercFlags; - UINT16 usSoldierIndex; - SOLDIERTYPE *pTSoldier; - UINT8 ubTDirection; - UINT8 ubTargetStance; + //UINT32 uiMercFlags; + SOLDIERTYPE *pTSoldier; + UINT8 ubTDirection; + UINT8 ubTargetStance; - usSoldierIndex = WhoIsThere2( this->sTargetGridNo, this->pathing.bLevel ); + SoldierID usSoldierIndex = WhoIsThere2( this->sTargetGridNo, this->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { GetSoldier( &pTSoldier, usSoldierIndex ); @@ -2413,7 +2429,7 @@ void SOLDIERTYPE::DoNinjaAttack( void ) } -BOOLEAN SOLDIERTYPE::CreateSoldierCommon( UINT8 ubBodyType, UINT16 usSoldierID, UINT16 usState ) +BOOLEAN SOLDIERTYPE::CreateSoldierCommon( UINT8 ubBodyType, SoldierID usSoldierID, UINT16 usState ) { BOOLEAN fSuccess = FALSE; INT32 iCounter = 0; @@ -2763,7 +2779,7 @@ BOOLEAN ReCreateSelectedSoldierLight( ) return(FALSE); } - pSoldier = MercPtrs[gusSelectedSoldier]; + pSoldier = gusSelectedSoldier; return(pSoldier->ReCreateSoldierLight( )); } @@ -2820,9 +2836,9 @@ BOOLEAN SOLDIERTYPE::ChangeSoldierState( UINT16 usNewState, UINT16 usStartingAni // This function reevaluates the stance if the guy sees us! BOOLEAN ReevaluateEnemyStance( SOLDIERTYPE *pSoldier, UINT16 usAnimState ) { - INT32 cnt, iClosestEnemy = NOBODY; + SoldierID iClosestEnemy = NOBODY; INT16 sTargetXPos, sTargetYPos; - BOOLEAN fReturnVal = FALSE; + BOOLEAN fReturnVal = FALSE; INT16 sDist, sClosestDist = 10000; // make the chosen one not turn to face us @@ -2854,7 +2870,7 @@ BOOLEAN ReevaluateEnemyStance( SOLDIERTYPE *pSoldier, UINT16 usAnimState ) if ( pSoldier->aiData.bOppCnt > 0 ) { // Pick a guy this buddy sees and turn towards them! - for ( cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; cnt++ ) + for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) { if ( pSoldier->aiData.bOppList[cnt] == SEEN_CURRENTLY ) { @@ -2875,21 +2891,21 @@ BOOLEAN ReevaluateEnemyStance( SOLDIERTYPE *pSoldier, UINT16 usAnimState ) if ( gGameExternalOptions.fNoEnemyAutoReadyWeapon == 0 ) { // Change to fire ready animation - ConvertGridNoToXY( MercPtrs[iClosestEnemy]->sGridNo, &sTargetXPos, &sTargetYPos ); + ConvertGridNoToXY( iClosestEnemy->sGridNo, &sTargetXPos, &sTargetYPos ); pSoldier->flags.fDontChargeReadyAPs = TRUE; // Ready weapon - fReturnVal = pSoldier->SoldierReadyWeapon( sTargetXPos, sTargetYPos, FALSE, AIDecideHipOrShoulderStance( pSoldier, MercPtrs[iClosestEnemy]->sGridNo ) ); + fReturnVal = pSoldier->SoldierReadyWeapon( sTargetXPos, sTargetYPos, FALSE, AIDecideHipOrShoulderStance( pSoldier, iClosestEnemy->sGridNo ) ); return(fReturnVal); } // this makes the soldier to only turn towards our direction, instead of raising his weapon else if ( gGameExternalOptions.fNoEnemyAutoReadyWeapon == 2 ) { - //ConvertGridNoToXY( MercPtrs[ iClosestEnemy ]->sGridNo, &sTargetXPos, &sTargetYPos ); + //ConvertGridNoToXY( iClosestEnemy->sGridNo, &sTargetXPos, &sTargetYPos ); //sFacingDir = GetDirectionFromXY( sXPos, sYPos, pSoldier ); - INT16 sFacingDir = GetDirectionToGridNoFromGridNo( pSoldier->sGridNo, MercPtrs[iClosestEnemy]->sGridNo ); + INT16 sFacingDir = GetDirectionToGridNoFromGridNo( pSoldier->sGridNo, iClosestEnemy->sGridNo ); if ( sFacingDir != pSoldier->ubDirection ) { @@ -5698,9 +5714,8 @@ UINT16 PickSoldierReadyAnimation( SOLDIERTYPE *pSoldier, BOOLEAN fEndReady, BOOL // extern SOLDIERTYPE * FreeUpAttackerGivenTarget( UINT8 ubID, UINT8 ubTargetID ); // extern SOLDIERTYPE * ReduceAttackBusyGivenTarget( UINT8 ubID, UINT8 ubTargetID ); - // ATE: THIS FUNCTION IS USED FOR ALL SOLDIER TAKE DAMAGE FUNCTIONS! -void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGrid ) +void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGrid ) { UINT8 ubCombinedLoss, ubVolume, ubReason; // SOLDIERTYPE * pNewSoldier; @@ -5719,7 +5734,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 // DO STUFF COMMON FOR ALL TYPES if ( ubAttackerID != NOBODY ) { - MercPtrs[ubAttackerID]->aiData.bLastAttackHit = TRUE; + ubAttackerID->aiData.bLastAttackHit = TRUE; } // Set attacker's ID @@ -5732,9 +5747,9 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 // handle morale for heavy damage attacks if ( sDamage > 25 ) { - if ( this->ubAttackerID != NOBODY && MercPtrs[this->ubAttackerID]->bTeam == gbPlayerNum ) + if ( this->ubAttackerID != NOBODY && this->ubAttackerID->bTeam == gbPlayerNum ) { - HandleMoraleEvent( MercPtrs[this->ubAttackerID], MORALE_DID_LOTS_OF_DAMAGE, MercPtrs[this->ubAttackerID]->sSectorX, MercPtrs[this->ubAttackerID]->sSectorY, MercPtrs[this->ubAttackerID]->bSectorZ ); + HandleMoraleEvent( this->ubAttackerID, MORALE_DID_LOTS_OF_DAMAGE, this->ubAttackerID->sSectorX, this->ubAttackerID->sSectorY, this->ubAttackerID->bSectorZ ); this->ubLastMoraleFromHit++; } if ( this->bTeam == gbPlayerNum ) @@ -5759,8 +5774,8 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 } // Flugente: check the ammo else if ( ubAttackerID != NOBODY - && MercPtrs[ubAttackerID]->inv[HANDPOS].exists() - && AmmoTypes[*&( MercPtrs[ubAttackerID]->inv[HANDPOS] )[0]->data.gun.ubGunAmmoType].ammoflag & AMMO_TRAIL_FIRE ) + && ubAttackerID->inv[HANDPOS].exists() + && AmmoTypes[*&( ubAttackerID->inv[HANDPOS] )[0]->data.gun.ubGunAmmoType].ammoflag & AMMO_TRAIL_FIRE ) { ubReason = TAKE_DAMAGE_GAS_FIRE; @@ -5780,7 +5795,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 } // callahan update end - else if ( Item[usWeaponIndex].usItemClass & (IC_GUN | IC_THROWING_KNIFE) && AmmoTypes[MercPtrs[ubAttackerID]->inv[MercPtrs[ubAttackerID]->ubAttackingHand][0]->data.gun.ubGunAmmoType].explosionSize <= 1 ) + else if ( Item[usWeaponIndex].usItemClass & (IC_GUN | IC_THROWING_KNIFE) && AmmoTypes[ ubAttackerID->inv[ ubAttackerID->ubAttackingHand ][0]->data.gun.ubGunAmmoType ].explosionSize <= 1 ) { if ( ubSpecial == FIRE_WEAPON_SLEEP_DART_SPECIAL ) { @@ -5848,16 +5863,16 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 ubReason = TAKE_DAMAGE_BLADE; // Flugente: check wether we can make this blade bloody - if ( ubAttackerID != NOBODY && MercPtrs[ubAttackerID]->inv[HANDPOS].exists( ) ) + if ( ubAttackerID != NOBODY && ubAttackerID->inv[HANDPOS].exists( ) ) { - if ( Item[MercPtrs[ubAttackerID]->inv[HANDPOS].usItem].bloodieditem > 0 ) + if ( Item[ ubAttackerID->inv[HANDPOS].usItem ].bloodieditem > 0 ) { // magic happens - MercPtrs[ubAttackerID]->inv[HANDPOS].usItem = Item[MercPtrs[ubAttackerID]->inv[HANDPOS].usItem].bloodieditem; + ubAttackerID->inv[HANDPOS].usItem = Item[ ubAttackerID->inv[HANDPOS].usItem ].bloodieditem; } // Flugente: if the blade is infected, infect the victim - if ( *&(MercPtrs[ubAttackerID]->inv[HANDPOS])[0]->data.sObjectFlag & INFECTED && gGameExternalOptions.fDiseaseContaminatesItems ) + if ( *&(ubAttackerID->inv[HANDPOS])[0]->data.sObjectFlag & INFECTED && gGameExternalOptions.fDiseaseContaminatesItems ) { // infect us with the first disease this->Infect( 0 ); @@ -5865,7 +5880,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 // if this guy has the disease, infect the blade if ( this->sDiseasePoints[0] > 0 ) - *&(MercPtrs[ubAttackerID]->inv[HANDPOS])[0]->data.sObjectFlag |= INFECTED; + *&(ubAttackerID->inv[HANDPOS])[0]->data.sObjectFlag |= INFECTED; } } else if ( Item[usWeaponIndex].usItemClass & IC_PUNCH ) @@ -5877,7 +5892,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 { if ( ubAttackerID != NOBODY ) { - if ( !(MercPtrs[ubAttackerID]->inv[HANDPOS].exists( )) || ItemIsBrassKnuckles(MercPtrs[ubAttackerID]->inv[HANDPOS].usItem) ) + if ( !(ubAttackerID->inv[HANDPOS].exists( )) || ItemIsBrassKnuckles(ubAttackerID->inv[HANDPOS].usItem) ) { // with enhanced CCS, make the lost breath harder to regenerate, which makes CQC more usable if ( gGameExternalOptions.fEnhancedCloseCombatSystem ) @@ -5886,11 +5901,11 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 sBreathLoss = sDamage * (100 + gSkillTraitValues.bPercentModifierHtHBreathLoss); // 80% only for untrained mercs // martial arts bonus for breath damage - if ( HAS_SKILL_TRAIT( MercPtrs[ubAttackerID], MARTIAL_ARTS_NT ) ) + if ( HAS_SKILL_TRAIT( ubAttackerID, MARTIAL_ARTS_NT ) ) { - sBreathLoss += sDamage * gSkillTraitValues.ubMABonusBreathDamageHandToHand * NUM_SKILL_TRAITS( MercPtrs[ubAttackerID], MARTIAL_ARTS_NT ); + sBreathLoss += sDamage * gSkillTraitValues.ubMABonusBreathDamageHandToHand * NUM_SKILL_TRAITS( ubAttackerID, MARTIAL_ARTS_NT ); - sBreathRegainPenaltyMultiplier += (gSkillTraitValues.usMALostBreathRegainPenalty * NUM_SKILL_TRAITS( MercPtrs[ubAttackerID], MARTIAL_ARTS_NT )); + sBreathRegainPenaltyMultiplier += (gSkillTraitValues.usMALostBreathRegainPenalty * NUM_SKILL_TRAITS( ubAttackerID, MARTIAL_ARTS_NT )); } } else @@ -5947,7 +5962,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 if (ItemNeedsBatteries(usWeaponIndex)) { // check for batteries - OBJECTTYPE* pBatteries = FindAttachedBatteries( &(MercPtrs[ubAttackerID]->inv[HANDPOS]) ); + OBJECTTYPE* pBatteries = FindAttachedBatteries( &(ubAttackerID->inv[HANDPOS]) ); if ( pBatteries ) { sDamage = 0; @@ -5964,7 +5979,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 // destroy batteries pBatteries->RemoveObjectsFromStack( 1 ); if ( pBatteries->exists( ) == false ) { - MercPtrs[ubAttackerID]->inv[HANDPOS].RemoveAttachment( pBatteries ); + ubAttackerID->inv[HANDPOS].RemoveAttachment( pBatteries ); } } @@ -5975,8 +5990,8 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 } } // marke added one 'or' for explosive ammo. variation of: AmmoTypes[this->inv[this->ubAttackingHand ][0]->data.gun.ubGunAmmoType].explosionSize > 1 - // extracting attackers ammo type - else if ( Item[usWeaponIndex].usItemClass & IC_EXPLOSV || AmmoTypes[MercPtrs[ubAttackerID]->inv[MercPtrs[ubAttackerID]->ubAttackingHand][0]->data.gun.ubGunAmmoType].explosionSize > 1 ) + // extracting attacker�s ammo type + else if ( Item[usWeaponIndex].usItemClass & IC_EXPLOSV || AmmoTypes[ubAttackerID->inv[ubAttackerID->ubAttackingHand][0]->data.gun.ubGunAmmoType].explosionSize > 1 ) { INT8 bDeafValue; @@ -6144,7 +6159,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 // anv: soldier got rammed by vehicle if ( ubSpecial == FIRE_WEAPON_VEHICLE_TRAUMA ) { - SoldierGotHitVehicle( this, usWeaponIndex, sDamage, bDirection, sRange, ubAttackerID, ubSpecial, ubHitLocation ); + SoldierGotHitVehicle( this, bDirection ); return; } @@ -6371,7 +6386,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_GUNFIRE, ubAttackerID ); if (ubAttackerID != NOBODY) { - PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_GUNFIRE, this->ubID ); + PossiblyStartEnemyTaunt( ubAttackerID, TAUNT_HIT_GUNFIRE, this->ubID ); } } else @@ -6379,13 +6394,13 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_THROWING_KNIFE, ubAttackerID ); if (ubAttackerID != NOBODY) { - PossiblyStartEnemyTaunt(MercPtrs[ubAttackerID], TAUNT_HIT_THROWING_KNIFE, this->ubID); + PossiblyStartEnemyTaunt(ubAttackerID, TAUNT_HIT_THROWING_KNIFE, this->ubID); } } } if ( Item[usWeaponIndex].usItemClass & IC_BLADE ) { - SoldierGotHitBlade( this, usWeaponIndex, sDamage, bDirection, sRange, ubAttackerID, ubSpecial, ubHitLocation ); + SoldierGotHitBlade( this, ubHitLocation ); // anv: taunts are called from UseBlade() } // marke setting ammo explosions included here with 3rd 'or' including ubReason @@ -6395,12 +6410,12 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 if ( Item[usWeaponIndex].usItemClass & IC_EXPLOSV || ubReason == TAKE_DAMAGE_EXPLOSION ) { PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_EXPLOSION, ubAttackerID ); - //PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_EXPLOSION, this ); + //PossiblyStartEnemyTaunt( ubAttackerID, TAUNT_HIT_EXPLOSION, this ); } else if ( Item[usWeaponIndex].usItemClass & IC_TENTACLES ) { PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_TENTACLES, ubAttackerID ); - //PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_TENTACLES, this ); + //PossiblyStartEnemyTaunt( ubAttackerID, TAUNT_HIT_TENTACLES, this ); } } if ( Item[usWeaponIndex].usItemClass & IC_PUNCH ) @@ -6410,6 +6425,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 } } + UINT8 CalcScreamVolume( SOLDIERTYPE * pSoldier, UINT8 ubCombinedLoss ) { // NB explosions are so loud they should drown out screams @@ -6491,7 +6507,7 @@ void DoGenericHit( SOLDIERTYPE *pSoldier, UINT8 ubSpecial, INT16 bDirection ) } -void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) +void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) { INT32 usNewGridNo; BOOLEAN fBlownAway = FALSE; @@ -6516,7 +6532,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD if ( Item[usWeaponIndex].usItemClass == IC_GUN ) ubDistMessy *= gItemSettings.fDistMessyModifierGun[Weapon[usWeaponIndex].ubWeaponType]; - if ( SpacesAway( pSoldier->sGridNo, Menptr[ubAttackerID].sGridNo ) <= ubDistMessy ) + if ( SpacesAway( pSoldier->sGridNo, ubAttackerID->sGridNo ) <= ubDistMessy ) { usNewGridNo = NewGridNo( pSoldier->sGridNo, (INT8)(DirectionInc( pSoldier->ubDirection )) ); @@ -6545,7 +6561,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD if ( Item[usWeaponIndex].usItemClass == IC_GUN ) ubDistMessy *= gItemSettings.fDistMessyModifierGun[Weapon[usWeaponIndex].ubWeaponType]; - if ( SpacesAway( pSoldier->sGridNo, Menptr[ubAttackerID].sGridNo ) <= ubDistMessy ) + if ( SpacesAway( pSoldier->sGridNo, ubAttackerID->sGridNo ) <= ubDistMessy ) { // possibly play torso explosion anim! @@ -6618,7 +6634,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD // Flugente: dynamic opinions if (gGameExternalOptions.fDynamicOpinions && ubAttackerID != NOBODY ) - HandleDynamicOpinionChange( MercPtrs[ubAttackerID], OPINIONEVENT_BRUTAL_GOOD, TRUE, TRUE ); + HandleDynamicOpinionChange( ubAttackerID, OPINIONEVENT_BRUTAL_GOOD, TRUE, TRUE ); return; } @@ -6633,7 +6649,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD // Flugente: dynamic opinions if (gGameExternalOptions.fDynamicOpinions && ubAttackerID != NOBODY ) - HandleDynamicOpinionChange( MercPtrs[ubAttackerID], OPINIONEVENT_BRUTAL_GOOD, TRUE, TRUE ); + HandleDynamicOpinionChange( ubAttackerID, OPINIONEVENT_BRUTAL_GOOD, TRUE, TRUE ); return; } @@ -6642,7 +6658,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD DoGenericHit( pSoldier, ubSpecial, bDirection ); } -void SoldierGotHitExplosion( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) +void SoldierGotHitExplosion( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) { // Flugente: if hit in legs or torso, blood will be on our uniform - parts of the clothes cannot be worn anymore if ( ubHitLocation == AIM_SHOT_TORSO ) @@ -6812,11 +6828,10 @@ void SoldierGotHitExplosion( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 SoldierCollapse( pSoldier ); break; } - } -void SoldierGotHitBlade( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) +void SoldierGotHitBlade( SOLDIERTYPE *pSoldier, UINT8 ubHitLocation ) { // Flugente: if hit in legs or torso, blood will be on our uniform - parts of the clothes cannot be worn anymore if ( ubHitLocation == AIM_SHOT_TORSO ) @@ -6855,11 +6870,10 @@ void SoldierGotHitBlade( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDam pSoldier->EVENT_InitNewSoldierAnim( GENERIC_HIT_PRONE, 0, FALSE ); break; } - } -void SoldierGotHitPunch( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) +void SoldierGotHitPunch( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) { // IF HERE AND GUY IS DEAD, RETURN! @@ -6895,7 +6909,7 @@ void SoldierGotHitPunch( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDam } -void SoldierGotHitVehicle( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) +void SoldierGotHitVehicle(SOLDIERTYPE *pSoldier, UINT16 bDirection) { INT32 sNewGridNo = 0; // IF HERE AND GUY IS DEAD, RETURN! @@ -9105,7 +9119,10 @@ void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier ) if ( pSoldier->flags.fUseMoverrideMoveSpeed ) { - pStatsSoldier = MercPtrs[pSoldier->bOverrideMoveSpeed]; + if (pSoldier->bOverrideMoveSpeed < NOBODY) + { + pStatsSoldier = pSoldier->bOverrideMoveSpeed; + } } // Only calculate if set to zero @@ -9447,8 +9464,8 @@ void SOLDIERTYPE::BeginSoldierClimbUpRoof(void) return;//hayden disable climbing roof } - INT8 bNewDirection; - UINT8 ubWhoIsThere; + INT8 bNewDirection; + SoldierID ubWhoIsThere; if (FindHeigherLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel == 0)) { @@ -9621,8 +9638,8 @@ void SOLDIERTYPE::BeginSoldierClimbWindow( void ) void SOLDIERTYPE::BeginSoldierClimbWall( void ) { - INT8 bNewDirection; - UINT8 ubWhoIsThere; + INT8 bNewDirection; + SoldierID ubWhoIsThere; if ( FindWallJumpDirection( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel == 0) ) { @@ -9658,8 +9675,8 @@ void SOLDIERTYPE::BeginSoldierClimbWall( void ) void SOLDIERTYPE::BeginSoldierClimbWallUp( void ) { - INT8 bNewDirection; - UINT8 ubWhoIsThere; + INT8 bNewDirection; + SoldierID ubWhoIsThere; if ( FindLowerLevelWall( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel > 0) ) { @@ -9968,12 +9985,12 @@ void HandleTakeDamageDeath( SOLDIERTYPE *pSoldier, UINT8 bOldLife, UINT8 ubReaso } -UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathLoss, UINT8 ubReason, UINT8 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ) +UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathLoss, UINT8 ubReason, SoldierID ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ) { #ifdef JA2BETAVERSION if ( is_networked ) { CHAR tmpMPDbgString[512]; - sprintf( tmpMPDbgString, "SoldierTakeDamage ( bHeight : %i , sLifeDeduct : %i , sBreathLoss : %i , ubReason : %i , ubAttacker : %i , sSourceGrid : %i , sSubsequent : %i , fShowDamage : %i )\n", bHeight, sLifeDeduct, sBreathLoss, ubReason, ubAttacker, sSourceGrid, sSubsequent, fShowDamage ); + sprintf( tmpMPDbgString, "SoldierTakeDamage ( bHeight : %i , sLifeDeduct : %i , sBreathLoss : %i , ubReason : %i , ubAttacker : %i , sSourceGrid : %i , sSubsequent : %i , fShowDamage : %i )\n", bHeight, sLifeDeduct, sBreathLoss, ubReason, ubAttacker.i, sSourceGrid, sSubsequent, fShowDamage ); MPDebugMsg( tmpMPDbgString ); } #endif @@ -9988,24 +10005,24 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr this->ubLastDamageReason = ubReason; // Flugente: dynamic opinions - if (ubAttacker != NOBODY && MercPtrs[ubAttacker] ) + if (ubAttacker < NOBODY) { if (gGameExternalOptions.fDynamicOpinions) { - AddOpinionEvent(this->ubProfile, MercPtrs[ubAttacker]->ubProfile, OPINIONEVENT_FRIENDLYFIRE); + AddOpinionEvent(this->ubProfile, ubAttacker->ubProfile, OPINIONEVENT_FRIENDLYFIRE); // if this is a civilian, other mercs can complain about mercs shooting innocents // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians - if ((this->bTeam != OUR_TEAM) && (this->aiData.bNeutral || this->bSide == MercPtrs[ubAttacker]->bSide)) + if ((this->bTeam != OUR_TEAM) && (this->aiData.bNeutral || this->bSide == ubAttacker->bSide)) { // not for killing animals though... if (this->ubBodyType != CROW && this->ubBodyType != COW) - HandleDynamicOpinionChange(MercPtrs[ubAttacker], OPINIONEVENT_CIV_ATTACKER, TRUE, TRUE); + HandleDynamicOpinionChange(ubAttacker, OPINIONEVENT_CIV_ATTACKER, TRUE, TRUE); } } // if we are a turncoat, lose the flag if we were attacked by player forces - if ( (this->usSoldierFlagMask2 & SOLDIER_TURNCOAT) && MercPtrs[ubAttacker]->bSide == 0 ) + if ( (this->usSoldierFlagMask2 & SOLDIER_TURNCOAT) && ubAttacker->bSide == 0 ) { this->usSoldierFlagMask2 &= ~SOLDIER_TURNCOAT; @@ -10049,9 +10066,9 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr // if we have equipped a riot shield and are being attacked in melee, ignore damage from some directions if ( ubReason == TAKE_DAMAGE_BLADE || ubReason == TAKE_DAMAGE_HANDTOHAND || ubReason == TAKE_DAMAGE_TENTACLES ) { - if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] ) + if ( ubAttacker < NOBODY ) { - UINT8 attackdir_inverse = GetDirectionToGridNoFromGridNo( this->sGridNo, MercPtrs[ubAttacker]->sGridNo ); + UINT8 attackdir_inverse = GetDirectionToGridNoFromGridNo( this->sGridNo, ubAttacker->sGridNo ); // if the shield faces the direction of the attacker, we block the attack if ( attackdir_inverse == this->ubDirection || attackdir_inverse == gOneCCDirection[this->ubDirection] || attackdir_inverse == gOneCDirection[this->ubDirection] ) @@ -10107,8 +10124,8 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr HandleTakeDamageDeath( this, bOldLife, ubReason ); // add to our records. - if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] && MercPtrs[ubAttacker]->ubProfile != NO_PROFILE ) - gMercProfiles[MercPtrs[ubAttacker]->ubProfile].records.usDamageDealt += sLifeDeduct; + if ( ubAttacker < NOBODY && ubAttacker->ubProfile != NO_PROFILE ) + gMercProfiles[ubAttacker->ubProfile].records.usDamageDealt += sLifeDeduct; if ( this->ubProfile != NO_PROFILE ) gMercProfiles[this->ubProfile].records.usDamageTaken += sLifeDeduct; @@ -10174,7 +10191,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr } else { - sReductionFactor = 4 + PythSpacesAway( MercPtrs[ubAttacker]->sGridNo, this->sGridNo ) / 2; + sReductionFactor = 4 + PythSpacesAway( ubAttacker->sGridNo, this->sGridNo ) / 2; } break; } @@ -10280,8 +10297,8 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr } // add to our records. - if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] && MercPtrs[ubAttacker]->ubProfile != NO_PROFILE ) - gMercProfiles[MercPtrs[ubAttacker]->ubProfile].records.usDamageDealt += sLifeDeduct; + if ( ubAttacker < NOBODY && ubAttacker->ubProfile != NO_PROFILE ) + gMercProfiles[ubAttacker->ubProfile].records.usDamageDealt += sLifeDeduct; if ( this->ubProfile != NO_PROFILE ) gMercProfiles[this->ubProfile].records.usDamageTaken += sLifeDeduct; @@ -10304,8 +10321,8 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr // Flugente we might get a disease from this... if ( gGameExternalOptions.fDisease && sLifeDeduct > 0 ) { - if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] && CREATURE_OR_BLOODCAT( MercPtrs[ubAttacker] ) ) - HandlePossibleInfection( this, MercPtrs[ubAttacker], INFECTION_TYPE_WOUND_ANIMAL ); + if ( ubAttacker < NOBODY && CREATURE_OR_BLOODCAT( ubAttacker ) ) + HandlePossibleInfection( this, ubAttacker, INFECTION_TYPE_WOUND_ANIMAL ); if ( ubReason == TAKE_DAMAGE_TENTACLES ) HandlePossibleInfection( this, NULL, INFECTION_TYPE_WOUND_ANIMAL ); @@ -10475,7 +10492,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr sTestOne = EffectiveStrength( this, FALSE ); sTestTwo = 2 * max(sLifeDeduct, (sBreathLoss / 100)); - if (this->ubAttackerID != NOBODY && MercPtrs[this->ubAttackerID]->ubBodyType == BLOODCAT) + if (this->ubAttackerID != NOBODY && this->ubAttackerID->ubBodyType == BLOODCAT) { // bloodcat boost, let them make people drop items more sTestTwo += 20; @@ -10577,12 +10594,12 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr if ( ubAttacker != NOBODY ) { // don't give exp for hitting friends! - if ( (MercPtrs[ubAttacker]->bTeam == gbPlayerNum) && (this->bTeam != gbPlayerNum) ) + if ( (ubAttacker->bTeam == gbPlayerNum) && (this->bTeam != gbPlayerNum) ) { if ( ubReason == TAKE_DAMAGE_EXPLOSION ) { // EXPLOSIVES GAIN (combLoss): Causing wounds in battle - StatChange( MercPtrs[ubAttacker], EXPLODEAMT, (UINT16)(10 * ubCombinedLoss), FROM_FAILURE ); + StatChange( ubAttacker, EXPLODEAMT, (UINT16)(10 * ubCombinedLoss), FROM_FAILURE ); } /* else if ( ubReason == TAKE_DAMAGE_GUNFIRE ) @@ -10630,7 +10647,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr } } - if ( (ubAttacker != NOBODY) && (Menptr[ubAttacker].bTeam == OUR_TEAM) && (this->ubProfile != NO_PROFILE) && gMercProfiles[this->ubProfile].Type == PROFILETYPE_RPC || + if ( (ubAttacker != NOBODY) && (ubAttacker->bTeam == OUR_TEAM) && (this->ubProfile != NO_PROFILE) && gMercProfiles[this->ubProfile].Type == PROFILETYPE_RPC || gMercProfiles[this->ubProfile].Type == PROFILETYPE_NPC ) { gMercProfiles[this->ubProfile].ubMiscFlags |= PROFILE_MISC_FLAG_WOUNDEDBYPLAYER; @@ -10655,13 +10672,13 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr #ifdef JA2UB //if the attacker is MORRIS, AND he didnt kill the person - if ( Menptr[ubAttacker].ubProfile == MORRIS_UB ) //MORRIS + if ( ubAttacker->ubProfile == MORRIS_UB ) //MORRIS { //if the soldier is hurt, but not dead if ( this->stats.bLife < bOldLife && this->stats.bLife > 0 ) { //if he hasnt said his quote #1 before - if ( !(Menptr[ubAttacker].usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU) ) + if ( !(ubAttacker->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU) ) { //said a flag so morris can say this quote next turn gJa25SaveStruct.fMorrisToSayHurtPlayerQuoteNextTurn = TRUE; @@ -10675,7 +10692,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr else if ( gJa25SaveStruct.fMorrisToSayHurtPlayerQuoteNextTurn && gJa25SaveStruct.ubPlayerMorrisHurt == this->ubProfile && this->stats.bLife <= 0 && - !(Menptr[ubAttacker].usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU) ) + !(ubAttacker->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU) ) { //said a flag so morris can say this quote next turn gJa25SaveStruct.fMorrisToSayHurtPlayerQuoteNextTurn = FALSE; @@ -10705,7 +10722,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr return(ubCombinedLoss); } -void SOLDIERTYPE::SoldierTakeDelayedDamage(INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathLoss, UINT8 ubReason, UINT8 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage) +void SOLDIERTYPE::SoldierTakeDelayedDamage(INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathLoss, UINT8 ubReason, SoldierID ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage) { delayedDamageFunction = [this, bHeight, sLifeDeduct, sBreathLoss, ubReason, ubAttacker, sSourceGrid, sSubsequent, fShowDamage]() { @@ -11307,8 +11324,8 @@ BOOLEAN SOLDIERTYPE::CheckSoldierHitRoof( void ) void SOLDIERTYPE::BeginSoldierClimbDownRoof(void) { - INT8 bNewDirection; - UINT8 ubWhoIsThere; + INT8 bNewDirection; + SoldierID ubWhoIsThere; if (FindLowerLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel > 0)) { @@ -11529,7 +11546,7 @@ void SOLDIERTYPE::MoveMerc( FLOAT dMovementChange, FLOAT dAngle, BOOLEAN fCheckR if ( this->usDragPersonID != NOBODY ) { - SOLDIERTYPE* pSoldier = MercPtrs[this->usDragPersonID]; + SOLDIERTYPE* pSoldier = this->usDragPersonID; if ( pSoldier ) { @@ -12242,16 +12259,13 @@ BOOLEAN SOLDIERTYPE::MercInHighWater( void ) void RevivePlayerTeam( ) { - INT32 cnt; - SOLDIERTYPE *pSoldier; - // End the turn of player charactors - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++ ) + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { - pSoldier->ReviveSoldier( ); + id->ReviveSoldier( ); } } @@ -12467,7 +12481,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirectio { SOLDIERTYPE *pTSoldier; //UINT32 uiMercFlags; - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; UINT8 ubTDirection; ROTTING_CORPSE *pCorpse; @@ -12505,9 +12519,9 @@ void SOLDIERTYPE::EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirectio if ( this->flags.uiStatusFlags & SOLDIER_MONSTER ) { // Is there an unconscious guy at gridno...... - UINT8 ubTargetID = WhoIsThere2( sGridNo, this->bTargetLevel ); + SoldierID ubTargetID = WhoIsThere2( sGridNo, this->bTargetLevel ); - if ( ubTargetID != NOBODY && ((MercPtrs[ubTargetID]->stats.bLife < OKLIFE && MercPtrs[ubTargetID]->stats.bLife > 0) || (MercPtrs[ubTargetID]->bBreath < OKBREATH && MercPtrs[ubTargetID]->bCollapsed)) ) + if ( ubTargetID != NOBODY && ((ubTargetID->stats.bLife < OKLIFE && ubTargetID->stats.bLife > 0) || (ubTargetID->bBreath < OKBREATH && ubTargetID->bCollapsed)) ) { this->aiData.uiPendingActionData4 = ubTargetID; @@ -12690,7 +12704,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginPunchAttack( INT32 sGridNo, UINT8 ubDirectio BOOLEAN fMartialArtist = FALSE; SOLDIERTYPE *pTSoldier; //UINT32 uiMercFlags; - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; UINT8 ubTDirection; UINT16 usItem; @@ -13138,13 +13152,12 @@ void SOLDIERTYPE::EVENT_SoldierBeginFirstAid( INT32 sGridNo, UINT8 ubDirection ) { SOLDIERTYPE *pTSoldier; //UINT32 uiMercFlags; - UINT16 usSoldierIndex; BOOLEAN fRefused = FALSE; - usSoldierIndex = WhoIsThere2( sGridNo, this->pathing.bLevel ); + SoldierID usSoldierIndex = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { - pTSoldier = MercPtrs[usSoldierIndex]; + pTSoldier = usSoldierIndex; //SANDRO - hack! Find out if we are a doctor with medical bag trying to make a surgery this->fDoingSurgery = FALSE; @@ -13243,7 +13256,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginFirstAid( INT32 sGridNo, UINT8 ubDirection ) this->sTargetGridNo = sGridNo; // SET PARTNER ID - this->ubServicePartner = (UINT8)usSoldierIndex; + this->ubServicePartner = usSoldierIndex; // SET PARTNER'S COUNT REFERENCE pTSoldier->ubServiceCount++; @@ -13269,11 +13282,11 @@ void SOLDIERTYPE::EVENT_SoldierEnterVehicle( INT32 sGridNo, UINT8 ubDirection, U { SOLDIERTYPE *pTSoldier; UINT32 uiMercFlags; - UINT16 usSoldierIndex; + SoldierID usSoldierIndex; if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) { - pTSoldier = MercPtrs[usSoldierIndex]; + pTSoldier = usSoldierIndex; // Enter vehicle... EnterVehicle( pTSoldier, this, ubSeatIndex ); @@ -13788,7 +13801,7 @@ void SOLDIERTYPE::InternalGivingSoldierCancelServices( BOOLEAN fPlayEndAnim ) // GET TARGET SOLDIER if ( this->ubServicePartner != NOBODY ) { - pTSoldier = MercPtrs[this->ubServicePartner]; + pTSoldier = this->ubServicePartner; // END SERVICE! pTSoldier->ubServiceCount--; @@ -14771,12 +14784,12 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) if ( !IsLocationSittable( nextGridNoinSight, 0 ) ) { // resting our gun on people is allowed sometimes - UINT usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + SoldierID usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); if ( usPersonID == NOBODY ) applybipod = TRUE; else { - SOLDIERTYPE* pSoldier = MercPtrs[usPersonID]; + SOLDIERTYPE* pSoldier = usPersonID; // anv: vehicles don't mind if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) @@ -14795,7 +14808,7 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) // Flugente: dynamic opinions if (gGameExternalOptions.fDynamicOpinions) { - AddOpinionEvent(MercPtrs[usPersonID]->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS); + AddOpinionEvent(pSoldier->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS); } } } @@ -14845,12 +14858,12 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) if ( !IsLocationSittable( nextGridNoinSight, 0 ) ) { // resting our gun on people is allowed sometimes - UINT usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + SoldierID usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); if ( usPersonID == NOBODY ) applybipod = TRUE; else { - SOLDIERTYPE* pSoldier = MercPtrs[usPersonID]; + SOLDIERTYPE* pSoldier = usPersonID; // anv: vehicles don't mind if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) @@ -14865,7 +14878,7 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) // Flugente: dynamic opinions if (gGameExternalOptions.fDynamicOpinions) { - AddOpinionEvent(MercPtrs[usPersonID]->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS); + AddOpinionEvent(pSoldier->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS); } } } @@ -15147,7 +15160,7 @@ void SOLDIERTYPE::InventoryExplosion( void ) } // Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)? -BOOLEAN SOLDIERTYPE::IsFeedingExternal( UINT8* pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT8* pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2 ) +BOOLEAN SOLDIERTYPE::IsFeedingExternal( SoldierID * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, SoldierID * pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2 ) { // make sure we have to check this... if ( gGameExternalOptions.ubExternalFeeding == 0 ) @@ -15204,10 +15217,11 @@ BOOLEAN SOLDIERTYPE::IsFeedingExternal( UINT8* pubId1, UINT16* pGunSlot1, UINT1 INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) ); SOLDIERTYPE* pTeamSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[this->bTeam].bFirstID; - INT32 lastid = gTacticalStatus.Team[this->bTeam].bLastID; - for ( pTeamSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pTeamSoldier ) + SoldierID cnt = gTacticalStatus.Team[this->bTeam].bFirstID; + SoldierID lastid = gTacticalStatus.Team[this->bTeam].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pTeamSoldier = cnt; // check if teamsoldier exists in this sector if ( !pTeamSoldier || !pTeamSoldier->bActive || !pTeamSoldier->bInSector || pTeamSoldier->sSectorX != this->sSectorX || pTeamSoldier->sSectorY != this->sSectorY || pTeamSoldier->bSectorZ != this->bSectorZ ) continue; @@ -15326,7 +15340,7 @@ BOOLEAN SOLDIERTYPE::IsFeedingExternal( UINT8* pubId1, UINT16* pGunSlot1, UINT1 UINT16 lastslotforammo = MEDPOCK3POS; // for robots and AI-controlled soldiers (who don't have any LBE gear), we put a change in here so that ALL their slots are checked for ammo - if ( this->bTeam != gbPlayerNum || MercPtrs[this->ubID]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( this->bTeam != gbPlayerNum || this->ubID->flags.uiStatusFlags & SOLDIER_ROBOT ) { firstslotforammo = HANDPOS; lastslotforammo = NUM_INV_SLOTS; @@ -15833,9 +15847,9 @@ BOOLEAN SOLDIERTYPE::EquipmentTooGood( BOOLEAN fCloselook ) // are we in covert mode? we need to have the correct flag set, and not wear anything suspicious, or behave in a suspicious way -BOOLEAN SOLDIERTYPE::SeemsLegit( UINT8 ubObserverID ) +BOOLEAN SOLDIERTYPE::SeemsLegit( SoldierID ubObserverID ) { - SOLDIERTYPE* pSoldier = MercPtrs[ubObserverID]; + SOLDIERTYPE* pSoldier = ubObserverID; if ( !pSoldier ) return TRUE; @@ -16044,12 +16058,12 @@ BOOLEAN SOLDIERTYPE::SeemsLegit( UINT8 ubObserverID ) if ( this->sSectorX == gWorldSectorX && this->sSectorY == gWorldSectorY && this->bSectorZ == gbWorldSectorZ ) { // are we targeting a buddy of our observer? - if ( this->ubTargetID != NOBODY && MercPtrs[this->ubTargetID] && MercPtrs[this->ubTargetID]->bTeam == pSoldier->bTeam ) + if ( this->ubTargetID < NOBODY && this->ubTargetID->bTeam == pSoldier->bTeam ) { // if we are aiming at a soldier, others will notice our intent... not covert! if ( WeaponReady( this ) ) { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_TARGETTING_SOLDIER], this->GetName(), MercPtrs[this->ubTargetID]->GetName() ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_TARGETTING_SOLDIER], this->GetName(), this->ubTargetID->GetName() ); return FALSE; } } @@ -16121,7 +16135,7 @@ BOOLEAN SOLDIERTYPE::SeemsLegit( UINT8 ubObserverID ) } // do we recognize someone else as a combatant? -BOOLEAN SOLDIERTYPE::RecognizeAsCombatant( UINT8 ubTargetID ) +BOOLEAN SOLDIERTYPE::RecognizeAsCombatant( SoldierID ubTargetID ) { // this will only work with the new trait system if ( !gGameOptions.fNewTraitSystem ) @@ -16130,7 +16144,7 @@ BOOLEAN SOLDIERTYPE::RecognizeAsCombatant( UINT8 ubTargetID ) if ( ubTargetID == NOBODY ) return TRUE; - SOLDIERTYPE* pSoldier = MercPtrs[ubTargetID]; + SOLDIERTYPE* pSoldier = ubTargetID; if ( !pSoldier ) return TRUE; @@ -16217,9 +16231,10 @@ void SOLDIERTYPE::LooseDisguise( void ) // rehandle sight for everybody SOLDIERTYPE* pSoldier; - UINT8 iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID; - for ( pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop, ++pSoldier ) + SoldierID iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop ) { + pSoldier = iLoop; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) { RecalculateOppCntsDueToNoLongerNeutral( pSoldier ); @@ -16460,12 +16475,12 @@ BOOLEAN SOLDIERTYPE::FreePrisoner( ) // we can only free people we are facing INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) ); - UINT8 target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + SoldierID target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); // is there somebody? if ( target != NOBODY ) { - SOLDIERTYPE* pSoldier = MercPtrs[target]; + SOLDIERTYPE* pSoldier = target; // if he is captured, free him! // note that this would also work for prisoner civs that we spawn in our prisons. All needed would be commanding the AI to get there @@ -18856,16 +18871,18 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN // as of 2013-09-25, I say it is no longer necessary to fire a signal shell first. The player can fire a signal shell (by mortar or hand) manually to mark one or more targets if he wants // if he does not do so, active vox operators will be targetted. Who knows, the vox operator might be doing a heroic last stand for all we know... + //BOOLEAN signalshellfired = FALSE; const UINT8 maxFiringMortarsAmount = 5; - UINT8 radiooperatorID = 0; + SoldierID radiooperatorID = NOBODY; UINT8 mortaritemcnt = 0; UINT16 mortararray[maxFiringMortarsAmount] = { 0 }; SOLDIERTYPE* pSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID; - INT32 lastid = gTacticalStatus.Team[bTeam].bLastID; - for ( pSoldier = MercPtrs[cnt]; (cnt < lastid) && (mortaritemcnt < maxFiringMortarsAmount); ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID; + SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID; + for ( ; (cnt < lastid) && (mortaritemcnt < maxFiringMortarsAmount); ++cnt ) { + pSoldier = cnt; // check if soldier exists in this sector if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY ) continue; @@ -18906,8 +18923,9 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN // second loop: check for all mortar shells and 'fire' them cnt = gTacticalStatus.Team[bTeam].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + for ( ; cnt < lastid; ++cnt ) { + pSoldier = cnt; // check if soldier exists in this sector if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY ) continue; @@ -19005,7 +19023,7 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN if ( radiooperatorID ) { - pSoldier = MercPtrs[radiooperatorID]; + pSoldier = radiooperatorID; // also drain the other guy's radio batteries pSoldier->UseRadio( ); @@ -19334,12 +19352,12 @@ BOOLEAN SOLDIERTYPE::AIDoctorFriend( ) // we can only free people we are facing INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) ); - UINT8 target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + SoldierID target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); // is there somebody? if ( target != NOBODY ) { - SOLDIERTYPE* pSoldier = MercPtrs[target]; + SOLDIERTYPE* pSoldier = target; if ( pSoldier->bTeam != ENEMY_TEAM ) return FALSE; @@ -20514,13 +20532,13 @@ BOOLEAN SOLDIERTYPE::CanDragInPrinciple(BOOLEAN fCheckStance) return TRUE; } -BOOLEAN SOLDIERTYPE::CanDragPerson(UINT16 usID, BOOLEAN fCheckStance) +BOOLEAN SOLDIERTYPE::CanDragPerson(SoldierID usID, BOOLEAN fCheckStance) { if (!CanDragInPrinciple(fCheckStance)) return FALSE; // check whether this guy exists etc. - SOLDIERTYPE* pSoldier = MercPtrs[usID]; + SOLDIERTYPE* pSoldier = usID; if ( pSoldier && pSoldier->bActive && pSoldier->bInSector ) { @@ -20801,7 +20819,7 @@ BOOLEAN SOLDIERTYPE::IsDragging( bool aStopIfConditionNotSatisfied ) return FALSE; } -void SOLDIERTYPE::SetDragOrderPerson( UINT16 usID ) +void SOLDIERTYPE::SetDragOrderPerson( SoldierID usID ) { if ( CanDragPerson( usID ) ) { @@ -20822,16 +20840,16 @@ void SOLDIERTYPE::SetDragOrderPerson( UINT16 usID ) } } -void SOLDIERTYPE::SetDragOrderCorpse( UINT32 usID ) +void SOLDIERTYPE::SetDragOrderCorpse( UINT32 uiCorpseID ) { - if ( CanDragCorpse( usID ) ) + if ( CanDragCorpse( uiCorpseID ) ) { // sevenfm: if someone is dragging this corpse, cancel drag SOLDIERTYPE *pSoldier; for (UINT32 uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) { pSoldier = MercPtrs[uiLoop]; - if (pSoldier && pSoldier->sDragCorpseID == usID) + if (pSoldier && pSoldier->sDragCorpseID == uiCorpseID) { pSoldier->CancelDrag(); } @@ -20839,7 +20857,7 @@ void SOLDIERTYPE::SetDragOrderCorpse( UINT32 usID ) CancelDrag(); - this->sDragCorpseID = usID; + this->sDragCorpseID = uiCorpseID; } } @@ -20875,7 +20893,7 @@ void SOLDIERTYPE::CancelDrag() // if we are dragging a person, set them to the center of their gridno, otherwise their position might be off if (this->usDragPersonID != NOBODY) { - SOLDIERTYPE* pSoldier = MercPtrs[this->usDragPersonID]; + SOLDIERTYPE* pSoldier = this->usDragPersonID; if ( pSoldier && !TileIsOutOfBounds(pSoldier->sGridNo) ) { @@ -21009,9 +21027,9 @@ void SOLDIERTYPE::StopChatting() { if ( this->usChatPartnerID != NOBODY ) { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[DISTRACT_STOP_STR], this->GetName(), MercPtrs[this->usChatPartnerID]->GetName() ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[DISTRACT_STOP_STR], this->GetName(), this->usChatPartnerID->GetName() ); - MercPtrs[this->usChatPartnerID]->usChatPartnerID = NOBODY; + this->usChatPartnerID->usChatPartnerID = NOBODY; this->usChatPartnerID = NOBODY; } } @@ -21369,7 +21387,7 @@ UINT8 SOLDIERTYPE::GetThiefEvadeDetectionChance() return totalvalue; } -BOOLEAN SOLDIERTYPE::InPositionForTurncoatAttempt( UINT16 usID ) +BOOLEAN SOLDIERTYPE::InPositionForTurncoatAttempt( SoldierID usID ) { if ( !gSkillTraitValues.fCOTurncoats || gbWorldSectorZ @@ -21384,7 +21402,7 @@ BOOLEAN SOLDIERTYPE::InPositionForTurncoatAttempt( UINT16 usID ) || usID == NOBODY ) return FALSE; - SOLDIERTYPE* pSoldier = MercPtrs[usID]; + SOLDIERTYPE* pSoldier = usID; if ( !pSoldier || pSoldier->bTeam != ENEMY_TEAM @@ -21411,12 +21429,12 @@ BOOLEAN SOLDIERTYPE::InPositionForTurncoatAttempt( UINT16 usID ) return FALSE; } -UINT8 SOLDIERTYPE::GetTurncoatConvinctionChance( UINT16 usID, INT16 sApproach ) +UINT8 SOLDIERTYPE::GetTurncoatConvinctionChance( SoldierID usID, INT16 sApproach ) { if ( usID >= NOBODY ) return 0; - SOLDIERTYPE* pSoldier = MercPtrs[usID]; + SOLDIERTYPE* pSoldier = usID; if ( !pSoldier || pSoldier->bTeam != ENEMY_TEAM ) @@ -21540,12 +21558,12 @@ UINT8 SOLDIERTYPE::GetTurncoatConvinctionChance( UINT16 usID, INT16 sApproach ) return max( 0, min( 100, recruitrating - enemyresistancerating ) ); } -void SOLDIERTYPE::AttemptToCreateTurncoat( UINT16 usID ) +void SOLDIERTYPE::AttemptToCreateTurncoat( SoldierID usID ) { if ( usID >= NOBODY ) return; - SOLDIERTYPE* pSoldier = MercPtrs[usID]; + SOLDIERTYPE* pSoldier = usID; if ( !pSoldier || pSoldier->bTeam != ENEMY_TEAM @@ -21555,12 +21573,12 @@ void SOLDIERTYPE::AttemptToCreateTurncoat( UINT16 usID ) HandleTurncoatAttempt( pSoldier ); } -BOOLEAN SOLDIERTYPE::OrderTurnCoatToSwitchSides( UINT16 usID ) +BOOLEAN SOLDIERTYPE::OrderTurnCoatToSwitchSides( SoldierID usID ) { if ( usID >= NOBODY ) return FALSE; - SOLDIERTYPE* pSoldier = MercPtrs[usID]; + SOLDIERTYPE* pSoldier = usID; if (!pSoldier || pSoldier->bTeam != ENEMY_TEAM @@ -21584,15 +21602,16 @@ BOOLEAN SOLDIERTYPE::OrderTurnCoatToSwitchSides( UINT16 usID ) void SOLDIERTYPE::OrderAllTurnCoatToSwitchSides() { SOLDIERTYPE *pSoldier; - INT32 cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ENEMY_TEAM].bFirstID; // rftr: force the player to enter turn-based combat. this function already includes a check to see if we're already in combat, so no harm calling this. // this also prevents a hang when activating a sector with 100% turncoats EnterCombatMode(OUR_TEAM); // run through list - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; ++cnt, ++pSoldier ) + for ( ; cnt <= gTacticalStatus.Team[ENEMY_TEAM].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->usSoldierFlagMask2 & SOLDIER_TURNCOAT ) @@ -22323,7 +22342,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginCutFence( INT32 sGridNo, UINT8 ubDirection ) void SOLDIERTYPE::EVENT_SoldierBeginRepair( INT32 sGridNo, UINT8 ubDirection ) { INT8 bRepairItem; - UINT8 ubID; + UINT16 ubID; // Make sure we have a structure here.... bRepairItem = IsRepairableStructAtGridNo( sGridNo, &ubID ); @@ -22368,7 +22387,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginRepair( INT32 sGridNo, UINT8 ubDirection ) void SOLDIERTYPE::EVENT_SoldierBeginRefuel( INT32 sGridNo, UINT8 ubDirection ) { INT8 bRefuelItem; - UINT8 ubID; + UINT16 ubID; // Make sure we have a structure here.... bRefuelItem = IsRefuelableStructAtGridNo( sGridNo, &ubID ); @@ -22474,7 +22493,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginAttachCan( INT32 sGridNo, UINT8 ubDirection } -extern UINT8 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); +extern UINT16 NumEnemiesInAnySector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ); void SOLDIERTYPE::EVENT_SoldierBuildStructure( INT32 sGridNo, UINT8 ubDirection ) { @@ -22542,12 +22561,12 @@ void SOLDIERTYPE::EVENT_SoldierHandcuffPerson( INT32 sGridNo, UINT8 ubDirection if ( !gGameExternalOptions.fAllowPrisonerSystem ) return; - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + SoldierID ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); - if ( ubPerson != NOBODY && MercPtrs[ubPerson]->CanBeCaptured( ) ) + if ( ubPerson != NOBODY && ubPerson->CanBeCaptured( ) ) { // we found someone we can handcuff - SOLDIERTYPE* pSoldier = MercPtrs[ubPerson]; + SOLDIERTYPE* pSoldier = ubPerson; // check wether we will be successful BOOLEAN success = FALSE; @@ -22685,12 +22704,12 @@ void SOLDIERTYPE::EVENT_SoldierHandcuffPerson( INT32 sGridNo, UINT8 ubDirection void SOLDIERTYPE::EVENT_SoldierApplyItemToPerson( INT32 sGridNo, UINT8 ubDirection ) { - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + SoldierID ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY ) { // we found someone - SOLDIERTYPE* pSoldier = MercPtrs[ubPerson]; + SOLDIERTYPE* pSoldier = ubPerson; OBJECTTYPE* pObj = &(this->inv[HANDPOS]); @@ -22821,12 +22840,12 @@ void SOLDIERTYPE::EVENT_SoldierApplyItemToPerson( INT32 sGridNo, UINT8 ubDirecti void SOLDIERTYPE::EVENT_SoldierTakeBloodFromPerson( INT32 sGridNo, UINT8 ubDirection ) { - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + SoldierID ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY && ubPerson != this->ubID ) { // we found someone - SOLDIERTYPE* pSoldier = MercPtrs[ubPerson]; + SOLDIERTYPE* pSoldier = ubPerson; OBJECTTYPE* pObj = &( this->inv[HANDPOS] ); @@ -22892,12 +22911,12 @@ void SOLDIERTYPE::EVENT_SoldierTakeBloodFromPerson( INT32 sGridNo, UINT8 ubDirec void SOLDIERTYPE::EVENT_SoldierApplySplintToPerson( INT32 sGridNo, UINT8 ubDirection ) { - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + SoldierID ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY && ubPerson != this->ubID ) { // we found someone - SOLDIERTYPE* pSoldier = MercPtrs[ubPerson]; + SOLDIERTYPE* pSoldier = ubPerson; OBJECTTYPE* pObj = &( this->inv[HANDPOS] ); @@ -22961,12 +22980,10 @@ void SOLDIERTYPE::EVENT_SoldierInteractiveAction( INT32 sGridNo, UINT16 usAction void SOLDIERTYPE::EVENT_SoldierBeginReloadRobot( INT32 sGridNo, UINT8 ubDirection, UINT8 ubMercSlot ) { - UINT8 ubPerson; - // Make sure we have a robot here.... - ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + SoldierID ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); - if ( ubPerson != NOBODY && MercPtrs[ubPerson]->flags.uiStatusFlags & SOLDIER_ROBOT ) + if ( ubPerson != NOBODY && ubPerson->flags.uiStatusFlags & SOLDIER_ROBOT ) { // CHANGE DIRECTION AND GOTO ANIMATION NOW if (this->ubDirection != ubDirection) @@ -23192,25 +23209,25 @@ void AbandonBoxingDueToSurrenderCallback(UINT8 ubExitValue) } SOLDIERTYPE *pTMilitiaSoldier;//global pointer -BOOLEAN SOLDIERTYPE::PlayerSoldierStartTalking( UINT8 ubTargetID, BOOLEAN fValidate ) +BOOLEAN SOLDIERTYPE::PlayerSoldierStartTalking( SoldierID ubTargetID, BOOLEAN fValidate ) { - INT16 sFacingDir, sXPos, sYPos, sAPCost; - SOLDIERTYPE *pTSoldier; - UINT32 uiRange; + INT16 sFacingDir, sXPos, sYPos, sAPCost; + SOLDIERTYPE *pTSoldier; + UINT32 uiRange; if ( ubTargetID == NOBODY ) { return(FALSE); } - pTSoldier = MercPtrs[ubTargetID]; + pTSoldier = ubTargetID; // Check distance again, to be sure if ( fValidate ) { // OK, since we locked this guy from moving // we should be close enough, so talk ( unless he is now dead ) - if ( !IsValidTalkableNPC( (UINT8)ubTargetID, FALSE, FALSE, FALSE ) ) + if ( !IsValidTalkableNPC( ubTargetID, FALSE, FALSE, FALSE ) ) { return(FALSE); } @@ -23389,7 +23406,7 @@ BOOLEAN SOLDIERTYPE::IsValidSecondHandBurst( void ) { if ( this->bDoAutofire ) { - // if second gun cannot use atuofire mode + // if second gun cannot use autofire mode if ( !IsGunAutofireCapable( &this->inv[SECONDHANDPOS] ) ) { return(FALSE); @@ -23548,8 +23565,6 @@ BOOLEAN SOLDIERTYPE::IsValidPistolFastShot( INT16 bAimTime, INT32 iTrgGridNo ) } BOOLEAN SOLDIERTYPE::CanRobotBeControlled( void ) { - SOLDIERTYPE *pController; - if ( !(this->flags.uiStatusFlags & SOLDIER_ROBOT) ) { return(FALSE); @@ -23560,7 +23575,7 @@ BOOLEAN SOLDIERTYPE::CanRobotBeControlled( void ) return(FALSE); } - pController = MercPtrs[this->ubRobotRemoteHolderID]; + SOLDIERTYPE* pController = this->ubRobotRemoteHolderID; if ( pController->bActive ) { @@ -23664,7 +23679,7 @@ SOLDIERTYPE *SOLDIERTYPE::GetRobotController( void ) } else { - return(MercPtrs[this->ubRobotRemoteHolderID]); + return(this->ubRobotRemoteHolderID); } } @@ -23673,16 +23688,15 @@ void SOLDIERTYPE::UpdateRobotControllerGivenRobot( void ) //the original function passed in pRobot, not pSoldier SOLDIERTYPE *pRobot = this; SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - // Loop through guys and look for a controller! // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - // run through list - for ( pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pTeamSoldier++ ) + // Loop through guys and look for a controller! + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive ) { if ( pTeamSoldier->ControllingRobot( ) ) @@ -23700,7 +23714,6 @@ void SOLDIERTYPE::UpdateRobotControllerGivenRobot( void ) void SOLDIERTYPE::UpdateRobotControllerGivenController( void ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; // First see if are still controlling the robot if ( !this->ControllingRobot( ) ) @@ -23709,11 +23722,12 @@ void SOLDIERTYPE::UpdateRobotControllerGivenController( void ) } // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; // Loop through guys to find the robot.... - for ( pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && (pTeamSoldier->flags.uiStatusFlags & SOLDIER_ROBOT) ) { pTeamSoldier->ubRobotRemoteHolderID = this->ubID; @@ -23909,11 +23923,11 @@ void PlayStealthySoldierFootstepSound( SOLDIERTYPE *pSoldier ) void CrowsFlyAway( UINT8 ubTeam ) { - UINT32 cnt; SOLDIERTYPE *pTeamSoldier; - for ( cnt = gTacticalStatus.Team[ubTeam].bFirstID, pTeamSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ubTeam].bLastID; cnt++, pTeamSoldier++ ) + for ( SoldierID cnt = gTacticalStatus.Team[ubTeam].bFirstID; cnt <= gTacticalStatus.Team[ubTeam].bLastID; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { if ( pTeamSoldier->ubBodyType == CROW && pTeamSoldier->usAnimState != CROW_FLY ) @@ -23929,7 +23943,6 @@ void CrowsFlyAway( UINT8 ubTeam ) #ifdef JA2BETAVERSION void DebugValidateSoldierData( ) { - UINT32 cnt; SOLDIERTYPE *pSoldier; CHAR16 sString[1024]; BOOLEAN fProblemDetected = FALSE; @@ -23946,9 +23959,10 @@ void DebugValidateSoldierData( ) uiFrameCount = 0; // Loop through our team... - cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { // OK, first check for alive people @@ -23963,13 +23977,13 @@ void DebugValidateSoldierData( ) !(pSoldier->flags.uiStatusFlags & (SOLDIER_DRIVER | SOLDIER_PASSENGER)) ) { // This is bad! - swprintf( sString, L"Soldier Data Error: Soldier %d is alive but has a zero group ID.", cnt ); + swprintf( sString, L"Soldier Data Error: Soldier %d is alive but has a zero group ID.", cnt.i ); fProblemDetected = TRUE; } else if ( (pSoldier->ubGroupID != 0) && (GetGroup( pSoldier->ubGroupID ) == NULL) ) { // This is bad! - swprintf( sString, L"Soldier Data Error: Soldier %d has an invalid group ID of %d.", cnt, pSoldier->ubGroupID ); + swprintf( sString, L"Soldier Data Error: Soldier %d has an invalid group ID of %d.", cnt.i, pSoldier->ubGroupID ); fProblemDetected = TRUE; } } @@ -23989,7 +24003,7 @@ void DebugValidateSoldierData( ) (pSoldier->sSectorY <= 0) || (pSoldier->sSectorY >= 17) || (pSoldier->bSectorZ < 0) || (pSoldier->bSectorZ > (SPY_LOCATION( pSoldier->bAssignment ) ? 13 : 3) ) ) ) { - swprintf( sString, L"Soldier Data Error: Soldier %d is located at %d/%d/%d.", cnt, pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ); + swprintf( sString, L"Soldier Data Error: Soldier %d is located at %d/%d/%d.", cnt.i, pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ); fProblemDetected = TRUE; } } @@ -24034,7 +24048,6 @@ void SOLDIERTYPE::BeginTyingToFall( void ) void SOLDIERTYPE::SetSoldierAsUnderAiControl( void ) { SOLDIERTYPE *pSoldier = NULL; - INT32 cnt; //this is silly, but left over from when pSoldierToSet was passed in as a parameter if ( this == NULL ) @@ -24043,9 +24056,10 @@ void SOLDIERTYPE::SetSoldierAsUnderAiControl( void ) } // Loop through ALL teams... - cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[LAST_TEAM].bLastID; cnt++, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[LAST_TEAM].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { pSoldier->flags.uiStatusFlags &= ~SOLDIER_UNDERAICONTROL; @@ -24082,12 +24096,12 @@ void HandlePlayerTogglingLightEffects( BOOLEAN fToggleValue ) void EnableDisableSoldierLightEffects( BOOLEAN fEnableLights ) { SOLDIERTYPE *pSoldier = NULL; - INT32 cnt; // Loop through player teams... - cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - for ( pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; cnt++, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) { + pSoldier = cnt; //if the soldier is in the sector if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE ) { @@ -24135,8 +24149,8 @@ void SetSoldierPersonalLightLevel( SOLDIERTYPE *pSoldier ) void BeginSoldierClimbWallUp( SOLDIERTYPE *pSoldier ) { - INT8 bNewDirection; - UINT8 ubWhoIsThere; + INT8 bNewDirection; + SoldierID ubWhoIsThere; if ( FindLowerLevelWall( pSoldier, pSoldier->sGridNo, pSoldier->ubDirection, &bNewDirection ) && (pSoldier->pathing.bLevel > 0) ) { @@ -24234,11 +24248,11 @@ BOOLEAN SOLDIERTYPE::CanStartDrag(void) if (!TileIsOutOfBounds(sNewGridNo) && sNewGridNo != this->sGridNo) { // soldiers - for (UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt) + for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt) { if (cnt != this->ubID && - MercPtrs[cnt] && - MercPtrs[cnt]->sGridNo == sNewGridNo && + cnt != NOBODY && + cnt->sGridNo == sNewGridNo && this->CanDragPerson(cnt)) { return TRUE; @@ -24298,11 +24312,11 @@ void SOLDIERTYPE::StartDrag(void) if (!TileIsOutOfBounds(sNewGridNo) && sNewGridNo != this->sGridNo) { // soldiers - for (UINT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt) + for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++cnt) { if (cnt != this->ubID && - MercPtrs[cnt] && - MercPtrs[cnt]->sGridNo == sNewGridNo && + cnt != NOBODY && + cnt->sGridNo == sNewGridNo && this->CanDragPerson(cnt)) { SetDragOrderPerson(cnt); @@ -24474,37 +24488,37 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber ) UINT8 GetSquadleadersCountInVicinity( SOLDIERTYPE * pSoldier, BOOLEAN fWithHigherLevel, BOOLEAN fDontCheckDistance ) { - UINT8 cnt = 0; UINT8 ubNumberSL = 0; // loop through all soldiers around - for ( cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; cnt++ ) + for ( SoldierID cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++cnt ) { + SOLDIERTYPE *pSquadLeader = cnt; // Get active conscious soldier - if ( MercPtrs[cnt] != pSoldier && MercPtrs[cnt]->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 && - MercPtrs[cnt]->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( MercPtrs[cnt], SQUADLEADER_NT ) ) + if ( pSquadLeader != pSoldier && pSquadLeader->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 && + pSquadLeader->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( pSquadLeader, SQUADLEADER_NT ) ) { // check if within distance // if both have extended ear, the distance is bigger and they don't need to sea each other // note that enemy always get the bonus if within distance, regardless of extended ears // Flugente: moved around arguments for speed reason if ( fDontCheckDistance || - (PythSpacesAway( pSoldier->sGridNo, MercPtrs[cnt]->sGridNo ) <= gSkillTraitValues.usSLRadiusNormal) || + (PythSpacesAway( pSoldier->sGridNo, pSquadLeader->sGridNo ) <= gSkillTraitValues.usSLRadiusNormal) || //((SoldierToVirtualSoldierLineOfSightTest( MercPtrs[ cnt ], pSoldier->sGridNo, pSoldier->pathing.bLevel, ANIM_STAND, TRUE, CALC_FROM_ALL_DIRS ) || //SoldierToVirtualSoldierLineOfSightTest( pSoldier, MercPtrs[ cnt ]->sGridNo, MercPtrs[ cnt ]->pathing.bLevel, ANIM_STAND, TRUE, CALC_FROM_ALL_DIRS ) ) && - ((pSoldier->bTeam == ENEMY_TEAM || (HasExtendedEarOn( pSoldier ) && HasExtendedEarOn( MercPtrs[cnt] ))) && PythSpacesAway( pSoldier->sGridNo, MercPtrs[cnt]->sGridNo ) <= gSkillTraitValues.usSLRadiusExtendedEar) + ((pSoldier->bTeam == ENEMY_TEAM || (HasExtendedEarOn( pSoldier ) && HasExtendedEarOn( pSquadLeader ))) && PythSpacesAway( pSoldier->sGridNo, pSquadLeader->sGridNo ) <= gSkillTraitValues.usSLRadiusExtendedEar) ) { // If checking for higher level SL // also count in already aquired level increses from other SLs if ( fWithHigherLevel ) { - if ( MercPtrs[cnt]->stats.bExpLevel > (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius)) ) - ubNumberSL += min( (max( 0, (MercPtrs[cnt]->stats.bExpLevel - (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius))) )), (NUM_SKILL_TRAITS( MercPtrs[cnt], SQUADLEADER_NT )) ); + if ( pSquadLeader->stats.bExpLevel > (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius)) ) + ubNumberSL += min( (max( 0, (pSquadLeader->stats.bExpLevel - (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius))) )), (NUM_SKILL_TRAITS( pSquadLeader, SQUADLEADER_NT )) ); } else { - ubNumberSL += NUM_SKILL_TRAITS( MercPtrs[cnt], SQUADLEADER_NT ); + ubNumberSL += NUM_SKILL_TRAITS( pSquadLeader, SQUADLEADER_NT ); } if ( ubNumberSL >= gSkillTraitValues.ubSLMaxBonuses ) @@ -24516,31 +24530,32 @@ UINT8 GetSquadleadersCountInVicinity( SOLDIERTYPE * pSoldier, BOOLEAN fWithHighe // special loop for militia - they can get a bonus from our mercs if ( pSoldier->bTeam == MILITIA_TEAM && ubNumberSL < gSkillTraitValues.ubSLMaxBonuses ) { - for ( cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; cnt <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++cnt ) { + SOLDIERTYPE *pSquadLeader = cnt; // Get active conscious soldier - if ( MercPtrs[cnt] != pSoldier && MercPtrs[cnt]->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 && - MercPtrs[cnt]->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( MercPtrs[cnt], SQUADLEADER_NT ) ) + if ( pSquadLeader != pSoldier && pSquadLeader->bActive && //MercPtrs[ cnt ]->aiData.bShock < 20 && + pSquadLeader->stats.bLife >= OKLIFE && HAS_SKILL_TRAIT( pSquadLeader, SQUADLEADER_NT ) ) { // check if within distance // Flugente: moved around arguments for speed reason if ( fDontCheckDistance || - (PythSpacesAway( pSoldier->sGridNo, MercPtrs[cnt]->sGridNo ) <= gSkillTraitValues.usSLRadiusNormal) || + (PythSpacesAway( pSoldier->sGridNo, pSquadLeader->sGridNo ) <= gSkillTraitValues.usSLRadiusNormal) || //((SoldierToVirtualSoldierLineOfSightTest( MercPtrs[ cnt ], pSoldier->sGridNo, pSoldier->pathing.bLevel, ANIM_STAND, TRUE, CALC_FROM_ALL_DIRS ) || //SoldierToVirtualSoldierLineOfSightTest( pSoldier, MercPtrs[ cnt ]->sGridNo, MercPtrs[ cnt ]->pathing.bLevel, ANIM_STAND, TRUE, CALC_FROM_ALL_DIRS ) ) && - ((HasExtendedEarOn( MercPtrs[cnt] ) && PythSpacesAway( pSoldier->sGridNo, MercPtrs[cnt]->sGridNo ) <= gSkillTraitValues.usSLRadiusExtendedEar)) + ((HasExtendedEarOn( pSquadLeader ) && PythSpacesAway( pSoldier->sGridNo, pSquadLeader->sGridNo ) <= gSkillTraitValues.usSLRadiusExtendedEar)) ) { // If checking for higher level SL // also count in already aquired level increses from other SLs if ( fWithHigherLevel ) { - if ( MercPtrs[cnt]->stats.bExpLevel > (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius)) ) - ubNumberSL += min( (max( 0, (MercPtrs[cnt]->stats.bExpLevel - (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius))) )), (NUM_SKILL_TRAITS( MercPtrs[cnt], SQUADLEADER_NT )) ); + if ( pSquadLeader->stats.bExpLevel > (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius)) ) + ubNumberSL += min( (max( 0, (pSquadLeader->stats.bExpLevel - (pSoldier->stats.bExpLevel + (ubNumberSL*gSkillTraitValues.ubSLEffectiveLevelInRadius))) )), (NUM_SKILL_TRAITS( pSquadLeader, SQUADLEADER_NT )) ); } else { - ubNumberSL += NUM_SKILL_TRAITS( MercPtrs[cnt], SQUADLEADER_NT ); + ubNumberSL += NUM_SKILL_TRAITS( pSquadLeader, SQUADLEADER_NT ); } if ( ubNumberSL >= gSkillTraitValues.ubSLMaxBonuses ) @@ -24841,7 +24856,7 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType ) ///////////////////////////// SOLDIERTYPE *pInterrupter; UINT8 ubInterruptersFound = 0; - UINT8 ubaInterruptersList[64]; + UINT16 ubaInterruptersList[64]; UINT16 uCnt = 0, uiReactionTime; INT16 iInjuryPenalty; @@ -24965,7 +24980,7 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType ) if ( gGameExternalOptions.fAllowCollectiveInterrupts ) { SOLDIERTYPE *pTeammate; - UINT16 uCnt2 = 0, usColIntChance = 0; + UINT16 usColIntChance = 0; UINT8 ubOriginalInterruptersCount = ubInterruptersFound, uCnt3 = 0; BOOLEAN fAlreadyIn; @@ -24973,9 +24988,10 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType ) { pInterrupter = MercPtrs[ubaInterruptersList[uCnt]]; - uCnt2 = gTacticalStatus.Team[pInterrupter->bTeam].bFirstID; - for ( pTeammate = MercPtrs[uCnt2]; uCnt2 <= gTacticalStatus.Team[pInterrupter->bTeam].bLastID; uCnt2++, pTeammate++ ) + SoldierID uCnt2 = gTacticalStatus.Team[pInterrupter->bTeam].bFirstID; + for ( ; uCnt2 <= gTacticalStatus.Team[pInterrupter->bTeam].bLastID; ++uCnt2 ) { + pTeammate = uCnt2; if ( pTeammate == NULL ) continue; // not valid if ( pTeammate->bTeam != pInterrupter->bTeam ) @@ -25197,13 +25213,13 @@ BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber ) return FALSE; } -BOOLEAN GetRadioOperatorSignal( UINT8 usOwner, INT32* psTargetGridNo ) +BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo ) { // get the 'real owner' if ( usOwner > 1 ) { // a merc planted this - if he's a radio operator, use his gridno - SOLDIERTYPE* pSoldier = MercPtrs[usOwner - 2]; + SOLDIERTYPE* pSoldier = (usOwner - 2); if ( pSoldier && pSoldier->CanUseRadio( FALSE ) && pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) { @@ -25220,10 +25236,11 @@ BOOLEAN GetRadioOperatorSignal( UINT8 usOwner, INT32* psTargetGridNo ) bTeam = ENEMY_TEAM; SOLDIERTYPE* pSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID; - INT32 lastid = gTacticalStatus.Team[bTeam].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID; + SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pSoldier = cnt; if ( pSoldier && pSoldier->CanUseRadio( FALSE ) && pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) { *psTargetGridNo = pSoldier->sGridNo; @@ -25290,10 +25307,11 @@ BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSecto BOOLEAN activeradio = FALSE; BOOLEAN mortarfound = FALSE; SOLDIERTYPE* pSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID; - INT32 lastid = gTacticalStatus.Team[bTeam].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID; + SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pSoldier = cnt; // check if soldier exists in this sector, and is on duty if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY ) continue; @@ -25316,10 +25334,11 @@ BOOLEAN SectorJammed( ) { // check every soldier: are we jamming frequencies? SOLDIERTYPE* pSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - INT32 lastid = MAX_NUM_SOLDIERS; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID lastid = MAX_NUM_SOLDIERS; + for ( ; cnt < lastid; ++cnt ) { + pSoldier = cnt; if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsJamming( ) ) return TRUE; } @@ -25331,10 +25350,11 @@ BOOLEAN PlayerTeamIsScanning( ) { // check every soldier: are we jamming frequencies? SOLDIERTYPE* pSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; - INT32 lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID lastid = gTacticalStatus.Team[OUR_TEAM].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pSoldier = cnt; if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsScanning( ) ) return TRUE; } @@ -25348,10 +25368,11 @@ UINT16 GridNoSpotterCTHBonus( SOLDIERTYPE* pSniper, INT32 sGridNo, INT8 bTeam ) UINT16 bestvalue = 0; SOLDIERTYPE* pSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[bTeam].bFirstID; - INT32 lastid = gTacticalStatus.Team[bTeam].bLastID; - for ( pSoldier = MercPtrs[cnt]; cnt < lastid; ++cnt, ++pSoldier ) + SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID; + SoldierID lastid = gTacticalStatus.Team[bTeam].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pSoldier = cnt; if ( pSoldier != pSniper && pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->IsSpotting( ) && PythSpacesAway( pSoldier->sGridNo, pSniper->sGridNo ) <= gGameExternalOptions.usSpotterRange @@ -25359,10 +25380,10 @@ UINT16 GridNoSpotterCTHBonus( SOLDIERTYPE* pSniper, INT32 sGridNo, INT8 bTeam ) { BOOLEAN targetseen = FALSE; - UINT usID = WhoIsThere2( sGridNo, pSniper->bTargetLevel ); + SoldierID usID = WhoIsThere2( sGridNo, pSniper->bTargetLevel ); // is someone is at the sGridNo, check wether the spotter can see any part of him check wether head can be seen) - if ( usID != NOBODY && SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[usID], 0, NO_DISTANCE_LIMIT, AIM_SHOT_HEAD ) > 0 ) + if ( usID != NOBODY && SoldierToSoldierLineOfSightTest( pSoldier, usID, 0, NO_DISTANCE_LIMIT, AIM_SHOT_HEAD ) > 0 ) targetseen = TRUE; // otherwise check wether we can see the ground floor else if ( SoldierToVirtualSoldierLineOfSightTest( pSoldier, sGridNo, pSniper->pathing.bLevel, ANIM_PRONE, FALSE, NO_DISTANCE_LIMIT ) > 0 ) diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index 7545ce6b..3bba03d3 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -788,65 +788,65 @@ public: void ConvertFrom_101_To_102(const OLDSOLDIERTYPE_101& src); public: // AI STUFF from before the changes to the memory structure - INT8 bOppList[MAX_NUM_SOLDIERS]; // AI knowledge database - INT8 bLastAction; - INT8 bAction; - INT32 usActionData; - INT8 bNextAction; - INT32 usNextActionData; - INT8 bActionInProgress; - INT8 bAlertStatus; - INT8 bOppCnt; - INT8 bNeutral; - INT8 bNewSituation; - INT8 bNextTargetLevel; - INT8 bOrders; - INT8 bAttitude; - INT8 bUnderFire; - INT8 bShock; - INT8 bUnderEscort; - INT8 bBypassToGreen; - UINT8 ubLastMercToRadio; - INT8 bDominantDir; // AI main direction to face... - INT8 bPatrolCnt; // number of patrol gridnos - INT8 bNextPatrolPnt; // index to next patrol gridno - INT32 sPatrolGrid[MAXPATROLGRIDS];// AI list for ptr->orders==PATROL - INT32 sNoiseGridno; - UINT8 ubNoiseVolume; - INT8 bLastAttackHit; - UINT8 ubXRayedBy; - FLOAT dHeightAdjustment; - INT8 bMorale; - INT8 bTeamMoraleMod; - INT8 bTacticalMoraleMod; - INT8 bStrategicMoraleMod; - INT8 bAIMorale; - UINT8 ubPendingAction; - UINT8 ubPendingActionAnimCount; - UINT32 uiPendingActionData1; - INT32 sPendingActionData2; - INT8 bPendingActionData3; - INT8 ubDoorHandleCode; - UINT32 uiPendingActionData4; - INT8 bInterruptDuelPts; - INT8 bPassedLastInterrupt; - INT16 bIntStartAPs; //100AP - INT8 bMoved; - INT8 bHunting; - UINT8 ubLastCall; - UINT8 ubCaller; - INT32 sCallerGridNo; - UINT8 bCallPriority; - INT8 bCallActedUpon; - INT8 bFrenzied; - INT8 bNormalSmell; - INT8 bMonsterSmell; - INT8 bMobility; - INT8 bRTPCombat; - INT8 fAIFlags; - INT16 bAimTime; //100AP - INT8 bShownAimTime; - UINT8 ubInterruptCounter[MAX_NUM_SOLDIERS]; // SANDRO - interrupt counter added + INT8 bOppList[MAX_NUM_SOLDIERS]; // AI knowledge database + INT8 bLastAction; + INT8 bAction; + INT32 usActionData; + INT8 bNextAction; + INT32 usNextActionData; + INT8 bActionInProgress; + INT8 bAlertStatus; + INT8 bOppCnt; + INT8 bNeutral; + INT8 bNewSituation; + INT8 bNextTargetLevel; + INT8 bOrders; + INT8 bAttitude; + INT8 bUnderFire; + INT8 bShock; + INT8 bUnderEscort; + INT8 bBypassToGreen; + UINT8 ubLastMercToRadio; + INT8 bDominantDir; // AI main direction to face... + INT8 bPatrolCnt; // number of patrol gridnos + INT8 bNextPatrolPnt; // index to next patrol gridno + INT32 sPatrolGrid[MAXPATROLGRIDS];// AI list for ptr->orders==PATROL + INT32 sNoiseGridno; + UINT8 ubNoiseVolume; + INT8 bLastAttackHit; + UINT16 ubXRayedBy; + FLOAT dHeightAdjustment; + INT8 bMorale; + INT8 bTeamMoraleMod; + INT8 bTacticalMoraleMod; + INT8 bStrategicMoraleMod; + INT8 bAIMorale; + UINT8 ubPendingAction; + UINT8 ubPendingActionAnimCount; + UINT32 uiPendingActionData1; + INT32 sPendingActionData2; + INT8 bPendingActionData3; + INT8 ubDoorHandleCode; + UINT32 uiPendingActionData4; + INT8 bInterruptDuelPts; + INT8 bPassedLastInterrupt; + INT16 bIntStartAPs; //100AP + INT8 bMoved; + INT8 bHunting; + UINT8 ubLastCall; + SoldierID ubCaller; + INT32 sCallerGridNo; + UINT8 bCallPriority; + INT8 bCallActedUpon; + INT8 bFrenzied; + INT8 bNormalSmell; + INT8 bMonsterSmell; + INT8 bMobility; + INT8 bRTPCombat; + INT8 fAIFlags; + INT16 bAimTime; //100AP + INT8 bShownAimTime; + UINT8 ubInterruptCounter[MAX_NUM_SOLDIERS]; // SANDRO - interrupt counter added }; class STRUCT_Flags//last edited at version 102 @@ -1103,462 +1103,445 @@ public: // properly until it is all fixed and the files updated. public: // ID - UINT8 ubID; - UINT8 bReserved1; - CHAR16 name[ 10 ]; + SoldierID ubID; + CHAR16 name[ 10 ]; INT16 GetMaxDistanceVisible(INT32 sGridNo = -1, INT8 bLevel = -1, int calcAsType = -1); // DESCRIPTION / STATS, ETC - UINT8 ubBodyType; - INT16 bActionPoints; //100AP - INT16 bInitialActionPoints; //100AP - INT8 bOldLife; // life at end of last turn, recorded for monster AI - INT8 bVisible; // to render or not to render... - INT8 bActive; - INT8 bTeam; // Team identifier + UINT8 ubBodyType; + INT16 bActionPoints; //100AP + INT16 bInitialActionPoints; //100AP + INT8 bOldLife; // life at end of last turn, recorded for monster AI + INT8 bVisible; // to render or not to render... + INT8 bActive; + INT8 bTeam; // Team identifier - OBJECTTYPE *pTempObject; - KEY_ON_RING *pKeyRing; + OBJECTTYPE *pTempObject; + KEY_ON_RING *pKeyRing; - UINT8 bInSector; - INT8 bFlashPortraitFrame; - INT16 sFractLife; // fraction of life pts (in hundreths) - INT8 bBleeding; // blood loss control variable - INT8 bBreath; // current breath value - INT8 bBreathMax; // max breath, affected by fatigue/sleep - INT8 bStealthMode; - INT16 sBreathRed; // current breath loss value + UINT8 bInSector; + INT8 bFlashPortraitFrame; + INT16 sFractLife; // fraction of life pts (in hundreths) + INT8 bBleeding; // blood loss control variable + INT8 bBreath; // current breath value + INT8 bBreathMax; // max breath, affected by fatigue/sleep + INT8 bStealthMode; + INT16 sBreathRed; // current breath loss value - UINT8 ubWaitActionToDo; - INT8 ubInsertionDirection; - INT8 bGunType; - UINT8 ubOppNum; - INT8 bLastRenderVisibleValue; - UINT8 ubAttackingHand; - INT16 sWeightCarriedAtTurnStart; + UINT8 ubWaitActionToDo; + INT8 ubInsertionDirection; + INT8 bGunType; + SoldierID ubOppNum; + INT8 bLastRenderVisibleValue; + UINT8 ubAttackingHand; + INT16 sWeightCarriedAtTurnStart; ///////////////////////////////////////////////////////////////////////////////// // SANDRO - added following // values for surgery feature - INT32 iHealableInjury; - BOOLEAN fDoingSurgery; + INT32 iHealableInjury; + BOOLEAN fDoingSurgery; // value for unregainable breath feature (for Martial Arts) - signed long lUnregainableBreath; + signed long lUnregainableBreath; // this stores possible stats lost due to critical hits - UINT8 ubCriticalStatDamage[ NUM_DAMAGABLE_STATS ]; + UINT8 ubCriticalStatDamage[ NUM_DAMAGABLE_STATS ]; ///////////////////////////////////////////////////////////////////////////////// //NEW MOVEMENT INFORMATION for Strategic Movement - UINT8 ubGroupID; //the movement group the merc is currently part of. - //sSectorX and sSectorY will reflect the sector the - //merc was at last. + UINT8 ubGroupID; // The movement group the merc is currently part of. + // sSectorX and sSectorY will reflect the sector the + // merc was at last. - UINT8 ubMovementNoiseHeard;// 8 flags by direction + UINT8 ubMovementNoiseHeard;// 8 flags by direction // WORLD POSITION STUFF - FLOAT dXPos; - FLOAT dYPos; + FLOAT dXPos; + FLOAT dYPos; // HEADROCK HAM 4: These two vars are appropriated for the new Shooting Mechanism. // They represent the soldier's position at the start of his turn. - //FLOAT dOldXPos; - //FLOAT dOldYPos; - INT16 sOldXPos; - INT16 sOldYPos; - INT32 sInitialGridNo; - INT32 sGridNo; - UINT8 ubDirection; - INT16 sHeightAdjustment; - INT16 sDesiredHeight; - INT32 sTempNewGridNo; // New grid no for advanced animations - INT16 sRoomNo; - INT8 bOverTerrainType; - INT8 bOldOverTerrainType; + //FLOAT dOldXPos; + //FLOAT dOldYPos; + INT16 sOldXPos; + INT16 sOldYPos; + INT32 sInitialGridNo; + INT32 sGridNo; + UINT8 ubDirection; + INT16 sHeightAdjustment; + INT16 sDesiredHeight; + INT32 sTempNewGridNo; // New grid no for advanced animations + INT16 sRoomNo; + INT8 bOverTerrainType; + INT8 bOldOverTerrainType; - INT8 bCollapsed; // collapsed due to being out of APs - INT8 bBreathCollapsed; // collapsed due to being out of APs + INT8 bCollapsed; // collapsed due to being out of APs + INT8 bBreathCollapsed; // collapsed due to being out of APs - - UINT8 ubDesiredHeight; - UINT16 usPendingAnimation; - UINT8 ubPendingStanceChange; - UINT16 usAnimState; + UINT8 ubDesiredHeight; + UINT16 usPendingAnimation; + UINT8 ubPendingStanceChange; + UINT16 usAnimState; + UINT32 uiAIDelay; + INT16 sReloadDelay; + SoldierID ubAttackerID; + SoldierID ubPreviousAttackerID; - - - UINT32 uiAIDelay; - INT16 sReloadDelay; - UINT8 ubAttackerID; - UINT8 ubPreviousAttackerID; - - INT32 sInsertionGridNo; + INT32 sInsertionGridNo; AnimationSurfaceCacheType AnimCache; // will be 9 bytes once changed to pointers - UINT8 bSide; - UINT8 bViewRange; - INT8 bNewOppCnt; - INT8 bService; // first aid, or other time consuming process + UINT8 bSide; + UINT8 bViewRange; + INT8 bNewOppCnt; + INT8 bService; // first aid, or other time consuming process - UINT16 usAniCode; - UINT16 usAniFrame; - INT16 sAniDelay; + UINT16 usAniCode; + UINT16 usAniFrame; + INT16 sAniDelay; // MOVEMENT TO NEXT TILE HANDLING STUFF - UINT8 ubDelayedMovementCauseMerc; - INT32 sDelayedMovementCauseGridNo; - INT32 sReservedMovementGridNo; + UINT8 ubDelayedMovementCauseMerc; + INT32 sDelayedMovementCauseGridNo; + INT32 sReservedMovementGridNo; // Weapon Stuff - INT32 sTargetGridNo; - INT8 bTargetLevel; - INT8 bTargetCubeLevel; - INT32 sLastTarget; + INT32 sTargetGridNo; + INT8 bTargetLevel; + INT8 bTargetCubeLevel; + INT32 sLastTarget; // HEADROCK HAM 4: the muzzle offset of the shooter's previous bullet. (NCTH) - FLOAT dPrevMuzzleOffsetX[2]; - FLOAT dPrevMuzzleOffsetY[2]; + FLOAT dPrevMuzzleOffsetX[2]; + FLOAT dPrevMuzzleOffsetY[2]; // HEADROCK HAM 4: Two more values. These record the shooter's previous Counter Force applied on the gun. - FLOAT dPrevCounterForceX[2]; - FLOAT dPrevCounterForceY[2]; + FLOAT dPrevCounterForceX[2]; + FLOAT dPrevCounterForceY[2]; // CHRISL: Track initial offsets for autofire - FLOAT dInitialMuzzleOffsetX; - FLOAT dInitialMuzzleOffsetY; + FLOAT dInitialMuzzleOffsetX; + FLOAT dInitialMuzzleOffsetY; - INT8 bTilesMoved; - FLOAT dNextBleed; + INT8 bTilesMoved; + FLOAT dNextBleed; - UINT8 ubTilesMovedPerRTBreathUpdate; - UINT16 usLastMovementAnimPerRTBreathUpdate; + UINT8 ubTilesMovedPerRTBreathUpdate; + UINT16 usLastMovementAnimPerRTBreathUpdate; - INT16 sLocatorFrame; + INT16 sLocatorFrame; - INT32 iFaceIndex; + INT32 iFaceIndex; // FULL 3-d TILE STUFF ( keep records of three tiles infront ) - UINT16 usFrontArcFullTileList[ MAX_FULLTILE_DIRECTIONS ]; - INT32 usFrontArcFullTileGridNos[ MAX_FULLTILE_DIRECTIONS ]; + UINT16 usFrontArcFullTileList[ MAX_FULLTILE_DIRECTIONS ]; + INT32 usFrontArcFullTileGridNos[ MAX_FULLTILE_DIRECTIONS ]; // PALETTE MANAGEMENT STUFF - PaletteRepID HeadPal; // 30 - PaletteRepID PantsPal; // 30 - PaletteRepID VestPal; // 30 - PaletteRepID SkinPal; // 30 - PaletteRepID MiscPal; // 30 - - - - - SGPPaletteEntry *p8BPPPalette; // 4 - UINT16 *p16BPPPalette; - UINT16 *pShades[ NUM_SOLDIER_SHADES ]; // Shading tables - UINT16 *pGlowShades[ 20 ]; // - UINT16 *pCurrentShade; - UINT8 ubFadeLevel; - UINT8 ubServiceCount; - UINT8 ubServicePartner; - THROW_PARAMS *pThrowParams; - INT8 bReverse; - LEVELNODE *pLevelNode; - LEVELNODE *pExternShadowLevelNode; - LEVELNODE *pRoofUILevelNode; - + PaletteRepID HeadPal; // 30 + PaletteRepID PantsPal; // 30 + PaletteRepID VestPal; // 30 + PaletteRepID SkinPal; // 30 + PaletteRepID MiscPal; // 30 + SGPPaletteEntry *p8BPPPalette; // 4 + UINT16 *p16BPPPalette; + UINT16 *pShades[ NUM_SOLDIER_SHADES ]; // Shading tables + UINT16 *pGlowShades[ 20 ]; // + UINT16 *pCurrentShade; + UINT8 ubFadeLevel; + UINT8 ubServiceCount; + SoldierID ubServicePartner; + THROW_PARAMS *pThrowParams; + INT8 bReverse; + LEVELNODE *pLevelNode; + LEVELNODE *pExternShadowLevelNode; + LEVELNODE *pRoofUILevelNode; // UNBLIT BACKGROUND - UINT16 *pBackGround; - UINT16 *pZBackground; - UINT16 usUnblitX, usUnblitY; - UINT16 usUnblitWidth, usUnblitHeight; + UINT16 *pBackGround; + UINT16 *pZBackground; + UINT16 usUnblitX, usUnblitY; + UINT16 usUnblitWidth, usUnblitHeight; - UINT8 ubStrategicInsertionCode; - INT32 usStrategicInsertionData; + UINT8 ubStrategicInsertionCode; + INT32 usStrategicInsertionData; - INT32 iLight; - INT32 iMuzFlash; - INT8 bMuzFlashCount; + INT32 iLight; + INT32 iMuzFlash; + INT8 bMuzFlashCount; - INT16 sX; - INT16 sY; + INT16 sX; + INT16 sY; - UINT16 usOldAniState; - INT16 sOldAniCode; + UINT16 usOldAniState; + INT16 sOldAniCode; - INT8 bBulletsLeft; - UINT8 ubSuppressionPoints; + INT8 bBulletsLeft; + UINT8 ubSuppressionPoints; // STUFF FOR RANDOM ANIMATIONS - UINT32 uiTimeOfLastRandomAction; - INT16 usLastRandomAnim; + UINT32 uiTimeOfLastRandomAction; + INT16 usLastRandomAnim; + UINT16 usAnimSurface; + UINT16 sZLevel; - UINT16 usAnimSurface; - UINT16 sZLevel; - - INT16 sWalkToAttackMovementMode;//shadooow: stores movement mode used in last pathing - INT32 sWalkToAttackGridNo; - INT16 sWalkToAttackWalkToCost; + INT16 sWalkToAttackMovementMode;//shadooow: stores movement mode used in last pathing + INT32 sWalkToAttackGridNo; + INT16 sWalkToAttackWalkToCost; - INT16 sLocatorOffX; - INT16 sLocatorOffY; - UINT16 *pForcedShade; + INT16 sLocatorOffX; + INT16 sLocatorOffY; + UINT16 *pForcedShade; - INT8 bDisplayDamageCount; - UINT8 sWalkToAttackEndDirection;//shadooow: stores direction of merc at the destination grid - INT16 sDamage; - INT16 sDamageX; - INT16 sDamageY; - INT8 bDamageDir; - INT8 bDoBurst; - INT16 usUIMovementMode; - INT8 bUIInterfaceLevel; + INT8 bDisplayDamageCount; + UINT8 sWalkToAttackEndDirection;//shadooow: stores direction of merc at the destination grid + INT16 sDamage; + INT16 sDamageX; + INT16 sDamageY; + INT8 bDamageDir; + INT8 bDoBurst; + INT16 usUIMovementMode; + INT8 bUIInterfaceLevel; - UINT8 ubProfile; - UINT8 ubQuoteRecord; - UINT8 ubQuoteActionID; - UINT8 ubBattleSoundID; + UINT8 ubProfile; + UINT8 ubQuoteRecord; + UINT8 ubQuoteActionID; + UINT8 ubBattleSoundID; - UINT8 ubClosePanelFrame; - UINT8 ubDeadPanelFrame; - INT8 bOpenPanelFrame; + UINT8 ubClosePanelFrame; + UINT8 ubDeadPanelFrame; + INT8 bOpenPanelFrame; - INT16 sPanelFaceX; - INT16 sPanelFaceY; + INT16 sPanelFaceX; + INT16 sPanelFaceY; // QUOTE STUFF - INT8 bNumHitsThisTurn; - UINT16 usQuoteSaidFlags; - INT8 bLastSkillCheck; - INT8 ubSkillCheckAttempts; + INT8 bNumHitsThisTurn; + UINT16 usQuoteSaidFlags; + INT8 bLastSkillCheck; + INT8 ubSkillCheckAttempts; - INT8 bVocalVolume; // verbal sounds need to differ in volume + INT8 bVocalVolume; // verbal sounds need to differ in volume - INT8 bStartFallDir; + INT8 bStartFallDir; - UINT8 ubPendingDirection; - UINT32 uiAnimSubFlags; + UINT8 ubPendingDirection; + UINT32 uiAnimSubFlags; - UINT8 bAimShotLocation; - UINT8 ubHitLocation; - UINT8 bAimMeleeLocation; + UINT8 bAimShotLocation; + UINT8 ubHitLocation; + UINT8 bAimMeleeLocation; - UINT16 *pEffectShades[ NUM_SOLDIER_EFFECTSHADES ]; // Shading tables for effects + UINT16 *pEffectShades[ NUM_SOLDIER_EFFECTSHADES ]; // Shading tables for effects - UINT8 ubPlannedUIAPCost; - INT16 sPlannedTargetX; - INT16 sPlannedTargetY; + UINT8 ubPlannedUIAPCost; + INT16 sPlannedTargetX; + INT16 sPlannedTargetY; - INT32 sSpreadLocations[ MAX_BURST_SPREAD_TARGETS ]; - INT32 sStartGridNo; - INT32 sEndGridNo; - INT32 sForcastGridno; - INT16 sZLevelOverride; - INT8 bMovedPriorToInterrupt; - INT32 iEndofContractTime; // time, in global time(resolution, minutes) that merc will leave, or if its a M.E.R.C. merc it will be set to -1. -2 for NPC and player generated - INT32 iStartContractTime; - INT32 iTotalContractLength; // total time of AIM mercs contract or the time since last paid for a M.E.R.C. merc - INT32 iNextActionSpecialData; // AI special action data record for the next action - UINT8 ubWhatKindOfMercAmI; //Set to the type of character it is - INT8 bAssignment; // soldiers current assignment - INT8 bOldAssignment; // old assignment, for autosleep purposes - INT8 bTrainStat; // current stat soldier is training - INT16 sSectorX; // X position on the Stategic Map - INT16 sSectorY; // Y position on the Stategic Map - INT8 bSectorZ; // Z sector location - INT32 iVehicleId; // the id of the vehicle the char is in - PathStPtr pMercPath; //Path Structure - UINT16 usMedicalDeposit; // is there a medical deposit on merc - UINT16 usLifeInsurance; // is there life insurance taken out on merc + INT32 sSpreadLocations[ MAX_BURST_SPREAD_TARGETS ]; + INT32 sStartGridNo; + INT32 sEndGridNo; + INT32 sForcastGridno; + INT16 sZLevelOverride; + INT8 bMovedPriorToInterrupt; + INT32 iEndofContractTime; // time, in global time(resolution, minutes) that merc will leave, or if its a M.E.R.C. merc it will be set to -1. -2 for NPC and player generated + INT32 iStartContractTime; + INT32 iTotalContractLength; // total time of AIM mercs contract or the time since last paid for a M.E.R.C. merc + INT32 iNextActionSpecialData; // AI special action data record for the next action + UINT8 ubWhatKindOfMercAmI; //Set to the type of character it is + INT8 bAssignment; // soldiers current assignment + INT8 bOldAssignment; // old assignment, for autosleep purposes + INT8 bTrainStat; // current stat soldier is training + INT16 sSectorX; // X position on the Stategic Map + INT16 sSectorY; // Y position on the Stategic Map + INT8 bSectorZ; // Z sector location + INT32 iVehicleId; // the id of the vehicle the char is in + PathStPtr pMercPath; //Path Structure + UINT16 usMedicalDeposit; // is there a medical deposit on merc + UINT16 usLifeInsurance; // is there life insurance taken out on merc //DEF: Used for the communications - UINT32 uiStartMovementTime; // the time since the merc first started moving - UINT32 uiOptimumMovementTime; // everytime in ececute overhead the time for the current ani will be added to this total - UINT32 usLastUpdateTime ; // The last time the soldier was in ExecuteOverhead + UINT32 uiStartMovementTime; // the time since the merc first started moving + UINT32 uiOptimumMovementTime; // everytime in ececute overhead the time for the current ani will be added to this total + UINT32 usLastUpdateTime ; // The last time the soldier was in ExecuteOverhead - UINT32 uiSoldierUpdateNumber; - BYTE ubSoldierUpdateType; - INT32 sScheduledStop; //hayden, used for scheduling a grid to stop + UINT32 uiSoldierUpdateNumber; + BYTE ubSoldierUpdateType; + INT32 sScheduledStop; //hayden, used for scheduling a grid to stop //END - INT32 iStartOfInsuranceContract; - UINT32 uiLastAssignmentChangeMin; // timestamp of last assignment change in minutes - INT32 iTotalLengthOfInsuranceContract; + INT32 iStartOfInsuranceContract; + UINT32 uiLastAssignmentChangeMin; // timestamp of last assignment change in minutes + INT32 iTotalLengthOfInsuranceContract; - UINT8 ubSoldierClass; //admin, elite, troop (creature types?) Nav: 2 seems to mean elite, 3 troop so admin is 1 - UINT8 ubAPsLostToSuppression; - UINT8 ubSuppressorID; + UINT8 ubSoldierClass; //admin, elite, troop (creature types?) Nav: 2 seems to mean elite, 3 troop so admin is 1 + UINT8 ubAPsLostToSuppression; + SoldierID ubSuppressorID; //Squad merging vars - UINT8 ubDesiredSquadAssignment; - UINT8 ubNumTraversalsAllowedToMerge; + UINT8 ubDesiredSquadAssignment; + UINT8 ubNumTraversalsAllowedToMerge; - UINT16 usPendingAnimation2; - UINT8 ubCivilianGroup; + UINT16 usPendingAnimation2; + UINT8 ubCivilianGroup; - UINT32 uiUniqueSoldierIdValue; // the unique value every instance of a soldier gets - 1 is the first valid value + UINT32 uiUniqueSoldierIdValue; // the unique value every instance of a soldier gets - 1 is the first valid value - INT8 bEndDoorOpenCode; + INT8 bEndDoorOpenCode; - UINT8 ubScheduleID; - INT32 sEndDoorOpenCodeData;//dnl ch53 121009 - INT8 bBlockedByAnotherMercDirection; - UINT16 usAttackingWeapon; - INT8 bWeaponMode; - UINT8 ubTargetID; - INT8 bAIScheduleProgress; - INT32 sOffWorldGridNo; - struct TAG_anitile *pAniTile; - INT8 bCamo; - INT32 sAbsoluteFinalDestination; - UINT8 ubHiResDirection; - UINT8 ubHiResDesiredDirection; - UINT8 ubLastFootPrintSound; - INT8 bVehicleID; - INT8 bMovementDirection; - INT32 sOldGridNo; - UINT16 usDontUpdateNewGridNoOnMoveAnimChange; - INT16 sBoundingBoxWidth; - INT16 sBoundingBoxHeight; - INT16 sBoundingBoxOffsetX; - INT16 sBoundingBoxOffsetY; - UINT32 uiTimeSameBattleSndDone; - INT8 bOldBattleSnd; - INT32 iBurstSoundID; - INT8 bSlotItemTakenFrom; - UINT8 ubAutoBandagingMedic; - UINT8 ubRobotRemoteHolderID; - UINT32 uiTimeOfLastContractUpdate; - INT8 bTypeOfLastContract; - INT8 bTurnsCollapsed; - INT8 bSleepDrugCounter; - UINT8 ubMilitiaKills; + UINT8 ubScheduleID; + INT32 sEndDoorOpenCodeData;//dnl ch53 121009 + INT8 bBlockedByAnotherMercDirection; + UINT16 usAttackingWeapon; + INT8 bWeaponMode; + SoldierID ubTargetID; + INT8 bAIScheduleProgress; + INT32 sOffWorldGridNo; + struct TAG_anitile *pAniTile; + INT8 bCamo; + INT32 sAbsoluteFinalDestination; + UINT8 ubHiResDirection; + UINT8 ubHiResDesiredDirection; + UINT8 ubLastFootPrintSound; + INT8 bVehicleID; + INT8 bMovementDirection; + INT32 sOldGridNo; + UINT16 usDontUpdateNewGridNoOnMoveAnimChange; + INT16 sBoundingBoxWidth; + INT16 sBoundingBoxHeight; + INT16 sBoundingBoxOffsetX; + INT16 sBoundingBoxOffsetY; + UINT32 uiTimeSameBattleSndDone; + INT8 bOldBattleSnd; + INT32 iBurstSoundID; + INT8 bSlotItemTakenFrom; + SoldierID ubAutoBandagingMedic; + SoldierID ubRobotRemoteHolderID; + UINT32 uiTimeOfLastContractUpdate; + INT8 bTypeOfLastContract; + INT8 bTurnsCollapsed; + INT8 bSleepDrugCounter; + UINT8 ubMilitiaKills; - INT8 bBlindedCounter; + INT8 bBlindedCounter; - UINT8 ubHoursOnAssignment; // used for assignments handled only every X hours + UINT8 ubHoursOnAssignment; // used for assignments handled only every X hours - UINT8 ubMercJustFired; // the merc was just fired..there may be dialogue events occuring, this flag will prevent any interaction with contracts - // until after the merc leaves - UINT8 ubTurnsUntilCanSayHeardNoise; - UINT16 usQuoteSaidExtFlags; + UINT8 ubMercJustFired; // the merc was just fired..there may be dialogue events occuring, this flag will prevent any interaction with contracts + // until after the merc leaves + UINT8 ubTurnsUntilCanSayHeardNoise; + UINT16 usQuoteSaidExtFlags; - INT32 sContPathLocation;//dnl ch53 was UINT16 - INT8 bGoodContPath; - UINT8 ubPendingActionInterrupted; - INT8 bNoiseLevel; - INT8 bRegenerationCounter; // Flugente: not used anymore! - INT8 bRegenBoostersUsedToday; // Flugente: not used anymore! - INT8 bNumPelletsHitBy; - INT32 sSkillCheckGridNo; - UINT8 ubLastEnemyCycledID; + INT32 sContPathLocation;//dnl ch53 was UINT16 + INT8 bGoodContPath; + UINT8 ubPendingActionInterrupted; + INT8 bNoiseLevel; + INT8 bRegenerationCounter; // Flugente: not used anymore! + INT8 bRegenBoostersUsedToday; // Flugente: not used anymore! + INT8 bNumPelletsHitBy; + INT32 sSkillCheckGridNo; + SoldierID ubLastEnemyCycledID; - UINT8 ubPrevSectorID; - UINT8 ubNumTilesMovesSinceLastForget; - INT8 bTurningIncrement; - UINT32 uiBattleSoundID; + UINT8 ubPrevSectorID; + UINT8 ubNumTilesMovesSinceLastForget; + INT8 bTurningIncrement; + UINT32 uiBattleSoundID; - UINT16 usValueGoneUp; + UINT16 usValueGoneUp; - UINT8 ubNumLocateCycles; - UINT8 ubDelayedMovementFlags; - UINT8 ubCTGTTargetID; + UINT8 ubNumLocateCycles; + UINT8 ubDelayedMovementFlags; + SoldierID ubCTGTTargetID; - UINT32 uiMercChecksum; + UINT32 uiMercChecksum; - INT8 bCurrentCivQuote; - INT8 bCurrentCivQuoteDelta; - UINT8 ubMiscSoldierFlags; - UINT8 ubReasonCantFinishMove; + INT8 bCurrentCivQuote; + INT8 bCurrentCivQuoteDelta; + UINT8 ubMiscSoldierFlags; + UINT8 ubReasonCantFinishMove; - INT32 sLocationOfFadeStart; - UINT8 bUseExitGridForReentryDirection; + INT32 sLocationOfFadeStart; + UINT8 bUseExitGridForReentryDirection; - UINT32 uiTimeSinceLastSpoke; - UINT8 ubContractRenewalQuoteCode; - INT32 sPreTraversalGridNo; - UINT32 uiXRayActivatedTime; - INT8 bTurningFromUI; - INT8 bPendingActionData5; + UINT32 uiTimeSinceLastSpoke; + UINT8 ubContractRenewalQuoteCode; + INT32 sPreTraversalGridNo; + UINT32 uiXRayActivatedTime; + INT8 bTurningFromUI; + INT8 bPendingActionData5; - INT8 bDelayedStrategicMoraleMod; - UINT8 ubDoorOpeningNoise; + INT8 bDelayedStrategicMoraleMod; + UINT8 ubDoorOpeningNoise; - struct GROUP *pGroup; - UINT8 ubLeaveHistoryCode; - INT8 bOverrideMoveSpeed; + struct GROUP *pGroup; + UINT8 ubLeaveHistoryCode; + SoldierID bOverrideMoveSpeed; - UINT32 uiTimeSoldierWillArrive; + UINT32 uiTimeSoldierWillArrive; - INT8 bVehicleUnderRepairID; - INT32 iTimeCanSignElsewhere; - INT8 bHospitalPriceModifier; - UINT32 uiStartTimeOfInsuranceContract; - INT8 bCorpseQuoteTolerance; - INT8 bDeafenedCounter; - INT32 iPositionSndID; - INT32 iTuringSoundID; - UINT8 ubLastDamageReason; - INT32 sLastTwoLocations[2]; - INT32 uiTimeSinceLastBleedGrunt; - UINT8 ubNextToPreviousAttackerID; - UINT8 bDoAutofire; - INT8 numFlanks; - INT32 lastFlankSpot; - INT8 sniper; - INT16 origDir; - INT8 wornCamo; + INT8 bVehicleUnderRepairID; + INT32 iTimeCanSignElsewhere; + INT8 bHospitalPriceModifier; + UINT32 uiStartTimeOfInsuranceContract; + INT8 bCorpseQuoteTolerance; + INT8 bDeafenedCounter; + INT32 iPositionSndID; + INT32 iTuringSoundID; + UINT8 ubLastDamageReason; + INT32 sLastTwoLocations[2]; + INT32 uiTimeSinceLastBleedGrunt; + SoldierID ubNextToPreviousAttackerID; + UINT8 bDoAutofire; + INT8 numFlanks; + INT32 lastFlankSpot; + INT8 sniper; + INT16 origDir; - INT8 urbanCamo; // Madd: new camo types - INT8 wornUrbanCamo; - - INT8 desertCamo; - INT8 wornDesertCamo; - - INT8 snowCamo; - INT8 wornSnowCamo; + INT8 wornCamo; + INT8 urbanCamo; // Madd: new camo types + INT8 wornUrbanCamo; + INT8 desertCamo; + INT8 wornDesertCamo; + INT8 snowCamo; + INT8 wornSnowCamo; // HEADROCK HAM 3.6: Added integer tracking the facility this character is using. - INT16 sFacilityTypeOperated; + INT16 sFacilityTypeOperated; // HEADROCK HAM 3.6: I'm removing this filler to make room for the above variable. I'm very worried though, // I don't know if this is a good idea at all... //INT16 filler; // Flugente: Is this the correct position? - INT8 bScopeMode; + INT8 bScopeMode; /////////////////////////////////////////////////////// // Flugente: this was the location of required variables required for the now removed poison feature. They can be used again - UINT8 ubMilitiaAssists; // Flugente: stores militia assists - INT8 sNonNPCTraderID; // Flugente: we can set up non-NPC soldiers to be merchants, we store their dealer id here (value > 0 means arms dealer entry x) - //INT8 bUnusedINT8_3; - UINT8 usDragPersonID; // Flugente: id of person we are dragging - - //INT16 bUnusedINT16_4; - INT16 sDragCorpseID; // Flugente: id of corpse we are dragging - - UINT16 usChatPartnerID; // Flugente: the id of another merc we are 'chatting' with + UINT8 ubMilitiaAssists; // Flugente: stores militia assists + INT8 sNonNPCTraderID; // Flugente: we can set up non-NPC soldiers to be merchants, we store their dealer id here (value > 0 means arms dealer entry x) + SoldierID usDragPersonID; // Flugente: id of person we are dragging + INT16 sDragCorpseID; // Flugente: id of corpse we are dragging + SoldierID usChatPartnerID; // Flugente: the id of another merc we are 'chatting' with // 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 + INT8 bExtraExpLevel; // corruption can temporarily alter our ExpLevel without messing up our stats this way UINT32 usSoldierFlagMask; // for various soldier-related flags (Illusion, Kill streak, etc.). Easier than adding 32 bool variables @@ -1615,11 +1598,11 @@ public: #ifdef JA2UB //ja25 - BOOLEAN fIgnoreGetupFromCollapseCheck; - TIMECOUNTER GetupFromJA25StartCounter; - BOOLEAN fWaitingToGetupFromJA25Start; + BOOLEAN fIgnoreGetupFromCollapseCheck; + TIMECOUNTER GetupFromJA25StartCounter; + BOOLEAN fWaitingToGetupFromJA25Start; - UINT8 ubPercentDamageInflictedByTeam[NUM_ASSIST_SLOTS]; //The percent of damage inflicted by the player team. Each element corresponds to the Soldier ID. Each element contains the percent damage inflicted by that merc + UINT8 ubPercentDamageInflictedByTeam[NUM_ASSIST_SLOTS]; //The percent of damage inflicted by the player team. Each element corresponds to the Soldier ID. Each element contains the percent damage inflicted by that merc #endif char endOfPOD; // marker for end of POD (plain old data) @@ -1630,20 +1613,20 @@ public: // properly until it is all fixed and the files updated. Inventory inv; - AI::tactical::Plan* ai_masterplan_; // Interface object for ModularizedTacticalAI + AI::tactical::Plan* ai_masterplan_; // Interface object for ModularizedTacticalAI //data from version 101 wrapped into structs - STRUCT_AIData aiData; - STRUCT_Flags flags; - STRUCT_TimeChanges timeChanges; - STRUCT_TimeCounters timeCounters; - //STRUCT_Drugs drugs; // Flugente: drug values are now in newdrugs - DRUGS newdrugs; - STRUCT_Statistics stats; - STRUCT_Pathing pathing; + STRUCT_AIData aiData; + STRUCT_Flags flags; + STRUCT_TimeChanges timeChanges; + STRUCT_TimeCounters timeCounters; + //STRUCT_Drugs drugs; // Flugente: drug values are now in newdrugs + DRUGS newdrugs; + STRUCT_Statistics stats; + STRUCT_Pathing pathing; // Debugging data - not saved - INT32 sPlotSrcGrid; + INT32 sPlotSrcGrid; //std::vector CTH; // sevenfm: remember suppression points, shock from last attack @@ -1673,7 +1656,7 @@ public: BOOLEAN CreateSoldierLight( void ); BOOLEAN DeleteSoldierLight( void ); - BOOLEAN CreateSoldierCommon( UINT8 ubBodyType, UINT16 usSoldierID, UINT16 usState ); + BOOLEAN CreateSoldierCommon( UINT8 ubBodyType, SoldierID usSoldierID, UINT16 usState ); // Soldier Management functions, called by Event Pump.c @@ -1687,7 +1670,7 @@ public: void EVENT_SetSoldierDirection( UINT16 usNewDirection ); void EVENT_SetSoldierDesiredDirection( UINT16 usNewDirection ); void EVENT_FireSoldierWeapon( INT32 sTargetGridNo ); - void EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 ubDamage, INT16 sBreathLoss, UINT16 bDirection , UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGridNo ); + void EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 ubDamage, INT16 sBreathLoss, UINT16 bDirection, UINT16 sRange, SoldierID ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGridNo ); void EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirection ); void EVENT_SoldierBeginPunchAttack( INT32 sGridNo, UINT8 ubDirection ); void EVENT_SoldierBeginFirstAid( INT32 sGridNo, UINT8 ubDirection ); @@ -1728,10 +1711,10 @@ public: void ChangeSoldierStance( UINT8 ubDesiredStance ); void StopSoldier( void ); void ReviveSoldier( void ); - UINT8 SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathDeduct, UINT8 ubReason, UINT8 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ); + UINT8 SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathDeduct, UINT8 ubReason, SoldierID ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ); // anv: resolve damage with delay, e.g. damage applied mid movement that would cause issues with world data if applied immediately - void SoldierTakeDelayedDamage(INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathDeduct, UINT8 ubReason, UINT8 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage); + void SoldierTakeDelayedDamage(INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathDeduct, UINT8 ubReason, SoldierID ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage); void ResolveDelayedDamage(); // Palette functions for soldiers @@ -1825,7 +1808,7 @@ public: BOOLEAN CheckSoldierHitRoof( void ); BOOLEAN CheckForBreathCollapse( void ); - BOOLEAN PlayerSoldierStartTalking( UINT8 ubTargetID, BOOLEAN fValidate ); + BOOLEAN PlayerSoldierStartTalking( SoldierID ubTargetID, BOOLEAN fValidate ); BOOLEAN InternalIsValidStance( INT8 bDirection, INT8 bNewStance ); BOOLEAN IsValidSecondHandShot( void ); BOOLEAN IsValidSecondHandBurst( void ); @@ -1856,7 +1839,7 @@ public: void InventoryExplosion( void ); // Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)? - BOOLEAN IsFeedingExternal(UINT8* pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT8* pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2); + BOOLEAN IsFeedingExternal(SoldierID * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, SoldierID* pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2); // Flugente: return first found object with a specific flag from our inventory OBJECTTYPE* GetObjectWithFlag( UINT64 aFlag ); @@ -1876,10 +1859,10 @@ public: BOOLEAN EquipmentTooGood( BOOLEAN fCloselook ); // does soldier ubObserverID recognize us as his enemy? - BOOLEAN SeemsLegit( UINT8 ubObserverID ); + BOOLEAN SeemsLegit( SoldierID ubObserverID ); // do we recognize someone else as a combatant? - BOOLEAN RecognizeAsCombatant(UINT8 ubTargetID); + BOOLEAN RecognizeAsCombatant(SoldierID ubTargetID); // loose covert property void LooseDisguise( void ); @@ -2070,12 +2053,12 @@ public: // Flugente: drag people BOOLEAN CanDragInPrinciple(BOOLEAN fCheckStance = FALSE); - BOOLEAN CanDragPerson(UINT16 usID, BOOLEAN fCheckStance = FALSE); + BOOLEAN CanDragPerson(SoldierID usID, BOOLEAN fCheckStance = FALSE); BOOLEAN CanDragCorpse(UINT16 usCorpseNum, BOOLEAN fCheckStance = FALSE); BOOLEAN CanDragStructure(INT32 sGridNo, BOOLEAN fCheckStance = FALSE); BOOLEAN IsDragging(bool aStopIfConditionNotSatisfied = true); - void SetDragOrderPerson( UINT16 usID ); - void SetDragOrderCorpse( UINT32 usID ); + void SetDragOrderPerson( SoldierID usID ); + void SetDragOrderCorpse( UINT32 uiCorpseID ); void SetDragOrderStructure( INT32 sGridNo ); void CancelDrag(); @@ -2103,10 +2086,10 @@ public: UINT8 GetThiefEvadeDetectionChance(); // Flugente: turncoats - BOOLEAN InPositionForTurncoatAttempt( UINT16 usID ); - UINT8 GetTurncoatConvinctionChance( UINT16 usID, INT16 usApproach ); - void AttemptToCreateTurncoat( UINT16 usID ); - BOOLEAN OrderTurnCoatToSwitchSides( UINT16 usID ); + BOOLEAN InPositionForTurncoatAttempt( SoldierID usID ); + UINT8 GetTurncoatConvinctionChance( SoldierID usID, INT16 usApproach ); + void AttemptToCreateTurncoat( SoldierID usID ); + BOOLEAN OrderTurnCoatToSwitchSides( SoldierID usID ); void OrderAllTurnCoatToSwitchSides(); // Flugente: exploration assignment @@ -2244,7 +2227,7 @@ BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier ); // added by Flugente BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber ); // determine if this (new) trait has two stages BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber ); // determine if this is a major trait -BOOLEAN GetRadioOperatorSignal(UINT8 usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike +BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT8 bTeam ); // can an artillery strike be ordered FROM this sector BOOLEAN SectorJammed(); BOOLEAN PlayerTeamIsScanning(); diff --git a/Tactical/Soldier Create.cpp b/Tactical/Soldier Create.cpp index 706f5590..3048ca29 100644 --- a/Tactical/Soldier Create.cpp +++ b/Tactical/Soldier Create.cpp @@ -571,15 +571,13 @@ void DecideToAssignSniperOrders( SOLDIERCREATE_STRUCT * pp ) // This causes an issue if someone enters a sector from an adjacent sector - they should be affected by their point of origin, not the current sector // For this reason, we add a little helper variable that stores such a sector. INT16 gsStrategicDiseaseOriginSector = -1; - -SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ) +SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, SoldierID *pubID ) { - SOLDIERTYPE Soldier; - INT32 cnt; - SOLDIERTYPE *pTeamSoldier; - BOOLEAN fGuyAvail = FALSE; - UINT8 bLastTeamID; - UINT8 ubVehicleID = 0; + SOLDIERTYPE Soldier; + SOLDIERTYPE *pTeamSoldier; + BOOLEAN fGuyAvail = FALSE; + UINT16 bLastTeamID; + UINT8 ubVehicleID = 0; *pubID = NOBODY; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("TacticalCreateSoldier")); @@ -604,7 +602,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * } if ( is_server && tbTeam > OUR_TEAM && tbTeam < PLAYER_PLAN ) { - send_AI(pCreateStruct,pubID); + send_AI(pCreateStruct); } if(is_client && !is_server && tfPP==1) { @@ -762,7 +760,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * if( guiCurrentScreen != AUTORESOLVE_SCREEN ) { - cnt = gTacticalStatus.Team[ Soldier.bTeam ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ Soldier.bTeam ].bFirstID; // ATE: If we are a vehicle, and a player, start at a different slot ( 2 - max ) if( Soldier.ubBodyType == HUMVEE || @@ -779,8 +777,9 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * bLastTeamID = gTacticalStatus.Team[ Soldier.bTeam ].bLastID; // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= bLastTeamID; cnt++,pTeamSoldier++) + for ( ; cnt <= bLastTeamID; ++cnt ) { + pTeamSoldier = cnt; if ( !pTeamSoldier->bActive ) { fGuyAvail = TRUE; @@ -795,7 +794,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * } // OK, set ID - Soldier.ubID = (UINT8)cnt; + Soldier.ubID = cnt; *pubID = Soldier.ubID; } @@ -1190,7 +1189,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * // Copy into merc struct *MercPtrs[ Soldier.ubID ] = Soldier; // Alrighty then, we are set to create the merc, stuff after here can fail! - CHECKF( MercPtrs[ Soldier.ubID ]->CreateSoldierCommon( Soldier.ubBodyType, Soldier.ubID, STANDING ) != FALSE ); + CHECKF( Soldier.ubID->CreateSoldierCommon( Soldier.ubBodyType, Soldier.ubID, STANDING ) != FALSE ); } } else @@ -1269,6 +1268,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * } } + BOOLEAN TacticalCopySoldierFromProfile( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCreateStruct ) { UINT8 ubProfileIndex; @@ -1840,9 +1840,9 @@ BOOLEAN TacticalCopySoldierFromCreateStruct( SOLDIERTYPE *pSoldier, SOLDIERCREAT { if ( HAS_SKILL_TRAIT( pSoldier, SQUADLEADER_NT) ) { - UINT8 numenemies = NumEnemyInSector(); + UINT16 numenemies = NumEnemyInSector(); UINT8 officertype = OFFICER_NONE; - UINT8 numofficers = HighestEnemyOfficersInSector( officertype ); + UINT16 numofficers = HighestEnemyOfficersInSector( officertype ); // this guy becomes an officer if there are enough soldiers around, and we aren't already at max of officers if ( numenemies > gGameExternalOptions.usEnemyOfficersPerTeamSize * numofficers && numofficers < gGameExternalOptions.usEnemyOfficersMax && !RebelCommand::NeutraliseRole(pSoldier) ) @@ -2085,57 +2085,57 @@ void InitSoldierStruct( SOLDIERTYPE *pSoldier ) pSoldier->initialize(); // Set default values - pSoldier->bVisible = -1; - pSoldier->iFaceIndex = -1; + pSoldier->bVisible = -1; + pSoldier->iFaceIndex = -1; // Set morale default - //pSoldier->aiData.bMorale = DEFAULT_MORALE; - pSoldier->aiData.bMorale = gMoraleSettings.ubDefaultMorale; + //pSoldier->aiData.bMorale = DEFAULT_MORALE; + pSoldier->aiData.bMorale = gMoraleSettings.ubDefaultMorale; - pSoldier->ubAttackerID = NOBODY; - pSoldier->ubPreviousAttackerID = NOBODY; - pSoldier->ubNextToPreviousAttackerID = NOBODY; + pSoldier->ubAttackerID = NOBODY; + pSoldier->ubPreviousAttackerID = NOBODY; + pSoldier->ubNextToPreviousAttackerID = NOBODY; //Set AI Delay! - pSoldier->uiAIDelay = 100; + pSoldier->uiAIDelay = 100; - pSoldier->iLight = -1; - pSoldier->iFaceIndex = -1; + pSoldier->iLight = -1; + pSoldier->iFaceIndex = -1; // Set update time to new speed - pSoldier->ubDesiredHeight = NO_DESIRED_HEIGHT; - pSoldier->bViewRange = NORMAL_VIEW_RANGE; - pSoldier->bInSector = FALSE; - pSoldier->sGridNo = NOWHERE; - pSoldier->iMuzFlash = -1; - pSoldier->usPendingAnimation = NO_PENDING_ANIMATION; + pSoldier->ubDesiredHeight = NO_DESIRED_HEIGHT; + pSoldier->bViewRange = NORMAL_VIEW_RANGE; + pSoldier->bInSector = FALSE; + pSoldier->sGridNo = NOWHERE; + pSoldier->iMuzFlash = -1; + pSoldier->usPendingAnimation = NO_PENDING_ANIMATION; pSoldier->usPendingAnimation2 = NO_PENDING_ANIMATION; - pSoldier->ubPendingStanceChange = NO_PENDING_STANCE; - pSoldier->ubPendingDirection = NO_PENDING_DIRECTION; - pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION; + pSoldier->ubPendingStanceChange = NO_PENDING_STANCE; + pSoldier->ubPendingDirection = NO_PENDING_DIRECTION; + pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION; pSoldier->bLastRenderVisibleValue = -1; - pSoldier->bBreath = 99; - pSoldier->bBreathMax = 100; - pSoldier->bActive = TRUE; - pSoldier->flags.fShowLocator = FALSE; - pSoldier->sLastTarget = NOWHERE; + pSoldier->bBreath = 99; + pSoldier->bBreathMax = 100; + pSoldier->bActive = TRUE; + pSoldier->flags.fShowLocator = FALSE; + pSoldier->sLastTarget = NOWHERE; pSoldier->sAbsoluteFinalDestination = NOWHERE; - pSoldier->sZLevelOverride = -1; - pSoldier->ubServicePartner = NOBODY; - pSoldier->ubAttackingHand = HANDPOS; - pSoldier->usAnimState = STANDING; - pSoldier->aiData.bInterruptDuelPts = NO_INTERRUPT; - pSoldier->aiData.bMoved = FALSE; + pSoldier->sZLevelOverride = -1; + pSoldier->ubServicePartner = NOBODY; + pSoldier->ubAttackingHand = HANDPOS; + pSoldier->usAnimState = STANDING; + pSoldier->aiData.bInterruptDuelPts = NO_INTERRUPT; + pSoldier->aiData.bMoved = FALSE; pSoldier->ubRobotRemoteHolderID = NOBODY; - pSoldier->aiData.sNoiseGridno = NOWHERE; - pSoldier->ubPrevSectorID = 255; - pSoldier->aiData.bNextPatrolPnt = 1; - pSoldier->bCurrentCivQuote = -1; + pSoldier->aiData.sNoiseGridno = NOWHERE; + pSoldier->ubPrevSectorID = 255; + pSoldier->aiData.bNextPatrolPnt = 1; + pSoldier->bCurrentCivQuote = -1; pSoldier->bCurrentCivQuoteDelta = 0; - pSoldier->uiBattleSoundID = NO_SAMPLE; - pSoldier->aiData.ubXRayedBy = NOBODY; - pSoldier->uiXRayActivatedTime = 0; - pSoldier->bBulletsLeft = 0; + pSoldier->uiBattleSoundID = NO_SAMPLE; + pSoldier->aiData.ubXRayedBy = NOBODY; + pSoldier->uiXRayActivatedTime = 0; + pSoldier->bBulletsLeft = 0; pSoldier->bVehicleUnderRepairID = -1; pSoldier->sFacilityTypeOperated = -1; // HEADROCK HAM 3.6: Facility Operated pSoldier->usChatPartnerID = NOBODY; @@ -2148,12 +2148,10 @@ void InitSoldierStruct( SOLDIERTYPE *pSoldier ) } -BOOLEAN InternalTacticalRemoveSoldier( UINT16 usSoldierIndex, BOOLEAN fRemoveVehicle ) +BOOLEAN InternalTacticalRemoveSoldier( SoldierID usSoldierIndex, BOOLEAN fRemoveVehicle ) { - SOLDIERTYPE * pSoldier; - // Check range of index given - if ( usSoldierIndex < 0 || usSoldierIndex > TOTAL_SOLDIERS-1 ) + if ( usSoldierIndex >= NOBODY ) { // Set debug message @@ -2171,9 +2169,7 @@ BOOLEAN InternalTacticalRemoveSoldier( UINT16 usSoldierIndex, BOOLEAN fRemoveVeh gfUISelectiveTargetFound = FALSE; } - pSoldier = MercPtrs[ usSoldierIndex ]; - - return TacticalRemoveSoldierPointer( pSoldier, fRemoveVehicle ); + return TacticalRemoveSoldierPointer(usSoldierIndex, fRemoveVehicle ); } BOOLEAN TacticalRemoveSoldierPointer( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveVehicle ) @@ -2244,7 +2240,7 @@ BOOLEAN TacticalRemoveSoldierPointer( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveVehi return( TRUE ); } -BOOLEAN TacticalRemoveSoldier( UINT16 usSoldierIndex ) +BOOLEAN TacticalRemoveSoldier( SoldierID usSoldierIndex ) { return( InternalTacticalRemoveSoldier( usSoldierIndex, TRUE ) ); } @@ -3035,7 +3031,7 @@ void ForceSoldierProfileID( SOLDIERTYPE *pSoldier, UINT8 ubProfileID ) SOLDIERTYPE* ReserveTacticalSoldierForAutoresolve( UINT8 ubSoldierClass ) { - INT32 i, iStart, iEnd; + SoldierID i, iStart, iEnd; SOLDIERTYPE *pSoldier; //This code looks for a soldier of specified type that currently exists in tactical and //returns the pointer to that soldier. This is used when copying the exact status of @@ -3053,13 +3049,13 @@ SOLDIERTYPE* ReserveTacticalSoldierForAutoresolve( UINT8 ubSoldierClass ) iEnd = gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; } for( i = iStart; i <= iEnd; ++i ) - { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->bInSector && MercPtrs[ i ]->stats.bLife && !TileIsOutOfBounds(MercPtrs[ i ]->sGridNo)) + { + if( i->bActive && i->bInSector && i->stats.bLife && !TileIsOutOfBounds(i->sGridNo)) { - if( MercPtrs[ i ]->ubSoldierClass == ubSoldierClass ) + if( i->ubSoldierClass == ubSoldierClass ) { //reserve this soldier - MercPtrs[ i ]->sGridNo = NOWHERE; + i->sGridNo = NOWHERE; //Allocate and copy the soldier pSoldier = new SOLDIERTYPE(*MercPtrs[i]); //(SOLDIERTYPE*)MemAlloc( SIZEOF_SOLDIERTYPE ); @@ -3080,7 +3076,7 @@ SOLDIERTYPE* TacticalCreateAdministrator() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3113,7 +3109,7 @@ SOLDIERTYPE* TacticalCreateArmyTroop() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3147,7 +3143,7 @@ SOLDIERTYPE* TacticalCreateEliteEnemy() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3189,7 +3185,7 @@ SOLDIERTYPE* TacticalCreateEnemyTank() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3231,7 +3227,7 @@ SOLDIERTYPE* TacticalCreateEnemyJeep( ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if ( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3274,7 +3270,7 @@ SOLDIERTYPE* TacticalCreateEnemyRobot() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if ( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3317,7 +3313,7 @@ SOLDIERTYPE* TacticalCreateZombie() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3352,7 +3348,7 @@ SOLDIERTYPE* TacticalCreateZombie() SOLDIERTYPE* ReserveTacticalMilitiaSoldierForAutoresolve( UINT8 ubSoldierClass ) { - INT32 i, iStart, iEnd; + SoldierID i, iStart, iEnd; SOLDIERTYPE *pSoldier; // For description look original ReserveTacticalSoldierForAutoresolve() @@ -3360,14 +3356,14 @@ SOLDIERTYPE* ReserveTacticalMilitiaSoldierForAutoresolve( UINT8 ubSoldierClass ) iStart = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; iEnd = gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; - for( i = iStart; i <= iEnd; i++ ) + for( i = iStart; i <= iEnd; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->bInSector && MercPtrs[ i ]->stats.bLife && !TileIsOutOfBounds(MercPtrs[ i ]->sGridNo)) + if( i->bActive && i->bInSector && i->stats.bLife && !TileIsOutOfBounds(i->sGridNo)) { - if( MercPtrs[ i ]->ubSoldierClass == ubSoldierClass ) + if( i->ubSoldierClass == ubSoldierClass ) { //reserve this soldier - MercPtrs[ i ]->sGridNo = NOWHERE; + i->sGridNo = NOWHERE; //Allocate and copy the soldier pSoldier = new SOLDIERTYPE(*MercPtrs[i]); //(SOLDIERTYPE*)MemAlloc( SIZEOF_SOLDIERTYPE ); @@ -3391,7 +3387,7 @@ SOLDIERTYPE* TacticalCreateMilitia( UINT8 ubMilitiaClass, INT16 sX, INT16 sY ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if (gpBattleGroup && @@ -3432,7 +3428,7 @@ SOLDIERTYPE* TacticalCreateCreature( INT8 bCreatureBodyType ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3458,7 +3454,7 @@ SOLDIERTYPE* TacticalCreateArmedCivilian( UINT8 usSoldierClass ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier = NULL; // this needs the covert ops trait, and thus the new trait system @@ -3507,9 +3503,9 @@ SOLDIERTYPE* TacticalCreateCivilian( INT32 sGridNo, UINT8 usCivilianGroup, INT8 if ( guiCurrentScreen == AUTORESOLVE_SCREEN ) return NULL; - UINT8 ubID = NOBODY; - SOLDIERTYPE* pSoldier = NULL; - SOLDIERCREATE_STRUCT MercCreateStruct; + SoldierID ubID = NOBODY; + SOLDIERTYPE* pSoldier = NULL; + SOLDIERCREATE_STRUCT MercCreateStruct; MercCreateStruct.initialize( ); MercCreateStruct.bTeam = CIV_TEAM; @@ -3606,7 +3602,7 @@ SOLDIERTYPE* TacticalCreateEnemyAssassin(UINT8 disguisetype) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; // this needs the covert ops trait, and thus the new trait system @@ -3671,7 +3667,7 @@ SOLDIERTYPE* TacticalCreateBandit() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE * pSoldier; if ( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3862,7 +3858,7 @@ void CreatePrisonerOfWar() } SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubID; + SoldierID ubID; static INT8 bPowBodyType = REGMALE; @@ -3944,7 +3940,7 @@ void CreateDownedPilot( ) while ( TileIsOutOfBounds( sGridNo ) || FindStructure( sGridNo, STRUCTURE_BLOCKSMOVES ) || TERRAIN_IS_WATER( gpWorldLevelData[sGridNo].ubTerrainID ) || GridNoNearPlayerMercs( sGridNo, 25 ) ); SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubID; + SoldierID ubID; MercCreateStruct.initialize( ); MercCreateStruct.bTeam = CIV_TEAM; @@ -4104,9 +4100,9 @@ void RandomizeRelativeLevel( INT8 *pbRelLevel, UINT8 ubSoldierClass ) void QuickCreateProfileMerc( INT8 bTeam, UINT8 ubProfileID ) { // Create guy # X - SOLDIERCREATE_STRUCT MercCreateStruct; - INT16 sWorldX, sWorldY, sSectorX, sSectorY, sGridX, sGridY; - UINT8 ubID; + SOLDIERCREATE_STRUCT MercCreateStruct; + INT16 sWorldX, sWorldY, sSectorX, sSectorY, sGridX, sGridY; + SoldierID ubID; INT32 usMapPos; if ( GetMouseXY( &sGridX, &sGridY ) ) diff --git a/Tactical/Soldier Create.h b/Tactical/Soldier Create.h index dcf458ed..def83992 100644 --- a/Tactical/Soldier Create.h +++ b/Tactical/Soldier Create.h @@ -451,7 +451,7 @@ public: //Original functions currently used throughout the game. -BOOLEAN TacticalRemoveSoldier( UINT16 usSoldierIndex ); +BOOLEAN TacticalRemoveSoldier( SoldierID usSoldierIndex ); BOOLEAN TacticalRemoveSoldierPointer( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveVehicle ); INT8 CalcDifficultyModifier( UINT8 ubSoldierClass ); @@ -460,7 +460,7 @@ void RandomizeNewSoldierStats( SOLDIERCREATE_STRUCT *pCreateStruct ); //Kris: //Modified return type from BOOLEAN to SOLDIERTYPE* -SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ); +SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, SoldierID *pubID ); //Randomly generated enemies used by strategic AI. SOLDIERTYPE* TacticalCreateAdministrator(); @@ -562,7 +562,7 @@ void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass, UIN void QuickCreateProfileMerc( INT8 bTeam, UINT8 ubProfileID ); -BOOLEAN InternalTacticalRemoveSoldier( UINT16 usSoldierIndex, BOOLEAN fRemoveVehicle ); +BOOLEAN InternalTacticalRemoveSoldier( SoldierID usSoldierIndex, BOOLEAN fRemoveVehicle ); //SPECIAL! Certain events in the game can cause profiled NPCs to become enemies. The two cases are //adding Mike and Iggy. We will only add one NPC in any given combat and the conditions for setting @@ -600,4 +600,4 @@ INT32 ChooseHairColor( UINT8 usBodyType, INT32 skin ); // Flugente: set palettes for vest/shirt void SetClothes( SOLDIERTYPE* pSoldier, INT8 aVest, INT8 aPants, INT8 aHair = -1, INT8 aSkin = -1 ); -#endif +#endif diff --git a/Tactical/Soldier Find.cpp b/Tactical/Soldier Find.cpp index 34736ccc..1e153b70 100644 --- a/Tactical/Soldier Find.cpp +++ b/Tactical/Soldier Find.cpp @@ -46,11 +46,8 @@ BOOLEAN IsGridNoInScreenRect( INT32 sGridNo, SGPRect *pRect ); BOOLEAN IsPointInScreenRect( INT16 sXPos, INT16 sYPos, SGPRect *pRect ); void GetSoldierScreenRect( SOLDIERTYPE *pSoldier, SGPRect *pRect ); -// This value is used to keep a small static array of uBID's which are stacked -#define MAX_STACKED_MERCS 10 - -UINT32 gScrollSlideInertiaDirection[ NUM_WORLD_DIRECTIONS ] = +UINT32 gScrollSlideInertiaDirection[ NUM_WORLD_DIRECTIONS ] = { 3, 0, @@ -62,25 +59,29 @@ UINT32 gScrollSlideInertiaDirection[ NUM_WORLD_DIRECTIONS ] = 3, }; + +// This value is used to keep a small static array of uBID's which are stacked +#define MAX_STACKED_MERCS 10 + // Struct used for cycling through multiple mercs per mouse position typedef struct { INT8 bNum; - UINT8 ubIDs[ MAX_STACKED_MERCS ]; + SoldierID ubIDs[ MAX_STACKED_MERCS ]; INT8 bCur; BOOLEAN fUseGridNo; INT32 sUseGridNoGridNo; } SOLDIER_STACK_TYPE; -SOLDIER_STACK_TYPE gSoldierStack; -BOOLEAN gfHandleStack = FALSE; +SOLDIER_STACK_TYPE gSoldierStack; +BOOLEAN gfHandleStack = FALSE; -extern BOOLEAN gUIActionModeChangeDueToMouseOver; -extern UINT32 guiUITargetSoldierId; +extern BOOLEAN gUIActionModeChangeDueToMouseOver; +extern UINT32 guiUITargetSoldierId; -BOOLEAN FindSoldierFromMouse( UINT16 *pusSoldierIndex, UINT32 *pMercFlags ) +BOOLEAN FindSoldierFromMouse( SoldierID *pusSoldierIndex, UINT32 *pMercFlags ) { INT32 usMapPos; @@ -97,7 +98,7 @@ BOOLEAN FindSoldierFromMouse( UINT16 *pusSoldierIndex, UINT32 *pMercFlags ) return( FALSE ); } -BOOLEAN SelectiveFindSoldierFromMouse( UINT16 *pusSoldierIndex, UINT32 *pMercFlags ) +BOOLEAN SelectiveFindSoldierFromMouse( SoldierID *pusSoldierIndex, UINT32 *pMercFlags ) { INT32 usMapPos; @@ -115,15 +116,15 @@ BOOLEAN SelectiveFindSoldierFromMouse( UINT16 *pusSoldierIndex, UINT32 *pMercFla } -UINT32 GetSoldierFindFlags( UINT16 ubID ) +UINT32 GetSoldierFindFlags( SoldierID ubID ) { UINT32 MercFlags = 0; SOLDIERTYPE *pSoldier; // Get pSoldier! - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; - // FInd out and set flags + // Find out and set flags if ( ubID == gusSelectedSoldier ) { MercFlags |= SELECTED_MERC; @@ -136,12 +137,12 @@ UINT32 GetSoldierFindFlags( UINT16 ubID ) } else { - // It's our own merc - MercFlags |= OWNED_MERC; + // It's our own merc + MercFlags |= OWNED_MERC; if ( pSoldier->bAssignment < ON_DUTY ) { - MercFlags |= ONDUTY_MERC; + MercFlags |= ONDUTY_MERC; } } } @@ -191,20 +192,20 @@ extern BOOLEAN CheckVideoObjectScreenCoordinateInData( HVOBJECT hSrcVObject, UIN // THIS FUNCTION IS CALLED FAIRLY REGULARLY -BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, UINT32 uiFlags ) +BOOLEAN FindSoldier( INT32 sGridNo, SoldierID *pusSoldierIndex, UINT32 *pMercFlags, UINT32 uiFlags ) { - UINT32 cnt; + UINT32 cnt; SOLDIERTYPE *pSoldier; - SGPRect aRect; - BOOLEAN fSoldierFound = FALSE; - INT16 sXMapPos, sYMapPos, sScreenX, sScreenY; - INT16 sMaxScreenMercY, sHeighestMercScreenY = -32000; - BOOLEAN fDoFull; - UINT8 ubBestMerc = NOBODY; - UINT16 usAnimSurface; - INT32 iMercScreenX, iMercScreenY; - BOOLEAN fInScreenRect = FALSE; - BOOLEAN fInGridNo = FALSE; + SGPRect aRect; + BOOLEAN fSoldierFound = FALSE; + INT16 sXMapPos, sYMapPos, sScreenX, sScreenY; + INT16 sMaxScreenMercY, sHeighestMercScreenY = -32000; + BOOLEAN fDoFull; + SoldierID ubBestMerc = NOBODY; + UINT16 usAnimSurface; + INT32 iMercScreenX, iMercScreenY; + BOOLEAN fInScreenRect = FALSE; + BOOLEAN fInGridNo = FALSE; *pusSoldierIndex = NOBODY; @@ -227,8 +228,8 @@ BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, for ( cnt = 0; cnt < guiNumMercSlots; cnt++ ) { pSoldier = MercSlots[ cnt ]; - fInScreenRect = FALSE; - fInGridNo = FALSE; + fInScreenRect = FALSE; + fInGridNo = FALSE; if ( pSoldier != NULL ) { @@ -339,7 +340,7 @@ BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, if ( usAnimSurface != INVALID_ANIMATION_SURFACE ) { iMercScreenX = (INT32)( sScreenX - aRect.iLeft ); - iMercScreenY = (INT32)( -1 * ( sScreenY - aRect.iBottom ) ); + iMercScreenY = (INT32)( -1 * ( sScreenY - aRect.iBottom ) ); if ( !CheckVideoObjectScreenCoordinateInData( gAnimSurfaceDatabase[ usAnimSurface ].hVideoObject, pSoldier->usAniFrame, iMercScreenX, iMercScreenY ) ) { @@ -359,7 +360,7 @@ BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, { gfHandleStack = TRUE; - // Add this one! + // Add this one! gSoldierStack.ubIDs[ gSoldierStack.bNum ] = pSoldier->ubID; gSoldierStack.bNum++; @@ -430,7 +431,7 @@ BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, if ( fSoldierFound && ubBestMerc != NOBODY ) { - *pusSoldierIndex = (UINT16)ubBestMerc; + *pusSoldierIndex = ubBestMerc; (*pMercFlags) = GetSoldierFindFlags( ubBestMerc ); @@ -460,8 +461,8 @@ BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, BOOLEAN CycleSoldierFindStack( INT32 usMapPos ) { - UINT16 usSoldierIndex; - UINT32 uiMercFlags; + SoldierID usSoldierIndex; + UINT32 uiMercFlags; // Have we initalized for this yet? if ( !gfHandleStack ) @@ -521,22 +522,21 @@ BOOLEAN CycleSoldierFindStack( INT32 usMapPos ) SOLDIERTYPE * SimpleFindSoldier( INT32 sGridNo, INT8 bLevel ) { - UINT8 ubID; + SoldierID ubID = WhoIsThere2( sGridNo, bLevel ); - ubID = WhoIsThere2( sGridNo, bLevel ); - if ( ubID == NOBODY ) + if ( ubID >= NOBODY ) { return( NULL ); } else { - return( MercPtrs[ ubID ] ); + return( ubID ); } } -BOOLEAN IsValidTargetMerc( UINT8 ubSoldierID ) +BOOLEAN IsValidTargetMerc( SoldierID ubSoldierID ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; + SOLDIERTYPE *pSoldier = ubSoldierID; // CHECK IF ACTIVE! @@ -785,14 +785,9 @@ BOOLEAN GridNoOnScreen( INT32 sGridNo ) } -BOOLEAN SoldierOnScreen( UINT16 usID ) +BOOLEAN SoldierOnScreen( SoldierID usID ) { - SOLDIERTYPE *pSoldier; - - // Get pointer of soldier - pSoldier = MercPtrs[ usID ]; - - return( GridNoOnScreen( pSoldier->sGridNo ) ); + return( GridNoOnScreen( usID->sGridNo ) ); } @@ -803,7 +798,7 @@ BOOLEAN SoldierOnVisibleWorldTile( SOLDIERTYPE *pSoldier ) -BOOLEAN SoldierLocationRelativeToScreen( INT32 sGridNo, UINT16 usReasonID, INT8 *pbDirection, UINT32 *puiScrollFlags ) +BOOLEAN SoldierLocationRelativeToScreen( INT32 sGridNo, INT8 *pbDirection, UINT32 *puiScrollFlags ) { INT16 sWorldX; INT16 sWorldY; @@ -1006,7 +1001,7 @@ BOOLEAN FindRelativeSoldierPosition( SOLDIERTYPE *pSoldier, UINT16 *usFlags, INT } // VERY quickly finds a soldier at gridno , ( that is visible ) -UINT8 QuickFindSoldier( INT32 sGridNo ) +SoldierID QuickFindSoldier( INT32 sGridNo ) { UINT32 cnt; SOLDIERTYPE *pSoldier = NULL; @@ -1020,7 +1015,7 @@ UINT8 QuickFindSoldier( INT32 sGridNo ) { if ( pSoldier->sGridNo == sGridNo && pSoldier->bVisible != -1 ) { - return( (UINT8)cnt ); + return( cnt ); } } diff --git a/Tactical/Soldier Find.h b/Tactical/Soldier Find.h index e4e64dc4..f57b7c39 100644 --- a/Tactical/Soldier Find.h +++ b/Tactical/Soldier Find.h @@ -30,17 +30,17 @@ class SOLDIERTYPE; #define FINDSOLDIERSELECTIVESAMELEVEL( l ) ( ( ( FIND_SOLDIER_SELECTIVE | FIND_SOLDIER_SAMELEVEL ) | ( l << 16 ) ) ) -BOOLEAN FindSoldierFromMouse( UINT16 *pusSoldierIndex, UINT32 *pMercFlags ); -BOOLEAN SelectiveFindSoldierFromMouse( UINT16 *pusSoldierIndex, UINT32 *pMercFlags ); -BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags , UINT32 uiFlags ); +BOOLEAN FindSoldierFromMouse( SoldierID *pusSoldierIndex, UINT32 *pMercFlags ); +BOOLEAN SelectiveFindSoldierFromMouse( SoldierID *pusSoldierIndex, UINT32 *pMercFlags ); +BOOLEAN FindSoldier( INT32 sGridNo, SoldierID *pusSoldierIndex, UINT32 *pMercFlags , UINT32 uiFlags ); SOLDIERTYPE * SimpleFindSoldier( INT32 sGridNo, INT8 bLevel ); BOOLEAN CycleSoldierFindStack( INT32 usMapPos ); BOOLEAN GridNoOnScreen( INT32 sGridNo ); -BOOLEAN SoldierOnScreen( UINT16 usID ); -BOOLEAN SoldierLocationRelativeToScreen( INT32 sGridNo, UINT16 usReasonID, INT8 *pbDirection, UINT32 *puiScrollFlags ); +BOOLEAN SoldierOnScreen( SoldierID usID ); +BOOLEAN SoldierLocationRelativeToScreen( INT32 sGridNo, INT8 *pbDirection, UINT32 *puiScrollFlags ); void GetSoldierScreenPos( SOLDIERTYPE *pSoldier, INT16 *psScreenX, INT16 *psScreenY ); void GetSoldierAnimDims( SOLDIERTYPE *pSoldier, INT16 *psHeight, INT16 *psWidth ); void GetSoldierAnimOffsets( SOLDIERTYPE *pSoldier, INT16 *sOffsetX, INT16 *sOffsetY ); @@ -48,9 +48,9 @@ void GetSoldierTRUEScreenPos( SOLDIERTYPE *pSoldier, INT16 *psScreenX, INT16 *ps BOOLEAN IsPointInSoldierBoundingBox( SOLDIERTYPE *pSoldier, INT16 sX, INT16 sY ); BOOLEAN FindRelativeSoldierPosition( SOLDIERTYPE *pSoldier, UINT16 *usFlags, INT16 sX, INT16 sY ); -UINT8 QuickFindSoldier( INT32 sGridNo ); +SoldierID QuickFindSoldier( INT32 sGridNo ); void GetGridNoScreenPos( INT32 sGridNo, UINT8 ubLevel, INT16 *psScreenX, INT16 *psScreenY ); -#endif +#endif diff --git a/Tactical/Soldier Init List.cpp b/Tactical/Soldier Init List.cpp index 15d4121c..ee79cfe4 100644 --- a/Tactical/Soldier Init List.cpp +++ b/Tactical/Soldier Init List.cpp @@ -318,8 +318,8 @@ BOOLEAN LoadSoldiersFromMap(INT8** hBuffer, FLOAT dMajorMapVersion, UINT8 ubMino AssertMsg(0, "Failed to allocate memory for new basic placement in LoadSoldiersFromMap."); return(FALSE); } - Assert(cnt < 256); - pNode->ubNodeID = (UINT8)cnt; + Assert(cnt < MAX_INDIVIDUALS); + pNode->ubNodeID = cnt; if(tempBasicPlacement.fDetailedPlacement) { // Add the static detailed placement information in the same newly created node as the basic placement. Read static detailed placement from file. @@ -369,7 +369,7 @@ BOOLEAN SaveSoldiersToMap(HWFILE hFile, FLOAT dMajorMapVersion, UINT8 ubMinorMap { if(!curr) return(FALSE); - curr->ubNodeID = (UINT8)i; + curr->ubNodeID = i; curr->pBasicPlacement->Save(hFile, dMajorMapVersion, ubMinorMapVersion); if(curr->pBasicPlacement->fDetailedPlacement) { @@ -577,13 +577,12 @@ void SortSoldierInitList() } extern FLOAT gAmbushRadiusModifier; - BOOLEAN AddPlacementToWorld( SOLDIERINITNODE *curr, GROUP *pGroup = NULL ) { UINT8 ubProfile; SOLDIERCREATE_STRUCT tempDetailedPlacement; SOLDIERTYPE *pSoldier; - UINT8 ubID; + SoldierID ubID; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddPlacementToWorld")); // First check if this guy has a profile and if so check his location such that it matches! @@ -874,12 +873,12 @@ void AddPlacementToWorldByProfileID( UINT8 ubProfile ) } } -UINT8 AddSoldierInitListTeamToWorld( INT8 bTeam, UINT8 ubMaxNum ) +UINT16 AddSoldierInitListTeamToWorld( INT8 bTeam, UINT16 ubMaxNum ) { - UINT8 ubNumAdded = 0; + UINT16 ubNumAdded = 0; SOLDIERINITNODE *mark; - UINT8 ubSlotsToFill; - UINT8 ubSlotsAvailable; + UINT16 ubSlotsToFill; + UINT16 ubSlotsAvailable; SOLDIERINITNODE *curr; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierInitListTeamToWorld")); @@ -1047,21 +1046,21 @@ UINT8 AddSoldierInitListTeamToWorld( INT8 bTeam, UINT8 ubMaxNum ) return ubNumAdded; } -void AddSoldierInitListEnemyDefenceSoldiers( UINT8 ubTotalAdmin, UINT8 ubTotalTroops, UINT8 ubTotalElite, UINT8 ubTotalRobots, UINT8 ubTotalTanks, UINT8 ubTotalJeeps ) +void AddSoldierInitListEnemyDefenceSoldiers( UINT16 ubTotalAdmin, UINT16 ubTotalTroops, UINT16 ubTotalElite, UINT16 ubTotalRobots, UINT16 ubTotalTanks, UINT16 ubTotalJeeps ) { SOLDIERINITNODE *mark; SOLDIERINITNODE *curr; INT32 iRandom; - UINT8 ubMaxNum; - UINT8 ubRobotPDSlots = 0, ubRobotDSlots = 0, ubRobotPSlots = 0, ubRobotBSlots = 0; - UINT8 ubElitePDSlots = 0, ubEliteDSlots = 0, ubElitePSlots = 0, ubEliteBSlots = 0; - UINT8 ubTroopPDSlots = 0, ubTroopDSlots = 0, ubTroopPSlots = 0, ubTroopBSlots = 0; - UINT8 ubAdminPDSlots = 0, ubAdminDSlots = 0, ubAdminPSlots = 0, ubAdminBSlots = 0; - UINT8 ubTankPDSlots = 0, ubTankDSlots = 0, ubTankPSlots = 0, ubTankBSlots = 0; - UINT8 ubJeepPDSlots = 0, ubJeepDSlots = 0, ubJeepPSlots = 0, ubJeepBSlots = 0; - UINT8 ubFreeSlots; - UINT8 *pCurrSlots=NULL; - UINT8 *pCurrTotal=NULL; + UINT16 ubMaxNum; + UINT16 ubRobotPDSlots = 0, ubRobotDSlots = 0, ubRobotPSlots = 0, ubRobotBSlots = 0; + UINT16 ubElitePDSlots = 0, ubEliteDSlots = 0, ubElitePSlots = 0, ubEliteBSlots = 0; + UINT16 ubTroopPDSlots = 0, ubTroopDSlots = 0, ubTroopPSlots = 0, ubTroopBSlots = 0; + UINT16 ubAdminPDSlots = 0, ubAdminDSlots = 0, ubAdminPSlots = 0, ubAdminBSlots = 0; + UINT16 ubTankPDSlots = 0, ubTankDSlots = 0, ubTankPSlots = 0, ubTankBSlots = 0; + UINT16 ubJeepPDSlots = 0, ubJeepDSlots = 0, ubJeepPSlots = 0, ubJeepBSlots = 0; + UINT16 ubFreeSlots; + UINT16 *pCurrSlots=NULL; + UINT16 *pCurrTotal=NULL; UINT8 ubCurrClass; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierInitListEnemyDefenceSoldiers")); @@ -1607,19 +1606,19 @@ void AddSoldierInitListEnemyDefenceSoldiers( UINT8 ubTotalAdmin, UINT8 ubTotalTr //sector, then they get to use the enemy placements. However, we remove any orders from //placements containing RNDPTPATROL or POINTPATROL orders, as well as remove any detailed //placement information. -void AddSoldierInitListMilitia( UINT8 ubNumGreen, UINT8 ubNumRegs, UINT8 ubNumElites ) +void AddSoldierInitListMilitia( UINT16 ubNumGreen, UINT16 ubNumRegs, UINT16 ubNumElites ) { SOLDIERINITNODE *mark; SOLDIERINITNODE *curr; INT32 iRandom; - UINT8 ubMaxNum; + UINT16 ubMaxNum; BOOLEAN fDoPlacement; - UINT8 ubEliteSlots = 0; - UINT8 ubRegSlots = 0; - UINT8 ubGreenSlots = 0; - UINT8 ubFreeSlots; - UINT8 *pCurrSlots=NULL; - UINT8 *pCurrTotal=NULL; + UINT16 ubEliteSlots = 0; + UINT16 ubRegSlots = 0; + UINT16 ubGreenSlots = 0; + UINT16 ubFreeSlots; + UINT16 *pCurrSlots=NULL; + UINT16 *pCurrTotal=NULL; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierInitListMilitia")); @@ -1892,9 +1891,9 @@ void AddSoldierInitListMilitia( UINT8 ubNumGreen, UINT8 ubNumRegs, UINT8 ubNumEl { // determine how many militia have already been created in this sector (this can also have happened in another function), so count all active ones UINT16 tacticalmilitia = 0; - for ( UINT16 i = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; i <= gTacticalStatus.Team[MILITIA_TEAM ].bLastID; ++i ) + for ( SoldierID i = gTacticalStatus.Team[MILITIA_TEAM].bFirstID; i <= gTacticalStatus.Team[MILITIA_TEAM ].bLastID; ++i ) { - if ( MercPtrs[i]->bInSector && MercPtrs[i]->bActive ) + if ( i->bInSector && i->bActive ) ++tacticalmilitia; } @@ -1955,22 +1954,22 @@ void AddSoldierInitListMilitia( UINT8 ubNumGreen, UINT8 ubNumRegs, UINT8 ubNumEl } } -void AddSoldierInitListCreatures( BOOLEAN fQueen, UINT8 ubNumLarvae, UINT8 ubNumInfants, - UINT8 ubNumYoungMales, UINT8 ubNumYoungFemales, UINT8 ubNumAdultMales, - UINT8 ubNumAdultFemales ) +void AddSoldierInitListCreatures( BOOLEAN fQueen, UINT16 ubNumLarvae, UINT16 ubNumInfants, + UINT16 ubNumYoungMales, UINT16 ubNumYoungFemales, UINT16 ubNumAdultMales, + UINT16 ubNumAdultFemales ) { SOLDIERINITNODE *curr; INT32 iRandom; - UINT8 ubFreeSlots; + UINT16 ubFreeSlots; BOOLEAN fDoPlacement; - UINT8 ubNumCreatures; + UINT16 ubNumCreatures; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierInitListCreatures")); SortSoldierInitList(); //Okay, if we have a queen, place her first. She MUST have a special placement, else //we can't use anything. - ubNumCreatures = (UINT8)(ubNumLarvae + ubNumInfants + ubNumYoungMales + ubNumYoungFemales + ubNumAdultMales + ubNumAdultFemales); + ubNumCreatures = (ubNumLarvae + ubNumInfants + ubNumYoungMales + ubNumYoungFemales + ubNumAdultMales + ubNumAdultFemales); if( fQueen ) { curr = gSoldierInitHead; @@ -2110,12 +2109,12 @@ void AddSoldierInitListCreatures( BOOLEAN fQueen, UINT8 ubNumLarvae, UINT8 ubNum } } -void AddSoldierInitListOtherCreatures( UINT8 usNum ) +void AddSoldierInitListOtherCreatures( UINT16 usNum ) { SOLDIERINITNODE *curr; - UINT8 ubFreeSlots; + UINT16 ubFreeSlots; BOOLEAN fDoPlacement; - UINT8 ubNumCreatures = usNum; + UINT16 ubNumCreatures = usNum; DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "AddSoldierInitListBloodcats" ) ); @@ -2292,10 +2291,9 @@ void UseEditorAlternateList() //if the map was loaded again! void EvaluateDeathEffectsToSoldierInitList( SOLDIERTYPE *pSoldier ) { - SOLDIERINITNODE *curr; - UINT8 ubNodeID; - curr = gSoldierInitHead; - ubNodeID = 0; + UINT16 ubNodeID = 0; + SOLDIERINITNODE* curr = gSoldierInitHead; + if( pSoldier->bTeam == MILITIA_TEAM ) return; while( curr ) @@ -2319,7 +2317,7 @@ void EvaluateDeathEffectsToSoldierInitList( SOLDIERTYPE *pSoldier ) } } -void RemoveDetailedPlacementInfo( UINT8 ubNodeID ) +void RemoveDetailedPlacementInfo( UINT16 ubNodeID ) { SOLDIERINITNODE *curr; curr = gSoldierInitHead; @@ -2345,7 +2343,7 @@ BOOLEAN SaveSoldierInitListLinks( HWFILE hfile ) { SOLDIERINITNODE *curr; UINT32 uiNumBytesWritten; - UINT8 ubSlots = 0; + UINT16 ubSlots = 0; //count the number of soldier init nodes... curr = gSoldierInitHead; @@ -2355,8 +2353,8 @@ BOOLEAN SaveSoldierInitListLinks( HWFILE hfile ) curr = curr->next; } //...and save it. - FileWrite( hfile, &ubSlots, 1, &uiNumBytesWritten ); - if( uiNumBytesWritten != 1 ) + FileWrite( hfile, &ubSlots, 2, &uiNumBytesWritten ); + if( uiNumBytesWritten != 2 ) { return FALSE; } @@ -2368,13 +2366,13 @@ BOOLEAN SaveSoldierInitListLinks( HWFILE hfile ) { curr->ubSoldierID = 0; } - FileWrite( hfile, &curr->ubNodeID, 1, &uiNumBytesWritten ); - if( uiNumBytesWritten != 1 ) + FileWrite( hfile, &curr->ubNodeID, 2, &uiNumBytesWritten ); + if( uiNumBytesWritten != 2 ) { return FALSE; } - FileWrite( hfile, &curr->ubSoldierID, 1, &uiNumBytesWritten ); - if( uiNumBytesWritten != 1 ) + FileWrite( hfile, &curr->ubSoldierID, 2, &uiNumBytesWritten ); + if( uiNumBytesWritten != 2 ) { return FALSE; } @@ -2387,22 +2385,23 @@ BOOLEAN LoadSoldierInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT16 ubSlots; + UINT16 ubSoldierID, ubNodeID; - FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSlots, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } while( ubSlots-- ) { - FileRead( hfile, &ubNodeID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubNodeID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } @@ -2466,7 +2465,7 @@ void AddSoldierInitListBloodcats() else { //We don't yet know the number of bloodcat placements in this sector so //count them now, and permanently record it. - INT8 bBloodCatPlacements = 0; + INT16 bBloodCatPlacements = 0; curr = gSoldierInitHead; while( curr ) { @@ -2514,11 +2513,11 @@ void AddSoldierInitListBloodcats() } if( pSector->bBloodCats > 0 ) { //Add them to the world now... - UINT8 ubNumAdded = 0; - UINT8 ubMaxNum = (UINT8)pSector->bBloodCats; + UINT16 ubNumAdded = 0; + UINT16 ubMaxNum = (UINT16)pSector->bBloodCats; SOLDIERINITNODE *mark; - UINT8 ubSlotsToFill; - UINT8 ubSlotsAvailable; + UINT16 ubSlotsToFill; + UINT16 ubSlotsAvailable; SOLDIERINITNODE *curr; //Sort the list in the following manner: @@ -2660,7 +2659,7 @@ void AddProfilesUsingProfileInsertionData() if( !pSoldier ) { //Create a new soldier, as this one doesn't exist SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubID; + SoldierID ubID; //Set up the create struct so that we can properly create the profile soldier. MercCreateStruct.initialize(); @@ -2798,22 +2797,23 @@ BOOLEAN NewWayOfLoadingEnemySoldierInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT16 ubSlots; + UINT16 ubSoldierID, ubNodeID; - FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSlots, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } while( ubSlots-- ) { - FileRead( hfile, &ubNodeID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubNodeID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } @@ -2844,22 +2844,23 @@ BOOLEAN NewWayOfLoadingCivilianInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT16 ubSlots; + UINT16 ubSoldierID, ubNodeID; - FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSlots, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } while( ubSlots-- ) { - FileRead( hfile, &ubNodeID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubNodeID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } @@ -2890,22 +2891,23 @@ BOOLEAN LookAtButDontProcessEnemySoldierInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT16 ubSlots; + UINT16 ubSoldierID, ubNodeID; - FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSlots, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } while( ubSlots-- ) { - FileRead( hfile, &ubNodeID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubNodeID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } @@ -2981,12 +2983,12 @@ void StripEnemyDetailedPlacementsIfSectorWasPlayerLiberated() //#define CENTRAL_GRIDNO 13202 //#define CENTRAL_RADIUS 30 -void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNumGreen, UINT8 ubNumReg, UINT8 ubNumElites ) +void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT16 ubNumGreen, UINT16 ubNumReg, UINT16 ubNumElites ) { SOLDIERTYPE *pSoldier; MAPEDGEPOINTINFO MapEdgepointInfo; - UINT8 ubCurrSlot; - UINT8 ubTotalSoldiers; + UINT16 ubCurrSlot; + UINT16 ubTotalSoldiers; UINT8 bDesiredDirection=0; ubTotalSoldiers = ubNumGreen + ubNumReg + ubNumElites; @@ -3071,7 +3073,7 @@ void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNu } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if( ubNumReg && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumReg) ) + else if( ubNumReg && (UINT16)Random( ubTotalSoldiers ) < (ubNumElites + ubNumReg) ) { ubNumReg--; ubTotalSoldiers--; @@ -3111,7 +3113,7 @@ void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNu } UpdateMercInSector( pSoldier, gWorldSectorX, gWorldSectorY, 0 ); } - else if( ubNumGreen && (UINT8)Random( ubTotalSoldiers ) < (UINT8)(ubNumElites + ubNumReg + ubNumGreen) ) + else if( ubNumGreen && (UINT16)Random( ubTotalSoldiers ) < (UINT16)(ubNumElites + ubNumReg + ubNumGreen) ) { ubNumGreen--; ubTotalSoldiers--; @@ -3203,10 +3205,11 @@ void SectorAddAssassins( INT16 sMapX, INT16 sMapY, INT16 sMapZ ) // count current number of civilians UINT16 numberofcivs = 0; SOLDIERTYPE* pTeamSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - INT32 lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier) + SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pTeamSoldier = cnt; // check if teamsoldier exists in this sector if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->sSectorX == sMapX && pTeamSoldier->sSectorY == sMapY && pTeamSoldier->bSectorZ == sMapZ ) ++numberofcivs; @@ -3217,7 +3220,7 @@ void SectorAddAssassins( INT16 sMapX, INT16 sMapY, INT16 sMapZ ) return; // now count militia, and which type (green, regular, elite) is most numerous - that will be the best type to blend in - UINT8 militiacnt = MilitiaInSectorOfRank( sMapX, sMapY, GREEN_MILITIA ); + UINT16 militiacnt = MilitiaInSectorOfRank( sMapX, sMapY, GREEN_MILITIA ); UINT8 militiadisguise = GREEN_MILITIA; if ( MilitiaInSectorOfRank( sMapX, sMapY, REGULAR_MILITIA ) > militiacnt ) { @@ -3274,10 +3277,11 @@ void SectorAddPrisonersofWar( INT16 sMapX, INT16 sMapY, INT16 sMapZ ) UINT16 numberofcivs = 0; UINT16 numberofpows = 0; SOLDIERTYPE* pTeamSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - INT32 lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier) + SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ CIV_TEAM ].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pTeamSoldier = cnt; // check if teamsoldier exists in this sector if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->sSectorX == sMapX && pTeamSoldier->sSectorY == sMapY && pTeamSoldier->bSectorZ == sMapZ ) ++numberofcivs; @@ -3288,7 +3292,7 @@ void SectorAddPrisonersofWar( INT16 sMapX, INT16 sMapY, INT16 sMapZ ) } // we can't spawn if all civilian slots are already taken (we leave a bit of reserve for more important civs) - UINT8 maxcivs = max(0, gGameExternalOptions.ubGameMaximumNumberOfCivilians - 3); + UINT16 maxcivs = max(0, gGameExternalOptions.ubGameMaximumNumberOfCivilians - 3); for (UINT16 i = numberofpows; i < numprisoners; ++i) { @@ -3325,4 +3329,4 @@ void SectorAddDownedPilot( INT16 sMapX, INT16 sMapY, INT16 sMapZ ) // remove the flag. We can only find the pilot the first time we visit this sector after the heli was shut down pSector->usSectorInfoFlag &= ~SECTORINFO_ENEMYHELI_SHOTDOWN; } -} +} diff --git a/Tactical/Soldier Init List.h b/Tactical/Soldier Init List.h index d501c910..4774bd97 100644 --- a/Tactical/Soldier Init List.h +++ b/Tactical/Soldier Init List.h @@ -6,8 +6,8 @@ typedef struct SOLDIERINITNODE { - UINT8 ubNodeID; - UINT8 ubSoldierID; + UINT16 ubNodeID; + UINT16 ubSoldierID; BASIC_SOLDIERCREATE_STRUCT *pBasicPlacement; SOLDIERCREATE_STRUCT *pDetailedPlacement; SOLDIERTYPE *pSoldier; @@ -39,14 +39,14 @@ SOLDIERINITNODE* AddBasicPlacementToSoldierInitList( BASIC_SOLDIERCREATE_STRUCT void RemoveSoldierNodeFromInitList( SOLDIERINITNODE *pNode ); SOLDIERINITNODE* FindSoldierInitNodeWithID( UINT16 usID ); -UINT8 AddSoldierInitListTeamToWorld( INT8 bTeam, UINT8 ubMaxNum ); -void AddSoldierInitListEnemyDefenceSoldiers( UINT8 ubTotalAdmin, UINT8 ubTotalTroops, UINT8 ubTotalElite, UINT8 ubTotalRobots, UINT8 ubTotalTanks, UINT8 ubTotalJeeps ); -void AddSoldierInitListCreatures( BOOLEAN fQueen, UINT8 ubNumLarvae, UINT8 ubNumInfants, - UINT8 ubNumYoungMales, UINT8 ubNumYoungFemales, UINT8 ubNumAdultMales, - UINT8 ubNumAdultFemales ); -void AddSoldierInitListOtherCreatures( UINT8 usNum ); -void AddSoldierInitListMilitia( UINT8 ubNumGreen, UINT8 ubNumReg, UINT8 ubNumElites ); -void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNumGreen, UINT8 ubNumReg, UINT8 ubNumElites ); +UINT16 AddSoldierInitListTeamToWorld( INT8 bTeam, UINT16 ubMaxNum ); +void AddSoldierInitListEnemyDefenceSoldiers( UINT16 ubTotalAdmin, UINT16 ubTotalTroops, UINT16 ubTotalElite, UINT16 ubTotalRobots, UINT16 ubTotalTanks, UINT16 ubTotalJeeps ); +void AddSoldierInitListCreatures( BOOLEAN fQueen, UINT16 ubNumLarvae, UINT16 ubNumInfants, + UINT16 ubNumYoungMales, UINT16 ubNumYoungFemales, UINT16 ubNumAdultMales, + UINT16 ubNumAdultFemales ); +void AddSoldierInitListOtherCreatures( UINT16 usNum ); +void AddSoldierInitListMilitia( UINT16 ubNumGreen, UINT16 ubNumReg, UINT16 ubNumElites ); +void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT16 ubNumGreen, UINT16 ubNumReg, UINT16 ubNumElites ); void AddSoldierInitListBloodcats(); @@ -55,7 +55,7 @@ void UseEditorAlternateList(); void AddPlacementToWorldByProfileID( UINT8 ubProfile ); void EvaluateDeathEffectsToSoldierInitList( SOLDIERTYPE *pSoldier ); -void RemoveDetailedPlacementInfo( UINT8 ubNodeID ); +void RemoveDetailedPlacementInfo( UINT16 ubNodeID ); void AddProfilesUsingProfileInsertionData(); void AddProfilesNotUsingProfileInsertionData(); @@ -69,4 +69,4 @@ void SectorAddPrisonersofWar( INT16 sMapX, INT16 sMapY, INT16 sMapZ ); // Flugente: decide wether to add a downed pilot if a helicopter was shot down here void SectorAddDownedPilot( INT16 sMapX, INT16 sMapY, INT16 sMapZ ); -#endif +#endif diff --git a/Tactical/Soldier Profile.cpp b/Tactical/Soldier Profile.cpp index 6dc342a4..68019ca6 100644 --- a/Tactical/Soldier Profile.cpp +++ b/Tactical/Soldier Profile.cpp @@ -1530,7 +1530,7 @@ INT16 CalcMedicalDeposit( MERCPROFILESTRUCT * pProfile ) SOLDIERTYPE * FindSoldierByProfileID( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly ) { - UINT8 ubLoop, ubLoopLimit; + UINT16 ubLoop, ubLoopLimit; SOLDIERTYPE * pSoldier; // sevenfm: fix for last soldier in player team @@ -1559,19 +1559,19 @@ SOLDIERTYPE * FindSoldierByProfileID( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnl SOLDIERTYPE *ChangeSoldierTeam( SOLDIERTYPE *pSoldier, UINT8 ubTeam ) { - UINT8 ubID; - SOLDIERTYPE *pNewSoldier = NULL; + SoldierID ubID; + SOLDIERTYPE *pNewSoldier = NULL; SOLDIERCREATE_STRUCT MercCreateStruct; - UINT32 cnt; - INT32 sOldGridNo; + UINT32 cnt; + INT32 sOldGridNo; - UINT8 ubOldID; - UINT32 uiOldUniqueId; + SoldierID ubOldID; + UINT32 uiOldUniqueId; - UINT32 uiSlot; - SOLDIERTYPE *pGroupMember; + UINT32 uiSlot; + SOLDIERTYPE *pGroupMember; - BOOLEAN success; + BOOLEAN success; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("ChangeSoldierTeam")); @@ -1713,7 +1713,7 @@ SOLDIERTYPE *ChangeSoldierTeam( SOLDIERTYPE *pSoldier, UINT8 ubTeam ) // Set insertion gridNo - pNewSoldier->sInsertionGridNo = sOldGridNo; + pNewSoldier->sInsertionGridNo = sOldGridNo; if ( gfPotentialTeamChangeDuringDeath ) { @@ -2717,11 +2717,10 @@ void OverwriteMercOpinionsWithXMLData( UINT32 uiLoop ) // SANDRO - added function INT8 CheckMercsNearForCharTraits( UINT8 ubProfileID, INT8 bCharTraitID ) { - INT8 bNumber = 0; - UINT32 uiLoop; - SOLDIERTYPE * pSoldier; - SOLDIERTYPE * pTeammate; - BOOLEAN fOnlyOneException = FALSE; + INT8 bNumber = 0; + SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pTeammate; + BOOLEAN fOnlyOneException = FALSE; pSoldier = FindSoldierByProfileID( ubProfileID, FALSE ); if (!pSoldier || !( pSoldier->bActive ) || !( pSoldier->bInSector ) ) @@ -2729,9 +2728,9 @@ INT8 CheckMercsNearForCharTraits( UINT8 ubProfileID, INT8 bCharTraitID ) return( -1 ); } - for ( uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; uiLoop++) + for ( SoldierID uiLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++uiLoop ) { - pTeammate = MercPtrs[ uiLoop ]; + pTeammate = uiLoop; if ( pTeammate == NULL ) { continue; diff --git a/Tactical/Soldier Tile.cpp b/Tactical/Soldier Tile.cpp index f4de60f0..76d25cb0 100644 --- a/Tactical/Soldier Tile.cpp +++ b/Tactical/Soldier Tile.cpp @@ -96,8 +96,6 @@ void OutputDebugInfoForTurnBasedNextTileWaiting( SOLDIERTYPE * pSoldier ) void SetDelayedTileWaiting( SOLDIERTYPE *pSoldier, INT32 sCauseGridNo, INT8 bValue ) { - UINT8 ubPerson; - // Cancel AI Action // CancelAIAction( pSoldier, TRUE ); @@ -108,7 +106,7 @@ void SetDelayedTileWaiting( SOLDIERTYPE *pSoldier, INT32 sCauseGridNo, INT8 bVal // ATE: Now update realtime movement speed.... // check if guy exists here... - ubPerson = WhoIsThere2( sCauseGridNo, pSoldier->pathing.bLevel ); + SoldierID ubPerson = WhoIsThere2( sCauseGridNo, pSoldier->pathing.bLevel ); // There may not be anybody there, but it's reserved by them! if ( ( gpWorldLevelData[ sCauseGridNo ].uiFlags & MAPELEMENT_MOVEMENT_RESERVED ) ) @@ -119,7 +117,7 @@ void SetDelayedTileWaiting( SOLDIERTYPE *pSoldier, INT32 sCauseGridNo, INT8 bVal if ( ubPerson != NOBODY ) { // if they are our own team members ( both ) - if ( MercPtrs[ ubPerson ]->bTeam == gbPlayerNum && pSoldier->bTeam == gbPlayerNum ) + if ( ubPerson->bTeam == gbPlayerNum && pSoldier->bTeam == gbPlayerNum ) { // Here we have another guy.... save his stats so we can use them for // speed determinations.... @@ -205,7 +203,6 @@ void UnMarkMovementReserved( SOLDIERTYPE *pSoldier ) INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 bLevel ) { - UINT8 ubPerson; INT32 sTempDestGridNo; INT32 sNewGridNo; BOOLEAN fSwapInDoor = FALSE; @@ -225,7 +222,7 @@ INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 b return( MOVE_TILE_CLEAR ); } - ubPerson = WhoIsThere2( sGridNo, bLevel ); + SoldierID ubPerson = WhoIsThere2( sGridNo, bLevel ); if ( ubPerson != NOBODY ) @@ -243,7 +240,7 @@ INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 b // Are we only temporarily blocked? // Check if our final destination is = our gridno - if ( ( MercPtrs[ ubPerson ]->pathing.sFinalDestination == MercPtrs[ ubPerson ]->sGridNo ) ) + if ( ( ubPerson->pathing.sFinalDestination == ubPerson->sGridNo ) ) { return( MOVE_TILE_STATIONARY_BLOCKED ); } @@ -251,12 +248,12 @@ INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 b { // OK, if buddy who is blocking us is trying to move too... // And we are in opposite directions... - if ( MercPtrs[ ubPerson ]->flags.fBlockedByAnotherMerc && MercPtrs[ ubPerson ]->bBlockedByAnotherMercDirection == gOppositeDirection[ bDirection ] ) + if ( ubPerson->flags.fBlockedByAnotherMerc && ubPerson->bBlockedByAnotherMercDirection == gOppositeDirection[ bDirection ] ) { // OK, try and get a path around buddy.... // We have to temporarily make buddy stopped... - sTempDestGridNo = MercPtrs[ ubPerson ]->pathing.sFinalDestination; - MercPtrs[ ubPerson ]->pathing.sFinalDestination = MercPtrs[ ubPerson ]->sGridNo; + sTempDestGridNo = ubPerson->pathing.sFinalDestination; + ubPerson->pathing.sFinalDestination = ubPerson->sGridNo; if ( PlotPath( pSoldier, pSoldier->pathing.sFinalDestination, NO_COPYROUTE, NO_PLOT, TEMPORARY, pSoldier->usUIMovementMode, NOT_STEALTH, FORWARD, pSoldier->bActionPoints ) ) { @@ -264,7 +261,7 @@ INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 b // OK, make guy go here... pSoldier->EVENT_GetNewSoldierPath( pSoldier->pathing.sFinalDestination, pSoldier->usUIMovementMode ); // Restore final dest.... - MercPtrs[ ubPerson ]->pathing.sFinalDestination = sTempDestGridNo; + ubPerson->pathing.sFinalDestination = sTempDestGridNo; pSoldier->flags.fBlockedByAnotherMerc = FALSE; // Is the next tile blocked too? @@ -288,18 +285,18 @@ INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 b // Swap now! - MercPtrs[ ubPerson ]->flags.fBlockedByAnotherMerc = FALSE; + ubPerson->flags.fBlockedByAnotherMerc = FALSE; // Restore final dest.... - MercPtrs[ ubPerson ]->pathing.sFinalDestination = sTempDestGridNo; + ubPerson->pathing.sFinalDestination = sTempDestGridNo; // Swap merc positions..... - SwapMercPositions( pSoldier, MercPtrs[ ubPerson ] ); + SwapMercPositions( pSoldier, ubPerson ); // With these two guys swapped, they should try and continue on their way.... // Start them both again along their way... pSoldier->EVENT_GetNewSoldierPath( pSoldier->pathing.sFinalDestination, pSoldier->usUIMovementMode ); - MercPtrs[ ubPerson ]->EVENT_GetNewSoldierPath( MercPtrs[ ubPerson ]->pathing.sFinalDestination, MercPtrs[ ubPerson ]->usUIMovementMode ); + ubPerson->EVENT_GetNewSoldierPath( ubPerson->pathing.sFinalDestination, ubPerson->usUIMovementMode ); } } } @@ -311,14 +308,14 @@ INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 b //return( MOVE_TILE_STATIONARY_BLOCKED ); // ATE: OK, put some smartshere... // If we are waiting for more than a few times, change to stationary... - if ( MercPtrs[ ubPerson ]->flags.fDelayedMovement >= 105 ) + if ( ubPerson->flags.fDelayedMovement >= 105 ) { // Set to special 'I want to walk through people' value pSoldier->flags.fDelayedMovement = 150; return( MOVE_TILE_STATIONARY_BLOCKED ); } - if ( MercPtrs[ ubPerson ]->sGridNo == MercPtrs[ ubPerson ]->pathing.sFinalDestination ) + if ( ubPerson->sGridNo == ubPerson->pathing.sFinalDestination ) { return( MOVE_TILE_STATIONARY_BLOCKED ); } @@ -495,11 +492,11 @@ BOOLEAN HandleNextTile( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, I BOOLEAN HandleNextTileWaiting( SOLDIERTYPE *pSoldier ) { // Buddy is waiting to continue his path - INT8 bBlocked, bPathBlocked; + INT8 bBlocked, bPathBlocked; INT32 sCost; - INT32 sNewGridNo, sCheckGridNo; + INT32 sNewGridNo, sCheckGridNo; UINT8 ubDirection, bCauseDirection; - UINT8 ubPerson; + SoldierID ubPerson; UINT8 fFlags = 0; @@ -659,16 +656,16 @@ BOOLEAN HandleNextTileWaiting( SOLDIERTYPE *pSoldier ) ubPerson = WhoIsThere2( pSoldier->sDelayedMovementCauseGridNo, pSoldier->pathing.bLevel ); // if either on a mission from god, or two AI guys not on stationary... - if ( ubPerson != NOBODY && ( pSoldier->ubQuoteRecord != 0 || ( pSoldier->bTeam != gbPlayerNum && pSoldier->aiData.bOrders != STATIONARY && MercPtrs[ ubPerson ]->bTeam != gbPlayerNum && MercPtrs[ ubPerson ]->aiData.bOrders != STATIONARY ) || (pSoldier->bTeam == gbPlayerNum && gTacticalStatus.fAutoBandageMode && !(MercPtrs[ ubPerson ]->bTeam == CIV_TEAM && MercPtrs[ ubPerson ]->aiData.bOrders == STATIONARY ) ) ) ) + if ( ubPerson != NOBODY && ( pSoldier->ubQuoteRecord != 0 || ( pSoldier->bTeam != gbPlayerNum && pSoldier->aiData.bOrders != STATIONARY && ubPerson->bTeam != gbPlayerNum && ubPerson->aiData.bOrders != STATIONARY ) || (pSoldier->bTeam == gbPlayerNum && gTacticalStatus.fAutoBandageMode && !(ubPerson->bTeam == CIV_TEAM && ubPerson->aiData.bOrders == STATIONARY ) ) ) ) { // Swap now! - //MercPtrs[ ubPerson ]->flags.fBlockedByAnotherMerc = FALSE; + //ubPerson->flags.fBlockedByAnotherMerc = FALSE; // Restore final dest.... - //MercPtrs[ ubPerson ]->pathing.sFinalDestination = sTempDestGridNo; + //ubPerson->pathing.sFinalDestination = sTempDestGridNo; // Swap merc positions..... - SwapMercPositions( pSoldier, MercPtrs[ ubPerson ] ); + SwapMercPositions( pSoldier, ubPerson ); // With these two guys swapped, we should try to continue on our way.... pSoldier->flags.fDelayedMovement = FALSE; @@ -693,7 +690,7 @@ BOOLEAN HandleNextTileWaiting( SOLDIERTYPE *pSoldier ) pSoldier->pathing.bPathStored = TRUE; pSoldier->EVENT_GetNewSoldierPath( pSoldier->sAbsoluteFinalDestination, pSoldier->usUIMovementMode ); - //EVENT_GetNewSoldierPath( MercPtrs[ ubPerson ], MercPtrs[ ubPerson ]->pathing.sFinalDestination, MercPtrs[ ubPerson ]->usUIMovementMode ); + //EVENT_GetNewSoldierPath( ubPerson, ubPerson->pathing.sFinalDestination, ubPerson->usUIMovementMode ); } } diff --git a/Tactical/SoldierTooltips.cpp b/Tactical/SoldierTooltips.cpp index f441dc74..9ccf92dc 100644 --- a/Tactical/SoldierTooltips.cpp +++ b/Tactical/SoldierTooltips.cpp @@ -132,8 +132,8 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) if ( gusSelectedSoldier != NOBODY && gusUIFullTargetID != NOBODY ) { //CHRISL: Changed the second parameter to use the same information as the 'F' hotkey uses. - //iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( MercPtrs[ gusSelectedSoldier ]->sGridNo, sSoldierGridNo ) / 10; - iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( MercPtrs[ gusSelectedSoldier ]->sGridNo, MercPtrs[ gusUIFullTargetID ]->sGridNo ) / 10; + //iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, sSoldierGridNo ) / 10; + iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, gusUIFullTargetID->sGridNo ) / 10; } // WANNE: If we want to show the tooltip of milita and no merc is present in the sector else @@ -145,14 +145,14 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) // SANDRO - don't use this if detail set to debug! if ( gGameExternalOptions.gfAllowUDTRange && gGameExternalOptions.ubSoldierTooltipDetailLevel != DL_Debug && !(gTacticalStatus.uiFlags & SHOW_ALL_MERCS) ) { - uiMaxTooltipDistance = (UINT32)( MercPtrs[ gusSelectedSoldier ]->GetMaxDistanceVisible(MercPtrs[ gusUIFullTargetID ]->sGridNo, 0, CALC_FROM_WANTED_DIR) * (gGameExternalOptions.ubUDTModifier)); + uiMaxTooltipDistance = (UINT32)( gusSelectedSoldier->GetMaxDistanceVisible(gusUIFullTargetID->sGridNo, 0, CALC_FROM_WANTED_DIR) * (gGameExternalOptions.ubUDTModifier)); uiMaxTooltipDistance /= 100; } //SCORE: Otherwise if we're using dynamics then do this // SANDRO - don't use this if detail set to debug! else if ( gGameExternalOptions.fEnableDynamicSoldierTooltips && gGameExternalOptions.ubSoldierTooltipDetailLevel != DL_Debug && !(gTacticalStatus.uiFlags & SHOW_ALL_MERCS) ) { - OBJECTTYPE* pObject = &(MercPtrs[gusSelectedSoldier]->inv[HANDPOS]); + OBJECTTYPE* pObject = &(gusSelectedSoldier->inv[HANDPOS]); for (attachmentList::iterator iter = (*pObject)[0]->attachments.begin(); iter != (*pObject)[0]->attachments.end(); ++iter) { if ( Item[iter->usItem].visionrangebonus > 0 && iter->exists()) { @@ -175,14 +175,14 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) { // add 10% to max tooltip viewing distance per level of the merc // sevenfm: fixed incorrect integer calculation - uiMaxTooltipDistance = (INT32)( uiMaxTooltipDistance * ( 1 + ( (FLOAT)( EffectiveExpLevel( MercPtrs[ gusSelectedSoldier ] ) ) / 10.0 ) ) ); // SANDRO - changed to effective level calc + uiMaxTooltipDistance = (INT32)( uiMaxTooltipDistance * ( 1 + ( (FLOAT)( EffectiveExpLevel( gusSelectedSoldier ) ) / 10.0 ) ) ); // SANDRO - changed to effective level calc // sevenfm: this calculation doesn't make sense: disabled //if ( gGameExternalOptions.gfAllowLimitedVision ) // uiMaxTooltipDistance *= 1 - (gGameExternalOptions.ubVisDistDecreasePerRainIntensity / 100); - if ( !(Item[MercPtrs[gusSelectedSoldier]->inv[HEAD1POS].usItem].nightvisionrangebonus > 0) && - !(Item[MercPtrs[gusSelectedSoldier]->inv[HEAD2POS].usItem].nightvisionrangebonus > 0) && + if ( !(Item[gusSelectedSoldier->inv[HEAD1POS].usItem].nightvisionrangebonus > 0) && + !(Item[gusSelectedSoldier->inv[HEAD2POS].usItem].nightvisionrangebonus > 0) && !DayTime() ) { // if night reduce max tooltip viewing distance by a factor of 4 if merc is not wearing NVG @@ -261,13 +261,13 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) swprintf(pStrInfo, L"%s|Roaming |Range: %d\n", pStrInfo, RoamingRange(pSoldier, &usOrigin)); swprintf(pStrInfo, L"%s|Team |Aware: %d\n", pStrInfo, gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition); swprintf(pStrInfo, L"%s|Collapsed %d |BreathCollapsed %d\n", pStrInfo, pSoldier->bCollapsed, pSoldier->bBreathCollapsed); - if (pSoldier->ubPreviousAttackerID != NOBODY && MercPtrs[pSoldier->ubPreviousAttackerID]) + if (pSoldier->ubPreviousAttackerID < NOBODY) { - swprintf(pStrInfo, L"%s|Under |Fire %d AttackerID %d AttackerTarget %d\n", pStrInfo, pSoldier->aiData.bUnderFire, pSoldier->ubPreviousAttackerID, MercPtrs[pSoldier->ubPreviousAttackerID]->sLastTarget); + swprintf(pStrInfo, L"%s|Under |Fire %d AttackerID %d AttackerTarget %d\n", pStrInfo, pSoldier->aiData.bUnderFire, pSoldier->ubPreviousAttackerID.i, pSoldier->ubPreviousAttackerID->sLastTarget); } else { - swprintf(pStrInfo, L"%s|Under |Fire %d AttackerID %d\n", pStrInfo, pSoldier->aiData.bUnderFire, pSoldier->ubPreviousAttackerID); + swprintf(pStrInfo, L"%s|Under |Fire %d AttackerID %d\n", pStrInfo, pSoldier->aiData.bUnderFire, pSoldier->ubPreviousAttackerID.i); } swprintf(pStrInfo, L"%s|Visible %d |Moved %d\n", pStrInfo, pSoldier->bVisible, pSoldier->aiData.bMoved); @@ -321,7 +321,7 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier ) if ( ubTooltipDetailLevel < DL_Full) { // Get the current selected merc - SOLDIERTYPE* pMerc = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE* pMerc = gusSelectedSoldier; if ( pMerc->aiData.bOppList[pSoldier->ubID] != SEEN_CURRENTLY ) { diff --git a/Tactical/Squads.cpp b/Tactical/Squads.cpp index 8b1de4e1..0cf026b6 100644 --- a/Tactical/Squads.cpp +++ b/Tactical/Squads.cpp @@ -926,7 +926,7 @@ BOOLEAN SetCurrentSquad( INT32 iCurrentSquad, BOOLEAN fForce ) // check if the currently selected guy is on this squad, if not, get the first one on the new squad if ( gusSelectedSoldier != NOBODY ) { - if( Menptr[ gusSelectedSoldier ].bAssignment != iCurrentTacticalSquad ) + if( gusSelectedSoldier->bAssignment != iCurrentTacticalSquad ) { // ATE: Changed this to FALSE for ackoledgement sounds.. sounds bad if just starting/entering sector.. SelectSoldier( Squad[ iCurrentTacticalSquad ][ 0 ]->ubID, FALSE, TRUE ); @@ -995,16 +995,13 @@ void RebuildCurrentSquad( void ) void ExamineCurrentSquadLights( void ) { - // rebuilds current squad to reset faces in tactical - UINT8 ubLoop; - // OK, we should add lights for any guy currently bInSector who is not bad OKLIFE... - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++) + SoldierID usID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; usID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++usID) { - if ( MercPtrs[ ubLoop ]->bInSector && MercPtrs[ ubLoop ]->stats.bLife >= OKLIFE ) + if ( usID->bInSector && usID->stats.bLife >= OKLIFE ) { - MercPtrs[ ubLoop ]->PositionSoldierLight( ); + usID->PositionSoldierLight( ); } } @@ -1327,8 +1324,6 @@ void RebuildSquad( INT8 bSquadValue ) void UpdateCurrentlySelectedMerc( SOLDIERTYPE *pSoldier, INT8 bSquadValue ) { - UINT8 ubID; - // if this squad is the current one and and the psoldier is the currently selected soldier, get rid of 'em if( bSquadValue != iCurrentTacticalSquad ) { @@ -1338,7 +1333,7 @@ void UpdateCurrentlySelectedMerc( SOLDIERTYPE *pSoldier, INT8 bSquadValue ) // Are we the selected guy? if( gusSelectedSoldier == pSoldier->ubID ) { - ubID = FindNextActiveAndAliveMerc( pSoldier, FALSE, FALSE ); + SoldierID ubID = FindNextActiveAndAliveMerc( pSoldier, FALSE, FALSE ); if ( ubID != NOBODY && ubID != gusSelectedSoldier ) { diff --git a/Tactical/Squads.h b/Tactical/Squads.h index e37900d5..a4a145c2 100644 --- a/Tactical/Squads.h +++ b/Tactical/Squads.h @@ -30,6 +30,26 @@ enum{ EIGTHTEENTH_SQUAD, NINTEENTH_SQUAD, TWENTYTH_SQUAD, + SQUAD_TWENTYONE, + SQUAD_TWENTYTWO, + SQUAD_TWENTYTHREE, + SQUAD_TWENTYFOUR, + SQUAD_TWENTYFIVE, + SQUAD_TWENTYSIX, + SQUAD_TWENTYSEVEN, + SQUAD_TWENTYEIGHT, + SQUAD_TWENTYNINE, + SQUAD_THIRTY, + SQUAD_THIRTYONE, + SQUAD_THIRTYTWO, + SQUAD_THIRTYTHREE, + SQUAD_THIRTYFOUR, + SQUAD_THIRTYFIVE, + SQUAD_THIRTYSIX, + SQUAD_THIRTYSEVEN, + SQUAD_THIRTYEIGHT, + SQUAD_THIRTYNINE, + SQUAD_FOURTY, NUMBER_OF_SQUADS, }; @@ -175,4 +195,4 @@ void CheckSquadMovementGroups( void ); //SQUAD10: Check for squads that are oversized at current resolution and move them to another squad void FixOversizedSquadsInSector( void ); -#endif +#endif diff --git a/Tactical/Strategic Exit GUI.cpp b/Tactical/Strategic Exit GUI.cpp index b09acb0f..83a86e27 100644 --- a/Tactical/Strategic Exit GUI.cpp +++ b/Tactical/Strategic Exit GUI.cpp @@ -79,7 +79,7 @@ typedef struct UINT8 ubLeaveSectorCode; UINT8 ubDirection; UINT8 ubNumPeopleOnSquad; - INT8 bSingleMoveWillIsolateEPC; //if not -1, then that means the slot number is an EPC + INT16 bSingleMoveWillIsolateEPC; //if not -1, then that means the slot number is an EPC INT8 bHandled; BOOLEAN fRender; BOOLEAN fGotoSector; @@ -119,7 +119,6 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// { UINT32 uiTraverseTimeInMinutes; SOLDIERTYPE *pSoldier; - INT32 i; SGPRect aRect; UINT16 usTextBoxWidth, usTextBoxHeight; INT32 usMapPos = 0; @@ -177,7 +176,7 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// } // anv: vehicle always move with all passengers inside - if( MercPtrs[gusSelectedSoldier]->bAssignment == VEHICLE ) + if( gusSelectedSoldier->bAssignment == VEHICLE ) { gExitDialog.fSingleMoveDisabled = TRUE; gExitDialog.fSingleMoveOn = FALSE; @@ -189,10 +188,10 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// if ( gTacticalStatus.uiFlags & INCOMBAT ) { - INT32 i, cnt = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + INT32 cnt = 0; + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { - if( OK_INSECTOR_MERC( MercPtrs[ i ] ) ) + if( OK_INSECTOR_MERC( id ) ) cnt++; } if( cnt != 1 ) @@ -217,21 +216,22 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// gExitDialog.fGotoSector = TRUE; } - gExitDialog.ubNumPeopleOnSquad = NumberOfPlayerControllableMercsInSquad( MercPtrs[ gusSelectedSoldier ]->bAssignment ); + gExitDialog.ubNumPeopleOnSquad = NumberOfPlayerControllableMercsInSquad( gusSelectedSoldier->bAssignment ); //Determine - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { - pSoldier = MercPtrs[ i ]; - if( i == gusSelectedSoldier ) + if( id == gusSelectedSoldier ) { continue; } + + pSoldier = id; if( !pSoldier->flags.fBetweenSectors && pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife >= OKLIFE && - ( pSoldier->bAssignment != MercPtrs[ gusSelectedSoldier ]->bAssignment || - ( pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId != MercPtrs[ gusSelectedSoldier ]->iVehicleId ) ) && + ( pSoldier->bAssignment != gusSelectedSoldier->bAssignment || + ( pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId != gusSelectedSoldier->iVehicleId ) ) && pSoldier->bAssignment != ASSIGNMENT_POW && pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD && pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) ) { //KM: We need to determine if there are more than one squad (meaning other concious mercs in a different squad or assignment) @@ -245,7 +245,7 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// // Double check that ... // if we are a EPC and are the selected guy, make single move off and disable it.... - if ( AM_AN_EPC( MercPtrs[ gusSelectedSoldier ] ) ) + if ( AM_AN_EPC( gusSelectedSoldier ) ) { // Check if there are more than one in this squad if ( gExitDialog.ubNumPeopleOnSquad > 1 ) @@ -260,23 +260,23 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// { //check to see if we have one selected merc and one or more EPCs. //If so, don't allow the selected merc to leave by himself. //Assuming that the matching squad assignment is in the same sector. - UINT8 ubNumMercs = 1; //selected soldier is a merc - UINT8 ubNumEPCs = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) + UINT16 ubNumMercs = 1; //selected soldier is a merc + UINT16 ubNumEPCs = 0; + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { - if( i == gusSelectedSoldier ) + if( id == gusSelectedSoldier ) { continue; } - if( MercPtrs[ i ]->bAssignment == MercPtrs[ gusSelectedSoldier ]->bAssignment ) + if( id->bAssignment == gusSelectedSoldier->bAssignment ) { - if( AM_AN_EPC( MercPtrs[ i ] ) ) + if( AM_AN_EPC( id ) ) { ubNumEPCs++; //record the slot of the epc. If there are more than one EPCs, then //it doesn't matter. This is used in building the text message explaining //why the selected merc can't leave. This is how we extract the EPC's name. - gExitDialog.bSingleMoveWillIsolateEPC = (INT8)i; + gExitDialog.bSingleMoveWillIsolateEPC = id; } else { //We have more than one merc, so we will allow the selected merc to leave alone if @@ -397,17 +397,17 @@ void DoneFadeInWarp( void ) void DoneFadeOutWarpCallback( void ) { - INT32 cnt; SOLDIERTYPE *pSoldier; // Warp! // Set insertion data... - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we in this sector, On the current squad? if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector ) { @@ -550,7 +550,7 @@ void UpdateSectorExitMenu( ) if( gExitDialog.fSelectedMercIsEPC ) { //EPCs cannot leave the sector alone and must be escorted CHAR16 str[ 256 ]; - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_ESCORTED_CHARACTERS_MUST_BE_ESCORTED_HELPTEXT ], MercPtrs[ gusSelectedSoldier ]->name ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_ESCORTED_CHARACTERS_MUST_BE_ESCORTED_HELPTEXT ], gusSelectedSoldier->name ); SetButtonFastHelpText( gExitDialog.uiSingleMoveButton, str ); SetRegionFastHelpText( &gExitDialog.SingleRegion, str ); } @@ -561,26 +561,26 @@ void UpdateSectorExitMenu( ) CHAR16 str[ 256 ]; if( !gExitDialog.fSquadHasMultipleEPCs ) { - if( gMercProfiles[ MercPtrs[ gusSelectedSoldier ]->ubProfile ].bSex == MALE ) + if( gMercProfiles[ gusSelectedSoldier->ubProfile ].bSex == MALE ) { //male singular - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_SINGULAR ], MercPtrs[ gusSelectedSoldier ]->name, + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_SINGULAR ], gusSelectedSoldier->name, MercPtrs[ gExitDialog.bSingleMoveWillIsolateEPC ]->name ); } else { //female singular - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_SINGULAR ], MercPtrs[ gusSelectedSoldier ]->name, + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_SINGULAR ], gusSelectedSoldier->name, MercPtrs[ gExitDialog.bSingleMoveWillIsolateEPC ]->name ); } } else { - if( gMercProfiles[ MercPtrs[ gusSelectedSoldier ]->ubProfile ].bSex == MALE ) + if( gMercProfiles[ gusSelectedSoldier->ubProfile ].bSex == MALE ) { //male plural - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_PLURAL ], MercPtrs[ gusSelectedSoldier ]->name ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_PLURAL ], gusSelectedSoldier->name ); } else { //female plural - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_PLURAL ], MercPtrs[ gusSelectedSoldier ]->name ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_PLURAL ], gusSelectedSoldier->name ); } } SetButtonFastHelpText( gExitDialog.uiSingleMoveButton, str ); @@ -592,7 +592,7 @@ void UpdateSectorExitMenu( ) CHAR16 str[ 256 ]; EnableButton( gExitDialog.uiSingleMoveButton ); MSYS_EnableRegion(&(gExitDialog.SingleRegion) ); - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_SINGLE_TRAVERSAL_WILL_SEPARATE_SQUADS_HELPTEXT ], MercPtrs[ gusSelectedSoldier ]->name ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_SINGLE_TRAVERSAL_WILL_SEPARATE_SQUADS_HELPTEXT ], gusSelectedSoldier->name ); SetButtonFastHelpText( gExitDialog.uiSingleMoveButton, str ); SetRegionFastHelpText( &gExitDialog.SingleRegion, str ); } @@ -762,12 +762,12 @@ void RemoveSectorExitMenu( BOOLEAN fOk ) gfIgnoreScrolling = FALSE; // if we are an EPC, don't allow this if nobody else on squad - if ( fOk && AM_AN_EPC( MercPtrs[ gusSelectedSoldier ] ) ) + if ( fOk && AM_AN_EPC( gusSelectedSoldier ) ) { // Check if there are more than one in this squad if ( gExitDialog.ubNumPeopleOnSquad == 0 ) { - swprintf( Str, pMessageStrings[ MSG_EPC_CANT_TRAVERSE ], MercPtrs[ gusSelectedSoldier ]->name ); + swprintf( Str, pMessageStrings[ MSG_EPC_CANT_TRAVERSE ], gusSelectedSoldier->name ); DoMessageBox( MSG_BOX_BASIC_STYLE, Str, GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_OK, NULL, NULL ); return; diff --git a/Tactical/Structure Wrap.cpp b/Tactical/Structure Wrap.cpp index 2973b640..ab23bc3c 100644 --- a/Tactical/Structure Wrap.cpp +++ b/Tactical/Structure Wrap.cpp @@ -518,9 +518,9 @@ BOOLEAN IsCuttableWireFenceAtGridNo( INT32 sGridNo ) } -BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ) +BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ) { - UINT8 ubMerc; + UINT16 ubMerc; // OK, first look for a vehicle.... ubMerc = WhoIsThere2( sGridNo, 0 ); @@ -554,9 +554,9 @@ BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ) } -BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ) +BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ) { - UINT8 ubMerc; + UINT16 ubMerc; // OK, first look for a vehicle.... ubMerc = WhoIsThere2( sGridNo, 0 ); diff --git a/Tactical/Structure Wrap.h b/Tactical/Structure Wrap.h index 5238a8be..49557ee2 100644 --- a/Tactical/Structure Wrap.h +++ b/Tactical/Structure Wrap.h @@ -36,8 +36,8 @@ BOOLEAN CutWireFence( INT32 sGridNo ); BOOLEAN IsCuttableWireFenceAtGridNo( INT32 sGridNo ); BOOLEAN IsCutWireFenceAtGridNo( INT32 sGridNo ); -BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ); -BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ); +BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ); +BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ); BOOLEAN IsFortificationPossibleAtGridNo( INT32 sGridNo ); // added by Flugente UINT16 InteractiveActionPossibleAtGridNo( INT32 sGridNo, UINT8 usLevel, UINT16& arusStructIndex ); // added by Flugente diff --git a/Tactical/Tactical Save.cpp b/Tactical/Tactical Save.cpp index 1cfacd97..015339de 100644 --- a/Tactical/Tactical Save.cpp +++ b/Tactical/Tactical Save.cpp @@ -119,7 +119,7 @@ void SaveNPCInformationToProfileStruct( ); BOOLEAN DoesTempFileExistsForMap( UINT32 uiType, INT16 sMapX, INT16 sMapY, INT8 bMapZ ); -INT16 GetSoldierIDFromAnyMercID(UINT8 ubMercID); +SoldierID GetSoldierIDFromAnyMercID(UINT8 ubMercID); BOOLEAN SetUnderGroundSectorFlag( INT16 sSectorX, INT16 sSectorY, UINT8 ubSectorZ, UINT32 uiFlagToSet ); @@ -1131,7 +1131,6 @@ BOOLEAN SaveCurrentSectorsInformationToTempItemFile( ) void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { // find out which items in the list are reachable - UINT32 uiCounter = 0; UINT8 ubDir, ubMovementCost; BOOLEAN fReachable = FALSE; INT32 sGridNo = NOWHERE, sGridNo2 = NOWHERE; @@ -1179,9 +1178,9 @@ void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bS { sGridNo2 = gMapInformation.sIsolatedGridNo; - for( uiCounter = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; uiCounter <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++uiCounter ) + for( SoldierID uiCounter = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; uiCounter <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++uiCounter ) { - pSoldier = MercPtrs[ uiCounter ]; + pSoldier = uiCounter; if ( pSoldier && pSoldier->bActive && pSoldier->stats.bLife > 0 && pSoldier->sSectorX == sSectorX && pSoldier->sSectorY == sSectorY && pSoldier->bSectorZ == bSectorZ ) { if ( FindBestPath( pSoldier, sGridNo2, pSoldier->pathing.bLevel, WALKING, NO_COPYROUTE, 0 ) ) @@ -1200,7 +1199,7 @@ void HandleAllReachAbleItemsInTheSector( INT16 sSectorX, INT16 sSectorY, INT8 bS GlobalItemsReachableTest( sGridNo, sGridNo2 ); - for( uiCounter = 0; uiCounter < guiNumWorldItems; ++uiCounter ) + for( UINT32 uiCounter = 0; uiCounter < guiNumWorldItems; ++uiCounter ) { // reset reachablity fReachable = FALSE; @@ -2130,29 +2129,26 @@ BOOLEAN DoesTempFileExistsForMap( UINT32 uiType, INT16 sMapX, INT16 sMapY, INT8 } -INT16 GetSoldierIDFromAnyMercID(UINT8 ubMercID) +SoldierID GetSoldierIDFromAnyMercID(UINT8 ubMercID) { - UINT16 cnt; - UINT8 ubLastTeamID; - SOLDIERTYPE *pTeamSoldier; + SOLDIERTYPE *pTeamSoldier; + SoldierID cnt = gTacticalStatus.Team[OUR_TEAM].bFirstID; + SoldierID ubLastTeamID = TOTAL_SOLDIERS; - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - - ubLastTeamID = TOTAL_SOLDIERS; - - // look for all mercs on the same team, - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= ubLastTeamID; cnt++,pTeamSoldier++) + // look for all mercs on the same team, + for ( ; cnt <= ubLastTeamID; ++cnt ) { - if( pTeamSoldier->bActive ) + pTeamSoldier = cnt; + if ( pTeamSoldier->bActive ) { if ( pTeamSoldier->ubProfile == ubMercID ) { - return( cnt ); + return(cnt); } } } - return( -1 ); + return(NOBODY); } @@ -2554,13 +2550,15 @@ BOOLEAN SetSectorFlag( INT16 sMapX, INT16 sMapY, UINT8 bMapZ, UINT32 uiFlagToSet UpdateLastDayOfPlayerActivity( (UINT16) GetWorldDay() ); } - for ( UINT8 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) + for ( SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) && MercPtrs[ i ]->ubProfile != NO_PROFILE && - MercPtrs[ i ]->sSectorX == sMapX && MercPtrs[ i ]->sSectorY == sMapY && MercPtrs[ i ]->bSectorZ == bMapZ && !MercPtrs[ i ]->flags.fBetweenSectors && - MercPtrs[ i ]->bAssignment != IN_TRANSIT && MercPtrs[ i ]->bAssignment != ASSIGNMENT_DEAD ) + SOLDIERTYPE *pSoldier = id; + + if( pSoldier->bActive && pSoldier->stats.bLife && !(pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE) && pSoldier->ubProfile != NO_PROFILE && + pSoldier->sSectorX == sMapX && pSoldier->sSectorY == sMapY && pSoldier->bSectorZ == bMapZ && !pSoldier->flags.fBetweenSectors && + pSoldier->bAssignment != IN_TRANSIT && pSoldier->bAssignment != ASSIGNMENT_DEAD ) { - gMercProfiles[ MercPtrs[ i ]->ubProfile ].records.usSectorsDiscovered++; + gMercProfiles[ pSoldier->ubProfile ].records.usSectorsDiscovered++; } } } diff --git a/Tactical/Tactical Turns.cpp b/Tactical/Tactical Turns.cpp index 5cb5c9d5..ad27e157 100644 --- a/Tactical/Tactical Turns.cpp +++ b/Tactical/Tactical Turns.cpp @@ -31,7 +31,7 @@ extern void DecayPublicOpplist( INT8 bTeam ); //not in overhead.h! -extern UINT8 NumEnemyInSector(); +extern UINT16 NumEnemyInSector(); #ifdef JA2UB @@ -41,12 +41,11 @@ extern UINT8 NumEnemyInSector(); void HandleRPCDescription( ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc = 0; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc = 0; SOLDIERTYPE *pTeamSoldier; - INT32 cnt2; BOOLEAN fSAMSite = FALSE; @@ -97,12 +96,13 @@ void HandleRPCDescription( ) // OK, count how many rpc guys we have.... // set up soldier ptr as first element in mercptrs list - cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; if (gTacticalStatus.ubGuideDescriptionToUse != 100) { // run through list - for ( pTeamSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2, pTeamSoldier++ ) + for ( ; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2 ) { + pTeamSoldier = cnt2; // Add guy if he's a candidate... if ( RPC_RECRUITED( pTeamSoldier ) ) { @@ -116,7 +116,7 @@ void HandleRPCDescription( ) pTeamSoldier->ubProfile == CARLOS || pTeamSoldier->ubProfile == DIMITRI ) { - ubMercsInSector[ubNumMercs] = (UINT8)cnt2; + ubMercsInSector[ubNumMercs] = (UINT16)cnt2; ++ubNumMercs; } } @@ -126,7 +126,7 @@ void HandleRPCDescription( ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); TacticalCharacterDialogueWithSpecialEvent( MercPtrs[ubMercsInSector[ubChosenMerc]], gTacticalStatus.ubGuideDescriptionToUse, DIALOGUE_SPECIAL_EVENT_USE_ALTERNATE_FILES, 0, 0 ); } @@ -137,8 +137,9 @@ void HandleRPCDescription( ) { // run through list cnt2 = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for ( pTeamSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2, pTeamSoldier++ ) + for ( ; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2 ) { + pTeamSoldier = cnt2; if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bActive && pTeamSoldier->sSectorX == gTacticalStatus.bGuideDescriptionSectorX && pTeamSoldier->sSectorY == gTacticalStatus.bGuideDescriptionSectorY && pTeamSoldier->bSectorZ == gbWorldSectorZ && @@ -154,7 +155,6 @@ void HandleRPCDescription( ) void HandleTacticalEndTurn( ) { - UINT32 cnt; SOLDIERTYPE *pSoldier; UINT32 uiTime; static UINT32 uiTimeSinceLastStrategicUpdate = 0; @@ -239,9 +239,10 @@ void HandleTacticalEndTurn( ) BeginLoggingForBleedMeToos( TRUE ); - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->stats.bLife > 0 && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { // Handle everything from getting breath back, to bleeding, etc @@ -275,7 +276,7 @@ void HandleTacticalEndTurn( ) // OK, loop through the mercs to perform 'end turn' events on each... // We're looping through only mercs in tactical engine, ignoring our mercs // because they were done earilier... - for ( cnt = 0; cnt < guiNumMercSlots; cnt++ ) + for ( UINT32 cnt = 0; cnt < guiNumMercSlots; cnt++ ) { pSoldier = MercSlots[ cnt ]; diff --git a/Tactical/TeamTurns.cpp b/Tactical/TeamTurns.cpp index 28a372f3..ffd2698c 100644 --- a/Tactical/TeamTurns.cpp +++ b/Tactical/TeamTurns.cpp @@ -91,34 +91,34 @@ void RecalculateSoldiersAniSpeed() extern void DecayPublicOpplist(INT8 bTeam); extern void VerifyAndDecayOpplist(SOLDIERTYPE *pSoldier); void EndInterrupt( BOOLEAN fMarkInterruptOccurred ); -void DeleteFromIntList( UINT8 ubIndex, BOOLEAN fCommunicate); +void DeleteFromIntList( UINT16 ubIndex, BOOLEAN fCommunicate); #define END_OF_INTERRUPTS 255 -UINT8 gubOutOfTurnOrder[MAXMERCS] = { END_OF_INTERRUPTS, 0 }; -UINT8 gubOutOfTurnPersons = 0; +UINT16 gubOutOfTurnOrder[MAXMERCS] = { END_OF_INTERRUPTS, 0 }; +UINT16 gubOutOfTurnPersons = 0; #define LATEST_INTERRUPT_GUY (gubOutOfTurnOrder[gubOutOfTurnPersons]) -#define REMOVE_LATEST_INTERRUPT_GUY() (DeleteFromIntList( (UINT8) (gubOutOfTurnPersons), TRUE )) +#define REMOVE_LATEST_INTERRUPT_GUY() (DeleteFromIntList( (gubOutOfTurnPersons), TRUE )) #define INTERRUPTS_OVER (gubOutOfTurnPersons == 1) -INT16 InterruptOnlyGuynum = NOBODY; -BOOLEAN InterruptsAllowed = TRUE; -BOOLEAN gfHiddenInterrupt = FALSE; -UINT8 gubLastInterruptedGuy = 0; +SoldierID InterruptOnlyGuynum = NOBODY; +BOOLEAN InterruptsAllowed = TRUE; +BOOLEAN gfHiddenInterrupt = FALSE; +SoldierID gubLastInterruptedGuy = NOBODY; -extern UINT16 gsWhoThrewRock; +extern SoldierID gsWhoThrewRock; extern UINT8 gubSightFlags; typedef struct { - UINT8 ubOutOfTurnPersons; + UINT16 ubOutOfTurnPersons; - INT16 InterruptOnlyGuynum; - INT16 sWhoThrewRock; - BOOLEAN InterruptsAllowed; - BOOLEAN fHiddenInterrupt; - UINT8 ubLastInterruptedGuy; + SoldierID InterruptOnlyGuynum; + SoldierID sWhoThrewRock; + BOOLEAN InterruptsAllowed; + BOOLEAN fHiddenInterrupt; + SoldierID ubLastInterruptedGuy; UINT8 ubFiller[16]; } TEAM_TURN_SAVE_STRUCT; @@ -136,8 +136,7 @@ void ClearIntList( void ) BOOLEAN BloodcatsPresent( void ) { - INT32 iLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BloodcatsPresent"); if ( gTacticalStatus.Team[ CREATURE_TEAM ].bTeamActive == FALSE ) @@ -145,9 +144,9 @@ BOOLEAN BloodcatsPresent( void ) return( FALSE ); } - for ( iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; iLoop++ ) + for ( SoldierID iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop ) { - pSoldier = MercPtrs[ iLoop ]; + pSoldier = iLoop; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 && pSoldier->ubBodyType == BLOODCAT ) { @@ -160,7 +159,6 @@ BOOLEAN BloodcatsPresent( void ) void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode ) { - INT32 cnt; DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartPlayerTeamTurn"); // SOLDIERTYPE *pSoldier; // EV_S_BEGINTURN SBeginTurn; @@ -178,8 +176,6 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode ) // make sure set properly in gTacticalStatus: gTacticalStatus.ubCurrentTeam = OUR_TEAM; - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - InitPlayerUIBar( FALSE ); if ( gTacticalStatus.uiFlags & TURNBASED ) @@ -197,6 +193,7 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode ) // ATE: Commented out - looks like this message is called earlier for our team // look for all mercs on the same team, + //SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; //for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) //{ // if ( pSoldier->bActive && pSoldier->stats.bLife > 0 ) @@ -212,10 +209,10 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode ) if ( gusSelectedSoldier != NOBODY ) { // Check if this guy is able to be selected.... - if ( MercPtrs[ gusSelectedSoldier ]->stats.bLife < OKLIFE ) + if ( gusSelectedSoldier->stats.bLife < OKLIFE ) { DebugMsg(TOPIC_JA2INTERRUPT,DBG_LEVEL_3,String("StartPlayerTeamTurn: SelectNextAvailSoldier")); - SelectNextAvailSoldier( MercPtrs[ gusSelectedSoldier ] ); + SelectNextAvailSoldier( gusSelectedSoldier ); } else { @@ -225,12 +222,12 @@ void StartPlayerTeamTurn( BOOLEAN fDoBattleSnd, BOOLEAN fEnteringCombatMode ) // Slide to selected guy... if ( gusSelectedSoldier != NOBODY ) { - SlideTo( NOWHERE, gusSelectedSoldier, NOBODY ,SETLOCATOR); + SlideTo(gusSelectedSoldier, SETLOCATOR); if ( fDoBattleSnd ) { // Say ATTENTION SOUND... - MercPtrs[ gusSelectedSoldier ]->DoMercBattleSound( BATTLE_SOUND_ATTN1 ); + gusSelectedSoldier->DoMercBattleSound( BATTLE_SOUND_ATTN1 ); } if ( gsInterfaceLevel == 1 ) @@ -302,7 +299,6 @@ void EndTurn( UINT8 ubNextTeam ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndTurn"); SOLDIERTYPE * pSoldier; - INT32 cnt; //Check for enemy pooling (add enemies if there happens to be more than the max in the //current battle. If one or more slots have freed up, we can add them now. @@ -344,9 +340,10 @@ void EndTurn( UINT8 ubNextTeam ) FreezeInterfaceForEnemyTurn(); // Loop through all mercs and set to moved - cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { pSoldier->aiData.bMoved = TRUE; @@ -380,7 +377,6 @@ void EndAITurn( void ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndAITurn"); SOLDIERTYPE * pSoldier; - INT32 cnt; // Remove any deadlock message EndDeadlockMsg( ); @@ -395,9 +391,10 @@ void EndAITurn( void ) } else { - cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive ) { pSoldier->aiData.bMoved = TRUE; @@ -417,7 +414,6 @@ void EndAllAITurns( void ) DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndAllAITurns"); // warp turn to the player's turn SOLDIERTYPE * pSoldier; - INT32 cnt; // Remove any deadlock message EndDeadlockMsg( ); @@ -428,9 +424,10 @@ void EndAllAITurns( void ) if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum ) { - cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pSoldier++) + SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id ) { + pSoldier = id; if ( pSoldier->bActive ) { pSoldier->aiData.bMoved = TRUE; @@ -463,9 +460,10 @@ void EndTurnEvents( void ) DecaySmokeEffects( GetWorldTotalSeconds( ) ); SOLDIERTYPE* pSoldier = NULL; - UINT32 cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt, ++pSoldier) + SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { + pSoldier = id; if ( pSoldier->bActive && pSoldier->stats.bLife > 0 )//&& !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !( AM_A_ROBOT( pSoldier ) ) ) { // Flugente: update multi-turn actions @@ -505,8 +503,6 @@ BOOLEAN LightningEndOfTurn( UINT8 ubTeam ); void BeginTeamTurn( UINT8 ubTeam ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BeginTeamTurn"); - INT32 cnt; - UINT8 ubID; SOLDIERTYPE *pSoldier; //rain @@ -573,9 +569,10 @@ void BeginTeamTurn( UINT8 ubTeam ) // decay team's public opplist DecayPublicOpplist( ubTeam ); - cnt = gTacticalStatus.Team[ ubTeam ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ubTeam ].bLastID; cnt++,pSoldier++) + SoldierID id = gTacticalStatus.Team[ ubTeam ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ ubTeam ].bLastID; ++id ) { + pSoldier = id; if ( pSoldier->bActive && pSoldier->stats.bLife > 0) { // decay personal opplist, and refresh APs and BPs @@ -644,7 +641,7 @@ void BeginTeamTurn( UINT8 ubTeam ) if ( BuildAIListForTeam( ubTeam ) ) { - ubID = RemoveFirstAIListEntry(); + SoldierID ubID = RemoveFirstAIListEntry(); if (ubID != NOBODY) { // Dirty panel interface! @@ -657,7 +654,7 @@ void BeginTeamTurn( UINT8 ubTeam ) { AddTopMessage( COMPUTER_TURN_MESSAGE, TeamTurnString[ ubTeam ] ); } - StartNPCAI( MercPtrs[ ubID ] ); + StartNPCAI( ubID ); /*if(is_server && !net_turn) send_EndTurn(ubTeam); if(net_turn == true) net_turn = false;*/ if(is_server) send_EndTurn(ubTeam); @@ -688,7 +685,7 @@ void DisplayHiddenInterrupt( SOLDIERTYPE * pSoldier ) if (pSoldier->bVisible != -1 ) { - SlideTo( NOWHERE, pSoldier->ubID, NOBODY ,SETLOCATOR); + SlideTo( pSoldier->ubID, SETLOCATOR); } if(is_client) @@ -788,7 +785,7 @@ void DisplayHiddenTurnbased( SOLDIERTYPE * pActingSoldier ) BOOLEAN EveryoneInInterruptListOnSameTeam( void ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EveryoneInInterruptListOnSameTeam"); - UINT8 ubLoop; + UINT16 ubLoop; UINT8 ubTeam = 255; for (ubLoop = 1; ubLoop <= gubOutOfTurnPersons; ubLoop++) @@ -810,12 +807,12 @@ BOOLEAN EveryoneInInterruptListOnSameTeam( void ) void StartInterrupt( void ) { - UINT8 ubFirstInterrupter; - INT8 bTeam; - SOLDIERTYPE * pSoldier; - SOLDIERTYPE * pTempSoldier; - UINT8 ubInterrupter; - INT32 cnt; + INT8 bTeam; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pTempSoldier; + SoldierID ubFirstInterrupter; + SoldierID ubInterrupter; + INT32 cnt; DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartInterrupt"); ubFirstInterrupter = LATEST_INTERRUPT_GUY; @@ -837,9 +834,9 @@ void StartInterrupt( void ) gTacticalStatus.fInterruptOccurred = TRUE; - cnt = 0; - for ( pTempSoldier = MercPtrs[ cnt ]; cnt < MAX_NUM_SOLDIERS; cnt++,pTempSoldier++) + for ( SoldierID id = 0; id < MAX_NUM_SOLDIERS; ++id ) { + pTempSoldier = id; if ( pTempSoldier->bActive ) { pTempSoldier->bMovedPriorToInterrupt = pTempSoldier->aiData.bMoved; @@ -862,7 +859,7 @@ void StartInterrupt( void ) //while( 1 ) for( iCounter = 0; iCounter < MAX_NUM_SOLDIERS; iCounter++ ) { - MercPtrs[ubInterrupter]->aiData.bMoved = FALSE; + ubInterrupter->aiData.bMoved = FALSE; DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: popping %d off of the interrupt queue", ubInterrupter ) ); REMOVE_LATEST_INTERRUPT_GUY(); @@ -873,7 +870,7 @@ void StartInterrupt( void ) { continue; } - else if (MercPtrs[ubInterrupter]->bTeam != bTeam) + else if (ubInterrupter->bTeam != bTeam) { break; } @@ -891,7 +888,7 @@ void StartInterrupt( void ) handleInterrupt = FALSE; // build string in separate loop here, want to linearly process squads... - SOLDIERTYPE *pInterruptedSoldier = MercPtrs[ubInterrupter]; + SOLDIERTYPE *pInterruptedSoldier = ubInterrupter; for ( iSquad = 0; iSquad < NUMBER_OF_SQUADS; iSquad++ ) { for ( iCounter = 0; iCounter < NUMBER_OF_SOLDIERS_PER_SQUAD; iCounter++ ) @@ -961,7 +958,7 @@ void StartInterrupt( void ) SelectSoldier( ubFirstInterrupter, TRUE, TRUE ); // ATE; Slide to guy who got interrupted! - SlideTo( NOWHERE, gubLastInterruptedGuy, NOBODY, SETLOCATOR); + SlideTo( gubLastInterruptedGuy, SETLOCATOR); // Dirty panel interface! fInterfacePanelDirty = DIRTYLEVEL2; @@ -981,24 +978,25 @@ void StartInterrupt( void ) PlayJA2Sample( ENDTURN_1, RATE_11025, MIDVOLUME, 1, MIDDLEPAN ); // report any close call quotes for us here - for ( iCounter = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; iCounter <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; iCounter++ ) + for ( SoldierID id = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; id <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++id ) { - if ( OK_INSECTOR_MERC( MercPtrs[ iCounter ] ) ) + SOLDIERTYPE *pSoldier = id; + + if ( OK_INSECTOR_MERC( pSoldier ) ) { - if ( MercPtrs[ iCounter ]->flags.fCloseCall ) + if ( pSoldier->flags.fCloseCall ) { - if ( MercPtrs[ iCounter ]->bNumHitsThisTurn == 0 && !(MercPtrs[ iCounter ]->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 ) + if ( pSoldier->bNumHitsThisTurn == 0 && !(pSoldier->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 ) { // say close call quote! - TacticalCharacterDialogue( MercPtrs[ iCounter ], QUOTE_CLOSE_CALL ); - MercPtrs[ iCounter ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL; + TacticalCharacterDialogue( pSoldier, QUOTE_CLOSE_CALL ); + pSoldier->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL; } - MercPtrs[ iCounter ]->flags.fCloseCall = FALSE; + pSoldier->flags.fCloseCall = FALSE; } } } } - } else { @@ -1021,7 +1019,7 @@ void StartInterrupt( void ) UINT16 usCounter; for( usCounter = 0; usCounter < MAX_NUM_SOLDIERS; usCounter++ ) { - MercPtrs[ubInterrupter]->aiData.bMoved = FALSE; + ubInterrupter->aiData.bMoved = FALSE; DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: popping %d off of the interrupt queue", ubInterrupter ) ); @@ -1032,7 +1030,7 @@ void StartInterrupt( void ) { continue; } - else if (MercPtrs[ubInterrupter]->bTeam != bTeam) + else if (ubInterrupter->bTeam != bTeam) { break; } @@ -1046,12 +1044,12 @@ void StartInterrupt( void ) BuildAIListForTeam( bTeam ); // set to the new first interrupter - cnt = RemoveFirstAIListEntry(); + SoldierID id = RemoveFirstAIListEntry(); // sevenfm: RemoveFirstAIListEntry() can return NOBODY - if( cnt != NOBODY ) + if( id != NOBODY ) { - pTempSoldier = MercPtrs[ cnt ]; + pTempSoldier = id; // sevenfm: don't do anything if pTempSoldier is NULL if( pTempSoldier != NULL ) @@ -1116,16 +1114,15 @@ void StartInterrupt( void ) void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) { - UINT8 ubInterruptedSoldier; - SOLDIERTYPE * pSoldier; - SOLDIERTYPE * pTempSoldier; - INT32 cnt; - BOOLEAN fFound; - INT16 ubMinAPsToAttack; + SoldierID ubInterruptedSoldier; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pTempSoldier; + BOOLEAN fFound; + INT16 ubMinAPsToAttack; DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndInterrupt"); - for ( cnt = gubOutOfTurnPersons; cnt > 0; cnt-- ) + for ( UINT16 cnt = gubOutOfTurnPersons; cnt > 0; cnt-- ) { DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("ENDINT: Q position %d: %d", cnt, gubOutOfTurnOrder[ cnt ] ) ); } @@ -1143,9 +1140,10 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) } // Loop through all mercs and see if any passed on this interrupt - cnt = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; - for ( pTempSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pTempSoldier++) + SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id ) { + pTempSoldier = id; if ( pTempSoldier->bActive && pTempSoldier->bInSector && !pTempSoldier->aiData.bMoved && (pTempSoldier->bActionPoints == pTempSoldier->aiData.bIntStartAPs)) { ubMinAPsToAttack = MinAPsToAttack( pTempSoldier, pTempSoldier->sLastTarget, FALSE, 0 ); @@ -1162,58 +1160,58 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) // resume interrupted interrupt //hayden - if (!is_networked) + if ( !is_networked ) { StartInterrupt(); - } - else + } + else { - UINT8 nubFirstInterrupter; - INT8 nbTeam; - SOLDIERTYPE * npSoldier; - + SoldierID nubFirstInterrupter; + INT8 nbTeam; + SOLDIERTYPE *npSoldier; + nubFirstInterrupter = LATEST_INTERRUPT_GUY; - npSoldier = MercPtrs[nubFirstInterrupter]; + npSoldier = nubFirstInterrupter; nbTeam = npSoldier->bTeam; - + //pSoldier is interrupted //but its not available //needs calculating //npSoldier,nbTeam is interruptor //hayden #ifdef BETAVERSION - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"unchecked interrupt call area:(resume interrupted interrupt)..."); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"unchecked interrupt call area:(resume interrupted interrupt)..." ); #endif - - if ((nbTeam > 0) && (nbTeam <6 ) && is_server) // AI interrupt resume and im server + + if ( (nbTeam > 0) && (nbTeam < 6) && is_server ) // AI interrupt resume and im server { send_interrupt( npSoldier ); StartInterrupt(); - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Continuing interrupt with %s and AI", TeamNameStrings[npSoldier->bTeam]);//tried to use pSoldier, but its not available. find another way to get correct team + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Continuing interrupt with %s and AI", TeamNameStrings[npSoldier->bTeam] );//tried to use pSoldier, but its not available. find another way to get correct team } - else if(is_server && gTacticalStatus.ubCurrentTeam == 1)// resume AI interrupted and im server + else if ( is_server && gTacticalStatus.ubCurrentTeam == 1 )// resume AI interrupted and im server { //hayden send_interrupt( npSoldier ); - if(nbTeam !=0) - intAI(npSoldier); - else - StartInterrupt(); - - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Continuing interrupt of AI by %s", TeamNameStrings[npSoldier->bTeam]); + if ( nbTeam != 0 ) + intAI( npSoldier ); + else + StartInterrupt(); + + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Continuing interrupt of AI by %s", TeamNameStrings[npSoldier->bTeam] ); } - + #ifdef INTERRUPT_MP_DEADLOCK_FIX //its our turn//else// pure client awarding interrupt resume //its our turn - else if(gTacticalStatus.ubCurrentTeam == 0) + else if ( gTacticalStatus.ubCurrentTeam == 0 ) #else // pure client awarding interrupt resume else #endif { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Continuing interrupt with %s", TeamNameStrings[npSoldier->bTeam]);//this can be simplified if above comment is implemented + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Continuing interrupt with %s", TeamNameStrings[npSoldier->bTeam] );//this can be simplified if above comment is implemented //ClearIntList(); //hayden//may need more work. StartInterrupt(); @@ -1227,11 +1225,11 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: interrupt over, %d's team regains control", ubInterruptedSoldier ) ); - pSoldier = MercPtrs[ubInterruptedSoldier]; + pSoldier = ubInterruptedSoldier; - cnt = 0; - for ( pTempSoldier = MercPtrs[ cnt ]; cnt < MAX_NUM_SOLDIERS; cnt++,pTempSoldier++) + for ( SoldierID id = 0; id < MAX_NUM_SOLDIERS; ++id) { + pTempSoldier = id; if ( pTempSoldier->bActive ) { // AI guys only here... @@ -1289,14 +1287,14 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) gfHiddenInterrupt = FALSE; // If we can continue a move, do so! - if ( MercPtrs[ gusSelectedSoldier ]->flags.fNoAPToFinishMove && pSoldier->ubReasonCantFinishMove != REASON_STOPPED_SIGHT ) + if ( gusSelectedSoldier->flags.fNoAPToFinishMove && pSoldier->ubReasonCantFinishMove != REASON_STOPPED_SIGHT ) { // Continue - MercPtrs[ gusSelectedSoldier ]->AdjustNoAPToFinishMove( FALSE ); + gusSelectedSoldier->AdjustNoAPToFinishMove( FALSE ); - if ( MercPtrs[ gusSelectedSoldier ]->sGridNo != MercPtrs[ gusSelectedSoldier ]->pathing.sFinalDestination ) + if ( gusSelectedSoldier->sGridNo != gusSelectedSoldier->pathing.sFinalDestination ) { - MercPtrs[ gusSelectedSoldier ]->EVENT_GetNewSoldierPath( MercPtrs[ gusSelectedSoldier ]->pathing.sFinalDestination, MercPtrs[ gusSelectedSoldier ]->usUIMovementMode ); + gusSelectedSoldier->EVENT_GetNewSoldierPath( gusSelectedSoldier->pathing.sFinalDestination, gusSelectedSoldier->usUIMovementMode ); } else { @@ -1329,10 +1327,10 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) if ( gusSelectedSoldier != NOBODY ) { - SlideTo( NOWHERE, gusSelectedSoldier, NOBODY ,SETLOCATOR); + SlideTo( gusSelectedSoldier, SETLOCATOR); // Say ATTENTION SOUND... - MercPtrs[ gusSelectedSoldier ]->DoMercBattleSound( BATTLE_SOUND_ATTN1 ); + gusSelectedSoldier->DoMercBattleSound( BATTLE_SOUND_ATTN1 ); if ( gsInterfaceLevel == 1 ) { @@ -1370,9 +1368,10 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) fFound = FALSE; // rebuild list for this team if anyone on the team is still available - cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; - for ( pTempSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; cnt++,pTempSoldier++) + SoldierID id = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; + for ( ; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id ) { + pTempSoldier = id; if ( pTempSoldier->bActive && pTempSoldier->bInSector && pTempSoldier->stats.bLife >= OKLIFE ) { fFound = TRUE; @@ -1389,16 +1388,16 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) { // now bubble up everyone left in the interrupt queue, starting // at the front of the array - for (cnt = 1; cnt <= gubOutOfTurnPersons; cnt++) + for (UINT16 cnt = 1; cnt <= gubOutOfTurnPersons; cnt++) { MoveToFrontOfAIList( gubOutOfTurnOrder[ cnt ] ); } - cnt = RemoveFirstAIListEntry(); - if (cnt != NOBODY) + SoldierID id = RemoveFirstAIListEntry(); + if (id != NOBODY) { fFound = TRUE; - StartNPCAI( MercPtrs[ cnt ] ); + StartNPCAI( id ); } } @@ -1495,7 +1494,7 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) } -BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, INT8 bOldOppList) +BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, SoldierID ubOpponentID, INT8 bOldOppList) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StandardInterruptConditionsMet"); // UINT8 ubAniType; @@ -1539,7 +1538,7 @@ BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponent return(FALSE); } - pOpponent = MercPtrs[ ubOpponentID ]; + pOpponent = ubOpponentID; } else // no opponent, so controller of 'ptr' makes the call instead { @@ -1692,7 +1691,7 @@ BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponent // the selected character, ie. his friends... if ( pOpponent->bTeam == gbPlayerNum ) { - if ((ubOpponentID != gusSelectedSoldier) && (pSoldier->bSide != Menptr[gusSelectedSoldier].bSide)) + if ((ubOpponentID != gusSelectedSoldier) && (pSoldier->bSide != gusSelectedSoldier->bSide)) { return( FALSE ); } @@ -1714,7 +1713,7 @@ BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponent } /* old DG code for same: - if ((ubOpponentID != gusSelectedSoldier) && (pSoldier->bSide != Menptr[gusSelectedSoldier].bSide)) + if ((ubOpponentID != gusSelectedSoldier) && (pSoldier->bSide != gusSelectedSoldier->bSide)) { return(FALSE); } @@ -1797,7 +1796,7 @@ BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponent } -INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN fUseWatchSpots ) +INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, SoldierID ubOpponentID, BOOLEAN fUseWatchSpots ) { INT32 iPoints; INT8 bLightLevel; @@ -1825,8 +1824,8 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f { //iPoints = EffectiveExpLevel( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] ) - 2; // Snap: (do some proper rounding here) - iPoints = ( 20*EffectiveExpLevel( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] ) - + EffectiveAgility( MercPtrs[ pSoldier->ubRobotRemoteHolderID ], FALSE ) + 15 ) / 30 - 2; + iPoints = ( 20*EffectiveExpLevel( pSoldier->ubRobotRemoteHolderID ) + + EffectiveAgility( pSoldier->ubRobotRemoteHolderID, FALSE ) + 15 ) / 30 - 2; } else { @@ -1853,7 +1852,7 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f if (fUseWatchSpots && !(pSoldier->usSoldierFlagMask2 & SOLDIER_TRAIT_FOCUS)) { // if this is a previously noted spot of enemies, give bonus points! - iPoints += GetWatchedLocPoints( pSoldier->ubID, MercPtrs[ ubOpponentID ]->sGridNo, MercPtrs[ ubOpponentID ]->pathing.bLevel ); + iPoints += GetWatchedLocPoints( pSoldier->ubID, ubOpponentID->sGridNo, ubOpponentID->pathing.bLevel ); } // LOSE one point for each 2 additional opponents he currently sees, above 2 @@ -1882,7 +1881,7 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f // if soldier is still in shock from recent injuries, that penalizes him iPoints -= pSoldier->aiData.bShock; - ubDistance = (UINT8) PythSpacesAway( pSoldier->sGridNo, MercPtrs[ ubOpponentID ]->sGridNo ); + ubDistance = (UINT8) PythSpacesAway( pSoldier->sGridNo, ubOpponentID->sGridNo ); // if we are in combat mode - thus doing an interrupt rather than determine who gets first turn - // then give bonus @@ -1951,7 +1950,7 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f INT16 range = PythSpacesAway( pSoldier->sFocusGridNo, pSoldier->sGridNo ); INT16 radius = gSkillTraitValues.ubSNFocusRadius * range / 20; - INT16 range_opponent = PythSpacesAway( pSoldier->sFocusGridNo, MercPtrs[ubOpponentID]->sGridNo ); + INT16 range_opponent = PythSpacesAway( pSoldier->sFocusGridNo, ubOpponentID->sGridNo ); if ( range_opponent <= radius ) iPoints += gSkillTraitValues.sSNFocusInterruptBonus; @@ -2034,7 +2033,7 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f #endif if(is_networked) { - SOLDIERTYPE *pOpp = &Menptr[ubOpponentID]; + SOLDIERTYPE *pOpp = ubOpponentID; #ifdef JA2BETAVERSION ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_MPSYSTEM, L"Interrupt: '%s' vs '%s' = %d points.",pSoldier->name,pOpp->name, iPoints ); #endif @@ -2076,11 +2075,11 @@ BOOLEAN InterruptDuel( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent) } -void DeleteFromIntList( UINT8 ubIndex, BOOLEAN fCommunicate) +void DeleteFromIntList( UINT16 ubIndex, BOOLEAN fCommunicate) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"DeleteFromIntList"); - UINT8 ubLoop; - UINT8 ubID; + UINT16 ubLoop; + UINT16 ubID; if ( ubIndex > gubOutOfTurnPersons) { @@ -2118,10 +2117,10 @@ void DeleteFromIntList( UINT8 ubIndex, BOOLEAN fCommunicate) */ } -void AddToIntList( UINT8 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ) +void AddToIntList( UINT16 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"AddToIntList"); - UINT8 ubLoop; + UINT16 ubLoop; // ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%d added to int list", ubID ); DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: adding ID %d who %s", ubID, fGainControl ? "gains control" : "loses control" ) ); @@ -2182,11 +2181,11 @@ void AddToIntList( UINT8 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ) void VerifyOutOfTurnOrderArray() { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"VerifyOutOfTurnOrderArray"); - UINT8 ubTeamHighest[ MAXTEAMS ] = { 0 }; + UINT16 ubTeamHighest[ MAXTEAMS ] = { 0 }; UINT8 ubTeamsInList; - UINT8 ubNextInArrayOnTeam, ubNextIndex; + UINT16 ubNextInArrayOnTeam, ubNextIndex; UINT8 ubTeam; - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; BOOLEAN fFoundLoop = FALSE; for (ubLoop = 1; ubLoop <= gubOutOfTurnPersons; ubLoop++) @@ -2304,9 +2303,9 @@ void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInter { StartInterrupt(); } - else + else { - UINT8 nubFirstInterrupter; + UINT16 nubFirstInterrupter; INT8 nbTeam; SOLDIERTYPE * npSoldier; @@ -2356,7 +2355,7 @@ void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInter send_interrupt( npSoldier ); - SOLDIERTYPE* pMerc = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE* pMerc = gusSelectedSoldier; //AdjustNoAPToFinishMove( pMerc, TRUE ); pMerc->HaultSoldierFromSighting(TRUE); //pMerc->fTurningFromPronePosition = FALSE;// hmmm ?? @@ -2380,13 +2379,14 @@ void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInter void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,String("ResolveInterruptsVs: Soldier ID = %d, APs = %d (interrupt type = %d)",pSoldier->ubID,pSoldier->bActionPoints, ubInterruptType)); - UINT8 ubTeam, ubOpp; - UINT8 ubIntCnt; - UINT8 ubIntList[MAXMERCS]; + UINT8 ubTeam; + SoldierID ubOpp; + UINT16 ubIntCnt; + UINT16 ubIntList[MAXMERCS]; UINT8 ubIntDiff[MAXMERCS]; UINT8 ubSmallestDiff; - UINT8 ubSlot, ubSmallestSlot; - UINT8 ubLoop; + UINT16 ubSlot, ubSmallestSlot; + UINT16 ubLoop; BOOLEAN fIntOccurs; SOLDIERTYPE * pOpponent; BOOLEAN fControlChanged = FALSE; @@ -2402,9 +2402,9 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) // WDS fix broken interrupts (I hope...) if (/*gTacticalStatus.Team[ubTeam].bTeamActive &&*/ (gTacticalStatus.Team[ubTeam].bSide != pSoldier->bSide) && ubTeam != CIV_TEAM) { - for ( ubOpp = gTacticalStatus.Team[ ubTeam ].bFirstID; ubOpp <= gTacticalStatus.Team[ ubTeam ].bLastID; ubOpp++) + for ( ubOpp = gTacticalStatus.Team[ ubTeam ].bFirstID; ubOpp <= gTacticalStatus.Team[ ubTeam ].bLastID; ++ubOpp) { - pOpponent = MercPtrs[ubOpp]; + pOpponent = ubOpp; AssertNotNIL(pOpponent); if ( pOpponent->bActive && pOpponent->bInSector && (pOpponent->stats.bLife >= OKLIFE) && (pOpponent->bBreath >= OKBREATH) && !(pOpponent->bCollapsed) ) { @@ -2447,7 +2447,7 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) default: // interrupt is possible, run a duel DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, "Calculating int duel pts for onlooker in ResolveInterruptsVs" ); - pSoldier->aiData.bInterruptDuelPts = CalcInterruptDuelPts(pSoldier,pOpponent->ubID,TRUE); + pSoldier->aiData.bInterruptDuelPts = CalcInterruptDuelPts(pSoldier, pOpponent->ubID, TRUE); fIntOccurs = InterruptDuel(pOpponent,pSoldier); #ifdef DEBUG_INTERRUPTS if (fIntOccurs) @@ -2517,17 +2517,16 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) { // if anyone on this team is under AI control, remove // their AI control flag and put them on the queue instead of this guy - for ( ubLoop = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ubLoop++ ) + for ( SoldierID id = gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bFirstID; id <= gTacticalStatus.Team[ gTacticalStatus.ubCurrentTeam ].bLastID; ++id) { - if ( (MercPtrs[ ubLoop ]->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL) ) + if ( id->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL) { // this guy lost control - MercPtrs[ ubLoop ]->flags.uiStatusFlags &= (~SOLDIER_UNDERAICONTROL); - AddToIntList( ubLoop, FALSE, TRUE); + id->flags.uiStatusFlags &= (~SOLDIER_UNDERAICONTROL); + AddToIntList( id, FALSE, TRUE); break; } } - } else { @@ -2590,8 +2589,8 @@ BOOLEAN SaveTeamTurnsToTheSaveGameFile( HWFILE hFile ) TEAM_TURN_SAVE_STRUCT TeamTurnStruct; //Save the gubTurn Order Array - FileWrite( hFile, gubOutOfTurnOrder, sizeof( UINT8 ) * MAXMERCS, &uiNumBytesWritten ); - if( uiNumBytesWritten != sizeof( UINT8 ) * MAXMERCS ) + FileWrite( hFile, gubOutOfTurnOrder, sizeof( UINT16 ) * MAXMERCS, &uiNumBytesWritten ); + if( uiNumBytesWritten != sizeof( UINT16 ) * MAXMERCS ) { return( FALSE ); } @@ -2623,8 +2622,8 @@ BOOLEAN LoadTeamTurnsFromTheSavedGameFile( HWFILE hFile ) TEAM_TURN_SAVE_STRUCT TeamTurnStruct; //Load the gubTurn Order Array - FileRead( hFile, gubOutOfTurnOrder, sizeof( UINT8 ) * MAXMERCS, &uiNumBytesRead ); - if( uiNumBytesRead != sizeof( UINT8 ) * MAXMERCS ) + FileRead( hFile, gubOutOfTurnOrder, sizeof( UINT16 ) * MAXMERCS, &uiNumBytesRead ); + if( uiNumBytesRead != sizeof( UINT16 ) * MAXMERCS ) { return( FALSE ); } diff --git a/Tactical/TeamTurns.h b/Tactical/TeamTurns.h index 664f6b70..d592ed02 100644 --- a/Tactical/TeamTurns.h +++ b/Tactical/TeamTurns.h @@ -3,19 +3,19 @@ #include "Soldier Control.h" -extern UINT8 gubOutOfTurnPersons; -extern UINT8 gubOutOfTurnOrder[MAXMERCS] ; +extern UINT16 gubOutOfTurnPersons; +extern UINT16 gubOutOfTurnOrder[MAXMERCS] ; extern BOOLEAN gfHiddenInterrupt; extern BOOLEAN gfHiddenTurnbased; #define INTERRUPT_QUEUED (gubOutOfTurnPersons > 0) -extern BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, INT8 bOldOppList); -extern INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN fUseWatchSpots ); +extern BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, SoldierID ubOpponentID, INT8 bOldOppList); +extern INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, SoldierID ubOpponentID, BOOLEAN fUseWatchSpots ); extern void EndAITurn( void ); extern void DisplayHiddenInterrupt( SOLDIERTYPE * pSoldier ); extern BOOLEAN InterruptDuel( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent); -extern void AddToIntList( UINT8 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ); +extern void AddToIntList( UINT16 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ); extern void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInterruptType); void FreezeInterfaceForEnemyTurn( void ); @@ -30,4 +30,4 @@ void EndTurnEvents( void ); BOOLEAN NPCFirstDraw( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTargetSoldier ); -#endif +#endif diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 0bd3c26d..01bdaeaa 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -284,7 +284,7 @@ void ItemCreationCallBack( UINT8 ubResult ); void CheatCreateItem(); // silversurfer: added for merc portrait swapping in tactical void SwapMercPortraits ( SOLDIERTYPE *pSoldier, INT8 bDirection ); -extern INT8 GetTeamSlotFromPlayerID( UINT8 ubID ); +extern INT8 GetTeamSlotFromPlayerID( SoldierID ubID ); extern FACETYPE *gpCurrentTalkingFace; // Flugente: toggle display of enemy role indicators @@ -493,7 +493,7 @@ void QueryTBLeftButton( UINT32 *puiNewEvent ) { BOOLEAN fResult; - if ( ( fResult = UIOKMoveDestination( MercPtrs[ gusSelectedSoldier ], usMapPos ) ) == 1 ) + if ( ( fResult = UIOKMoveDestination( gusSelectedSoldier, usMapPos ) ) == 1 ) { // ATE: CHECK IF WE CAN GET TO POSITION // Check if we are not in combat @@ -573,7 +573,7 @@ void QueryTBLeftButton( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) { // Select guy - if ( ( guiUIFullTargetFlags & SELECTED_MERC) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC ) && !( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) + if ( ( guiUIFullTargetFlags & SELECTED_MERC) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC ) && !( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) { *puiNewEvent = M_CHANGE_TO_ADJPOS_MODE; fIgnoreLeftUp = FALSE; @@ -998,10 +998,10 @@ void QueryTBRightButton( UINT32 *puiNewEvent ) gfFirstCycleMovementStarted = TRUE; // OK, set this guy's movement mode to crawling fo rthat we will start cycling in run..... - if ( MercPtrs[ gusSelectedSoldier ]->usUIMovementMode != RUNNING ) + if ( gusSelectedSoldier->usUIMovementMode != RUNNING ) { // ATE: UNLESS WE ARE IN RUNNING MODE ALREADY - MercPtrs[ gusSelectedSoldier ]->usUIMovementMode = CRAWLING; + gusSelectedSoldier->usUIMovementMode = CRAWLING; } } @@ -1016,7 +1016,7 @@ void QueryTBRightButton( UINT32 *puiNewEvent ) { gfBeginBurstSpreadTracking = FALSE; gfRTClickLeftHoldIntercepted = TRUE; - MercPtrs[ gusSelectedSoldier ]->flags.fDoSpread = FALSE; + gusSelectedSoldier->flags.fDoSpread = FALSE; fClickHoldIntercepted = TRUE; *puiNewEvent = A_END_ACTION; gCurrentUIMode = MOVE_MODE; @@ -1070,7 +1070,7 @@ void QueryTBRightButton( UINT32 *puiNewEvent ) case MOVE_MODE: // anv: don't switch if passengers are blocked from attacking - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) { SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( pSoldier->iVehicleId ); @@ -1250,10 +1250,10 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent ) if( gfUIFullTargetFound ) { // ATE: Don't do this automatically for enemies...... - if ( MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM ) + if ( gusUIFullTargetID->bTeam != ENEMY_TEAM ) { uiMoveTargetSoldierId = gusUIFullTargetID; - if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && !ValidQuickExchangePosition( ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && !ValidQuickExchangePosition( ) ) { *puiNewEvent = T_CHANGE_TO_TALKING; return; @@ -1276,11 +1276,11 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) //if ( gfUIFullTargetFound ) { - if ( IsValidTargetMerc( (UINT8)gusUIFullTargetID ) ) + if ( IsValidTargetMerc( gusUIFullTargetID ) ) { guiUITargetSoldierId = gusUIFullTargetID; - if ( MercPtrs[ gusUIFullTargetID ]->bTeam != gbPlayerNum ) + if ( gusUIFullTargetID->bTeam != gbPlayerNum ) { fOnValidGuy = TRUE; //ddd turn off flag that indicates aim/autofire mode adjustment (aimed burst/auto) @@ -1627,8 +1627,8 @@ void CheatCreateItem( ) CreateItem( usitem, status, &newobj ); (newobj)[0]->data.bTemperature = temperature; - if ( !AutoPlaceObject( MercPtrs[ gusSelectedSoldier ], &newobj, FALSE ) ) - AddItemToPool( MercPtrs[ gusSelectedSoldier ]->sGridNo, &newobj, 1, 0, 0, -1 ); + if ( !AutoPlaceObject( gusSelectedSoldier, &newobj, FALSE ) ) + AddItemToPool( gusSelectedSoldier->sGridNo, &newobj, 1, 0, 0, -1 ); } } @@ -2121,7 +2121,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) gfRTClickLeftHoldIntercepted = TRUE; if ( gusSelectedSoldier != NOBODY ) { - MercPtrs[ gusSelectedSoldier ]->flags.fDoSpread = FALSE; + gusSelectedSoldier->flags.fDoSpread = FALSE; } // Before anything, delete popup box! @@ -2209,9 +2209,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // sevenfm: unready weapon for all selected if (!fFound) { - UINT8 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; - for (SOLDIERTYPE *pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; cnt++, pSoldier++) + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for (; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) { + SOLDIERTYPE *pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED && WeaponReady(pSoldier)) { pSoldier->InternalSoldierReadyWeapon(pSoldier->ubDirection, TRUE, FALSE); @@ -2223,11 +2224,11 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) continue; } else if (gusSelectedSoldier != NOBODY && - MercPtrs[gusSelectedSoldier] && - !(gAnimControl[MercPtrs[gusSelectedSoldier]->usAnimState].uiFlags & ANIM_STATIONARY)) + gusSelectedSoldier && + !(gAnimControl[gusSelectedSoldier->usAnimState].uiFlags & ANIM_STATIONARY)) { // If soldier is not stationary, stop - MercPtrs[gusSelectedSoldier]->StopSoldier(); + gusSelectedSoldier->StopSoldier(); *puiNewEvent = A_CHANGE_TO_MOVE; continue; } @@ -2235,21 +2236,21 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // sevenfm: also stop dragging if (gusSelectedSoldier != NOBODY && - MercPtrs[gusSelectedSoldier] && - MercPtrs[gusSelectedSoldier]->IsDragging(false)) + gusSelectedSoldier && + gusSelectedSoldier->IsDragging(false)) { - MercPtrs[gusSelectedSoldier]->CancelDrag(); - DirtyMercPanelInterface(MercPtrs[gusSelectedSoldier], DIRTYLEVEL2); + gusSelectedSoldier->CancelDrag(); + DirtyMercPanelInterface(gusSelectedSoldier, DIRTYLEVEL2); continue; } // sevenfm: unready weapon if (gusSelectedSoldier != NOBODY && - MercPtrs[gusSelectedSoldier] && - WeaponReady(MercPtrs[gusSelectedSoldier])) + gusSelectedSoldier && + WeaponReady(gusSelectedSoldier)) { - MercPtrs[gusSelectedSoldier]->InternalSoldierReadyWeapon(MercPtrs[gusSelectedSoldier]->ubDirection, TRUE, FALSE); - HandleSight(MercPtrs[gusSelectedSoldier], SIGHT_LOOK); + gusSelectedSoldier->InternalSoldierReadyWeapon(gusSelectedSoldier->ubDirection, TRUE, FALSE); + HandleSight(gusSelectedSoldier, SIGHT_LOOK); continue; } } @@ -2313,19 +2314,19 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // { // if ( gusSelectedSoldier != NOBODY ) // { - // if ( gTacticalStatus.uiFlags & TURNBASED && !MercPtrs[ gusSelectedSoldier ]->fDontChargeReadyAPs ) + // if ( gTacticalStatus.uiFlags & TURNBASED && !gusSelectedSoldier->fDontChargeReadyAPs ) // { - // INT16 apCost = GetAPsToReadyWeapon( MercPtrs[ gusSelectedSoldier ], 0 ); - // if (MercPtrs[ gusSelectedSoldier ]->bActionPoints >= apCost ) + // INT16 apCost = GetAPsToReadyWeapon( gusSelectedSoldier, 0 ); + // if (gusSelectedSoldier->bActionPoints >= apCost ) // { - // DeductPoints( MercPtrs[ gusSelectedSoldier ],apCost , 0 ); - // DirtyMercPanelInterface( MercPtrs[ gusSelectedSoldier ], DIRTYLEVEL2 ); - // SoldierReadyWeapon( MercPtrs[ gusSelectedSoldier ] ); + // DeductPoints( gusSelectedSoldier,apCost , 0 ); + // DirtyMercPanelInterface( gusSelectedSoldier, DIRTYLEVEL2 ); + // SoldierReadyWeapon( gusSelectedSoldier ); // } // } // else // { - // SoldierReadyWeapon( MercPtrs[ gusSelectedSoldier ] ); + // SoldierReadyWeapon( gusSelectedSoldier ); // } // } @@ -2344,7 +2345,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) for ( i = 0; i < 1000; i++ ) { - CalculateLaunchItemChanceToGetThrough( MercPtrs[ gusSelectedSoldier ], &(MercPtrs[ gusSelectedSoldier ]->inv[ HANDPOS ] ), usMapPos, 0, 0, &sGridNo, TRUE, (INT8 *)&ubLevel, TRUE ); + CalculateLaunchItemChanceToGetThrough( gusSelectedSoldier, &(gusSelectedSoldier->inv[ HANDPOS ] ), usMapPos, 0, 0, &sGridNo, TRUE, (INT8 *)&ubLevel, TRUE ); } ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Physics 100 times: %d", ( GetJA2Clock( ) - iTime ) ); @@ -2412,7 +2413,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) //Select next squad iCurrentSquad = CurrentSquad( ); - pNewSoldier = FindNextActiveSquad( MercPtrs[ gusSelectedSoldier ] ); + pNewSoldier = FindNextActiveSquad( gusSelectedSoldier ); if ( pNewSoldier->bAssignment != iCurrentSquad ) { @@ -2434,9 +2435,9 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if ( gusSelectedSoldier != NOBODY ) { //Select next merc - UINT8 bID; + UINT16 bID; - bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); + bID = FindNextMercInTeamPanel( gusSelectedSoldier, FALSE, FALSE ); HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); @@ -2458,7 +2459,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( fCtrl ) { if ( gusSelectedSoldier != NOBODY ) - SwapMercPortraits( MercPtrs[ gusSelectedSoldier ], -1 ); + SwapMercPortraits( gusSelectedSoldier, -1 ); } break; @@ -2467,7 +2468,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( fCtrl ) { if ( gusSelectedSoldier != NOBODY ) - SwapMercPortraits( MercPtrs[ gusSelectedSoldier ], 1 ); + SwapMercPortraits( gusSelectedSoldier, 1 ); } break; @@ -2498,10 +2499,10 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // Lalien: commented out, to fix "end move & LOS bug" (same button has two different actions) // if ( gusSelectedSoldier != NOBODY ) // { - // if ( CheckForMercContMove( MercPtrs[ gusSelectedSoldier ] ) ) + // if ( CheckForMercContMove( gusSelectedSoldier ) ) // { // // Continue - // ContinueMercMovement( MercPtrs[ gusSelectedSoldier ] ); + // ContinueMercMovement( gusSelectedSoldier ); // ErasePath( TRUE ); // } // } @@ -2521,7 +2522,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel if ( ( gpItemPointer == NULL ) ) { - GotoHeigherStance( MercPtrs[ gusSelectedSoldier ] ); + GotoHeigherStance( gusSelectedSoldier ); } } } @@ -2541,7 +2542,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel if ( ( gpItemPointer == NULL ) ) { - GotoLowerStance( MercPtrs[ gusSelectedSoldier ] ); + GotoLowerStance( gusSelectedSoldier ); } } } @@ -2921,7 +2922,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if ( gusSelectedSoldier != NOBODY ) { - HandleTacticalFunctionSelection(MercPtrs[ gusSelectedSoldier ], usMapPos ); + HandleTacticalFunctionSelection(gusSelectedSoldier, usMapPos ); } } else if ( fAlt ) @@ -2994,8 +2995,8 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if (CHEATER_CHEAT_LEVEL()) { //ChangeSoldiersBodyType( TANK_NW, TRUE ); - // MercPtrs[ gusSelectedSoldier ]->flags.uiStatusFlags |= SOLDIER_CREATURE; - //EVENT_InitNewSoldierAnim( MercPtrs[ gusSelectedSoldier ], CRIPPLE_BEG, 0 , TRUE ); + // gusSelectedSoldier->flags.uiStatusFlags |= SOLDIER_CREATURE; + //EVENT_InitNewSoldierAnim( gusSelectedSoldier, CRIPPLE_BEG, 0 , TRUE ); } } else if( fAlt ) @@ -3034,12 +3035,12 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if (CHEATER_CHEAT_LEVEL()) { - MercPtrs[gusSelectedSoldier]->EVENT_InitNewSoldierAnim(KID_SKIPPING, 0, TRUE); + gusSelectedSoldier->EVENT_InitNewSoldierAnim(KID_SKIPPING, 0, TRUE); //ChangeSoldiersBodyType( LARVAE_MONSTER, TRUE ); - //MercPtrs[ gusSelectedSoldier ]->usAttackingWeapon = TANK_CANNON; + //gusSelectedSoldier->usAttackingWeapon = TANK_CANNON; //LocateSoldier( gusSelectedSoldier, FALSE ); - //EVENT_FireSoldierWeapon( MercPtrs[ gusSelectedSoldier ], sMapPos ); + //EVENT_FireSoldierWeapon( gusSelectedSoldier, sMapPos ); } } else if( fAlt ) @@ -3510,7 +3511,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; if ( pSoldier->aiData.bOppCnt > 0 ) { @@ -3529,7 +3530,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) //CHRISL: drop all items if ( gusSelectedSoldier != NOBODY && !(gTacticalStatus.fEnemyInSector) ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE *pSoldier = gusSelectedSoldier; for(int i = BODYPOSFINAL; iinv[i].exists() == true) @@ -3593,12 +3594,12 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) { //Display the range to the target - DisplayRangeToTarget( MercPtrs[gusSelectedSoldier], MercPtrs[gusUIFullTargetID]->sGridNo ); + DisplayRangeToTarget( gusSelectedSoldier, gusUIFullTargetID->sGridNo ); } else { //Display the range to the target - DisplayRangeToTarget( MercPtrs[gusSelectedSoldier], usGridNo ); + DisplayRangeToTarget( gusSelectedSoldier, usGridNo ); } } @@ -4022,7 +4023,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) //CHRISL: Swap gunsling if ( gusSelectedSoldier != NOBODY ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE *pSoldier = gusSelectedSoldier; if ( fAlt ) // switch to knife, or from knife to gun @@ -4125,14 +4126,16 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // swap sungoggles and nightgoggles / put on gas masks case 'N': - SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; + { + SOLDIERTYPE *pTeamSoldier; + SoldierID id; // emergency command: everybody in this sector puts on gasmasks if ( fAlt ) { - for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier = MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++ ) + for ( id = gTacticalStatus.Team[gbPlayerNum].bFirstID; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; if ( !AM_A_ROBOT( pTeamSoldier ) && pTeamSoldier->stats.bLife >= OKLIFE && (pTeamSoldier->sSectorX == gWorldSectorX) && (pTeamSoldier->sSectorY == gWorldSectorY) && (pTeamSoldier->bSectorZ == gbWorldSectorZ) ) { WearGasMaskIfAvailable( pTeamSoldier ); @@ -4149,37 +4152,39 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { BOOLEAN fToNightVision; - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + for ( id = gTacticalStatus.Team[gbPlayerNum].bFirstID; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) + pTeamSoldier = id; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) ) { if ( pTeamSoldier->inv[HEAD1POS].exists() || pTeamSoldier->inv[HEAD2POS].exists() ) { - fToNightVision = ( Item[pTeamSoldier->inv[HEAD1POS].usItem].brightlightvisionrangebonus > 0 || Item[pTeamSoldier->inv[HEAD2POS].usItem].brightlightvisionrangebonus > 0 ); + fToNightVision = (Item[pTeamSoldier->inv[HEAD1POS].usItem].brightlightvisionrangebonus > 0 || Item[pTeamSoldier->inv[HEAD2POS].usItem].brightlightvisionrangebonus > 0); break; } - if ( bLoop == gTacticalStatus.Team[gbPlayerNum].bLastID ) + if ( id == gTacticalStatus.Team[gbPlayerNum].bLastID ) { // Default to night or day based on game hour fToNightVision = NightTime(); } } } - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + for ( id = gTacticalStatus.Team[gbPlayerNum].bFirstID; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { + pTeamSoldier = id; // HEADROCK HAM 3.5: When this INI setting is enabled, ALL mercs in the current sector will do a goggle swap. - if (gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector) + if ( gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector ) { if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->sSectorX == gWorldSectorX && pTeamSoldier->sSectorY == gWorldSectorY && pTeamSoldier->bSectorZ == gbWorldSectorZ && !AM_A_ROBOT( pTeamSoldier ) ) { - SwapGogglesUniformly(pTeamSoldier, fToNightVision); + SwapGogglesUniformly( pTeamSoldier, fToNightVision ); } } else { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) ) { - SwapGogglesUniformly(pTeamSoldier, fToNightVision); + SwapGogglesUniformly( pTeamSoldier, fToNightVision ); } } } @@ -4189,7 +4194,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) HandleTBSwapGoogles(); } break; - + } case 'n': if ( !AreInMeanwhile() ) { @@ -4324,7 +4329,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if ( CHEATER_CHEAT_LEVEL( ) ) { - ReloadWeapon( MercPtrs[ gusSelectedSoldier ], MercPtrs[ gusSelectedSoldier ]->ubAttackingHand ); + ReloadWeapon( gusSelectedSoldier, gusSelectedSoldier->ubAttackingHand ); } else HandleTBReload(); @@ -4355,7 +4360,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if ( fAlt ) { - RemoveCharacterFromSquads( MercPtrs[gusSelectedSoldier] ); + RemoveCharacterFromSquads( gusSelectedSoldier ); } else if ( !fDisableMapInterfaceDueToBattle && !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && !is_networked ) { @@ -4475,7 +4480,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) else if ( fAlt && fShift ) { //resort Team by ubID - SortSquadByID(MercPtrs[gusSelectedSoldier]->bTeam); + SortSquadByID(gusSelectedSoldier->bTeam); } else { @@ -4597,7 +4602,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if ( gusSelectedSoldier != NOBODY ) { - CreateItem( FLAMETHROWER, 100, &( MercPtrs[ gusSelectedSoldier ]->inv[ HANDPOS ]) ); + CreateItem( FLAMETHROWER, 100, &( gusSelectedSoldier->inv[ HANDPOS ]) ); } } } @@ -4642,13 +4647,13 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) //Check if we have a good selected guy if ( gusSelectedSoldier != NOBODY ) { - pSoldier1 = MercPtrs[ gusSelectedSoldier ]; + pSoldier1 = gusSelectedSoldier; BOOLEAN fFoundGoodTarget = FALSE; if ( gfUIFullTargetFound ) { // Get soldier... - pSoldier2 = MercPtrs[ gusUIFullTargetID ]; + pSoldier2 = gusUIFullTargetID; // Check if both OK.... if ( pSoldier1->stats.bLife >= OKLIFE && pSoldier2->ubID != gusSelectedSoldier ) @@ -4879,7 +4884,7 @@ BOOLEAN HandleCheckForExitArrowsInput( BOOLEAN fAdjustConfirm ) } else if( gfLoneEPCAttemptingTraversal ) { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, pExitingSectorHelpText[ EXIT_GUI_ESCORTED_CHARACTERS_CANT_LEAVE_SECTOR_ALONE_STR ], MercPtrs[ gusSelectedSoldier ]->GetName() ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, pExitingSectorHelpText[ EXIT_GUI_ESCORTED_CHARACTERS_CANT_LEAVE_SECTOR_ALONE_STR ], gusSelectedSoldier->GetName() ); gfLoneEPCAttemptingTraversal = FALSE; } else if( gubLoneMercAttemptingToAbandonEPCs ) @@ -4887,26 +4892,26 @@ BOOLEAN HandleCheckForExitArrowsInput( BOOLEAN fAdjustConfirm ) CHAR16 str[256]; if( gubLoneMercAttemptingToAbandonEPCs == 1 ) { //Use the singular version of the string - if( gMercProfiles[ MercPtrs[ gusSelectedSoldier ]->ubProfile ].bSex == MALE ) + if( gMercProfiles[ gusSelectedSoldier->ubProfile ].bSex == MALE ) { //male singular - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_SINGULAR ], MercPtrs[ gusSelectedSoldier ]->GetName(), - MercPtrs[ gbPotentiallyAbandonedEPCSlotID ]->GetName() ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_SINGULAR ], gusSelectedSoldier->GetName(), + gbPotentiallyAbandonedEPCSlotID->GetName() ); } else { //female singular - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_SINGULAR ], MercPtrs[ gusSelectedSoldier ]->GetName(), - MercPtrs[ gbPotentiallyAbandonedEPCSlotID ]->GetName() ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_SINGULAR ], gusSelectedSoldier->GetName(), + gbPotentiallyAbandonedEPCSlotID->GetName() ); } } else { //Use the plural version of the string - if( gMercProfiles[ MercPtrs[ gusSelectedSoldier ]->ubProfile ].bSex == MALE ) + if( gMercProfiles[ gusSelectedSoldier->ubProfile ].bSex == MALE ) { //male plural - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_PLURAL ], MercPtrs[ gusSelectedSoldier ]->GetName() ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_PLURAL ], gusSelectedSoldier->GetName() ); } else { //female plural - swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_PLURAL ], MercPtrs[ gusSelectedSoldier ]->GetName() ); + swprintf( str, pExitingSectorHelpText[ EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_PLURAL ], gusSelectedSoldier->GetName() ); } } ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, str ); @@ -4918,7 +4923,7 @@ BOOLEAN HandleCheckForExitArrowsInput( BOOLEAN fAdjustConfirm ) } else { - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ MERC_IS_TOO_FAR_AWAY_STR ], MercPtrs[ gusSelectedSoldier ]->GetName() ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ MERC_IS_TOO_FAR_AWAY_STR ], gusSelectedSoldier->GetName() ); } return( TRUE ); @@ -5148,7 +5153,7 @@ void CycleSelectedMercsItem() if( gusSelectedSoldier != NOBODY ) { // Get soldier... - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; UINT16 usOldHandItem = pSoldier->inv[HANDPOS].usItem; @@ -5377,7 +5382,7 @@ void SetBurstMode() { if ( gusSelectedSoldier != NOBODY ) { - ChangeWeaponMode( MercPtrs[ gusSelectedSoldier ] ); + ChangeWeaponMode( gusSelectedSoldier ); } } @@ -5386,15 +5391,16 @@ void SetScopeMode( INT32 usMapPos ) if ( gusSelectedSoldier != NOBODY ) { if ( GetMouseMapPos( &usMapPos )) - ChangeScopeMode( MercPtrs[ gusSelectedSoldier ], usMapPos ); + ChangeScopeMode( gusSelectedSoldier, usMapPos ); else - ChangeScopeMode( MercPtrs[ gusSelectedSoldier ], NOWHERE ); + ChangeScopeMode( gusSelectedSoldier, NOWHERE ); // reevaluate sight - ManLooksForOtherTeams( MercPtrs[ gusSelectedSoldier ] ); + ManLooksForOtherTeams( gusSelectedSoldier ); } } + void ObliterateSector() { INT32 cnt; @@ -5406,8 +5412,8 @@ void ObliterateSector() #ifdef JA2BETAVERSION ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Obliterating Sector!" ); #endif - - for ( pTSoldier = MercPtrs[ cnt ]; cnt < MAX_NUM_SOLDIERS; pTSoldier++, cnt++ ) + const INT32 end = MAX_NUM_SOLDIERS; + for ( pTSoldier = MercPtrs[ cnt ]; cnt < end; pTSoldier++, cnt++ ) { if ( pTSoldier->bActive && !pTSoldier->aiData.bNeutral && (pTSoldier->bSide != gbPlayerNum ) ) { @@ -5424,11 +5430,12 @@ void ObliterateSector() // CreateAnimationTile( &AniParams ); //PlayJA2Sample( EXPLOSION_1, RATE_11025, MIDVOLUME, 1, MIDDLEPAN ); - pTSoldier->EVENT_SoldierGotHit( 1, 400, 0, pTSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pTSoldier->bAimShotLocation, 0, NOWHERE ); + pTSoldier->EVENT_SoldierGotHit( 1, 400, 0, pTSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, pTSoldier->bAimShotLocation, 0, NOWHERE ); } } } + void RandomizeMercProfile() { SOLDIERTYPE *pSoldier; @@ -5452,8 +5459,6 @@ void CreateNextCivType() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5472,7 +5477,8 @@ void CreateNextCivType() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + SoldierID iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5508,8 +5514,6 @@ void CreateCow() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5520,7 +5524,8 @@ void CreateCow() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + SoldierID iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5538,8 +5543,6 @@ void CreateBloodCat() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5550,7 +5553,8 @@ void CreateBloodCat() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + SoldierID iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5568,8 +5572,6 @@ void CreatePlayerControlledCow() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = 12; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5581,7 +5583,8 @@ void CreatePlayerControlledCow() RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + SoldierID iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5645,7 +5648,7 @@ void CreatePlayerControlledMonster() if ( GetMouseMapPos( &usMapPos ) ) { SOLDIERCREATE_STRUCT MercCreateStruct; - INT8 iNewIndex; + SoldierID iNewIndex; MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; @@ -5662,7 +5665,7 @@ void CreatePlayerControlledMonster() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); } @@ -5680,7 +5683,7 @@ INT8 CheckForAndHandleHandleVehicleInteractiveClick( SOLDIERTYPE *pSoldier, UINT if ( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; // anv: added condition - make sure we won't put vehicle in another vehicle if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && OKUseVehicle( pTSoldier->ubProfile ) && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) ) @@ -5825,20 +5828,20 @@ void HandleHandCursorClick( INT32 usMapPos, UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) { // Flugente: allow stealing if the other guy is an enemy, OR if we are on the same team - if ( (( guiUIFullTargetFlags & ENEMY_MERC ) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC )) || (AllowedToStealFromTeamMate(pSoldier->ubID, (UINT8)gusUIFullTargetID) && guiUIFullTargetFlags & OWNED_MERC) ) + if ( (( guiUIFullTargetFlags & ENEMY_MERC ) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC )) || (AllowedToStealFromTeamMate(pSoldier->ubID, gusUIFullTargetID) && guiUIFullTargetFlags & OWNED_MERC) ) { - sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); if ( sActionGridNo == -1 ) { sActionGridNo = sAdjustedGridNo; } // Steal! - sAPCost = GetAPsToStealItem( pSoldier, MercPtrs[ gusUIFullTargetID ], sActionGridNo ); // SANDRO - added target variable + sAPCost = GetAPsToStealItem( pSoldier, gusUIFullTargetID, sActionGridNo ); // SANDRO - added target variable if ( EnoughPoints( pSoldier, sAPCost, 0, TRUE ) ) { - MercStealFromMerc( pSoldier, MercPtrs[ gusUIFullTargetID ] ); + MercStealFromMerc( pSoldier, gusUIFullTargetID ); *puiNewEvent = A_CHANGE_TO_MOVE; @@ -5965,7 +5968,7 @@ void HandleHandCursorRightClick( INT32 usMapPos, UINT32 *puiNewEvent ) if( gfUIFullTargetFound ) { - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; if( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && OKUseVehicle( pTSoldier->ubProfile ) ) { // anv: if we are passengers, only show menu when clicking on vehicle we're in @@ -6061,10 +6064,10 @@ INT8 HandleMoveModeInteractiveClick( INT32 usMapPos, UINT32 *puiNewEvent ) if ( ValidQuickExchangePosition( ) ) { // Check if we can... - if ( CanExchangePlaces( pSoldier, MercPtrs[ gusUIFullTargetID ], TRUE ) ) + if ( CanExchangePlaces( pSoldier, gusUIFullTargetID, TRUE ) ) { gpExchangeSoldier1 = pSoldier; - gpExchangeSoldier2 = MercPtrs[ gusUIFullTargetID ]; + gpExchangeSoldier2 = gusUIFullTargetID; // Do message box... //DoMessageBox( MSG_BOX_BASIC_STYLE, TacticalStr[ EXCHANGE_PLACES_REQUESTER ], GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, ExchangeMessageBoxCallBack, NULL ); @@ -6118,14 +6121,14 @@ INT8 HandleMoveModeInteractiveClick( INT32 usMapPos, UINT32 *puiNewEvent ) if ( fContinue ) { - sActionGridNo = FindAdjacentGridEx( MercPtrs[ gusSelectedSoldier ], sIntTileGridNo, &ubDirection, NULL, FALSE, TRUE ); + sActionGridNo = FindAdjacentGridEx( gusSelectedSoldier, sIntTileGridNo, &ubDirection, NULL, FALSE, TRUE ); if ( sActionGridNo == -1 ) { sActionGridNo = sIntTileGridNo; } // If this is not the same tile as ours, check if we can get to dest! - if ( sActionGridNo != MercPtrs[ gusSelectedSoldier ]->sGridNo && gsCurrentActionPoints == 0 ) + if ( sActionGridNo != gusSelectedSoldier->sGridNo && gsCurrentActionPoints == 0 ) { ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ NO_PATH ] ); bReturnCode = -1; @@ -6260,7 +6263,7 @@ void ChangeCurrentSquad( INT32 iSquad ) void HandleSelectMercSlot( UINT8 ubPanelSlot, INT8 bCode ) { - UINT8 ubID; + SoldierID ubID; if ( GetPlayerIDFromInterfaceTeamSlot( ubPanelSlot, &ubID ) ) { @@ -6274,7 +6277,6 @@ void HandleSelectMercSlot( UINT8 ubPanelSlot, INT8 bCode ) void TestMeanWhile( INT32 iID ) { MEANWHILE_DEFINITION MeanwhileDef; - INT32 cnt; SOLDIERTYPE *pSoldier; MeanwhileDef.sSectorX = gModSettings.ubMeanwhilePalaceSectorX; //3 @@ -6291,10 +6293,11 @@ void TestMeanWhile( INT32 iID ) // Loop through our mercs and set gridnos once some found..... // look for all mercs on the same team, - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // Are we a POW in this sector? if ( pSoldier->bActive && pSoldier->bInSector ) { @@ -6314,7 +6317,7 @@ void TestMeanWhile( INT32 iID ) void EscapeUILock( ) { //UNLOCK UI - UnSetUIBusy( (UINT8)gusSelectedSoldier ); + UnSetUIBusy( gusSelectedSoldier ); // Decrease global busy counter... gTacticalStatus.ubAttackBusyCount = 0; @@ -6366,16 +6369,16 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight ) { // If we have multiple guys selected, make all change stance! SOLDIERTYPE * pSoldier; - INT32 cnt; if ( gTacticalStatus.fAtLeastOneGuyOnMultiSelect && !( gTacticalStatus.uiFlags & INCOMBAT ) ) { // OK, loop through all guys who are 'multi-selected' and // check if our currently selected guy is amoung the // lucky few.. if not, change to a guy who is... - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -6406,7 +6409,7 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight ) { if( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ (UINT8)gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; // silversurfer: If we decide to stand up or press "s" again while we are standing we should reset movement to walk mode. // If we want to run we have to press "r" which is handled elsewhere. if ( ubAnimHeight == ANIM_STAND ) @@ -6488,16 +6491,16 @@ void HandleStealthChangeFromUIKeys( ) { // If we have multiple guys selected, make all change stance! SOLDIERTYPE * pSoldier; - INT32 cnt; if ( gTacticalStatus.fAtLeastOneGuyOnMultiSelect && !( gTacticalStatus.uiFlags & INCOMBAT ) ) { // OK, loop through all guys who are 'multi-selected' and // check if our currently selected guy is amoung the // lucky few.. if not, change to a guy who is... - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && !AM_A_ROBOT( pSoldier ) && pSoldier->bInSector ) { if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTI_SELECTED ) @@ -6511,9 +6514,9 @@ void HandleStealthChangeFromUIKeys( ) { if( gusSelectedSoldier != NOBODY ) { - if ( !AM_A_ROBOT( MercPtrs[ gusSelectedSoldier ] ) ) + if ( !AM_A_ROBOT( gusSelectedSoldier ) ) { - ToggleStealthMode( MercPtrs[ gusSelectedSoldier ] ); + ToggleStealthMode( gusSelectedSoldier ); } } } @@ -7236,12 +7239,12 @@ void SwapMercPortraits ( SOLDIERTYPE *pSoldier, INT8 bDirection ) if ( gpCurrentTalkingFace != NULL ) return; - UINT8 ubSourceMerc = (UINT8)gusSelectedSoldier; - UINT8 ubTargetMerc; + SoldierID ubSourceMerc = gusSelectedSoldier; + SoldierID ubTargetMerc; INT32 iSourceFace; INT32 iTargetFace; UINT8 ubGroupID = pSoldier->ubGroupID; - INT8 bOldPosition = GetTeamSlotFromPlayerID ( MercPtrs[ ubSourceMerc ]->ubID ); + INT8 bOldPosition = GetTeamSlotFromPlayerID ( ubSourceMerc ); INT8 bNewPosition = bOldPosition + bDirection; SOLDIERTYPE TempMenptr = Menptr[ ubSourceMerc ]; @@ -7269,15 +7272,15 @@ void SwapMercPortraits ( SOLDIERTYPE *pSoldier, INT8 bDirection ) ubTargetMerc = gTeamPanel[ bNewPosition ].ubID; // Hey, you're dead. I don't want to swap with you. - if ( MercPtrs[ubTargetMerc]->stats.bLife <= 0 ) + if ( ubTargetMerc->stats.bLife <= 0 ) { RebuildCurrentSquad( ); return; } // store face indexes - iSourceFace = MercPtrs[ ubSourceMerc ]->iFaceIndex; - iTargetFace = MercPtrs[ ubTargetMerc ]->iFaceIndex; + iSourceFace = ubSourceMerc->iFaceIndex; + iTargetFace = ubTargetMerc->iFaceIndex; FACETYPE TempFace = gFacesData[ iSourceFace ]; // swap the data @@ -7302,11 +7305,11 @@ void SwapMercPortraits ( SOLDIERTYPE *pSoldier, INT8 bDirection ) Menptr[ ubTargetMerc ].iFaceIndex = iTargetFace; // update group info - RemovePlayerFromGroup( ubGroupID, MercPtrs[ ubSourceMerc ] ); - RemovePlayerFromGroup( ubGroupID, MercPtrs[ ubTargetMerc ] ); - AddPlayerToGroup( ubGroupID, MercPtrs[ ubSourceMerc ] ); - AddPlayerToGroup( ubGroupID, MercPtrs[ ubTargetMerc ] ); - SortSquadByID( MercPtrs[ ubSourceMerc ]->bAssignment ); + RemovePlayerFromGroup( ubGroupID, ubSourceMerc ); + RemovePlayerFromGroup( ubGroupID, ubTargetMerc ); + AddPlayerToGroup( ubGroupID, ubSourceMerc ); + AddPlayerToGroup( ubGroupID, ubTargetMerc ); + SortSquadByID( ubSourceMerc->bAssignment ); RebuildCurrentSquad( ); // don't forget to renew selection of merc @@ -7468,7 +7471,7 @@ void HandleAltMouseTBX2Button(UINT32 *puiNewEvent) // sevenfm: these functions keep original mouse code functionality void HandleMouseTBWheel( void ) { - UINT8 bID; + UINT16 bID; if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) @@ -7478,12 +7481,12 @@ void HandleMouseTBWheel( void ) //change stance ->DOWN if ( _KeyDown( ALT ) ) { if ( (gusSelectedSoldier != NOBODY) && ( gpItemPointer == NULL ) ) - GotoLowerStance(MercPtrs[ gusSelectedSoldier ]); + GotoLowerStance(gusSelectedSoldier); return; } if ( gusSelectedSoldier != NOBODY ) { - bID = FindPrevActiveAndAliveMerc( MercPtrs[ gusSelectedSoldier ], TRUE, TRUE ); + bID = FindPrevActiveAndAliveMerc( gusSelectedSoldier, TRUE, TRUE ); HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); ErasePath(TRUE); gfPlotNewMovement = TRUE; @@ -7497,14 +7500,14 @@ void HandleMouseTBWheel( void ) //change stance ->UP if ( _KeyDown( ALT ) ) { if ( (gusSelectedSoldier != NOBODY) && ( gpItemPointer == NULL ) ) - GotoHeigherStance( MercPtrs[ gusSelectedSoldier ] ); + GotoHeigherStance( gusSelectedSoldier ); return; } //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"wheel %d", gViewportRegion.WheelState); if ( gusSelectedSoldier != NOBODY ) { //Select next merc - bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); + bID = FindNextMercInTeamPanel( gusSelectedSoldier, FALSE, FALSE ); HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); ErasePath(TRUE); gfPlotNewMovement = TRUE; @@ -7549,7 +7552,7 @@ void HandleMouseTBX1Button( UINT32 *puiNewEvent ) void HandleMouseTBX2Button( UINT32 *puiNewEvent ) { if ( _KeyDown( ALT ) ) - AutoReload( MercPtrs[ gusSelectedSoldier ] ); + AutoReload( gusSelectedSoldier ); else HandleTBToggleStealthAll(); } @@ -7682,42 +7685,45 @@ void HandleTBJumpThroughWindow( void ){ } void HandleTBToggleStealthAll( void ) { - // Toggle squad's stealth mode..... - // For each guy on squad... - SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; - BOOLEAN fStealthOn = FALSE; + // Toggle squad's stealth mode..... + // For each guy on squad... + SOLDIERTYPE *pTeamSoldier; + SoldierID bLoop; + BOOLEAN fStealthOn = FALSE; - // Check if at least one guy is on stealth.... - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) - { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) ) - { - if ( pTeamSoldier->bStealthMode ) - fStealthOn = TRUE; - } - } + // Check if at least one guy is on stealth.... + for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) ) + { + if ( pTeamSoldier->bStealthMode ) + fStealthOn = TRUE; + } + } - fStealthOn = !fStealthOn; + fStealthOn = !fStealthOn; - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) - { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) - { - if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID ) - gfUIStanceDifferent = TRUE; - pTeamSoldier->bStealthMode = fStealthOn; - } - } + for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) + { + if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID ) + gfUIStanceDifferent = TRUE; + pTeamSoldier->bStealthMode = fStealthOn; + } + } - fInterfacePanelDirty = DIRTYLEVEL2; + fInterfacePanelDirty = DIRTYLEVEL2; - // OK, display message - if ( fStealthOn ) - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ON_STEALTHMODE ] ); - else - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] ); + // OK, display message + if ( fStealthOn ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ON_STEALTHMODE ] ); + else + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] ); } + void HandleTBToggleFireMode( void ) { // toggle fire mode @@ -7725,23 +7731,23 @@ void HandleTBToggleFireMode( void ) ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ BURSTMODE_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) SetBurstMode(); } + void HandleTBSelectAllMercs( void ) { - SOLDIERTYPE * pSoldier; - INT32 cnt; - - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++, pSoldier++ ) - { - + SOLDIERTYPE *pSoldier; + SoldierID cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt ) + { + pSoldier = cnt; // Check if this guy is OK to control.... - if ( OK_CONTROLLABLE_MERC( pSoldier ) && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER ) ) ) + if ( OK_CONTROLLABLE_MERC( pSoldier ) && !(pSoldier->flags.uiStatusFlags & (SOLDIER_VEHICLE | SOLDIER_PASSENGER | SOLDIER_DRIVER)) ) { pSoldier->flags.uiStatusFlags |= SOLDIER_MULTI_SELECTED; - } - } + } + } EndMultiSoldierSelection( TRUE ); } + void HandleTBCycleThroughKnownEnemies( void ) { if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT) ) @@ -7750,6 +7756,7 @@ void HandleTBCycleThroughKnownEnemies( void ) CycleThroughKnownEnemies( ); } } + void HandleTBCycleThroughKnownEnemiesBackward( void ) { if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT) ) @@ -7758,13 +7765,14 @@ void HandleTBCycleThroughKnownEnemiesBackward( void ) CycleThroughKnownEnemies( TRUE ); } } + void HandleTBCycleThroughVisibleEnemies( void ) { SOLDIERTYPE *pSoldier; if ( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; if ( pSoldier->aiData.bOppCnt > 0 ) { @@ -7783,7 +7791,7 @@ void HandleTBCycleThroughVisibleEnemiesBackward( void ) if ( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; if ( pSoldier->aiData.bOppCnt > 0 ) { @@ -7811,9 +7819,9 @@ void HandleTBChangeLevel( void ) void HandleTBSwapHands( void ) { // swap primary & secondary hand - if ( gusSelectedSoldier != NOBODY && !AM_A_ROBOT( MercPtrs[ gusSelectedSoldier ] )) + if ( gusSelectedSoldier != NOBODY && !AM_A_ROBOT( gusSelectedSoldier )) { - SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE *pSoldier = gusSelectedSoldier; UINT16 usOldHandItem = pSoldier->inv[HANDPOS].usItem; SwapHandItems( pSoldier ); pSoldier->ReLoadSoldierAnimationDueToHandItemChange( usOldHandItem, pSoldier->inv[HANDPOS].usItem ); @@ -7828,7 +7836,7 @@ void HandleTBSwapGunsling( void ) if ( gusSelectedSoldier != NOBODY && UsingNewInventorySystem() == true) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; pSoldier->SwitchWeapons( ); } } @@ -7836,7 +7844,7 @@ void HandleTBSwapKnife( void ) { if ( gusSelectedSoldier != NOBODY && UsingNewInventorySystem() == true) { - SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE *pSoldier = gusSelectedSoldier; pSoldier->SwitchWeapons( TRUE ); } } @@ -7844,17 +7852,17 @@ void HandleTBSwapSidearm( void ) { if ( gusSelectedSoldier != NOBODY && UsingNewInventorySystem() == true) { - SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE *pSoldier = gusSelectedSoldier; pSoldier->SwitchWeapons( FALSE, TRUE ); } } void HandleTBSwapGoogles( void ) { SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + for ( SoldierID bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) { + pTeamSoldier = bLoop; // HEADROCK HAM 3.5: When this INI setting is enabled, ALL mercs in the current sector will do a goggle swap. if (gGameExternalOptions.fGoggleSwapAffectsAllMercsInSector) { @@ -7944,274 +7952,274 @@ void HandleTBToggleStealth( void ) } void HandleTBReload( void ) { - AutoReload( MercPtrs[ gusSelectedSoldier ] ); + AutoReload( gusSelectedSoldier ); } void HandleTBReloadAll( void ) { - if (! ( gTacticalStatus.fEnemyInSector ) ) + if ( !(gTacticalStatus.fEnemyInSector) ) + { + SOLDIERTYPE *pTeamSoldier; + SoldierID bLoop; + UINT16 bullets; + OBJECTTYPE *pGun, *pAmmo, *pAmmoMags; + + // Search for soldier + for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) ) + { + // Search for gun in soldier inventory + UINT32 invsize = pTeamSoldier->inv.size(); + for ( UINT32 bLoop2 = 0; bLoop2 < invsize; ++bLoop2 ) { - SOLDIERTYPE *pTeamSoldier; - UINT8 bLoop; - UINT16 bullets; - OBJECTTYPE *pGun, *pAmmo, *pAmmoMags; - - // Search for soldier - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + if ( (Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) ) { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) + pGun = &(pTeamSoldier->inv[bLoop2]); + + UINT16 gunmagsize = GetMagSize( pGun ); + + //if magazine is not full + if ( (*pGun)[0]->data.gun.ubGunShotsLeft < gunmagsize ) { - // Search for gun in soldier inventory - UINT32 invsize = pTeamSoldier->inv.size(); - for (UINT32 bLoop2 = 0; bLoop2 < invsize; ++bLoop2) + // Search for ammo in sector + for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; ++uiLoop ) { - if ( (Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) ) + if ( (gWorldItems[uiLoop].bVisible == TRUE) && (gWorldItems[uiLoop].fExists) && (gWorldItems[uiLoop].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[uiLoop].usFlags & WORLD_ITEM_ARMED_BOMB) )//item exists, is reachable, is visible and is not trapped { - pGun = &(pTeamSoldier->inv[bLoop2]); - - UINT16 gunmagsize = GetMagSize( pGun ); - - //if magazine is not full - if ( (*pGun)[0]->data.gun.ubGunShotsLeft < gunmagsize ) + if ( (Item[gWorldItems[uiLoop].object.usItem].usItemClass & IC_AMMO) ) // the item is ammo { - // Search for ammo in sector - for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; ++uiLoop ) + pAmmo = &(gWorldItems[uiLoop].object); + + if ( CompatibleAmmoForGun( pAmmo, pGun ) ) // can use the ammo with this gun { - if ( (gWorldItems[ uiLoop ].bVisible == TRUE) && (gWorldItems[ uiLoop ].fExists) && (gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_ARMED_BOMB) )//item exists, is reachable, is visible and is not trapped + // same ammo type in gun and magazine + if ( Magazine[Item[(*pGun)[0]->data.gun.usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) { - if ( ( Item[ gWorldItems[ uiLoop ].object.usItem ].usItemClass & IC_AMMO ) ) // the item is ammo - { - pAmmo = &( gWorldItems[ uiLoop ].object ); - - if ( CompatibleAmmoForGun( pAmmo, pGun ) ) // can use the ammo with this gun - { - // same ammo type in gun and magazine - if ( Magazine[Item[(*pGun)[0]->data.gun.usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) - { - ReloadGun( pTeamSoldier, pGun, pAmmo ); - } - - if ((*pAmmo)[0]->data.ubShotsLeft == 0) - { - RemoveItemFromPool( gWorldItems[ uiLoop ].sGridNo, uiLoop, gWorldItems[ uiLoop ].ubLevel ); - } - - // if gun is full, we can stop this - if ( (*pGun)[0]->data.gun.ubGunShotsLeft >= gunmagsize ) - break; - } - } + ReloadGun( pTeamSoldier, pGun, pAmmo ); } + + if ( (*pAmmo)[0]->data.ubShotsLeft == 0 ) + { + RemoveItemFromPool( gWorldItems[uiLoop].sGridNo, uiLoop, gWorldItems[uiLoop].ubLevel ); + } + + // if gun is full, we can stop this + if ( (*pGun)[0]->data.gun.ubGunShotsLeft >= gunmagsize ) + break; } } - //CHRISL: if not enough ammo in sector, reload using ammo carried in inventory - if ( (*pGun)[0]->data.gun.ubGunShotsLeft < gunmagsize ) - { - AutoReload( pTeamSoldier ); - } } } } - } - - //MM: loop thru the soldiers again (lazy copy/paste :p). could do it all at once, but then there may not be enough ammo from the world items to fill everyone's guns first - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) - { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) + //CHRISL: if not enough ammo in sector, reload using ammo carried in inventory + if ( (*pGun)[0]->data.gun.ubGunShotsLeft < gunmagsize ) { - // Search for ammo in soldier inventory - UINT32 invsize = pTeamSoldier->inv.size(); - for (UINT32 bLoop2 = 0; bLoop2 < invsize; ++bLoop2) - { - if ( Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & IC_AMMO ) - { - pAmmoMags = &(pTeamSoldier->inv[bLoop2]); - - for ( UINT16 stackMag = 0; stackMag < (*pAmmoMags).ubNumberOfObjects; stackMag++ ) - { - if ( (*pAmmoMags)[stackMag]->data.ubShotsLeft < Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize ) - { - // Search for ammo in sector - for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; ++uiLoop ) - { - if ( (gWorldItems[ uiLoop ].bVisible == TRUE) && (gWorldItems[ uiLoop ].fExists) && (gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_ARMED_BOMB) )//item exists, is reachable, is visible and is not trapped - { - if ( ( Item[ gWorldItems[ uiLoop ].object.usItem ].usItemClass & IC_AMMO ) ) // the item is ammo - { - pAmmo = &( gWorldItems[ uiLoop ].object ); - - if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubCalibre == Magazine[Item[pAmmo->usItem].ubClassIndex].ubCalibre ) // same calibre - { - // same ammo type - if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) - { - bullets = Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize - (*pAmmoMags)[stackMag]->data.ubShotsLeft; - - if ((*pAmmo)[0]->data.ubShotsLeft < bullets) - bullets = (*pAmmo)[0]->data.ubShotsLeft; - - (*pAmmoMags)[stackMag]->data.ubShotsLeft += bullets; - (*pAmmo)[0]->data.ubShotsLeft -= bullets; - - fCharacterInfoPanelDirty = TRUE; - fInterfacePanelDirty = DIRTYLEVEL2; - } - - if ((*pAmmo)[0]->data.ubShotsLeft == 0) - { - RemoveItemFromPool( gWorldItems[ uiLoop ].sGridNo, uiLoop, gWorldItems[ uiLoop ].ubLevel ); - } - } - } - } - } - - //MM: if magazines still are partly empty, look through inventory for boxes and crates - if ( (*pAmmoMags)[stackMag]->data.ubShotsLeft < Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize ) - { - UINT32 invsize = pTeamSoldier->inv.size(); - for (UINT32 uiLoop = 0; uiLoop < invsize; ++uiLoop) - { - if ( (Item[pTeamSoldier->inv[uiLoop].usItem].usItemClass & IC_AMMO) && Magazine[Item[pTeamSoldier->inv[uiLoop].usItem].ubClassIndex].ubMagType >= AMMO_BOX ) - { - pAmmo = &(pTeamSoldier->inv[uiLoop]); - - if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubCalibre == Magazine[Item[pAmmo->usItem].ubClassIndex].ubCalibre ) // same calibre - { - // same ammo type - if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) - { - bullets = Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize - (*pAmmoMags)[stackMag]->data.ubShotsLeft; - - if ((*pAmmo)[0]->data.ubShotsLeft < bullets) - bullets = (*pAmmo)[0]->data.ubShotsLeft; - - (*pAmmoMags)[stackMag]->data.ubShotsLeft += bullets; - (*pAmmo)[0]->data.ubShotsLeft -= bullets; - - fCharacterInfoPanelDirty = TRUE; - fInterfacePanelDirty = DIRTYLEVEL2; - } - - if ((*pAmmo)[0]->data.ubShotsLeft == 0) - DeleteObj(pAmmo); - } - } - } - } - } - } - - if (IsWeaponAttached(pGun, IC_GUN)) - { - OBJECTTYPE *pGun2 = FindAttachedWeapon(pGun, IC_GUN); - - UINT16 gunmagsize2 = GetMagSize( pGun2 ); - - if ( (*pGun2)[0]->data.gun.ubGunShotsLeft < gunmagsize2 ) - { - // Search for ammo in sector - for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; ++uiLoop ) - { - if ( (gWorldItems[ uiLoop ].bVisible == TRUE) && (gWorldItems[ uiLoop ].fExists) && (gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_ARMED_BOMB) )//item exists, is reachable, is visible and is not trapped - { - if ( ( Item[ gWorldItems[ uiLoop ].object.usItem ].usItemClass & IC_AMMO ) ) // the item is ammo - { - pAmmo = &( gWorldItems[ uiLoop ].object ); - - if ( CompatibleAmmoForGun( pAmmo, pGun2 ) ) // can use the ammo with this gun - { - // same ammo type in gun and magazine - if ( Magazine[Item[(*pGun2)[0]->data.gun.usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) - { - ReloadGun( pTeamSoldier, pGun2, pAmmo ); - } - - if ((*pAmmo)[0]->data.ubShotsLeft == 0) - { - RemoveItemFromPool( gWorldItems[ uiLoop ].sGridNo, uiLoop, gWorldItems[ uiLoop ].ubLevel ); - } - - // if gun is full, we can stop this - if ( (*pGun2)[0]->data.gun.ubGunShotsLeft >= gunmagsize2 ) - break; - } - } - } - } - } - - //CHRISL: if not enough ammo in sector, reload using ammo carried in inventory - if ( (*pGun2)[0]->data.gun.ubGunShotsLeft < gunmagsize2 ) - { - AutoReload( pTeamSoldier ); - } - } - } - } + AutoReload( pTeamSoldier ); } } } - else + } + } + + //MM: loop thru the soldiers again (lazy copy/paste :p). could do it all at once, but then there may not be enough ammo from the world items to fill everyone's guns first + for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) ) + { + // Search for ammo in soldier inventory + UINT32 invsize = pTeamSoldier->inv.size(); + for ( UINT32 bLoop2 = 0; bLoop2 < invsize; ++bLoop2 ) { - SOLDIERTYPE *pTeamSoldier; - UINT8 bLoop; - OBJECTTYPE *pGun, *pAmmo; - - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop, pTeamSoldier++) + if ( Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & IC_AMMO ) { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) - { - if ( (Item[pTeamSoldier->inv[HANDPOS].usItem].usItemClass & (IC_GUN | IC_LAUNCHER) ) ) - { - if ( ( gTacticalStatus.uiFlags & INCOMBAT ) ) - { - // Flugente: check for underbarrel weapons and use that object if necessary - pGun = pTeamSoldier->GetUsedWeapon( &(pTeamSoldier->inv[HANDPOS]) ); + pAmmoMags = &(pTeamSoldier->inv[bLoop2]); - //magazine is not full - if ( (*pGun)[0]->data.gun.ubGunShotsLeft < GetMagSize( pGun ) ) + for ( UINT16 stackMag = 0; stackMag < (*pAmmoMags).ubNumberOfObjects; stackMag++ ) + { + if ( (*pAmmoMags)[stackMag]->data.ubShotsLeft < Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize ) + { + // Search for ammo in sector + for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; ++uiLoop ) + { + if ( (gWorldItems[uiLoop].bVisible == TRUE) && (gWorldItems[uiLoop].fExists) && (gWorldItems[uiLoop].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[uiLoop].usFlags & WORLD_ITEM_ARMED_BOMB) )//item exists, is reachable, is visible and is not trapped { - AutoReload( pTeamSoldier ); + if ( (Item[gWorldItems[uiLoop].object.usItem].usItemClass & IC_AMMO) ) // the item is ammo + { + pAmmo = &(gWorldItems[uiLoop].object); + + if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubCalibre == Magazine[Item[pAmmo->usItem].ubClassIndex].ubCalibre ) // same calibre + { + // same ammo type + if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) + { + bullets = Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize - (*pAmmoMags)[stackMag]->data.ubShotsLeft; + + if ( (*pAmmo)[0]->data.ubShotsLeft < bullets ) + bullets = (*pAmmo)[0]->data.ubShotsLeft; + + (*pAmmoMags)[stackMag]->data.ubShotsLeft += bullets; + (*pAmmo)[0]->data.ubShotsLeft -= bullets; + + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + } + + if ( (*pAmmo)[0]->data.ubShotsLeft == 0 ) + { + RemoveItemFromPool( gWorldItems[uiLoop].sGridNo, uiLoop, gWorldItems[uiLoop].ubLevel ); + } + } + } } } - else + + //MM: if magazines still are partly empty, look through inventory for boxes and crates + if ( (*pAmmoMags)[stackMag]->data.ubShotsLeft < Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize ) { - // Search for gun in soldier inventory UINT32 invsize = pTeamSoldier->inv.size(); - for (UINT32 bLoop2 = 0; bLoop2 < invsize; ++bLoop2) + for ( UINT32 uiLoop = 0; uiLoop < invsize; ++uiLoop ) { - if ( (Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) ) + if ( (Item[pTeamSoldier->inv[uiLoop].usItem].usItemClass & IC_AMMO) && Magazine[Item[pTeamSoldier->inv[uiLoop].usItem].ubClassIndex].ubMagType >= AMMO_BOX ) { - pGun = &(pTeamSoldier->inv[bLoop2]); + pAmmo = &(pTeamSoldier->inv[uiLoop]); - UINT16 gunmagsize = GetMagSize( pGun ); - - //if magazine is not full - if ( (*pGun)[0]->data.gun.ubGunShotsLeft < gunmagsize ) + if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubCalibre == Magazine[Item[pAmmo->usItem].ubClassIndex].ubCalibre ) // same calibre { - // Search for ammo in soldier inventory - for ( UINT32 uiLoop = 0; uiLoop < invsize; ++uiLoop ) + // same ammo type + if ( Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) { - if ( (Item[pTeamSoldier->inv[uiLoop].usItem].usItemClass & IC_AMMO ) ) // the item is ammo - { - pAmmo = &(pTeamSoldier->inv[uiLoop]); + bullets = Magazine[Item[pAmmoMags->usItem].ubClassIndex].ubMagSize - (*pAmmoMags)[stackMag]->data.ubShotsLeft; - if ( CompatibleAmmoForGun( pAmmo, pGun ) ) // can use the ammo with this gun - { - // same ammo type in gun and magazine - if ( Magazine[Item[(*pGun)[0]->data.gun.usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) - { - ReloadGun( pTeamSoldier, pGun, pAmmo ); + if ( (*pAmmo)[0]->data.ubShotsLeft < bullets ) + bullets = (*pAmmo)[0]->data.ubShotsLeft; - fCharacterInfoPanelDirty = TRUE; - fInterfacePanelDirty = DIRTYLEVEL2; + (*pAmmoMags)[stackMag]->data.ubShotsLeft += bullets; + (*pAmmo)[0]->data.ubShotsLeft -= bullets; - // if gun is full, we can stop this - if ( (*pGun)[0]->data.gun.ubGunShotsLeft >= gunmagsize ) - break; - } - } - } + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + } + + if ( (*pAmmo)[0]->data.ubShotsLeft == 0 ) + DeleteObj( pAmmo ); + } + } + } + } + } + } + + if ( IsWeaponAttached( pGun, IC_GUN ) ) + { + OBJECTTYPE *pGun2 = FindAttachedWeapon( pGun, IC_GUN ); + + UINT16 gunmagsize2 = GetMagSize( pGun2 ); + + if ( (*pGun2)[0]->data.gun.ubGunShotsLeft < gunmagsize2 ) + { + // Search for ammo in sector + for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; ++uiLoop ) + { + if ( (gWorldItems[uiLoop].bVisible == TRUE) && (gWorldItems[uiLoop].fExists) && (gWorldItems[uiLoop].usFlags & WORLD_ITEM_REACHABLE) && !(gWorldItems[uiLoop].usFlags & WORLD_ITEM_ARMED_BOMB) )//item exists, is reachable, is visible and is not trapped + { + if ( (Item[gWorldItems[uiLoop].object.usItem].usItemClass & IC_AMMO) ) // the item is ammo + { + pAmmo = &(gWorldItems[uiLoop].object); + + if ( CompatibleAmmoForGun( pAmmo, pGun2 ) ) // can use the ammo with this gun + { + // same ammo type in gun and magazine + if ( Magazine[Item[(*pGun2)[0]->data.gun.usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) + { + ReloadGun( pTeamSoldier, pGun2, pAmmo ); + } + + if ( (*pAmmo)[0]->data.ubShotsLeft == 0 ) + { + RemoveItemFromPool( gWorldItems[uiLoop].sGridNo, uiLoop, gWorldItems[uiLoop].ubLevel ); + } + + // if gun is full, we can stop this + if ( (*pGun2)[0]->data.gun.ubGunShotsLeft >= gunmagsize2 ) + break; + } + } + } + } + } + + //CHRISL: if not enough ammo in sector, reload using ammo carried in inventory + if ( (*pGun2)[0]->data.gun.ubGunShotsLeft < gunmagsize2 ) + { + AutoReload( pTeamSoldier ); + } + } + } + } + } + } + } + else + { + SOLDIERTYPE *pTeamSoldier; + SoldierID bLoop; + OBJECTTYPE *pGun, *pAmmo; + + for ( bLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) + { + pTeamSoldier = bLoop; + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad() && !AM_A_ROBOT( pTeamSoldier ) ) + { + if ( (Item[pTeamSoldier->inv[HANDPOS].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) ) + { + if ( (gTacticalStatus.uiFlags & INCOMBAT) ) + { + // Flugente: check for underbarrel weapons and use that object if necessary + pGun = pTeamSoldier->GetUsedWeapon( &(pTeamSoldier->inv[HANDPOS]) ); + + //magazine is not full + if ( (*pGun)[0]->data.gun.ubGunShotsLeft < GetMagSize( pGun ) ) + { + AutoReload( pTeamSoldier ); + } + } + else + { + // Search for gun in soldier inventory + UINT32 invsize = pTeamSoldier->inv.size(); + for ( UINT32 bLoop2 = 0; bLoop2 < invsize; ++bLoop2 ) + { + if ( (Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & (IC_GUN | IC_LAUNCHER)) ) + { + pGun = &(pTeamSoldier->inv[bLoop2]); + + UINT16 gunmagsize = GetMagSize( pGun ); + + //if magazine is not full + if ( (*pGun)[0]->data.gun.ubGunShotsLeft < gunmagsize ) + { + // Search for ammo in soldier inventory + for ( UINT32 uiLoop = 0; uiLoop < invsize; ++uiLoop ) + { + if ( (Item[pTeamSoldier->inv[uiLoop].usItem].usItemClass & IC_AMMO) ) // the item is ammo + { + pAmmo = &(pTeamSoldier->inv[uiLoop]); + + if ( CompatibleAmmoForGun( pAmmo, pGun ) ) // can use the ammo with this gun + { + // same ammo type in gun and magazine + if ( Magazine[Item[(*pGun)[0]->data.gun.usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType ) + { + ReloadGun( pTeamSoldier, pGun, pAmmo ); + + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + + // if gun is full, we can stop this + if ( (*pGun)[0]->data.gun.ubGunShotsLeft >= gunmagsize ) + break; } } } @@ -8221,6 +8229,9 @@ void HandleTBReloadAll( void ) } } } + } + } + } } void HandleTBShowCover( void ) @@ -8245,19 +8256,19 @@ void HandleTBToggleTrapNetworkView( void ) void HandleTBGotoHigherStance( void ) { if ( (gusSelectedSoldier != NOBODY) && ( gpItemPointer == NULL ) ) - GotoHeigherStance(MercPtrs[ gusSelectedSoldier ]); + GotoHeigherStance(gusSelectedSoldier); } void HandleTBGotoLowerStance( void ) { if ( (gusSelectedSoldier != NOBODY) && ( gpItemPointer == NULL ) ) - GotoLowerStance( MercPtrs[ gusSelectedSoldier ] ); + GotoLowerStance( gusSelectedSoldier ); } void HandleTBLocateNextMerc( void ) { - UINT8 bID; + UINT16 bID; if ( gusSelectedSoldier != NOBODY ) { //Select next merc - bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); + bID = FindNextMercInTeamPanel( gusSelectedSoldier, FALSE, FALSE ); HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); // Center to guy.... LocateSoldier( gusSelectedSoldier, SETLOCATOR ); @@ -8265,10 +8276,10 @@ void HandleTBLocateNextMerc( void ) } void HandleTBLocatePrevMerc( void ) { - UINT8 bID; + UINT16 bID; if ( gusSelectedSoldier != NOBODY ) { - bID = FindPrevActiveAndAliveMerc( MercPtrs[ gusSelectedSoldier ], TRUE, TRUE ); + bID = FindPrevActiveAndAliveMerc( gusSelectedSoldier, TRUE, TRUE ); HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); // Center to guy.... LocateSoldier( gusSelectedSoldier, SETLOCATOR ); @@ -8314,9 +8325,9 @@ void HandleTBBackpacks(void) bool backpackDropped = false; SOLDIERTYPE* pTeamSoldier; - for (UINT8 ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++) + for ( SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) { - pTeamSoldier = MercPtrs[ubLoop]; + pTeamSoldier = ubLoop; if (OK_CONTROLLABLE_MERC(pTeamSoldier) && pTeamSoldier->flags.DropPackFlag) { @@ -8339,31 +8350,30 @@ void HandleTBBackpacks(void) void HandleTBDropBackpacks( void ) { //if( UsingNewInventorySystem() && gusSelectedSoldier != NOBODY ) - if( UsingNewInventorySystem() ) + if ( UsingNewInventorySystem() ) { - //SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; - SOLDIERTYPE *pTeamSoldier; - UINT8 ubLoop; + //SOLDIERTYPE *pSoldier = gusSelectedSoldier; + SOLDIERTYPE *pTeamSoldier; INT16 sAPCost = APBPConstants[AP_BACK_PACK]; INT32 iBPCost = APBPConstants[BP_BACK_PACK]; - for( ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++ ) + for ( SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) { - pTeamSoldier=MercPtrs[ ubLoop ]; + pTeamSoldier = ubLoop; - if( OK_CONTROLLABLE_MERC( pTeamSoldier ) && + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && OK_INTERRUPT_MERC( pTeamSoldier ) && !AM_A_ROBOT( pTeamSoldier ) && - EnoughPoints(pTeamSoldier, sAPCost, iBPCost, FALSE) && + EnoughPoints( pTeamSoldier, sAPCost, iBPCost, FALSE ) && //pTeamSoldier->bAssignment == pSoldier->bAssignment && pTeamSoldier->bAssignment < ON_DUTY && pTeamSoldier->inv[BPACKPOCKPOS].exists() && !pTeamSoldier->flags.DropPackFlag ) - { - if( ChangeDropPackStatus(pTeamSoldier, TRUE) ) + { + if ( ChangeDropPackStatus( pTeamSoldier, TRUE ) ) { - ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_SOLDIER_DROP], pTeamSoldier->GetName()); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_SOLDIER_DROP], pTeamSoldier->GetName() ); } } } @@ -8379,16 +8389,15 @@ void HandleTBPickUpBackpacks( void ) //if( UsingNewInventorySystem() && gusSelectedSoldier != NOBODY ) if( UsingNewInventorySystem() ) { - //SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + //SOLDIERTYPE *pSoldier = gusSelectedSoldier; SOLDIERTYPE *pTeamSoldier; - UINT8 ubLoop; INT16 sAPCost = APBPConstants[AP_BACK_PACK]; INT32 iBPCost = APBPConstants[BP_BACK_PACK]; - for( ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++ ) + for( SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) { - pTeamSoldier=MercPtrs[ubLoop]; + pTeamSoldier = ubLoop; if( OK_CONTROLLABLE_MERC( pTeamSoldier ) && OK_INTERRUPT_MERC( pTeamSoldier ) && @@ -8414,7 +8423,7 @@ void HandleTBPickUpBackpacks( void ) void HandleTBSoldierRun( void ) { - SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; + SOLDIERTYPE *pSoldier = gusSelectedSoldier; if ( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER ) ) { pSoldier = GetSoldierStructureForVehicle( pSoldier->iVehicleId ); @@ -8428,7 +8437,7 @@ void HandleTBSoldierRun( void ) && pSoldier->usUIMovementMode != WALKING_DUAL_RDY && pSoldier->usUIMovementMode != WALKING_ALTERNATIVE_RDY ) { - UIHandleSoldierStanceChange( (UINT8)pSoldier->ubID, ANIM_STAND ); + UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_STAND ); pSoldier->flags.fUIMovementFast = 1; } else @@ -8864,7 +8873,7 @@ void HandleTacticalStoreInvItem( void ) UINT16 APTotalCost = 0; if( gusSelectedSoldier != NOBODY ) - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; else return; @@ -8937,7 +8946,7 @@ void HandleTacticalTakeInvItem( INT32 iType ) } if( gusSelectedSoldier != NOBODY ) - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; else return; @@ -9047,7 +9056,7 @@ void HandleTacticalDropItem( UINT8 ubSlot ) UINT16 APTotalCost = 0; if( gusSelectedSoldier != NOBODY ) - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; else return; @@ -9072,7 +9081,7 @@ void HandleTacticalTakeItem( void ) SOLDIERTYPE *pSoldier; if( gusSelectedSoldier != NOBODY ) - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; else return; @@ -9111,7 +9120,7 @@ void HandleTacticalReload() INT16 bAPs = 0; if (gusSelectedSoldier != NOBODY) - pSoldier = MercPtrs[gusSelectedSoldier]; + pSoldier = gusSelectedSoldier; else return; @@ -9582,10 +9591,10 @@ void HandleTBSkillsMenu(void) { TraitsMenu(usMapPos); } - else if (gusSelectedSoldier != NOBODY && MercPtrs[gusSelectedSoldier] && !TileIsOutOfBounds(MercPtrs[gusSelectedSoldier]->sGridNo)) + else if (gusSelectedSoldier != NOBODY && gusSelectedSoldier && !TileIsOutOfBounds(gusSelectedSoldier->sGridNo)) { - LocateGridNo(MercPtrs[gusSelectedSoldier]->sGridNo); - TraitsMenu(MercPtrs[gusSelectedSoldier]->sGridNo); + LocateGridNo(gusSelectedSoldier->sGridNo); + TraitsMenu(gusSelectedSoldier->sGridNo); } } @@ -9598,3 +9607,44 @@ BOOLEAN CheckAutoBandage(void) return FALSE; } + +void HandleTBPickUpBackpacks(BOOLEAN fAll) +{ + if (UsingNewInventorySystem() && (fAll || gusSelectedSoldier != NOBODY)) + { + SOLDIERTYPE* pSoldier = NULL; + SOLDIERTYPE* pTeamSoldier; + + if (gusSelectedSoldier != NOBODY) + { + pSoldier = gusSelectedSoldier; + } + + INT16 sAPCost = APBPConstants[AP_BACK_PACK]; + INT32 iBPCost = APBPConstants[BP_BACK_PACK]; + + for ( SoldierID ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++ubLoop ) + { + pTeamSoldier = ubLoop; + + if (pTeamSoldier && + OK_CONTROLLABLE_MERC(pTeamSoldier) && + OK_INTERRUPT_MERC(pTeamSoldier) && + !AM_A_ROBOT(pTeamSoldier) && + //!pTeamSoldier->IsBoxer() && + EnoughPoints(pTeamSoldier, sAPCost, iBPCost, FALSE) && + (fAll || pTeamSoldier->bAssignment == pSoldier->bAssignment) && + !pTeamSoldier->inv[BPACKPOCKPOS].exists() && + pTeamSoldier->flags.DropPackFlag) + { + if (ChangeDropPackStatus(pTeamSoldier, FALSE)) + { + ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[11], pTeamSoldier->GetName()); + } + } + } + + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + } +} diff --git a/Tactical/UI Cursors.cpp b/Tactical/UI Cursors.cpp index 91a1f360..25bbf6ce 100644 --- a/Tactical/UI Cursors.cpp +++ b/Tactical/UI Cursors.cpp @@ -134,7 +134,7 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs // FUNCTIONS FOR CURSOR DETERMINATION! -UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ) +UINT8 GetProperItemCursor( SoldierID ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ) { SOLDIERTYPE *pSoldier; UINT32 uiCursorFlags; @@ -144,7 +144,7 @@ UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos UINT8 ubCursorID=0; UINT8 ubItemCursor = 0; - pSoldier = MercPtrs[ ubSoldierID ]; + pSoldier = ubSoldierID; fRecalc = GetMouseRecalcAndShowAPFlags( &uiCursorFlags, &fShowAPs ); @@ -159,7 +159,7 @@ UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos // Calculate target gridno! if ( gfUIFullTargetFound ) { - sTargetGridNo = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sTargetGridNo = gusUIFullTargetID->sGridNo; } else { @@ -218,7 +218,7 @@ UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos if ( fRecalc && gfUIFullTargetFound ) { // ATE: Check for ammo - if ( IsValidTargetMerc( (UINT8)gusUIFullTargetID ) && EnoughAmmo( pSoldier, FALSE, HANDPOS ) && + if ( IsValidTargetMerc( gusUIFullTargetID ) && EnoughAmmo( pSoldier, FALSE, HANDPOS ) && (!pSoldier->IsValidSecondHandShotForReloadingPurposes( ) || EnoughAmmo( pSoldier, FALSE, SECONDHANDPOS) ) ) { // IF it's an ememy, goto confirm action mode @@ -364,7 +364,7 @@ UINT8 HandleActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos, BOOLEA // If we are in realtime, follow! if ( ( !( gTacticalStatus.uiFlags & INCOMBAT ) ) ) { - if ( ( gAnimControl[ MercPtrs[ gusSelectedSoldier ]->usAnimState ].uiFlags & ANIM_STATIONARY ) ) + if ( ( gAnimControl[ gusSelectedSoldier->usAnimState ].uiFlags & ANIM_STATIONARY ) ) { if ( gUITargetShotWaiting ) { @@ -390,7 +390,7 @@ UINT8 HandleActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos, BOOLEA // Determine where we are shooting / aiming //if ( fRecalc ) { - DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, TRUE, TRUE ); + DetermineCursorBodyLocation( gusSelectedSoldier, TRUE, TRUE ); } UINT8 ubMaxBullets = 1; INT8 bMaxAim; @@ -573,7 +573,7 @@ UINT8 HandleActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos, BOOLEA { if ( gusUIFullTargetID != NOBODY ) { - if ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, MercPtrs[ gusUIFullTargetID ], pSoldier->bAimShotLocation ) < OK_CHANCE_TO_GET_THROUGH ) + if ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, gusUIFullTargetID, pSoldier->bAimShotLocation ) < OK_CHANCE_TO_GET_THROUGH ) { gfCannotGetThrough = TRUE; } @@ -1271,7 +1271,7 @@ UINT8 HandleNonActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos , BO if (( ( gTacticalStatus.uiFlags & REALTIME ) || !( gTacticalStatus.uiFlags & INCOMBAT ) ) ) { //DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, FALSE, fRecalc ); - DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, fShowAPs, fRecalc ); + DetermineCursorBodyLocation( gusSelectedSoldier, fShowAPs, fRecalc ); if ( pSoldier->flags.fReloading || pSoldier->flags.fPauseAim ) { @@ -1306,7 +1306,7 @@ UINT8 HandleNonActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos , BO if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT ) ) { - DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, fShowAPs, fRecalc ); + DetermineCursorBodyLocation( gusSelectedSoldier, fShowAPs, fRecalc ); gsCurrentActionPoints = CalcTotalAPsToAttack( pSoldier, usMapPos, TRUE, (INT8)(pSoldier->aiData.bShownAimTime ) ); @@ -1420,7 +1420,7 @@ UINT8 HandleNonActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos , BO } -void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ) +void DetermineCursorBodyLocation( SoldierID ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ) { INT32 usMapPos; SOLDIERTYPE *pTargetSoldier = NULL, *pSoldier; @@ -1429,7 +1429,7 @@ void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN f BOOLEAN fOnGuy = FALSE; LEVELNODE *pNode; - pSoldier = MercPtrs[ ubSoldierID ]; + pSoldier = ubSoldierID; if ( gTacticalStatus.ubAttackBusyCount > 0 ) { @@ -1556,7 +1556,7 @@ void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN f // Check if we can find a soldier here if ( gfUIFullTargetFound ) { - pTargetSoldier = MercPtrs[ gusUIFullTargetID ]; + pTargetSoldier = gusUIFullTargetID; if ( FindRelativeSoldierPosition( pTargetSoldier, &usFlags, gusMouseXPos, gusMouseYPos ) ) { @@ -1594,7 +1594,7 @@ void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN f { if ( gfUIFullTargetFound ) { - pTargetSoldier = MercPtrs[ gusUIFullTargetID ]; + pTargetSoldier = gusUIFullTargetID; if ( pTargetSoldier->ubBodyType == CROW ) { @@ -2263,10 +2263,10 @@ UINT8 HandleBloodbagCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActiv if ( HasItemFlag( ( &( pSoldier->inv[HANDPOS] ) )->usItem, EMPTY_BLOOD_BAG ) ) { // is there a person here? - UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); + SoldierID usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { - if ( usSoldierIndex != pSoldier->ubID && MercPtrs[usSoldierIndex]->IsValidBloodDonor() ) + if ( usSoldierIndex != pSoldier->ubID && usSoldierIndex->IsValidBloodDonor() ) return BLOODBAG_GREY_UICURSOR; } } @@ -2298,10 +2298,10 @@ UINT8 HandleSplintCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivat } // is there a person here? - UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); + SoldierID usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { - if ( usSoldierIndex != pSoldier->ubID && MercPtrs[usSoldierIndex]->CanReceiveSplint() ) + if ( usSoldierIndex != pSoldier->ubID && usSoldierIndex->CanReceiveSplint() ) return SPLINT_GREY_UICURSOR; } } @@ -2384,8 +2384,8 @@ UINT8 HandleHandcuffCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, HANDCUFFS ) ) { // is there a person here? - UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); - if (usSoldierIndex != NOBODY && MercPtrs[usSoldierIndex] && MercPtrs[usSoldierIndex]->bVisible >= 0 && MercPtrs[usSoldierIndex]->CanBeCaptured()) + SoldierID usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); + if (usSoldierIndex != NOBODY && usSoldierIndex->bVisible >= 0 && usSoldierIndex->CanBeCaptured()) { return( HANDCUFF_GREY_UICURSOR ); } @@ -2406,8 +2406,8 @@ UINT8 HandleApplyItemCursor(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso if (ItemCanBeAppliedToOthers((&(pSoldier->inv[HANDPOS]))->usItem)) { // is there a person here? - UINT8 ubPerson = WhoIsThere2(sGridNo, pSoldier->pathing.bLevel); - if (ubPerson != NOBODY && MercPtrs[ubPerson] && MercPtrs[ubPerson]->bVisible >= 0) + SoldierID ubPerson = WhoIsThere2(sGridNo, pSoldier->pathing.bLevel); + if (ubPerson != NOBODY && ubPerson->bVisible >= 0) { return(APPLYITEM_GREY_UICURSOR); } @@ -2583,7 +2583,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ) // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + usMapPos = gusUIFullTargetID->sGridNo; } @@ -2609,7 +2609,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ) if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -2727,7 +2727,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ) if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -3022,8 +3022,8 @@ UINT8 GetActionModeCursor( SOLDIERTYPE *pSoldier ) if ( GetMouseMapPos( &usMapPos ) ) { // is there a person here? - UINT8 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); - if (ubPerson != NOBODY && MercPtrs[ubPerson] && MercPtrs[ubPerson]->bVisible >= 0) + SoldierID ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); + if (ubPerson != NOBODY && ubPerson->bVisible >= 0) { ubCursor = APPLYITEMCURS; } @@ -3172,7 +3172,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; } switch( ubCursor ) @@ -3180,8 +3180,8 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta case TARGETCURS: // warn if bad chance to get through if ( gfUIFullTargetFound && - !HandleCheckForBadChangeToGetThrough( pSoldier, MercPtrs[ gusUIFullTargetID ], - MercPtrs[ gusUIFullTargetID ]->sGridNo , MercPtrs[ gusUIFullTargetID ]->pathing.bLevel ) ) + !HandleCheckForBadChangeToGetThrough( pSoldier, gusUIFullTargetID, + gusUIFullTargetID->sGridNo , gusUIFullTargetID->pathing.bLevel ) ) { return; } @@ -3370,7 +3370,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; } @@ -3442,7 +3442,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -3608,7 +3608,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sDelta // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; int aimlevelchange = 1; int maxAimCanAfford = 0; @@ -3681,7 +3681,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sDelta if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; @@ -3836,7 +3836,7 @@ void HandleWheelAdjustCursorWOAB( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sD // 'snap' cursor to target tile.... if ( gfUIFullTargetFound ) { - sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; + sMapPos = gusUIFullTargetID->sGridNo; } @@ -3908,7 +3908,7 @@ void HandleWheelAdjustCursorWOAB( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sD if ( gfUIFullTargetFound ) { // Get target soldier, if one exists - pTSoldier = MercPtrs[ gusUIFullTargetID ]; + pTSoldier = gusUIFullTargetID; sGridNo = pTSoldier->sGridNo; bTargetLevel = pSoldier->pathing.bLevel; diff --git a/Tactical/UI Cursors.h b/Tactical/UI Cursors.h index 3c9af7cf..6723dd46 100644 --- a/Tactical/UI Cursors.h +++ b/Tactical/UI Cursors.h @@ -9,8 +9,8 @@ #define REFINE_KNIFE_2 (gGameExternalOptions.fEnhancedCloseCombatSystem ? gSkillTraitValues.ubModifierForAPsAddedOnAimedBladedAttackes*2 : 6) -UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ); -void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ); +UINT8 GetProperItemCursor( SoldierID ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ); +void DetermineCursorBodyLocation( SoldierID ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ); void HandleLeftClickCursor( SOLDIERTYPE *pSoldier ); void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ); @@ -30,4 +30,4 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs // based on how trained the shooter is. UINT32 ChanceToHitApproximation( SOLDIERTYPE * pSoldier, UINT32 uiChance ); -#endif +#endif diff --git a/Tactical/Vehicles.cpp b/Tactical/Vehicles.cpp index 467aa217..2ea1022f 100644 --- a/Tactical/Vehicles.cpp +++ b/Tactical/Vehicles.cpp @@ -49,7 +49,7 @@ VEHICLETYPE *pVehicleList = NULL; // number of vehicle slots on the list UINT8 ubNumberOfVehicles = 0; -// the sqaud mvt groups +// the squad mvt groups extern INT8 SquadMovementGroups[ ]; @@ -176,7 +176,7 @@ INT16 sVehicleInternalOrigArmorValues[ NUMBER_OF_TYPES_OF_VEHICLES ][ NUMBER_OF_ // set the driver of the vehicle -void SetDriver( INT32 iID, UINT8 ubID ); +void SetDriver( INT32 iID, SoldierID ubID ); //void RemoveSoldierFromVehicleBetweenSectors( pSoldier, iId ); @@ -665,7 +665,7 @@ BOOLEAN AddSoldierToVehicle( SOLDIERTYPE *pSoldier, INT32 iId, UINT8 ubSeatIndex // anv: are we taking driver's seat if( gNewVehicle[ pVehicleList[ iId ].ubVehicleType ].VehicleSeats[ubFinalSeatIndex].fDriver ) { - SetDriver( iId , pSoldier->ubID ); + SetDriver( iId, pSoldier->ubID ); } else { @@ -1556,7 +1556,7 @@ SOLDIERTYPE *GetDriver( INT32 iID ) INT32 iCounter; if( pVehicleList[ iID ].ubDriver != NOBODY ) { - return( MercPtrs[ pVehicleList[ iID ].ubDriver ] ); + return( pVehicleList[ iID ].ubDriver ); } else { @@ -1573,25 +1573,27 @@ SOLDIERTYPE *GetDriver( INT32 iID ) } -void SetDriver( INT32 iID, UINT8 ubID ) +void SetDriver( INT32 iID, SoldierID ubID ) { // anv: first make sure previous driver won't be driver anymore - if( pVehicleList[ iID ].ubDriver != NOBODY && MercPtrs[ pVehicleList[ iID ].ubDriver ]->iVehicleId == iID ) + SOLDIERTYPE* prevDriver = pVehicleList[iID].ubDriver; + + if( prevDriver != NOBODY && prevDriver->iVehicleId == iID ) { - if( MercPtrs[ pVehicleList[ iID ].ubDriver ] ) + if( prevDriver ) { - MercPtrs[ pVehicleList[ iID ].ubDriver ]->flags.uiStatusFlags &= ~(SOLDIER_DRIVER); - if( GetSeatIndexFromSoldier( MercPtrs[ pVehicleList[ iID ].ubDriver ] ) != (-1) ) + prevDriver->flags.uiStatusFlags &= ~(SOLDIER_DRIVER); + if( GetSeatIndexFromSoldier( prevDriver ) != (-1) ) { - MercPtrs[ pVehicleList[ iID ].ubDriver ]->flags.uiStatusFlags |= SOLDIER_PASSENGER; + prevDriver->flags.uiStatusFlags |= SOLDIER_PASSENGER; } } } // set proper flags if( ubID != NOBODY ) { - MercPtrs[ ubID ]->flags.uiStatusFlags |= SOLDIER_DRIVER; - MercPtrs[ ubID ]->flags.uiStatusFlags &= ~(SOLDIER_PASSENGER); + ubID->flags.uiStatusFlags |= SOLDIER_DRIVER; + ubID->flags.uiStatusFlags &= ~(SOLDIER_PASSENGER); } pVehicleList[ iID ].ubDriver = ubID; } @@ -1716,15 +1718,15 @@ BOOLEAN EnterVehicle( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubSeat SOLDIERTYPE *GetVehicleSoldierPointerFromPassenger( SOLDIERTYPE *pSrcSoldier ) { - UINT32 cnt; - SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pSoldier; // End the turn of player charactors - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // look for all mercs on the same team, - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) { // Check ubID.... @@ -1821,7 +1823,7 @@ BOOLEAN ExitVehicle( SOLDIERTYPE *pSoldier ) } else { - UINT16 usTempSelectedSoldier = gusSelectedSoldier; + SoldierID usTempSelectedSoldier = gusSelectedSoldier; SetCurrentSquad( CurrentSquad(), TRUE ); @@ -1984,7 +1986,7 @@ void AddPassangersToTeamPanel( INT32 iId ) } -void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo, UINT8 ubAttackerID ) +void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo, SoldierID ubAttackerID ) { if ( ubReason != TAKE_DAMAGE_GAS_FIRE && ubReason != TAKE_DAMAGE_GAS_NOTFIRE ) { @@ -2013,7 +2015,7 @@ void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo } -void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT8 ubAttackerID ) +void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, SoldierID ubAttackerID ) { // check state the armor was s'posed to be in vs. the current state..the difference / orig state is % chance // that a critical hit will occur @@ -2303,7 +2305,7 @@ BOOLEAN SaveVehicleInformationToSaveGameFile( HWFILE hFile ) //loop through the passengers for( ubPassengerCnt=0; ubPassengerCnt<10; ubPassengerCnt++) { - TempVehicle.pPassengers[ ubPassengerCnt ] = ( SOLDIERTYPE * )NO_PROFILE; + TempVehicle.pPassengers[ ubPassengerCnt ] = ( SOLDIERTYPE * )NO_PROFILE; //if there is a passenger here if( pVehicleList[cnt].pPassengers[ ubPassengerCnt ] ) @@ -2414,28 +2416,28 @@ BOOLEAN LoadVehicleInformationFromSavedGameFile( HWFILE hFile, UINT32 uiSavedGam //loop through all the passengers for(ubPassengerCnt=0; ubPassengerCnt<10; ubPassengerCnt++) { - if ( uiSavedGameVersion < 86 ) - { - if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != 0 ) + if ( uiSavedGameVersion < 86 ) { - // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back - // ! to a UINT8 so we can get the REAL pointer to the soldier. - pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); + if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != 0 ) + { + // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back + // ! to a UINT8 so we can get the REAL pointer to the soldier. + pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); } - } - else - { - if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != ( SOLDIERTYPE * )NO_PROFILE ) + } + else { - // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back - // ! to a UINT8 so we can get the REAL pointer to the soldier. - pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); + if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != ( SOLDIERTYPE * )NO_PROFILE ) + { + // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back + // ! to a UINT8 so we can get the REAL pointer to the soldier. + pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); } - else - { - pVehicleList[cnt].pPassengers[ubPassengerCnt] = NULL; - } - } + else + { + pVehicleList[cnt].pPassengers[ubPassengerCnt] = NULL; + } + } } @@ -2904,14 +2906,12 @@ BOOLEAN SoldierMustDriveVehicle( SOLDIERTYPE *pSoldier, INT32 iVehicleId, BOOLEA BOOLEAN OnlythisCanDriveVehicle( SOLDIERTYPE *pthis, INT32 iVehicleId ) { - INT32 iCounter = 0; SOLDIERTYPE *pSoldier = NULL; - - for( iCounter = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; iCounter <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; iCounter++ ) + for( SoldierID id = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; id <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++id ) { // get the current soldier - pSoldier = &Menptr[ iCounter ]; + pSoldier = id; // skip checking THIS soldier, we wanna know about everyone else if ( pSoldier == pthis ) diff --git a/Tactical/Vehicles.h b/Tactical/Vehicles.h index 456e54df..d6cc3fb6 100644 --- a/Tactical/Vehicles.h +++ b/Tactical/Vehicles.h @@ -289,7 +289,7 @@ typedef struct BOOLEAN fBetweenSectors; // between sectors? INT32 sGridNo; // location in tactical SOLDIERTYPE *pPassengers[ MAXPASSENGERS ]; - UINT8 ubDriver; + SoldierID ubDriver; INT16 sInternalHitLocations[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ]; INT16 sArmourType; INT16 sExternalArmorLocationsStatus[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ]; @@ -404,7 +404,7 @@ BOOLEAN SwapVehicleSeat( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubS void AddPassangersToTeamPanel( INT32 iId ); -void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo , UINT8 ubAttackerID ); +void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo , SoldierID ubAttackerID ); // the soldiertype containing this tactical incarnation of this vehicle SOLDIERTYPE * GetSoldierStructureForVehicle( INT32 iId ); @@ -415,7 +415,7 @@ void AdjustVehicleAPs( SOLDIERTYPE *pSoldier, INT16 *pubPoints ); //INT16 GetOrigInternalArmorValueForVehicleInLocation( UINT8 ubID, UINT8 ubLocation ); // handle crit hit to vehicle in this location -void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT8 ubAttackerID ); +void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, SoldierID ubAttackerID ); // ste up armor values for this vehicle void SetUpArmorForVehicle( UINT8 ubID ); diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 0acc9a29..e9a56c5e 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -2444,7 +2444,7 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) //CHAR8 zBurstString[512]; UINT8 ubDirection; INT32 sNewGridNo; - UINT8 ubMerc; + SoldierID ubMerc; BOOLEAN fGonnaHit = FALSE; FLOAT dExpGain = 0; UINT32 uiDepreciateTest; @@ -2807,7 +2807,7 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // HEADROCK: Actually, it's 1 for the first shot. Works fine regardless though. // HEADROCK HAM 4: Extra experience gain now given when the target is hit. This part only gives basic points // for the attack (FAILURE type). - if ( PTR_OURTEAM && pSoldier->ubTargetID != NOBODY && (!pSoldier->bDoBurst || pSoldier->bDoBurst == 2 ) && (gTacticalStatus.uiFlags & INCOMBAT ) && ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, MercPtrs[ pSoldier->ubTargetID ], pSoldier->bAimShotLocation ) > 0 ) ) + if ( PTR_OURTEAM && pSoldier->ubTargetID != NOBODY && (!pSoldier->bDoBurst || pSoldier->bDoBurst == 2 ) && (gTacticalStatus.uiFlags & INCOMBAT ) && ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, pSoldier->ubTargetID, pSoldier->bAimShotLocation ) > 0 ) ) { // add base pts for taking a shot, whether it hits or misses dExpGain = 2.0f; @@ -2818,11 +2818,11 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) dExpGain = (dExpGain * 2) / 3; } - if ( MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == COW || MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == CROW ) + if ( pSoldier->ubTargetID->ubBodyType == COW || pSoldier->ubTargetID->ubBodyType == CROW ) { dExpGain /= 2; } - else if ( MercPtrs[ pSoldier->ubTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( MercPtrs[ pSoldier->ubTargetID ] ) || TANK( MercPtrs[ pSoldier->ubTargetID ] ) ) + else if ( pSoldier->ubTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( pSoldier->ubTargetID ) || TANK( pSoldier->ubTargetID ) ) { // no exp from shooting a vehicle that you can't damage and can't move! dExpGain = 0; @@ -2856,11 +2856,11 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // add base pts for taking a shot, whether it hits or misses dExpGain = 5.0f; - if ( MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == COW || MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == CROW ) + if ( pSoldier->ubTargetID->ubBodyType == COW || pSoldier->ubTargetID->ubBodyType == CROW ) { dExpGain /= 2; } - else if ( MercPtrs[ pSoldier->ubTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( MercPtrs[ pSoldier->ubTargetID ] ) || TANK( MercPtrs[ pSoldier->ubTargetID ] ) ) + else if ( pSoldier->ubTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( pSoldier->ubTargetID ) || TANK( pSoldier->ubTargetID ) ) { // no exp from shooting a vehicle that you can't damage and can't move! dExpGain = 0; @@ -2967,14 +2967,14 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) if ( ubMerc != NOBODY ) { - if ( gAnimControl[ MercPtrs[ ubMerc ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( gAnimControl[ ubMerc->usAnimState ].ubHeight != ANIM_PRONE ) { // Increment attack counter... // gTacticalStatus.ubAttackBusyCount++; DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Incrementing Attack: Exaust from LAW", gTacticalStatus.ubAttackBusyCount ) ); DebugAttackBusy( "Incrementing Attack: Exaust from LAW\n" ); - MercPtrs[ ubMerc ]->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); + ubMerc->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); } } } @@ -3232,7 +3232,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // CHAR8 zBurstString[512]; UINT8 ubDirection; INT32 sNewGridNo; - UINT8 ubMerc; + SoldierID ubMerc; BOOLEAN fGonnaHit = FALSE; UINT16 usExpGain = 0; UINT32 uiDepreciateTest; @@ -3535,7 +3535,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) } // NB bDoBurst will be 2 at this point for the first shot since it was incremented // above - if ( PTR_OURTEAM && pSoldier->ubTargetID != NOBODY && (!pSoldier->bDoBurst || pSoldier->bDoBurst == 2 ) && (gTacticalStatus.uiFlags & INCOMBAT ) && ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, MercPtrs[ pSoldier->ubTargetID ], pSoldier->bAimShotLocation ) > 0 ) ) + if ( PTR_OURTEAM && pSoldier->ubTargetID != NOBODY && (!pSoldier->bDoBurst || pSoldier->bDoBurst == 2 ) && (gTacticalStatus.uiFlags & INCOMBAT ) && ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, pSoldier->ubTargetID, pSoldier->bAimShotLocation ) > 0 ) ) { if ( fGonnaHit ) { @@ -3562,11 +3562,11 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) usExpGain = (usExpGain * 2) / 3; } - if ( MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == COW || MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == CROW ) + if ( pSoldier->ubTargetID->ubBodyType == COW || pSoldier->ubTargetID->ubBodyType == CROW ) { usExpGain /= 2; } - else if ( MercPtrs[ pSoldier->ubTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( MercPtrs[ pSoldier->ubTargetID ] ) || TANK( MercPtrs[ pSoldier->ubTargetID ] ) ) + else if ( pSoldier->ubTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( pSoldier->ubTargetID ) || TANK( pSoldier->ubTargetID ) ) { // no exp from shooting a vehicle that you can't damage and can't move! usExpGain = 0; @@ -3632,11 +3632,11 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // add base pts for taking a shot, whether it hits or misses usExpGain += 10; - if ( MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == COW || MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == CROW ) + if ( pSoldier->ubTargetID->ubBodyType == COW || pSoldier->ubTargetID->ubBodyType == CROW ) { usExpGain /= 2; } - else if ( MercPtrs[ pSoldier->ubTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( MercPtrs[ pSoldier->ubTargetID ] ) || TANK( MercPtrs[ pSoldier->ubTargetID ] ) ) + else if ( pSoldier->ubTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( pSoldier->ubTargetID ) || TANK( pSoldier->ubTargetID ) ) { // no exp from shooting a vehicle that you can't damage and can't move! usExpGain = 0; @@ -3785,14 +3785,14 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) if ( ubMerc != NOBODY ) { - if ( gAnimControl[ MercPtrs[ ubMerc ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( gAnimControl[ ubMerc->usAnimState ].ubHeight != ANIM_PRONE ) { // Increment attack counter... // gTacticalStatus.ubAttackBusyCount++; DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Incrementing Attack: Exaust from LAW", gTacticalStatus.ubAttackBusyCount ) ); DebugAttackBusy( "Incrementing Attack: Exaust from LAW\n" ); - MercPtrs[ ubMerc ]->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); + ubMerc->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); } } } @@ -4097,15 +4097,15 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_BLADE, pSoldier->ubID ); // if it was another team shooting at someone under our control - if ( (pSoldier->bTeam != Menptr[ pTargetSoldier->ubID ].bTeam ) ) + if ( (pSoldier->bTeam != pTargetSoldier->ubID->bTeam ) ) { if (pTargetSoldier->bTeam == gbPlayerNum) { // AGILITY GAIN (10): Target avoids a knife attack // Snap: stat gains should match stat requirements - StatChange( MercPtrs[ pTargetSoldier->ubID ], DEXTAMT, 15, FALSE); - StatChange( MercPtrs[ pTargetSoldier->ubID ], AGILAMT, 5, FALSE); - StatChange( MercPtrs[ pTargetSoldier->ubID ], STRAMT, 5, FALSE); + StatChange( pTargetSoldier->ubID, DEXTAMT, 15, FALSE); + StatChange( pTargetSoldier->ubID, AGILAMT, 5, FALSE); + StatChange( pTargetSoldier->ubID, STRAMT, 5, FALSE); } } // 0verhaul: Another case that is handled by the animation transition system. @@ -4134,11 +4134,11 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // add base pts for taking a shot, whether it hits or misses usExpGain += 10; - if ( MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == COW || MercPtrs[ pSoldier->ubTargetID ]->ubBodyType == CROW ) + if ( pSoldier->ubTargetID->ubBodyType == COW || pSoldier->ubTargetID->ubBodyType == CROW ) { usExpGain /= 2; } - else if ( MercPtrs[ pSoldier->ubTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( MercPtrs[ pSoldier->ubTargetID ] ) || TANK( MercPtrs[ pSoldier->ubTargetID ] ) ) + else if ( pSoldier->ubTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT( pSoldier->ubTargetID ) || TANK( pSoldier->ubTargetID ) ) { // no exp from shooting a vehicle that you can't damage and can't move! usExpGain = 0; @@ -4940,10 +4940,10 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { - UINT32 uiHitChance; + UINT32 uiHitChance; INT8 bLoop; - UINT8 ubTargetID; - SOLDIERTYPE * pTargetSoldier; + SoldierID ubTargetID; + SOLDIERTYPE *pTargetSoldier; //INT16 sAPCost = 0;//dnl ch72 180913 uiHitChance = CalcThrownChanceToHit( pSoldier, sTargetGridNo, pSoldier->aiData.bAimTime, AIM_SHOT_TORSO ); @@ -4965,7 +4965,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) } else { - pTargetSoldier = MercPtrs[ ubTargetID ]; + pTargetSoldier = ubTargetID; } if ( pTargetSoldier && pTargetSoldier->bTeam == pSoldier->bTeam ) @@ -4987,7 +4987,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) pTargetSoldier = NULL; if ( ubTargetID != NOBODY ) { - pTargetSoldier = MercPtrs[ ubTargetID ]; + pTargetSoldier = ubTargetID; if ( pTargetSoldier->bTeam != pSoldier->bTeam ) { usNumTargets++; @@ -5288,7 +5288,7 @@ BOOLEAN UseLauncher( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) { - send_grenade( pSoldier->pTempObject , pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iID , false); + send_grenade( pSoldier->pTempObject, pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iID, false); } } @@ -5315,7 +5315,7 @@ BOOLEAN UseLauncher( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) return( TRUE ); } -BOOLEAN DoSpecialEffectAmmoMiss( UINT8 ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet ) +BOOLEAN DoSpecialEffectAmmoMiss( SoldierID ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet ) { ANITILE_PARAMS AniParams; UINT8 ubAmmoType = 0; @@ -5324,7 +5324,7 @@ BOOLEAN DoSpecialEffectAmmoMiss( UINT8 ubAttackerID, UINT16 usWeaponIndex, INT32 // Flugente: check for underbarrel weapons and use that object if necessary if ( ubAttackerID != NOBODY ) { - OBJECTTYPE* pObj = MercPtrs[ ubAttackerID ]->GetUsedWeapon( &MercPtrs[ ubAttackerID ]->inv[ MercPtrs[ ubAttackerID ]->ubAttackingHand ] ); + OBJECTTYPE* pObj = ubAttackerID->GetUsedWeapon( &ubAttackerID->inv[ ubAttackerID->ubAttackingHand ] ); ubAmmoType = (*pObj)[0]->data.gun.ubGunAmmoType; usItem = (*pObj).usItem; @@ -5478,23 +5478,23 @@ BOOLEAN DoSpecialEffectAmmoMiss( UINT8 ubAttackerID, UINT16 usWeaponIndex, INT32 } -void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange , UINT8 ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ) +void WeaponHit( SoldierID usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange, SoldierID ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ) { SOLDIERTYPE* pTargetSoldier = NULL; SOLDIERTYPE* pSoldier = NULL; - OBJECTTYPE* pObj = NULL; + OBJECTTYPE* pObj = NULL; // Get attacker if ( ubAttackerID != NOBODY ) { - pSoldier = MercPtrs[ ubAttackerID ]; + pSoldier = ubAttackerID; // Flugente: check for underbarrel weapons and use that object if necessary pObj = pSoldier->GetUsedWeapon( &pSoldier->inv[pSoldier->ubAttackingHand] ); } // Get Target - pTargetSoldier = MercPtrs[ usSoldierID ]; + pTargetSoldier = usSoldierID; MakeNoise( ubAttackerID, pTargetSoldier->sGridNo, pTargetSoldier->pathing.bLevel, gpWorldLevelData[pTargetSoldier->sGridNo].ubTerrainID, Weapon[ usWeaponIndex ].ubHitVolume, NOISE_BULLET_IMPACT ); @@ -5554,7 +5554,7 @@ void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 s else if ( AmmoTypes[ubAmmoType].explosionSize > 1) { // re-routed the Highexplosive value to define exposion type - IgniteExplosion( ubAttackerID, sXPos, sYPos, 0, GETWORLDINDEXFROMWORLDCOORDS( sYPos, sXPos ), AmmoTypes[ubAmmoType].highExplosive , pTargetSoldier->pathing.bLevel ); + IgniteExplosion( ubAttackerID, sXPos, sYPos, 0, GETWORLDINDEXFROMWORLDCOORDS( sYPos, sXPos ), AmmoTypes[ubAmmoType].highExplosive, pTargetSoldier->pathing.bLevel ); // pSoldier->inv[pSoldier->ubAttackingHand ][0]->data.gun.usGunAmmoItem = NONE; } } @@ -5589,12 +5589,12 @@ void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 s } -void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UINT8 ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ) +void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, SoldierID ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ) { BOOLEAN fDoMissForGun = FALSE; ANITILE *pNode; INT32 sGridNo; - INT8 bLevel; + INT8 bLevel; ANITILE_PARAMS AniParams; UINT16 usMissTileIndex, usMissTileType; STRUCTURE *pStructure = NULL; @@ -5610,9 +5610,9 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN // Flugente: check for underbarrel weapons and use that object if necessary if ( ubAttackerID != NOBODY ) { - pObj = MercPtrs[ ubAttackerID ]->GetUsedWeapon( &MercPtrs [ ubAttackerID ]->inv[MercPtrs[ubAttackerID]->ubAttackingHand] ); + pObj = ubAttackerID->GetUsedWeapon( &ubAttackerID->inv[ubAttackerID->ubAttackingHand] ); - pAttacker = MercPtrs[ ubAttackerID ]; + pAttacker = ubAttackerID; } // HEADROCK HAM 5: Define differently for fragments @@ -5635,13 +5635,13 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN if ( pAttacker->ubOppNum != NOBODY ) { // if it was another team shooting at someone under our control - if ( (pAttacker->bTeam != Menptr[ pAttacker->ubOppNum ].bTeam ) ) + if ( pAttacker->bTeam != pAttacker->ubOppNum->bTeam ) { // if OPPONENT is under our control - if (Menptr[ pAttacker->ubOppNum ].bTeam == gbPlayerNum ) + if ( pAttacker->ubOppNum->bTeam == gbPlayerNum ) { // AGILITY GAIN: Opponent "dodged" a bullet shot at him (it missed) - StatChange( MercPtrs[ pAttacker->ubOppNum ], AGILAMT, 5, FROM_FAILURE ); + StatChange( pAttacker->ubOppNum, AGILAMT, 5, FROM_FAILURE ); } } } @@ -5676,7 +5676,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN // Get attacker if ( ubAttackerID != NOBODY ) - pSoldier = MercPtrs[ ubAttackerID ]; + pSoldier = ubAttackerID; UINT8 usDirection = DIRECTION_IRRELEVANT; if ( pSoldier ) @@ -5777,13 +5777,13 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN case MGCLASS: // Guy has missed, play random sound - if ( ubAttackerID != NOBODY && MercPtrs[ ubAttackerID ]->bTeam == gbPlayerNum ) + if ( ubAttackerID != NOBODY && ubAttackerID->bTeam == gbPlayerNum ) { - if ( !MercPtrs[ ubAttackerID ]->bDoBurst ) + if ( !ubAttackerID->bDoBurst ) { if ( Random( 40 ) == 0 ) { - MercPtrs[ ubAttackerID ]->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); + ubAttackerID->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); } } } @@ -6036,7 +6036,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN // Set attacker ID pNode->usMissAnimationPlayed = usMissTileType; - pNode->ubAttackerMissed = ubAttackerID; + pNode->ubAttackerMissed = ubAttackerID; // Adjust for absolute positioning pNode->pLevelNode->uiFlags |= LEVELNODE_USEABSOLUTEPOS; pNode->pLevelNode->sRelativeX = sXPos; @@ -6046,7 +6046,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN // ATE: Show misses...( if our team ) if ( gGameSettings.fOptions[ TOPTION_SHOW_MISSES ] ) { - if ( ubAttackerID != NOBODY && MercPtrs[ ubAttackerID ]->bTeam == gbPlayerNum ) + if ( ubAttackerID != NOBODY && ubAttackerID->bTeam == gbPlayerNum ) { LocateGridNo( sGridNo ); } @@ -6057,31 +6057,35 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UIN // anv: enemy taunt on miss if( pBullet->pFirer != NULL && pBullet->pFirer->ubOppNum != NOBODY ) { + SoldierID OpponentID = pBullet->pFirer->ubOppNum; + INT8 Team = OpponentID->bTeam; + SoldierID ShooterID = pBullet->pFirer->ubID; + if( Item[ pBullet->pFirer->usAttackingWeapon ].usItemClass & IC_GUN ) { if (gTauntsSettings.fTauntVoice) { // say taunt only to inform others - if (gbPublicOpplist[MercPtrs[pBullet->pFirer->ubOppNum]->bTeam][pBullet->pFirer->ubID] != SEEN_CURRENTLY && - gbPublicOpplist[MercPtrs[pBullet->pFirer->ubOppNum]->bTeam][pBullet->pFirer->ubID] != SEEN_THIS_TURN && - gTacticalStatus.Team[MercPtrs[pBullet->pFirer->ubOppNum]->bTeam].bMenInSector > 1) + if (gbPublicOpplist[Team][ShooterID] != SEEN_CURRENTLY && + gbPublicOpplist[Team][ShooterID] != SEEN_THIS_TURN && + gTacticalStatus.Team[Team].bMenInSector > 1) { - PossiblyStartEnemyTaunt(MercPtrs[pBullet->pFirer->ubOppNum], TAUNT_GOT_MISSED_GUNFIRE, pBullet->pFirer->ubID); + PossiblyStartEnemyTaunt(OpponentID, TAUNT_GOT_MISSED_GUNFIRE, ShooterID); } } - else if (MercPtrs[pBullet->pFirer->ubOppNum]->aiData.bOppList[pBullet->pFirer->ubID] == SEEN_CURRENTLY) + else if (OpponentID->aiData.bOppList[ShooterID] == SEEN_CURRENTLY) { - PossiblyStartEnemyTaunt(MercPtrs[pBullet->pFirer->ubOppNum], TAUNT_GOT_MISSED_GUNFIRE, pBullet->pFirer->ubID); + PossiblyStartEnemyTaunt(OpponentID, TAUNT_GOT_MISSED_GUNFIRE, ShooterID); } - PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_GUNFIRE, pBullet->pFirer->ubOppNum ); + PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_GUNFIRE, OpponentID); } else if( Item[ pBullet->pFirer->usAttackingWeapon ].usItemClass & IC_THROWING_KNIFE ) { - if( MercPtrs[ pBullet->pFirer->ubOppNum ]->aiData.bOppList[ pBullet->pFirer->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[ pBullet->pFirer->ubOppNum ], TAUNT_GOT_MISSED_THROWING_KNIFE, pBullet->pFirer->ubID ); + if( OpponentID->aiData.bOppList[ShooterID] == SEEN_CURRENTLY ) + PossiblyStartEnemyTaunt(OpponentID, TAUNT_GOT_MISSED_THROWING_KNIFE, ShooterID); - PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_THROWING_KNIFE, pBullet->pFirer->ubOppNum ); + PossiblyStartEnemyTaunt( pBullet->pFirer, TAUNT_MISS_THROWING_KNIFE, OpponentID); } } } @@ -6274,7 +6278,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi UINT16 usInHand; OBJECTTYPE * pInHand; INT16 sDistVis, sDistVisNoScope; - UINT8 ubTargetID; + SoldierID ubTargetID; bool fCantSeeTarget = false; FLOAT scopeRangeMod = 0.0f; @@ -6323,7 +6327,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi if (ubTargetID != NOBODY && (pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY)) { - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); } if (iSightRange == 0) { @@ -6334,7 +6338,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties if (ubTargetID != NOBODY) - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); fCantSeeTarget = true; } @@ -6634,8 +6638,9 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, INT16 bonusProgression[8] = {500,500,600,600,750,750,750,1000}; //Aiming progression UINT16 usInHand, usShockPenalty, MIN_RANGE_FOR_FULL_COWER, MAX_TARGET_COWERING_PENALTY; UINT16 iBulletsLeft, iTracersFired = 0, iBulletsPerTracer, iBulletsSinceLastTracer=0, iRoundsFiredPreviously; - INT8 bBandaged, maxClickBonus = 10, AIM_PENALTY_PER_TARGET_SHOCK; - UINT8 ubTargetID, bLightLevel, ubCoweringDivisor, ubAutoPenaltySinceLastTracer=0; + INT8 bBandaged, maxClickBonus = 10, AIM_PENALTY_PER_TARGET_SHOCK; + SoldierID ubTargetID; + UINT8 bLightLevel, ubCoweringDivisor, ubAutoPenaltySinceLastTracer = 0; FLOAT maxBonus, aimTimeBonus, scopeRangeMod = 0.0f, iAimBonus; bool fCantSeeTarget = false, fCoverObscured = false; @@ -6679,7 +6684,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, iScopeVisionRangeBonus = GetTotalVisionRangeBonus(pSoldier, bLightLevel); // not an actual range value, simply a modifier for range calculations if (ubTargetID != NOBODY && ( pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY ) ) - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); if (iSightRange == 0) { @@ -6692,7 +6697,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties if (ubTargetID != NOBODY) - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); fCantSeeTarget = true; fCoverObscured = false; } @@ -9055,32 +9060,32 @@ INT32 HTHImpact( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTarget, INT32 iHitBy, BO return( iImpact ); } -void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ) +void ShotMiss( SoldierID ubAttackerID, INT32 iBullet ) { BOOLEAN fDoMissForGun = FALSE; - SOLDIERTYPE* pAttacker = NULL; + SOLDIERTYPE* pAttacker = NULL; BULLET* pBullet; if ( ubAttackerID == NOBODY ) return; - pAttacker = MercPtrs[ ubAttackerID ]; + pAttacker = ubAttackerID; if ( pAttacker->ubOppNum != NOBODY ) { // if it was another team shooting at someone under our control - if ( (pAttacker->bTeam != Menptr[ pAttacker->ubOppNum ].bTeam ) ) + if ( (pAttacker->bTeam != pAttacker->ubOppNum->bTeam ) ) { // if OPPONENT is under our control - if (Menptr[ pAttacker->ubOppNum ].bTeam == gbPlayerNum ) + if (pAttacker->ubOppNum->bTeam == gbPlayerNum ) { // AGILITY GAIN: Opponent "dodged" a bullet shot at him (it missed) - StatChange( MercPtrs[ pAttacker->ubOppNum ], AGILAMT, 5, FROM_FAILURE ); + StatChange( pAttacker->ubOppNum, AGILAMT, 5, FROM_FAILURE ); } } } - switch( Weapon[ MercPtrs[ ubAttackerID ]->usAttackingWeapon ].ubWeaponClass ) + switch( Weapon[ ubAttackerID->usAttackingWeapon ].ubWeaponClass ) { case HANDGUNCLASS: case RIFLECLASS: @@ -9089,11 +9094,11 @@ void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ) case MGCLASS: // Guy has missed, play random sound - if ( MercPtrs[ ubAttackerID ]->bTeam == gbPlayerNum ) + if ( ubAttackerID->bTeam == gbPlayerNum ) { if ( Random(40) == 0 ) { - MercPtrs[ ubAttackerID ]->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); + ubAttackerID->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); } } fDoMissForGun = TRUE; @@ -9136,7 +9141,7 @@ void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ) // PLAY SOUND AND FLING DEBRIS // RANDOMIZE SOUND SYSTEM - if ( !DoSpecialEffectAmmoMiss( ubAttackerID, MercPtrs[ ubAttackerID ]->usAttackingWeapon, NOWHERE, 0, 0, 0, TRUE, TRUE, 0 ) ) + if ( !DoSpecialEffectAmmoMiss( ubAttackerID, ubAttackerID->usAttackingWeapon, NOWHERE, 0, 0, 0, TRUE, TRUE, 0 ) ) { PlayJA2Sample( MISS_1 + Random(8), RATE_11025, HIGHVOLUME, 1, MIDDLEPAN ); } @@ -9159,17 +9164,19 @@ void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ) // anv: enemy taunt on miss if ( pAttacker != NULL && pAttacker->ubOppNum != NOBODY ) { + SoldierID OpponentID = pAttacker->ubOppNum; + if( Item[ pAttacker->usAttackingWeapon ].usItemClass & IC_GUN ) { - if( MercPtrs[pAttacker->ubOppNum]->aiData.bOppList[ pAttacker->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[pAttacker->ubOppNum], TAUNT_GOT_MISSED_GUNFIRE, pAttacker->ubID ); - PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_GUNFIRE, pAttacker->ubOppNum ); + if(OpponentID->aiData.bOppList[ pAttacker->ubID ] == SEEN_CURRENTLY ) + PossiblyStartEnemyTaunt( OpponentID, TAUNT_GOT_MISSED_GUNFIRE, pAttacker->ubID ); + PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_GUNFIRE, OpponentID ); } else if( Item[ pAttacker->usAttackingWeapon ].usItemClass & IC_THROWING_KNIFE ) { - if( MercPtrs[pAttacker->ubOppNum]->aiData.bOppList[ pAttacker->ubID ] == SEEN_CURRENTLY ) - PossiblyStartEnemyTaunt( MercPtrs[pAttacker->ubOppNum], TAUNT_GOT_MISSED_THROWING_KNIFE, pAttacker->ubID ); - PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_THROWING_KNIFE, pAttacker->ubOppNum ); + if( OpponentID->aiData.bOppList[ pAttacker->ubID ] == SEEN_CURRENTLY ) + PossiblyStartEnemyTaunt( OpponentID, TAUNT_GOT_MISSED_THROWING_KNIFE, pAttacker->ubID ); + PossiblyStartEnemyTaunt( pAttacker, TAUNT_MISS_THROWING_KNIFE, OpponentID ); } } } @@ -12132,7 +12139,7 @@ FLOAT CalcNewChanceToHitAimTraitBonus(SOLDIERTYPE *pSoldier, FLOAT fAimCap, FLOA extern BOOLEAN IsRoofPresentAtGridNo( INT32 sGridNo ); // Flugente: fire item from A to B (intended for mortarshells and launchable grenades) -BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ) +BOOLEAN ArtilleryStrike( UINT16 usItem, SoldierID ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ) { FLOAT dForce, dDegrees; INT16 sDestX, sDestY, sSrcX, sSrcY; diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 45c9f266..8f6afb7e 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -454,12 +454,12 @@ extern INT8 ArmourVersusExplosivesPercent( SOLDIERTYPE * pSoldier ); // Flugente: fire resistance INT16 ArmourVersusFirePercent( SOLDIERTYPE * pSoldier ); extern BOOLEAN FireWeapon( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ); -extern void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange , UINT8 ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ); -extern void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UINT8 ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ); +extern void WeaponHit( SoldierID usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange, SoldierID ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ); +extern void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, SoldierID ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ); extern void WindowHit( INT32 sGridNo, UINT16 usStructureID, BOOLEAN fBlowWindowSouth, BOOLEAN fLargeForce ); // HEADROCK HAM 5.1: Moved to Bullets.h extern BOOLEAN InRange( SOLDIERTYPE *pSoldier, INT32 sGridNo ); -extern void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ); +extern void ShotMiss( SoldierID ubAttackerID, INT32 iBullet ); extern UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos ); extern UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos ); extern UINT32 AICalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos, INT8 bTargetLevel, UINT16 usAnimState);//dnl ch59 180813 @@ -536,7 +536,7 @@ FLOAT GetOverheatJamThreshold( OBJECTTYPE *pObj ); FLOAT GetOverheatDamageThresholdModifier( OBJECTTYPE *pObj ); FLOAT GetOverheatDamageThreshold( OBJECTTYPE *pObj ); -BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ); +BOOLEAN ArtilleryStrike( UINT16 usItem, SoldierID ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ); // Flugente: functions for using several barrels at once UINT8 GetNextBarrelMode( UINT16 usItem, UINT8 aBarrelMode ); diff --git a/Tactical/World Items.cpp b/Tactical/World Items.cpp index ade73087..769d5437 100644 --- a/Tactical/World Items.cpp +++ b/Tactical/World Items.cpp @@ -256,7 +256,7 @@ void WORLDITEM::initialize() this->bRenderZHeightAboveLevel = 0; this->bVisible = 0; this->ubNonExistChance = 0; - this->soldierID = -1; + this->soldierID = NOBODY; this->object.initialize(); } @@ -270,7 +270,7 @@ WORLDITEM& WORLDITEM::operator=(OLD_WORLDITEM_101& src) this->bRenderZHeightAboveLevel = src.bRenderZHeightAboveLevel; this->bVisible = src.bVisible; this->ubNonExistChance = src.ubNonExistChance; - this->soldierID = -1; + this->soldierID = NOBODY; //convert the OBJECTTYPE this->object = src.oldObject; @@ -288,7 +288,7 @@ WORLDITEM& WORLDITEM::operator=(_OLD_WORLDITEM& src)//dnl ch42 280909 bRenderZHeightAboveLevel = src.bRenderZHeightAboveLevel; bVisible = src.bVisible; ubNonExistChance = src.ubNonExistChance; - soldierID = -1; + soldierID = NOBODY; object = src.object; } return(*this); @@ -610,7 +610,7 @@ void ResizeWorldItems(void)//dnl ch75 271013 #endif } -INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, INT8 soldierID ) +INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, SoldierID soldierID ) { UINT32 iItemIndex; INT32 iReturn; @@ -658,12 +658,15 @@ INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 { SOLDIERTYPE* pSoldier = NULL; - if (soldierID == -1) + if (soldierID == NOBODY) { if (gWorldItems[ iItemIndex ].object[0]->data.misc.ubBombOwner > 1) { soldierID = gWorldItems[ iItemIndex ].object[0]->data.misc.ubBombOwner - 2; // undo the hack - pSoldier = MercPtrs[ soldierID ]; + if ( soldierID < NOBODY ) + { + pSoldier = soldierID; + } } } diff --git a/Tactical/World Items.h b/Tactical/World Items.h index fa57ec59..4c9841b1 100644 --- a/Tactical/World Items.h +++ b/Tactical/World Items.h @@ -72,7 +72,7 @@ public: //Because this value is zero in the saved maps, we can't change it to 100, hence the reversal method. //This check is only performed the first time a map is loaded. Later, it is entirely skipped. UINT8 ubNonExistChance; - INT8 soldierID; + SoldierID soldierID; char endOfPod; OBJECTTYPE object; }; @@ -100,13 +100,29 @@ public: OBJECTTYPE object; }; // _OLD_WORLDITEM +class _WORLDITEM_INT8_ID +{ +public: + BOOLEAN fExists; + INT32 sGridNo; + UINT8 ubLevel; + UINT16 usFlags; + INT8 bRenderZHeightAboveLevel; + INT8 bVisible; + UINT8 ubNonExistChance; + INT8 soldierID; + char endOfPod; + OBJECTTYPE object; +}; + #define SIZEOF_WORLDITEM_POD (offsetof(WORLDITEM, endOfPod)) #define _OLD_SIZEOF_WORLDITEM_POD (offsetof(_OLD_WORLDITEM, endOfPod)) +#define _SIZEOF_WORLDITEM_INT8_ID_POD (offsetof(_WORLDITEM_INT8_ID, endOfPod)) extern std::vector gWorldItems;//dnl ch75 261013 extern UINT32 guiNumWorldItems; -INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, INT8 soldierID ); +INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, SoldierID soldierID ); void RemoveItemFromWorld( INT32 iItemIndex ); INT32 FindWorldItem( UINT16 usItem ); diff --git a/Tactical/bullets.cpp b/Tactical/bullets.cpp index 9ee2d929..fae510a6 100644 --- a/Tactical/bullets.cpp +++ b/Tactical/bullets.cpp @@ -71,7 +71,7 @@ void RecountBullets(void) } -INT32 CreateBullet( UINT8 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ) +INT32 CreateBullet( SoldierID ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ) { INT32 iBulletIndex; BULLET *pBullet; @@ -245,7 +245,7 @@ void LocateBullet( INT32 iBulletIndex ) // Check if a bad guy fired! if ( gBullets[ iBulletIndex ].ubFirerID != NOBODY ) { - if ( MercPtrs[ gBullets[ iBulletIndex ].ubFirerID ]->bSide == gbPlayerNum ) + if ( gBullets[ iBulletIndex ].ubFirerID->bSide == gbPlayerNum ) { if ( !gBullets[ iBulletIndex ].fLocated ) { @@ -633,7 +633,7 @@ BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile ) //Set some parameters gBullets[usCnt].uiLastUpdate = 0; if( gBullets[usCnt].ubFirerID != NOBODY ) - gBullets[usCnt].pFirer = &Menptr[ gBullets[usCnt].ubFirerID ]; + gBullets[usCnt].pFirer = gBullets[usCnt].ubFirerID; else gBullets[usCnt].pFirer = NULL; diff --git a/Tactical/faces.h b/Tactical/faces.h index aa496ff5..53a96a48 100644 --- a/Tactical/faces.h +++ b/Tactical/faces.h @@ -9,7 +9,7 @@ #include "soldier profile type.h" // Defines -#define NUM_FACE_SLOTS 50 +#define NUM_FACE_SLOTS NUM_PROFILES struct audio_gap { @@ -104,7 +104,7 @@ typedef struct typedef struct { UINT32 uiFlags; // Basic flags - INT32 iID; + INT32 iID; BOOLEAN fAllocated; //Allocated or not BOOLEAN fTalking; //Set to true if face is talking ( can be sitting for user input to esc ) BOOLEAN fAnimatingTalking; // Set if the face is animating right now @@ -119,12 +119,12 @@ typedef struct BOOLEAN fFinishTalking; // A flag to indicate we want to delay after speech done - INT32 iVideoOverlay; // Value for video overlay ( not used too much ) + INT32 iVideoOverlay; // Value for video overlay ( not used too much ) UINT32 uiSoundID; // Sound ID if one being played - UINT8 ubSoldierID; // SoldierID if one specified - UINT8 ubCharacterNum; // Profile ID num + SoldierID ubSoldierID; // SoldierID if one specified + UINT8 ubCharacterNum; // Profile ID num UINT16 usFaceX; // X location to render face UINT16 usFaceY; // Y location to render face @@ -137,7 +137,7 @@ typedef struct BOOLEAN fDisplayTextOver; // Boolean indicating to display text on face BOOLEAN fOldDisplayTextOver; // OLD Boolean indicating to display text on face BOOLEAN fCanHandleInactiveNow; - wchar_t zDisplayText[ 30 ]; // String of text that can be displayed + wchar_t zDisplayText[ 30 ]; // String of text that can be displayed UINT16 usEyesX; UINT16 usEyesY; @@ -162,15 +162,15 @@ typedef struct UINT32 uiExpressionFrequency; UINT32 uiStopOverlayTimer; - UINT8 ubExpression; + UINT8 ubExpression; INT8 bOldSoldierLife; - INT16 bOldActionPoints; + INT16 bOldActionPoints; BOOLEAN fOldHandleUIHatch; BOOLEAN fOldShowHighlight; INT8 bOldAssignment; INT8 ubOldServiceCount; - UINT8 ubOldServicePartner; + SoldierID ubOldServicePartner; BOOLEAN fOldShowMoveHilight; UINT16 sMouthFrame; @@ -200,14 +200,14 @@ extern FACETYPE gFacesData[ NUM_FACE_SLOTS ]; // FACE HANDLING // // Faces are done like this: Call -INT32 InitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags ); +INT32 InitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags ); // The first parameter is the profile ID and the second is the soldier ID ( which for most cases // will be NOBODY if the face is not created from a SOLDIERTYPE ) // This function allocates a slot in the table for the face, loads it's STI file, sets some // values for X,Y locations of eyes from the profile. Does not mkae the face visible or anything like that // INternal init face, called if you don;t want to give a profile ID ( send NO_PROFILE ) for ID -INT32 InternalInitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ); +INT32 InternalInitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ); // Removes the face from the internal table, deletes any memory allocated if any. @@ -279,10 +279,10 @@ void HandleTalkingAutoFaces( ); // Same Functions but taking soldier ID first to get profile ID INT32 InitSoldierFace( SOLDIERTYPE *pSoldier ); void DeleteSoldierFace( SOLDIERTYPE *pSoldier ); -void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT8 ubSoldierID , UINT16 usFaceX, UINT16 usFaceY ); -void SetAutoFaceInActiveFromSoldier( UINT8 ubSoldierID ); -BOOLEAN RenderAutoFaceFromSoldier( UINT8 ubSoldierID ); -BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT8 ubSoldierID, INT16 sX, INT16 sY ); +void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, SoldierID ubSoldierID, UINT16 usFaceX, UINT16 usFaceY ); +void SetAutoFaceInActiveFromSoldier( SoldierID ubSoldierID ); +BOOLEAN RenderAutoFaceFromSoldier( SoldierID ubSoldierID ); +BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, SoldierID ubSoldierID, INT16 sX, INT16 sY ); diff --git a/Tactical/fov.cpp b/Tactical/fov.cpp index 3291992f..26f2d84e 100644 --- a/Tactical/fov.cpp +++ b/Tactical/fov.cpp @@ -295,7 +295,6 @@ void RevealRoofsAndItems(SOLDIERTYPE *pSoldier, UINT32 itemsToo, BOOLEAN fShowLo INT8 itemVisible = FALSE; INT8 Blocking,twoMoreTiles,markerDir; INT8 nextDir=0; - UINT8 who; //,itemIndex; // for each square checked UINT8 dir,range,Path2; //DBrot: More Rooms //UINT8 ubRoomNo; @@ -355,7 +354,6 @@ void RevealRoofsAndItems(SOLDIERTYPE *pSoldier, UINT32 itemsToo, BOOLEAN fShowLo MercLooksForDoors( pSoldier, TRUE ); - who = pSoldier->ubID; dir = pSoldier->ubDirection; //NumMessage("good old reveal",dir); @@ -767,7 +765,7 @@ void RevealRoofsAndItems(SOLDIERTYPE *pSoldier, UINT32 itemsToo, BOOLEAN fShowLo // Turn off item lock for locators... gTacticalStatus.fLockItemLocators = FALSE; // Slide to location! - SlideToLocation( 0, marker ); + SlideToLocation( marker ); } } diff --git a/Tactical/merc entering.h b/Tactical/merc entering.h index 8043d1b1..28d0ec0e 100644 --- a/Tactical/merc entering.h +++ b/Tactical/merc entering.h @@ -4,7 +4,7 @@ extern BOOLEAN gfIngagedInDrop; void ResetHeliSeats( ); -void AddMercToHeli( UINT8 ubID ); +void AddMercToHeli( SoldierID ubID ); // Flugente: we might want to set the helicopter dropoff point without starting it at the same time void SetHelicopterDroppoint( INT32 sGridNo ); @@ -14,7 +14,7 @@ void StartHelicopterRun(); void HandleHeliDrop( BOOLEAN fPlayer = TRUE ); -UINT8 SpawnAirDropElite( INT32 sGridNo ); +SoldierID SpawnAirDropElite( INT32 sGridNo ); void InitiateEnemyAirDropSoldiers( INT32 sGridNo ); void HandleEnemyAirdrop( ); diff --git a/Tactical/opplist.cpp b/Tactical/opplist.cpp index d0e85f9c..68eb337b 100644 --- a/Tactical/opplist.cpp +++ b/Tactical/opplist.cpp @@ -70,16 +70,16 @@ extern void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier ); // HEADROCK HAM 3.6: Moved to header //void MakeBloodcatsHostile( void ); -void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ); -void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); -void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void OurNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ); +void TheirNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void ProcessNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); UINT8 CalcEffVolume(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT8 ubNoiseType, UINT8 ubBaseVolume, UINT8 ubTerrType1, UINT8 ubTerrType2); -void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 *ubSeen); -void TellPlayerAboutNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage = NULL ); +void HearNoise(SOLDIERTYPE *pSoldier, SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 *ubSeen); +void TellPlayerAboutNoise(SOLDIERTYPE *pSoldier, SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage = NULL ); void OurTeamSeesSomeone( SOLDIERTYPE * pSoldier, INT8 bNumReRevealed, INT8 bNumNewEnemies ); -void IncrementWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ); -void SetWatchedLocAsUsed( UINT8 ubID, INT32 sGridNo, INT8 bLevel ); +void IncrementWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel ); +void SetWatchedLocAsUsed( UINT16 ubID, INT32 sGridNo, INT8 bLevel ); void DecayWatchedLocs( INT8 bTeam ); void HandleManNoLongerSeen( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent, INT8 * pPersOL, INT8 * pbPublOL ); @@ -87,7 +87,7 @@ void HandleManNoLongerSeen( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent, INT // The_Bob - real time sneaking code 01/06/09 extern void CancelItemPointer(void); extern BOOLEAN NobodyAlerted(void); -extern void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ); +extern void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed ); //#define TESTOPPLIST // for ManSeesMan() @@ -116,7 +116,7 @@ BOOLEAN gfMikeShouldSayHi = FALSE; BOOLEAN gfMorrisShouldSayHi = FALSE; #endif -UINT8 gubBestToMakeSighting[BEST_SIGHTING_ARRAY_SIZE]; +SoldierID gubBestToMakeSighting[BEST_SIGHTING_ARRAY_SIZE]; UINT8 gubBestToMakeSightingSize = 0; //BOOLEAN gfHumanSawSomeoneInRealtime; @@ -124,11 +124,11 @@ BOOLEAN gfDelayResolvingBestSightingDueToDoor = FALSE; #define SHOULD_BECOME_HOSTILE_SIZE 32 -UINT8 gubShouldBecomeHostileOrSayQuote[ SHOULD_BECOME_HOSTILE_SIZE ]; +SoldierID gubShouldBecomeHostileOrSayQuote[ SHOULD_BECOME_HOSTILE_SIZE ]; UINT8 gubNumShouldBecomeHostileOrSayQuote; // NB this ID is set for someone opening a door -UINT8 gubInterruptProvoker = NOBODY; +SoldierID gubInterruptProvoker = NOBODY; INT8 gbPublicOpplist[MAXTEAMS][TOTAL_SOLDIERS]; INT8 gbSeenOpponents[TOTAL_SOLDIERS][TOTAL_SOLDIERS]; @@ -248,7 +248,7 @@ INT8 gbSmellStrength[3] = }; -UINT16 gsWhoThrewRock = NOBODY; +SoldierID gsWhoThrewRock = NOBODY; // % values of sighting distance at various light levels //DBrot: use gGameExternalOptions.ubBrightnessVisionMod instead @@ -356,9 +356,8 @@ INT16 AdjustMaxSightRangeForEnvEffects( SOLDIERTYPE *pSoldier, INT8 bLightLevel, void SwapBestSightingPositions( INT8 bPos1, INT8 bPos2 ) { - UINT8 ubTemp; + SoldierID ubTemp = gubBestToMakeSighting[ bPos1 ]; - ubTemp = gubBestToMakeSighting[ bPos1 ]; gubBestToMakeSighting[ bPos1 ] = gubBestToMakeSighting[ bPos2 ]; gubBestToMakeSighting[ bPos2 ] = ubTemp; } @@ -406,7 +405,7 @@ void ReevaluateBestSightingPosition( SOLDIERTYPE * pSoldier, INT8 bInterruptDuel // must percolate him down for ( ubLoop2 = ubLoop + 1; ubLoop2 < gubBestToMakeSightingSize; ubLoop2++ ) { - if ( gubBestToMakeSighting[ ubLoop2 ] != NOBODY && MercPtrs[ gubBestToMakeSighting[ ubLoop2 - 1 ] ]->aiData.bInterruptDuelPts < MercPtrs[ gubBestToMakeSighting[ ubLoop2 ] ]->aiData.bInterruptDuelPts ) + if ( gubBestToMakeSighting[ ubLoop2 ] != NOBODY && gubBestToMakeSighting[ ubLoop2 - 1 ]->aiData.bInterruptDuelPts < gubBestToMakeSighting[ ubLoop2 ]->aiData.bInterruptDuelPts ) { SwapBestSightingPositions( (UINT8) (ubLoop2 - 1), ubLoop2 ); } @@ -439,11 +438,11 @@ void ReevaluateBestSightingPosition( SOLDIERTYPE * pSoldier, INT8 bInterruptDuel { for ( ubLoop = 0; ubLoop < gubBestToMakeSightingSize; ubLoop++ ) { - if ( pSoldier->RecognizeAsCombatant(gubBestToMakeSighting[ ubLoop ]) && (gubBestToMakeSighting[ ubLoop ] == NOBODY) || ( gubBestToMakeSighting[ ubLoop ] != NOBODY && bInterruptDuelPts > MercPtrs[ gubBestToMakeSighting[ ubLoop ] ]->aiData.bInterruptDuelPts ) ) + if ( pSoldier->RecognizeAsCombatant(gubBestToMakeSighting[ ubLoop ]) && (gubBestToMakeSighting[ ubLoop ] == NOBODY) || ( gubBestToMakeSighting[ ubLoop ] != NOBODY && bInterruptDuelPts > gubBestToMakeSighting[ ubLoop ]->aiData.bInterruptDuelPts ) ) { if ( gubBestToMakeSighting[ gubBestToMakeSightingSize - 1 ] != NOBODY ) { - MercPtrs[ gubBestToMakeSighting[ gubBestToMakeSightingSize - 1 ] ]->aiData.bInterruptDuelPts = NO_INTERRUPT; + gubBestToMakeSighting[ gubBestToMakeSightingSize - 1 ]->aiData.bInterruptDuelPts = NO_INTERRUPT; DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP: resetting points for %d to zilch", pSoldier->ubID ) ); } @@ -468,7 +467,7 @@ void ReevaluateBestSightingPosition( SOLDIERTYPE * pSoldier, INT8 bInterruptDuel { if ( (gubBestToMakeSighting[ ubLoop ] != NOBODY) ) { - DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP entry %d: %d (%d pts)", ubLoop, gubBestToMakeSighting[ ubLoop ], MercPtrs[ gubBestToMakeSighting[ ubLoop ] ]->aiData.bInterruptDuelPts ) ); + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP entry %d: %d (%d pts)", ubLoop, gubBestToMakeSighting[ ubLoop ], gubBestToMakeSighting[ ubLoop ]->aiData.bInterruptDuelPts ) ); } } @@ -479,7 +478,7 @@ void HandleBestSightingPositionInRealtime( void ) // This function is called for handling interrupts when opening a door in non-combat or // just sighting in non-combat, deciding who gets the first turn - UINT8 ubLoop; + UINT16 ubLoop; if ( gfDelayResolvingBestSightingDueToDoor ) { @@ -503,52 +502,51 @@ void HandleBestSightingPositionInRealtime( void ) { // The_Bob - real time sneaking code 01/06/09 // if real time sneaking conditions are met... // this is now in the preferences window - SANDRO - if (gGameSettings.fOptions[TOPTION_ALLOW_REAL_TIME_SNEAK] && MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam == OUR_TEAM && NobodyAlerted() ) + if (gGameSettings.fOptions[TOPTION_ALLOW_REAL_TIME_SNEAK] && gubBestToMakeSighting[ 0 ]->bTeam == OUR_TEAM && NobodyAlerted() ) { // get rid of the item under cursor (we gotta react FAST) CancelItemPointer(); // select (and center screen on) the merc who saw the enemy // HEADROCK HAM 3.6: A much-requested toggle. - if (gusSelectedSoldier != (UINT16)MercPtrs[gubBestToMakeSighting[ 0 ]]->ubID && - !gGameExternalOptions.fNoAutoFocusChangeInRealtimeSneak) - SelectSoldier (MercPtrs[gubBestToMakeSighting[ 0 ]]->ubID, false, true); + if (gusSelectedSoldier != gubBestToMakeSighting[ 0 ]->ubID && !gGameExternalOptions.fNoAutoFocusChangeInRealtimeSneak) + SelectSoldier(gubBestToMakeSighting[ 0 ]->ubID, false, true); // if not quiet, emit a message warning the player if (!gGameExternalOptions.fQuietRealTimeSneak) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_RTM_ENEMIES_SPOOTED]); return; // and do nothing } - else if ( MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam != OUR_TEAM && MercPtrs[gubBestToMakeSighting[ 0 ]]->aiData.bOppCnt > 0 ) + else if ( gubBestToMakeSighting[ 0 ]->bTeam != OUR_TEAM && gubBestToMakeSighting[ 0 ]->aiData.bOppCnt > 0 ) { // otherwise, simply award the turn to the team that saw the enemy first - EnterCombatMode( MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam ); + EnterCombatMode( gubBestToMakeSighting[ 0 ]->bTeam ); } else // otherwise, simply award the turn to the team that saw the enemy first - EnterCombatMode( MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam ); + EnterCombatMode( gubBestToMakeSighting[ 0 ]->bTeam ); } else { // if 1st and 2nd on same team, or 1st and 3rd on same team, or there IS no 3rd, award turn to 1st - if ( /*MercPtrs[gubBestToMakeSighting[ 0 ]]->aiData.bOppCnt > 0 &&*/ ( MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam == MercPtrs[gubBestToMakeSighting[ 1 ]]->bTeam ) || - ( (gubBestToMakeSighting[ 2 ] == NOBODY) || ( MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam == MercPtrs[gubBestToMakeSighting[ 2 ]]->bTeam ) ) + if ( /*gubBestToMakeSighting[ 0 ]->aiData.bOppCnt > 0 &&*/ ( gubBestToMakeSighting[ 0 ]->bTeam == gubBestToMakeSighting[ 1 ]->bTeam ) || + ( (gubBestToMakeSighting[ 2 ] == NOBODY) || ( gubBestToMakeSighting[ 0 ]->bTeam == gubBestToMakeSighting[ 2 ]->bTeam ) ) ) { - EnterCombatMode( MercPtrs[gubBestToMakeSighting[ 0 ]]->bTeam ); + EnterCombatMode( gubBestToMakeSighting[ 0 ]->bTeam ); } - else //if ( MercPtrs[gubBestToMakeSighting[ 1 ]]->aiData.bOppCnt > 0 ) // give turn to 2nd best but interrupt to 1st + else //if ( gubBestToMakeSighting[ 1 ]->aiData.bOppCnt > 0 ) // give turn to 2nd best but interrupt to 1st { DebugMsg( TOPIC_JA2, DBG_LEVEL_3, "Entering combat mode: turn for 2nd best, int for best" ); - EnterCombatMode( MercPtrs[gubBestToMakeSighting[ 1 ]]->bTeam ); + EnterCombatMode( gubBestToMakeSighting[ 1 ]->bTeam ); // 2nd guy loses control AddToIntList( gubBestToMakeSighting[ 1 ], FALSE, TRUE); // 1st guy gains control AddToIntList( gubBestToMakeSighting[ 0 ], TRUE, TRUE); // done - DoneAddingToIntList( MercPtrs[gubBestToMakeSighting[ 0 ]], TRUE, SIGHTINTERRUPT ); + DoneAddingToIntList( gubBestToMakeSighting[ 0 ], TRUE, SIGHTINTERRUPT ); } } } @@ -557,8 +555,8 @@ void HandleBestSightingPositionInRealtime( void ) { if ( gubBestToMakeSighting[ ubLoop ] != NOBODY ) { - MercPtrs[ gubBestToMakeSighting[ ubLoop ]]->aiData.bInterruptDuelPts = NO_INTERRUPT; - DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP: done, resetting points for %d to zilch", MercPtrs[ gubBestToMakeSighting[ ubLoop ] ]->ubID ) ); + gubBestToMakeSighting[ ubLoop ]->aiData.bInterruptDuelPts = NO_INTERRUPT; + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP: done, resetting points for %d to zilch", gubBestToMakeSighting[ ubLoop ]->ubID ) ); } } @@ -578,12 +576,12 @@ void HandleBestSightingPositionInTurnbased( void ) { // This function is called for handling interrupts when opening a door in turnbased - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; BOOLEAN fOk = FALSE; if ( gubBestToMakeSighting[ 0 ] != NOBODY ) { - if ( MercPtrs[ gubBestToMakeSighting[ 0 ] ]->bTeam != gTacticalStatus.ubCurrentTeam ) + if ( gubBestToMakeSighting[ 0 ]->bTeam != gTacticalStatus.ubCurrentTeam ) { // interrupt! @@ -605,7 +603,7 @@ void HandleBestSightingPositionInTurnbased( void ) } } - else if ( MercPtrs[ gubBestToMakeSighting[ ubLoop ] ]->bTeam == gTacticalStatus.ubCurrentTeam ) + else if ( gubBestToMakeSighting[ ubLoop ]->bTeam == gTacticalStatus.ubCurrentTeam ) { fOk = TRUE; break; @@ -621,7 +619,7 @@ void HandleBestSightingPositionInTurnbased( void ) AddToIntList( gubBestToMakeSighting[ ubLoop2 ], TRUE, TRUE); } // done - DoneAddingToIntList( MercPtrs[ gubBestToMakeSighting[ ubLoop ] ], TRUE, SIGHTINTERRUPT ); + DoneAddingToIntList( gubBestToMakeSighting[ ubLoop ], TRUE, SIGHTINTERRUPT ); } } @@ -629,8 +627,8 @@ void HandleBestSightingPositionInTurnbased( void ) { if ( gubBestToMakeSighting[ ubLoop ] != NOBODY ) { - MercPtrs[ gubBestToMakeSighting[ ubLoop ]]->aiData.bInterruptDuelPts = NO_INTERRUPT; - DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP (TB): done, resetting points for %d to zilch", MercPtrs[ gubBestToMakeSighting[ ubLoop ] ]->ubID ) ); + gubBestToMakeSighting[ ubLoop ]->aiData.bInterruptDuelPts = NO_INTERRUPT; + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "RBSP (TB): done, resetting points for %d to zilch", gubBestToMakeSighting[ ubLoop ]->ubID ) ); } } @@ -672,13 +670,13 @@ void InitSightArrays( void ) } } -void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ) +void AddToShouldBecomeHostileOrSayQuoteList( SoldierID ubID ) { - UINT8 ubLoop; + UINT16 ubLoop; Assert( gubNumShouldBecomeHostileOrSayQuote < SHOULD_BECOME_HOSTILE_SIZE ); - if ( MercPtrs[ ubID ]->stats.bLife < OKLIFE ) + if ( ubID->stats.bLife < OKLIFE ) { return; } @@ -696,15 +694,15 @@ void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ) gubNumShouldBecomeHostileOrSayQuote++; } -UINT8 SelectSpeakerFromHostileOrSayQuoteList( void ) +SoldierID SelectSpeakerFromHostileOrSayQuoteList( void ) { - UINT8 ubProfileList[ SHOULD_BECOME_HOSTILE_SIZE ]; // NB list of merc IDs, not profiles! + SoldierID IDList[ SHOULD_BECOME_HOSTILE_SIZE ]; UINT8 ubLoop, ubNumProfiles = 0; SOLDIERTYPE * pSoldier; for ( ubLoop = 0; ubLoop < gubNumShouldBecomeHostileOrSayQuote; ubLoop++ ) { - pSoldier = MercPtrs[ gubShouldBecomeHostileOrSayQuote[ ubLoop ] ]; + pSoldier = gubShouldBecomeHostileOrSayQuote[ ubLoop ]; if ( pSoldier->ubProfile != NO_PROFILE ) { @@ -713,7 +711,7 @@ UINT8 SelectSpeakerFromHostileOrSayQuoteList( void ) if ( NPCHasUnusedHostileRecord( pSoldier->ubProfile, APPROACH_DECLARATION_OF_HOSTILITY ) ) { - ubProfileList[ ubNumProfiles ] = gubShouldBecomeHostileOrSayQuote[ ubLoop ]; + IDList[ ubNumProfiles ] = gubShouldBecomeHostileOrSayQuote[ ubLoop ]; ubNumProfiles++; } else @@ -731,7 +729,7 @@ UINT8 SelectSpeakerFromHostileOrSayQuoteList( void ) } else { - return( ubProfileList[ Random( ubNumProfiles ) ] ); + return(IDList[ Random( ubNumProfiles ) ] ); } } @@ -745,7 +743,8 @@ void CheckHostileOrSayQuoteList( void ) } else { - UINT8 ubSpeaker, ubLoop; + SoldierID ubSpeaker; + UINT16 ubLoop; SOLDIERTYPE * pSoldier; ubSpeaker = SelectSpeakerFromHostileOrSayQuoteList(); @@ -754,7 +753,7 @@ void CheckHostileOrSayQuoteList( void ) // make sure everyone on this list is hostile for ( ubLoop = 0; ubLoop < gubNumShouldBecomeHostileOrSayQuote; ubLoop++ ) { - pSoldier = MercPtrs[ gubShouldBecomeHostileOrSayQuote[ ubLoop ] ]; + pSoldier = gubShouldBecomeHostileOrSayQuote[ ubLoop ]; if ( pSoldier->aiData.bNeutral ) { MakeCivHostile(pSoldier); @@ -789,13 +788,13 @@ void CheckHostileOrSayQuoteList( void ) // stop everyone? // We want to make this guy visible to the player. - if ( MercPtrs[ ubSpeaker ]->bVisible != TRUE ) + if ( ubSpeaker->bVisible != TRUE ) { gbPublicOpplist[ gbPlayerNum ][ ubSpeaker ] = HEARD_THIS_TURN; - HandleSight( MercPtrs[ ubSpeaker ], SIGHT_LOOK | SIGHT_RADIO ); + HandleSight( ubSpeaker, SIGHT_LOOK | SIGHT_RADIO ); } // trigger hater - TriggerNPCWithIHateYouQuote( MercPtrs[ ubSpeaker ]->ubProfile ); + TriggerNPCWithIHateYouQuote( ubSpeaker->ubProfile ); } } } @@ -988,63 +987,63 @@ void HandleSight(SOLDIERTYPE *pSoldier, UINT8 ubSightFlags) } -void OurTeamRadiosRandomlyAbout(UINT8 ubAbout) +void OurTeamRadiosRandomlyAbout(UINT16 ubAbout) { - INT32 iLoop; - // WDS - make number of mercenaries, etc. be configurable -INT8 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; - SOLDIERTYPE *pSoldier; + // WDS - make number of mercenaries, etc. be configurable + INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; + SOLDIERTYPE *pSoldier; -// Temporary for opplist synching - disable random order radioing + // Temporary for opplist synching - disable random order radioing #ifdef RECORDOPPLIST - for (iLoop = Status.team[Net.pnum].guystart,ourPtr = MercPtrs[iLoop]; iLoop < Status.team[Net.pnum].guyend; iLoop++,ourPtr++) + for (iLoop = Status.team[Net.pnum].guystart,ourPtr = MercPtrs[iLoop]; iLoop < Status.team[Net.pnum].guyend; iLoop++,ourPtr++) { - // if this merc is active, in this sector, and well enough to look - if (pSoldier->active && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE)) - { - RadioSightings(pSoldier,ubAbout,pSoldier->bTeam); - pSoldier->bNewOppCnt = 0; - } + // if this merc is active, in this sector, and well enough to look + if (pSoldier->active && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE)) + { + RadioSightings(pSoldier,ubAbout,pSoldier->bTeam); + pSoldier->bNewOppCnt = 0; + } } - return; + return; #endif - // All mercs on our local team check if they should radio about him - iLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; + // All mercs on our local team check if they should radio about him + SoldierID id = gTacticalStatus.Team[gbPlayerNum].bFirstID; - // make a list of all of our team's mercs - for (pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; iLoop++,pSoldier++) + // make a list of all of our team's mercs + for ( ; id <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++id ) { - // if this merc is active, in this sector, and well enough to look - if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE)) - // put him on our list, and increment the counter - radioMan[radioCnt++] = (INT8)iLoop; + pSoldier = id; + // if this merc is active, in this sector, and well enough to look + if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE)) + // put him on our list, and increment the counter + radioMan[radioCnt++] = (INT16)id; } - // now RANDOMLY handle each of the mercs on our list, until none remain - // (this is all being done ONLY so that the mercs in the earliest merc - // slots do not arbitrarily get the bulk of the sighting speech quote - // action, while the later ones almost never pipe up, and is NOT - // strictly necessary, but a nice improvement over original JA) - while (radioCnt) + // now RANDOMLY handle each of the mercs on our list, until none remain + // (this is all being done ONLY so that the mercs in the earliest merc + // slots do not arbitrarily get the bulk of the sighting speech quote + // action, while the later ones almost never pipe up, and is NOT + // strictly necessary, but a nice improvement over original JA) + while (radioCnt) { - // pick a merc from one of the remaining slots at random - iLoop = Random(radioCnt); + // pick a merc from one of the remaining slots at random + INT16 iLoop = Random(radioCnt); - // handle radioing for that merc - RadioSightings(MercPtrs[radioMan[iLoop]],ubAbout,MercPtrs[radioMan[iLoop]]->bTeam); - Menptr[radioMan[iLoop]].bNewOppCnt = 0; + // handle radioing for that merc + RadioSightings( MercPtrs[radioMan[iLoop]], ubAbout, MercPtrs[radioMan[iLoop]]->bTeam ); + Menptr[radioMan[iLoop]].bNewOppCnt = 0; - // unless it WAS the last used slot that we happened to pick - if (iLoop != (radioCnt - 1)) - // move the contents of the last slot into the one just handled - radioMan[iLoop] = radioMan[radioCnt - 1]; + // unless it WAS the last used slot that we happened to pick + if (iLoop != (radioCnt - 1)) + // move the contents of the last slot into the one just handled + radioMan[iLoop] = radioMan[radioCnt - 1]; - radioCnt--; + radioCnt--; } } @@ -1057,73 +1056,71 @@ INT8 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; -INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, UINT8 ubExcludeID, INT8 bIteration ) +INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, SoldierID ubExcludeID, INT8 bIteration ) { - UINT16 bLoop; SOLDIERTYPE *pMate; - - - bLoop = gTacticalStatus.Team[ubTeam].bFirstID; + SoldierID bLoop = gTacticalStatus.Team[ubTeam].bFirstID; // look for all mercs on the same team, check opplists for this soldier - for (pMate = MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[ubTeam].bLastID; ++bLoop,pMate++) + for ( ; bLoop <= gTacticalStatus.Team[ubTeam].bLastID; ++bLoop ) { + pMate = bLoop; // if this "teammate" is me, myself, or I (whom we want to exclude) - if (bLoop == ubExcludeID) - continue; // skip to next teammate, I KNOW I don't see him... + if ( bLoop == ubExcludeID ) + continue; // skip to next teammate, I KNOW I don't see him... - // if this merc is not on the same team - if (pMate->bTeam != ubTeam) - continue; // skip him, he's no teammate at all! + // if this merc is not on the same team + if ( pMate->bTeam != ubTeam ) + continue; // skip him, he's no teammate at all! - // if this merc is not active, at base, on assignment, dead, unconscious - if (!pMate->bActive || !pMate->bInSector || (pMate->stats.bLife < OKLIFE)) - continue; // next merc + // if this merc is not active, at base, on assignment, dead, unconscious + if ( !pMate->bActive || !pMate->bInSector || (pMate->stats.bLife < OKLIFE) ) + continue; // next merc - // if this teammate currently sees this opponent - if (pMate->aiData.bOppList[pOpponent->ubID] == SEEN_CURRENTLY) - return(FALSE); // that's all I need to know, get out of here + // if this teammate currently sees this opponent + if ( pMate->aiData.bOppList[pOpponent->ubID] == SEEN_CURRENTLY ) + return(FALSE); // that's all I need to know, get out of here } -/* comm by ddd -#ifdef WE_SEE_WHAT_MILITIA_SEES_AND_VICE_VERSA - if ( bIteration == 0 ) + /* comm by ddd + #ifdef WE_SEE_WHAT_MILITIA_SEES_AND_VICE_VERSA + if ( bIteration == 0 ) + { + if ( ubTeam == gbPlayerNum && gTacticalStatus.Team[ MILITIA_TEAM ].bTeamActive ) + { + // check militia team as well + return( TeamNoLongerSeesMan( MILITIA_TEAM, pOpponent, ubExcludeID, 1 ) ); + } + else if ( ubTeam == MILITIA_TEAM && gTacticalStatus.Team[ gbPlayerNum ].bTeamActive ) + { + // check player team as well + return( TeamNoLongerSeesMan( gbPlayerNum, pOpponent, ubExcludeID, 1 ) ); + } + } + #endif + */ + //ddd + if ( gGameExternalOptions.bWeSeeWhatMilitiaSeesAndViceVersa ) { - if ( ubTeam == gbPlayerNum && gTacticalStatus.Team[ MILITIA_TEAM ].bTeamActive ) + if ( bIteration == 0 ) { - // check militia team as well - return( TeamNoLongerSeesMan( MILITIA_TEAM, pOpponent, ubExcludeID, 1 ) ); + if ( ubTeam == gbPlayerNum && gTacticalStatus.Team[MILITIA_TEAM].bTeamActive ) + { + // check militia team as well + return(TeamNoLongerSeesMan( MILITIA_TEAM, pOpponent, ubExcludeID, 1 )); + } + else if ( ubTeam == MILITIA_TEAM && gTacticalStatus.Team[gbPlayerNum].bTeamActive ) + { + // check player team as well + return(TeamNoLongerSeesMan( gbPlayerNum, pOpponent, ubExcludeID, 1 )); + } } - else if ( ubTeam == MILITIA_TEAM && gTacticalStatus.Team[ gbPlayerNum ].bTeamActive ) - { - // check player team as well - return( TeamNoLongerSeesMan( gbPlayerNum, pOpponent, ubExcludeID, 1 ) ); - } - } -#endif -*/ -//ddd -if(gGameExternalOptions.bWeSeeWhatMilitiaSeesAndViceVersa) -{ - if ( bIteration == 0 ) - { - if ( ubTeam == gbPlayerNum && gTacticalStatus.Team[ MILITIA_TEAM ].bTeamActive ) - { - // check militia team as well - return( TeamNoLongerSeesMan( MILITIA_TEAM, pOpponent, ubExcludeID, 1 ) ); - } - else if ( ubTeam == MILITIA_TEAM && gTacticalStatus.Team[ gbPlayerNum ].bTeamActive ) - { - // check player team as well - return( TeamNoLongerSeesMan( gbPlayerNum, pOpponent, ubExcludeID, 1 ) ); - } - } -} -//ddd + } + //ddd - // none of my friends is currently seeing the guy, so return success - return(TRUE); + // none of my friends is currently seeing the guy, so return success + return(TRUE); } INT16 DistanceSmellable( SOLDIERTYPE *pSoldier, SOLDIERTYPE * pSubject ) @@ -1525,12 +1522,11 @@ void TurnOffEveryonesMuzzleFlashes( void ) void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam ) { - UINT8 ubLoop; SOLDIERTYPE * pSoldier; - for (ubLoop = gTacticalStatus.Team[ ubTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ ubTeam ].bLastID; ubLoop++) + for ( SoldierID ubLoop = gTacticalStatus.Team[ ubTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ ubTeam ].bLastID; ++ubLoop ) { - pSoldier = MercPtrs[ ubLoop ]; + pSoldier = ubLoop; if ( pSoldier->flags.fMuzzleFlash ) { @@ -1639,15 +1635,14 @@ void InitOpplistForDoorOpening( void ) void AllTeamsLookForAll(UINT8 ubAllowInterrupts) { - UINT32 uiLoop; - SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pSoldier; - if( ( gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) ) + if ( (gTacticalStatus.uiFlags & LOADING_SAVED_GAME) ) { return; } - if (ubAllowInterrupts || !(gTacticalStatus.uiFlags & INCOMBAT) ) + if ( ubAllowInterrupts || !(gTacticalStatus.uiFlags & INCOMBAT) ) { gubBestToMakeSightingSize = BEST_SIGHTING_ARRAY_SIZE_ALL_TEAMS_LOOK_FOR_ALL; if ( gfDelayResolvingBestSightingDueToDoor ) @@ -1662,20 +1657,20 @@ void AllTeamsLookForAll(UINT8 ubAllowInterrupts) } } - for (uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) + for ( UINT16 uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop ) { - pSoldier = MercSlots[ uiLoop ]; + pSoldier = MercSlots[uiLoop]; if ( pSoldier != NULL && pSoldier->stats.bLife >= OKLIFE ) { - HandleSight(pSoldier,SIGHT_LOOK); // no radio or interrupts yet + HandleSight( pSoldier, SIGHT_LOOK ); // no radio or interrupts yet } } // the player team now radios about all sightings - for ( uiLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; uiLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; uiLoop++ ) + for ( SoldierID uiLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; uiLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++uiLoop ) { - HandleSight( MercPtrs[ uiLoop ], SIGHT_RADIO ); // looking was done above + HandleSight( uiLoop, SIGHT_RADIO ); // looking was done above } if ( !(gTacticalStatus.uiFlags & INCOMBAT) ) @@ -1699,52 +1694,52 @@ void AllTeamsLookForAll(UINT8 ubAllowInterrupts) gubBestToMakeSightingSize = BEST_SIGHTING_ARRAY_SIZE_INCOMBAT; } - /* + /* - // do this here as well as in overhead so the looks/interrupts are combined! + // do this here as well as in overhead so the looks/interrupts are combined! - // if a door was recently opened/closed (doesn't matter if we could see it) - // this is done here so we can first handle everyone looking through the - // door, and deal with the resulting opplist changes, interrupts, etc. - if ( !TileIsOutOfBounds(Status.doorCreakedGridno)) - { - // opening/closing a door makes a bit of noise (constant volume) - MakeNoise(Status.doorCreakedGuynum,Status.doorCreakedGridno,TTypeList[Grid[Status.doorCreakedGridno].land],DOOR_NOISE_VOLUME,NOISE_CREAKING,EXPECTED_NOSEND); + // if a door was recently opened/closed (doesn't matter if we could see it) + // this is done here so we can first handle everyone looking through the + // door, and deal with the resulting opplist changes, interrupts, etc. + if ( !TileIsOutOfBounds(Status.doorCreakedGridno)) + { + // opening/closing a door makes a bit of noise (constant volume) + MakeNoise(Status.doorCreakedGuynum,Status.doorCreakedGridno,TTypeList[Grid[Status.doorCreakedGridno].land],DOOR_NOISE_VOLUME,NOISE_CREAKING,EXPECTED_NOSEND); - Status.doorCreakedGridno = NOWHERE; - Status.doorCreakedGuynum = NOBODY; - } + Status.doorCreakedGridno = NOWHERE; + Status.doorCreakedGuynum = NOBODY; + } - // all soldiers now radio their findings (NO interrupts permitted this early!) - // NEW: our entire team must radio first, so that they radio about EVERYBODY - // rather radioing about individuals one a a time (repeats see 1 enemy quote) - for (cnt = Status.team[Net.pnum].guystart,ptr = MercPtrs[cnt]; cnt < Status.team[Net.pnum].guyend; cnt++,ptr++) - { - if (ptr->active && ptr->in_sector && (ptr->life >= OKLIFE)) - HandleSight(ptr,SIGHT_RADIO); // looking was done above - } + // all soldiers now radio their findings (NO interrupts permitted this early!) + // NEW: our entire team must radio first, so that they radio about EVERYBODY + // rather radioing about individuals one a a time (repeats see 1 enemy quote) + for (cnt = Status.team[Net.pnum].guystart,ptr = MercPtrs[cnt]; cnt < Status.team[Net.pnum].guyend; cnt++,ptr++) + { + if (ptr->active && ptr->in_sector && (ptr->life >= OKLIFE)) + HandleSight(ptr,SIGHT_RADIO); // looking was done above + } - for (cnt = 0,ptr = Menptr; cnt < MAXMERCS; cnt++,ptr++) - { - if (ptr->active && ptr->in_sector && (ptr->life >= OKLIFE) && !PTR_OURTEAM) - HandleSight(ptr,SIGHT_RADIO); // looking was done above - } + for (cnt = 0,ptr = Menptr; cnt < MAXMERCS; cnt++,ptr++) + { + if (ptr->active && ptr->in_sector && (ptr->life >= OKLIFE) && !PTR_OURTEAM) + HandleSight(ptr,SIGHT_RADIO); // looking was done above + } - // if interrupts were allowed - if (allowInterrupts) - // resolve interrupts against the selected character (others disallowed) - HandleSight(MercPtrs[Status.allLookCharacter],SIGHT_INTERRUPT); + // if interrupts were allowed + if (allowInterrupts) + // resolve interrupts against the selected character (others disallowed) + HandleSight(MercPtrs[Status.allLookCharacter],SIGHT_INTERRUPT); - // revert to normal interrupt operation - InterruptOnlyGuynum = NOBODY; - InterruptsAllowed = TRUE; - */ + // revert to normal interrupt operation + InterruptOnlyGuynum = NOBODY; + InterruptsAllowed = TRUE; + */ - // reset interrupt only guynum which may have been used - gubInterruptProvoker = NOBODY; + // reset interrupt only guynum which may have been used + gubInterruptProvoker = NOBODY; } @@ -1838,7 +1833,7 @@ void HandleManNoLongerSeen( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent, INT { // check if I was the only one who was seeing this guy (exlude ourselves) // THIS MUST HAPPEN EVEN FOR ENEMIES, TO MAKE THEIR PUBLIC opplist DECAY! - if (TeamNoLongerSeesMan(pSoldier->bTeam,pOpponent,pSoldier->ubID, 0 )) + if (TeamNoLongerSeesMan(pSoldier->bTeam, pOpponent, pSoldier->ubID, 0)) { #ifdef TESTOPPLIST DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String( "TeamNoLongerSeesMan: ID %d(%S) to ID %d",pSoldier->ubID,pSoldier->name,pOpponent->ubID) ); @@ -2798,7 +2793,7 @@ if(SEE_MENT) { //SlideTo(0,pOpponent->ubID, pSoldier->ubID, SETLOCATOR); //rain - SlideTo(0,pOpponent->ubID, pSoldier->ubID, SETLOCATORFAST); + SlideTo(pOpponent->ubID, SETLOCATORFAST); //end rain } } @@ -2857,7 +2852,7 @@ void DecideTrueVisibility(SOLDIERTYPE *pSoldier, UINT8 ubLocate) //if (Status.stopSlidingAt == NOBODY) if (gTacticalStatus.uiFlags & TURNBASED && ( gTacticalStatus.uiFlags & INCOMBAT ) ) //LocateSoldier(pSoldier->ubID,DONTSETLOCATOR); - SlideTo(0,pSoldier->ubID, NOBODY, DONTSETLOCATOR); + SlideTo(pSoldier->ubID, DONTSETLOCATOR); // follow his movement on our screen as he moves around... //LocateMember(ptr->guynum,DONTSETLOCATOR); @@ -3043,30 +3038,25 @@ void RemoveOneOpponent(SOLDIERTYPE *pSoldier) void RemoveManAsTarget(SOLDIERTYPE *pSoldier) { + SOLDIERTYPE *pOpponent; + UINT8 ubLoop; + SoldierID ubTarget = pSoldier->ubID; - SOLDIERTYPE *pOpponent; - UINT8 ubTarget,ubLoop; - - - ubTarget = pSoldier->ubID; - - // clean up the public opponent lists and locations - for (ubLoop = 0; ubLoop < MAXTEAMS; ubLoop++) - // never causes any additional looks - UpdatePublic(ubLoop,ubTarget,NOT_HEARD_OR_SEEN,NOWHERE,0); - -/* - - -IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS? - - // make sure this guy is no longer a possible target for anyone - for (cnt = 0, pOpponent = Menptr; cnt < MAXMERCS; cnt++,pOpponent++) - { - if (pOpponent->bOppNum == ubTarget) - pOpponent->bOppNum = NOBODY; + // clean up the public opponent lists and locations + for (ubLoop = 0; ubLoop < MAXTEAMS; ubLoop++) + { // never causes any additional looks + UpdatePublic(ubLoop, ubTarget, NOT_HEARD_OR_SEEN, NOWHERE, 0); } + /* + IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS? + + // make sure this guy is no longer a possible target for anyone + for (cnt = 0, pOpponent = Menptr; cnt < MAXMERCS; cnt++,pOpponent++) + { + if (pOpponent->bOppNum == ubTarget) + pOpponent->bOppNum = NOBODY; + } */ @@ -3086,87 +3076,79 @@ IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS? if ( ( !CONSIDERED_NEUTRAL( pOpponent, pSoldier ) || pSoldier->usSoldierFlagMask & SOLDIER_POW ) && pOpponent->RecognizeAsCombatant(pSoldier->ubID) ) RemoveOneOpponent(pOpponent); } - UpdatePersonal(pOpponent,ubTarget,NOT_HEARD_OR_SEEN,NOWHERE,0); + UpdatePersonal(pOpponent, ubTarget, NOT_HEARD_OR_SEEN, NOWHERE, 0); gbSeenOpponents[ubLoop][ubTarget] = FALSE; } } -/* + /* + for (ubLoop = 0,pOpponent = Menptr; ubLoop < MAXMERCS; ubLoop++,pOpponent++) + { + // if the target is a true opponent and currently seen by this merc + if (!pSoldier->aiData.bNeutral && !pSoldier->aiData.bNeutral && + (pOpponent->aiData.bOppList[ubTarget] == SEEN_CURRENTLY) - for (ubLoop = 0,pOpponent = Menptr; ubLoop < MAXMERCS; ubLoop++,pOpponent++) - { - // if the target is a true opponent and currently seen by this merc - if (!pSoldier->aiData.bNeutral && !pSoldier->aiData.bNeutral && - (pOpponent->aiData.bOppList[ubTarget] == SEEN_CURRENTLY) + ) + ///*** UNTIL ANDREW GETS THE SIDE PARAMETERS WORKING + // && (pSoldier->side != pOpponent->side)) + { + RemoveOneOpponent(pOpponent); + } - ) - ///*** UNTIL ANDREW GETS THE SIDE PARAMETERS WORKING - // && (pSoldier->side != pOpponent->side)) - { - RemoveOneOpponent(pOpponent); - } + UpdatePersonal(pOpponent,ubTarget,NOT_HEARD_OR_SEEN,NOWHERE,0); - UpdatePersonal(pOpponent,ubTarget,NOT_HEARD_OR_SEEN,NOWHERE,0); - - gbSeenOpponents[ubLoop][ubTarget] = FALSE; - } -*/ - - ResetLastKnownLocs(pSoldier); - - if (gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio == ubTarget) - gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = NOBODY; + gbSeenOpponents[ubLoop][ubTarget] = FALSE; + } + */ + ResetLastKnownLocs(pSoldier); + if (gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio == ubTarget) + gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = NOBODY; } - - - -void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) +void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) { - INT32 cnt; - INT8 *pbPublOL; - UINT8 ubTeamMustLookAgain = FALSE, ubMadeDifference = FALSE; - SOLDIERTYPE *pSoldier; + SoldierID cnt; + UINT8 ubTeamMustLookAgain = FALSE, ubMadeDifference = FALSE; + SOLDIERTYPE *pSoldier; + INT8* pbPublOL = &(gbPublicOpplist[ubTeam][ubID]); - - pbPublOL = &(gbPublicOpplist[ubTeam][ubID]); - - // if new opplist is more up-to-date, or we are just wiping it for some reason - if ((gubKnowledgeValue[*pbPublOL - OLDEST_HEARD_VALUE][bNewOpplist - OLDEST_HEARD_VALUE] > 0) || - (bNewOpplist == NOT_HEARD_OR_SEEN)) + // if new opplist is more up-to-date, or we are just wiping it for some reason + if ((gubKnowledgeValue[*pbPublOL - OLDEST_HEARD_VALUE][bNewOpplist - OLDEST_HEARD_VALUE] > 0) || + (bNewOpplist == NOT_HEARD_OR_SEEN)) { - // if this team is becoming aware of a soldier it wasn't previously aware of - if ((bNewOpplist != NOT_HEARD_OR_SEEN) && (*pbPublOL == NOT_HEARD_OR_SEEN)) - ubTeamMustLookAgain = TRUE; + // if this team is becoming aware of a soldier it wasn't previously aware of + if ((bNewOpplist != NOT_HEARD_OR_SEEN) && (*pbPublOL == NOT_HEARD_OR_SEEN)) + ubTeamMustLookAgain = TRUE; - // change the public opplist *BEFORE* anyone looks again or we'll recurse! - *pbPublOL = bNewOpplist; + // change the public opplist *BEFORE* anyone looks again or we'll recurse! + *pbPublOL = bNewOpplist; } - // always update the gridno, no matter what - gsPublicLastKnownOppLoc[ubTeam][ubID] = sGridNo; - gbPublicLastKnownOppLevel[ubTeam][ubID] = bLevel; + // always update the gridno, no matter what + gsPublicLastKnownOppLoc[ubTeam][ubID] = sGridNo; + gbPublicLastKnownOppLevel[ubTeam][ubID] = bLevel; - // if team has been told about a guy the team was completely unaware of - if (ubTeamMustLookAgain) + // if team has been told about a guy the team was completely unaware of + if (ubTeamMustLookAgain) { // then everyone on team who's not aware of guynum must look for him cnt = gTacticalStatus.Team[ubTeam].bFirstID; - for (pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ubTeam].bLastID; ++cnt, pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ubTeam].bLastID; ++cnt ) { + pSoldier = cnt; // if this soldier is active, in this sector, and well enough to look if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && !( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) ) - { - // if soldier isn't aware of guynum, give him another chance to see - if (pSoldier->aiData.bOppList[ubID] == NOT_HEARD_OR_SEEN) { - if (ManLooksForMan(pSoldier,MercPtrs[ubID],UPDATEPUBLIC)) + // if soldier isn't aware of guynum, give him another chance to see + if (pSoldier->aiData.bOppList[ubID] == NOT_HEARD_OR_SEEN) + { + if ( ManLooksForMan( pSoldier, ubID, UPDATEPUBLIC ) ) // then he actually saw guynum because of our new public knowledge ubMadeDifference = TRUE; @@ -3176,17 +3158,16 @@ void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT // if "Show only enemies seen" option is ON and it's this guy looking //if (pSoldier->ubID == ShowOnlySeenPerson) - // NewShowOnlySeenPerson(pSoldier); // update the string + // NewShowOnlySeenPerson(pSoldier); // update the string + } } } } - } } - -void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) +void UpdatePersonal(SOLDIERTYPE *pSoldier, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) { /* #ifdef RECORDOPPLIST @@ -3207,43 +3188,40 @@ void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT8 ubID, INT8 bNewOpplist, INT32 s - - INT8 OurMaxPublicOpplist() { - UINT32 uiLoop; - INT8 bHighestOpplist = 0; - UINT8 ubOppValue,ubHighestValue = 0; - SOLDIERTYPE * pSoldier; + UINT32 uiLoop; + INT8 bHighestOpplist = 0; + UINT8 ubOppValue,ubHighestValue = 0; + SOLDIERTYPE * pSoldier; - for (uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) + for (uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) { - pSoldier = MercSlots[ uiLoop ]; + pSoldier = MercSlots[ uiLoop ]; - // if this merc is inactive, at base, on assignment, or dead - if (!pSoldier || !pSoldier->stats.bLife) - continue; // next merc + // if this merc is inactive, at base, on assignment, or dead + if (!pSoldier || !pSoldier->stats.bLife) + continue; // next merc - // if this man is NEUTRAL / on our side, he's not an opponent - if (pSoldier->aiData.bNeutral || (gTacticalStatus.Team[gbPlayerNum].bSide == Menptr[pSoldier->ubID].bSide)) - continue; // next merc + // if this man is NEUTRAL / on our side, he's not an opponent + if (pSoldier->aiData.bNeutral || (gTacticalStatus.Team[gbPlayerNum].bSide == pSoldier->ubID->bSide)) + continue; // next merc - // opponent, check our public opplist value for him - ubOppValue = gubKnowledgeValue[0 - OLDEST_HEARD_VALUE][gbPublicOpplist[gbPlayerNum][pSoldier->ubID] - OLDEST_HEARD_VALUE]; + // opponent, check our public opplist value for him + ubOppValue = gubKnowledgeValue[0 - OLDEST_HEARD_VALUE][gbPublicOpplist[gbPlayerNum][pSoldier->ubID] - OLDEST_HEARD_VALUE]; - if (ubOppValue > ubHighestValue) - { - ubHighestValue = ubOppValue; - bHighestOpplist = gbPublicOpplist[gbPlayerNum][pSoldier->ubID]; - } + if (ubOppValue > ubHighestValue) + { + ubHighestValue = ubOppValue; + bHighestOpplist = gbPublicOpplist[gbPlayerNum][pSoldier->ubID]; + } } - return(bHighestOpplist); + return(bHighestOpplist); } - /* BOOLEAN VisibleAnywhere(SOLDIERTYPE *pSoldier) { @@ -3447,8 +3425,8 @@ void BetweenTurnsVisibilityAdjustments(void) void SaySeenQuote( SOLDIERTYPE *pSoldier, BOOLEAN fSeenCreature, BOOLEAN fVirginSector, BOOLEAN fSeenJoey ) { SOLDIERTYPE *pTeamSoldier; - UINT8 ubNumEnemies = 0; - UINT8 ubNumAllies = 0; + UINT16 ubNumEnemies = 0; + UINT16 ubNumAllies = 0; UINT32 cnt; #ifdef JA2UB //Ja25 No meanwhiles @@ -3636,7 +3614,7 @@ void OurTeamSeesSomeone( SOLDIERTYPE * pSoldier, INT8 bNumReRevealed, INT8 bNumN LocateSoldier( pSoldier->ubID, SETLOCATOR ); // Now slide to other guy.... - SlideTo( NOWHERE, gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID, NOBODY ,SETLOCATOR); + SlideTo(gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID, SETLOCATOR); } @@ -3666,55 +3644,48 @@ void OurTeamSeesSomeone( SOLDIERTYPE * pSoldier, INT8 bNumReRevealed, INT8 bNumN } -void RadioSightings(SOLDIERTYPE *pSoldier, UINT8 ubAbout, UINT8 ubTeamToRadioTo ) +void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo ) { - SOLDIERTYPE *pOpponent; - INT32 iLoop; - UINT8 start,end,revealedEnemies = 0,unknownEnemies = 0,stillUnseen=TRUE; - UINT8 scrollToGuynum = NOBODY,sightedHatedOpponent = FALSE; - //UINT8 oppIsCivilian; - INT8 *pPersOL,*pbPublOL; //,dayQuote; - BOOLEAN fContactSeen; - BOOLEAN fSawCreatureForFirstTime = FALSE; - + SOLDIERTYPE *pOpponent; + INT32 iLoop; + UINT16 start, end, revealedEnemies = 0, unknownEnemies = 0, stillUnseen = TRUE; + BOOLEAN sightedHatedOpponent = FALSE; + //UINT8 oppIsCivilian; + INT8 *pPersOL,*pbPublOL; //,dayQuote; + BOOLEAN fContactSeen; + BOOLEAN fSawCreatureForFirstTime = FALSE; #ifdef TESTOPPLIST -DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, + DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String("RADIO SIGHTINGS: for %d about %d",pSoldier->ubID,ubAbout) ); #endif - - #ifdef RECORDNET - if (!ptr->human) - fprintf(NetDebugFile,"\tNPC %d(%s) radios his sightings to his team\n",ptr->guynum,ExtMen[ptr->guynum].name); + if (!ptr->human) + fprintf(NetDebugFile,"\tNPC %d(%s) radios his sightings to his team\n",ptr->guynum,ExtMen[ptr->guynum].name); #endif - gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = pSoldier->ubID; + gTacticalStatus.Team[pSoldier->bTeam].ubLastMercToRadio = pSoldier->ubID; - - - - - // who are we radioing about? - if (ubAbout == EVERYBODY) + // who are we radioing about? + if (ubAbout == EVERYBODY) { - start = 0; - end = MAXMERCS; + start = 0; + end = MAXMERCS; } - else + else { - start = ubAbout; - end = ubAbout + 1; + start = ubAbout; + end = ubAbout + 1; } - // hang a pointer to the start of our this guy's personal opplist - pPersOL = &(pSoldier->aiData.bOppList[start]); + // hang a pointer to the start of our this guy's personal opplist + pPersOL = &(pSoldier->aiData.bOppList[start]); - // hang a pointer to the start of this guy's opponents in the public opplist - pbPublOL = &(gbPublicOpplist[ubTeamToRadioTo][start]); + // hang a pointer to the start of this guy's opponents in the public opplist + pbPublOL = &(gbPublicOpplist[ubTeamToRadioTo][start]); pOpponent = MercPtrs[start]; @@ -3724,82 +3695,72 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, fContactSeen = FALSE; #ifdef TESTOPPLIST - DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, + DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String("RS: checking %d",pOpponent->ubID) ); #endif - // make sure this merc is active, here & still alive (unconscious OK) - if (!pOpponent->bActive || !pOpponent->bInSector || !pOpponent->stats.bLife) - { -#ifdef TESTOPPLIST - DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, - String("RS: inactive/notInSector/life %d",pOpponent->ubID) ); -#endif - - - continue; // skip to the next merc - } - - // if these two mercs are on the same SIDE, then they're NOT opponents - // NEW: Apr. 21 '96: must allow ALL non-humans to get radioed about - if ((pSoldier->bSide == pOpponent->bSide) && (pOpponent->flags.uiStatusFlags & SOLDIER_PC)) - { + // make sure this merc is active, here & still alive (unconscious OK) + if (!pOpponent->bActive || !pOpponent->bInSector || !pOpponent->stats.bLife) + { #ifdef TESTOPPLIST DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, - String("RS: same side %d",pSoldier->bSide) ); -#endif - - continue; // skip to the next merc - } - - // determine whether we think we're still unseen or if "our cover's blown" - // if we know about this opponent's location for any reason - if ((pOpponent->bVisible >= 0) || gbShowEnemies) - { - // and he can see us, then gotta figure we KNOW that he can see us - if (pOpponent->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY) - stillUnseen = FALSE; - } - - - // if we personally don't know a thing about this opponent - if (*pPersOL == NOT_HEARD_OR_SEEN) - { -#ifdef RECORDOPPLIST - //fprintf(OpplistFile,"not heard or seen\n"); + String("RS: inactive/notInSector/life %d",pOpponent->ubID) ); #endif + continue; // skip to the next merc + } + // if these two mercs are on the same SIDE, then they're NOT opponents + // NEW: Apr. 21 '96: must allow ALL non-humans to get radioed about + if ((pSoldier->bSide == pOpponent->bSide) && (pOpponent->flags.uiStatusFlags & SOLDIER_PC)) + { #ifdef TESTOPPLIST DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, - String("RS: not heard or seen") ); + String("RS: same side %d",pSoldier->bSide) ); #endif + continue; // skip to the next merc + } - continue; // skip to the next opponent - } + // determine whether we think we're still unseen or if "our cover's blown" + // if we know about this opponent's location for any reason + if ((pOpponent->bVisible >= 0) || gbShowEnemies) + { + // and he can see us, then gotta figure we KNOW that he can see us + if (pOpponent->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY) + stillUnseen = FALSE; + } - // if personal knowledge is NOT more up to date and NOT the same as public - if ((!gubKnowledgeValue[*pbPublOL - OLDEST_HEARD_VALUE][*pPersOL - OLDEST_HEARD_VALUE]) && - (*pbPublOL != *pPersOL)) - { + + // if we personally don't know a thing about this opponent + if (*pPersOL == NOT_HEARD_OR_SEEN) + { #ifdef RECORDOPPLIST - //fprintf(OpplistFile,"no new knowledge (per %d, pub %d)\n",*pPersOL,*pbPublOL); + //fprintf(OpplistFile,"not heard or seen\n"); #endif - #ifdef TESTOPPLIST DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, - String("RS: no new knowledge per %d pub %d",*pPersOL,*pbPublOL) ); + String("RS: not heard or seen") ); #endif + continue; // skip to the next opponent + } - - - continue; // skip to the next opponent - } + // if personal knowledge is NOT more up to date and NOT the same as public + if ((!gubKnowledgeValue[*pbPublOL - OLDEST_HEARD_VALUE][*pPersOL - OLDEST_HEARD_VALUE]) && + (*pbPublOL != *pPersOL)) + { +#ifdef RECORDOPPLIST + //fprintf(OpplistFile,"no new knowledge (per %d, pub %d)\n",*pPersOL,*pbPublOL); +#endif +#ifdef TESTOPPLIST + DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, + String("RS: no new knowledge per %d pub %d",*pPersOL,*pbPublOL) ); +#endif + continue; // skip to the next opponent + } #ifdef RECORDOPPLIST - //fprintf(OpplistFile,"made it!\n"); + //fprintf(OpplistFile,"made it!\n"); #endif - #ifdef TESTOPPLIST DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String("RS: made it!") ); @@ -3807,160 +3768,145 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, - // if it's our merc, and he currently sees this opponent - if (PTR_OURTEAM && (*pPersOL == SEEN_CURRENTLY) && !(( pOpponent->bSide == pSoldier->bSide) || pOpponent->aiData.bNeutral)) - { - // used by QueueDayMessage() to scroll to one of the new enemies - // scroll to the last guy seen, unless we see a hated guy, then use him! - if (!sightedHatedOpponent) - scrollToGuynum = pOpponent->ubID; - - // don't care whether and how many new enemies are seen if everyone visible - // and he's healthy enough to be a threat (so is worth talking about) - - // do the following if we're radioing to our own team; if radioing to militia - // then alert them instead - if ( ubTeamToRadioTo != MILITIA_TEAM ) + // if it's our merc, and he currently sees this opponent + if (PTR_OURTEAM && (*pPersOL == SEEN_CURRENTLY) && !(( pOpponent->bSide == pSoldier->bSide) || pOpponent->aiData.bNeutral)) { - if (!gbShowEnemies && (pOpponent->stats.bLife >= OKLIFE)) - { - // if this enemy has not been publicly seen or heard recently - if (*pbPublOL == NOT_HEARD_OR_SEEN) - { - // chalk up another "unknown" enemy - unknownEnemies++; + // don't care whether and how many new enemies are seen if everyone visible + // and he's healthy enough to be a threat (so is worth talking about) - fContactSeen = TRUE; - // if this enemy is hated by the merc doing the sighting - //if (MercHated(Proptr[ptr->characternum].p_bias,oppPtr->characternum)) - //sightedHatedOpponent = TRUE; - - // now the important part: does this enemy see him/her back? - if (pOpponent->aiData.bOppList[pSoldier->ubID] != SEEN_CURRENTLY) - { - // EXPERIENCE GAIN (10): Discovered a new enemy without being seen - StatChange(pSoldier,EXPERAMT,10,FALSE); - } - } - else + // do the following if we're radioing to our own team; if radioing to militia + // then alert them instead + if ( ubTeamToRadioTo != MILITIA_TEAM ) { + if (!gbShowEnemies && (pOpponent->stats.bLife >= OKLIFE)) + { + // if this enemy has not been publicly seen or heard recently + if (*pbPublOL == NOT_HEARD_OR_SEEN) + { + // chalk up another "unknown" enemy + unknownEnemies++; - // if he has publicly not been seen now, or anytime during this turn - if ((*pbPublOL != SEEN_CURRENTLY) && (*pbPublOL != SEEN_THIS_TURN)) + fContactSeen = TRUE; + // if this enemy is hated by the merc doing the sighting + //if (MercHated(Proptr[ptr->characternum].p_bias,oppPtr->characternum)) + //sightedHatedOpponent = TRUE; + + // now the important part: does this enemy see him/her back? + if (pOpponent->aiData.bOppList[pSoldier->ubID] != SEEN_CURRENTLY) + { + // EXPERIENCE GAIN (10): Discovered a new enemy without being seen + StatChange(pSoldier,EXPERAMT,10,FALSE); + } + } + else + { + // if he has publicly not been seen now, or anytime during this turn + if ((*pbPublOL != SEEN_CURRENTLY) && (*pbPublOL != SEEN_THIS_TURN)) { // chalk up another "revealed" enemy ++revealedEnemies; fContactSeen = TRUE; } - else - { - if ( MercPtrs[0]->stats.bLife < 10 ) + else { - //int breakpoint = 0; + if ( MercPtrs[0]->stats.bLife < 10 ) + { + //int breakpoint = 0; + } } } - } - if ( fContactSeen ) - { - if ( pSoldier->bTeam == gbPlayerNum ) + if ( fContactSeen ) { - if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum ) + if ( pSoldier->bTeam == gbPlayerNum ) { - // Save some stuff! - if (gTacticalStatus.fEnemySightingOnTheirTurn) + if ( gTacticalStatus.ubCurrentTeam != gbPlayerNum ) { - // this has already come up so turn OFF the pause-all-anims flag for the previous - // person and set it for this next person - MercPtrs[gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID]->flags.fPauseAllAnimation = FALSE; - } - else - { - gTacticalStatus.fEnemySightingOnTheirTurn = TRUE; - } - gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID = pOpponent->ubID; - gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID = pSoldier->ubID; - gTacticalStatus.uiTimeSinceDemoOn = GetJA2Clock( ); + // Save some stuff! + if (gTacticalStatus.fEnemySightingOnTheirTurn) + { + // this has already come up so turn OFF the pause-all-anims flag for the previous + // person and set it for this next person + gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID->flags.fPauseAllAnimation = FALSE; + } + else + { + gTacticalStatus.fEnemySightingOnTheirTurn = TRUE; + } + gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID = pOpponent->ubID; + gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID = pSoldier->ubID; + gTacticalStatus.uiTimeSinceDemoOn = GetJA2Clock( ); - pOpponent->flags.fPauseAllAnimation = TRUE; + pOpponent->flags.fPauseAllAnimation = TRUE; + } + } + if ( pOpponent->flags.uiStatusFlags & SOLDIER_MONSTER ) + { + gfPlayerTeamSawCreatures = TRUE; + } + + // ATE: Added for bloodcat... + if ( pOpponent->ubBodyType == BLOODCAT ) + { + // 2 is for bloodcat + gfPlayerTeamSawCreatures = 2; } } if ( pOpponent->flags.uiStatusFlags & SOLDIER_MONSTER ) { - gfPlayerTeamSawCreatures = TRUE; - } - - // ATE: Added for bloodcat... - if ( pOpponent->ubBodyType == BLOODCAT ) - { - // 2 is for bloodcat - gfPlayerTeamSawCreatures = 2; - } - - } - - if ( pOpponent->flags.uiStatusFlags & SOLDIER_MONSTER ) - { - if ( !(gMercProfiles[ pSoldier->ubProfile ].ubMiscFlags & PROFILE_MISC_FLAG_HAVESEENCREATURE) ) - { - fSawCreatureForFirstTime = TRUE; + if ( !(gMercProfiles[ pSoldier->ubProfile ].ubMiscFlags & PROFILE_MISC_FLAG_HAVESEENCREATURE) ) + { + fSawCreatureForFirstTime = TRUE; + } } } - } - } - else - { - // radioing to militia that we saw someone! alert them! - if ( gTacticalStatus.Team[ MILITIA_TEAM ].bTeamActive && !gTacticalStatus.Team[ MILITIA_TEAM ].bAwareOfOpposition ) + else { - HandleInitialRedAlert( MILITIA_TEAM, FALSE ); + // radioing to militia that we saw someone! alert them! + if ( gTacticalStatus.Team[ MILITIA_TEAM ].bTeamActive && !gTacticalStatus.Team[ MILITIA_TEAM ].bAwareOfOpposition ) + { + HandleInitialRedAlert( MILITIA_TEAM, FALSE ); + } } - } - } // end of our team's merc sees new opponent + } // end of our team's merc sees new opponent - // IF WE'RE HERE, OUR PERSONAL INFORMATION IS AT LEAST AS UP-TO-DATE - // AS THE PUBLIC KNOWLEDGE, SO WE WILL REPLACE THE PUBLIC KNOWLEDGE + // IF WE'RE HERE, OUR PERSONAL INFORMATION IS AT LEAST AS UP-TO-DATE + // AS THE PUBLIC KNOWLEDGE, SO WE WILL REPLACE THE PUBLIC KNOWLEDGE #ifdef RECORDOPPLIST - fprintf(OpplistFile,"UpdatePublic (RadioSightings) for team %d about %d\n",ptr->team,oppPtr->guynum); + fprintf(OpplistFile,"UpdatePublic (RadioSightings) for team %d about %d\n",ptr->team,oppPtr->guynum); #endif - - #ifdef TESTOPPLIST - DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, + DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, String("...............UPDATE PUBLIC: soldier %d SEEING soldier %d",pSoldier->ubID,pOpponent->ubID) ); #endif - - - - UpdatePublic(ubTeamToRadioTo,pOpponent->ubID,*pPersOL,gsLastKnownOppLoc[pSoldier->ubID][pOpponent->ubID],gbLastKnownOppLevel[pSoldier->ubID][pOpponent->ubID]); + UpdatePublic(ubTeamToRadioTo,pOpponent->ubID,*pPersOL,gsLastKnownOppLoc[pSoldier->ubID][pOpponent->ubID],gbLastKnownOppLevel[pSoldier->ubID][pOpponent->ubID]); } - // if soldier heard a misc noise more important that his team's public one - if (pSoldier->aiData.ubNoiseVolume > gubPublicNoiseVolume[ubTeamToRadioTo]) + // if soldier heard a misc noise more important that his team's public one + if (pSoldier->aiData.ubNoiseVolume > gubPublicNoiseVolume[ubTeamToRadioTo]) { - // replace the soldier's team's public noise with his - gsPublicNoiseGridNo[ubTeamToRadioTo] = pSoldier->aiData.sNoiseGridno; - gbPublicNoiseLevel[ubTeamToRadioTo] = pSoldier->bNoiseLevel; - gubPublicNoiseVolume[ubTeamToRadioTo] = pSoldier->aiData.ubNoiseVolume; + // replace the soldier's team's public noise with his + gsPublicNoiseGridNo[ubTeamToRadioTo] = pSoldier->aiData.sNoiseGridno; + gbPublicNoiseLevel[ubTeamToRadioTo] = pSoldier->bNoiseLevel; + gubPublicNoiseVolume[ubTeamToRadioTo] = pSoldier->aiData.ubNoiseVolume; } - // if this soldier is on the local team + // if this soldier is on the local team if (PTR_OURTEAM) { - // don't trigger sighting quotes or stop merc's movement if everyone visible - //if (!(gTacticalStatus.uiFlags & SHOW_ALL_MERCS)) - { - // if we've revealed any enemies, or seen any previously unknown enemies - if (revealedEnemies || unknownEnemies) + // don't trigger sighting quotes or stop merc's movement if everyone visible + //if (!(gTacticalStatus.uiFlags & SHOW_ALL_MERCS)) { + // if we've revealed any enemies, or seen any previously unknown enemies + if (revealedEnemies || unknownEnemies) + { // First check for a virgin map and set to false if we see our first guy.... // Only if this guy is an ememy! - OurTeamSeesSomeone( pSoldier, revealedEnemies, unknownEnemies ); } else if (fSawCreatureForFirstTime) @@ -3968,8 +3914,7 @@ DebugMsg( TOPIC_JA2OPPLIST, DBG_LEVEL_3, gMercProfiles[ pSoldier->ubProfile ].ubMiscFlags |= PROFILE_MISC_FLAG_HAVESEENCREATURE; TacticalCharacterDialogue( pSoldier, QUOTE_FIRSTTIME_GAME_SEE_CREATURE ); } - - } + } } } @@ -3985,11 +3930,11 @@ extern UINT32 guiNumBackSaves; void DebugSoldierPage1( ) { - SOLDIERTYPE *pSoldier; - UINT16 usSoldierIndex; - UINT32 uiMercFlags; - INT32 usMapPos; - UINT8 ubLine=0; + SOLDIERTYPE *pSoldier; + SoldierID usSoldierIndex; + UINT32 uiMercFlags; + INT32 usMapPos; + UINT8 ubLine=0; if ( FindSoldierFromMouse( &usSoldierIndex, &uiMercFlags ) ) { @@ -4168,13 +4113,13 @@ void DebugSoldierPage1( ) void DebugSoldierPage2( ) { - SOLDIERTYPE *pSoldier; - UINT16 usSoldierIndex; - UINT32 uiMercFlags; - INT32 usMapPos; - TILE_ELEMENT TileElem; - LEVELNODE *pNode; - UINT8 ubLine; + SOLDIERTYPE *pSoldier; + SoldierID usSoldierIndex; + UINT32 uiMercFlags; + INT32 usMapPos; + TILE_ELEMENT TileElem; + LEVELNODE *pNode; + UINT8 ubLine; if ( FindSoldierFromMouse( &usSoldierIndex, &uiMercFlags ) ) { @@ -4442,11 +4387,11 @@ void DebugSoldierPage2( ) void DebugSoldierPage3( ) { - SOLDIERTYPE *pSoldier; - UINT16 usSoldierIndex; - UINT32 uiMercFlags; - INT32 usMapPos; - UINT8 ubLine; + SOLDIERTYPE *pSoldier; + SoldierID usSoldierIndex; + UINT32 uiMercFlags; + INT32 usMapPos; + UINT8 ubLine; if ( FindSoldierFromMouse( &usSoldierIndex, &uiMercFlags ) ) { @@ -4642,16 +4587,16 @@ void DebugSoldierPage3( ) // OPIONION OF SELECTED MERC if ( gusSelectedSoldier != NOBODY && pSoldier->ubProfile != NO_PROFILE && ( - gMercProfiles[MercPtrs[gusSelectedSoldier]->ubProfile].Type == PROFILETYPE_AIM || - gMercProfiles[MercPtrs[gusSelectedSoldier]->ubProfile].Type == PROFILETYPE_MERC || - gMercProfiles[MercPtrs[gusSelectedSoldier]->ubProfile].Type == PROFILETYPE_RPC || - gMercProfiles[MercPtrs[gusSelectedSoldier]->ubProfile].Type == PROFILETYPE_IMP ) ) + gMercProfiles[gusSelectedSoldier->ubProfile].Type == PROFILETYPE_AIM || + gMercProfiles[gusSelectedSoldier->ubProfile].Type == PROFILETYPE_MERC || + gMercProfiles[gusSelectedSoldier->ubProfile].Type == PROFILETYPE_RPC || + gMercProfiles[gusSelectedSoldier->ubProfile].Type == PROFILETYPE_IMP ) ) { SetFontShade(LARGEFONT1, FONT_SHADE_GREEN); gprintf( 0, LINE_HEIGHT * ubLine, L"NPC Opinion:"); SetFontShade(LARGEFONT1, FONT_SHADE_NEUTRAL); - if (OKToCheckOpinion(MercPtrs[ gusSelectedSoldier ]->ubProfile)) - gprintf( 150, LINE_HEIGHT * ubLine, L"%d", gMercProfiles[ pSoldier->ubProfile ].bMercOpinion[ MercPtrs[ gusSelectedSoldier ]->ubProfile ] ); + if (OKToCheckOpinion(gusSelectedSoldier->ubProfile)) + gprintf( 150, LINE_HEIGHT * ubLine, L"%d", gMercProfiles[ pSoldier->ubProfile ].bMercOpinion[ gusSelectedSoldier->ubProfile ] ); ubLine++; } } @@ -4835,12 +4780,12 @@ void WriteQuantityAndAttachments( OBJECTTYPE *pObject, INT32 yp ) void DebugSoldierPage4( ) { - SOLDIERTYPE *pSoldier; - UINT32 uiMercFlags; - CHAR16 szOrders[20]; - CHAR16 szAttitude[20]; - UINT16 usSoldierIndex; - UINT8 ubLine; + SOLDIERTYPE *pSoldier; + UINT32 uiMercFlags; + CHAR16 szOrders[20]; + CHAR16 szAttitude[20]; + SoldierID usSoldierIndex; + UINT8 ubLine; if ( FindSoldierFromMouse( &usSoldierIndex, &uiMercFlags ) ) { @@ -5579,7 +5524,7 @@ UINT8 DoorOpeningNoise( SOLDIERTYPE *pSoldier ) return( ubDoorNoise ); } -void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) +void MakeNoise(SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { EV_S_NOISE SNoise; @@ -5616,7 +5561,7 @@ void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, { if (ubNoiseMaker < TOTAL_SOLDIERS) { - if (Menptr[ubNoiseMaker].controller == Net.pnum) + if (ubNoiseMaker->controller == Net.pnum) { bWeControlNoise = TRUE; } @@ -5676,7 +5621,7 @@ void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, } -void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) +void OurNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { #ifdef BYPASSNOISE return; @@ -5701,13 +5646,14 @@ void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, // interrupts are possible, resolve them now (we're in control here) // (you can't interrupt NOBODY, even if you hear the noise) - ResolveInterruptsVs(MercPtrs[ubNoiseMaker],NOISEINTERRUPT); + ResolveInterruptsVs(ubNoiseMaker, NOISEINTERRUPT); } } -void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, +void TheirNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, + UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { // SOLDIERTYPE *pSoldier; @@ -5737,7 +5683,7 @@ void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType if (ubNoiseMaker < TOTAL_SOLDIERS) { /* - pSoldier = MercPtrs[ubNoiseMaker]; + pSoldier = ubNoiseMaker; //stopAction = TRUE; // prevent real-time events from passing us by MarkTime(&LoopTime); @@ -5767,15 +5713,17 @@ void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType // else if noiseMaker's NOBODY, no opplist changes or interrupts are possible } -void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) +void ProcessNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { SOLDIERTYPE *pSoldier; - UINT8 bLoop, bTeam; + UINT8 bTeam; UINT8 ubLoudestEffVolume, ubEffVolume; // UINT8 ubPlayVolume; - UINT8 ubSourceTerrType, ubSource; + UINT8 ubSourceTerrType; + SoldierID ubSource; INT8 bTellPlayer = FALSE, bHeard, bSeen; - UINT8 ubHeardLoudestBy = NOBODY, ubNoiseDir = 0xff, ubLoudestNoiseDir = 0xff; + SoldierID ubHeardLoudestBy = NOBODY; + UINT8 ubNoiseDir = 0xff, ubLoudestNoiseDir = 0xff; #ifdef RECORDOPPLIST @@ -5797,8 +5745,8 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy if ((ubNoiseMaker < TOTAL_SOLDIERS) && (ubNoiseType != NOISE_EXPLOSION)) { // inactive/not in sector/dead soldiers, shouldn't be making noise! - if (!Menptr[ubNoiseMaker].bActive || !Menptr[ubNoiseMaker].bInSector || - Menptr[ubNoiseMaker].flags.uiStatusFlags & SOLDIER_DEAD) + if (!ubNoiseMaker->bActive || !ubNoiseMaker->bInSector || + ubNoiseMaker->flags.uiStatusFlags & SOLDIER_DEAD) { #ifdef BETAVERSION NumMessage("ProcessNoise: ERROR - Noisemaker is inactive/not in sector/dead, Guy #",ubNoiseMaker); @@ -5807,7 +5755,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy } // if he's out of life, and this isn't just his "dying scream" which is OK - if (!Menptr[ubNoiseMaker].stats.bLife && (ubNoiseType != NOISE_SCREAM)) + if (!ubNoiseMaker->stats.bLife && (ubNoiseType != NOISE_SCREAM)) { #ifdef BETAVERSION NumMessage("ProcessNoise: ERROR - Noisemaker is lifeless, Guy #",ubNoiseMaker); @@ -5872,7 +5820,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy // CJC: changed to if the side is the same side as the noise maker's! // CJC: changed back! - if (bTeam == Menptr[ubNoiseMaker].bTeam) + if (bTeam == ubNoiseMaker->bTeam) { continue; } @@ -5942,7 +5890,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy bTellPlayer = FALSE; } /* - else if ( (Menptr[ubNoiseMaker].bVisible == TRUE) && (bTeam == gbPlayerNum) ) + else if ( (ubNoiseMaker->bVisible == TRUE) && (bTeam == gbPlayerNum) ) { ScreenMsg( MSG_FONT_YELLOW, MSG_TESTVERSION, L"Handling noise from person not currently seen in player's public opplist" ); } @@ -5954,7 +5902,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy bTellPlayer = TRUE; } - if ( MercPtrs[ ubNoiseMaker ]->stats.bLife == 0 ) + if ( ubNoiseMaker->stats.bLife == 0 ) { // this guy is dead (just dying) so don't report to player bTellPlayer = FALSE; @@ -5971,8 +5919,9 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy ubHeardLoudestBy = NOBODY; // All mercs on this team check if they are eligible to hear this noise - for (bLoop = gTacticalStatus.Team[bTeam].bFirstID,pSoldier = Menptr + bLoop; bLoop <= gTacticalStatus.Team[bTeam].bLastID; bLoop++,pSoldier++) + for ( SoldierID bLoop = gTacticalStatus.Team[bTeam].bFirstID; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop ) { + pSoldier = bLoop; // if this "listener" is inactive, or in no condition to care if (!pSoldier->bActive || !pSoldier->bInSector || pSoldier->flags.uiStatusFlags & SOLDIER_DEAD || (pSoldier->stats.bLife < OKLIFE) || pSoldier->ubBodyType == LARVAE_MONSTER) { @@ -6012,7 +5961,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy } // screen out allied militia from hearing us - switch( MercPtrs[ ubNoiseMaker ]->bTeam ) + switch( ubNoiseMaker->bTeam ) { case OUR_TEAM: // if the listener is militia and still on our side, ignore noise from us @@ -6046,8 +5995,8 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy case MILITIA_TEAM: // if the noisemaker is militia and still on our side, ignore noise if we're listening // sevenfm: allow taunts from militia - if (pSoldier->bTeam == OUR_TEAM && MercPtrs[ubNoiseMaker]->bSide == 0 && (ubNoiseType != NOISE_VOICE || !gTauntsSettings.fTauntVoice)) - //if ( pSoldier->bTeam == OUR_TEAM && MercPtrs[ ubNoiseMaker ]->bSide == 0 ) + if (pSoldier->bTeam == OUR_TEAM && ubNoiseMaker->bSide == 0 && (ubNoiseType != NOISE_VOICE || !gTauntsSettings.fTauntVoice)) + //if ( pSoldier->bTeam == OUR_TEAM && ubNoiseMaker->bSide == 0 ) { continue; } @@ -6077,11 +6026,11 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy //if (gBloodcatPlacements[ ubSectorID ][ gGameOptions.ubDifficultyLevel-1 ].ubFactionAffiliation == QUEENS_CIV_GROUP) { // skip noises between army & bloodcats - if ( pSoldier->bTeam == ENEMY_TEAM && MercPtrs[ ubNoiseMaker ]->ubBodyType == BLOODCAT && MercPtrs[ ubNoiseMaker ]->bTeam == CREATURE_TEAM ) + if ( pSoldier->bTeam == ENEMY_TEAM && ubNoiseMaker->ubBodyType == BLOODCAT && ubNoiseMaker->bTeam == CREATURE_TEAM ) { continue; } - if ( pSoldier->bTeam == CREATURE_TEAM && pSoldier->ubBodyType == BLOODCAT && MercPtrs[ ubNoiseMaker ]->bTeam == ENEMY_TEAM ) + if ( pSoldier->bTeam == CREATURE_TEAM && pSoldier->ubBodyType == BLOODCAT && ubNoiseMaker->bTeam == ENEMY_TEAM ) { continue; } @@ -6089,7 +6038,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy else if (gBloodcatPlacements[ ubSectorID ][ DiffLevel-1 ].ubFactionAffiliation > NON_CIV_GROUP) //else if (gBloodcatPlacements[ ubSectorID ][ gGameOptions.ubDifficultyLevel-1 ].ubFactionAffiliation > NON_CIV_GROUP) { - if ( MercPtrs[ ubNoiseMaker ]->ubBodyType == BLOODCAT && MercPtrs[ ubNoiseMaker ]->bTeam == CREATURE_TEAM && pSoldier->bSide != gbPlayerNum) + if ( ubNoiseMaker->ubBodyType == BLOODCAT && ubNoiseMaker->bTeam == CREATURE_TEAM && pSoldier->bSide != gbPlayerNum) { // Target is a bloodcat. He can't be heard by civilians no matter what. { @@ -6099,7 +6048,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy else if ( pSoldier->bTeam == CREATURE_TEAM && pSoldier->ubBodyType == BLOODCAT ) { // Source is a bloodcat. He can only hear player-side soldiers, and only if hostile. - if ( MercPtrs[ ubNoiseMaker ]->bSide != gbPlayerNum || pSoldier->aiData.bNeutral ) + if ( ubNoiseMaker->bSide != gbPlayerNum || pSoldier->aiData.bNeutral ) { continue; } @@ -6197,7 +6146,7 @@ void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrTy else if(bTeam == OUR_TEAM && ubNoiseType == NOISE_CREAKING) { //shadooow: this will indicate doors not to make animation/sound of doors opening or closing - Menptr[ubNoiseMaker].ubDoorOpeningNoise = 0; + ubNoiseMaker->ubDoorOpeningNoise = 0; } // if the listening team is human-controlled AND // the noise's source is another soldier @@ -6406,8 +6355,8 @@ UINT8 CalcEffVolume(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT8 ubN -void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, - UINT8 ubNoiseType, UINT8 *ubSeen) +void HearNoise(SOLDIERTYPE *pSoldier, SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, + UINT8 ubVolume, UINT8 ubNoiseType, UINT8 *ubSeen) { INT16 sNoiseX, sNoiseY; INT8 bHadToTurn = FALSE, bSourceSeen = FALSE; @@ -6437,14 +6386,14 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL // is he close enough to see that gridno if he turns his head? // ignore muzzle flashes when turning head to see noise - if ( ubNoiseType == NOISE_GUNFIRE && ubNoiseMaker != NOBODY && MercPtrs[ ubNoiseMaker ]->flags.fMuzzleFlash ) + if ( ubNoiseType == NOISE_GUNFIRE && ubNoiseMaker != NOBODY && ubNoiseMaker->flags.fMuzzleFlash ) { ConvertGridNoToCenterCellXY(sGridNo, &sNoiseX, &sNoiseY); bDirection = atan8(pSoldier->sX,pSoldier->sY,sNoiseX,sNoiseY); if ( pSoldier->ubDirection != bDirection && pSoldier->ubDirection != gOneCDirection[ bDirection ] && pSoldier->ubDirection != gOneCCDirection[ bDirection ] ) { // temporarily turn off muzzle flash so DistanceVisible can be calculated without it - MercPtrs[ ubNoiseMaker ]->flags.fMuzzleFlash = FALSE; + ubNoiseMaker->flags.fMuzzleFlash = FALSE; fMuzzleFlash = TRUE; } } @@ -6454,7 +6403,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL if ( fMuzzleFlash ) { // turn flash on again - MercPtrs[ ubNoiseMaker ]->flags.fMuzzleFlash = TRUE; + ubNoiseMaker->flags.fMuzzleFlash = TRUE; } if (PythSpacesAway(pSoldier->sGridNo,sGridNo) <= sDistVisible ) @@ -6496,7 +6445,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL fprintf(OpplistFile,"HN: %s by %2d(g%4d,x%3d,y%3d) at %2d(g%4d,x%3d,y%3d), hTT=%d\n", (bSourceSeen) ? "SCS" : "FLR", pSoldier->guynum,pSoldier->sGridNo,pSoldier->sX,pSoldier->sY, - ubNoiseMaker,sGridNo,sNoiseX,sNoiseY, + ubNoiseMaker.i,sGridNo,sNoiseX,sNoiseY, bHadToTurn); #endif } @@ -6511,7 +6460,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL if (bSourceSeen) { - ManSeesMan(pSoldier,MercPtrs[ubNoiseMaker],Menptr[ubNoiseMaker].sGridNo,Menptr[ubNoiseMaker].pathing.bLevel,HEARNOISE,CALLER_UNKNOWN); + ManSeesMan( pSoldier, ubNoiseMaker, ubNoiseMaker->sGridNo, ubNoiseMaker->pathing.bLevel, HEARNOISE, CALLER_UNKNOWN ); // if it's an AI soldier, he is not allowed to automatically radio any // noise heard, but manSeesMan has set his newOppCnt, so clear it here @@ -6567,15 +6516,14 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL } // remember that the soldier has been heard and his new location - UpdatePersonal(pSoldier,ubNoiseMaker,HEARD_THIS_TURN,sGridNo, bLevel); + UpdatePersonal( pSoldier, ubNoiseMaker, HEARD_THIS_TURN, sGridNo, bLevel ); // sevenfm: increment watched location when soldier hears enemy if ((ubNoiseType == NOISE_GUNFIRE || ubNoiseType == NOISE_MOVEMENT || ubNoiseType == NOISE_SCREAM || ubNoiseType == NOISE_VOICE) && !TileIsOutOfBounds(sGridNo) && !(pSoldier->flags.uiStatusFlags & SOLDIER_PC) && !pSoldier->aiData.bNeutral && - MercPtrs[ubNoiseMaker] && - !MercPtrs[ubNoiseMaker]->aiData.bNeutral && + !ubNoiseMaker->aiData.bNeutral && !pSoldier->IsFlanking()) { // check that we can see enemy if we raise weapon @@ -6622,13 +6570,13 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL } // FIRST REQUIRE MUTUAL HOSTILES! - if (!CONSIDERED_NEUTRAL( MercPtrs[ ubNoiseMaker ], pSoldier ) && !CONSIDERED_NEUTRAL( pSoldier, MercPtrs[ ubNoiseMaker ] ) && (pSoldier->bSide != MercPtrs[ ubNoiseMaker ]->bSide)) + if (!CONSIDERED_NEUTRAL( ubNoiseMaker, pSoldier ) && !CONSIDERED_NEUTRAL( pSoldier, ubNoiseMaker ) && (pSoldier->bSide != ubNoiseMaker->bSide)) { // regardless of whether the noisemaker (who's not NOBODY) was seen or not, // as long as listener meets minimum interrupt conditions if ( gfDelayResolvingBestSightingDueToDoor) { - if ( bSourceSeen && (!( (gTacticalStatus.uiFlags & TURNBASED) && ( gTacticalStatus.uiFlags & INCOMBAT ) ) || (gubSightFlags & SIGHTINTERRUPT && StandardInterruptConditionsMet(pSoldier,ubNoiseMaker,bOldOpplist)) ) ) + if ( bSourceSeen && (!( (gTacticalStatus.uiFlags & TURNBASED) && ( gTacticalStatus.uiFlags & INCOMBAT ) ) || (gubSightFlags & SIGHTINTERRUPT && StandardInterruptConditionsMet(pSoldier, ubNoiseMaker, bOldOpplist)) ) ) { // we should be adding this to the array for the AllTeamLookForAll to handle // since this is a door opening noise, add a bonus equal to half the door volume @@ -6639,7 +6587,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL { // require the enemy not to be dying if we are the sighter; in other words, // always add for AI guys, and always add for people with life >= OKLIFE - if ( pSoldier->bTeam != gbPlayerNum || MercPtrs[ ubNoiseMaker ]->stats.bLife >= OKLIFE ) + if ( pSoldier->bTeam != gbPlayerNum || ubNoiseMaker->stats.bLife >= OKLIFE ) { ReevaluateBestSightingPosition( pSoldier, (UINT8) (ubPoints + (ubVolume / 2)) ); } @@ -6650,10 +6598,10 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL { if ( (gTacticalStatus.uiFlags & TURNBASED) && ( gTacticalStatus.uiFlags & INCOMBAT ) ) { - if (StandardInterruptConditionsMet(pSoldier,ubNoiseMaker,bOldOpplist)) + if ( StandardInterruptConditionsMet( pSoldier, ubNoiseMaker, bOldOpplist ) ) { // he gets a chance to interrupt the noisemaker - pSoldier->aiData.bInterruptDuelPts = CalcInterruptDuelPts(pSoldier,ubNoiseMaker, TRUE ); + pSoldier->aiData.bInterruptDuelPts = CalcInterruptDuelPts( pSoldier, ubNoiseMaker, TRUE ); DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "Calculating int duel pts in noise code, %d has %d points", pSoldier->ubID, pSoldier->aiData.bInterruptDuelPts ) ); } else @@ -6760,7 +6708,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL plan_lib->update_plan(pSoldier->bAIIndex, pSoldier, ai_input); } -void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage ) +void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage ) { UINT8 ubVolumeIndex; @@ -6785,11 +6733,11 @@ void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGri // display a message about a noise... // e.g. Sidney hears a loud splash from/to? the north. - if ( ubNoiseMaker != NOBODY && pSoldier->bTeam == gbPlayerNum && pSoldier->bTeam == Menptr[ubNoiseMaker].bTeam ) + if ( ubNoiseMaker != NOBODY && pSoldier->bTeam == gbPlayerNum && pSoldier->bTeam == ubNoiseMaker->bTeam ) { #ifdef JA2BETAVERSION ScreenMsg( MSG_FONT_RED, MSG_ERROR, L"ERROR! TAKE SCREEN CAPTURE AND TELL CAMFIELD NOW!" ); - ScreenMsg( MSG_FONT_RED, MSG_ERROR, L"%s (%d) heard noise from %s (%d), noise at %dL%d, type %d", pSoldier->name, pSoldier->ubID, Menptr[ubNoiseMaker].name, ubNoiseMaker, sGridNo, bLevel, ubNoiseType ); + ScreenMsg( MSG_FONT_RED, MSG_ERROR, L"%s (%d) heard noise from %s (%d), noise at %dL%d, type %d", pSoldier->name, pSoldier->ubID, ubNoiseMaker->name, ubNoiseMaker, sGridNo, bLevel, ubNoiseType ); #endif } @@ -6799,7 +6747,7 @@ void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGri // information about direction etc. only displayed if we don't see noise maker // sevenfm: don't show noise messages from militia (if on our side) if (gbPublicOpplist[gbPlayerNum][ubNoiseMaker] != SEEN_CURRENTLY && pSoldier->aiData.bOppList[ubNoiseMaker] != SEEN_CURRENTLY && - !(MercPtrs[ubNoiseMaker]->bTeam == MILITIA_TEAM && MercPtrs[ubNoiseMaker]->bSide == 0)) + !(ubNoiseMaker->bTeam == MILITIA_TEAM && ubNoiseMaker->bSide == 0)) //if( gbPublicOpplist[gbPlayerNum][ubNoiseMaker] != SEEN_CURRENTLY && pSoldier->aiData.bOppList[ubNoiseMaker] != SEEN_CURRENTLY ) { if (bLevel == pSoldier->pathing.bLevel) @@ -6842,14 +6790,14 @@ void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGri if (gbPublicOpplist[gbPlayerNum][ubNoiseMaker] == SEEN_CURRENTLY || pSoldier->aiData.bOppList[ubNoiseMaker] == SEEN_CURRENTLY) { if (gTauntsSettings.fTauntShowPopupBox == TRUE) - ShowTauntPopupBox(MercPtrs[ubNoiseMaker], zNoiseMessage); + ShowTauntPopupBox(ubNoiseMaker, zNoiseMessage); if (gTauntsSettings.fTauntShowInLog == TRUE) - ScreenMsg(FONT_GRAY2, MSG_INTERFACE, L"%s: %s", MercPtrs[ubNoiseMaker]->GetName(), zNoiseMessage); + ScreenMsg(FONT_GRAY2, MSG_INTERFACE, L"%s: %s", ubNoiseMaker->GetName(), zNoiseMessage); } else { if (gTauntsSettings.fTauntShowPopupBox == TRUE && gTauntsSettings.fTauntShowPopupBoxIfHeard == TRUE) - ShowTauntPopupBox(MercPtrs[ubNoiseMaker], zNoiseMessage); + ShowTauntPopupBox(ubNoiseMaker, zNoiseMessage); if (gTauntsSettings.fTauntShowInLog == TRUE && gTauntsSettings.fTauntShowInLogIfHeard == TRUE) ScreenMsg(FONT_GRAY2, MSG_INTERFACE, L"%s: %s", pTauntUnknownVoice[0], zNoiseMessage); } @@ -7488,15 +7436,15 @@ void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier ) { - UINT8 ubID; - SOLDIERTYPE * pSoldier; - INT8 bDir; - INT16 sDistAway, sDistVisible; + SoldierID ubID; + SOLDIERTYPE * pSoldier; + INT8 bDir; + INT16 sDistAway, sDistVisible; - for ( ubID = gTacticalStatus.Team[ pDyingSoldier->bTeam ].bFirstID; ubID <= gTacticalStatus.Team[ pDyingSoldier->bTeam ].bLastID; ubID++ ) + for ( ubID = gTacticalStatus.Team[ pDyingSoldier->bTeam ].bFirstID; ubID <= gTacticalStatus.Team[ pDyingSoldier->bTeam ].bLastID; ++ubID ) { - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier != pDyingSoldier) && (pSoldier->stats.bLife >= OKLIFE) && (pSoldier->aiData.bAlertStatus < STATUS_RED ) ) { @@ -7519,22 +7467,20 @@ void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier ) } } } - } - } BOOLEAN ArmyKnowsOfPlayersPresence( void ) { - UINT8 ubID; - SOLDIERTYPE * pSoldier; + SoldierID ubID; + SOLDIERTYPE * pSoldier; // if anyone is still left... if (gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector > 0 ) { - for ( ubID = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubID <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ubID++ ) + for ( ubID = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubID <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++ubID ) { - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; if ( pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE) && (pSoldier->aiData.bAlertStatus >= STATUS_RED ) ) { @@ -7547,23 +7493,23 @@ BOOLEAN ArmyKnowsOfPlayersPresence( void ) BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier ) { - UINT8 ubID; + SoldierID ubID; - if (pSoldier->aiData.bOppCnt > 0) + if ( pSoldier->aiData.bOppCnt > 0 ) { - for ( ubID = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; ubID <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ubID++ ) + for ( ubID = gTacticalStatus.Team[CREATURE_TEAM].bFirstID; ubID <= gTacticalStatus.Team[CREATURE_TEAM].bLastID; ++ubID ) { - if ( (pSoldier->aiData.bOppList[ ubID ] == SEEN_CURRENTLY) && (MercPtrs[ ubID ]->flags.uiStatusFlags & SOLDIER_MONSTER) ) + if ( (pSoldier->aiData.bOppList[ubID] == SEEN_CURRENTLY) && (ubID->flags.uiStatusFlags & SOLDIER_MONSTER) ) { - return( TRUE ); + return(TRUE); } } } - return( FALSE ); + return(FALSE); } -INT8 FindUnusedWatchedLoc( UINT8 ubID ) +INT8 FindUnusedWatchedLoc( UINT16 ubID ) { INT8 bLoop; @@ -7580,7 +7526,7 @@ INT8 FindUnusedWatchedLoc( UINT8 ubID ) return( -1 ); } -INT8 FindWatchedLocWithLessThanXPointsLeft( UINT8 ubID, UINT8 ubPointLimit ) +INT8 FindWatchedLocWithLessThanXPointsLeft( UINT16 ubID, UINT8 ubPointLimit ) { INT8 bLoop; @@ -7594,7 +7540,7 @@ INT8 FindWatchedLocWithLessThanXPointsLeft( UINT8 ubID, UINT8 ubPointLimit ) return( -1 ); } -INT8 FindWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +INT8 FindWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bLoop; @@ -7611,7 +7557,7 @@ INT8 FindWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) return( -1 ); } -INT8 GetWatchedLocPoints( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +INT8 GetWatchedLocPoints( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bLoc; @@ -7636,7 +7582,7 @@ INT8 GetWatchedLocPoints( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) } -INT8 GetHighestVisibleWatchedLoc( UINT8 ubID ) +INT8 GetHighestVisibleWatchedLoc( UINT16 ubID ) { INT8 bLoop; INT8 bHighestLoc = -1; @@ -7657,7 +7603,7 @@ INT8 GetHighestVisibleWatchedLoc( UINT8 ubID ) return( bHighestLoc ); } -INT8 GetHighestWatchedLocPoints( UINT8 ubID ) +INT8 GetHighestWatchedLocPoints( UINT16 ubID ) { INT8 bLoop; INT8 bHighestPoints = 0; @@ -7673,16 +7619,17 @@ INT8 GetHighestWatchedLocPoints( UINT8 ubID ) } -void CommunicateWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoints ) +void CommunicateWatchedLoc( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoints ) { - UINT8 ubLoop; - INT8 bTeam, bLoopPoint, bPoint; + SoldierID ubLoop; + INT8 bTeam, bLoopPoint, bPoint; - bTeam = MercPtrs[ ubID ]->bTeam; + bTeam = ubID->bTeam; - for ( ubLoop = gTacticalStatus.Team[ bTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ bTeam ].bLastID; ubLoop++ ) + for ( ubLoop = gTacticalStatus.Team[ bTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ bTeam ].bLastID; ++ubLoop ) { - if ( ubLoop == ubID || MercPtrs[ ubLoop ]->bActive == FALSE || MercPtrs[ ubLoop ]->bInSector == FALSE || MercPtrs[ ubLoop ]->stats.bLife < OKLIFE ) + SOLDIERTYPE *pSoldier = ubLoop; + if ( ubLoop == ubID || pSoldier->bActive == FALSE || pSoldier->bInSector == FALSE || pSoldier->stats.bLife < OKLIFE ) { continue; } @@ -7718,9 +7665,9 @@ void CommunicateWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoin } -void IncrementWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +void IncrementWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { - INT8 bPoint; + INT8 bPoint; bPoint = FindWatchedLoc( ubID, sGridNo, bLevel ); if (bPoint == -1) @@ -7757,7 +7704,7 @@ void IncrementWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) } } -void SetWatchedLocAsUsed( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +void SetWatchedLocAsUsed( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bPoint; @@ -7771,9 +7718,9 @@ void SetWatchedLocAsUsed( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam ) { // look to see if there is anyone near the watched loc who is not on this team - UINT8 ubID; - INT32 sTempGridNo; - INT16 sX, sY; + SoldierID ubID; + INT32 sTempGridNo; + INT16 sX, sY; for ( sY = -WATCHED_LOC_RADIUS; sY <= WATCHED_LOC_RADIUS; sY++ ) { @@ -7785,7 +7732,7 @@ BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam ) continue; } ubID = WhoIsThere2( sTempGridNo, bLevel ); - if ( ubID != NOBODY && MercPtrs[ ubID ]->bTeam != bTeam ) + if ( ubID != NOBODY && ubID->bTeam != bTeam ) { return( FALSE ); } @@ -7796,7 +7743,7 @@ BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam ) void DecayWatchedLocs( INT8 bTeam ) { - UINT8 cnt, cnt2; + UINT16 cnt, cnt2; // loop through all soldiers for ( cnt = gTacticalStatus.Team[ bTeam ].bFirstID; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; cnt++ ) @@ -7832,13 +7779,13 @@ void DecayWatchedLocs( INT8 bTeam ) void MakeBloodcatsHostile( void ) { - INT32 iLoop; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE *pSoldier; + SoldierID id = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; - iLoop = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID; - - for (pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++iLoop, ++pSoldier ) + for ( ; id <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; ++id ) { + pSoldier = id; + if ( pSoldier->ubBodyType == BLOODCAT && pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) { SetSoldierNonNeutral( pSoldier ); diff --git a/Tactical/opplist.h b/Tactical/opplist.h index f63f3873..bce76a29 100644 --- a/Tactical/opplist.h +++ b/Tactical/opplist.h @@ -117,7 +117,7 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo, void DecideTrueVisibility(SOLDIERTYPE *pSoldier, UINT8 ubLocate); void AddOneOpponent(SOLDIERTYPE *pSoldier); void RemoveOneOpponent(SOLDIERTYPE *pSoldier); -void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel); +void UpdatePersonal(SOLDIERTYPE *pSoldier, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel); INT16 MaxNormalDistanceVisible( void ); INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir, INT32 sSubjectGridNo, INT8 bLevel, const BOOLEAN& isCowering, const UINT8& tunnelVision); void ResetLastKnownLocs(SOLDIERTYPE *ptr); @@ -129,9 +129,9 @@ void InitOpponentKnowledgeSystem(void); void InitSoldierOppList(SOLDIERTYPE *pSoldier); void BetweenTurnsVisibilityAdjustments(void); void RemoveManAsTarget(SOLDIERTYPE *pSoldier); -void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel ); -void RadioSightings(SOLDIERTYPE *pSoldier, UINT8 ubAbout, UINT8 ubTeamToRadioTo ); -void OurTeamRadiosRandomlyAbout(UINT8 ubAbout); +void UpdatePublic(UINT8 ubTeam, SoldierID ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel ); +void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo ); +void OurTeamRadiosRandomlyAbout(UINT16 ubAbout); void DebugSoldierPage1( ); void DebugSoldierPage2( ); void DebugSoldierPage3( ); @@ -139,8 +139,8 @@ void DebugSoldierPage4( ); UINT8 MovementNoise( SOLDIERTYPE *pSoldier ); UINT8 DoorOpeningNoise( SOLDIERTYPE *pSoldier ); -void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); -void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void MakeNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void OurNoise( SoldierID ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType); @@ -151,9 +151,9 @@ void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier ); -INT8 GetWatchedLocPoints( UINT8 ubID, INT32 sGridNo, INT8 bLevel ); -INT8 GetHighestVisibleWatchedLoc( UINT8 ubID ); -INT8 GetHighestWatchedLocPoints( UINT8 ubID ); +INT8 GetWatchedLocPoints( UINT16 ubID, INT32 sGridNo, INT8 bLevel ); +INT8 GetHighestVisibleWatchedLoc( UINT16 ubID ); +INT8 GetHighestWatchedLocPoints( UINT16 ubID ); void TurnOffEveryonesMuzzleFlashes( void ); void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam ); @@ -164,7 +164,7 @@ void CheckHostileOrSayQuoteList( void ); void InitOpplistForDoorOpening( void ); UINT8 DoorOpeningNoise( SOLDIERTYPE * pSoldier ); -void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ); +void AddToShouldBecomeHostileOrSayQuoteList( SoldierID ubID ); //extern INT8 gbLightSighting[1][16]; @@ -177,4 +177,4 @@ INT32 MaxDistanceVisible( void ); // HEADROCK HAM 3.6: Moved here from cpp void MakeBloodcatsHostile( void ); -#endif +#endif diff --git a/TacticalAI/AIInternals.h b/TacticalAI/AIInternals.h index 1e72dedc..2e049958 100644 --- a/TacticalAI/AIInternals.h +++ b/TacticalAI/AIInternals.h @@ -130,20 +130,20 @@ typedef struct class ATTACKTYPE { public: - UINT8 ubPossible; // is this attack form possible - UINT8 ubOpponent; // which soldier is the victim + UINT8 ubPossible; // is this attack form possible + SoldierID ubOpponent; // which soldier is the victim //CHANGED STRUCTURE VALUE BY GOTTHARD 7/14/07 - INT16 ubAimTime; // how many extra APs to spend on aiming - INT16 ubChanceToReallyHit; // chance to hit * chance to get through cover + INT16 ubAimTime; // how many extra APs to spend on aiming + INT16 ubChanceToReallyHit; // chance to hit * chance to get through cover //END STRUCTURE CHANGE BY GOTTHARD 7/14/07 - INT16 ubAPCost; // how many APs the attack will use up - INT32 iAttackValue; // relative worthiness of this type of attack - INT32 sTarget; // target gridno of this attack - INT8 bTargetLevel; // target level of this attack - INT8 bWeaponIn; // the inv slot of the weapon in question - INT8 bScopeMode; // SANDRO: added for scope mode and alternative weapon holding - UINT8 ubStance; // recommended stance for attack - UINT8 ubFriendlyFireChance; // highest chance to hit someone of our guys //dnl ch61 180813 + INT16 ubAPCost; // how many APs the attack will use up + INT32 iAttackValue; // relative worthiness of this type of attack + INT32 sTarget; // target gridno of this attack + INT8 bTargetLevel; // target level of this attack + INT8 bWeaponIn; // the inv slot of the weapon in question + INT8 bScopeMode; // SANDRO: added for scope mode and alternative weapon holding + UINT8 ubStance; // recommended stance for attack + UINT8 ubFriendlyFireChance; // highest chance to hit someone of our guys //dnl ch61 180813 ATTACKTYPE(void){ InitAttackType(this); } void InitAttackType(ATTACKTYPE *pAttack); @@ -154,14 +154,14 @@ public: class UnderFire { private: - BOOLEAN fEnable; - UINT16 usUnderFireCnt; - UINT16 usUnderFireID[MAXUNDERFIRE]; - UINT8 ubUnderFireCTH[MAXUNDERFIRE]; + BOOLEAN fEnable; + UINT16 usUnderFireCnt; + SoldierID usUnderFireID[MAXUNDERFIRE]; + UINT8 ubUnderFireCTH[MAXUNDERFIRE]; public: UnderFire(void){ Clear(); fEnable = FALSE; } void Clear(void); - void Add(UINT16 usID, UINT8 ubCTH); + void Add(SoldierID usID, UINT8 ubCTH); void Enable(void){ fEnable=TRUE; } void Disable(void){ fEnable=FALSE; } UINT16 GetUnderFireCnt(void){ return(usUnderFireCnt); } @@ -212,7 +212,7 @@ void CreatureDecideAlertStatus( SOLDIERTYPE *pCreature ); // sevenfm: void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow); void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow); -void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubOpponentID); +void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, SoldierID ubOpponentID); INT32 FindTossSpotInDirection(INT32 sSpot, INT8 bLevel, INT32 sTargetSpot, BOOLEAN fCheckAdjacentDirections, BOOLEAN fCheckFarther); void CheckTossGrenadeAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubGrenadeType); @@ -254,7 +254,7 @@ INT32 InternalGoAsFarAsPossibleTowards(SOLDIERTYPE *pSoldier, INT32 sDesGrid, IN int LegalNPCDestination(SOLDIERTYPE *pSoldier, INT32 sGridno, UINT8 ubPathMode, UINT8 ubWaterOK, UINT8 fFlags); void LoadWeaponIfNeeded(SOLDIERTYPE *pSoldier); INT32 MostImportantNoiseHeard( SOLDIERTYPE *pSoldier, INT32 *piRetValue, BOOLEAN * pfClimbingNecessary, BOOLEAN * pfReachable ); -INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc ); +INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, SoldierID * pubDesiredMerc ); void NPCDoesAct(SOLDIERTYPE *pSoldier); void NPCDoesNothing(SOLDIERTYPE *pSoldier); INT8 OKToAttack(SOLDIERTYPE *ptr, int target); @@ -318,7 +318,7 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U // Get the ID of the farthest opponent we can see, with an optional minimum range // puID - ID of the farthest opponent pSoldier can see // sRange - only return true and give an idea if opponent found is further away than this -BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT8* puID, INT16 sRange); +BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, SoldierID *puID, INT16 sRange); // are there more allies than friends in adjacent sectors? BOOLEAN MoreFriendsThanEnemiesinNearbysectors(UINT8 ausTeam, INT16 aX, INT16 aY, INT8 aZ); diff --git a/TacticalAI/AIList.cpp b/TacticalAI/AIList.cpp index e237b992..e791a8f9 100644 --- a/TacticalAI/AIList.cpp +++ b/TacticalAI/AIList.cpp @@ -24,11 +24,11 @@ AILIST gAIList[ AI_LIST_SIZE ]; AILIST * gpFirstAIListEntry = NULL; -BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT8 * pubDoneCount, BOOLEAN fDoRandomChecks ); +BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT16 * pubDoneCount, BOOLEAN fDoRandomChecks ); void ClearAIList( void ) { - UINT8 ubLoop; + UINT16 ubLoop; for ( ubLoop = 0; ubLoop < AI_LIST_SIZE; ubLoop++ ) { @@ -46,9 +46,9 @@ void DeleteAIListEntry( AILIST * pEntry ) pEntry->pNext = NULL; } -UINT8 FindEmptyAIListEntry( void ) +SoldierID FindEmptyAIListEntry( void ) { - UINT8 ubLoop; + UINT16 ubLoop; for ( ubLoop = 0; ubLoop < AI_LIST_SIZE; ubLoop++ ) { @@ -61,7 +61,7 @@ UINT8 FindEmptyAIListEntry( void ) return( AI_LIST_SIZE ); } -AILIST * CreateNewAIListEntry( UINT8 ubNewEntry, UINT8 ubID, INT8 bPriority ) +AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, SoldierID ubID, INT8 bPriority ) { gAIList[ ubNewEntry ].ubID = ubID; gAIList[ ubNewEntry ].bPriority = bPriority; @@ -69,10 +69,10 @@ AILIST * CreateNewAIListEntry( UINT8 ubNewEntry, UINT8 ubID, INT8 bPriority ) return( &(gAIList[ ubNewEntry ]) ); } -UINT8 RemoveFirstAIListEntry( void ) +SoldierID RemoveFirstAIListEntry( void ) { - AILIST * pOldFirstEntry; - UINT8 ubID; + AILIST *pOldFirstEntry; + SoldierID ubID; while ( gpFirstAIListEntry != NULL) { @@ -85,7 +85,7 @@ UINT8 RemoveFirstAIListEntry( void ) DeleteAIListEntry( pOldFirstEntry ); // make sure conditions still met - if ( SatisfiesAIListConditions( MercPtrs[ ubID ], NULL, FALSE ) ) + if ( SatisfiesAIListConditions( ubID, NULL, FALSE ) ) { return( ubID ); } @@ -94,7 +94,7 @@ UINT8 RemoveFirstAIListEntry( void ) return( NOBODY ); } -void RemoveAIListEntryForID( UINT8 ubID ) +void RemoveAIListEntryForID( SoldierID ubID ) { AILIST * pEntry; AILIST * pPrevEntry; @@ -123,9 +123,9 @@ void RemoveAIListEntryForID( UINT8 ubID ) // none found, that's okay } -BOOLEAN InsertIntoAIList( UINT8 ubID, INT8 bPriority ) +BOOLEAN InsertIntoAIList( SoldierID ubID, INT8 bPriority ) { - UINT8 ubNewEntry; + SoldierID ubNewEntry; AILIST * pEntry, * pNewEntry, * pPrevEntry = NULL; ubNewEntry = FindEmptyAIListEntry(); @@ -178,7 +178,7 @@ BOOLEAN InsertIntoAIList( UINT8 ubID, INT8 bPriority ) return( FALSE ); } -BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT8 * pubDoneCount, BOOLEAN fDoRandomChecks ) +BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT16 * pubDoneCount, BOOLEAN fDoRandomChecks ) { if ( (gTacticalStatus.bBoxingState == BOXING) && !(pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) ) { @@ -276,15 +276,15 @@ BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT8 * pubDoneCount, return( TRUE ); } -BOOLEAN MoveToFrontOfAIList( UINT8 ubID ) +BOOLEAN MoveToFrontOfAIList( SoldierID ubID ) { // we'll have to fake this guy's alert status (in the list) to be the same as the current // front of the list INT8 bPriority; - UINT8 ubNewEntry; - AILIST * pNewEntry; + SoldierID ubNewEntry; + AILIST *pNewEntry; - if ( !SatisfiesAIListConditions( MercPtrs[ ubID ], NULL, FALSE ) ) + if ( !SatisfiesAIListConditions( ubID, NULL, FALSE ) ) { // can't do dat! return( FALSE ); @@ -316,8 +316,8 @@ BOOLEAN BuildAIListForTeam( INT8 bTeam ) BOOLEAN fInsertRet; SOLDIERTYPE * pSoldier; BOOLEAN fRet = FALSE; - UINT8 ubCount = 0; - UINT8 ubDoneCount = 0; + UINT16 ubCount = 0; + UINT16 ubDoneCount = 0; INT8 bPriority; // this team is being given control so reset their muzzle flashes diff --git a/TacticalAI/AIList.h b/TacticalAI/AIList.h index 9d3471cc..49858a90 100644 --- a/TacticalAI/AIList.h +++ b/TacticalAI/AIList.h @@ -1,18 +1,18 @@ -#include "types.h" +#include "Overhead Types.h" typedef struct AILIST { - UINT8 ubID; - INT8 bPriority; - UINT8 ubUnused; - struct AILIST * pNext; + SoldierID ubID; + INT8 bPriority; + UINT8 ubUnused; + struct AILIST *pNext; } AILIST; #define MAX_AI_PRIORITY 100 extern void ClearAIList( void ); -extern AILIST * CreateNewAIListEntry( UINT8 ubNewEntry, UINT8 ubID, INT8 bAlertStatus ); -extern BOOLEAN InsertIntoAIList( UINT8 ubID, INT8 bAlertStatus ); -extern UINT8 RemoveFirstAIListEntry( void ); +extern AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, SoldierID ubID, INT8 bAlertStatus ); +extern BOOLEAN InsertIntoAIList( SoldierID ubID, INT8 bAlertStatus ); +extern SoldierID RemoveFirstAIListEntry( void ); extern BOOLEAN BuildAIListForTeam( INT8 bTeam ); -extern BOOLEAN MoveToFrontOfAIList( UINT8 ubID ); +extern BOOLEAN MoveToFrontOfAIList( SoldierID ubID ); diff --git a/TacticalAI/AIMain.cpp b/TacticalAI/AIMain.cpp index 5bdc0624..2af30ab0 100644 --- a/TacticalAI/AIMain.cpp +++ b/TacticalAI/AIMain.cpp @@ -235,7 +235,7 @@ void DebugAI( INT8 bMsgType, SOLDIERTYPE *pSoldier, STR szOutput, INT8 bAction ) sprintf(msg, ""); - sprintf(buf, "[%d] (%d)", pSoldier->ubID, pSoldier->sGridNo); + sprintf(buf, "[%d] (%d)", pSoldier->ubID.i, pSoldier->sGridNo); strcat(msg, buf); if (pSoldier->ubProfile != NO_PROFILE) @@ -301,7 +301,7 @@ void DebugAI( INT8 bMsgType, SOLDIERTYPE *pSoldier, STR szOutput, INT8 bAction ) } // also log to individual file for selected soldier - sprintf(buf, "Logs\\AI_Decisions [%d].txt", pSoldier->ubID); + sprintf(buf, "Logs\\AI_Decisions [%d].txt", pSoldier->ubID.i); if ((DebugFile = fopen(buf, "a+t")) != NULL) { if (bMsgType == AI_MSG_START) @@ -390,7 +390,7 @@ BOOLEAN InitAI( void ) // remove all individual files CHAR8 buf[1024]; - for (UINT8 cnt = 0; cnt < TOTAL_SOLDIERS; cnt++) + for (UINT16 cnt = 0; cnt < TOTAL_SOLDIERS; cnt++) { sprintf(buf, "Logs\\AI_Decisions [%d].txt", cnt); remove(buf); @@ -697,19 +697,18 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named // ATE: Display message that deadlock occured... LiveMessage( "Breaking Deadlock" ); - ScreenMsg(FONT_MCOLOR_LTRED, MSG_INTERFACE, L"Aborting AI deadlock for [%d] %s %s data %d", pSoldier->ubID, pSoldier->GetName(), utf8_to_wstring(std::string(szAction[pSoldier->aiData.bAction])), pSoldier->aiData.usActionData); + ScreenMsg(FONT_MCOLOR_LTRED, MSG_INTERFACE, L"Aborting AI deadlock for [%d] %s %s data %d", pSoldier->ubID.i, pSoldier->GetName(), utf8_to_wstring(std::string(szAction[pSoldier->aiData.bAction])), pSoldier->aiData.usActionData); DebugAI(String("Aborting AI deadlock for [%d] %s data %d", pSoldier->ubID, szAction[pSoldier->aiData.bAction], pSoldier->aiData.usActionData)); #ifdef JA2TESTVERSION // display deadlock message gfUIInDeadlock = TRUE; - gUIDeadlockedSoldier = pSoldier->ubID; - DebugAI( String("DEADLOCK soldier %d action %s ABC %d", pSoldier->ubID, gzActionStr[pSoldier->aiData.bAction], gTacticalStatus.ubAttackBusyCount ) ); + DebugAI( String("DEADLOCK soldier %d action %s ABC %d", pSoldier->ubID.i, gzActionStr[pSoldier->aiData.bAction], gTacticalStatus.ubAttackBusyCount ) ); #else // If we are in beta version, also report message! #ifdef JA2BETAVERSION - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_ERROR, L"Aborting AI deadlock for %d. Please sent DEBUG.TXT file and SAVE.", pSoldier->ubID ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_ERROR, L"Aborting AI deadlock for %d. Please sent DEBUG.TXT file and SAVE.", pSoldier->ubID.i ); #endif // just abort EndAIDeadlock(); @@ -874,8 +873,6 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) { - UINT8 ubID; - if (gfTurnBasedAI) { if (gTacticalStatus.uiFlags & PLAYER_TEAM_DEAD) @@ -885,19 +882,21 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) } // search for any player merc to say close call quote - for ( ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubID++ ) + for ( SoldierID ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubID ) { - if ( OK_INSECTOR_MERC( MercPtrs[ ubID ] ) ) + SOLDIERTYPE *pMerc = ubID; + + if ( OK_INSECTOR_MERC( pMerc ) ) { - if ( MercPtrs[ ubID ]->flags.fCloseCall ) + if ( pMerc->flags.fCloseCall ) { - if ( !gTacticalStatus.fSomeoneHit && MercPtrs[ ubID ]->bNumHitsThisTurn == 0 && !(MercPtrs[ ubID ]->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 ) + if ( !gTacticalStatus.fSomeoneHit && pMerc->bNumHitsThisTurn == 0 && !(pMerc->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 ) { // say close call quote! - TacticalCharacterDialogue( MercPtrs[ ubID ], QUOTE_CLOSE_CALL ); - MercPtrs[ ubID ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL; + TacticalCharacterDialogue( pMerc, QUOTE_CLOSE_CALL ); + pMerc->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL; } - MercPtrs[ ubID ]->flags.fCloseCall = FALSE; + pMerc->flags.fCloseCall = FALSE; } } } @@ -939,10 +938,10 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) #endif // find the next AI guy - ubID = RemoveFirstAIListEntry(); + SoldierID ubID = RemoveFirstAIListEntry(); if (ubID != NOBODY) { - StartNPCAI( MercPtrs[ ubID ] ); + StartNPCAI( ubID ); return; } @@ -1117,14 +1116,13 @@ void StartNPCAI(SOLDIERTYPE *pSoldier) BOOLEAN DestNotSpokenFor(SOLDIERTYPE *pSoldier, INT32 sGridNo) { - INT32 cnt; SOLDIERTYPE *pOurTeam; - - cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; + SoldierID cnt = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; // make a list of all of our team's mercs - for (pOurTeam = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; cnt++,pOurTeam++) + for ( ; cnt <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++cnt ) { + pOurTeam = cnt; if ( pOurTeam->bActive ) { if (pOurTeam->sGridNo == sGridNo || pOurTeam->aiData.usActionData == sGridNo) @@ -1165,12 +1163,12 @@ INT32 FindAdjacentSpotBeside(SOLDIERTYPE *pSoldier, INT32 sGridNo) return(sCheapestDest); } -UINT8 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ) +SoldierID GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ) { - UINT32 uiLoop; - INT32 iThreatVal,iMinThreat = 30000; - SOLDIERTYPE *pTargetSoldier; - UINT8 ubTargetSoldier = NOBODY; + UINT32 uiLoop; + INT32 iThreatVal,iMinThreat = 30000; + SOLDIERTYPE *pTargetSoldier; + SoldierID ubTargetSoldier = NOBODY; // Loop through all mercs @@ -1254,13 +1252,10 @@ void FreeUpNPCFromPendingAction( SOLDIERTYPE *pSoldier ) } } -void FreeUpNPCFromAttacking(UINT8 ubID) +void FreeUpNPCFromAttacking(SoldierID ubID) { - SOLDIERTYPE *pSoldier; - - pSoldier = MercPtrs[ubID]; - ActionDone(pSoldier); - pSoldier->pathing.bNeedToLook = TRUE; + ActionDone(ubID); + ubID->pathing.bNeedToLook = TRUE; } void FreeUpNPCFromLoweringGun( SOLDIERTYPE *pSoldier ) @@ -1917,7 +1912,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) UINT16 usHandItem = pSoldier->inv[HANDPOS].usItem; INT8 bSlot; - UINT16 usSoldierIndex; // added by SANDRO + SoldierID usSoldierIndex; // added by SANDRO #ifdef TESTAICONTROL if (gfTurnBasedAI || gTacticalStatus.fAutoBandageMode) @@ -2597,7 +2592,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) usSoldierIndex = WhoIsThere2( pSoldier->aiData.usActionData, pSoldier->bTargetLevel); if ( usSoldierIndex != NOBODY ) { - MercStealFromMerc( pSoldier, MercPtrs[usSoldierIndex] ); + MercStealFromMerc( pSoldier, usSoldierIndex ); PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, usSoldierIndex ); } @@ -2631,7 +2626,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) case AI_ACTION_USE_SKILL: { - UINT8 ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 ); + SoldierID ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 ); BOOLEAN result = pSoldier->UseSkill(pSoldier->usAISkillUse, pSoldier->aiData.usActionData, ubID); diff --git a/TacticalAI/AIUtils.cpp b/TacticalAI/AIUtils.cpp index a7a3821a..a11fe09a 100644 --- a/TacticalAI/AIUtils.cpp +++ b/TacticalAI/AIUtils.cpp @@ -830,7 +830,8 @@ INT16 RandomFriendWithin(SOLDIERTYPE *pSoldier) { UINT32 uiLoop; UINT16 usMaxDist; - UINT8 ubFriendCount, ubFriendIDs[MAXMERCS], ubFriendID; + UINT16 ubFriendCount; + SoldierID ubFriendIDs[MAXMERCS], ubFriendID; UINT8 ubDirection; UINT8 ubDirsLeft; BOOLEAN fDirChecked[8]; @@ -1378,7 +1379,7 @@ INT32 ClosestReachableDisturbance(SOLDIERTYPE *pSoldier, BOOLEAN * pfChangeLevel } -INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, UINT8 *pubOpponentID) +INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, SoldierID * pubOpponentID) { INT32 *psLastLoc,sGridNo, sClosestOpponent = NOWHERE; UINT32 uiLoop; @@ -1703,18 +1704,17 @@ INT32 ClosestPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ) // NOTE: skips EPCs! - UINT8 ubLoop; SOLDIERTYPE *pTargetSoldier; INT32 sMinDist = WORLD_MAX; INT32 sDist; INT32 sGridNo = NOWHERE; // Loop through all mercs on player team - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++) + for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop) { - pTargetSoldier = Menptr + ubLoop; + pTargetSoldier = ubLoop; if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector) { @@ -1762,17 +1762,16 @@ INT32 ClosestUnDisguisedPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ) // used by NPCs... find the closest PC // NOTE: skips EPCs! - UINT8 ubLoop; SOLDIERTYPE *pTargetSoldier; INT32 sMinDist = WORLD_MAX; INT32 sDist; INT32 sGridNo = NOWHERE; // Loop through all mercs on player team - ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++) + SoldierID ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop ) { - pTargetSoldier = Menptr + ubLoop; + pTargetSoldier = ubLoop; if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector) continue; @@ -2021,7 +2020,6 @@ INT16 EstimatePathCostToLocation( SOLDIERTYPE * pSoldier, INT32 sDestGridNo, INT BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax ) { UINT8 ubTeamLoop; - UINT8 ubIDLoop; SOLDIERTYPE *pOpponent; for ( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ++ubTeamLoop ) @@ -2032,9 +2030,9 @@ BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax ) if ( gTacticalStatus.Team[ ubTeamLoop ].bSide != pSoldier->bSide ) { // consider guys in this team, which isn't on our side - for ( ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ++ubIDLoop ) + for ( SoldierID ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ++ubIDLoop ) { - pOpponent = MercPtrs[ubIDLoop]; + pOpponent = ubIDLoop; // if this merc is inactive, at base, on assignment, or dead if (!pOpponent) @@ -2174,15 +2172,14 @@ INT32 ClosestReachableFriendInTrouble(SOLDIERTYPE *pSoldier, BOOLEAN * pfClimbin INT16 DistanceToClosestFriend( SOLDIERTYPE * pSoldier ) { // find the distance to the closest person on the same team - UINT8 ubLoop; SOLDIERTYPE *pTargetSoldier; INT16 sMinDist = 1000; INT16 sDist; // Loop through all mercs on player team - ubLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; + SoldierID ubLoop = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; - for ( ; ubLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ubLoop++ ) + for ( ; ubLoop <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++ubLoop ) { if (ubLoop == pSoldier->ubID) { @@ -2190,7 +2187,7 @@ INT16 DistanceToClosestFriend( SOLDIERTYPE * pSoldier ) continue; } - pTargetSoldier = Menptr + ubLoop; + pTargetSoldier = ubLoop; if ( pSoldier->bActive && pSoldier->bInSector ) { @@ -3167,12 +3164,11 @@ INT32 RangeChangeDesire( SOLDIERTYPE * pSoldier ) BOOLEAN ArmySeesOpponents( void ) { - INT32 cnt; SOLDIERTYPE * pSoldier; - for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++ ) + for ( SoldierID cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->aiData.bOppCnt > 0 ) { @@ -3306,7 +3302,7 @@ INT16 AssessTacticalSituation( INT8 bTeam ) BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent ) { SOLDIERTYPE * pSoldier; - UINT16 cnt; + SoldierID cnt; // This assertion can be safely removed, assuming the program does what it should. It simply checks // whether the "opponent" is on the same team being checked. That should be avoided when calling this @@ -3316,9 +3312,9 @@ BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent ) // We're checking Merc/Militia visibility if (bTeam == OUR_TEAM || bTeam == MILITIA_TEAM ) { - for ( cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++ ) + for ( cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE) { @@ -3328,9 +3324,9 @@ BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent ) return ( TRUE ); } } - for ( cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++ ) + for ( cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE) { @@ -3349,9 +3345,9 @@ BOOLEAN TeamSeesOpponent( INT8 bTeam, SOLDIERTYPE * pOpponent ) // Check enemy visibility else if (bTeam == ENEMY_TEAM) { - for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++ ) + for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; ++cnt ) { - pSoldier = MercPtrs[ cnt ]; + pSoldier = cnt; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE) { @@ -3445,17 +3441,16 @@ INT32 CalcStraightThreatValue( SOLDIERTYPE *pEnemy ) } // Flugente: get the id of the closest soldier with a specific flag that we can currently see -UINT8 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight ) +SoldierID GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight ) { - UINT8 id = NOBODY; - UINT32 uiLoop; + SoldierID id = NOBODY; SOLDIERTYPE * pFriend; INT16 range = aRange; // go through each soldier, looking for "friends" (soldiers on same team) - for (uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop) + for ( SoldierID uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop) { - pFriend = MercPtrs[ uiLoop ]; + pFriend = uiLoop; // if this merc is inactive, not in sector, or dead if (!pFriend) @@ -3498,17 +3493,16 @@ UINT8 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 au } // get the id of the closest soldier (closer than x tiles) of a specific team that is wounded that we can currently see -UINT8 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) +SoldierID GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) { - UINT8 id = NOBODY; - UINT32 uiLoop; + SoldierID id = NOBODY; SOLDIERTYPE * pFriend; INT16 range = aRange; // go through each soldier, looking for "friends" (soldiers on same team) - for (uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop) + for ( SoldierID uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop) { - pFriend = MercPtrs[ uiLoop ]; + pFriend = uiLoop; // if this merc is inactive, not in sector, or dead if (!pFriend) @@ -3547,17 +3541,16 @@ UINT8 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 au } // get the id of the closest medic (closer than x tiles) of a specific team -UINT8 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) +SoldierID GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) { - UINT8 id = NOBODY; - UINT32 uiLoop; + SoldierID id = NOBODY; SOLDIERTYPE * pFriend; INT16 range = aRange; // go through each soldier, looking for "friends" (soldiers on same team) - for (uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop) + for ( SoldierID uiLoop = gTacticalStatus.Team[ auTeam ].bFirstID; uiLoop <= gTacticalStatus.Team[ auTeam ].bLastID; ++uiLoop) { - pFriend = MercPtrs[ uiLoop ]; + pFriend = uiLoop; // if this merc is inactive, not in sector, or dead if (!pFriend) @@ -3611,20 +3604,20 @@ INT16 MaxNormalVisionDistance( void ) // sevenfm: check friendly soldiers between me and noise gridno // count only friends that are active and not stationary/onguard/sniper -UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) +UINT16 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { SOLDIERTYPE * pFriend; UINT8 ubFriendDir, ubMyDir; - UINT8 ubFriends = 0; + UINT16 ubFriends = 0; CHECKF(pSoldier); ubMyDir = GetDirectionFromCenterCellXYGridNo(sTargetGridNo, pSoldier->sGridNo); // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter ) { - pFriend = MercPtrs[ iCounter ]; + pFriend = iCounter; ubFriendDir = GetDirectionFromCenterCellXYGridNo(sTargetGridNo, pFriend->sGridNo); if (pFriend != pSoldier && @@ -3644,19 +3637,19 @@ UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) } // sevenfm: count nearby friend soldiers -UINT8 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ) +UINT16 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ) { SOLDIERTYPE * pFriend; - UINT8 ubFriendCount = 0; + UINT16 ubFriendCount = 0; // safety check if( !pSoldier ) return 0; // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter ) { - pFriend = MercPtrs[ iCounter ]; + pFriend = iCounter; // Make sure that character is alive, not too shocked, and conscious, and of higher experience level // than the character being suppressed. if (pFriend != pSoldier && pFriend->bActive && pFriend->stats.bLife >= OKLIFE && @@ -3963,9 +3956,9 @@ BOOLEAN WeAttack(INT8 bTeam) SOLDIERTYPE * pFriend; // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++) + for ( SoldierID iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; ++iCounter ) { - pFriend = MercPtrs[iCounter]; + pFriend = iCounter; if (pFriend && pFriend->bActive && @@ -3987,9 +3980,9 @@ UINT8 CountNearbyFriendsLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UIN UINT8 ubFriendCount = 0; // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter ) { - pFriend = MercPtrs[ iCounter ]; + pFriend = iCounter; if (pFriend != pSoldier && pFriend->bActive && @@ -4027,9 +4020,9 @@ UINT8 CountFriendsFlankSameSpot(SOLDIERTYPE *pSoldier, INT32 sSpot) } // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++) + for ( SoldierID iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++iCounter ) { - pFriend = MercPtrs[iCounter]; + pFriend = iCounter; if (pFriend && pFriend != pSoldier && @@ -4109,9 +4102,9 @@ UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent ) } // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( SoldierID iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ++iCounter ) { - pFriend = MercPtrs[ iCounter ]; + pFriend = iCounter; // Make sure that character is alive, not too shocked, and conscious if (pFriend != pSoldier && @@ -4138,19 +4131,19 @@ UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent ) } // count friends under fire or with shock -UINT8 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance) +UINT16 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance) { SOLDIERTYPE * pFriend; - UINT8 ubFriendCount = 0; + UINT16 ubFriendCount = 0; // safety check if (bTeam >= MAXTEAMS) return 0; // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++) + for ( SoldierID iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; ++iCounter ) { - pFriend = MercPtrs[iCounter]; + pFriend = iCounter; if (pFriend && pFriend->bActive && @@ -4390,19 +4383,19 @@ BOOLEAN EnemySeenSoldierRecently( SOLDIERTYPE *pSoldier, UINT8 ubMax ) return FALSE; } -UINT8 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ) +UINT16 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ) { SOLDIERTYPE *pFriend; - UINT8 ubFriends = 0; + UINT16 ubFriends = 0; CHECKF( pSoldier ); if ( bTeam >= MAXTEAMS ) return 0; - for ( UINT16 cnt = gTacticalStatus.Team[bTeam].bFirstID; cnt <= gTacticalStatus.Team[bTeam].bLastID; ++cnt ) + for ( SoldierID cnt = gTacticalStatus.Team[bTeam].bFirstID; cnt <= gTacticalStatus.Team[bTeam].bLastID; ++cnt ) { - pFriend = MercPtrs[cnt]; + pFriend = cnt; if ( pFriend->bActive && pFriend->bInSector && @@ -4839,13 +4832,12 @@ BOOLEAN AnyCoverFromSpot( INT32 sSpot, INT8 bLevel, INT32 sThreatLoc, INT8 bThre return FALSE; } -UINT8 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier ) +UINT16 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier ) { CHECKF(pSoldier); UINT8 ubTeamLoop; - UINT8 ubIDLoop; - UINT8 cnt = 0; + UINT16 cnt = 0; for( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ubTeamLoop++ ) { @@ -4855,7 +4847,7 @@ UINT8 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier ) if( gTacticalStatus.Team[ ubTeamLoop ].bSide != pSoldier->bSide ) { // consider guys in this team, which isn't on our side - for( ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ubIDLoop++ ) + for( SoldierID ubIDLoop = gTacticalStatus.Team[ ubTeamLoop ].bFirstID; ubIDLoop <= gTacticalStatus.Team[ ubTeamLoop ].bLastID; ++ubIDLoop ) { // if this guy SAW an enemy recently... if( pSoldier->aiData.bOppList[ ubIDLoop ] >= SEEN_CURRENTLY && @@ -5670,7 +5662,7 @@ BOOLEAN DuskLight(void) return FALSE; } -BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { INT8 bPersonalKnowledge; INT8 bPublicKnowledge; @@ -5694,7 +5686,7 @@ BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return FALSE; } -INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 Knowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5709,7 +5701,7 @@ INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return PublicKnowledge(pSoldier->bTeam, ubOpponentID); } -INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT32 KnownLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5724,7 +5716,7 @@ INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return KnownPublicLocation(pSoldier->bTeam, ubOpponentID); } -INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 KnownLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5739,7 +5731,7 @@ INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return KnownPublicLevel(pSoldier->bTeam, ubOpponentID); } -INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5749,7 +5741,7 @@ INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return pSoldier->aiData.bOppList[ubOpponentID]; } -INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5763,7 +5755,7 @@ INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return gsLastKnownOppLoc[pSoldier->ubID][ubOpponentID]; } -INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5773,7 +5765,7 @@ INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return gbLastKnownOppLevel[pSoldier->ubID][ubOpponentID]; } -INT8 PublicKnowledge(UINT8 bTeam, UINT8 ubOpponentID) +INT8 PublicKnowledge(UINT8 bTeam, SoldierID ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5783,7 +5775,7 @@ INT8 PublicKnowledge(UINT8 bTeam, UINT8 ubOpponentID) return gbPublicOpplist[bTeam][ubOpponentID]; } -INT32 KnownPublicLocation(UINT8 bTeam, UINT8 ubOpponentID) +INT32 KnownPublicLocation(UINT8 bTeam, SoldierID ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5797,7 +5789,7 @@ INT32 KnownPublicLocation(UINT8 bTeam, UINT8 ubOpponentID) return gsPublicLastKnownOppLoc[bTeam][ubOpponentID]; } -INT8 KnownPublicLevel(UINT8 bTeam, UINT8 ubOpponentID) +INT8 KnownPublicLevel(UINT8 bTeam, SoldierID ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5938,14 +5930,14 @@ INT32 RandomizeOpponentLocation(INT32 sSpot, SOLDIERTYPE *pOpponent, INT16 sMaxD } // first call PrepareThreatlist to make threat list -UINT8 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt) +SoldierID ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt) { CHECKF(pSoldier); UINT32 uiLoop; INT32 sClosestOpponent = NOWHERE; INT32 iRange, iClosestRange; - UINT8 ubClosestOpponentID = NOBODY; + SoldierID ubClosestOpponentID = NOBODY; // use global defined threat list for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++) @@ -5968,14 +5960,14 @@ UINT8 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt) } // first call PrepareThreatlist to make threat list -UINT8 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax) +SoldierID ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax) { CHECKF(pSoldier); UINT32 uiLoop; INT32 sClosestOpponent = NOWHERE; INT32 iRange, iClosestRange; - UINT8 ubClosestOpponentID = NOBODY; + SoldierID ubClosestOpponentID = NOBODY; // use global defined threat list for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++) @@ -6098,7 +6090,7 @@ UINT32 PrepareThreatlist(SOLDIERTYPE *pSoldier) return uiThreatCnt; } -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance) +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance) { CHECKF(pSoldier); @@ -6108,7 +6100,7 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDista INT32 sThreatLoc; INT8 iThreatLevel; - UINT8 ubNum = 0; + UINT16 ubNum = 0; // loop through all the enemies for (uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop) @@ -6152,7 +6144,7 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDista return ubNum; } -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier) +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier) { CHECKF(pSoldier); @@ -6162,7 +6154,7 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier) INT32 sThreatLoc; INT8 iThreatLevel; - UINT8 ubNum = 0; + UINT16 ubNum = 0; // loop through all the enemies for (uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop) diff --git a/TacticalAI/Attacks.cpp b/TacticalAI/Attacks.cpp index 7e2e6fd9..bc33eb3c 100644 --- a/TacticalAI/Attacks.cpp +++ b/TacticalAI/Attacks.cpp @@ -716,16 +716,16 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot) //dnl ch62 180813 ignore firing into breathless targets if there are targets in better condition // sevenfm: check that best opponent exists if (pBestShot->ubOpponent != NOBODY && - (Menptr[pBestShot->ubOpponent].bCollapsed || Menptr[pBestShot->ubOpponent].bBreathCollapsed) && - Menptr[pBestShot->ubOpponent].bBreath < OKBREATH - && Menptr[pBestShot->ubOpponent].bBreath < pOpponent->bBreath) + (pBestShot->ubOpponent->bCollapsed || pBestShot->ubOpponent->bBreathCollapsed) && + pBestShot->ubOpponent->bBreath < OKBREATH + && pBestShot->ubOpponent->bBreath < pOpponent->bBreath) { iPercentBetter = PERCENT_TO_IGNORE_THREAT; } // sevenfm: if best opponent is dying and new opponent is ok, use new opponent if (pBestShot->ubOpponent != NOBODY && - Menptr[pBestShot->ubOpponent].stats.bLife < OKLIFE && + pBestShot->ubOpponent->stats.bLife < OKLIFE && pOpponent->stats.bLife >= OKLIFE) { iPercentBetter = PERCENT_TO_IGNORE_THREAT; @@ -735,7 +735,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot) // guy is conscious at all if (iPercentBetter < -PERCENT_TO_IGNORE_THREAT && pBestShot->ubOpponent != NOBODY && - Menptr[pBestShot->ubOpponent].stats.bLife >= OKLIFE) + pBestShot->ubOpponent->stats.bLife >= OKLIFE) { // then stick with the older guy as the better target continue; @@ -753,7 +753,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot) // sevenfm: if new opponent is dying and best opponent is ok, ignore new opponent if (pBestShot->ubOpponent != NOBODY && - Menptr[pBestShot->ubOpponent].stats.bLife >= OKLIFE && + pBestShot->ubOpponent->stats.bLife >= OKLIFE && pOpponent->stats.bLife < OKLIFE) { //DebugShot(pSoldier, String("new opponent is dying, best opponent is ok - skip")); @@ -839,13 +839,14 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"calcbestthrow"); // September 9, 1998: added code for LAWs (CJC) - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; INT32 iAttackValue; INT32 iHitRate, iThreatValue, iTotalThreatValue,iOppThreatValue[MAXMERCS]; INT32 sGridNo, sEndGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS]; INT8 bFriendLevel[MAXMERCS], bOpponentLevel[MAXMERCS]; INT32 iEstDamage; - UINT8 ubFriendCnt = 0,ubOpponentCnt = 0, ubOpponentID[MAXMERCS]; + UINT16 ubFriendCnt = 0, ubOpponentCnt = 0; + SoldierID ubOpponentID[MAXMERCS]; UINT8 ubMaxPossibleAimTime; INT16 sRawAPCost, sMinAPcost; UINT8 ubChanceToHit, ubChanceToGetThrough, ubChanceToReallyHit, ubFriendlyFireChance; @@ -1479,7 +1480,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) iThreatValue = iOppThreatValue[ubLoop2]; // estimate how much damage this tossed item would do to him - iEstDamage = EstimateThrowDamage(pSoldier,bPayloadPocket,MercPtrs[ubOpponentID[ubLoop2]],sGridNo); + iEstDamage = EstimateThrowDamage(pSoldier, bPayloadPocket, ubOpponentID[ubLoop2], sGridNo); if (usOppDist) { @@ -1492,7 +1493,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) iTotalThreatValue += (iThreatValue * iEstDamage); // only count opponents still standing worth shooting at (in range) - if (Menptr[ ubOpponentID[ubLoop2] ].stats.bLife >= OKLIFE) + if (ubOpponentID[ubLoop2]->stats.bLife >= OKLIFE) { ubOppsInRange++; if (usOppDist < 2) @@ -1599,7 +1600,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) // limit RPG use, unless can hit several enemies, shooting at tank or opponent is in a room if (ItemIsRocketLauncher(usInHand) && ubOppsInRange < 2 && - !ARMED_VEHICLE(MercPtrs[ubOpponentID[ubLoop]]) && + !ARMED_VEHICLE(ubOpponentID[ubLoop]) && (!InARoom(sOpponentTile[ubLoop], NULL) || pSoldier->bTeam != ENEMY_TEAM)) { continue; // next gridno @@ -1691,7 +1692,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) { ubMinChanceToReallyHit = 30; } - else if (EXPLOSIVE_GUN(usInHand) && !ARMED_VEHICLE(pSoldier) && (pBestThrow->ubOpponent == NOBODY || !ARMED_VEHICLE(MercPtrs[pBestThrow->ubOpponent]))) + else if (EXPLOSIVE_GUN(usInHand) && !ARMED_VEHICLE(pSoldier) && (pBestThrow->ubOpponent == NOBODY || !ARMED_VEHICLE(pBestThrow->ubOpponent))) { ubMinChanceToReallyHit = 80; } @@ -1916,7 +1917,7 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt // guy is conscious at all if (iPercentBetter < -PERCENT_TO_IGNORE_THREAT && pBestStab->ubOpponent != NOBODY && - Menptr[pBestStab->ubOpponent].stats.bLife >= OKLIFE) + pBestStab->ubOpponent->stats.bLife >= OKLIFE) { // then stick with the older guy as the better target continue; @@ -1937,12 +1938,12 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt // OOOF! That was a lot of work! But we've got a new best target! pBestStab->ubPossible = TRUE; pBestStab->ubOpponent = pOpponent->ubID; - pBestStab->ubAimTime = ubBestAimTime; - pBestStab->ubChanceToReallyHit = ubChanceToReallyHit; - pBestStab->sTarget = pOpponent->sGridNo; - pBestStab->bTargetLevel = pOpponent->pathing.bLevel; - pBestStab->iAttackValue = iAttackValue; - pBestStab->ubAPCost = ubMinAPCost + ubBestAimTime; + pBestStab->ubAimTime = ubBestAimTime; + pBestStab->ubChanceToReallyHit = ubChanceToReallyHit; + pBestStab->sTarget = pOpponent->sGridNo; + pBestStab->bTargetLevel = pOpponent->pathing.bLevel; + pBestStab->iAttackValue = iAttackValue; + pBestStab->ubAPCost = ubMinAPCost + ubBestAimTime; } } @@ -3416,11 +3417,11 @@ UnderFire gUnderFire; void UnderFire::Clear(void) { usUnderFireCnt = 0; - memset(usUnderFireID, 0, sizeof(usUnderFireID)); + memset(usUnderFireID, TOTAL_SOLDIERS, sizeof(usUnderFireID)); memset(ubUnderFireCTH, 0, sizeof(ubUnderFireCTH)); } -void UnderFire::Add(UINT16 usID, UINT8 ubCTH) +void UnderFire::Add(SoldierID usID, UINT8 ubCTH) { if (!fEnable) return; @@ -3447,7 +3448,7 @@ UINT16 UnderFire::Count(INT8 bTeam) UINT16 cnt = 0; for (UINT16 i = 0; i < usUnderFireCnt; i++) { - if (MercPtrs[usUnderFireID[i]]->bTeam == bTeam) + if (usUnderFireID[i]->bTeam == bTeam) ++cnt; } return(cnt); @@ -3458,7 +3459,7 @@ UINT8 UnderFire::Chance(INT8 bTeam, INT8 bSide, BOOLEAN fCheckNeutral) UINT8 cth = 0; for (UINT16 i = 0; i < usUnderFireCnt; i++) { - if ((MercPtrs[usUnderFireID[i]]->bTeam == bTeam || MercPtrs[usUnderFireID[i]]->bSide == bSide || fCheckNeutral && MercPtrs[usUnderFireID[i]]->aiData.bNeutral) && + if ((usUnderFireID[i]->bTeam == bTeam || usUnderFireID[i]->bSide == bSide || fCheckNeutral && usUnderFireID[i]->aiData.bNeutral) && ubUnderFireCTH[i] > cth) { cth = ubUnderFireCTH[i]; @@ -3478,9 +3479,10 @@ UINT8 UnderFire::Chance(INT8 bTeam, INT8 bSide, BOOLEAN fCheckNeutral) // if an enemy soldier fulfils taboo, make sure to not hit him at all! BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, UINT8 uCheckFriends, UINT8 aMinRating, SOLDIER_CONDITION cond, SOLDIER_CONDITION taboo) { - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; INT32 sGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS], sTabooTile[MAXMERCS]; - UINT8 ubFriendCnt = 0,ubOpponentCnt = 0, ubTabooCnt = 0, ubOpponentID[MAXMERCS]; + UINT16 ubFriendCnt = 0, ubOpponentCnt = 0, ubTabooCnt = 0; + SoldierID ubOpponentID[MAXMERCS]; INT32 bMaxLeft,bMaxRight,bMaxUp,bMaxDown, i, j; INT8 bPersOL, bPublOL; SOLDIERTYPE *pFriend; @@ -3670,7 +3672,7 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U // Get the ID of the farthest opponent we can see, with an optional minimum range // puID - ID of the farthest opponent pSoldier can see // sRange - only return an true and give an idea if opponent found is further away than this -BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT8* puID, INT16 sRange) +BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, SoldierID *puID, INT16 sRange) { INT32 sGridNo; UINT32 uiLoop; @@ -3788,23 +3790,19 @@ void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) // if we can afford the minimum AP cost to throw this tossable item if (pSoldier->bActionPoints >= ubMinAPcost) { - INT32 sSpot = pSoldier->sGridNo; - INT8 bLevel = pSoldier->pathing.bLevel; + INT32 sSpot = pSoldier->sGridNo; + INT8 bLevel = pSoldier->pathing.bLevel; - INT32 sTargetSpot = NOWHERE; - INT8 bTargetLevel = bLevel; + INT32 sTargetSpot = NOWHERE; + INT8 bTargetLevel = bLevel; - INT32 sClosestThreat; - UINT8 ubClosestThreatID; - - ubClosestThreatID = pSoldier->ubPreviousAttackerID; + INT32 sClosestThreat; + SoldierID ubClosestThreatID = pSoldier->ubPreviousAttackerID; // try to find good spot for smoke - if (ubClosestThreatID != NOBODY && - MercPtrs[ubClosestThreatID] && - !TileIsOutOfBounds(MercPtrs[ubClosestThreatID]->sGridNo)) + if (ubClosestThreatID != NOBODY && !TileIsOutOfBounds(ubClosestThreatID->sGridNo)) { - sClosestThreat = MercPtrs[ubClosestThreatID]->sGridNo; + sClosestThreat = ubClosestThreatID->sGridNo; sTargetSpot = FindTossSpotInDirection(sSpot, bLevel, sClosestThreat, TRUE, TRUE); } @@ -3813,11 +3811,9 @@ void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) { ubClosestThreatID = ClosestSeenThreatID(pSoldier, uiThreatCnt, SEEN_LAST_TURN); - if (ubClosestThreatID != NOBODY && - MercPtrs[ubClosestThreatID] && - !TileIsOutOfBounds(MercPtrs[ubClosestThreatID]->sGridNo)) + if (ubClosestThreatID != NOBODY && !TileIsOutOfBounds(ubClosestThreatID->sGridNo)) { - sClosestThreat = MercPtrs[ubClosestThreatID]->sGridNo; + sClosestThreat = ubClosestThreatID->sGridNo; sTargetSpot = FindTossSpotInDirection(sSpot, bLevel, sClosestThreat, TRUE, TRUE); } @@ -3827,11 +3823,9 @@ void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) { ubClosestThreatID = ClosestKnownThreatID(pSoldier, uiThreatCnt); - if (ubClosestThreatID != NOBODY && - MercPtrs[ubClosestThreatID] && - !TileIsOutOfBounds(MercPtrs[ubClosestThreatID]->sGridNo)) + if (ubClosestThreatID != NOBODY && !TileIsOutOfBounds(ubClosestThreatID->sGridNo)) { - sClosestThreat = MercPtrs[ubClosestThreatID]->sGridNo; + sClosestThreat = ubClosestThreatID->sGridNo; sTargetSpot = FindTossSpotInDirection(sSpot, bLevel, sClosestThreat, TRUE, TRUE); } @@ -3893,13 +3887,13 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) INT8 bLevel = pSoldier->pathing.bLevel; // check all friends - SOLDIERTYPE * pFriend; - INT32 sClosestFriendSpot = NOWHERE; - INT8 bClosestFriendLevel = 0; - UINT8 ubClosestFriendID = NOBODY; + SOLDIERTYPE *pFriend; + INT32 sClosestFriendSpot = NOWHERE; + INT8 bClosestFriendLevel = 0; + SoldierID ubClosestFriendID = NOBODY; INT32 sFriendSpot; - INT8 bFriendLevel; + INT8 bFriendLevel; INT32 sClosestOpponent; @@ -3909,9 +3903,9 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) UINT8 ubDirection; // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++) + for ( SoldierID iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; ++iCounter) { - pFriend = MercPtrs[iCounter]; + pFriend = iCounter; // check that friend is alive and needs cover if (pFriend && @@ -4007,7 +4001,7 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) // check if we can toss grenade at spot, and prepare attack data // grenade should be in hand -void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubOpponentID) +void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, SoldierID ubOpponentID) { UINT16 usInHand, usGrenade; INT32 iTossRange; diff --git a/TacticalAI/CreatureDecideAction.cpp b/TacticalAI/CreatureDecideAction.cpp index ca0f3688..0d655ffe 100644 --- a/TacticalAI/CreatureDecideAction.cpp +++ b/TacticalAI/CreatureDecideAction.cpp @@ -66,11 +66,11 @@ INT8 gbHuntCallPriority[NUM_CREATURE_CALLS] = void CreatureCall( SOLDIERTYPE * pCaller ) { UINT8 ubCallerType=0; - UINT8 ubReceiver; - INT8 bFullPriority; - INT8 bPriority; - SOLDIERTYPE * pReceiver; - UINT16 usDistToCaller; + SoldierID ubReceiver; + INT8 bFullPriority; + INT8 bPriority; + SOLDIERTYPE *pReceiver; + UINT16 usDistToCaller; // communicate call to all creatures on map through ultrasonics gTacticalStatus.Team[pCaller->bTeam].bAwareOfOpposition = TRUE; @@ -121,9 +121,9 @@ void CreatureCall( SOLDIERTYPE * pCaller ) } - for (ubReceiver = gTacticalStatus.Team[ pCaller->bTeam ].bFirstID; ubReceiver <= gTacticalStatus.Team[ pCaller->bTeam ].bLastID; ubReceiver++) + for (ubReceiver = gTacticalStatus.Team[ pCaller->bTeam ].bFirstID; ubReceiver <= gTacticalStatus.Team[ pCaller->bTeam ].bLastID; ++ubReceiver ) { - pReceiver = MercPtrs[ubReceiver]; + pReceiver = ubReceiver; if (pReceiver->bActive && pReceiver->bInSector && (pReceiver->stats.bLife >= OKLIFE) && (pReceiver != pCaller) && (pReceiver->aiData.bAlertStatus < STATUS_BLACK)) { if (pReceiver->ubBodyType != LARVAE_MONSTER && pReceiver->ubBodyType != INFANT_MONSTER && pReceiver->ubBodyType != QUEENMONSTER) @@ -1154,8 +1154,8 @@ INT8 CreatureDecideActionBlack( SOLDIERTYPE * pSoldier ) // if the selected opponent is not a threat (unconscious & !serviced) // (usually, this means all the guys we see our unconscious, but, on // rare occasions, we may not be able to shoot a healthy guy, too) - if ((Menptr[BestShot.ubOpponent].stats.bLife < OKLIFE) && - !Menptr[BestShot.ubOpponent].bService) + if ((BestShot.ubOpponent->stats.bLife < OKLIFE) && + !BestShot.ubOpponent->bService) { // if our attitude is NOT aggressive if (pSoldier->aiData.bAttitude != AGGRESSIVE) diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index 5f6216ea..df27421a 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -43,7 +43,7 @@ extern BOOLEAN gfHiddenInterrupt; extern BOOLEAN gfUseAlternateQueenPosition; extern UINT16 PickSoldierReadyAnimation( SOLDIERTYPE *pSoldier, BOOLEAN fEndReady, BOOLEAN fHipStance ); -extern void IncrementWatchedLoc(UINT8 ubID, INT32 sGridNo, INT8 bLevel); +extern void IncrementWatchedLoc(UINT16 ubID, INT32 sGridNo, INT8 bLevel); void LogDecideInfo(SOLDIERTYPE *pSoldier); void LogKnowledgeInfo(SOLDIERTYPE *pSoldier); @@ -595,10 +595,10 @@ INT8 DecideActionBoxerEnteringRing(SOLDIERTYPE *pSoldier) INT8 DecideActionNamedNPC( SOLDIERTYPE * pSoldier ) { - INT32 sDesiredMercLoc; - UINT8 ubDesiredMercDir; - UINT8 ubDesiredMerc; - INT32 sDesiredMercDist; + INT32 sDesiredMercLoc; + UINT8 ubDesiredMercDir; + SoldierID ubDesiredMerc; + INT32 sDesiredMercDist; #ifdef DEBUGDECISIONS STR16 tempstr; #endif @@ -754,9 +754,9 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) { // WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA. SOLDIERTYPE *pTeamSoldier; - for (INT8 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) + for ( SoldierID bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop ) { - pTeamSoldier=MercPtrs[bLoop]; + pTeamSoldier = bLoop; if (pTeamSoldier->flags.uiStatusFlags & SOLDIER_PCUNDERAICONTROL) pTeamSoldier->flags.uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL); @@ -933,7 +933,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // Flugente: if we see one of our buddies in handcuffs, its a clear sign of enemy activity! if ( gGameExternalOptions.fAllowPrisonerSystem && pSoldier->bTeam == ENEMY_TEAM && !gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition ) { - UINT8 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); + SoldierID ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); if ( ubPerson != NOBODY ) { @@ -945,7 +945,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // if we are a doctor with medical gear, we might be able to help a wounded ally if ( pSoldier->CanMedicAI() ) { - UINT8 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); + SoldierID ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); // are we ourselves the patient? if ( ubPerson == pSoldier->ubID ) @@ -962,10 +962,10 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) } else if ( ubPerson != NOBODY ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) < 2 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) < 2 ) { // see if we are facing this person - UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo); + UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, ubPerson->sGridNo); // if not already facing in that direction, if ( pSoldier->ubDirection != ubDesiredMercDir ) @@ -987,7 +987,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) } else { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -999,13 +999,13 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // if we are not a medic, but are wounded, seek a medic else if ( pSoldier->iHealableInjury >= gGameExternalOptions.sEnemyMedicsWoundMinAmount ) { - UINT8 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); + SoldierID ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); if ( ubPerson != NOBODY ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) > 1 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) > 1 ) { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -1019,14 +1019,14 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) if ( pSoldier->usSoldierFlagMask & SOLDIER_BODYGUARD ) { // is VIP still alive? - UINT16 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 100, pSoldier->bTeam, SOLDIER_VIP, FALSE ); + SoldierID ubPerson = GetClosestFlaggedSoldierID( pSoldier, 100, pSoldier->bTeam, SOLDIER_VIP, FALSE ); if ( ubPerson != NOBODY ) { // we want to stay close to him, but still be able to function properly... stay withing a 7-tile radius - if ( SpacesAway( pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo ) > 7 ) + if ( SpacesAway( pSoldier->sGridNo, ubPerson->sGridNo ) > 7 ) { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards( pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0 ); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards( pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0 ); if ( !TileIsOutOfBounds( pSoldier->aiData.usActionData ) ) { @@ -1655,18 +1655,18 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) // Flugente: if we see one of our buddies captured, it is a clear sign of enemy activity! if ( gGameExternalOptions.fAllowPrisonerSystem && pSoldier->bTeam == ENEMY_TEAM ) { - UINT8 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); + SoldierID ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); if ( ubPerson != NOBODY ) { // if we are close, we can release this guy // possible only if not handcuffed (binders can be opened, handcuffs not) - if ( !HasItemFlag( (&(MercPtrs[ubPerson]->inv[HANDPOS]))->usItem, HANDCUFFS ) ) + if ( !HasItemFlag( (&(ubPerson->inv[HANDPOS]))->usItem, HANDCUFFS ) ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) < 2 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) < 2 ) { // see if we are facing this person - UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo); + UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, ubPerson->sGridNo); // if not already facing in that direction, if ( pSoldier->ubDirection != ubDesiredMercDir ) @@ -1680,7 +1680,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) } else { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -1699,7 +1699,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) // if we are a doctor with medical gear, we might be able to help a wounded ally if ( pSoldier->CanMedicAI() ) { - UINT8 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); + SoldierID ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); // are we ourselves the patient? if ( ubPerson == pSoldier->ubID ) @@ -1716,10 +1716,10 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) } else if ( ubPerson != NOBODY ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) < 2 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) < 2 ) { // see if we are facing this person - UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo); + UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, ubPerson->sGridNo); // if not already facing in that direction, if ( pSoldier->ubDirection != ubDesiredMercDir ) @@ -1741,7 +1741,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) } else { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -1753,13 +1753,13 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) // if we are not a medic, but are wounded, seek a medic else if ( pSoldier->iHealableInjury >= gGameExternalOptions.sEnemyMedicsWoundMinAmount ) { - UINT8 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); + SoldierID ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); if ( ubPerson != NOBODY ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) > 1 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) > 1 ) { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -1773,14 +1773,14 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) if ( pSoldier->usSoldierFlagMask & SOLDIER_BODYGUARD ) { // is VIP still alive? - UINT16 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 100, pSoldier->bTeam, SOLDIER_VIP, FALSE ); + SoldierID ubPerson = GetClosestFlaggedSoldierID( pSoldier, 100, pSoldier->bTeam, SOLDIER_VIP, FALSE ); if ( ubPerson != NOBODY ) { // we want to stay close to him, but still be able to function properly... stay withing a 7-tile radius - if ( SpacesAway( pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo ) > 7 ) + if ( SpacesAway( pSoldier->sGridNo, ubPerson->sGridNo ) > 7 ) { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards( pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0 ); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards( pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0 ); if ( !TileIsOutOfBounds( pSoldier->aiData.usActionData ) ) { @@ -2886,10 +2886,10 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) DebugAI(AI_MSG_INFO, pSoldier, String("prepare throw at spot %d level %d aimtime %d", BestThrow.sTarget, BestThrow.bTargetLevel, BestThrow.ubAimTime)); // start retreating for several turns - if (BestThrow.ubOpponent != NOBODY && !MercPtrs[BestThrow.ubOpponent]->IsFlanking()) + if (BestThrow.ubOpponent != NOBODY && !BestThrow.ubOpponent->IsFlanking()) { DebugAI(AI_MSG_INFO, pSoldier, String("start retreat counter for %d", BestThrow.ubOpponent)); - MercPtrs[BestThrow.ubOpponent]->RetreatCounterStart(2); + BestThrow.ubOpponent->RetreatCounterStart(2); } // if necessary, swap the usItem from holster into the hand position @@ -3031,8 +3031,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // check valid target !TileIsOutOfBounds(BestShot.sTarget) && BestShot.ubOpponent != NOBODY && - MercPtrs[BestShot.ubOpponent] && - Chance(100 - MercPtrs[BestShot.ubOpponent]->ShockLevelPercent() / 2) && + Chance(100 - BestShot.ubOpponent->ShockLevelPercent() / 2) && // check weapon/ammo requirements IsGunAutofireCapable(&pSoldier->inv[BestShot.bWeaponIn]) && GetMagSize(&pSoldier->inv[BestShot.bWeaponIn]) >= gGameExternalOptions.ubAISuppressionMinimumMagSize && @@ -3049,16 +3048,16 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) !fCanBeSeen && NightLight() && CountFriendsFlankSameSpot(pSoldier, sClosestOpponent) && Chance(50) || ARMED_VEHICLE(pSoldier) || // tanks don't need cover ENEMYROBOT(pSoldier) || // robots don't try to be in cover - pSoldier->aiData.bUnderFire && (pSoldier->ubPreviousAttackerID == BestShot.ubOpponent || pSoldier->ubNextToPreviousAttackerID == BestShot.ubOpponent || MercPtrs[BestShot.ubOpponent]->sLastTarget == pSoldier->sGridNo) || // return fire + pSoldier->aiData.bUnderFire && (pSoldier->ubPreviousAttackerID == BestShot.ubOpponent || pSoldier->ubNextToPreviousAttackerID == BestShot.ubOpponent || BestShot.ubOpponent->sLastTarget == pSoldier->sGridNo) || // return fire Chance((BestShot.ubChanceToReallyHit + 100) / 2) || // 50% chance to fire without cover - //SoldierToSoldierLineOfSightTest(pSoldier, MercPtrs[BestShot.ubOpponent], TRUE, CALC_FROM_ALL_DIRS)) && // can see target after turning - LOS_Raised(pSoldier, MercPtrs[BestShot.ubOpponent], CALC_FROM_ALL_DIRS)) && // can see target after turning + //SoldierToSoldierLineOfSightTest(pSoldier, BestShot.ubOpponent, TRUE, CALC_FROM_ALL_DIRS)) && // can see target after turning + LOS_Raised(pSoldier, BestShot.ubOpponent, CALC_FROM_ALL_DIRS)) && // can see target after turning // reduce chance to shoot if target is beyond weapon range (AICheckIsMachinegunner(pSoldier) || ARMED_VEHICLE(pSoldier) || ENEMYROBOT(pSoldier) || AnyCoverAtSpot(pSoldier, pSoldier->sGridNo) || - pSoldier->aiData.bUnderFire && (pSoldier->ubPreviousAttackerID == BestShot.ubOpponent || pSoldier->ubNextToPreviousAttackerID == BestShot.ubOpponent || MercPtrs[BestShot.ubOpponent]->sLastTarget == pSoldier->sGridNo) || // return fire + pSoldier->aiData.bUnderFire && (pSoldier->ubPreviousAttackerID == BestShot.ubOpponent || pSoldier->ubNextToPreviousAttackerID == BestShot.ubOpponent || BestShot.ubOpponent->sLastTarget == pSoldier->sGridNo) || // return fire Chance(100 * (GunRange(&pSoldier->inv[BestShot.bWeaponIn], pSoldier) / CELL_X_SIZE) / PythSpacesAway(pSoldier->sGridNo, BestShot.sTarget))) && // check that we have spare ammo (fExtraClip || pSoldier->inv[BestShot.bWeaponIn][0]->data.gun.ubGunShotsLeft >= gGameExternalOptions.ubAISuppressionMinimumMagSize)) @@ -3152,7 +3151,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) DebugAI(AI_MSG_INFO, pSoldier, String("Change stance before shooting")); // show "suppression fire" message only if opponent cannot be seen after turning - if (!LOS_Raised(pSoldier, MercPtrs[BestShot.ubOpponent], CALC_FROM_ALL_DIRS)) + if (!LOS_Raised(pSoldier, BestShot.ubOpponent, CALC_FROM_ALL_DIRS)) ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_SUPPRESSIONFIRE]); return(AI_ACTION_CHANGE_STANCE); @@ -3162,7 +3161,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) pSoldier->aiData.usActionData = BestShot.sTarget; // show "suppression fire" message only if opponent cannot be seen after turning - if (!LOS_Raised(pSoldier, MercPtrs[BestShot.ubOpponent], CALC_FROM_ALL_DIRS)) + if (!LOS_Raised(pSoldier, BestShot.ubOpponent, CALC_FROM_ALL_DIRS)) ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_SUPPRESSIONFIRE]); return(AI_ACTION_FIRE_GUN); @@ -3284,18 +3283,18 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // Flugente: if we see one of our buddies captured, it is a clear sign of enemy activity! if ( gGameExternalOptions.fAllowPrisonerSystem && pSoldier->bTeam == ENEMY_TEAM ) { - UINT8 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); + SoldierID ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); if ( ubPerson != NOBODY ) { // if we are close, we can release this guy // possible only if not handcuffed (binders can be opened, handcuffs not) - if ( !HasItemFlag( (&(MercPtrs[ubPerson]->inv[HANDPOS]))->usItem, HANDCUFFS ) ) + if ( !HasItemFlag( (&(ubPerson->inv[HANDPOS]))->usItem, HANDCUFFS ) ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) < 2 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) < 2 ) { // see if we are facing this person - UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo); + UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, ubPerson->sGridNo); // if not already facing in that direction, if ( pSoldier->ubDirection != ubDesiredMercDir ) @@ -3309,7 +3308,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) } else { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -3323,7 +3322,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // if we are a doctor with medical gear, we might be able to help a wounded ally if ( pSoldier->CanMedicAI() ) { - UINT8 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); + SoldierID ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); // are we ourselves the patient? if ( ubPerson == pSoldier->ubID ) @@ -3340,10 +3339,10 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) } else if ( ubPerson != NOBODY ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) < 2 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) < 2 ) { // see if we are facing this person - UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo); + UINT8 ubDesiredMercDir = GetDirectionFromCenterCellXYGridNo(pSoldier->sGridNo, ubPerson->sGridNo); // if not already facing in that direction, if ( pSoldier->ubDirection != ubDesiredMercDir ) @@ -3365,7 +3364,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) } else { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -3377,13 +3376,13 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // if we are not a medic, but are wounded, seek a medic else if ( pSoldier->iHealableInjury >= gGameExternalOptions.sEnemyMedicsWoundMinAmount ) { - UINT8 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); + SoldierID ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); if ( ubPerson != NOBODY ) { - if ( PythSpacesAway(pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo) > 1 ) + if ( PythSpacesAway(pSoldier->sGridNo, ubPerson->sGridNo) > 1 ) { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards(pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0); if (!TileIsOutOfBounds(pSoldier->aiData.usActionData)) { @@ -3416,14 +3415,14 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) if ( pSoldier->usSoldierFlagMask & SOLDIER_BODYGUARD ) { // is VIP still alive? - UINT16 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 100, pSoldier->bTeam, SOLDIER_VIP, FALSE ); + SoldierID ubPerson = GetClosestFlaggedSoldierID( pSoldier, 100, pSoldier->bTeam, SOLDIER_VIP, FALSE ); if ( ubPerson != NOBODY ) { // we want to stay close to him, but still be able to function properly... stay withing a 7-tile radius - if ( SpacesAway( pSoldier->sGridNo, MercPtrs[ubPerson]->sGridNo ) > 7 ) + if ( SpacesAway( pSoldier->sGridNo, ubPerson->sGridNo ) > 7 ) { - pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards( pSoldier, MercPtrs[ubPerson]->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0 ); + pSoldier->aiData.usActionData = InternalGoAsFarAsPossibleTowards( pSoldier, ubPerson->sGridNo, 20, AI_ACTION_SEEK_FRIEND, 0 ); if ( !TileIsOutOfBounds( pSoldier->aiData.usActionData ) ) { @@ -5770,10 +5769,9 @@ INT16 ubMinAPCost; (pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) && SpacesAway(pSoldier->sGridNo, BestStab.sTarget) > 2 && BestStab.ubOpponent != NOBODY && - MercPtrs[BestStab.ubOpponent] && - AIDirection(pSoldier->sGridNo, MercPtrs[BestStab.ubOpponent]->sGridNo) != MercPtrs[BestStab.ubOpponent]->ubDirection && - AIDirection(pSoldier->sGridNo, MercPtrs[BestStab.ubOpponent]->sGridNo) != gOneCDirection[MercPtrs[BestStab.ubOpponent]->ubDirection] && - AIDirection(pSoldier->sGridNo, MercPtrs[BestStab.ubOpponent]->sGridNo) != gOneCCDirection[MercPtrs[BestStab.ubOpponent]->ubDirection] && + AIDirection(pSoldier->sGridNo, BestStab.ubOpponent->sGridNo) != BestStab.ubOpponent->ubDirection && + AIDirection(pSoldier->sGridNo, BestStab.ubOpponent->sGridNo) != gOneCDirection[BestStab.ubOpponent->ubDirection] && + AIDirection(pSoldier->sGridNo, BestStab.ubOpponent->sGridNo) != gOneCCDirection[BestStab.ubOpponent->ubDirection] && pSoldier->bInitialActionPoints >= 2 * MinAPsToAttack(pSoldier, pSoldier->sLastTarget, FALSE, 0, 0) + APBPConstants[AP_MOVEMENT_FLAT] + APBPConstants[AP_MODIFIER_WALK] && pSoldier->bActionPoints < BestStab.ubAPCost + MinAPsToAttack(pSoldier, pSoldier->sLastTarget, FALSE, 0, 0)) { @@ -5787,10 +5785,9 @@ INT16 ubMinAPCost; (pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) && SpacesAway(pSoldier->sGridNo, BestStab.sTarget) > 1 && BestStab.ubOpponent != NOBODY && - MercPtrs[BestStab.ubOpponent] && - gAnimControl[MercPtrs[BestStab.ubOpponent]->usAnimState].ubEndHeight == ANIM_STAND && - MercPtrs[BestStab.ubOpponent]->bActionPoints > 0 && - Chance(EffectiveAgility(MercPtrs[BestStab.ubOpponent], FALSE) * (100 + MercPtrs[BestStab.ubOpponent]->bBreath) * EffectiveWisdom(pSoldier) / (100 * 200))) + gAnimControl[BestStab.ubOpponent->usAnimState].ubEndHeight == ANIM_STAND && + BestStab.ubOpponent->bActionPoints > 0 && + Chance(EffectiveAgility(BestStab.ubOpponent, FALSE) * (100 + BestStab.ubOpponent->bBreath) * EffectiveWisdom(pSoldier) / (100 * 200))) { // find closest spot around opponent, avoid front direction UINT8 ubMovementCost; @@ -5810,7 +5807,7 @@ INT16 ubMinAPCost; if (ubMovementCost < TRAVELCOST_BLOCKED && NewOKDestination(pSoldier, sTempGridNo, FALSE, pSoldier->pathing.bLevel) && - AIDirection(BestStab.sTarget, sTempGridNo) != MercPtrs[BestStab.ubOpponent]->ubDirection) + AIDirection(BestStab.sTarget, sTempGridNo) != BestStab.ubOpponent->ubDirection) { sPathCost = PlotPath(pSoldier, sTempGridNo, FALSE, FALSE, FALSE, DetermineMovementMode(pSoldier, AI_ACTION_GET_CLOSER), pSoldier->bStealthMode, pSoldier->bReverse, 0); if (TileIsOutOfBounds(sBestSpot) || sPathCost < sBestPathCost) @@ -5848,7 +5845,7 @@ INT16 ubMinAPCost; // SANDRO - added a chance to try to steal merc's gun from hands else { - if (AIDetermineStealingWeaponAttempt( pSoldier, MercPtrs[BestStab.ubOpponent] ) == TRUE) + if (AIDetermineStealingWeaponAttempt( pSoldier, BestStab.ubOpponent ) == TRUE) { ubBestAttackAction = AI_ACTION_STEAL_MOVE; DebugAI(AI_MSG_INFO, pSoldier, String("best action = move to steal weapon, iAttackValue = %d", BestStab.iAttackValue)); @@ -6838,13 +6835,11 @@ L_NEWAIM: { DebugAI(AI_MSG_TOPIC, pSoldier, String("[Make boxer close if possible]")); - UINT8 ubOpponentID; + SoldierID ubOpponentID; sClosestOpponent = ClosestKnownOpponent(pSoldier, NULL, NULL, &ubOpponentID); DebugAI(AI_MSG_INFO, pSoldier, String("boxer: found closest opponent [%d] at %d", ubOpponentID, sClosestOpponent)); - if (!TileIsOutOfBounds(sClosestOpponent) && - ubOpponentID != NOBODY && - MercPtrs[ubOpponentID]) + if ( !TileIsOutOfBounds(sClosestOpponent) && ubOpponentID != NOBODY ) { if (pSoldier->bActionPoints > 0) { @@ -6881,7 +6876,7 @@ L_NEWAIM: if (!TileIsOutOfBounds(pSoldier->aiData.usActionData) && (pSoldier->bBreath < OKBREATH || pSoldier->bBreath < pSoldier->bBreathMax && - pSoldier->bBreath < MercPtrs[ubOpponentID]->bBreath && + pSoldier->bBreath < ubOpponentID->bBreath && Chance((100 - pSoldier->bBreath) * (100 - pSoldier->bBreath) / (2 * 100 * 100)))) { DebugAI(AI_MSG_INFO, pSoldier, String("boxer: restore breath")); @@ -6905,7 +6900,7 @@ L_NEWAIM: } else if (pSoldier->bBreath < OKBREATH || pSoldier->bBreath < pSoldier->bBreathMax && - (pSoldier->bBreath < MercPtrs[ubOpponentID]->bBreath || !pSoldier->aiData.bLastAttackHit && pSoldier->TakenLargeHit())) + (pSoldier->bBreath < ubOpponentID->bBreath || !pSoldier->aiData.bLastAttackHit && pSoldier->TakenLargeHit())) { // maybe move away from opponent UINT8 ubOpponentDir = AIDirection(pSoldier->sGridNo, sClosestOpponent); @@ -8585,9 +8580,9 @@ INT8 ArmedVehicleDecideActionRed( SOLDIERTYPE *pSoldier) //&& Menptr[BestShot.ubOpponent].pathing.bLevel == 0 && pSoldier->aiData.bOrders != SNIPER && BestShot.ubFriendlyFireChance < 5 && - !MercPtrs[BestShot.ubOpponent]->IsCowering() && + !BestShot.ubOpponent->IsCowering() && !AICheckIsFlanking( pSoldier ) && - LocationToLocationLineOfSightTest( pSoldier->sGridNo, pSoldier->pathing.bLevel, MercPtrs[BestShot.ubOpponent]->sGridNo, MercPtrs[BestShot.ubOpponent]->pathing.bLevel, TRUE, NO_DISTANCE_LIMIT ) && + LocationToLocationLineOfSightTest( pSoldier->sGridNo, pSoldier->pathing.bLevel, BestShot.ubOpponent->sGridNo, BestShot.ubOpponent->pathing.bLevel, TRUE, NO_DISTANCE_LIMIT ) && //Weapon[pSoldier->inv[BestShot.bWeaponIn].usItem].ubWeaponType == GUN_LMG ) && //Weapon[usInHand].ubWeaponClass == MGCLASS (fExtraClip || pSoldier->inv[BestShot.bWeaponIn][0]->data.gun.ubGunShotsLeft > gGameExternalOptions.ubAISuppressionMinimumMagSize) ) { diff --git a/TacticalAI/FindLocations.cpp b/TacticalAI/FindLocations.cpp index ac2634fc..6975a5bc 100644 --- a/TacticalAI/FindLocations.cpp +++ b/TacticalAI/FindLocations.cpp @@ -119,7 +119,7 @@ void AICenterXY( INT32 sGridNo, FLOAT * pdX, FLOAT * pdY ) *pdY = (FLOAT) (sYPos * CELL_Y_SIZE + CELL_Y_SIZE / 2); } -INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // When considering a gridno for cover, we want to take into account cover if we // lie down, so we return the LOWEST chance to get through for that location. @@ -158,7 +158,7 @@ INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOpp return( bWorstCTGT ); } -INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // When considering a gridno for cover, we want to take into account cover if we // lie down, so we return the LOWEST chance to get through for that location. @@ -192,7 +192,7 @@ INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sO } -INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // NOTE: CTGT stands for "ChanceToGetThrough..." @@ -591,7 +591,8 @@ INT32 CalcCoverValue(SOLDIERTYPE *pMe, INT32 sMyGridNo, INT32 iMyThreat, INT32 i UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ) { - UINT8 ubLoop, ubCount, ubWhoIsThere; + UINT8 ubLoop, ubCount; + SoldierID ubWhoIsThere; INT32 sTempGridNo; ubCount = 0; @@ -602,7 +603,7 @@ UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ) if ( sTempGridNo != sGridNo ) { ubWhoIsThere = WhoIsThere2( sTempGridNo, pSoldier->pathing.bLevel ); - if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && MercPtrs[ ubWhoIsThere ]->bTeam == pSoldier->bTeam ) + if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && ubWhoIsThere->bTeam == pSoldier->bTeam ) { ubCount++; } @@ -1987,7 +1988,7 @@ INT8 SearchForItems( SOLDIERTYPE * pSoldier, INT8 bReason, UINT16 usItem ) if ( pItem->usItemClass == IC_GUN && (*pObj)[0]->data.objectStatus >= MINIMUM_REQUIRED_STATUS ) { // maybe this gun has ammo (adjust for whether it is better than ours!) - if ( (*pObj)[0]->data.gun.bGunAmmoStatus < 0 || (*pObj)[0]->data.gun.ubGunShotsLeft == 0 || (ItemHasFingerPrintID(pObj->usItem) && (*pObj)[0]->data.ubImprintID != NOBODY && (*pObj)[0]->data.ubImprintID != pSoldier->ubID) ) + if ( (*pObj)[0]->data.gun.bGunAmmoStatus < 0 || (*pObj)[0]->data.gun.ubGunShotsLeft == 0 || (ItemHasFingerPrintID(pObj->usItem) && (*pObj)[0]->data.ubImprintID != NO_PROFILE && (*pObj)[0]->data.ubImprintID != pSoldier->ubProfile) ) { iTempValue = 0; } @@ -2028,7 +2029,7 @@ INT8 SearchForItems( SOLDIERTYPE * pSoldier, INT8 bReason, UINT16 usItem ) if (pItem->usItemClass & IC_WEAPON && (*pObj)[0]->data.objectStatus >= MINIMUM_REQUIRED_STATUS ) { DebugAI(AI_MSG_INFO, pSoldier, String("weapon has good status")); - if ( (pItem->usItemClass & IC_GUN) && ((*pObj)[0]->data.gun.bGunAmmoStatus < 0 || (*pObj)[0]->data.gun.ubGunShotsLeft == 0 || (ItemHasFingerPrintID(pObj->usItem) && (*pObj)[0]->data.ubImprintID != NOBODY && (*pObj)[0]->data.ubImprintID != pSoldier->ubID) ) ) + if ( (pItem->usItemClass & IC_GUN) && ((*pObj)[0]->data.gun.bGunAmmoStatus < 0 || (*pObj)[0]->data.gun.ubGunShotsLeft == 0 || (ItemHasFingerPrintID(pObj->usItem) && (*pObj)[0]->data.ubImprintID != NO_PROFILE && (*pObj)[0]->data.ubImprintID != pSoldier->ubProfile) ) ) { // jammed or out of ammo, skip it! DebugAI(AI_MSG_INFO, pSoldier, String("jammed or out of ammo, skip it!")); @@ -2079,7 +2080,7 @@ INT8 SearchForItems( SOLDIERTYPE * pSoldier, INT8 bReason, UINT16 usItem ) if ( pItem->usItemClass & IC_WEAPON && (*pObj)[0]->data.objectStatus >= MINIMUM_REQUIRED_STATUS ) { DebugAI(AI_MSG_INFO, pSoldier, String("gun has good status")); - if ( (pItem->usItemClass & IC_GUN) && ((*pObj)[0]->data.gun.bGunAmmoStatus < 0 || (*pObj)[0]->data.gun.ubGunShotsLeft == 0 || (ItemHasFingerPrintID(pObj->usItem) && (*pObj)[0]->data.ubImprintID != NOBODY && (*pObj)[0]->data.ubImprintID != pSoldier->ubID) ) ) + if ( (pItem->usItemClass & IC_GUN) && ((*pObj)[0]->data.gun.bGunAmmoStatus < 0 || (*pObj)[0]->data.gun.ubGunShotsLeft == 0 || (ItemHasFingerPrintID(pObj->usItem) && (*pObj)[0]->data.ubImprintID != NO_PROFILE && (*pObj)[0]->data.ubImprintID != pSoldier->ubProfile) ) ) { // jammed or out of ammo, skip it! DebugAI(AI_MSG_INFO, pSoldier, String("jammed or out of ammo, skip it!")); diff --git a/TacticalAI/Knowledge.cpp b/TacticalAI/Knowledge.cpp index 12077332..58b95f25 100644 --- a/TacticalAI/Knowledge.cpp +++ b/TacticalAI/Knowledge.cpp @@ -21,7 +21,6 @@ void CallAvailableEnemiesTo( INT32 sGridNo ) void CallAvailableTeamEnemiesTo( INT32 sGridNo, INT8 bTeam ) { - INT32 iLoop2; SOLDIERTYPE * pSoldier; // All enemy teams become aware of a very important "noise" coming from here! @@ -36,9 +35,10 @@ void CallAvailableTeamEnemiesTo( INT32 sGridNo, INT8 bTeam ) gubPublicNoiseVolume[bTeam] = MAX_MISC_NOISE_DURATION; // new situation for everyone; - iLoop2 = gTacticalStatus.Team[ bTeam ].bFirstID; - for ( pSoldier = MercPtrs[iLoop2]; iLoop2 <= gTacticalStatus.Team[ bTeam ].bLastID; iLoop2++, pSoldier++ ) + SoldierID iLoop2 = gTacticalStatus.Team[ bTeam ].bFirstID; + for ( ; iLoop2 <= gTacticalStatus.Team[ bTeam ].bLastID; ++iLoop2 ) { + pSoldier = iLoop2; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE) { SetNewSituation( pSoldier ); @@ -54,7 +54,6 @@ void CallAvailableKingpinMenTo( INT32 sGridNo ) // like call all enemies, but only affects civgroup KINGPIN guys with // NO PROFILE - INT32 iLoop2; SOLDIERTYPE * pSoldier; // All enemy teams become aware of a very important "noise" coming from here! @@ -67,9 +66,10 @@ void CallAvailableKingpinMenTo( INT32 sGridNo ) // new situation for everyone... - iLoop2 = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[iLoop2]; iLoop2 <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; iLoop2++, pSoldier++ ) + SoldierID iLoop2 = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + for ( ; iLoop2 <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++iLoop2 ) { + pSoldier = iLoop2; if (pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->ubCivilianGroup == KINGPIN_CIV_GROUP && pSoldier->ubProfile == NO_PROFILE) { SetNewSituation( pSoldier ); @@ -200,7 +200,7 @@ INT32 MostImportantNoiseHeard( SOLDIERTYPE *pSoldier, INT32 *piRetValue, BOOLEAN if (*pbPublOL < NOT_HEARD_OR_SEEN) { // calculate how far this noise was, and its relative "importance" - iDistAway = SpacesAway(pSoldier->sGridNo,gsPublicLastKnownOppLoc[pSoldier->bTeam][pTemp->ubID]); + iDistAway = SpacesAway(pSoldier->sGridNo, gsPublicLastKnownOppLoc[pSoldier->bTeam][pTemp->ubID]); iNoiseValue = (*pbPublOL) * iDistAway; // always a negative number! if (iNoiseValue > iBestValue) diff --git a/TacticalAI/Medical.cpp b/TacticalAI/Medical.cpp index d54bc0c7..a86ae6be 100644 --- a/TacticalAI/Medical.cpp +++ b/TacticalAI/Medical.cpp @@ -40,9 +40,9 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) { // checks for existance of location to climb up to building, not occupied by a medic BUILDING * pBuilding; - UINT8 ubNumClimbSpots; + UINT8 ubNumClimbSpots; UINT8 ubLoop; - UINT8 ubWhoIsThere; + SoldierID ubWhoIsThere; pBuilding = FindBuilding( sDesiredGridNo ); if (!pBuilding) @@ -55,12 +55,12 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) for ( ubLoop = 0; ubLoop < ubNumClimbSpots; ubLoop++ ) { ubWhoIsThere = WhoIsThere2( pBuilding->sUpClimbSpots[ ubLoop ], 1 ); - if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( MercPtrs[ ubWhoIsThere ] ) ) + if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( ubWhoIsThere ) ) { continue; } ubWhoIsThere = WhoIsThere2( pBuilding->sDownClimbSpots[ ubLoop ], 0 ); - if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( MercPtrs[ ubWhoIsThere ] ) ) + if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( ubWhoIsThere ) ) { continue; } @@ -72,8 +72,7 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient ) { - UINT8 cnt; - SOLDIERTYPE * pSoldier; + SOLDIERTYPE * pSoldier; if ( CanCharacterAutoBandageTeammate( pPatient ) ) { @@ -90,9 +89,10 @@ BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient ) else { // run though the list of chars on team - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // can this character help out? if ( CanCharacterAutoBandageTeammate( pSoldier ) == TRUE ) { @@ -119,17 +119,16 @@ BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient ) BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck ) { // returns false if we should stop being in auto-bandage mode - UINT8 cnt; - UINT8 ubMedics = 0, ubPatients = 0; + UINT16 ubMedics = 0, ubPatients = 0; SOLDIERTYPE * pSoldier; - static UINT8 ubIDForFullCheck = NOBODY; + static SoldierID ubIDForFullCheck = NOBODY; // run though the list of chars on team - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt) { // can this character help out? - if( CanCharacterAutoBandageTeammate( pSoldier ) == TRUE ) + if( CanCharacterAutoBandageTeammate( cnt ) == TRUE ) { // yep, up the number of medics in sector ubMedics++; @@ -143,8 +142,9 @@ BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck ) } cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pSoldier = cnt; // can this character be helped out by a teammate? if ( CanCharacterBeAutoBandagedByTeammate( pSoldier ) == TRUE ) { @@ -227,25 +227,26 @@ BOOLEAN CanCharacterBeAutoBandagedByTeammate( SOLDIERTYPE *pSoldier ) INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb ) { - UINT8 cnt, cnt2; - INT32 bBestPriority = 0, sBestAdjGridNo = NOWHERE; - INT32 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE; - INT16 sShortestPath = 1000, sPathCost, sOtherMedicPathCost; - SOLDIERTYPE * pPatient; - SOLDIERTYPE * pBestPatient = NULL; - SOLDIERTYPE * pOtherMedic; - INT8 bPatientPriority; - UINT8 ubDirection; + UINT8 cnt2; + INT32 bBestPriority = 0, sBestAdjGridNo = NOWHERE; + INT32 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE; + INT16 sShortestPath = 1000, sPathCost, sOtherMedicPathCost; + SOLDIERTYPE * pPatient; + SOLDIERTYPE * pBestPatient = NULL; + SOLDIERTYPE * pOtherMedic; + INT8 bPatientPriority; + UINT8 ubDirection; INT32 sAdjustedGridNo, sAdjacentGridNo, sOtherAdjacentGridNo; - INT32 sClimbGridNo, sBestClimbGridNo = NOWHERE, sShortestClimbPath = 1000; - BOOLEAN fClimbingNecessary; + INT32 sClimbGridNo, sBestClimbGridNo = NOWHERE, sShortestClimbPath = 1000; + BOOLEAN fClimbingNecessary; gubGlobalPathFlags = PATH_THROUGH_PEOPLE; // search for someone who needs aid - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pPatient = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++,pPatient++) + SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) { + pPatient = cnt; if ( !(pPatient->bActive) || !(pPatient->bInSector) ) { continue; // NEXT!!! @@ -310,7 +311,7 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb ) { // only switch to this patient if our distance is closer than // the other medic's - pOtherMedic = MercPtrs[ pPatient->ubAutoBandagingMedic ]; + pOtherMedic = pPatient->ubAutoBandagingMedic; sOtherAdjacentGridNo = FindAdjacentGridEx( pOtherMedic, sPatientGridNo, &ubDirection, &sAdjustedGridNo, FALSE, FALSE ); if (sOtherAdjacentGridNo != -1) { @@ -378,8 +379,8 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb ) if (pBestPatient->ubAutoBandagingMedic != NOBODY) { // cancel that medic - DebugAI(AI_MSG_INFO, MercPtrs[pBestPatient->ubAutoBandagingMedic], String("CancelAIAction: medic: find patient")); - CancelAIAction( MercPtrs[ pBestPatient->ubAutoBandagingMedic ], TRUE ); + DebugAI(AI_MSG_INFO, pBestPatient->ubAutoBandagingMedic, String("CancelAIAction: medic: find patient")); + CancelAIAction( pBestPatient->ubAutoBandagingMedic, TRUE ); } pBestPatient->ubAutoBandagingMedic = pSoldier->ubID; *pfDoClimb = FALSE; @@ -474,13 +475,13 @@ INT8 DecideAutoBandage( SOLDIERTYPE * pSoldier ) BOOLEAN DoctorIsPresent( SOLDIERTYPE * pPatient, BOOLEAN fOnDoctorAssignmentCheck ) { SOLDIERTYPE * pMedic = NULL; - UINT8 cnt; INT8 bSlot; BOOLEAN fDoctorHasBeenFound = FALSE; - cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - for ( pMedic = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; cnt++,pMedic++) + SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt ) { + pMedic = cnt; if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) ) { // is nowhere around! diff --git a/TacticalAI/Movement.cpp b/TacticalAI/Movement.cpp index a1137120..c0cda5ee 100644 --- a/TacticalAI/Movement.cpp +++ b/TacticalAI/Movement.cpp @@ -886,12 +886,14 @@ void HaltMoveForSoldierOutOfPoints(SOLDIERTYPE *pSoldier) } } -void SetCivilianDestination(UINT8 ubWho, INT32 sGridNo) +void SetCivilianDestination(SoldierID ubWho, INT32 sGridNo) { - SOLDIERTYPE *pSoldier; + if ( ubWho == NOBODY ) + { + return; + } - - pSoldier = MercPtrs[ubWho]; + SOLDIERTYPE *pSoldier = ubWho; /* // if we control the civilian @@ -901,12 +903,12 @@ void SetCivilianDestination(UINT8 ubWho, INT32 sGridNo) // if the destination is different from what he has now if (pSoldier->aiData.usActionData != sGridNo) { - // store his new destination - pSoldier->aiData.usActionData = sGridNo; + // store his new destination + pSoldier->aiData.usActionData = sGridNo; - // and cancel any movement in progress that he was still engaged in - pSoldier->aiData.bAction = AI_ACTION_NONE; - pSoldier->aiData.bActionInProgress = FALSE; + // and cancel any movement in progress that he was still engaged in + pSoldier->aiData.bAction = AI_ACTION_NONE; + pSoldier->aiData.bActionInProgress = FALSE; } // only set the underEscort flag once you give him a destination diff --git a/TacticalAI/NPC.cpp b/TacticalAI/NPC.cpp index eab9cb7a..91cc5951 100644 --- a/TacticalAI/NPC.cpp +++ b/TacticalAI/NPC.cpp @@ -904,12 +904,12 @@ UINT8 CalcDesireToTalk( UINT8 ubNPC, UINT8 ubMerc, INT8 bApproach ) // SANDRO - bonus for communication with people for assertive people if ( gGameOptions.fNewTraitSystem && bApproach != APPROACH_THREATEN) { - INT16 id = GetSoldierIDFromMercID( ubMerc ); - if ( id > -1 ) + SoldierID id = GetSoldierIDFromMercID( ubMerc ); + if ( id != NOBODY ) { - if ( DoesMercHavePersonality( MercPtrs[id], CHAR_TRAIT_ASSERTIVE ) ) + if ( DoesMercHavePersonality( id, CHAR_TRAIT_ASSERTIVE ) ) iPersonalVal += 50; - else if ( DoesMercHavePersonality( MercPtrs[id], CHAR_TRAIT_MALICIOUS ) ) + else if ( DoesMercHavePersonality( id, CHAR_TRAIT_MALICIOUS ) ) iPersonalVal -= 50; } } @@ -2557,11 +2557,13 @@ void Converse( UINT8 ubNPC, UINT8 ubMerc, INT8 bApproach, UINT32 uiApproachData } } -INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc ) +INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, SoldierID * pubDesiredMerc ) { - INT32 sMyGridNo, sDist, sDesiredMercDist = 100; - UINT8 ubNPC, ubMerc, ubDesiredMerc = NOBODY; - UINT8 ubTalkDesire, ubHighestTalkDesire = 0; + INT32 sMyGridNo, sDist, sDesiredMercDist = 100; + UINT8 ubNPC; + UINT16 ubMerc; + SoldierID ubDesiredMerc = NOBODY; + UINT8 ubTalkDesire, ubHighestTalkDesire = 0; SOLDIERTYPE * pMerc; SOLDIERTYPE * pDesiredMerc = NULL; NPCQuoteInfo * pNPCQuoteInfoArray; @@ -2907,11 +2909,10 @@ BOOLEAN PCDoesFirstAidOnNPC( UINT8 ubNPC ) void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) { // Loop through all mercs, gather closest mercs who can see and trigger one! - UINT8 ubMercsInSector[ 40 ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + SoldierID ubMercsInSector[CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS] = {}; //std::vector would probably be better here + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier, *pSoldier; - INT32 cnt; // First get pointer to NPC pSoldier = FindSoldierByProfileID( ubNPC, FALSE ); @@ -2919,15 +2920,16 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) // Loop through all our guys and randomly say one from someone in our sector // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = cnt; ubNumMercs++; } } @@ -2935,7 +2937,7 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // Post action to close panel NPCClosePanel( ); @@ -2943,11 +2945,11 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) // If 64, do something special if ( pQuotePtr->ubTriggerNPCRec == QUOTE_RESPONSE_TO_MIGUEL_SLASH_QUOTE_MERC_OR_RPC_LETGO ) { - TacticalCharacterDialogueWithSpecialEvent( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], pQuotePtr->ubTriggerNPCRec, DIALOGUE_SPECIAL_EVENT_PCTRIGGERNPC, 57, 6 ); + TacticalCharacterDialogueWithSpecialEvent( ubMercsInSector[ ubChosenMerc ], pQuotePtr->ubTriggerNPCRec, DIALOGUE_SPECIAL_EVENT_PCTRIGGERNPC, 57, 6 ); } else { - TacticalCharacterDialogue( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], pQuotePtr->ubTriggerNPCRec ); + TacticalCharacterDialogue( ubMercsInSector[ ubChosenMerc ], pQuotePtr->ubTriggerNPCRec ); } } @@ -3643,12 +3645,11 @@ BOOLEAN LoadBackupNPCInfoFromSavedGameFile( HWFILE hFile, UINT32 uiSaveGameVersi void TriggerFriendWithHostileQuote( UINT8 ubNPC ) { - UINT8 ubMercsAvailable[ 40 ] = { 0 }; - UINT8 ubNumMercsAvailable = 0, ubChosenMerc; - SOLDIERTYPE * pTeamSoldier; - SOLDIERTYPE * pSoldier; - INT32 cnt; - INT8 bTeam; + UINT16 ubMercsAvailable[CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS] = { 0 }; + UINT16 ubNumMercsAvailable = 0, ubChosenMerc; + SOLDIERTYPE * pTeamSoldier; + SOLDIERTYPE * pSoldier; + INT8 bTeam; // First get pointer to NPC pSoldier = FindSoldierByProfileID( ubNPC, FALSE ); @@ -3661,11 +3662,12 @@ void TriggerFriendWithHostileQuote( UINT8 ubNPC ) // Loop through all our guys and find one to yell // set up soldier ptr as first element in mercptrs list - cnt = gTacticalStatus.Team[ bTeam ].bFirstID; + SoldierID cnt = gTacticalStatus.Team[ bTeam ].bFirstID; // run through list - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; cnt++,pTeamSoldier++ ) + for ( ; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; ++cnt ) { + pTeamSoldier = cnt; // Add guy if he's a candidate... if ( pTeamSoldier->bActive && pSoldier->bInSector && pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->bBreath >= OKBREATH && pTeamSoldier->aiData.bOppCnt > 0 && pTeamSoldier->ubProfile != NO_PROFILE ) { @@ -3691,7 +3693,7 @@ void TriggerFriendWithHostileQuote( UINT8 ubNPC ) if (ubNumMercsAvailable > 0) { PauseAITemporarily(); - ubChosenMerc = (UINT8) Random( ubNumMercsAvailable ); + ubChosenMerc = (UINT16) Random( ubNumMercsAvailable ); TriggerNPCWithIHateYouQuote( ubMercsAvailable[ ubChosenMerc ] ); } else diff --git a/TacticalAI/PanicButtons.cpp b/TacticalAI/PanicButtons.cpp index 5aa40f8a..679e5e65 100644 --- a/TacticalAI/PanicButtons.cpp +++ b/TacticalAI/PanicButtons.cpp @@ -13,13 +13,13 @@ void MakeClosestEnemyChosenOne() { - UINT32 cnt; - INT16 sPathCost, sShortestPath = 1000; - INT8 bOldKeys = -1; - UINT8 ubClosestEnemy = NOBODY; + UINT32 cnt; + INT16 sPathCost, sShortestPath = 1000; + INT8 bOldKeys = -1; + SoldierID ubClosestEnemy = NOBODY; SOLDIERTYPE * pSoldier; - INT8 bPanicTrigger; - INT32 sPanicTriggerGridNo; + INT8 bPanicTrigger; + INT32 sPanicTriggerGridNo; if ( ! (gTacticalStatus.fPanicFlags & PANIC_TRIGGERS_HERE) ) { @@ -162,7 +162,7 @@ void MakeClosestEnemyChosenOne() NumMessage("TEST MSG: The chosen one is ",TheChosenOne); #endif - pSoldier = MercPtrs[gTacticalStatus.ubTheChosenOne]; + pSoldier = gTacticalStatus.ubTheChosenOne; if ( pSoldier->aiData.bAlertStatus < STATUS_RED ) { pSoldier->aiData.bAlertStatus = STATUS_RED; diff --git a/TacticalAI/ZombieDecideAction.cpp b/TacticalAI/ZombieDecideAction.cpp index a2dd3275..e84fefec 100644 --- a/TacticalAI/ZombieDecideAction.cpp +++ b/TacticalAI/ZombieDecideAction.cpp @@ -571,7 +571,7 @@ INT8 ZombieDecideActionRed(SOLDIERTYPE *pSoldier) INT8 bInWater, bInDeepWater; INT8 bSeekPts = 0, bHelpPts = 0, bWatchPts = 0; BOOLEAN fClimb; - UINT8 ubThreatID = NOBODY; + UINT16 ubThreatID = NOBODY; INT32 sThreatSpot = NOWHERE; INT8 bThreatLevel = 0; @@ -910,7 +910,7 @@ INT8 ZombieDecideActionBlack(SOLDIERTYPE *pSoldier) INT8 bWeaponIn; BOOLEAN fClimb; INT32 iDummy; - UINT8 ubThreatID = NOBODY; + UINT16 ubThreatID = NOBODY; INT32 sThreatSpot = NOWHERE; INT8 bThreatLevel = 0; diff --git a/TacticalAI/ai.h b/TacticalAI/ai.h index c97d1936..3dd5ca2a 100644 --- a/TacticalAI/ai.h +++ b/TacticalAI/ai.h @@ -175,7 +175,7 @@ void CheckForChangingOrders(SOLDIERTYPE *pSoldier ); INT8 ClosestPanicTrigger( SOLDIERTYPE * pSoldier ); -INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, UINT8 *pubOpponentID = NULL); +INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, SoldierID *pubOpponentID = NULL); INT32 ClosestPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ); INT32 ClosestUnDisguisedPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ); // Flugente: like ClosestPC(...), but does not account for covert or not visible mercs BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck ); @@ -220,7 +220,7 @@ BOOLEAN FindRoofClimbingPoints( SOLDIERTYPE * pSoldier, INT16 sDesiredSpot ); INT32 FindSpotMaxDistFromOpponents(SOLDIERTYPE *pSoldier); INT32 FindSweetCoverSpot(SOLDIERTYPE *pSoldier); -void FreeUpNPCFromAttacking(UINT8 ubID); +void FreeUpNPCFromAttacking(SoldierID ubID); void FreeUpNPCFromPendingAction( SOLDIERTYPE * pSoldier ); void FreeUpNPCFromTurning(SOLDIERTYPE *pSoldier, INT8 bLook); void FreeUpNPCFromStanceChange(SOLDIERTYPE *pSoldier ); @@ -228,7 +228,7 @@ void FreeUpNPCFromLoweringGun( SOLDIERTYPE *pSoldier ); void FreeUpNPCFromRoofClimb(SOLDIERTYPE *pSoldier ); UINT8 GetClosestOpponent( SOLDIERTYPE *pSoldier ); -UINT8 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ); +SoldierID GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ); void HandleSoldierAI( SOLDIERTYPE *pSoldier ); void HandleInitialRedAlert( INT8 bTeam, UINT8 ubCommunicate); @@ -252,7 +252,7 @@ INT16 RandomFriendWithin(SOLDIERTYPE *pSoldier); INT16 RoamingRange(SOLDIERTYPE *pSoldier, INT32 *pFromGridNo); -void SetCivilianDestination(UINT8 ubWho, INT32 sGridNo); +void SetCivilianDestination(SoldierID ubWho, INT32 sGridNo); void SetNewSituation( SOLDIERTYPE * pSoldier ); UINT8 SoldierDifficultyLevel( SOLDIERTYPE * pSoldier ); @@ -271,19 +271,19 @@ INT32 FindFlankingSpot(SOLDIERTYPE *pSoldier, INT32 sPos, INT8 bAction ); BOOLEAN CanClimbFromHere (SOLDIERTYPE * pSoldier, BOOLEAN fUp ); // HEADROCK HAM 3.6: Adding includes for A* cover calculations -INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); -INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); -INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ); // Flugente: get the id of the closest soldier (coser than x tiles) of a specific team with a specific flag that we can currently see -UINT8 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight = TRUE ); +SoldierID GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight = TRUE ); // get the id of the closest soldier (closer than x tiles) of a specific team that is wounded that we can currently see -UINT8 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); +SoldierID GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); // get the id of the closest medic (closer than x tiles) of a specific team -UINT8 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); +SoldierID GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); // sevenfm: BOOLEAN NightLight(void); @@ -291,15 +291,15 @@ BOOLEAN DuskLight(void); BOOLEAN InSmokeNearby(INT32 sGridNo, INT8 bLevel); INT16 MaxNormalVisionDistance( void ); UINT8 MinFlankDirections( SOLDIERTYPE *pSoldier ); -UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ); +UINT16 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ); BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax = SEEN_3_TURNS_AGO ); -UINT8 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ); +UINT16 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ); UINT8 CountNearbyFriendsLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ); UINT8 CountFriendsFlankSameSpot(SOLDIERTYPE *pSoldier, INT32 sSpot = NOWHERE); UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent = NOWHERE ); -UINT8 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance); -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance); -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier); +UINT16 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance); +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance); +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier); UINT8 SectorCurfew(BOOLEAN fNight); UINT8 TeamPercentKilled(INT8 bTeam); @@ -308,15 +308,15 @@ UINT8 ArmyPercentKilled(void); UINT8 ArmyPercentKilledTolerance(void); BOOLEAN EnemySeenSoldierRecently( SOLDIERTYPE *pSoldier, UINT8 ubMax = SEEN_3_TURNS_AGO ); -UINT8 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ); +UINT16 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ); BOOLEAN AICheckFriendsNoContact( SOLDIERTYPE *pSoldier ); BOOLEAN AICheckIsFlanking( SOLDIERTYPE *pSoldier ); INT8 CalcMoraleNew(SOLDIERTYPE *pSoldier); UINT32 PrepareThreatlist(SOLDIERTYPE *pSoldier); -UINT8 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax = SEEN_CURRENTLY); // first call PrepareThreatlist to make threat list -UINT8 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt); // first call PrepareThreatlist to make threat list +SoldierID ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax = SEEN_CURRENTLY); // first call PrepareThreatlist to make threat list +SoldierID ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt); // first call PrepareThreatlist to make threat list BOOLEAN ProneSightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited); BOOLEAN SightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited); @@ -336,7 +336,7 @@ UINT8 TerrainDensity(INT32 sSpot, INT8 bLevel, UINT8 ubDistance, BOOLEAN fGrass) BOOLEAN FindNearbyExplosiveStructure(INT32 sSpot, INT8 bLevel); INT16 DistanceToClosestActiveOpponent(SOLDIERTYPE *pSoldier, INT32 sSpot); BOOLEAN ValidOpponent(SOLDIERTYPE* pSoldier, SOLDIERTYPE* pOpponent); -UINT8 CountSeenEnemiesLastTurn( SOLDIERTYPE *pSoldier ); +UINT16 CountSeenEnemiesLastTurn( SOLDIERTYPE *pSoldier ); BOOLEAN FindObstacleNearSpot(INT32 sSpot, INT8 bLevel); BOOLEAN CheckNPCDestination(SOLDIERTYPE *pSoldier, INT32 sGridNo); UINT8 SpotDangerLevel(SOLDIERTYPE *pSoldier, INT32 sGridNo); @@ -387,19 +387,19 @@ BOOLEAN AICheckSpecialRole(SOLDIERTYPE *pSoldier); // Knowledge functions // ************************************************************* -INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); +INT8 Knowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT32 KnownLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT8 KnownLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); -BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); +BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); -INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); +INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); -INT8 PublicKnowledge(UINT8 bTeam, UINT8 ubOpponentID); -INT32 KnownPublicLocation(UINT8 bTeam, UINT8 ubOpponentID); -INT8 KnownPublicLevel(UINT8 bTeam, UINT8 ubOpponentID); +INT8 PublicKnowledge(UINT8 bTeam, SoldierID ubOpponentID); +INT32 KnownPublicLocation(UINT8 bTeam, SoldierID ubOpponentID); +INT8 KnownPublicLevel(UINT8 bTeam, SoldierID ubOpponentID); #define MAX_FLANKS_RED 25 #define MAX_FLANKS_YELLOW 25 diff --git a/TileEngine/Explosion Control.cpp b/TileEngine/Explosion Control.cpp index abd00f0e..fff3a2e1 100644 --- a/TileEngine/Explosion Control.cpp +++ b/TileEngine/Explosion Control.cpp @@ -63,19 +63,19 @@ BOOLEAN HookerInRoom( UINT16 usRoom ); // MODULE FOR EXPLOSIONS // Spreads the effects of explosions... -BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT8 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ); +BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, SoldierID ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ); // Flashbang effect on soldier UINT8 DetermineFlashbangEffect( SOLDIERTYPE *pSoldier, INT8 ubExplosionDir, BOOLEAN fInBuilding); // HEADROCK HAM 5.1: Explosion Fragments launcher -void FireFragments( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection = DIRECTION_IRRELEVANT ); +void FireFragments( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection = DIRECTION_IRRELEVANT ); // Flugente: shoot a gun without anyone operating it (used for makeshift traps wih guns) void FireFragmentsTrapGun( SOLDIERTYPE* pThrower, INT32 gridno, INT16 sZ, OBJECTTYPE* pObj, UINT8 ubDirection = NORTH ); extern INT8 gbSAMGraphicList[ MAX_NUMBER_OF_SAMS ]; -extern void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ); +extern void AddToShouldBecomeHostileOrSayQuoteList( UINT16 ubID ); extern void RecompileLocalMovementCostsForWall( INT32 sGridNo, UINT8 ubOrientation ); void FatigueCharacter( SOLDIERTYPE *pSoldier ); @@ -172,15 +172,15 @@ EXPLOSION_DATA gExpAniData[ NUM_EXP_TYPES ] = #define MAX_BOMB_QUEUE 40 ExplosionQueueElement gExplosionQueue[MAX_BOMB_QUEUE]; -UINT8 gubElementsOnExplosionQueue = 0; -BOOLEAN gfExplosionQueueActive = FALSE; +UINT8 gubElementsOnExplosionQueue = 0; +BOOLEAN gfExplosionQueueActive = FALSE; -BOOLEAN gfExplosionQueueMayHaveChangedSight = FALSE; -UINT8 gubPersonToSetOffExplosions = NOBODY; +BOOLEAN gfExplosionQueueMayHaveChangedSight = FALSE; +SoldierID gubPersonToSetOffExplosions = NOBODY; INT32 gsTempActionGridNo = NOWHERE; -extern UINT8 gubInterruptProvoker; +extern SoldierID gubInterruptProvoker; #define NUM_EXPLOSION_SLOTS 100 @@ -192,7 +192,7 @@ UINT32 guiNumExplosions = 0; INT32 GetFreeExplosion( void ); void RecountExplosions( void ); void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion ); -void HandleBuldingDestruction( INT32 sGridNo, UINT8 ubOwner ); +void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner ); #ifdef JA2UB //JA25 UB @@ -245,12 +245,12 @@ void RecountExplosions( void ) extern void HandleLoyaltyForDemolitionOfBuilding( SOLDIERTYPE *pSoldier, INT16 sPointsDmg ); // GENERATE EXPLOSION -void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) +void InternalIgniteExplosion( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) { #ifdef JA2BETAVERSION if (is_networked) { CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"InternalIgniteExplosion ( ubOwner : %i , sX : %i , sY : %i , sZ : %i , sGridNo : %i , usItem : %i , fLocate : %i , bLevel : %i , ubDirection : %i )\n",ubOwner, sX , sY , sZ , sGridNo , usItem , (int)fLocate , bLevel, ubDirection ); + sprintf(tmpMPDbgString,"InternalIgniteExplosion ( ubOwner : %i , sX : %i , sY : %i , sZ : %i , sGridNo : %i , usItem : %i , fLocate : %i , bLevel : %i , ubDirection : %i )\n",ubOwner.i, sX , sY , sZ , sGridNo , usItem , (int)fLocate , bLevel, ubDirection ); MPDebugMsg(tmpMPDbgString); } #endif @@ -273,7 +273,7 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 // Let's check for the attacker first. if ( ubOwner != NOBODY ) { - OBJECTTYPE* pUsedGun = MercPtrs[ ubOwner ]->GetUsedWeapon( &MercPtrs [ ubOwner ]->inv[MercPtrs[ubOwner]->ubAttackingHand] ); + OBJECTTYPE* pUsedGun = ubOwner->GetUsedWeapon( &( ubOwner->inv[ ubOwner->ubAttackingHand ] ) ); ammotype = (*pUsedGun)[0]->data.gun.ubGunAmmoType; @@ -283,7 +283,7 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 } // Flugente: campaign stats - if ( MercPtrs[ ubOwner ]->bTeam == OUR_TEAM ) + if ( ubOwner->bTeam == OUR_TEAM ) { if ( Item[ usItem ].usItemClass & IC_EXPLOSV ) gCampaignStats.AddConsumption(CAMPAIGN_CONSUMED_EXPLOSIVES, (FLOAT)(Item[usItem].ubWeight) ); @@ -344,7 +344,7 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 UINT16 tmp; if ( Item[ usItem ].usItemClass & IC_EXPLOSV && ubOwner != NOBODY && ubOwner < NUM_PROFILES && InARoom( sGridNo, &tmp ) ) { - HandleLoyaltyForDemolitionOfBuilding( MercPtrs[ubOwner], Explosive[ Item[ usItem ].ubClassIndex ].ubDamage ); + HandleLoyaltyForDemolitionOfBuilding( ubOwner, Explosive[ Item[ usItem ].ubClassIndex ].ubDamage ); // Flugente: campaign stats gCurrentIncident.usIncidentFlags |= INCIDENT_BUILDINGS_DAMAGED; @@ -386,7 +386,7 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 } -void IgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) +void IgniteExplosion( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) { InternalIgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, usItem, TRUE, bLevel, ubDirection, pObj ); } @@ -394,16 +394,16 @@ void IgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo void GenerateExplosion( EXPLOSION_PARAMS *pExpParams ) { EXPLOSIONTYPE *pExplosion; - UINT32 uiFlags; - UINT8 ubOwner; - UINT8 ubTypeID; - INT16 sX; - INT16 sY; - INT16 sZ; - INT32 sGridNo; - UINT16 usItem; - INT32 iIndex; - INT8 bLevel; + UINT32 uiFlags; + SoldierID ubOwner; + UINT8 ubTypeID; + INT16 sX; + INT16 sY; + INT16 sZ; + INT32 sGridNo; + UINT16 usItem; + INT32 iIndex; + INT8 bLevel; // Assign param values uiFlags = pExpParams->uiFlags; @@ -449,17 +449,17 @@ void GenerateExplosion( EXPLOSION_PARAMS *pExpParams ) void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion ) { - UINT32 uiFlags; - UINT8 ubOwner; - UINT8 ubTypeID; - INT16 sX; - INT16 sY; - INT16 sZ; - INT32 sGridNo; - UINT16 usItem; - UINT8 ubTerrainType; - INT8 bLevel; - INT32 sSoundID; + UINT32 uiFlags; + SoldierID ubOwner; + UINT8 ubTypeID; + INT16 sX; + INT16 sY; + INT16 sZ; + INT32 sGridNo; + UINT16 usItem; + UINT8 ubTerrainType; + INT8 bLevel; + INT32 sSoundID; ANITILE_PARAMS AniParams; @@ -648,14 +648,15 @@ void HandleFencePartnerCheck( INT32 sStructGridNo ) -INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextCurrent, INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, - BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT8 ubOwner, INT8 bLevel, +INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextCurrent, INT32 sGridNo, INT16 sWoundAmt, + UINT32 uiDist, + BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, INT8 bLevel, UINT8 ubReason ) { #ifdef JA2BETAVERSION if (is_networked) { CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"ExplosiveDamageStructureAtGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompMoveCosts : %i , fOnlyWalls : %i , SubsMulTilTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt , uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , (int)fSubSequentMultiTilesTransitionDamage , ubOwner , bLevel ); + sprintf(tmpMPDbgString,"ExplosiveDamageStructureAtGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompMoveCosts : %i , fOnlyWalls : %i , SubsMulTilTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt , uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , (int)fSubSequentMultiTilesTransitionDamage , ubOwner.i , bLevel ); MPDebugMsg(tmpMPDbgString); } #endif @@ -1326,14 +1327,16 @@ INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextC STRUCTURE *gStruct; -void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLEAN *pfRecompileMovementCosts, - BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT8 ubOwner, INT8 bLevel, +void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, + BOOLEAN *pfRecompileMovementCosts, + BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, + INT8 bLevel, UINT8 ubReason ) { #ifdef JA2BETAVERSION if (is_networked) { CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"ExplosiveDamageGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompileMoveCosts : %i , fOnlyWalls : %i , MultiStructSpecialFlag : %i ,fSubsequentMultiTilesTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt ,uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , bMultiStructSpecialFlag , (int)fSubSequentMultiTilesTransitionDamage , ubOwner , bLevel ); + sprintf(tmpMPDbgString,"ExplosiveDamageGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompileMoveCosts : %i , fOnlyWalls : %i , MultiStructSpecialFlag : %i ,fSubsequentMultiTilesTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt ,uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , bMultiStructSpecialFlag , (int)fSubSequentMultiTilesTransitionDamage , ubOwner.i , bLevel ); MPDebugMsg(tmpMPDbgString); } #endif @@ -1508,12 +1511,12 @@ void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLE } -BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent , BOOL fFromRemoteClient ) +BOOLEAN DamageSoldierFromBlast( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient ) { // OJW - 20091028 if (is_networked && is_client) { - SOLDIERTYPE* pSoldier = MercPtrs[ubPerson]; + SOLDIERTYPE* pSoldier = ubPerson; if (pSoldier != NULL) { // only the owner of a merc may send damage (as this takes into account equipped armor) @@ -1529,9 +1532,9 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo } } #ifdef JA2BETAVERSION - CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"DamageSoldierFromBlast ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i , fFromRemoteClient : %i )\n",ubPerson, ubOwner , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent , fFromRemoteClient ); - MPDebugMsg(tmpMPDbgString); + CHAR tmpMPDbgString[512]; + sprintf(tmpMPDbgString,"DamageSoldierFromBlast ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i , fFromRemoteClient : %i )\n",ubPerson.i, ubOwner.i , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent , fFromRemoteClient ); + MPDebugMsg(tmpMPDbgString); #endif } @@ -1544,7 +1547,7 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo BOOLEAN fFlashbang = Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_FLASHBANG; UINT16 usHalfExplosionRadius; - pSoldier = MercPtrs[ ubPerson ]; // someone is here, and they're gonna get hurt + pSoldier = ubPerson; // someone is here, and they're gonna get hurt if (!pSoldier->bActive || !pSoldier->bInSector || !pSoldier->stats.bLife ) return( FALSE ); @@ -1609,29 +1612,29 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo // SANDRO - STOMP traits else { - if ( ubOwner < TOTAL_SOLDIERS && (MercPtrs[ ubOwner ] != NULL) && gGameOptions.fNewTraitSystem) + if ( ubOwner < TOTAL_SOLDIERS && gGameOptions.fNewTraitSystem) { // Demolitions damage bonus with bombs and mines - if ( HAS_SKILL_TRAIT( MercPtrs[ ubOwner ], DEMOLITIONS_NT ) && + if ( HAS_SKILL_TRAIT( ubOwner, DEMOLITIONS_NT ) && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL && Item[usItem].usItemClass == IC_BOMB && (!ItemIsAttachment(usItem) || ItemIsMine(usItem))) { sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubDEDamageOfBombsAndMines) / 100.0f + 0.5f); } // Heavy Weapons trait bonus damage to tanks - if ( HAS_SKILL_TRAIT( MercPtrs[ubOwner], HEAVY_WEAPONS_NT ) && (ARMED_VEHICLE( pSoldier ) || ENEMYROBOT( pSoldier )) && + if ( HAS_SKILL_TRAIT( ubOwner, HEAVY_WEAPONS_NT ) && (ARMED_VEHICLE( pSoldier ) || ENEMYROBOT( pSoldier )) && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL ) { - sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageTanksBonusPercent * NUM_SKILL_TRAITS( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +30% + sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageTanksBonusPercent * NUM_SKILL_TRAITS( ubOwner, HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +30% } // Heavy Weapons trait bonus damage with rocket, grenade launchers and mortar - else if ( HAS_SKILL_TRAIT( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT ) && + else if ( HAS_SKILL_TRAIT( ubOwner, HEAVY_WEAPONS_NT ) && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL && ((Item[usItem].usItemClass == IC_BOMB && ItemIsAttachment(usItem) && !ItemIsMine(usItem) ) || // mortar shells (Item[usItem].usItemClass == IC_GRENADE && (ItemIsGLgrenade(usItem) || ItemIsElectronic(usItem)) ) || // rockets for rocketlaunchers (I haven't found any other way) (Item[usItem].usItemClass == IC_LAUNCHER ) || ItemIsRocketLauncher(usItem) || ItemIsSingleShotRocketLauncher(usItem) ) ) { - sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageBonusPercentForHW * NUM_SKILL_TRAITS( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +15% + sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageBonusPercentForHW * NUM_SKILL_TRAITS( ubOwner, HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +15% } } @@ -1878,24 +1881,24 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo if (IsOurSoldier(pSoldier) || (pSoldier->bTeam == 1 && is_server) && !fFromRemoteClient) { // if it gets here then we can let the other clients know our merc took damage - send_explosivedamage( ubPerson , ubOwner , sBombGridNo , sNewWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent ); + send_explosivedamage( ubPerson, ubOwner, sBombGridNo, sNewWoundAmt, sBreathAmt, uiDist, usItem, sSubsequent ); } } // OJW - 20091028 - If from a remote client, use unadjusted damage amount - pSoldier->EVENT_SoldierGotHit( usItem, (fFromRemoteClient ? sWoundAmt : sNewWoundAmt) , sBreathAmt, ubDirection, (INT16)uiDist, ubOwner, ubSpecial, ANIM_CROUCH, sSubsequent, sBombGridNo ); + pSoldier->EVENT_SoldierGotHit( usItem, (fFromRemoteClient ? sWoundAmt : sNewWoundAmt), sBreathAmt, ubDirection, (INT16)uiDist, ubOwner, ubSpecial, ANIM_CROUCH, sSubsequent, sBombGridNo ); pSoldier->ubMiscSoldierFlags |= SOLDIER_MISC_HURT_BY_EXPLOSION; - if ( ubOwner != NOBODY && MercPtrs[ ubOwner ]->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum ) + if ( ubOwner != NOBODY && ubOwner->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum ) { - ProcessImplicationsOfPCAttack( MercPtrs[ ubOwner ], &pSoldier, REASON_EXPLOSION ); + ProcessImplicationsOfPCAttack( ubOwner, &pSoldier, REASON_EXPLOSION ); } return( TRUE ); } -BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner , BOOL fFromRemoteClient ) +BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner, BOOL fFromRemoteClient ) { // OJW - 20091028 if (is_networked && is_client) @@ -1913,7 +1916,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN } #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"DishOutGasDamage ( ubSoldierID : %i , ubExplosiveType : %i , sSubsequent : %i , recompileMoveCosts : %i , sWoundAmt : %i , sBreathAmt : %i , ubOwner : %i , fRemote : %i)\n", pSoldier->ubID , pExplosive->ubType , sSubsequent , fRecompileMovementCosts , sWoundAmt , sBreathAmt , ubOwner , fFromRemoteClient ); + sprintf(tmpMPDbgString,"DishOutGasDamage ( ubSoldierID : %i , ubExplosiveType : %i , sSubsequent : %i , recompileMoveCosts : %i , sWoundAmt : %i , sBreathAmt : %i , ubOwner : %i , fRemote : %i)\n", pSoldier->ubID.i , pExplosive->ubType , sSubsequent , fRecompileMovementCosts , sWoundAmt , sBreathAmt , ubOwner.i , fFromRemoteClient ); MPDebugMsg(tmpMPDbgString); #endif } @@ -2143,7 +2146,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN // and align them with our random number generator if (IsOurSoldier(pSoldier) || (pSoldier->bTeam == 1 && is_server) && !fFromRemoteClient) { - send_gasdamage( pSoldier , pExplosive->uiIndex , sSubsequent , fRecompileMovementCosts , sWoundAmt , sBreathAmt , ubOwner ); + send_gasdamage( pSoldier, pExplosive->uiIndex, sSubsequent, fRecompileMovementCosts, sWoundAmt, sBreathAmt, ubOwner ); } } @@ -2152,26 +2155,26 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN pSoldier->DoMercBattleSound( BATTLE_SOUND_HIT1 ); } - if ( ubOwner != NOBODY && MercPtrs[ ubOwner ]->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum ) + if ( ubOwner != NOBODY && ubOwner->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum ) { - ProcessImplicationsOfPCAttack( MercPtrs[ ubOwner ], &pSoldier, REASON_EXPLOSION ); + ProcessImplicationsOfPCAttack( ubOwner, &pSoldier, REASON_EXPLOSION ); } } return( fRecompileMovementCosts ); } -BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT8 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ) +BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, SoldierID ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ) { #ifdef JA2BETAVERSION if (is_networked) { CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"ExpAffect ( sBombGridNo : %i , sGridNo : %i , uiDist : %i , usItem : %i , ubOwner : %i , sSubsequent : %i , fMercHit : %i , bLevel : %i , iSmokeEffectID : %i )\n",sBombGridNo, sGridNo , uiDist , usItem , ubOwner , sSubsequent , (int)*pfMercHit , bLevel , iSmokeEffectID ); + sprintf(tmpMPDbgString,"ExpAffect ( sBombGridNo : %i , sGridNo : %i , uiDist : %i , usItem : %i , ubOwner : %i , sSubsequent : %i , fMercHit : %i , bLevel : %i , iSmokeEffectID : %i )\n",sBombGridNo, sGridNo , uiDist , usItem , ubOwner.i , sSubsequent , (int)*pfMercHit , bLevel , iSmokeEffectID ); MPDebugMsg(tmpMPDbgString); } #endif INT16 sWoundAmt = 0,sBreathAmt = 0, /* sNewWoundAmt = 0, sNewBreathAmt = 0, */ sStructDmgAmt; - UINT8 ubPerson; + SoldierID ubPerson; SOLDIERTYPE *pSoldier; EXPLOSIVETYPE *pExplosive; INT16 sX, sY; @@ -2296,7 +2299,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte // ATE: Make sure guys get pissed at us! - HandleBuldingDestruction( sGridNo ,ubOwner ); + HandleBuldingDestruction( sGridNo,ubOwner ); if ( fBlastEffect ) @@ -2363,7 +2366,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte } } - ExplosiveDamageGridNo( sGridNo, sStructDmgAmt, uiDist, &fRecompileMovementCosts, FALSE, -1, 0 , ubOwner, bLevel, STRUCTURE_DAMAGE_EXPLOSION ); + ExplosiveDamageGridNo( sGridNo, sStructDmgAmt, uiDist, &fRecompileMovementCosts, FALSE, -1, 0, ubOwner, bLevel, STRUCTURE_DAMAGE_EXPLOSION ); // ATE: Look for damage to walls ONLY for next two gridnos sNewGridNo = NewGridNo( sGridNo, DirectionInc( NORTH ) ); @@ -2530,7 +2533,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte return( fRecompileMovementCosts ); } - pSoldier = MercPtrs[ ubPerson ]; // someone is here, and they're gonna get hurt + pSoldier = ubPerson; // someone is here, and they're gonna get hurt // silversurfer: Gas now only has an effect when the container had time to emit some. Initially it will do nothing. // This prevents the problem that we have to suffer two times without a chance to react (1st when the grenade hits our position, 2nd when our turn starts) @@ -2915,11 +2918,11 @@ void GetRayStopInfo( UINT32 uiNewSpot, UINT8 ubDir, INT8 bLevel, BOOLEAN fSmokeE -void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID , BOOL fFromRemoteClient , BOOL fNewSmokeEffect ) +void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID, BOOL fFromRemoteClient, BOOL fNewSmokeEffect ) { if (is_networked && is_client) { - SOLDIERTYPE* pAttacker = MercPtrs[ubOwner]; + SOLDIERTYPE* pAttacker = ubOwner; if (pAttacker != NULL) { if (IsOurSoldier(pAttacker) || (pAttacker->bTeam == 1 && is_server)) @@ -2929,7 +2932,7 @@ void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, { // let all the other clients know we are spawning this effect // and align them with our random number generator - send_spreadeffect(sGridNo,ubRadius,usItem,ubOwner,fSubsequent,bLevel,iSmokeEffectID); + send_spreadeffect(sGridNo, ubRadius, usItem, ubOwner, fSubsequent, bLevel, iSmokeEffectID); } } else if (!fFromRemoteClient) @@ -2950,7 +2953,7 @@ void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, } #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"SpreadEffect ( sGridNo : %i , ubRadius : %i , usItem : %i , ubOwner : %i , fSubsequent : %i , bLevel : %i , iSmokeEffectID : %i , fFromRemote : %i , fNewSmoke : %i )\n",sGridNo, ubRadius , usItem , ubOwner , (int)fSubsequent , bLevel , iSmokeEffectID , fFromRemoteClient , fNewSmokeEffect ); + sprintf(tmpMPDbgString,"SpreadEffect ( sGridNo : %i , ubRadius : %i , usItem : %i , ubOwner : %i , fSubsequent : %i , bLevel : %i , iSmokeEffectID : %i , fFromRemote : %i , fNewSmoke : %i )\n",sGridNo, ubRadius , usItem , ubOwner.i , (int)fSubsequent , bLevel , iSmokeEffectID , fFromRemoteClient , fNewSmokeEffect ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -3280,13 +3283,12 @@ void BillyBlocksDoorCallback( void ) BOOLEAN HookerInRoom( UINT16 usRoom ) { //DBrot: More Rooms - UINT8 ubLoop;//, ubTempRoom; UINT16 usTempRoom; SOLDIERTYPE * pSoldier; - for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for ( SoldierID ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++ubLoop ) { - pSoldier = MercPtrs[ ubLoop ]; + pSoldier = ubLoop; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife >= OKLIFE && pSoldier->aiData.bNeutral && pSoldier->ubBodyType == MINICIV ) { @@ -3793,14 +3795,14 @@ void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemo WORLDITEM wi = gWorldItems[iWorldIndex]; if (wi.fExists) { - INT8 soldierID = wi.soldierID; // bomb's owner - if (soldierID == -1) + SoldierID soldierID = wi.soldierID; // bomb's owner + if (soldierID == NOBODY) soldierID = wi.object[0]->data.misc.ubBombOwner - 2; // undo the hack - if (IsOurSoldier(gubPersonToSetOffExplosions) || IsOurSoldier(soldierID)) + if (IsOurSoldier((SOLDIERTYPE*)gubPersonToSetOffExplosions) || IsOurSoldier((SOLDIERTYPE*)soldierID)) { // we set off the bomb (could be failed disarm) or we own it, tell the other clients we are setting it off - send_detonate_explosive(iWorldIndex,gubPersonToSetOffExplosions); + send_detonate_explosive(iWorldIndex, gubPersonToSetOffExplosions); } else if (gWorldBombs[uiWorldBombIndex].bIsFromRemotePlayer && !fFromRemoteClient) { @@ -3824,7 +3826,7 @@ void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemo } // Flugente: activate everything connected to a tripwire in the surrounding if sGridNo on level bLevel with regard to the tripwire netwrok and hierarchy determined by ubFlag -BOOLEAN ActivateSurroundingTripwire( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ) +BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ) { UINT32 uiTimeStamp= GetJA2Clock(); BOOLEAN fFoundMine = FALSE; @@ -3929,10 +3931,10 @@ BOOLEAN ActivateSurroundingTripwire( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UIN // SANDRO - merc records // only if we blew up somebody not in our team(no achievement for blowing our guys :)), only if owner exists and have profile - if ( (MercPtrs[ubID]->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) + if ( (ubID->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) { - if ( MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile != NO_PROFILE && MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->bTeam == gbPlayerNum ) - gMercProfiles[ MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile ].records.usExpDetonated++; + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) + gMercProfiles[ ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile ].records.usExpDetonated++; } /*if (pObj->usItem != ACTION_ITEM || (*pObj)[0]->data.misc.bActionValue == ACTION_ITEM_BLOW_UP) @@ -3959,7 +3961,7 @@ BOOLEAN ActivateSurroundingTripwire( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UIN } // Flugente: A special function for tripwire gun traps. Search if pObj has a gun attached. If so, fire a shot from that gun in a specific direction. Afterwards place the gun on the ground -void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT8 ubId, UINT8 ubDirection ) +void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, SoldierID ubId, UINT8 ubDirection ) { if ( !pObj ) return; @@ -3977,7 +3979,7 @@ void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT gTacticalStatus.uiFlags |= (DISALLOW_SIGHT | CHECK_SIGHT_AT_END_OF_ATTACK); } - FireFragmentsTrapGun( MercPtrs[ubId], sGridNo, 0, pObj, ubDirection ); + FireFragmentsTrapGun( ubId, sGridNo, 0, pObj, ubDirection ); // this is important... if not set, the game will remain in a loop gTacticalStatus.ubAttackBusyCount = 0; @@ -4052,11 +4054,11 @@ void HandleExplosionQueue( void ) if ( sSoundID > NO_ALT_SOUND ) PlayJA2Sample( sSoundID, RATE_11025, SoundVolume( HIGHVOLUME, sGridNo ), 1, SoundDir( sGridNo ) ); - UINT8 ubID = WhoIsThere2( sGridNo, ubLevel ); + SoldierID ubID = WhoIsThere2( sGridNo, ubLevel ); if ( ubID != NOBODY ) { - SOLDIERTYPE* pSoldier = MercPtrs[ubID]; + SOLDIERTYPE* pSoldier = ubID; INT16 damage = Explosive[Item[pObj->usItem].ubClassIndex].ubDamage * 0.67f + Random( Explosive[Item[pObj->usItem].ubClassIndex].ubDamage * 0.67f ); INT16 breathdamage = Explosive[Item[pObj->usItem].ubClassIndex].ubStunDamage * 0.67f + Random( Explosive[Item[pObj->usItem].ubClassIndex].ubStunDamage * 0.67f ); @@ -4169,7 +4171,7 @@ void HandleExplosionQueue( void ) INT16 sX, sY; ConvertGridNoToCenterCellXY(sGridNo, &sX, &sY); - fAttFound=HandleAttachedExplosions( (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, + fAttFound = HandleAttachedExplosions( ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, FALSE, ubLevel, (*pObj)[0]->data.ubDirection, pObj); } } @@ -4216,7 +4218,7 @@ void HandleExplosionQueue( void ) // determine gridno to attack - smoke signal required. Otherwise, it is assumed the radio operator ordered the bombing of his OWN position // if we cannot even find a radio operator, all bets are off - target a random gridno // the usual +/- 2 shenanigans - UINT16 usOwner = NOBODY; + SoldierID usOwner = NOBODY; if ( (*pObj)[0]->data.misc.ubBombOwner > 1 ) usOwner = (*pObj)[0]->data.misc.ubBombOwner - 2; @@ -4248,7 +4250,7 @@ void HandleExplosionQueue( void ) // bomb objects only store the SIDE who placed the bomb! :-( if ( (*pObj)[0]->data.misc.ubBombOwner > 1 ) { - IgniteExplosion( (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, ubLevel, (*pObj)[0]->data.ubDirection, pObj); + IgniteExplosion( ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, ubLevel, (*pObj)[0]->data.ubDirection, pObj); } else { @@ -4282,14 +4284,14 @@ void HandleExplosionQueue( void ) // re-enable sight gTacticalStatus.uiFlags &= (~DISALLOW_SIGHT); - if ( gubPersonToSetOffExplosions != NOBODY && !(MercPtrs[ gubPersonToSetOffExplosions ]->flags.uiStatusFlags & SOLDIER_PC) ) + if ( gubPersonToSetOffExplosions != NOBODY && !(gubPersonToSetOffExplosions->flags.uiStatusFlags & SOLDIER_PC) ) { - FreeUpNPCFromPendingAction( MercPtrs[ gubPersonToSetOffExplosions ] ); + FreeUpNPCFromPendingAction( gubPersonToSetOffExplosions ); } if (gfExplosionQueueMayHaveChangedSight) { - UINT8 ubLoop; + SoldierID ubLoop; SOLDIERTYPE * pTeamSoldier; // set variable so we may at least have someone to resolve interrupts vs @@ -4298,8 +4300,9 @@ void HandleExplosionQueue( void ) // call fov code ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - for ( pTeamSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pTeamSoldier++ ) + for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubLoop ) { + pTeamSoldier = ubLoop; if ( pTeamSoldier->bActive && pTeamSoldier->bInSector ) { RevealRoofsAndItems( pTeamSoldier, TRUE, FALSE, pTeamSoldier->pathing.bLevel, FALSE ); @@ -4384,7 +4387,7 @@ void HandleExplosionWarningAnimations( ) // show focus area if skill is active if ( gusSelectedSoldier != NOBODY ) { - SOLDIERTYPE* pSoldier = MercPtrs[gusSelectedSoldier]; + SOLDIERTYPE* pSoldier = gusSelectedSoldier; if ( pSoldier->bActive && pSoldier->bInSector) { @@ -4439,17 +4442,17 @@ void HandleExplosionWarningAnimations( ) // soldiers if (!fShow) { - for (UINT32 ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++ubID) + for ( SoldierID ubID = gTacticalStatus.Team[OUR_TEAM].bFirstID; ubID <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++ubID) { if (ubID != pSoldier->ubID && - MercPtrs[ubID] && - MercPtrs[ubID]->sGridNo == sSpot && - MercPtrs[ubID]->bVisible == TRUE && - MercPtrs[ubID]->pathing.bLevel == bLevel && - gAnimControl[MercPtrs[ubID]->usAnimState].ubEndHeight == ANIM_PRONE && - !Water(MercPtrs[ubID]->sGridNo, MercPtrs[ubID]->pathing.bLevel) && + ubID != NOBODY && + ubID->sGridNo == sSpot && + ubID->bVisible == TRUE && + ubID->pathing.bLevel == bLevel && + gAnimControl[ubID->usAnimState].ubEndHeight == ANIM_PRONE && + !Water(ubID->sGridNo, ubID->pathing.bLevel) && pSoldier->ubBodyType <= REGFEMALE && - (MercPtrs[ubID]->bTeam == pSoldier->bTeam || MercPtrs[ubID]->IsUnconscious() || MercPtrs[ubID]->stats.bLife < OKLIFE)) + (ubID->bTeam == pSoldier->bTeam || ubID->IsUnconscious() || ubID->stats.bLife < OKLIFE)) { fShow = TRUE; } @@ -4585,11 +4588,11 @@ void DecayBombTimers( void ) // ATE: CC black magic.... if ( (*pObj)[0]->data.misc.ubBombOwner > 1 ) { - gubPersonToSetOffExplosions = (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2); + gubPersonToSetOffExplosions = ((*pObj)[0]->data.misc.ubBombOwner - 2); // SANDRO - merc records - detonating explosives - if ( MercPtrs[ gubPersonToSetOffExplosions ]->ubProfile != NO_PROFILE && MercPtrs[ gubPersonToSetOffExplosions ]->bTeam == gbPlayerNum ) + if ( gubPersonToSetOffExplosions->ubProfile != NO_PROFILE && gubPersonToSetOffExplosions->bTeam == gbPlayerNum ) { - gMercProfiles[ MercPtrs[ gubPersonToSetOffExplosions ]->ubProfile ].records.usExpDetonated++; + gMercProfiles[ gubPersonToSetOffExplosions->ubProfile ].records.usExpDetonated++; } } else @@ -4639,11 +4642,11 @@ void DecayBombTimers( void ) // ATE: CC black magic.... if ( (*pObj)[0]->data.misc.ubBombOwner > 1 ) { - gubPersonToSetOffExplosions = (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2); + gubPersonToSetOffExplosions = ((*pObj)[0]->data.misc.ubBombOwner - 2); // SANDRO - merc records - detonating explosives - if ( MercPtrs[ gubPersonToSetOffExplosions ]->ubProfile != NO_PROFILE && MercPtrs[ gubPersonToSetOffExplosions ]->bTeam == gbPlayerNum ) + if ( gubPersonToSetOffExplosions->ubProfile != NO_PROFILE && gubPersonToSetOffExplosions->bTeam == gbPlayerNum ) { - gMercProfiles[ MercPtrs[ gubPersonToSetOffExplosions ]->ubProfile ].records.usExpDetonated++; + gMercProfiles[ gubPersonToSetOffExplosions->ubProfile ].records.usExpDetonated++; } } else @@ -4664,7 +4667,7 @@ void DecayBombTimers( void ) } } -void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) +void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency ) { UINT32 uiWorldBombIndex; UINT32 uiTimeStamp; @@ -4701,12 +4704,12 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) // SANDRO - added merc records and some exp if ( ((*pObj)[0]->data.misc.ubBombOwner) > 1 ) { - if ( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile != NO_PROFILE && - MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->bTeam == gbPlayerNum ) + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && + ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) { - gMercProfiles[MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile].records.usExpDetonated++; + gMercProfiles[((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile].records.usExpDetonated++; - StatChange( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)], EXPLODEAMT, ( 5 ), FALSE ); + StatChange( ((*pObj)[0]->data.misc.ubBombOwner - 2), EXPLODEAMT, ( 5 ), FALSE ); } } @@ -4744,7 +4747,7 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( sGridNo , gWorldBombs[uiWorldBombIndex].iItemIndex, ubID ); + send_disarm_explosive( sGridNo, gWorldBombs[uiWorldBombIndex].iItemIndex, ubID ); // set back ubWireNetworkFlag and bDefuseFrequency, but not the direction... bomb is still aimed, it is just turned off (*pObj)[0]->data.ubWireNetworkFlag = 0; @@ -4801,12 +4804,12 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) // SANDRO - added merc records and some exp if ( ((*pObj)[0]->data.misc.ubBombOwner) > 1 ) { - if ( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile != NO_PROFILE && - MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->bTeam == gbPlayerNum ) + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && + ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) { - gMercProfiles[MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile].records.usExpDetonated++; + gMercProfiles[((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile].records.usExpDetonated++; - StatChange( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)], EXPLODEAMT, ( 5 ), FALSE ); + StatChange( ((*pObj)[0]->data.misc.ubBombOwner - 2), EXPLODEAMT, ( 5 ), FALSE ); } } @@ -4852,7 +4855,7 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) } } -void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger ) +void SetOffPanicBombs( SoldierID ubID, INT8 bPanicTrigger ) { // need to turn off gridnos & flags in gTacticalStatus gTacticalStatus.sPanicTriggerGridNo[ bPanicTrigger ] = NOWHERE; @@ -4890,7 +4893,7 @@ void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger ) } } -BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ) +BOOLEAN SetOffBombsInGridNo( SoldierID ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ) { UINT32 uiWorldBombIndex; UINT32 uiTimeStamp; @@ -4913,7 +4916,7 @@ BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 if ( !fAllBombs && ubID != NOBODY && ItemIsATMine(pObj->usItem)) { // if this is not a vehicle, not a robot and not a tank, don't activate - if ( !(MercPtrs[ubID]->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( MercPtrs[ubID] ) && !ARMED_VEHICLE( MercPtrs[ubID] ) && !ENEMYROBOT( MercPtrs[ubID] ) ) + if ( !(ubID->flags.uiStatusFlags & SOLDIER_VEHICLE) && !AM_A_ROBOT( ubID ) && !ARMED_VEHICLE( ubID ) && !ENEMYROBOT( ubID ) ) continue; } @@ -4974,10 +4977,10 @@ BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 // SANDRO - merc records // only if we blew up somebody not in our team(no achievement for blowing our guys :)), only if owner exists and have profile - if ( (MercPtrs[ubID]->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) + if ( (ubID->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) { - if ( MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile != NO_PROFILE && MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->bTeam == gbPlayerNum ) - gMercProfiles[ MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile ].records.usExpDetonated++; + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) + gMercProfiles[ ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile ].records.usExpDetonated++; } /*if (pObj->usItem != ACTION_ITEM || (*pObj)[0]->data.misc.bActionValue == ACTION_ITEM_BLOW_UP) @@ -5001,7 +5004,7 @@ BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 return( fFoundMine ); } -void ActivateSwitchInGridNo( UINT8 ubID, INT32 sGridNo ) +void ActivateSwitchInGridNo( SoldierID ubID, INT32 sGridNo ) { UINT32 uiWorldBombIndex; OBJECTTYPE * pObj; @@ -5302,17 +5305,16 @@ void UpdateSAMDoneRepair( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) // loop through civ team and find // anybody who is an NPC and // see if they get angry -void HandleBuldingDestruction( INT32 sGridNo, UINT8 ubOwner ) +void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner ) { SOLDIERTYPE * pSoldier; - UINT8 cnt; if ( ubOwner == NOBODY ) { return; } - if ( MercPtrs[ ubOwner ]->bTeam != gbPlayerNum ) + if ( ubOwner->bTeam != gbPlayerNum ) { return; } @@ -5321,9 +5323,10 @@ void HandleBuldingDestruction( INT32 sGridNo, UINT8 ubOwner ) if ( sGridNo == NOWHERE || !InARoom( sGridNo, NULL ) ) return; - cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; - for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; cnt++ ,pSoldier++ ) + SoldierID cnt = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; + for ( ; cnt <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ++cnt ) { + pSoldier = cnt; if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife && pSoldier->aiData.bNeutral ) { if ( pSoldier->ubProfile != NO_PROFILE ) @@ -5336,7 +5339,7 @@ void HandleBuldingDestruction( INT32 sGridNo, UINT8 ubOwner ) if ( DoesNPCOwnBuilding( pSoldier, sGridNo ) ) { - MakeNPCGrumpyForMinorOffense( pSoldier, MercPtrs[ ubOwner ] ); + MakeNPCGrumpyForMinorOffense( pSoldier, ubOwner ); } } } @@ -5427,7 +5430,7 @@ UINT8 DetermineFlashbangEffect( SOLDIERTYPE *pSoldier, INT8 ubExplosionDir, BOOL // HEADROCK HAM 5.1: This handles launching fragments out of an explosion. The number of fragments is read from // the Explosives.XML file, and they each have a set amount of damage and range as well. They are currently // fired at completely random trajectories. -void FireFragments( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection ) +void FireFragments( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection ) { // WANNE: Disable Fragments in a multiplayer game, because this can lead to crashes when stepping on mines, ... if (is_networked) @@ -5617,15 +5620,13 @@ void FireFragmentsTrapGun( SOLDIERTYPE* pThrower, INT32 gridno, INT16 sZ, OBJECT void HavePersonAtGridnoStop( UINT32 sGridNo ) { - UINT8 ubID; - //Sewe if there is a person at the gridno - ubID = WhoIsThere2( sGridNo, 0 ); + SoldierID ubID = WhoIsThere2( sGridNo, 0 ); //is it a valid person - if ( (ubID != NOBODY) && (MercPtrs[ ubID ]->bTeam == gbPlayerNum) ) + if ( (ubID != NOBODY) && (ubID->bTeam == gbPlayerNum) ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; //Stop the merc pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection ); @@ -5731,10 +5732,10 @@ void HandleDestructionOfPowerGenFan() // Have a qualified merc say a quote // //Get a random qualified merc to say the quote - INT16 bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); - if( bID != -1 ) + SoldierID bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); + if( bID != NOBODY ) { - DelayedMercQuote( Menptr[ bID ].ubProfile, QUOTE_ACCEPT_CONTRACT_RENEWAL, GetWorldTotalSeconds() + 2 ); + DelayedMercQuote( bID->ubProfile, QUOTE_ACCEPT_CONTRACT_RENEWAL, GetWorldTotalSeconds() + 2 ); } } @@ -5772,8 +5773,8 @@ void HandleSeeingFortifiedDoor( UINT32 sGridNo ) gJa25SaveStruct.uiJa25GeneralFlags |= JA_GF__PLAYER_HAS_SEEN_FORTIFIED_DOOR; //find out whos is the one walking across the trap - INT16 sID = WhoIsThere2( sGridNo, 0 ); - if( sID != NOBODY && IsSoldierQualifiedMerc( &Menptr[ sID ] ) ) + SoldierID sID = WhoIsThere2( sGridNo, 0 ); + if( sID != NOBODY && IsSoldierQualifiedMerc( sID ) ) { } else @@ -5782,10 +5783,10 @@ void HandleSeeingFortifiedDoor( UINT32 sGridNo ) sID = RandomSoldierIdFromNewMercsOnPlayerTeam(); } - if( sID != -1 ) + if( sID != NOBODY ) { //say the quote - TacticalCharacterDialogue( &Menptr[ sID ], QUOTE_LENGTH_OF_CONTRACT ); + TacticalCharacterDialogue( sID, QUOTE_LENGTH_OF_CONTRACT ); } } @@ -5800,18 +5801,17 @@ void HandleSwitchToOpenFortifiedDoor( UINT32 sGridNo ) //remeber that the switch to open the forified door on level 1, has been pulled gJa25SaveStruct.ubStatusOfFortifiedDoor = FD__OPEN; - INT16 bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); + SoldierID bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); - if( bID != -1 ) + if( bID != NOBODY ) { - TacticalCharacterDialogue( &Menptr[ bID ], QUOTE_COMMENT_BEFORE_HANG_UP ); + TacticalCharacterDialogue( bID, QUOTE_COMMENT_BEFORE_HANG_UP ); } } void HandleSeeingPowerGenFan( UINT32 sGridNo ) { -// INT8 bID; - UINT8 ubPerson; + SoldierID ubPerson; BOOLEAN fFanIsStopped; BOOLEAN fFanHasBeenStopped; SOLDIERTYPE *pSoldier; @@ -5834,7 +5834,7 @@ void HandleSeeingPowerGenFan( UINT32 sGridNo ) if( ubPerson != NOBODY ) { - pSoldier = &Menptr[ ubPerson ]; + pSoldier = ubPerson; //if the fan is stopped And is this merc is a qualified merc but Not a power gen fan qualified merc? if( IsSoldierQualifiedMerc( pSoldier ) && fFanIsStopped ) @@ -5886,7 +5886,7 @@ void HandleSeeingPowerGenFan( UINT32 sGridNo ) } #endif -void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ) +void HandleBuddyExplosions(SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ) { // Flugente: Items can have secondary explosions if ( Item[usItem].usBuddyItem ) @@ -5907,7 +5907,7 @@ void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sG } // sevenfm: handle explosive items from attachments -BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj) +BOOLEAN HandleAttachedExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj) { BOOLEAN binderFound = FALSE; BOOLEAN detonator = FALSE; @@ -5946,7 +5946,7 @@ BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, IN NewLightEffect( sGridNo, (UINT8)Explosive[ Item[iter->usItem].ubClassIndex ].ubDuration, (UINT8)Explosive[iter->usItem].ubStartRadius ); } else { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, Item[iter->usItem].uiIndex, bLevel, direction , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, Item[iter->usItem].uiIndex, bLevel, direction, NULL ); } fAttFound = TRUE; } @@ -5955,17 +5955,17 @@ BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, IN { if(ItemIsGascan(iter->usItem)) { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, GAS_EXPLOSION, bLevel, DIRECTION_IRRELEVANT , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, GAS_EXPLOSION, bLevel, DIRECTION_IRRELEVANT, NULL ); fAttFound = TRUE; } if ( Item[iter->usItem].alcohol > 0.0f ) { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, MOLOTOV_EXPLOSION, bLevel, DIRECTION_IRRELEVANT , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, MOLOTOV_EXPLOSION, bLevel, DIRECTION_IRRELEVANT, NULL ); fAttFound = TRUE; } if(ItemIsMarbles(iter->usItem)) { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, FRAG_EXPLOSION, bLevel, DIRECTION_IRRELEVANT , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, FRAG_EXPLOSION, bLevel, DIRECTION_IRRELEVANT, NULL ); fAttFound = TRUE; } } @@ -6264,10 +6264,10 @@ void RoofDestruction( INT32 sGridNo, BOOLEAN fWithExplosion ) // if there is anybody at the floor level, damage them with the debris // we have to do this BEFORE people drop down. It would otherwise be possible for a falling person to avoid this damage, depending on order of collapsing and possible gridno-shifts. - UINT16 ubId = WhoIsThere2( sGridNo, 0 ); + SoldierID ubId = WhoIsThere2( sGridNo, 0 ); if ( ubId != NOBODY ) { - pSoldier = MercPtrs[ubId]; + pSoldier = ubId; pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection ); @@ -6283,7 +6283,7 @@ void RoofDestruction( INT32 sGridNo, BOOLEAN fWithExplosion ) ubId = WhoIsThere2( sGridNo, 1 ); if ( ubId != NOBODY ) { - pSoldier = MercPtrs[ubId]; + pSoldier = ubId; INT32 soldierdropoffgridno = sGridNo; if ( !IsLocationSittable( soldierdropoffgridno, FALSE ) ) diff --git a/TileEngine/Explosion Control.h b/TileEngine/Explosion Control.h index acea7f41..466a3ca0 100644 --- a/TileEngine/Explosion Control.h +++ b/TileEngine/Explosion Control.h @@ -13,20 +13,17 @@ // Explosion Data typedef struct { - UINT32 uiFlags; - - UINT8 ubOwner; - INT8 ubTypeID; - - UINT16 usItem; - - INT16 sX; // World X ( optional ) - INT16 sY; // World Y ( optional ) - INT16 sZ; // World Z ( optional ) - INT32 sGridNo; // World GridNo - BOOLEAN fLocate; - INT8 bLevel; // World level - UINT8 ubUnsed[1]; + UINT32 uiFlags; + SoldierID ubOwner; + INT8 ubTypeID; + UINT16 usItem; + INT16 sX; // World X ( optional ) + INT16 sY; // World Y ( optional ) + INT16 sZ; // World Z ( optional ) + INT32 sGridNo; // World GridNo + BOOLEAN fLocate; + INT8 bLevel; // World level + UINT8 ubUnsed[1]; } EXPLOSION_PARAMS; @@ -34,12 +31,11 @@ typedef struct typedef struct { EXPLOSION_PARAMS Params; - BOOLEAN fAllocated; - INT16 sCurrentFrame; - INT32 iID; - INT32 iLightID; - UINT8 ubUnsed[2]; - + BOOLEAN fAllocated; + INT16 sCurrentFrame; + INT32 iID; + INT32 iLightID; + UINT8 ubUnsed[2]; } EXPLOSIONTYPE; @@ -100,8 +96,8 @@ extern EXPLOSIONTYPE gExplosionData[ NUM_EXPLOSION_SLOTS ]; extern UINT8 gubElementsOnExplosionQueue; extern BOOLEAN gfExplosionQueueActive; -void IgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); -void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); +void IgniteExplosion( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); +void InternalIgniteExplosion( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); void GenerateExplosion( EXPLOSION_PARAMS *pExpParams ); @@ -110,10 +106,10 @@ void GenerateExplosion( EXPLOSION_PARAMS *pExpParams ); void HandleExplosionWarningAnimations( ); void DecayBombTimers( void ); -void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ); -BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ); -void ActivateSwitchInGridNo( UINT8 ubID, INT32 sGridNo ); -void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger ); +void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency ); +BOOLEAN SetOffBombsInGridNo( SoldierID ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ); +void ActivateSwitchInGridNo( SoldierID ubID, INT32 sGridNo ); +void SetOffPanicBombs( SoldierID ubID, INT8 bPanicTrigger ); void UpdateExplosionFrame( INT32 iIndex, INT16 sCurrentFrame ); void RemoveExplosionData( INT32 iIndex ); @@ -136,16 +132,16 @@ void RemoveActiveExplosionMarkers(); #define GASMASK_MIN_STATUS 70 // OJW - 20091028 - Explosion damage sync -BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent , BOOL fFromRemoteClient = FALSE ); -BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner , BOOL fFromRemoteClient = FALSE ); -void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum , BOOL fFromRemoteClient = FALSE , BOOL fNewSmokeEffect = FALSE ); +BOOLEAN DamageSoldierFromBlast( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient = FALSE ); +BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner, BOOL fFromRemoteClient = FALSE ); +void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum, BOOL fFromRemoteClient = FALSE, BOOL fNewSmokeEffect = FALSE ); void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemoteClient = FALSE ); // Flugente: activate everything connected to a tripwire in the surrounding if sGridNo on level bLevel with regard to the tripwire netwrok and hierarchy determined by ubFlag -BOOLEAN ActivateSurroundingTripwire( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ); +BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ); // Flugente: A special function for tripwire gun traps. Search if pObj has a gun attached. If so, fire a shot from that gun in a specific direction. Afterwards place the gun on the ground -void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT8 ubId, UINT8 ubDirection ); +void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, SoldierID ubId, UINT8 ubDirection ); extern void ToggleActionItemsByFrequency( INT8 bFrequency ); extern void PerformItemAction( INT32 sGridNo, OBJECTTYPE * pObj ); @@ -168,15 +164,17 @@ extern void HandleSeeingPowerGenFan( UINT32 sGridNo ); extern void HandleSeeingFortifiedDoor( UINT32 sGridNo );//Ja25 UB #endif -void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLEAN *pfRecompileMovementCosts, - BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT8 ubOwner, INT8 bLevel, +void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, + BOOLEAN *pfRecompileMovementCosts, + BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, + INT8 bLevel, UINT8 ubReason ); // Flugente: handle secondary explosive effects -void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ); +void HandleBuddyExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ); // sevenfm: handle explosive items from attachments -BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ); +BOOLEAN HandleAttachedExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ); void CheckForBuriedBombsAndRemoveFlags( INT32 sGridNo, INT8 bLevel ); UINT16 CalcTotalVolatility(OBJECTTYPE * pObj); BOOLEAN FindBinderAttachment (OBJECTTYPE * pObj); diff --git a/TileEngine/Interactive Tiles.cpp b/TileEngine/Interactive Tiles.cpp index 02741379..e3436c05 100644 --- a/TileEngine/Interactive Tiles.cpp +++ b/TileEngine/Interactive Tiles.cpp @@ -505,7 +505,7 @@ void LogMouseOverInteractiveTile( INT32 sGridNo ) } // Also, don't allow for mercs who are on upper level... - if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->pathing.bLevel == 1 ) + if ( gusSelectedSoldier != NOBODY && gusSelectedSoldier->pathing.bLevel == 1 ) { return; } @@ -789,7 +789,7 @@ BOOLEAN RefineLogicOnStruct( INT32 sGridNo, LEVELNODE *pNode ) return( FALSE ); } - if ( gusSelectedSoldier != NOBODY && MercPtrs[ gusSelectedSoldier ]->ubBodyType == ROBOTNOWEAPON ) + if ( gusSelectedSoldier != NOBODY && gusSelectedSoldier->ubBodyType == ROBOTNOWEAPON ) { return( FALSE ); } diff --git a/TileEngine/Isometric Utils.cpp b/TileEngine/Isometric Utils.cpp index bde2e369..9081d8b9 100644 --- a/TileEngine/Isometric Utils.cpp +++ b/TileEngine/Isometric Utils.cpp @@ -1336,10 +1336,11 @@ INT32 RandomGridNo() BOOLEAN GridNoNearPlayerMercs( INT32 sGridNo, INT16 sRadius ) { SOLDIERTYPE* pTeamSoldier = NULL; - INT32 cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - INT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier) + SoldierID cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + SoldierID lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + for ( ; cnt < lastid; ++cnt ) { + pTeamSoldier = cnt; if ( pTeamSoldier && pTeamSoldier->bActive && pTeamSoldier->bInSector ) { if ( PythSpacesAway(sGridNo, pTeamSoldier->sGridNo) < sRadius ) diff --git a/TileEngine/LightEffects.cpp b/TileEngine/LightEffects.cpp index 339d44d2..dcc07294 100644 --- a/TileEngine/LightEffects.cpp +++ b/TileEngine/LightEffects.cpp @@ -537,7 +537,7 @@ void ResetLightEffects() } // Flugente: create and destroy light sources tied to a person -void CreatePersonalLight( INT32 sGridNo, UINT8 ubID ) +void CreatePersonalLight( INT32 sGridNo, SoldierID ubID ) { INT32 iLightIndex = NewLightEffectInternal( sGridNo, 0, 1 ); @@ -548,7 +548,7 @@ void CreatePersonalLight( INT32 sGridNo, UINT8 ubID ) } } -void RemovePersonalLights( UINT8 ubID ) +void RemovePersonalLights( SoldierID ubID ) { LIGHTEFFECT *pLight; diff --git a/TileEngine/LightEffects.h b/TileEngine/LightEffects.h index fb34c466..00b9b603 100644 --- a/TileEngine/LightEffects.h +++ b/TileEngine/LightEffects.h @@ -25,7 +25,7 @@ typedef struct // Flugente: added variables necessary for dynamic (flash-)lighting INT32 flags; - UINT8 ubOwner; + SoldierID ubOwner; } LIGHTEFFECT; @@ -55,7 +55,7 @@ void ResetLightEffects(); BOOLEAN IsLightEffectAtTile( INT32 sGridNo ); // Flugente: create and destroy light sources tied to a person -void CreatePersonalLight( INT32 sGridNo, UINT8 ubID ); -void RemovePersonalLights( UINT8 ubID ); +void CreatePersonalLight( INT32 sGridNo, SoldierID ubID ); +void RemovePersonalLights(SoldierID ubID ); -#endif +#endif diff --git a/TileEngine/SmokeEffects.cpp b/TileEngine/SmokeEffects.cpp index 2f3de897..0aa998b0 100644 --- a/TileEngine/SmokeEffects.cpp +++ b/TileEngine/SmokeEffects.cpp @@ -192,7 +192,7 @@ UINT16 FromSmokeTypeToWorldFlags( INT8 bType ) -INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, BOOL fFromRemoteClient ) +INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOL fFromRemoteClient ) { SMOKEEFFECT *pSmoke; INT32 iSmokeIndex; @@ -204,14 +204,14 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, // OJW - 20091027 - Syncronising smoke effect start for multiplayer if (is_networked && is_client) { - SOLDIERTYPE* pSoldier = MercPtrs[ubOwner]; + SOLDIERTYPE* pSoldier = ubOwner; if (pSoldier != NULL) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) { // let all the other clients know we are spawning this effect // and align them with our random number generator - send_newsmokeeffect(sGridNo,usItem,ubOwner,bLevel,iSmokeIndex); + send_newsmokeeffect(sGridNo, usItem, bLevel, ubOwner, iSmokeIndex); } else if (!fFromRemoteClient) { @@ -222,7 +222,7 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, } #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"NewSmokeEffect ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i )\n",sGridNo, usItem , ubOwner , bLevel , iSmokeIndex ); + sprintf(tmpMPDbgString,"NewSmokeEffect ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i )\n",sGridNo, usItem , ubOwner.i , bLevel , iSmokeIndex ); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif @@ -327,12 +327,12 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, } // ATE: FALSE into subsequent-- it's the first one! - SpreadEffect( pSmoke->sGridNo, pSmoke->ubRadius, pSmoke->usItem, pSmoke->ubOwner, FALSE, bLevel, iSmokeIndex , fFromRemoteClient , TRUE ); + SpreadEffect( pSmoke->sGridNo, pSmoke->ubRadius, pSmoke->usItem, pSmoke->ubOwner, FALSE, bLevel, iSmokeIndex, fFromRemoteClient, TRUE ); return( iSmokeIndex ); } -INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration) +INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration) { SMOKEEFFECT *pSmoke; INT32 iSmokeIndex; @@ -348,14 +348,14 @@ INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, B // OJW - 20091027 - Synchronizing smoke effect start for multiplayer if (is_networked && is_client) { - SOLDIERTYPE* pSoldier = MercPtrs[ubOwner]; + SOLDIERTYPE* pSoldier = ubOwner; if (pSoldier != NULL) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) { // let all the other clients know we are spawning this effect // and align them with our random number generator - send_newsmokeeffect(sGridNo, usItem, ubOwner, bLevel, iSmokeIndex); + send_newsmokeeffect(sGridNo, usItem, bLevel, ubOwner, iSmokeIndex); } else if (!fFromRemoteClient) { @@ -366,7 +366,7 @@ INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, B } #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString, "NewSmokeEffect ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i )\n", sGridNo, usItem, ubOwner, bLevel, iSmokeIndex); + sprintf(tmpMPDbgString, "NewSmokeEffect ( sGridNo : %i , usItem : %i , ubOwner : %i , bLevel : %i , iSmokeEffectID : %i )\n", sGridNo, usItem, ubOwner.i, bLevel, iSmokeIndex); MPDebugMsg(tmpMPDbgString); gfMPDebugOutputRandoms = true; #endif diff --git a/TileEngine/SmokeEffects.h b/TileEngine/SmokeEffects.h index 6b776e32..ab4affe1 100644 --- a/TileEngine/SmokeEffects.h +++ b/TileEngine/SmokeEffects.h @@ -28,16 +28,16 @@ typedef struct TAG_SMOKE_EFFECT UINT8 ubDuration; // the number of turns gas will remain effective UINT8 ubRadius; // the current radius of the cloud in map tiles - UINT8 bFlags; // 0 - outdoors (fast spread), 1 - indoors (slow) + UINT8 bFlags; // 0 - outdoors (fast spread), 1 - indoors (slow) UINT8 bAge; // the number of turns gas has been around - BOOLEAN fAllocated; - INT8 bType; - UINT16 usItem; - UINT8 ubOwner; - UINT8 ubGeneration; - UINT32 uiTimeOfLastUpdate; - INT8 iMPTeamIndex; - INT32 iMPSmokeEffectID; + BOOLEAN fAllocated; + INT8 bType; + UINT16 usItem; + SoldierID ubOwner; + UINT8 ubGeneration; + UINT32 uiTimeOfLastUpdate; + INT8 iMPTeamIndex; + INT32 iMPSmokeEffectID; } SMOKEEFFECT; extern SMOKEEFFECT gSmokeEffectData[ NUM_SMOKE_EFFECT_SLOTS ]; @@ -57,7 +57,7 @@ void AddSmokeEffectToTile( INT32 iSmokeEffectID, INT8 bType, INT32 sGridNo, INT8 void RemoveSmokeEffectFromTile( INT32 sGridNo, INT8 bLevel ); -INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0); +INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0); BOOLEAN SaveSmokeEffectsToSaveGameFile( HWFILE hFile ); BOOLEAN LoadSmokeEffectsFromLoadGameFile( HWFILE hFile ); @@ -77,4 +77,4 @@ BOOLEAN CheckSmokeEffect(INT32 sGridNo, INT8 bLevel, INT8 bType); // find smoke effect on visible screen BOOLEAN FindVisibleSmokeEffect(INT8 bType); -#endif +#endif diff --git a/TileEngine/Tactical Placement GUI.cpp b/TileEngine/Tactical Placement GUI.cpp index d4c85236..d63a9a73 100644 --- a/TileEngine/Tactical Placement GUI.cpp +++ b/TileEngine/Tactical Placement GUI.cpp @@ -40,14 +40,20 @@ typedef struct MERCPLACEMENT { SOLDIERTYPE *pSoldier; - UINT32 uiVObjectID; - MOUSE_REGION region; - UINT8 ubStrategicInsertionCode; - BOOLEAN fPlaced; + UINT32 uiVObjectID; + MOUSE_REGION region; + UINT8 ubStrategicInsertionCode; + BOOLEAN fPlaced; }MERCPLACEMENT; MERCPLACEMENT *gMercPlacement = NULL; +UINT8 gfirstMercIndex = 0; // Index into gMercPlacement for the first visible merc face that is rendered +UINT16 gFacePanelXStart; // Defines the area for mouse wheel scrolling +UINT16 gFacePanelXEnd; +UINT16 gFacePanelYStart; +UINT16 gFacePanelYEnd; + enum { DONE_BUTTON, @@ -219,7 +225,314 @@ void CheckForValidMapEdge( UINT8 *pubStrategicInsertionCode ) } } -//#endif + +static UINT8 MaxRenderedFaces() +{ + // Based on OverheadInterface.sti files + if ( iResolution >= _640x480 && iResolution < _800x600 ) + { + return 20; + } + else if ( iResolution < _1024x768 ) + { + return 26; + } + else + { + return 34; + } +} + +static void InitializeMercScrollArea() +{ + // Based on OverheadInterface.sti files + gFacePanelXStart = 88 + xResOffset; + gFacePanelXEnd = SCREEN_WIDTH - xResOffset; + gFacePanelYStart = SCREEN_HEIGHT - 120; + gFacePanelYEnd = SCREEN_HEIGHT; +} + + +UINT32 gTacticalPlacementGUIPrevNextButtons[2]; +UINT32 gTacticalPlacementGUIPrevNextButtonImages[2]; +UINT32 gTacticalPlacementGUISliderBar; +MOUSE_REGION gTacticalPlacementGUISliderBarRegion; +UINT16 gScrollAreaXStart; +UINT16 gScrollAreaXEnd; +UINT16 gScrollAreaYStart; +UINT16 gScrollAreaYEnd; +UINT32 gScrollAreaGfx; + +static void IncreaseMercIndex() +{ + if ( gfirstMercIndex < (giPlacements - MaxRenderedFaces()) ) + { + if ( gfirstMercIndex + MaxRenderedFaces() >= giPlacements - 1 ) + { + gfirstMercIndex += 1; + } + else + { + gfirstMercIndex += 2; + } + gfTacticalPlacementGUIDirty = TRUE; + } +} + +static void DecreaseMercIndex() +{ + if ( gfirstMercIndex > 0 ) + { + if ( gfirstMercIndex == 1 ) + { + gfirstMercIndex -= 1; + } + else + { + gfirstMercIndex -= 2; + } + gfTacticalPlacementGUIDirty = TRUE; + } +} + +static void BtnTacticalPlacementNextCallback( GUI_BUTTON *btn, INT32 reason ) +{ + + if ( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + gfTacticalPlacementGUIDirty = TRUE; + btn->uiFlags |= (BUTTON_CLICKED_ON); + } + else if ( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if ( btn->uiFlags & BUTTON_CLICKED_ON ) + { + btn->uiFlags &= ~(BUTTON_CLICKED_ON); + + IncreaseMercIndex(); + } + } +} + +static void BtnTacticalPlacementPrevCallback( GUI_BUTTON *btn, INT32 reason ) +{ + + if ( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + gfTacticalPlacementGUIDirty = TRUE; + btn->uiFlags |= (BUTTON_CLICKED_ON); + } + else if ( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if ( btn->uiFlags & BUTTON_CLICKED_ON ) + { + btn->uiFlags &= ~(BUTTON_CLICKED_ON); + + DecreaseMercIndex(); + } + } +} + + +static void InitializeMercScrollButtons() +{ + UINT16 xPrev, xNext, y; + // Button locations based on OverheadInterface.sti files + xNext = SCREEN_WIDTH - 17 - xResOffset; + xPrev = 89 + xResOffset; + y = SCREEN_HEIGHT - 19; + + // time compression buttons + gTacticalPlacementGUIPrevNextButtonImages[0] = LoadButtonImage( "INTERFACE\\map_screen_bottom_arrows.sti", 10, 1, -1, 3, -1 ); + gTacticalPlacementGUIPrevNextButtonImages[1] = LoadButtonImage( "INTERFACE\\map_screen_bottom_arrows.sti", 9, 0, -1, 2, -1 ); + + + gTacticalPlacementGUIPrevNextButtons[0] = QuickCreateButton( gTacticalPlacementGUIPrevNextButtonImages[0], xNext, y, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 2, + (GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnTacticalPlacementNextCallback ); + + gTacticalPlacementGUIPrevNextButtons[1] = QuickCreateButton( gTacticalPlacementGUIPrevNextButtonImages[1], xPrev, y, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 2, + (GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnTacticalPlacementPrevCallback ); + + + SetButtonCursor( gTacticalPlacementGUIPrevNextButtons[0], MSYS_NO_CURSOR ); + SetButtonCursor( gTacticalPlacementGUIPrevNextButtons[1], MSYS_NO_CURSOR ); +} + +static void LoadSliderBar( void ) +{ + VOBJECT_DESC VObjectDesc; + + VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; + sprintf( VObjectDesc.ImageFile, "INTERFACE\\map_screen_bottom_arrows.sti" ); + if ( !AddVideoObject( &VObjectDesc, &gTacticalPlacementGUISliderBar ) ) + { + AssertMsg( 0, "Failed to load Interface\\map_screen_bottom_arrows.sti" ); + } + + + sprintf( VObjectDesc.ImageFile, "INTERFACE\\OverheadInterface_scrollarea.sti" ); + if ( !AddVideoObject( &VObjectDesc, &gScrollAreaGfx ) ) + { + AssertMsg( 0, "Failed to load Interface\\OverheadInterface_scrollarea.sti" ); + } +} + + +static void TacticalPlacementScrollBarCallBack( MOUSE_REGION *pRegion, INT32 iReason ) +{ + POINT MousePos; + UINT16 desiredMercIndex; + const UINT8 sliderWidth = 11; + const UINT16 sliderBarRange = gScrollAreaXEnd - gScrollAreaXStart - sliderWidth; + + if ( iReason & MSYS_CALLBACK_REASON_INIT ) + { + return; + } + + + if ( iReason & (MSYS_CALLBACK_REASON_LBUTTON_DWN | MSYS_CALLBACK_REASON_LBUTTON_REPEAT) ) + { + // region is supposed to be disabled if there aren't enough messages to scroll. Formulas assume this + if ( giPlacements > MaxRenderedFaces() ) + { + // where is the mouse? + GetCursorPos( &MousePos ); + ScreenToClient( ghWindow, &MousePos ); // In window coords! + + const UINT16 ubMouseXOffset = (UINT16)MousePos.x - gScrollAreaXStart; + + // if clicking in the top 5 pixels of the slider bar + if ( ubMouseXOffset < (sliderWidth / 2) ) + { + // scroll all the way to the top + desiredMercIndex = 0; + } + // if clicking in the bottom 6 pixels of the slider bar + else if ( ubMouseXOffset >= ((gScrollAreaXEnd - gScrollAreaXStart) - (sliderWidth / 2)) ) + { + // scroll all the way to the bottom + desiredMercIndex = giPlacements - MaxRenderedFaces(); + } + else + { + // somewhere in between + const UINT16 desiredSliderOffset = ubMouseXOffset - (sliderWidth / 2); + + Assert( desiredSliderOffset <= sliderBarRange ); + + // calculate what the index should be to place the slider at this offset (round fractions of .5+ up) + desiredMercIndex = ((desiredSliderOffset * (giPlacements - MaxRenderedFaces())) + (sliderBarRange / 2)) / sliderBarRange; + } + + // if it's a change + if ( desiredMercIndex != gfirstMercIndex ) + { + gfirstMercIndex = desiredMercIndex; + gfTacticalPlacementGUIDirty = TRUE; + } + } + } +} + + +static void CreateTacticalPlacementGUIScrollBarRegion( void ) +{ + // Locations based on OverheadInterface.sti files + gScrollAreaXStart = 104 + xResOffset; + gScrollAreaXEnd = SCREEN_WIDTH - 18 - xResOffset; + gScrollAreaYStart = SCREEN_HEIGHT - 19; + gScrollAreaYEnd = gScrollAreaYStart + 11; //SLIDER_HEIGHT / SLIDER_WIDTH in Map Screen Interface Bottom.cpp; + + MSYS_DefineRegion( &gTacticalPlacementGUISliderBarRegion, + gScrollAreaXStart, + gScrollAreaYStart, + gScrollAreaXEnd, + gScrollAreaYEnd, + MSYS_PRIORITY_HIGHEST, MSYS_NO_CURSOR, MSYS_NO_CALLBACK, TacticalPlacementScrollBarCallBack + ); +} + + +static void DisplayTacticalPlacementSlider() +{ + // will display the scroll bar icon + HVOBJECT hHandle; + + // only show the slider if there are more messages than will fit on screen + if ( giPlacements > MaxRenderedFaces() ) + { + // Slider bar area graphics + UINT16 imageIndex; + if ( (iResolution >= _640x480 && iResolution < _800x600) ) + { + imageIndex = 0; + } + else if ( iResolution < _1024x768 ) + { + imageIndex = 1; + } + else + { + imageIndex = 2; + } + + GetVideoObject( &hHandle, gScrollAreaGfx ); + BltVideoObject( FRAME_BUFFER, hHandle, imageIndex, gScrollAreaXStart, gScrollAreaYStart, VO_BLT_SRCTRANSPARENCY, NULL ); + + + // calculate where slider should be positioned + UINT8 sliderWidth = 11; + UINT16 sliderBarRange = gScrollAreaXEnd - gScrollAreaXStart - sliderWidth; + UINT16 ubSliderOffset = (sliderBarRange * gfirstMercIndex) / (giPlacements - MaxRenderedFaces()); + + GetVideoObject( &hHandle, gTacticalPlacementGUISliderBar ); + BltVideoObject( FRAME_BUFFER, hHandle, 8, gScrollAreaXStart + ubSliderOffset, gScrollAreaYStart + 1 , VO_BLT_SRCTRANSPARENCY, NULL ); + } +} + + +static void EnableDisableTacticalPlacementScrollButtonsAndRegions( void ) +{ + // if no scrolling required, or already showing the first merc + if ( (giPlacements <= MaxRenderedFaces()) || (gfirstMercIndex == 0) ) + { + DisableButton( gTacticalPlacementGUIPrevNextButtons[1] ); + ButtonList[gTacticalPlacementGUIPrevNextButtons[1]]->uiFlags &= ~(BUTTON_CLICKED_ON); + } + else + { + EnableButton( gTacticalPlacementGUIPrevNextButtons[1] ); + ShowButton( gTacticalPlacementGUIPrevNextButtons[1] ); + } + + // if no scrolling required, or already showing the last merc + if ( giPlacements <= MaxRenderedFaces() || + ((gfirstMercIndex + MaxRenderedFaces()) >= giPlacements) ) + { + DisableButton( gTacticalPlacementGUIPrevNextButtons[0] ); + ButtonList[gTacticalPlacementGUIPrevNextButtons[0]]->uiFlags &= ~(BUTTON_CLICKED_ON); + } + else + { + EnableButton( gTacticalPlacementGUIPrevNextButtons[0] ); + ShowButton( gTacticalPlacementGUIPrevNextButtons[0] ); + } + + if ( giPlacements <= MaxRenderedFaces()) + { + MSYS_DisableRegion( &gTacticalPlacementGUISliderBarRegion ); + HideButton( gTacticalPlacementGUIPrevNextButtons[0] ); + HideButton( gTacticalPlacementGUIPrevNextButtons[1] ); + } + else + { + MSYS_EnableRegion( &gTacticalPlacementGUISliderBarRegion ); + } +} + extern BOOLEAN gfTacticalDoHeliRun; @@ -227,12 +540,13 @@ void InitTacticalPlacementGUI() { islocked=0;//hayden VOBJECT_DESC VObjectDesc; - INT32 i, xp, yp; + INT32 xp, yp; UINT8 ubFaceIndex; gfTacticalPlacementGUIActive = TRUE; gfTacticalPlacementGUIDirty = TRUE; gfValidLocationsChanged = TRUE; gfTacticalPlacementFirstTime = TRUE; + gfirstMercIndex = 0; // WANNE - MP: Center gfCenter = FALSE; @@ -247,6 +561,10 @@ void InitTacticalPlacementGUI() //Enter overhead map GoIntoOverheadMap(); + MSYS_DisableRegion( &gRadarRegion ); // So it doesn't interfere with selecting mercs + InitializeMercScrollArea(); + LoadSliderBar(); + //Load the images VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; @@ -325,17 +643,17 @@ void InitTacticalPlacementGUI() //First pass: Count the number of mercs that are going to be placed by the player. // This determines the size of the array we will allocate. giPlacements = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - - if( MercPtrs[ i ]->bActive && !MercPtrs[ i ]->flags.fBetweenSectors && - CurrentBattleSectorIs( MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY, MercPtrs[i]->bSectorZ ) && - !( MercPtrs[ i ]->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) && // ATE Ignore vehicles - MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW && - MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT && - MercPtrs[ i ]->bAssignment != ASSIGNMENT_REBELCOMMAND && - !( MercPtrs[i]->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) && - MercPtrs[ i ]->bAssignment != IN_TRANSIT ) + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && !pSoldier->flags.fBetweenSectors && + CurrentBattleSectorIs( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) && + !( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) && // ATE Ignore vehicles + pSoldier->bAssignment != ASSIGNMENT_POW && + pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && + pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND && + !( pSoldier->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) && + pSoldier->bAssignment != IN_TRANSIT ) { ++giPlacements; } @@ -345,60 +663,61 @@ void InitTacticalPlacementGUI() Assert( gMercPlacement ); //Second pass: Assign the mercs to their respective slots. giPlacements = 0; - for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) + for( SoldierID i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++i ) { - if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !MercPtrs[ i ]->flags.fBetweenSectors && - CurrentBattleSectorIs( MercPtrs[i]->sSectorX, MercPtrs[i]->sSectorY, MercPtrs[i]->bSectorZ ) && - MercPtrs[ i ]->bAssignment != ASSIGNMENT_POW && - MercPtrs[ i ]->bAssignment != ASSIGNMENT_MINIEVENT && - MercPtrs[ i ]->bAssignment != ASSIGNMENT_REBELCOMMAND && - !( MercPtrs[i]->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) && - MercPtrs[ i ]->bAssignment != IN_TRANSIT && - !( MercPtrs[ i ]->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) ) // ATE Ignore vehicles + SOLDIERTYPE *pSoldier = i; + if( pSoldier->bActive && pSoldier->stats.bLife && !pSoldier->flags.fBetweenSectors && + CurrentBattleSectorIs( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) && + pSoldier->bAssignment != ASSIGNMENT_POW && + pSoldier->bAssignment != ASSIGNMENT_MINIEVENT && + pSoldier->bAssignment != ASSIGNMENT_REBELCOMMAND && + !( pSoldier->usSoldierFlagMask2 & SOLDIER_CONCEALINSERTION ) && + pSoldier->bAssignment != IN_TRANSIT && + !( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE ) ) ) // ATE Ignore vehicles { // Flugente: if options allow it and we entered this sector - in combat - via helicopter, then allow us free selection of our entry point, and drop us from the helicopter - if ( MercPtrs[ i ]->bTeam == gbPlayerNum && (gGameExternalOptions.ubSkyriderHotLZ == 1 || gGameExternalOptions.ubSkyriderHotLZ == 3) && MercPtrs[ i ]->usSoldierFlagMask & SOLDIER_AIRDROP ) + if ( pSoldier->bTeam == gbPlayerNum && (gGameExternalOptions.ubSkyriderHotLZ == 1 || gGameExternalOptions.ubSkyriderHotLZ == 3) && pSoldier->usSoldierFlagMask & SOLDIER_AIRDROP ) { - AddMercToHeli( MercPtrs[ i ]->ubID ); + AddMercToHeli( pSoldier->ubID ); DisableButton(iTPButtons[SPREAD_BUTTON]); gMercPlacement[ giPlacements ].ubStrategicInsertionCode = INSERTION_CODE_CHOPPER; - MercPtrs[ i ]->ubStrategicInsertionCode = INSERTION_CODE_CHOPPER; + pSoldier->ubStrategicInsertionCode = INSERTION_CODE_CHOPPER; gfCenter = TRUE; } if ( GetEnemyEncounterCode() == ENEMY_AMBUSH_DEPLOYMENT_CODE ) { gMercPlacement[giPlacements].ubStrategicInsertionCode = INSERTION_CODE_CENTER; - MercPtrs[i]->ubStrategicInsertionCode = INSERTION_CODE_CENTER; + pSoldier->ubStrategicInsertionCode = INSERTION_CODE_CENTER; gfCenter = TRUE; } // WANNE - MP: Check if the desired insertion direction is valid on the map. If not, choose another entry direction! if (is_networked) { - MercPtrs[ i ]->ubStrategicInsertionCode = GetValidInsertionDirectionForMP(MercPtrs[ i ]->ubStrategicInsertionCode); + pSoldier->ubStrategicInsertionCode = GetValidInsertionDirectionForMP(pSoldier->ubStrategicInsertionCode); } // ATE: If we are in a vehicle - remove ourselves from it! - //if ( MercPtrs[ i ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) + //if ( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) //{ - // RemoveSoldierFromVehicle( MercPtrs[ i ], MercPtrs[ i ]->bVehicleID ); + // RemoveSoldierFromVehicle( pSoldier, pSoldier->bVehicleID ); //} - if( MercPtrs[ i ]->ubStrategicInsertionCode == INSERTION_CODE_PRIMARY_EDGEINDEX || - MercPtrs[ i ]->ubStrategicInsertionCode == INSERTION_CODE_SECONDARY_EDGEINDEX ) + if( pSoldier->ubStrategicInsertionCode == INSERTION_CODE_PRIMARY_EDGEINDEX || + pSoldier->ubStrategicInsertionCode == INSERTION_CODE_SECONDARY_EDGEINDEX ) { - MercPtrs[ i ]->ubStrategicInsertionCode = (UINT8)MercPtrs[ i ]->usStrategicInsertionData; + pSoldier->ubStrategicInsertionCode = (UINT8)pSoldier->usStrategicInsertionData; } - gMercPlacement[ giPlacements ].pSoldier = MercPtrs[ i ]; - gMercPlacement[ giPlacements ].ubStrategicInsertionCode = MercPtrs[ i ]->ubStrategicInsertionCode; + gMercPlacement[ giPlacements ].pSoldier = pSoldier; + gMercPlacement[ giPlacements ].ubStrategicInsertionCode = pSoldier->ubStrategicInsertionCode; gMercPlacement[ giPlacements ].fPlaced = FALSE; // WANNE: We always want to have edgepoints - CheckForValidMapEdge( &MercPtrs[ i ]->ubStrategicInsertionCode ); + CheckForValidMapEdge( &pSoldier->ubStrategicInsertionCode ); // Flugente: campaign stats - switch( MercPtrs[ i ]->ubStrategicInsertionCode ) + switch( pSoldier->ubStrategicInsertionCode ) { case INSERTION_CODE_NORTH: gCurrentIncident.usIncidentFlags |= INCIDENT_ATTACKDIR_NORTH; @@ -415,7 +734,7 @@ void InitTacticalPlacementGUI() } // WANNE - MP: Center - if (is_networked && MercPtrs[ i ]->ubStrategicInsertionCode == INSERTION_CODE_CENTER) + if (is_networked && pSoldier->ubStrategicInsertionCode == INSERTION_CODE_CENTER) { gfCenter = TRUE; } @@ -425,7 +744,7 @@ void InitTacticalPlacementGUI() } //add all the faces now - for( i = 0; i < giPlacements; ++i ) + for( INT32 i = 0; i < giPlacements; ++i ) { VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; @@ -472,7 +791,7 @@ void InitTacticalPlacementGUI() } //yp = (i % 2) ? 412 : 361; - MSYS_DefineRegion( &gMercPlacement[ i ].region, (UINT16)xp, (UINT16)yp, (UINT16)(xp + 54), (UINT16)(yp + 62), MSYS_PRIORITY_HIGH, 0, MercMoveCallback, MercClickCallback ); + MSYS_DefineRegion( &gMercPlacement[ i ].region, (UINT16)xp, (UINT16)yp, (UINT16)(xp + 54), (UINT16)(yp + 51), MSYS_PRIORITY_HIGH, 0, MercMoveCallback, MercClickCallback ); } if(!is_client) @@ -482,7 +801,7 @@ void InitTacticalPlacementGUI() { ButtonList[ iTPButtons[ GROUP_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON; - for( i = 0; i < giPlacements; ++i ) + for( INT32 i = 0; i < giPlacements; ++i ) { //go from the currently selected soldier to the end if( !gMercPlacement[ i ].fPlaced ) { //Found an unplaced merc. Select him. @@ -496,6 +815,9 @@ void InitTacticalPlacementGUI() } } } + + InitializeMercScrollButtons(); + CreateTacticalPlacementGUIScrollBarRegion(); } // WANNE - MP: This method checks, if the desired entry direction (N, E, S, W) on the map is valid. If not it chooses the next valid diretion @@ -609,6 +931,15 @@ UINT8 GetValidInsertionDirectionForMP(UINT8 currentInsertionPoint) return validInsertionDirection; } + +static void DisableFaceMouseRegions() +{ + for ( size_t i = 0; i < giPlacements; i++ ) + { + MSYS_DisableRegion( &gMercPlacement[i].region ); + } +} + void RenderTacticalPlacementGUI() { INT32 i, xp, yp, width, height; @@ -619,26 +950,31 @@ void RenderTacticalPlacementGUI() CHAR16 str[ 128 ]; UINT8 *pDestBuf; UINT8 ubColor; + const UINT8 maxFaces = MaxRenderedFaces(); if( gfTacticalPlacementFirstTime ) { gfTacticalPlacementFirstTime = FALSE; DisableScrollMessages(); } + EnableDisableTacticalPlacementScrollButtonsAndRegions(); //Check to make sure that if we have a hilighted merc (not selected) and the mouse has moved out //of it's region, then we will clear the hilighted ID, and refresh the display. if( !gfTacticalPlacementGUIDirty && gbHilightedMercID != -1 ) { - xp = xResOffset + 91 + (gbHilightedMercID / 2) * 54; + // Shift the index so we render the faces at the right locations + UINT8 highlightedMercIndex = gbHilightedMercID - gfirstMercIndex; - if (gbHilightedMercID % 2) + xp = xResOffset + 91 + (highlightedMercIndex / 2) * 54; + + if ( highlightedMercIndex % 2) { - yp = SCREEN_HEIGHT - 68; + yp = SCREEN_HEIGHT - 71; } else { - yp = SCREEN_HEIGHT - 119; + yp = SCREEN_HEIGHT - 122; } //yp = (gbHilightedMercID % 2) ? 412 : 361; @@ -656,33 +992,46 @@ void RenderTacticalPlacementGUI() if( gfTacticalPlacementGUIDirty ) { BltVideoObjectFromIndex( FRAME_BUFFER, giOverheadPanelImage, 0, xResOffset, SCREEN_HEIGHT - 160, VO_BLT_SRCTRANSPARENCY, 0 ); - InvalidateRegion( 0 + xResOffset, SCREEN_HEIGHT - 160, 320 + xResOffset, SCREEN_HEIGHT ); + InvalidateRegion( 0 + xResOffset, SCREEN_HEIGHT - 160, SCREEN_WIDTH, SCREEN_HEIGHT ); gfTacticalPlacementGUIDirty = FALSE; MarkButtonsDirty(); //DisableHilightsAndHelpText(); //RenderButtons(); //EnableHilightsAndHelpText(); - for( i = 0; i < giPlacements; ++i ) + + DisableFaceMouseRegions(); + UINT8 end = min(giPlacements, gfirstMercIndex + maxFaces); + for( UINT8 j = gfirstMercIndex; j < end; ++j ) { //Render the mercs - pSoldier = gMercPlacement[ i ].pSoldier; - + pSoldier = gMercPlacement[ j ].pSoldier; + + // Shift the index so we render the faces at the right locations + i = j - gfirstMercIndex; + xp = xResOffset + 95 + (i / 2) * 54; if (i % 2) { - yp = SCREEN_HEIGHT - 58; + yp = SCREEN_HEIGHT - 61; } else { - yp = SCREEN_HEIGHT - 109; + yp = SCREEN_HEIGHT - 112; } + // Shift the mouse region as well + gMercPlacement[j].region.RegionTopLeftX = xp; + gMercPlacement[j].region.RegionTopLeftY = yp; + gMercPlacement[j].region.RegionBottomRightX = xp + 54; + gMercPlacement[j].region.RegionBottomRightY = yp + 51; + MSYS_EnableRegion( &gMercPlacement[j].region ); + //yp = (i % 2) ? 422 : 371; ColorFillVideoSurfaceArea( FRAME_BUFFER, xp+36, yp+2, xp+44, yp+30, 0 ); BltVideoObjectFromIndex( FRAME_BUFFER, giMercPanelImage, 0, xp, yp, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObjectFromIndex( FRAME_BUFFER, gMercPlacement[ i ].uiVObjectID, 0, xp+2, yp+2, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObjectFromIndex( FRAME_BUFFER, gMercPlacement[ j ].uiVObjectID, 0, xp+2, yp+2, VO_BLT_SRCTRANSPARENCY, NULL ); //HEALTH BAR if( !pSoldier->stats.bLife ) @@ -724,6 +1073,8 @@ void RenderTacticalPlacementGUI() //Shade out the part of the tactical map that isn't considered placable. BlitBufferToBuffer(FRAME_BUFFER, guiSAVEBUFFER, 0, SCREEN_HEIGHT - 160, SCREEN_WIDTH, 160); + + DisplayTacticalPlacementSlider(); } if( gfValidLocationsChanged ) @@ -1053,31 +1404,35 @@ void RenderTacticalPlacementGUI() UnLockVideoSurface( FRAME_BUFFER ); } - for( i = 0; i < giPlacements; ++i ) + UINT8 end = min( giPlacements, gfirstMercIndex + maxFaces ); + for ( UINT8 j = gfirstMercIndex; j < end; ++j ) { - //Render the merc's names - pSoldier = gMercPlacement[ i ].pSoldier; + //Render the mercs + pSoldier = gMercPlacement[j].pSoldier; + + // Shift the index so we render the faces at the right locations + i = j - gfirstMercIndex; xp = xResOffset + 95 + (i / 2) * 54; if (i % 2) { - yp = SCREEN_HEIGHT - 58; + yp = SCREEN_HEIGHT - 61; } else { - yp = SCREEN_HEIGHT - 109; + yp = SCREEN_HEIGHT - 112; } //yp = (i % 2) ? 422 : 371; //NAME - if( gubDefaultButton == GROUP_BUTTON && gMercPlacement[ i ].pSoldier->ubGroupID == gubSelectedGroupID || - gubDefaultButton != GROUP_BUTTON && i == gbSelectedMercID ) + if( gubDefaultButton == GROUP_BUTTON && gMercPlacement[ j ].pSoldier->ubGroupID == gubSelectedGroupID || + gubDefaultButton != GROUP_BUTTON && j == gbSelectedMercID ) { ubColor = FONT_YELLOW; } - else if( gubDefaultButton == GROUP_BUTTON && gMercPlacement[ i ].pSoldier->ubGroupID == gubHilightedGroupID || - gubDefaultButton != GROUP_BUTTON && i == gbHilightedMercID ) + else if( gubDefaultButton == GROUP_BUTTON && gMercPlacement[ j ].pSoldier->ubGroupID == gubHilightedGroupID || + gubDefaultButton != GROUP_BUTTON && j == gbHilightedMercID ) { ubColor = FONT_WHITE; } @@ -1090,7 +1445,7 @@ void RenderTacticalPlacementGUI() SetFontShadow( 141 ); //Render the question mark over the face if the merc hasn't yet been placed. - if( gMercPlacement[ i ].fPlaced ) + if( gMercPlacement[ j ].fPlaced ) { RegisterBackgroundRect( BGND_FLAG_SINGLE, NULL, (INT16)(xp + 16), (INT16)(yp + 14), (INT16)(xp + 24), (INT16)(yp + 22) ); } @@ -1165,6 +1520,29 @@ void lockui (bool unlock) //lock onluck ui for lan //hayden } } +static void HandleMouseWheelScroll( void ) +{ + // Scroll through pages with regular mouse wheel + SGPPoint MousePos; + GetMousePos( &MousePos ); + const auto x = MousePos.iX; + const auto y = MousePos.iY; + if ( (gFacePanelXStart < x && x < gFacePanelXEnd) && (gFacePanelYStart < y && y < gFacePanelYEnd) ) + { + const auto Wheelstate = _WheelValue * (gGameSettings.fOptions[TOPTION_INVERT_WHEEL] ? -1 : 1); + if ( Wheelstate < 0 ) + { + IncreaseMercIndex(); + } + else if ( Wheelstate > 0 ) + { + DecreaseMercIndex(); + } + _WheelValue = 0; + } +} + + void TacticalPlacementHandle() { InputAtom InputEvent; @@ -1330,6 +1708,7 @@ void TacticalPlacementHandle() } ScrollOverheadMap();//dnl ch45 021009 + HandleMouseWheelScroll(); } void KillTacticalPlacementGUI() @@ -1364,6 +1743,16 @@ void KillTacticalPlacementGUI() MSYS_RemoveRegion( &gMercPlacement[ i ].region ); } + for ( size_t i = 0; i < 2; i++ ) + { + UnloadButtonImage( gTacticalPlacementGUIPrevNextButtonImages[i] ); + RemoveButton( gTacticalPlacementGUIPrevNextButtons[i] ); + } + MSYS_RemoveRegion( &gTacticalPlacementGUISliderBarRegion ); + DeleteVideoObjectFromIndex( gTacticalPlacementGUISliderBar ); + DeleteVideoObjectFromIndex( gScrollAreaGfx ); + + if( gsCurInterfacePanel < 0 || gsCurInterfacePanel >= NUM_UI_PANELS ) gsCurInterfacePanel = TEAM_PANEL; diff --git a/TileEngine/Tile Animation.cpp b/TileEngine/Tile Animation.cpp index 339c7770..ad54b10d 100644 --- a/TileEngine/Tile Animation.cpp +++ b/TileEngine/Tile Animation.cpp @@ -572,11 +572,11 @@ void UpdateAniTiles( ) { // Do sound.... // PlayJA2Sample( AIR_ESCAPING_1, RATE_11025, SoundVolume( HIGHVOLUME, pNode->sGridNo ), 1, SoundDir( pNode->sGridNo ) ); - NewSmokeEffect( pNode->sGridNo, (UINT16)pNode->uiUserData, gExplosionData[ pNode->uiUserData3 ].Params.bLevel, (UINT8)pNode->ubUserData2 ); + NewSmokeEffect( pNode->sGridNo, (UINT16)pNode->uiUserData, gExplosionData[ pNode->uiUserData3 ].Params.bLevel, pNode->ubUserData2 ); } else { - SpreadEffect( pNode->sGridNo, (UINT8)Explosive[ Item[ (UINT16)pNode->uiUserData ].ubClassIndex ].ubRadius, (UINT16)pNode->uiUserData, (UINT8)pNode->ubUserData2, FALSE, gExplosionData[ pNode->uiUserData3 ].Params.bLevel, -1 ); + SpreadEffect( pNode->sGridNo, (UINT8)Explosive[ Item[ (UINT16)pNode->uiUserData ].ubClassIndex ].ubRadius, (UINT16)pNode->uiUserData, pNode->ubUserData2, FALSE, gExplosionData[ pNode->uiUserData3 ].Params.bLevel, -1 ); } // Forfait any other animations this frame.... return; diff --git a/TileEngine/Tile Animation.h b/TileEngine/Tile Animation.h index a428c77b..b209a7d9 100644 --- a/TileEngine/Tile Animation.h +++ b/TileEngine/Tile Animation.h @@ -38,70 +38,70 @@ typedef struct TAG_anitile { - struct TAG_anitile *pNext; - UINT32 uiFlags; // flags struct - UINT32 uiTimeLastUpdate; // Stuff for animated tiles + struct TAG_anitile *pNext; + UINT32 uiFlags; // flags struct + UINT32 uiTimeLastUpdate; // Stuff for animated tiles - LEVELNODE *pLevelNode; - UINT8 ubLevelID; - INT16 sCurrentFrame; - INT16 sStartFrame; - INT16 sDelay; - UINT16 usTileType; - UINT16 usNumFrames; + LEVELNODE *pLevelNode; + UINT8 ubLevelID; + INT16 sCurrentFrame; + INT16 sStartFrame; + INT16 sDelay; + UINT16 usTileType; + UINT16 usNumFrames; - UINT16 usMissAnimationPlayed; - UINT16 ubAttackerMissed; - INT16 sRelativeX; - INT16 sRelativeY; - INT16 sRelativeZ; - INT32 sGridNo; - UINT16 usTileIndex; + UINT16 usMissAnimationPlayed; + SoldierID ubAttackerMissed; + INT16 sRelativeX; + INT16 sRelativeY; + INT16 sRelativeZ; + INT32 sGridNo; + UINT16 usTileIndex; - UINT16 usCachedTileSubIndex; // sub Index - INT16 sCachedTileID; // Index into cached tile ID + UINT16 usCachedTileSubIndex; // sub Index + INT16 sCachedTileID; // Index into cached tile ID - UINT8 ubOwner; - UINT8 ubKeyFrame1; - UINT32 uiKeyFrame1Code; - UINT8 ubKeyFrame2; - UINT32 uiKeyFrame2Code; + UINT8 ubOwner; + UINT8 ubKeyFrame1; + UINT32 uiKeyFrame1Code; + UINT8 ubKeyFrame2; + UINT32 uiKeyFrame2Code; - UINT32 uiUserData; - UINT8 ubUserData2; - UINT32 uiUserData3; + UINT32 uiUserData; + UINT16 ubUserData2; // NOTE: Expanded the type due to SoldierID + UINT32 uiUserData3; - INT8 bFrameCountAfterStart; - INT32 lightSprite; + INT8 bFrameCountAfterStart; + INT32 lightSprite; } ANITILE; typedef struct TAG_anitile_params { - UINT32 uiFlags; // flags struct - UINT8 ubLevelID; // Level ID for rendering layer - INT16 sStartFrame; // Start frame - INT16 sDelay; // Delay time - UINT16 usTileType; // Tile databse type ( optional ) - UINT16 usTileIndex; // Tile database index ( optional ) - INT16 sX; // World X ( optional ) - INT16 sY; // World Y ( optional ) - INT16 sZ; // World Z ( optional ) - INT32 sGridNo; // World GridNo + UINT32 uiFlags; // flags struct + UINT8 ubLevelID; // Level ID for rendering layer + INT16 sStartFrame; // Start frame + INT16 sDelay; // Delay time + UINT16 usTileType; // Tile databse type ( optional ) + UINT16 usTileIndex; // Tile database index ( optional ) + INT16 sX; // World X ( optional ) + INT16 sY; // World Y ( optional ) + INT16 sZ; // World Z ( optional ) + INT32 sGridNo; // World GridNo - LEVELNODE *pGivenLevelNode; // Levelnode for existing tile ( optional ) - CHAR8 zCachedFile[ 100 ]; // Filename for cached tile name ( optional ) + LEVELNODE *pGivenLevelNode; // Levelnode for existing tile ( optional ) + CHAR8 zCachedFile[ 100 ]; // Filename for cached tile name ( optional ) - UINT8 ubOwner; // UBID for the owner - UINT8 ubKeyFrame1; // Key frame 1 - UINT32 uiKeyFrame1Code; // Key frame code - UINT8 ubKeyFrame2; // Key frame 2 - UINT32 uiKeyFrame2Code; // Key frame code + UINT8 ubOwner; // UBID for the owner + UINT8 ubKeyFrame1; // Key frame 1 + UINT32 uiKeyFrame1Code; // Key frame code + UINT8 ubKeyFrame2; // Key frame 2 + UINT32 uiKeyFrame2Code; // Key frame code - UINT32 uiUserData; - UINT8 ubUserData2; - UINT32 uiUserData3; - INT32 lightSprite; + UINT32 uiUserData; + UINT16 ubUserData2; // NOTE: Expanded the type due to SoldierID + UINT32 uiUserData3; + INT32 lightSprite; } ANITILE_PARAMS; diff --git a/TileEngine/overhead map.cpp b/TileEngine/overhead map.cpp index 58ca53fc..e67fd496 100644 --- a/TileEngine/overhead map.cpp +++ b/TileEngine/overhead map.cpp @@ -567,7 +567,7 @@ void HandleOverheadMap( ) if( !gfEditMode && !gfTacticalPlacementGUIActive && gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ gusSelectedSoldier ]; + pSoldier = gusSelectedSoldier; DisplayMercNameInOverhead( pSoldier ); } @@ -747,7 +747,7 @@ void GoIntoOverheadMap( ) // Make sure we are in team panel mode... gfSwitchPanel = TRUE; gbNewPanel = TEAM_PANEL; - gubNewPanelParam = (UINT8)gusSelectedSoldier; + gubNewPanelParam = gusSelectedSoldier; fInterfacePanelDirty = DIRTYLEVEL2; // Disable tactical buttons...... @@ -768,7 +768,7 @@ void HandleOverheadUI(void) { INT32 sMousePos = 0; InputAtom InputEvent; - UINT8 ubID; + SoldierID ubID; // CHECK FOR MOUSE OVER REGIONS... if(GetOverheadMouseGridNo(&sMousePos)) @@ -1377,11 +1377,10 @@ void RenderOverheadOverlays() { UINT32 uiDestPitchBYTES; WORLDITEM *pWorldItem; - UINT32 i; SOLDIERTYPE *pSoldier; HVOBJECT hVObject; INT16 sX, sY; - UINT16 end; + SoldierID id, end; UINT16 usLineColor=0; UINT8 *pDestBuf; UINT8 ubPassengers = 0; @@ -1415,10 +1414,10 @@ void RenderOverheadOverlays() || RebelCommand::ShowApproximateEnemyLocations()) marklastenemy = TRUE; - for( i = 0; i < end; ++i ) + for( id = 0; id < end; ++id ) { //First, check to see if the soldier exists and is in the sector. - pSoldier = MercPtrs[ i ]; + pSoldier = id; if( !pSoldier->bActive || !pSoldier->bInSector ) continue; //Soldier is here. Calculate his screen position based on his current gridno. @@ -1694,7 +1693,7 @@ void RenderOverheadOverlays() FLOAT radius_inner = radius - thickness / 2; FLOAT radius_outer = radius + thickness / 2; - for( i = 0 ; i < guiNumWorldItems; ++i ) + for( UINT32 i = 0 ; i < guiNumWorldItems; ++i ) { pWorldItem = &gWorldItems[ i ]; if( !pWorldItem || !pWorldItem->fExists ) diff --git a/TileEngine/physics.cpp b/TileEngine/physics.cpp index 3d0c699a..dc09c934 100644 --- a/TileEngine/physics.cpp +++ b/TileEngine/physics.cpp @@ -160,7 +160,7 @@ REAL_OBJECT& REAL_OBJECT::operator =(OLD_REAL_OBJECT_101 &src) this->dLifeSpan = src.dLifeSpan; this->fFirstTimeMoved = src.fFirstTimeMoved; this->sFirstGridNo = src.sFirstGridNo; - this->ubOwner = src.ubOwner; + this->ubOwner = static_cast(src.ubOwner); this->ubActionCode = src.ubActionCode; this->uiActionData = src.uiActionData; this->fDropItem = src.fDropItem; @@ -175,7 +175,7 @@ REAL_OBJECT& REAL_OBJECT::operator =(OLD_REAL_OBJECT_101 &src) this->fPotentialForDebug = src.fPotentialForDebug; this->sLevelNodeGridNo = src.sLevelNodeGridNo; this->iSoundID = src.iSoundID; - this->ubLastTargetTakenDamage = src.ubLastTargetTakenDamage; + this->ubLastTargetTakenDamage = static_cast(src.ubLastTargetTakenDamage); return *this; } @@ -214,7 +214,7 @@ void RecountObjectSlots(void) } -INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, UINT8 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ) +INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ) { INT32 iObjectIndex; FLOAT mass; @@ -258,7 +258,7 @@ INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, r pObject->Position.z = zPos; pObject->fVisible = TRUE; pObject->fTestObject = fTestObject; - pObject->ubOwner = ubOwner; + pObject->ubOwner = ubOwner; pObject->ubActionCode = ubActionCode; pObject->uiActionData = uiActionData; pObject->fDropItem = TRUE; @@ -546,7 +546,7 @@ BOOLEAN PhysicsUpdateLife( REAL_OBJECT *pObject, real DeltaTime ) { SOLDIERTYPE *pSoldier; - pSoldier = MercPtrs[ pObject->ubLastTargetTakenDamage ]; + pSoldier = pObject->ubLastTargetTakenDamage; bLevel = pSoldier->pathing.bLevel; } @@ -1120,10 +1120,10 @@ BOOLEAN PhysicsCheckForCollisions( REAL_OBJECT *pObject, INT32 *piCollisionID ) { gTacticalStatus.ubAttackBusyCount++; DebugAttackBusy( String( "Incrementing attack busy because of delayed water explosion. Now %d\n", gTacticalStatus.ubAttackBusyCount ) ); - AniParams.ubKeyFrame1 = 11; + AniParams.ubKeyFrame1 = 11; AniParams.uiKeyFrame1Code = ANI_KEYFRAME_CHAIN_WATER_EXPLOSION; AniParams.uiUserData = pObject->Obj.usItem; - AniParams.ubUserData2 = pObject->ubOwner; + AniParams.ubUserData2 = pObject->ubOwner; } pNode = CreateAnimationTile( &AniParams ); @@ -2188,7 +2188,7 @@ BOOLEAN CalculateLaunchItemChanceToGetThrough( SOLDIERTYPE *pSoldier, OBJECTTYPE if ( pSoldier->sGridNo == sGridNo ) { - printf("Warning! Soldier #%d attempted to launch item at himself\n", pSoldier->ubID); + printf("Warning! Soldier #%d attempted to launch item at himself\n", pSoldier->ubID.i); return FALSE; } // Ge7t basic launch params... @@ -2471,7 +2471,7 @@ void CheckForObjectHittingMerc( REAL_OBJECT *pObject, UINT16 usStructureID ) // Is it a guy? if ( usStructureID < INVALID_STRUCTURE_ID ) { - if ( pObject->ubLastTargetTakenDamage != (UINT8)usStructureID ) + if ( pObject->ubLastTargetTakenDamage != usStructureID ) { // Flugente: if this fails, something is very wrong indeed Assert(usStructureIDEVENT_SoldierGotHit( NOTHING, sDamage, sBreath, pSoldier->ubDirection, 0, pObject->ubOwner, FIRE_WEAPON_TOSSED_OBJECT_SPECIAL, 0, 0, NOWHERE ); - pObject->ubLastTargetTakenDamage = (UINT8)( usStructureID ); + pObject->ubLastTargetTakenDamage = usStructureID; } } } @@ -2734,7 +2734,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) (*pObj)[0]->data.misc.bDelay = 1; // for non-player grenades, add turn so player could disarm grenade or run away - if ( pObject->ubOwner != NOBODY && MercPtrs[pObject->ubOwner]->bTeam != gbPlayerNum ) + if ( pObject->ubOwner != NOBODY && pObject->ubOwner->bTeam != gbPlayerNum ) { (*pObj)[0]->data.misc.bDelay++; } @@ -2762,7 +2762,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject ) if ( pObject->ubOwner != NOBODY && !fGoodStatus ) { - MercPtrs[ pObject->ubOwner ]->DoMercBattleSound( (INT8)( BATTLE_SOUND_CURSE1 ) ); + pObject->ubOwner->DoMercBattleSound( (INT8)( BATTLE_SOUND_CURSE1 ) ); } } } diff --git a/TileEngine/physics.h b/TileEngine/physics.h index 4ff5afdf..17ed89ea 100644 --- a/TileEngine/physics.h +++ b/TileEngine/physics.h @@ -118,8 +118,8 @@ public: FLOAT dLifeSpan; BOOLEAN fFirstTimeMoved; INT32 sFirstGridNo; - UINT8 ubOwner; - UINT8 ubActionCode; + SoldierID ubOwner; + UINT8 ubActionCode; UINT32 uiActionData; BOOLEAN fDropItem; UINT32 uiNumTilesMoved; @@ -133,7 +133,7 @@ public: BOOLEAN fPotentialForDebug; INT32 sLevelNodeGridNo; INT32 iSoundID; - UINT8 ubLastTargetTakenDamage; + SoldierID ubLastTargetTakenDamage; // OJW - 20091002 - mp explosives UINT8 mpTeam; // the intiating clients team INT32 mpRealObjectID; // ID from the initiating client @@ -153,7 +153,7 @@ extern REAL_OBJECT ObjectSlots[ NUM_OBJECT_SLOTS ]; // OBJECT LIST STUFF -INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, UINT8 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ); +INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ); BOOLEAN RemoveObjectSlot( INT32 iObject ); void RemoveAllPhysicsObjects( ); // OJW - 20091002 - mp explosives @@ -183,4 +183,4 @@ INT32 RandomGridFromRadius( INT32 sSweetGridNo, INT8 ubMinRadius, INT8 ubMaxRad UINT32 GetArtilleryTargetGridNo( UINT32 sTargetGridNo, INT8 bRadius ); BOOLEAN GetArtilleryLaunchParams(UINT32 sStartingGridNo, UINT32 sTargetGridNo, UINT8 ubTargetLevel, INT16 sStartZ, INT16 sEndZ, UINT16 usLauncher, OBJECTTYPE* pObj, FLOAT* pdForce, FLOAT* pdDegrees); -#endif +#endif diff --git a/TileEngine/pits.cpp b/TileEngine/pits.cpp index 9ce43311..1ce2d29a 100644 --- a/TileEngine/pits.cpp +++ b/TileEngine/pits.cpp @@ -207,7 +207,7 @@ void RemoveAllPits() void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 sRadius ) { INT32 x, y, sNewGridNo; - UINT8 ubID; + SoldierID ubID; SOLDIERTYPE *pSoldier; @@ -227,7 +227,7 @@ void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 s { // OK, make guy fall... // Set data to look for exit grid.... - pSoldier = MercPtrs[ ubID ]; + pSoldier = ubID; pSoldier->aiData.uiPendingActionData4 = sNewGridNo; @@ -237,9 +237,9 @@ void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 s } } -void HandleFallIntoPitFromAnimation( UINT8 ubID ) +void HandleFallIntoPitFromAnimation( SoldierID ubID ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; EXITGRID ExitGrid; INT32 sPitGridNo; // OK, get exit grid... diff --git a/TileEngine/pits.h b/TileEngine/pits.h index 3dbff9e6..b9a81154 100644 --- a/TileEngine/pits.h +++ b/TileEngine/pits.h @@ -1,6 +1,8 @@ #ifndef __PITS_H #define __PITS_H +#include "overhead types.h" + void Add3X3Pit( INT32 iMapIndex ); void Add5X5Pit( INT32 iMapIndex ); void Remove3X3Pit( INT32 iMapIndex ); @@ -14,7 +16,7 @@ void RemoveAllPits(); extern BOOLEAN gfShowPits; extern BOOLEAN gfLoadPitsWithoutArming; -void HandleFallIntoPitFromAnimation( UINT8 ubID ); +void HandleFallIntoPitFromAnimation( SoldierID ubID ); -#endif +#endif diff --git a/TileEngine/renderworld.cpp b/TileEngine/renderworld.cpp index 3655e409..aec1251c 100644 --- a/TileEngine/renderworld.cpp +++ b/TileEngine/renderworld.cpp @@ -1069,7 +1069,7 @@ inline UINT16 * GetShadeTable(LEVELNODE * pNode, SOLDIERTYPE * pSoldier, SOLDIER SOLDIERTYPE * pSelSoldier; if (gusSelectedSoldier != NOBODY) { - pSelSoldier = MercPtrs[gusSelectedSoldier]; + pSelSoldier = gusSelectedSoldier; } else { @@ -1106,7 +1106,7 @@ inline UINT16 * GetShadeTable(LEVELNODE * pNode, SOLDIERTYPE * pSoldier, SOLDIER } // Set shade // If a bad guy is highlighted - if (gfUIHandleSelectionAboveGuy == TRUE && MercPtrs[gsSelectedGuy]->bSide != gbPlayerNum) + if (gfUIHandleSelectionAboveGuy == TRUE && gsSelectedGuy->bSide != gbPlayerNum) { if (gsSelectedGuy == pSoldier->ubID) { @@ -1149,7 +1149,7 @@ inline UINT16 * GetShadeTable(LEVELNODE * pNode, SOLDIERTYPE * pSoldier, SOLDIER } //if ( gusSelectedSoldier != NOBODY ) //{ - // pSelSoldier = MercPtrs[ gusSelectedSoldier ]; + // pSelSoldier = gusSelectedSoldier; // Shade differently depending on visiblity // if ( pSoldier->bVisible == 0 || ( pSelSoldier->aiData.bOppList[ pSoldier->ubID ] == 0 ) ) // { @@ -4044,7 +4044,7 @@ void ScrollWorld( ) ScrollFlags = 0; fDoScroll = FALSE; // - if ( SoldierLocationRelativeToScreen( gTacticalStatus.sSlideTarget, gTacticalStatus.sSlideReason, &bDirection, &ScrollFlags ) && GridNoOnVisibleWorldTile( gTacticalStatus.sSlideTarget ) ) + if ( SoldierLocationRelativeToScreen( gTacticalStatus.sSlideTarget, &bDirection, &ScrollFlags ) && GridNoOnVisibleWorldTile( gTacticalStatus.sSlideTarget ) ) { ScrollFlags = gScrollDirectionFlags[ bDirection ]; fDoScroll = TRUE; diff --git a/TileEngine/structure.cpp b/TileEngine/structure.cpp index 445e5ec3..1fe3ae89 100644 --- a/TileEngine/structure.cpp +++ b/TileEngine/structure.cpp @@ -630,9 +630,9 @@ STRUCTURE * CreateStructureFromDB( DB_STRUCTURE_REF * pDBStructureRef, UINT8 ubT return( pStructure ); } -extern UINT16 gusTempDragBuildSoldierID; +extern SoldierID gusTempDragBuildSoldierID; -BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUCTURE_REF * pDBStructureRef, UINT8 ubTileIndex, INT16 sExclusionID, BOOLEAN fAddingForReal = FALSE, INT16 sSoldierID = NOBODY ) +BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUCTURE_REF * pDBStructureRef, UINT8 ubTileIndex, INT16 sExclusionID, BOOLEAN fAddingForReal = FALSE, SoldierID sSoldierID = NOBODY ) { // Verifies whether a structure is blocked from being added to the map at a particular point DB_STRUCTURE * pDBStructure; @@ -646,15 +646,15 @@ BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUC BOOLEAN fIgnorePeople = (BOOLEAN)(sExclusionID == IGNORE_PEOPLE_STRUCTURE_ID); BOOLEAN fVehicleIgnoreObstacles = (BOOLEAN)(sExclusionID == VEHICLE_IGNORE_OBSTACLES_STRUCTURE_ID); - if( gGameExternalOptions.ubCarsRammingMaxStructureArmour && sSoldierID != NOBODY && MercPtrs[ sSoldierID ]->usSoldierFlagMask2 & SOLDIER_RAM_THROUGH_OBSTACLES ) + if( gGameExternalOptions.ubCarsRammingMaxStructureArmour && sSoldierID != NOBODY && sSoldierID->usSoldierFlagMask2 & SOLDIER_RAM_THROUGH_OBSTACLES ) { fVehicleIgnoreObstacles = TRUE; } - else if ( gGameExternalOptions.ubEnemyJeepsRammingMaxStructureArmour && sSoldierID != NOBODY && COMBAT_JEEP( MercPtrs[sSoldierID] ) ) + else if ( gGameExternalOptions.ubEnemyJeepsRammingMaxStructureArmour && sSoldierID != NOBODY && COMBAT_JEEP( sSoldierID ) ) { fVehicleIgnoreObstacles = TRUE; } - else if ( gGameExternalOptions.ubTanksRammingMaxStructureArmour && sSoldierID != NOBODY && TANK( MercPtrs[sSoldierID] ) ) + else if ( gGameExternalOptions.ubTanksRammingMaxStructureArmour && sSoldierID != NOBODY && TANK( sSoldierID ) ) { fVehicleIgnoreObstacles = TRUE; } @@ -736,25 +736,25 @@ BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUC // but not monsters and such (they can't fall down due to lack of animations) // also make sure AI won't flatten their allies if( !( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_ROBOT | SOLDIER_MONSTER ) ) && - ((!ARMED_VEHICLE( MercPtrs[sSoldierID] ) && gGameExternalOptions.fAllowCarsDrivingOverPeople) || - (ARMED_VEHICLE( MercPtrs[sSoldierID] ) && gGameExternalOptions.fAllowTanksDrivingOverPeople)) && - ( MercPtrs[ sSoldierID ]->bTeam == gbPlayerNum || MercPtrs[ sSoldierID ]->bTeam != pSoldier->bTeam ) ) + ((!ARMED_VEHICLE( sSoldierID ) && gGameExternalOptions.fAllowCarsDrivingOverPeople) || + (ARMED_VEHICLE( sSoldierID ) && gGameExternalOptions.fAllowTanksDrivingOverPeople)) && + ( sSoldierID->bTeam == gbPlayerNum || sSoldierID->bTeam != pSoldier->bTeam ) ) { pExistingStructure = pExistingStructure->pNext; // damage people when driving on them if( fAddingForReal ) { - if ( TANK( MercPtrs[sSoldierID] ) ) + if ( TANK( sSoldierID ) ) { - pSoldier->EVENT_SoldierGotHit( 0, Random(10)+5, Random(200)+Random(200), MercPtrs[ sSoldierID ]->ubDirection, 0, sSoldierID, FIRE_WEAPON_VEHICLE_TRAUMA, 0, 0, pSoldier->sGridNo ); + pSoldier->EVENT_SoldierGotHit( 0, Random(10)+5, Random(200)+Random(200), sSoldierID->ubDirection, 0, sSoldierID, FIRE_WEAPON_VEHICLE_TRAUMA, 0, 0, pSoldier->sGridNo ); } - else if( gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE && MercPtrs[ sSoldierID ]->IsFastMovement() ) + else if( gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE && sSoldierID->IsFastMovement() ) { - pSoldier->EVENT_SoldierGotHit( 0, Random(5), Random(100)+Random(100), MercPtrs[ sSoldierID ]->ubDirection, 0, sSoldierID, FIRE_WEAPON_VEHICLE_TRAUMA, 0, 0, pSoldier->sGridNo ); + pSoldier->EVENT_SoldierGotHit( 0, Random(5), Random(100)+Random(100), sSoldierID->ubDirection, 0, sSoldierID, FIRE_WEAPON_VEHICLE_TRAUMA, 0, 0, pSoldier->sGridNo ); } else { - pSoldier->EVENT_SoldierGotHit( 0, Random(10)+5, Random(200)+Random(200), MercPtrs[ sSoldierID ]->ubDirection, 0, sSoldierID, FIRE_WEAPON_VEHICLE_TRAUMA, 0, 0, pSoldier->sGridNo ); + pSoldier->EVENT_SoldierGotHit( 0, Random(10)+5, Random(200)+Random(200), sSoldierID->ubDirection, 0, sSoldierID, FIRE_WEAPON_VEHICLE_TRAUMA, 0, 0, pSoldier->sGridNo ); } } continue; @@ -770,9 +770,9 @@ BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUC else { // only if structure is weak enough - if ( (!ARMED_VEHICLE( MercPtrs[sSoldierID] ) && gubMaterialArmour[pExistingStructure->pDBStructureRef->pDBStructure->ubArmour] < gGameExternalOptions.ubCarsRammingMaxStructureArmour) || - (COMBAT_JEEP( MercPtrs[sSoldierID] ) && gubMaterialArmour[pExistingStructure->pDBStructureRef->pDBStructure->ubArmour] < gGameExternalOptions.ubEnemyJeepsRammingMaxStructureArmour) || - (TANK( MercPtrs[sSoldierID] ) && gubMaterialArmour[pExistingStructure->pDBStructureRef->pDBStructure->ubArmour] < gGameExternalOptions.ubTanksRammingMaxStructureArmour) ) + if ( (!ARMED_VEHICLE( sSoldierID ) && gubMaterialArmour[pExistingStructure->pDBStructureRef->pDBStructure->ubArmour] < gGameExternalOptions.ubCarsRammingMaxStructureArmour) || + (COMBAT_JEEP( sSoldierID ) && gubMaterialArmour[pExistingStructure->pDBStructureRef->pDBStructure->ubArmour] < gGameExternalOptions.ubEnemyJeepsRammingMaxStructureArmour) || + (TANK( sSoldierID ) && gubMaterialArmour[pExistingStructure->pDBStructureRef->pDBStructure->ubArmour] < gGameExternalOptions.ubTanksRammingMaxStructureArmour) ) { // when not just plotting path, really destroy structure if( fAddingForReal ) @@ -911,7 +911,7 @@ BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUC { if( MercPtrs[ pExistingStructure->usStructureID ] != NULL && MercPtrs[ pExistingStructure->usStructureID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) { - if( MercPtrs[ sSoldierID ]->flags.fInNonintAnim == TRUE || gAnimControl[ MercPtrs[ sSoldierID ]->usAnimState ].ubEndHeight == ANIM_PRONE ) + if( sSoldierID->flags.fInNonintAnim == TRUE || gAnimControl[ sSoldierID->usAnimState ].ubEndHeight == ANIM_PRONE ) { pExistingStructure = pExistingStructure->pNext; continue; @@ -942,7 +942,7 @@ BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUC { // Flugente: we allow this if this structure is being dragged by a soldier, otherwise we can't move containers our of rooms (and are likely to unintenionally bar rooms) if (pExistingStructure->fFlags & STRUCTURE_OPENABLE - && !( gusTempDragBuildSoldierID != NOBODY && MercPtrs[gusTempDragBuildSoldierID]->sDragGridNo ) ) + && !( gusTempDragBuildSoldierID != NOBODY && gusTempDragBuildSoldierID->sDragGridNo ) ) { // don't allow two openable structures in the same tile or things will screw // up on an interface level @@ -958,7 +958,7 @@ BOOLEAN OkayToAddStructureToTile( INT32 sBaseGridNo, INT16 sCubeOffset, DB_STRUC return( TRUE ); } -BOOLEAN InternalOkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal, INT16 sSoldierID ) +BOOLEAN InternalOkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal, SoldierID sSoldierID ) { UINT8 ubLoop; INT16 sCubeOffset; @@ -1001,7 +1001,7 @@ BOOLEAN InternalOkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_ST return( TRUE ); } -BOOLEAN OkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal, INT16 sSoldierID ) +BOOLEAN OkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal, SoldierID sSoldierID ) { return( InternalOkayToAddStructureToWorld( sBaseGridNo, bLevel, pDBStructureRef, sExclusionID, fAddingForReal, sSoldierID ) ); } @@ -1036,15 +1036,15 @@ BOOLEAN AddStructureToTile( MAP_ELEMENT * pMapElement, STRUCTURE * pStructure, U STRUCTURE * InternalAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, LEVELNODE * pLevelNode ) { // Adds a complete structure to the world at a location plus all other locations covered by the structure - INT32 sGridNo; - STRUCTURE ** ppStructure; - STRUCTURE * pBaseStructure; - DB_STRUCTURE * pDBStructure; - DB_STRUCTURE_TILE ** ppTile; - UINT8 ubLoop; - UINT8 ubLoop2; - INT16 sBaseTileHeight=-1; - UINT16 usStructureID; + INT32 sGridNo; + STRUCTURE **ppStructure; + STRUCTURE *pBaseStructure; + DB_STRUCTURE *pDBStructure; + DB_STRUCTURE_TILE **ppTile; + UINT8 ubLoop; + UINT8 ubLoop2; + INT16 sBaseTileHeight=-1; + UINT16 usStructureID; CHECKF( pDBStructureRef ); CHECKF( pLevelNode ); @@ -1764,7 +1764,7 @@ BOOLEAN StructureDensity( STRUCTURE * pStructure, UINT8 * pubLevel0, UINT8 * pub return( TRUE ); } -INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT8 ubOwner, INT32 sAntiMaterialImpact ) +INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, SoldierID ubOwner, INT32 sAntiMaterialImpact ) { // do damage to a structure; returns TRUE if the structure should be removed STRUCTURE *pBase; @@ -1915,9 +1915,9 @@ INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, IN gpWorldLevelData[ tmpgridno ].uiFlags |= MAPELEMENT_STRUCTURE_DAMAGED; // handle structure revenge - damage to vehicle - to be resolved after movement - if ( ubOwner != NOBODY && MercPtrs[ubOwner] && !ARMED_VEHICLE( MercPtrs[ubOwner] ) ) + if ( ubOwner != NOBODY && !ARMED_VEHICLE( ubOwner ) ) { - MercPtrs[ubOwner]->SoldierTakeDelayedDamage(0, Random(max(0,(ubBaseArmour-10)/5)) + max(0,(ubBaseArmour-10)/5), 0, TAKE_DAMAGE_STRUCTURE_EXPLOSION, NOBODY, MercPtrs[ ubOwner ]->sGridNo, 0, TRUE); + ubOwner->SoldierTakeDelayedDamage(0, Random(max(0,(ubBaseArmour-10)/5)) + max(0,(ubBaseArmour-10)/5), 0, TAKE_DAMAGE_STRUCTURE_EXPLOSION, NOBODY, ubOwner->sGridNo, 0, TRUE); } // recompile = TRUE means that we destroyed something diff --git a/TileEngine/structure.h b/TileEngine/structure.h index 69148ab9..3c7e4fc4 100644 --- a/TileEngine/structure.h +++ b/TileEngine/structure.h @@ -37,7 +37,7 @@ BOOLEAN FreeStructureFile( STRUCTURE_FILE_REF * pStructureFile ); // // functions at the structure instance level // -BOOLEAN OkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal = FALSE, INT16 sSoldierID = NOBODY ); +BOOLEAN OkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID, BOOLEAN fAddingForReal = FALSE, SoldierID sSoldierID = NOBODY ); // for the PTR argument of AddStructureToWorld, pass in a LEVELNODE * please! BOOLEAN AddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, PTR pLevelN ); @@ -91,7 +91,7 @@ STRUCTURE* GetTallestStructureOnGridnoDrag( INT32 sGridNo, INT8 bLevel ); // FUNCTIONS FOR DETERMINING STUFF THAT BLOCKS VIEW FOR TILE_bASED LOS INT8 GetBlockingStructureInfo( INT32 sGridNo, INT8 bDir, INT8 bNextDir, INT8 bLevel, INT8 *pStructHeight, STRUCTURE ** ppTallestStructure, BOOLEAN fWallsBlock ); -INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT8 ubOwner, INT32 sAntiMaterialImpact = 0 ); +INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, SoldierID ubOwner, INT32 sAntiMaterialImpact = 0 ); // Material armour type enumeration enum @@ -136,4 +136,4 @@ UINT8 StructureFlagToType( UINT32 uiFlag ); UINT32 GetStructureOpenSound( STRUCTURE *pStructure, BOOLEAN fClose ); -#endif +#endif diff --git a/TileEngine/worlddef.cpp b/TileEngine/worlddef.cpp index 36c85844..aeede9c9 100644 --- a/TileEngine/worlddef.cpp +++ b/TileEngine/worlddef.cpp @@ -3291,10 +3291,9 @@ BOOLEAN LoadWorld(const STR8 puiFilename, FLOAT* pMajorMapVersion, UINT8* pMinor // CHECK IF OUR SELECTED GUY IS GONE! if(gusSelectedSoldier != NOBODY) { - if(MercPtrs[gusSelectedSoldier]->bActive == FALSE) + if(gusSelectedSoldier->bActive == FALSE) gusSelectedSoldier = NOBODY; } - AdjustSoldierCreationStartValues(); RenderProgressBar(0, 60); InvalidateWorldRedundency(); // SAVE FILENAME @@ -3327,9 +3326,6 @@ BOOLEAN NewWorld( INT32 nMapRows, INT32 nMapCols ) UINT16 NewIndex; INT32 cnt; - gusSelectedSoldier = gusOldSelectedSoldier = NOBODY; - - AdjustSoldierCreationStartValues( ); TrashWorld(); diff --git a/TileEngine/worlddef.h b/TileEngine/worlddef.h index 847d902f..394f6a4a 100644 --- a/TileEngine/worlddef.h +++ b/TileEngine/worlddef.h @@ -36,7 +36,7 @@ class OBJECTTYPE; class SOLDIERTYPE; // SB: new map version, with map dimensions added -#define MAJOR_MAP_VERSION 7.0 +#define MAJOR_MAP_VERSION 8.0 // 7.0 -> 8.0 Due to increased teamsizes. //Current minor map version updater. #define MINOR_MAP_OVERHEATING 28 // 27 -> 28: Flugente:: increased to 28 because of included weapon overheated and tripwire feature. See ObjectClass for the new Tags! //#define MINOR_MAP_VERSION 29 // 28 -> 29: increased range of roomnumbers to full UINT16 by DBrot @@ -273,7 +273,7 @@ typedef struct UINT8 ubAdjacentSoldierCnt; UINT8 ubTerrainID; - UINT8 ubReservedSoldierID; + UINT16 ubReservedSoldierID; UINT8 ubBloodInfo; UINT8 ubSmellInfo; } MAP_ELEMENT; diff --git a/TileEngine/worldman.cpp b/TileEngine/worldman.cpp index ca2c44b4..ea04099b 100644 --- a/TileEngine/worldman.cpp +++ b/TileEngine/worldman.cpp @@ -3750,7 +3750,7 @@ BOOLEAN IsRoofVisible2( INT32 sMapPos ) } -UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) +SoldierID WhoIsThere2( INT32 sGridNo, INT8 bLevel ) { STRUCTURE * pStructure; @@ -3774,7 +3774,7 @@ UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) { // found a person, on the right level! // structure ID and merc ID are identical for merc structures - return( (UINT8) pStructure->usStructureID ); + return( pStructure->usStructureID ); } } pStructure = pStructure->pNext; @@ -3782,7 +3782,7 @@ UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) } - return( (UINT8)NOBODY ); + return( NOBODY ); } UINT8 GetTerrainType( INT32 sGridNo ) @@ -4159,7 +4159,7 @@ void UpdateTreeVisibility() // find visible soldier near spot if (!TileIsOutOfBounds(sSpot) && !fHideTree) { - for (UINT8 uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) + for (UINT16 uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) { pOpponent = MercSlots[uiLoop]; diff --git a/TileEngine/worldman.h b/TileEngine/worldman.h index 37773459..83cdf308 100644 --- a/TileEngine/worldman.h +++ b/TileEngine/worldman.h @@ -128,7 +128,7 @@ BOOLEAN RemoveShadowFromLevelNode( INT32 iMapIndex, LEVELNODE *pNode ); BOOLEAN AddMercToHead( INT32 iMapIndex, SOLDIERTYPE *pSoldier, BOOLEAN fAddStructInfo ); BOOLEAN RemoveMerc( INT32 iMapIndex, SOLDIERTYPE *pSoldier, BOOLEAN fPlaceHolder ); -UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ); +SoldierID WhoIsThere2( INT32 sGridNo, INT8 bLevel ); BOOLEAN AddMercStructureInfo( INT32 sGridNo, SOLDIERTYPE *pSoldier ); BOOLEAN AddMercStructureInfoFromAnimSurface( INT32 sGridNo, SOLDIERTYPE *pSoldier, UINT16 usAnimSurface, UINT16 usAnimState ); BOOLEAN UpdateMercStructureInfo( SOLDIERTYPE *pSoldier ); @@ -179,4 +179,4 @@ BOOLEAN IsLegionLevel( INT32 sGridNo ); BOOLEAN FindStruct(INT32 sSpot, INT8 bLevel, UINT16 usIndex); BOOLEAN FindStructFlag(INT32 sSpot, INT8 bLevel, UINT32 uiFlag); -#endif +#endif diff --git a/Utils/Event Pump.h b/Utils/Event Pump.h index b171bca7..bce66e43 100644 --- a/Utils/Event Pump.h +++ b/Utils/Event Pump.h @@ -59,170 +59,171 @@ typedef struct typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - UINT16 usNewState; + UINT32 usTargetGridNo; // WANNE - MP: Used for manipulating the target grid no + UINT32 uiUniqueId; + SoldierID usSoldierID; + UINT16 usNewState; INT16 sXPos; INT16 sYPos; - UINT16 usStartingAniCode; - BOOLEAN fForce; - UINT8 usNewDirection;//hayden - UINT32 usTargetGridNo; // WANNE - MP: Used for manipulating the target grid no + UINT16 usStartingAniCode; + BOOLEAN fForce; + UINT8 usNewDirection;//hayden } EV_S_CHANGESTATE; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - INT32 usNewDestination; + SoldierID usSoldierID; + UINT32 uiUniqueId; + INT32 usNewDestination; } EV_S_CHANGEDEST; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - FLOAT dNewXPos; - FLOAT dNewYPos; + SoldierID usSoldierID; + UINT32 uiUniqueId; + FLOAT dNewXPos; + FLOAT dNewYPos; } EV_S_SETPOSITION; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - INT32 sDestGridNo; + UINT32 uiUniqueId; + INT32 sDestGridNo; + SoldierID usSoldierID; UINT16 usMovementAnim; } EV_S_GETNEWPATH; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; + UINT32 uiUniqueId; + SoldierID usSoldierID; + } EV_S_BEGINTURN; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - UINT8 ubNewStance; + UINT32 uiUniqueId; + SoldierID usSoldierID; INT16 sXPos; INT16 sYPos; + UINT8 ubNewStance; } EV_S_CHANGESTANCE; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - UINT16 usNewDirection; + UINT32 uiUniqueId; + SoldierID usSoldierID; + UINT16 usNewDirection; } EV_S_SETDIRECTION; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - UINT16 usDesiredDirection; + UINT32 uiUniqueId; + SoldierID usSoldierID; + UINT16 usDesiredDirection; } EV_S_SETDESIREDDIRECTION; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - INT32 sTargetGridNo; - INT8 bTargetLevel; - INT8 bTargetCubeLevel; + UINT32 uiUniqueId; + INT32 sTargetGridNo; + SoldierID usSoldierID; + INT8 bTargetLevel; + INT8 bTargetCubeLevel; } EV_S_BEGINFIREWEAPON; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - INT32 sTargetGridNo; - INT8 bTargetLevel; - INT8 bTargetCubeLevel; + UINT32 uiUniqueId; + INT32 sTargetGridNo; + SoldierID usSoldierID; + INT8 bTargetLevel; + INT8 bTargetCubeLevel; } EV_S_FIREWEAPON; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - UINT16 usWeaponIndex; + UINT32 uiUniqueId; + INT32 iBullet; + SoldierID usSoldierID; + SoldierID ubAttackerID; + UINT16 usWeaponIndex; INT16 sDamage; INT16 sBreathLoss; - UINT16 usDirection; + UINT16 usDirection; INT16 sXPos; INT16 sYPos; INT16 sZPos; INT16 sRange; - UINT8 ubAttackerID; - BOOLEAN fHit; + BOOLEAN fHit; UINT8 ubSpecial; UINT8 ubLocation; - INT32 iBullet; - BOOLEAN fStopped; + BOOLEAN fStopped; } EV_S_WEAPONHIT; typedef struct { + INT32 iImpact; + INT32 iBullet; INT16 sXPos; INT16 sYPos; INT16 sZPos; - UINT16 usWeaponIndex; + UINT16 usWeaponIndex; INT16 bWeaponStatus; - UINT8 ubAttackerID; - UINT16 usStructureID; - INT32 iImpact; - INT32 iBullet; - BOOLEAN fStopped;//hayden + SoldierID ubAttackerID; + UINT16 usStructureID; + BOOLEAN fStopped;//hayden } EV_S_STRUCTUREHIT; typedef struct { - INT32 sGridNo; - UINT16 usStructureID; - BOOLEAN fBlowWindowSouth; - BOOLEAN fLargeForce; - UINT8 ubAttackerID; - INT32 iBullet; + INT32 sGridNo; + INT32 iBullet; + UINT16 usStructureID; + BOOLEAN fBlowWindowSouth; + BOOLEAN fLargeForce; + SoldierID ubAttackerID; } EV_S_WINDOWHIT; typedef struct { - UINT8 ubAttackerID; - INT32 iBullet; + INT32 iBullet; + SoldierID ubAttackerID; } EV_S_MISS; typedef struct { - UINT8 ubNoiseMaker; - INT32 sGridNo; - UINT8 bLevel; - UINT8 ubTerrType; - UINT8 ubVolume; - UINT8 ubNoiseType; - CHAR16 zNoiseMessage[320]; + INT32 sGridNo; + SoldierID ubNoiseMaker; + UINT8 bLevel; + UINT8 ubTerrType; + UINT8 ubVolume; + UINT8 ubNoiseType; + CHAR16 zNoiseMessage[320]; } EV_S_NOISE; typedef struct { - UINT16 usSoldierID; - UINT32 uiUniqueId; - UINT8 ubDirection; - INT32 sGridNo; + UINT32 uiUniqueId; + INT32 sGridNo; + SoldierID usSoldierID; INT16 sXPos; INT16 sYPos; - BOOLEAN fset; + UINT8 ubDirection; + BOOLEAN fset; } EV_S_STOP_MERC; @@ -230,35 +231,34 @@ typedef struct typedef struct { - UINT8 usSoldierID; -// UINT32 uiUniqueId; + SoldierID usSoldierID; +// UINT32 uiUniqueId; UINT16 usPathDataSize; // Size of Path - INT32 sAtGridNo; // Owner merc is at this tile when sending packet + INT32 sAtGridNo; // Owner merc is at this tile when sending packet UINT16 usCurrentPathIndex; // Index the owner of the merc is at when sending packet UINT16 usPathData[ MAX_PATH_LIST_SIZE ]; // make define // Next X tile to go to UINT16 ubNewState; // new movment Anim - INT32 sDestGridNo; -// INT8 bActionPoints; -// INT8 bBreath; // current breath value -// INT8 bDesiredDirection; - + INT32 sDestGridNo; +// INT8 bActionPoints; +// INT8 bBreath; // current breath value +// INT8 bDesiredDirection; // maybe send current action & breath points } EV_S_SENDPATHTONETWORK; typedef struct { - UINT8 usSoldierID; - //UINT32 uiUniqueId; - INT32 sAtGridNo; // Owner merc is at this tile when sending packet - INT8 bActionPoints; // current A.P. value - INT8 bBreath; // current breath value + INT32 sAtGridNo; // Owner merc is at this tile when sending packet + SoldierID usSoldierID; + //UINT32 uiUniqueId; + INT8 bActionPoints; // current A.P. value + INT8 bBreath; // current breath value //hayden - INT8 bLife; - INT8 bBleeding; - UINT16 usTactialTurnLimitCounter; - UINT16 usTactialTurnLimitMax; - UINT8 ubDirection; + INT8 bLife; + INT8 bBleeding; + UINT16 usTactialTurnLimitCounter; + UINT16 usTactialTurnLimitMax; + UINT8 ubDirection; UINT8 ubNewStance; } EV_S_UPDATENETWORKSOLDIER; diff --git a/Utils/PopUpBox.cpp b/Utils/PopUpBox.cpp index 9643fd02..b0bd06a4 100644 --- a/Utils/PopUpBox.cpp +++ b/Utils/PopUpBox.cpp @@ -1,5 +1,5 @@ - #include "PopUpBox.h" - #include "sysutil.h" +#include "PopUpBox.h" +#include "sysutil.h" #define BORDER_WIDTH 16 @@ -13,113 +13,117 @@ #define BOTTOM_RIGHT_CORNER 3 -BOOLEAN DrawBox(UINT32 uiCounter); -BOOLEAN DrawBoxText(UINT32 uiCounter); +BOOLEAN DrawBox( UINT32 uiCounter ); +BOOLEAN DrawBoxText( UINT32 uiCounter ); void RemoveCurrentBoxPrimaryText( INT32 hStringHandle ); void RemoveCurrentBoxSecondaryText( INT32 hStringHandle ); +void RemoveCurrentBoxText( INT32 hStringHandle, UINT8 column ); void InitPopUpBoxList() { - memset(&PopUpBoxList, 0, sizeof(PopUpBoxPt)); - return; + memset( &PopUpBoxList, 0, sizeof( PopUpBoxPt ) ); + return; } -void InitPopUpBox(INT32 hBoxHandle) +void InitPopUpBox( INT32 hBoxHandle ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); - memset(PopUpBoxList[hBoxHandle], 0, sizeof(PopUpBo)); + Assert( PopUpBoxList[hBoxHandle] ); + memset( PopUpBoxList[hBoxHandle], 0, sizeof( PopUpBo ) ); } -void SetLineSpace(INT32 hBoxHandle, UINT32 uiLineSpace) +void SetLineSpace( INT32 hBoxHandle, UINT32 uiLineSpace ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); - PopUpBoxList[hBoxHandle]->uiLineSpace=uiLineSpace; - return; + Assert( PopUpBoxList[hBoxHandle] ); + PopUpBoxList[hBoxHandle]->uiLineSpace = uiLineSpace; + return; } UINT32 GetLineSpace( INT32 hBoxHandle ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return( 0 ); + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return(0); - Assert( PopUpBoxList[ hBoxHandle ] ); + Assert( PopUpBoxList[hBoxHandle] ); // return number of pixels between lines for this box - return( PopUpBoxList[hBoxHandle]->uiLineSpace ); + return(PopUpBoxList[hBoxHandle]->uiLineSpace); } void SpecifyBoxMinWidth( INT32 hBoxHandle, INT32 iMinWidth ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - PopUpBoxList[hBoxHandle]->uiBoxMinWidth = iMinWidth; + box->uiBoxMinWidth = iMinWidth; // check if the box is currently too small - if( PopUpBoxList[hBoxHandle]->Dimensions.iRight < iMinWidth ) + if ( box->Dimensions.iRight < iMinWidth ) { - PopUpBoxList[hBoxHandle]->Dimensions.iRight = iMinWidth; + box->Dimensions.iRight = iMinWidth; } return; } -BOOLEAN CreatePopUpBox(INT32 *phBoxHandle, SGPRect Dimensions, SGPPoint Position, UINT32 uiFlags) +BOOLEAN CreatePopUpBox( INT32 *phBoxHandle, SGPRect Dimensions, SGPPoint Position, UINT32 uiFlags ) { - INT32 iCounter=0; - INT32 iCount=0; - PopUpBoxPt pBox=NULL; + INT32 iCounter = 0; + INT32 iCount = 0; + PopUpBoxPt pBox = NULL; // find first free box - for(iCounter=0; ( iCounter < MAX_POPUP_BOX_COUNT ) && ( PopUpBoxList[iCounter] != NULL ); iCounter++); + for ( iCounter = 0; (iCounter < MAX_POPUP_BOX_COUNT) && (PopUpBoxList[iCounter] != NULL); iCounter++ ); - if( iCounter >= MAX_POPUP_BOX_COUNT ) + if ( iCounter >= MAX_POPUP_BOX_COUNT ) { // ran out of available popup boxes - probably not freeing them up right! - Assert(0); + Assert( 0 ); return FALSE; } - iCount=iCounter; - *phBoxHandle=iCount; + iCount = iCounter; + *phBoxHandle = iCount; - pBox= (PopUpBoxPt) MemAlloc(sizeof(PopUpBo)); - if (pBox == NULL) + pBox = (PopUpBoxPt)MemAlloc( sizeof( PopUpBo ) ); + if ( pBox == NULL ) { return FALSE; } - PopUpBoxList[iCount]=pBox; + PopUpBoxList[iCount] = pBox; - InitPopUpBox(iCount); - SetBoxPosition(iCount, Position); - SetBoxSize(iCount, Dimensions); - SetBoxFlags(iCount, uiFlags); + InitPopUpBox( iCount ); + SetBoxPosition( iCount, Position ); + SetBoxSize( iCount, Dimensions ); + SetBoxFlags( iCount, uiFlags ); - for(iCounter=0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++) + for ( UINT8 col = 0; col < MAX_POPUP_BOX_COLUMNS; ++col ) { - PopUpBoxList[iCount]->Text[iCounter]=NULL; - PopUpBoxList[iCount]->pSecondColumnString[iCounter]=NULL; + for ( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; ++iCounter ) + { + PopUpBoxList[iCount]->Text[col][iCounter] = NULL; + } } - SetCurrentBox(iCount); + SetCurrentBox( iCount ); SpecifyBoxMinWidth( iCount, 0 ); SetBoxSecondColumnMinimumOffset( iCount, 0 ); SetBoxSecondColumnCurrentOffset( iCount, 0 ); @@ -130,35 +134,37 @@ BOOLEAN CreatePopUpBox(INT32 *phBoxHandle, SGPRect Dimensions, SGPPoint Position } -void SetBoxFlags( INT32 hBoxHandle, UINT32 uiFlags) +void SetBoxFlags( INT32 hBoxHandle, UINT32 uiFlags ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - PopUpBoxList[hBoxHandle]->uiFlags=uiFlags; - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; + box->uiFlags = uiFlags; + box->fUpdated = FALSE; - return; + return; } -void SetMargins(INT32 hBoxHandle, UINT32 uiLeft, UINT32 uiTop, UINT32 uiBottom, UINT32 uiRight) +void SetMargins( INT32 hBoxHandle, UINT32 uiLeft, UINT32 uiTop, UINT32 uiBottom, UINT32 uiRight ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - PopUpBoxList[hBoxHandle]->uiLeftMargin=uiLeft; - PopUpBoxList[hBoxHandle]->uiRightMargin=uiRight; - PopUpBoxList[hBoxHandle]->uiTopMargin=uiTop; - PopUpBoxList[hBoxHandle]->uiBottomMargin=uiBottom; + box->uiLeftMargin = uiLeft; + box->uiRightMargin = uiRight; + box->uiTopMargin = uiTop; + box->uiBottomMargin = uiBottom; - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; + box->fUpdated = FALSE; - return; + return; } @@ -166,322 +172,333 @@ UINT32 GetTopMarginSize( INT32 hBoxHandle ) { // return size of top margin, for mouse region offsets - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return( 0 ); + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return(0); - Assert( PopUpBoxList[ hBoxHandle ] ); + Assert( PopUpBoxList[hBoxHandle] ); - return( PopUpBoxList[hBoxHandle]->uiTopMargin ); + return(PopUpBoxList[hBoxHandle]->uiTopMargin); } -void ShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ) +void ShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column ) { // shade iLineNumber Line in box indexed by hBoxHandle - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( box->Text[column][iLineNumber] != NULL ) { // set current box SetCurrentBox( hBoxHandle ); // shade line - PopUpBoxList[hBoxHandle]->Text[iLineNumber]->fShadeFlag = TRUE; + box->Text[column][iLineNumber]->fShadeFlag = TRUE; } } -void UnShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ) +void UnShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column ) { // unshade iLineNumber in box indexed by hBoxHandle - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( box->Text[column][iLineNumber] != NULL ) { // set current box SetCurrentBox( hBoxHandle ); // shade line - PopUpBoxList[hBoxHandle]->Text[iLineNumber]->fShadeFlag = FALSE; + box->Text[column][iLineNumber]->fShadeFlag = FALSE; } } -void SecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ) +void SecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column ) { // shade iLineNumber Line in box indexed by hBoxHandle - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( box->Text[column][iLineNumber] != NULL ) { // set current box SetCurrentBox( hBoxHandle ); // shade line - PopUpBoxList[hBoxHandle]->Text[iLineNumber]->fSecondaryShadeFlag = TRUE; + box->Text[column][iLineNumber]->fSecondaryShadeFlag = TRUE; } } -void UnSecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ) +void UnSecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column ) { // unshade iLineNumber in box indexed by hBoxHandle - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( box->Text[column][iLineNumber] != NULL ) { // set current box SetCurrentBox( hBoxHandle ); // shade line - PopUpBoxList[hBoxHandle]->Text[iLineNumber]->fSecondaryShadeFlag = FALSE; + box->Text[column][iLineNumber]->fSecondaryShadeFlag = FALSE; } } -void SetBoxBuffer(INT32 hBoxHandle, UINT32 uiBuffer) +void SetBoxBuffer( INT32 hBoxHandle, UINT32 uiBuffer ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - PopUpBoxList[hBoxHandle]->uiBuffer=uiBuffer; + box->uiBuffer = uiBuffer; - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; + box->fUpdated = FALSE; } -void SetBoxPosition( INT32 hBoxHandle,SGPPoint Position ) +void SetBoxPosition( INT32 hBoxHandle, SGPPoint Position ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - PopUpBoxList[hBoxHandle]->Position.iX=Position.iX; - PopUpBoxList[hBoxHandle]->Position.iY=Position.iY; + box->Position.iX = Position.iX; + box->Position.iY = Position.iY; - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; + box->fUpdated = FALSE; } void GetBoxPosition( INT32 hBoxHandle, SGPPoint *Position ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - Position->iX = PopUpBoxList[hBoxHandle]->Position.iX; - Position->iY = PopUpBoxList[hBoxHandle]->Position.iY; + Position->iX = box->Position.iX; + Position->iY = box->Position.iY; } -void SetBoxSize(INT32 hBoxHandle,SGPRect Dimensions) +void SetBoxSize( INT32 hBoxHandle, SGPRect Dimensions ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - PopUpBoxList[hBoxHandle]->Dimensions.iLeft=Dimensions.iLeft; - PopUpBoxList[hBoxHandle]->Dimensions.iBottom=Dimensions.iBottom; - PopUpBoxList[hBoxHandle]->Dimensions.iRight=Dimensions.iRight; - PopUpBoxList[hBoxHandle]->Dimensions.iTop=Dimensions.iTop; + box->Dimensions.iLeft = Dimensions.iLeft; + box->Dimensions.iBottom = Dimensions.iBottom; + box->Dimensions.iRight = Dimensions.iRight; + box->Dimensions.iTop = Dimensions.iTop; - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; + box->fUpdated = FALSE; } void GetBoxSize( INT32 hBoxHandle, SGPRect *Dimensions ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box ); - Dimensions->iLeft = PopUpBoxList[hBoxHandle]->Dimensions.iLeft; - Dimensions->iBottom = PopUpBoxList[hBoxHandle]->Dimensions.iBottom; - Dimensions->iRight = PopUpBoxList[hBoxHandle]->Dimensions.iRight; - Dimensions->iTop = PopUpBoxList[hBoxHandle]->Dimensions.iTop; + Dimensions->iLeft = box->Dimensions.iLeft; + Dimensions->iBottom = box->Dimensions.iBottom; + Dimensions->iRight = box->Dimensions.iRight; + Dimensions->iTop = box->Dimensions.iTop; } -void SetBorderType(INT32 hBoxHandle, INT32 iBorderObjectIndex) +void SetBorderType( INT32 hBoxHandle, INT32 iBorderObjectIndex ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); - PopUpBoxList[hBoxHandle]->iBorderObjectIndex=iBorderObjectIndex; + Assert( PopUpBoxList[hBoxHandle] ); + PopUpBoxList[hBoxHandle]->iBorderObjectIndex = iBorderObjectIndex; } -void SetBackGroundSurface(INT32 hBoxHandle, INT32 iBackGroundSurfaceIndex) +void SetBackGroundSurface( INT32 hBoxHandle, INT32 iBackGroundSurfaceIndex ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ hBoxHandle ] ); - PopUpBoxList[hBoxHandle]->iBackGroundSurface=iBackGroundSurfaceIndex; + Assert( PopUpBoxList[hBoxHandle] ); + PopUpBoxList[hBoxHandle]->iBackGroundSurface = iBackGroundSurfaceIndex; } -// adds a FIRST column string to the CURRENT popup box -void AddMonoString(UINT32 *hStringHandle, STR16 pString) +// Adds a string to the first available slot in the column +void AddMonoString( UINT32 *hStringHandle, STR16 pString, UINT8 column ) { - STR16 pLocalString=NULL; - POPUPSTRINGPTR pStringSt=NULL; - INT32 iCounter=0; + STR16 pLocalString = NULL; + POPUPSTRINGPTR pStringSt = NULL; + INT32 iCounter = 0; - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); - // find first free slot in list - for( iCounter = 0; ( iCounter < MAX_POPUP_BOX_STRING_COUNT ) && ( PopUpBoxList[guiCurrentBox]->Text[iCounter] != NULL ); iCounter++ ); - - if ( iCounter >= MAX_POPUP_BOX_STRING_COUNT ) - { - // using too many text lines, or not freeing them up properly - Assert(0); - return; - } - - pStringSt=(POPUPSTRING *)(MemAlloc(sizeof(POPUPSTRING))); - if (pStringSt == NULL) - return; - - pLocalString=(STR16)MemAlloc((wcslen(pString)+1)*sizeof(CHAR16)); - if (pLocalString == NULL) - return; - - wcscpy(pLocalString, pString); - - RemoveCurrentBoxPrimaryText( iCounter ); - - PopUpBoxList[guiCurrentBox]->Text[iCounter]=pStringSt; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->fColorFlag=FALSE; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->pString=pLocalString; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->fShadeFlag = FALSE; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->fHighLightFlag = FALSE; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->fSecondaryShadeFlag = FALSE; - - *hStringHandle=iCounter; - - PopUpBoxList[guiCurrentBox]->fUpdated = FALSE; - - return; -} - - -// adds a SECOND column string to the CURRENT popup box -void AddSecondColumnMonoString( UINT32 *hStringHandle, STR16 pString ) -{ - STR16 pLocalString=NULL; - POPUPSTRINGPTR pStringSt=NULL; - INT32 iCounter=0; - - - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) - return; - - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - - // find the LAST USED text string index - for( iCounter = 0; ( iCounter + 1 < MAX_POPUP_BOX_STRING_COUNT ) && ( PopUpBoxList[guiCurrentBox]->Text[ iCounter + 1 ] != NULL ); iCounter++ ); + // find first free slot in list + for ( iCounter = 0; (iCounter < MAX_POPUP_BOX_STRING_COUNT) && (box->Text[column][iCounter] != NULL); iCounter++ ); if ( iCounter >= MAX_POPUP_BOX_STRING_COUNT ) { // using too many text lines, or not freeing them up properly - Assert(0); + Assert( 0 ); return; } - pStringSt=(POPUPSTRING *)(MemAlloc(sizeof(POPUPSTRING))); - if (pStringSt == NULL) + pStringSt = (POPUPSTRING *)(MemAlloc( sizeof( POPUPSTRING ) )); + if ( pStringSt == NULL ) return; - pLocalString=(STR16)MemAlloc((wcslen(pString)+1)*sizeof(CHAR16)); - if (pLocalString == NULL) + pLocalString = (STR16)MemAlloc( (wcslen( pString ) + 1) * sizeof( CHAR16 ) ); + if ( pLocalString == NULL ) return; - wcscpy(pLocalString, pString); + wcscpy( pLocalString, pString ); + + RemoveCurrentBoxText( iCounter, column ); + + box->Text[column][iCounter] = pStringSt; + box->Text[column][iCounter]->fColorFlag = FALSE; + box->Text[column][iCounter]->pString = pLocalString; + box->Text[column][iCounter]->fShadeFlag = FALSE; + box->Text[column][iCounter]->fHighLightFlag = FALSE; + box->Text[column][iCounter]->fSecondaryShadeFlag = FALSE; + + *hStringHandle = iCounter; + box->fUpdated = FALSE; + return; +} + + +// Adds string to the current popup box 2nd column. !!! String's position is the LAST used position in the 1st column !!! +void AddSecondColumnMonoString( UINT32 *hStringHandle, STR16 pString ) +{ + STR16 pLocalString = NULL; + POPUPSTRINGPTR pStringSt = NULL; + INT32 iCounter = 0; + + + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) + return; + + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + + // find the LAST USED text string index + for ( iCounter = 0; (iCounter + 1 < MAX_POPUP_BOX_STRING_COUNT) && (box->Text[0][iCounter + 1] != NULL); iCounter++ ); + + if ( iCounter >= MAX_POPUP_BOX_STRING_COUNT ) + { + // using too many text lines, or not freeing them up properly + Assert( 0 ); + return; + } + + pStringSt = (POPUPSTRING *)(MemAlloc( sizeof( POPUPSTRING ) )); + if ( pStringSt == NULL ) + return; + + pLocalString = (STR16)MemAlloc( (wcslen( pString ) + 1) * sizeof( CHAR16 ) ); + if ( pLocalString == NULL ) + return; + + wcscpy( pLocalString, pString ); RemoveCurrentBoxSecondaryText( iCounter ); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]=pStringSt; - PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->fColorFlag=FALSE; - PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->pString=pLocalString; - PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->fShadeFlag = FALSE; - PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->fHighLightFlag = FALSE; + box->Text[1][iCounter] = pStringSt; + box->Text[1][iCounter]->fColorFlag = FALSE; + box->Text[1][iCounter]->pString = pLocalString; + box->Text[1][iCounter]->fShadeFlag = FALSE; + box->Text[1][iCounter]->fHighLightFlag = FALSE; + box->Text[1][iCounter]->fSecondaryShadeFlag = FALSE; - *hStringHandle=iCounter; + *hStringHandle = iCounter; return; } // Adds a COLORED first column string to the CURRENT box -void AddColorString(INT32 *hStringHandle, STR16 pString) +void AddColorString( INT32 *hStringHandle, STR16 pString, UINT8 column ) { - STR16 pLocalString; - POPUPSTRINGPTR pStringSt=NULL; - INT32 iCounter=0; + STR16 pLocalString; + POPUPSTRINGPTR pStringSt = NULL; + INT32 iCounter = 0; - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); - // find first free slot in list - for( iCounter = 0; ( iCounter < MAX_POPUP_BOX_STRING_COUNT ) && ( PopUpBoxList[guiCurrentBox]->Text[iCounter] != NULL ); iCounter++ ); + // find first free slot in list + for ( iCounter = 0; (iCounter < MAX_POPUP_BOX_STRING_COUNT) && (box->Text[column][iCounter] != NULL); iCounter++ ); + + if ( iCounter >= MAX_POPUP_BOX_STRING_COUNT ) + { + // using too many text lines, or not freeing them up properly + Assert( 0 ); + return; + } + + pStringSt = (POPUPSTRING *)(MemAlloc( sizeof( POPUPSTRING ) )); + if ( pStringSt == NULL ) + return; + + pLocalString = (STR16)MemAlloc( (wcslen( pString ) + 1) * sizeof( CHAR16 ) ); + if ( pLocalString == NULL ) + return; + + wcscpy( pLocalString, pString ); + + RemoveCurrentBoxText( iCounter, column ); + + box->Text[column][iCounter] = pStringSt; + box->Text[column][iCounter]->fColorFlag = TRUE; + box->Text[column][iCounter]->pString = pLocalString; + + *hStringHandle = iCounter; + + box->fUpdated = FALSE; - if ( iCounter >= MAX_POPUP_BOX_STRING_COUNT ) - { - // using too many text lines, or not freeing them up properly - Assert(0); return; - } - - pStringSt=(POPUPSTRING *)(MemAlloc(sizeof(POPUPSTRING))); - if (pStringSt == NULL) - return; - - pLocalString=(STR16)MemAlloc((wcslen(pString)+1)*sizeof(CHAR16)); - if (pLocalString == NULL) - return; - - wcscpy(pLocalString, pString); - - RemoveCurrentBoxPrimaryText( iCounter ); - - PopUpBoxList[guiCurrentBox]->Text[iCounter]=pStringSt; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->fColorFlag=TRUE; - PopUpBoxList[guiCurrentBox]->Text[iCounter]->pString=pLocalString; - - *hStringHandle=iCounter; - - PopUpBoxList[guiCurrentBox]->fUpdated = FALSE; - - return; } @@ -493,22 +510,22 @@ void ResizeBoxForSecondStrings( INT32 hBoxHandle ) UINT32 uiBaseWidth, uiThisWidth; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - pBox = ( PopUpBoxList[ hBoxHandle ] ); + pBox = (PopUpBoxList[hBoxHandle]); Assert( pBox ); uiBaseWidth = pBox->uiLeftMargin + pBox->uiSecondColumnMinimunOffset; // check string sizes - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) + for ( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) { - if( pBox->Text[ iCounter ] ) + if ( pBox->Text[0][iCounter] ) { - uiThisWidth = uiBaseWidth + StringPixLength( pBox->Text[ iCounter ]->pString, pBox->Text[ iCounter ]->uiFont ); + uiThisWidth = uiBaseWidth + StringPixLength( pBox->Text[0][iCounter]->pString, pBox->Text[0][iCounter]->uiFont ); - if( uiThisWidth > pBox->uiSecondColumnCurrentOffset ) + if ( uiThisWidth > pBox->uiSecondColumnCurrentOffset ) { pBox->uiSecondColumnCurrentOffset = uiThisWidth; } @@ -516,56 +533,125 @@ void ResizeBoxForSecondStrings( INT32 hBoxHandle ) } } +static void ResizeStrategicMvtBoxForSecondStrings( INT32 hBoxHandle ) +{ + INT32 iCounter = 0; + PopUpBoxPt pBox; + UINT32 uiBaseWidth, uiThisWidth; -UINT32 GetNumberOfLinesOfTextInBox( INT32 hBoxHandle ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return; + + pBox = (PopUpBoxList[hBoxHandle]); + Assert( pBox ); + + // Determine last line for next loop + UINT8 last = MAX_POPUP_BOX_STRING_COUNT; + for ( iCounter = 1; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) + { + if ( pBox->Text[0][iCounter] == nullptr ) + { + // Do not consider the last blank, "cancel" & "Plot Travel route" lines + last = iCounter - 3; + break; + } + } + + uiBaseWidth = pBox->uiLeftMargin + pBox->uiSecondColumnMinimunOffset; + + // check string sizes, skip title line + for ( iCounter = 1; iCounter < last; iCounter++ ) + { + if ( pBox->Text[0][iCounter] ) + { + uiThisWidth = uiBaseWidth + StringPixLength( pBox->Text[0][iCounter]->pString, pBox->Text[0][iCounter]->uiFont ); + + if ( uiThisWidth > pBox->uiSecondColumnCurrentOffset ) + { + // Maintain width if something is selected and the '*' characters have been added + if ( wcsncmp( pBox->Text[0][iCounter]->pString, L" *", 3 ) == 0 ) + { + uiThisWidth -= 10; + } + pBox->uiSecondColumnCurrentOffset = uiThisWidth; + } + } + } +} + + +UINT32 GetNumberOfLinesOfTextInBox( INT32 hBoxHandle, UINT8 column ) { INT32 iCounter = 0; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return( 0 ); + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return(0); // count number of lines // check string size - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) + for ( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) { - if( PopUpBoxList[ hBoxHandle ]->Text[ iCounter ] == NULL ) + if ( PopUpBoxList[hBoxHandle]->Text[column][iCounter] == NULL ) { break; } } - return( iCounter ); + return(iCounter); } - -void SetBoxFont(INT32 hBoxHandle, UINT32 uiFont) +UINT32 GetTotalNumberOfLinesOfTextInBox( INT32 hBoxHandle ) { - UINT32 uiCounter; + UINT32 lines = 0; + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return(0); - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + // count number of lines + // check string size + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + for ( INT32 iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) + { + if ( PopUpBoxList[hBoxHandle]->Text[i][iCounter] == NULL ) + { + break; + } + lines += 1; + } + } + + return(lines); +} + + +void SetBoxFont( INT32 hBoxHandle, UINT32 uiFont ) +{ + UINT32 uiCounter; + + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) - { - if ( PopUpBoxList[hBoxHandle]->Text[uiCounter] != NULL) + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) { - PopUpBoxList[hBoxHandle]->Text[uiCounter]->uiFont=uiFont; + for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) + { + if ( PopUpBoxList[hBoxHandle]->Text[i][uiCounter] != NULL ) + { + PopUpBoxList[hBoxHandle]->Text[i][uiCounter]->uiFont = uiFont; + } + } } - } - // set up the 2nd column font - SetBoxSecondColumnFont( hBoxHandle, uiFont ); + PopUpBoxList[hBoxHandle]->fUpdated = FALSE; - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; - - return; + return; } void SetBoxSecondColumnMinimumOffset( INT32 hBoxHandle, UINT32 uiWidth ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; PopUpBoxList[hBoxHandle]->uiSecondColumnMinimunOffset = uiWidth; @@ -574,56 +660,56 @@ void SetBoxSecondColumnMinimumOffset( INT32 hBoxHandle, UINT32 uiWidth ) void SetBoxSecondColumnCurrentOffset( INT32 hBoxHandle, UINT32 uiCurrentOffset ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; PopUpBoxList[hBoxHandle]->uiSecondColumnCurrentOffset = uiCurrentOffset; return; } -void SetBoxSecondColumnFont(INT32 hBoxHandle, UINT32 uiFont) -{ - UINT32 iCounter=0; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) +void SetBoxColumnFont( INT32 hBoxHandle, UINT32 uiFont, UINT8 column ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) - { - if( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter] ) + for ( UINT32 uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter]->uiFont=uiFont; + if ( PopUpBoxList[hBoxHandle]->Text[column][uiCounter] != NULL ) + { + PopUpBoxList[hBoxHandle]->Text[column][uiCounter]->uiFont = uiFont; + } } - } - PopUpBoxList[hBoxHandle]->fUpdated = FALSE; - - return; + PopUpBoxList[hBoxHandle]->fUpdated = FALSE; + return; } + + UINT32 GetBoxFont( INT32 hBoxHandle ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return( 0 ); + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return(0); - Assert( PopUpBoxList[ hBoxHandle ] ); - Assert( PopUpBoxList[ hBoxHandle ]->Text[ 0 ] ); + Assert( PopUpBoxList[hBoxHandle] ); + Assert( PopUpBoxList[hBoxHandle]->Text[0][0] ); // return font id of first line of text of box - return( PopUpBoxList[hBoxHandle]->Text[ 0 ]->uiFont ); + return(PopUpBoxList[hBoxHandle]->Text[0][0]->uiFont); } // set the foreground color of this string in this pop up box void SetBoxLineForeground( INT32 iBox, INT32 iStringValue, UINT8 ubColor ) { - if ( ( iBox < 0 ) || ( iBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (iBox < 0) || (iBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ iBox ] ); - Assert( PopUpBoxList[ iBox ]->Text[iStringValue] ); + Assert( PopUpBoxList[iBox] ); + Assert( PopUpBoxList[iBox]->Text[0][iStringValue] ); - PopUpBoxList[iBox]->Text[iStringValue]->ubForegroundColor=ubColor; + PopUpBoxList[iBox]->Text[0][iStringValue]->ubForegroundColor = ubColor; return; } @@ -631,16 +717,16 @@ void SetBoxSecondaryShade( INT32 iBox, UINT8 ubColor ) { UINT32 uiCounter; - if ( ( iBox < 0 ) || ( iBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (iBox < 0) || (iBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[ iBox ] ); + Assert( PopUpBoxList[iBox] ); for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - if (PopUpBoxList[iBox]->Text[uiCounter]!=NULL) + if ( PopUpBoxList[iBox]->Text[0][uiCounter] != NULL ) { - PopUpBoxList[iBox]->Text[uiCounter]->ubSecondaryShade=ubColor; + PopUpBoxList[iBox]->Text[0][uiCounter]->ubSecondaryShade = ubColor; } } return; @@ -648,452 +734,469 @@ void SetBoxSecondaryShade( INT32 iBox, UINT8 ubColor ) // The following functions operate on the CURRENT box - -void SetPopUpStringFont(INT32 hStringHandle, UINT32 uiFont) +void SetPopUpStringFont( INT32 hStringHandle, UINT32 uiFont ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->Text[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[0][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->uiFont=uiFont; - return; + box->Text[0][hStringHandle]->uiFont = uiFont; + return; } -void SetPopUpSecondColumnStringFont(INT32 hStringHandle, UINT32 uiFont) +void SetPopUpSecondColumnStringFont( INT32 hStringHandle, UINT32 uiFont ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[1][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->uiFont=uiFont; - return; + box->Text[1][hStringHandle]->uiFont = uiFont; + return; } -void SetStringSecondaryShade(INT32 hStringHandle, UINT8 ubColor) +void SetStringSecondaryShade( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->Text[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[0][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->ubSecondaryShade=ubColor; - return; + box->Text[0][hStringHandle]->ubSecondaryShade = ubColor; + return; } -void SetStringForeground(INT32 hStringHandle, UINT8 ubColor) +void SetStringForeground( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->Text[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[0][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->ubForegroundColor=ubColor; - return; + box->Text[0][hStringHandle]->ubForegroundColor = ubColor; + return; } -void SetStringBackground(INT32 hStringHandle, UINT8 ubColor) +void SetStringBackground( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->Text[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[0][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->ubBackgroundColor=ubColor; - return; + box->Text[0][hStringHandle]->ubBackgroundColor = ubColor; + return; } -void SetStringHighLight(INT32 hStringHandle, UINT8 ubColor) +void SetStringHighLight( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->Text[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[0][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->ubHighLight=ubColor; - return; + box->Text[0][hStringHandle]->ubHighLight = ubColor; + return; } -void SetStringShade(INT32 hStringHandle, UINT8 ubShade) +void SetStringShade( INT32 hStringHandle, UINT8 ubShade ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->Text[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[0][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->ubShade=ubShade; - return; + box->Text[0][hStringHandle]->ubShade = ubShade; + return; } -void SetStringSecondColumnForeground(INT32 hStringHandle, UINT8 ubColor) +void SetStringSecondColumnForeground( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[1][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->ubForegroundColor=ubColor; - return; + box->Text[1][hStringHandle]->ubForegroundColor = ubColor; + return; } -void SetStringSecondColumnBackground(INT32 hStringHandle, UINT8 ubColor) +void SetStringSecondColumnBackground( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[1][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->ubBackgroundColor=ubColor; - return; + box->Text[1][hStringHandle]->ubBackgroundColor = ubColor; + return; } -void SetStringSecondColumnHighLight(INT32 hStringHandle, UINT8 ubColor) +void SetStringSecondColumnHighLight( INT32 hStringHandle, UINT8 ubColor ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[1][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->ubHighLight=ubColor; - return; + box->Text[1][hStringHandle]->ubHighLight = ubColor; + return; } -void SetStringSecondColumnShade(INT32 hStringHandle, UINT8 ubShade) +void SetStringSecondColumnShade( INT32 hStringHandle, UINT8 ubShade ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - Assert( PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle] ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( box->Text[1][hStringHandle] ); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->ubShade=ubShade; - return; + box->Text[1][hStringHandle]->ubShade = ubShade; + return; } -void SetBoxForeground(INT32 hBoxHandle, UINT8 ubColor) +void SetBoxForeground( INT32 hBoxHandle, UINT8 ubColor ) { UINT32 uiCounter; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; Assert( PopUpBoxList[hBoxHandle] != NULL ); for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - if (PopUpBoxList[hBoxHandle]->Text[uiCounter]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[0][uiCounter] != NULL ) { - PopUpBoxList[hBoxHandle]->Text[uiCounter]->ubForegroundColor=ubColor; + PopUpBoxList[hBoxHandle]->Text[0][uiCounter]->ubForegroundColor = ubColor; } } return; } -void SetBoxBackground(INT32 hBoxHandle, UINT8 ubColor) +void SetBoxBackground( INT32 hBoxHandle, UINT8 ubColor ) { UINT32 uiCounter; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; Assert( PopUpBoxList[hBoxHandle] != NULL ); for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - if (PopUpBoxList[hBoxHandle]->Text[uiCounter]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[0][uiCounter] != NULL ) { - PopUpBoxList[hBoxHandle]->Text[uiCounter]->ubBackgroundColor=ubColor; + PopUpBoxList[hBoxHandle]->Text[0][uiCounter]->ubBackgroundColor = ubColor; } } return; } -void SetBoxHighLight(INT32 hBoxHandle, UINT8 ubColor) +void SetBoxHighLight( INT32 hBoxHandle, UINT8 ubColor ) { UINT32 uiCounter; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; Assert( PopUpBoxList[hBoxHandle] != NULL ); for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - if (PopUpBoxList[hBoxHandle]->Text[uiCounter]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[0][uiCounter] != NULL ) { - PopUpBoxList[hBoxHandle]->Text[uiCounter]->ubHighLight=ubColor; + PopUpBoxList[hBoxHandle]->Text[0][uiCounter]->ubHighLight = ubColor; } } return; } -void SetBoxShade(INT32 hBoxHandle, UINT8 ubColor) +void SetBoxShade( INT32 hBoxHandle, UINT8 ubColor ) { UINT32 uiCounter; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; Assert( PopUpBoxList[hBoxHandle] != NULL ); for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - if (PopUpBoxList[hBoxHandle]->Text[uiCounter]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[0][uiCounter] != NULL ) { - PopUpBoxList[hBoxHandle]->Text[uiCounter]->ubShade=ubColor; + PopUpBoxList[hBoxHandle]->Text[0][uiCounter]->ubShade = ubColor; } } return; } -void SetBoxSecondColumnForeground(INT32 hBoxHandle, UINT8 ubColor) -{ - UINT32 iCounter=0; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + + +void SetBoxColumnForeground( INT32 hBoxHandle, UINT8 ubColor, UINT8 column ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[hBoxHandle] != NULL ); + auto box = PopUpBoxList[hBoxHandle]; + Assert( box != NULL ); - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) - { - if( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter] ) + for ( UINT32 uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) { - PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter]->ubForegroundColor=ubColor; + if ( box->Text[column][uiCounter] != NULL ) + { + box->Text[column][uiCounter]->ubForegroundColor = ubColor; + } } - } - - return; -} - -void SetBoxSecondColumnBackground(INT32 hBoxHandle, UINT8 ubColor) -{ - UINT32 iCounter=0; - - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return; - - Assert( PopUpBoxList[hBoxHandle] != NULL ); - - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) - { - if( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter] ) - { - PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter]->ubBackgroundColor=ubColor; - } - } - - return; -} - -void SetBoxSecondColumnHighLight(INT32 hBoxHandle, UINT8 ubColor) -{ - UINT32 iCounter=0; - - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return; - - Assert( PopUpBoxList[hBoxHandle] != NULL ); - - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) - { - if( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter] ) - { - PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter]->ubHighLight=ubColor; - } - } - - return; -} - -void SetBoxSecondColumnShade(INT32 hBoxHandle, UINT8 ubColor) -{ - UINT32 iCounter=0; - - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return; - - Assert( PopUpBoxList[hBoxHandle] != NULL ); - - for( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) - { - if( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter] ) - { - PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter]->ubShade=ubColor; - } - } - return; -} - - -void HighLightLine(INT32 hStringHandle) -{ - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) - return; - - Assert( PopUpBoxList[guiCurrentBox] != NULL ); - - if(!PopUpBoxList[guiCurrentBox]->Text[hStringHandle]) return; - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->fHighLightFlag=TRUE; - return; } +void SetBoxColumnBackground( INT32 hBoxHandle, UINT8 ubColor, UINT8 column ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return; + + auto box = PopUpBoxList[hBoxHandle]; + Assert( box != NULL ); + + for ( UINT32 uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) + { + if ( box->Text[column][uiCounter] != NULL ) + { + box->Text[column][uiCounter]->ubBackgroundColor = ubColor; + } + } + return; +} + +void SetBoxColumnHighLight( INT32 hBoxHandle, UINT8 ubColor, UINT8 column ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return; + + auto box = PopUpBoxList[hBoxHandle]; + Assert( box != NULL ); + + for ( UINT32 uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) + { + if ( box->Text[column][uiCounter] != NULL ) + { + box->Text[column][uiCounter]->ubHighLight = ubColor; + } + } + return; +} + +void SetBoxColumnShade( INT32 hBoxHandle, UINT8 ubColor, UINT8 column ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return; + + auto box = PopUpBoxList[hBoxHandle]; + Assert( box != NULL ); + + for ( UINT32 uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) + { + if ( box->Text[column][uiCounter] != NULL ) + { + box->Text[column][uiCounter]->ubShade = ubColor; + } + } + return; +} + + + +void HighLightLine( INT32 hStringHandle, UINT8 column ) +{ + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) + return; + + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + + if ( !box->Text[column][hStringHandle] ) + return; + box->Text[column][hStringHandle]->fHighLightFlag = TRUE; + return; +} + + BOOLEAN GetShadeFlag( INT32 hStringHandle ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return(FALSE); - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); - if(!PopUpBoxList[guiCurrentBox]->Text[hStringHandle]) - return( FALSE ); + if ( !box->Text[0][hStringHandle] ) + return(FALSE); - return( PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->fShadeFlag); + return(box->Text[0][hStringHandle]->fShadeFlag); } BOOLEAN GetSecondaryShadeFlag( INT32 hStringHandle ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return(FALSE); - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); - if(!PopUpBoxList[guiCurrentBox]->Text[hStringHandle]) - return( FALSE ); + if ( !box->Text[0][hStringHandle] ) + return(FALSE); - return( PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->fSecondaryShadeFlag ); + return(box->Text[0][hStringHandle]->fSecondaryShadeFlag); } -void HighLightBoxLine( INT32 hBoxHandle, INT32 iLineNumber ) +void HighLightBoxLine( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; // highlight iLineNumber Line in box indexed by hBoxHandle - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[column][iLineNumber] != NULL ) { // set current box SetCurrentBox( hBoxHandle ); // highlight line - HighLightLine( iLineNumber ); + HighLightLine( iLineNumber, column ); } return; } + BOOLEAN GetBoxShadeFlag( INT32 hBoxHandle, INT32 iLineNumber ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return(FALSE); - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[0][iLineNumber] != NULL ) { - return( PopUpBoxList[hBoxHandle]->Text[iLineNumber]->fShadeFlag ); + return(PopUpBoxList[hBoxHandle]->Text[0][iLineNumber]->fShadeFlag); } - return( FALSE ); + return(FALSE); } BOOLEAN GetBoxSecondaryShadeFlag( INT32 hBoxHandle, INT32 iLineNumber ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return(FALSE); - if( PopUpBoxList[hBoxHandle]->Text[iLineNumber]!=NULL) + if ( PopUpBoxList[hBoxHandle]->Text[0][iLineNumber] != NULL ) { - return( PopUpBoxList[hBoxHandle]->Text[iLineNumber]->fSecondaryShadeFlag ); + return(PopUpBoxList[hBoxHandle]->Text[0][iLineNumber]->fSecondaryShadeFlag); } - return( FALSE ); + return(FALSE); } -void UnHighLightLine(INT32 hStringHandle) +void UnHighLightLine( INT32 hStringHandle, UINT8 column ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); - if(!PopUpBoxList[guiCurrentBox]->Text[hStringHandle]) + if ( !box->Text[column][hStringHandle] ) + return; + box->Text[column][hStringHandle]->fHighLightFlag = FALSE; return; - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->fHighLightFlag=FALSE; - return; } -void UnHighLightBox(INT32 hBoxHandle) +void UnHighLightBox( INT32 hBoxHandle ) { - INT32 iCounter=0; - - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - for(iCounter=0; iCounter Text[iCounter]) - PopUpBoxList[hBoxHandle]->Text[iCounter]->fHighLightFlag=FALSE; - } + auto box = PopUpBoxList[hBoxHandle]; + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + for ( INT32 iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) + { + if ( box->Text[i][iCounter] ) + box->Text[i][iCounter]->fHighLightFlag = FALSE; + } + } } -void UnHighLightSecondColumnLine(INT32 hStringHandle) +void UnHighLightSecondColumnLine( INT32 hStringHandle ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); - if(!PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]) + if ( !box->Text[1][hStringHandle] ) + return; + + box->Text[1][hStringHandle]->fHighLightFlag = FALSE; return; - - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->fHighLightFlag=FALSE; - return; } -void UnHighLightSecondColumnBox(INT32 hBoxHandle) +void UnHighLightSecondColumnBox( INT32 hBoxHandle ) { - INT32 iCounter=0; + INT32 iCounter = 0; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - for(iCounter=0; iCounter pSecondColumnString[iCounter]) - PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter]->fHighLightFlag=FALSE; - } + for ( iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++ ) + { + if ( PopUpBoxList[hBoxHandle]->Text[1][iCounter] ) + PopUpBoxList[hBoxHandle]->Text[1][iCounter]->fHighLightFlag = FALSE; + } } -void RemoveOneCurrentBoxString(INT32 hStringHandle, BOOLEAN fFillGaps) +void RemoveOneCurrentBoxString( INT32 hStringHandle, BOOLEAN fFillGaps ) { - UINT32 uiCounter=0; + UINT32 uiCounter = 0; - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); Assert( hStringHandle < MAX_POPUP_BOX_STRING_COUNT ); RemoveCurrentBoxPrimaryText( hStringHandle ); @@ -1102,62 +1205,64 @@ void RemoveOneCurrentBoxString(INT32 hStringHandle, BOOLEAN fFillGaps) if ( fFillGaps ) { // shuffle all strings down a slot to fill in the gap - for ( uiCounter = hStringHandle; uiCounter < ( MAX_POPUP_BOX_STRING_COUNT - 1 ); uiCounter++ ) + for ( uiCounter = hStringHandle; uiCounter < (MAX_POPUP_BOX_STRING_COUNT - 1); uiCounter++ ) { - PopUpBoxList[guiCurrentBox]->Text[uiCounter]=PopUpBoxList[guiCurrentBox]->Text[uiCounter+1]; - PopUpBoxList[guiCurrentBox]->pSecondColumnString[uiCounter]=PopUpBoxList[guiCurrentBox]->pSecondColumnString[uiCounter+1]; + box->Text[0][uiCounter] = box->Text[0][uiCounter + 1]; + box->Text[1][uiCounter] = box->Text[1][uiCounter + 1]; } } - PopUpBoxList[guiCurrentBox]->fUpdated = FALSE; + box->fUpdated = FALSE; } - void RemoveAllCurrentBoxStrings( void ) { - UINT32 uiCounter; - - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) || !PopUpBoxList[guiCurrentBox] ) return; - for(uiCounter=0; uiCounter = MAX_POPUP_BOX_COUNT ) ) - return; - - GetCurrentBox(&hOldBoxHandle); - SetCurrentBox(hBoxHandle); - - RemoveAllCurrentBoxStrings(); - - MemFree(PopUpBoxList[hBoxHandle]); - PopUpBoxList[hBoxHandle]=NULL; - - if(hOldBoxHandle !=hBoxHandle) - SetCurrentBox(hOldBoxHandle); - - return; -} - - - -void ShowBox(INT32 hBoxHandle) -{ - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) - return; - - if( PopUpBoxList[hBoxHandle] != NULL ) + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) { - if( PopUpBoxList[hBoxHandle]->fShowBox == FALSE ) + for ( UINT32 uiCounter = 0; uiCounter < MAX_POPUP_BOX_STRING_COUNT; uiCounter++ ) + { + RemoveCurrentBoxText( uiCounter, i ); + } + } +} + + +void RemoveBox( INT32 hBoxHandle ) +{ + INT32 hOldBoxHandle; + + + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return; + + GetCurrentBox( &hOldBoxHandle ); + SetCurrentBox( hBoxHandle ); + + RemoveAllCurrentBoxStrings(); + + MemFree( PopUpBoxList[hBoxHandle] ); + PopUpBoxList[hBoxHandle] = NULL; + + if ( hOldBoxHandle != hBoxHandle ) + SetCurrentBox( hOldBoxHandle ); + + return; +} + + + +void ShowBox( INT32 hBoxHandle ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return; + + if ( PopUpBoxList[hBoxHandle] != NULL ) + { + if ( PopUpBoxList[hBoxHandle]->fShowBox == FALSE ) { PopUpBoxList[hBoxHandle]->fShowBox = TRUE; PopUpBoxList[hBoxHandle]->fUpdated = FALSE; @@ -1165,14 +1270,14 @@ void ShowBox(INT32 hBoxHandle) } } -void HideBox(INT32 hBoxHandle) +void HideBox( INT32 hBoxHandle ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - if( PopUpBoxList[hBoxHandle] != NULL ) + if ( PopUpBoxList[hBoxHandle] != NULL ) { - if( PopUpBoxList[hBoxHandle]->fShowBox == TRUE ) + if ( PopUpBoxList[hBoxHandle]->fShowBox == TRUE ) { PopUpBoxList[hBoxHandle]->fShowBox = FALSE; PopUpBoxList[hBoxHandle]->fUpdated = FALSE; @@ -1182,27 +1287,27 @@ void HideBox(INT32 hBoxHandle) -void SetCurrentBox(INT32 hBoxHandle) +void SetCurrentBox( INT32 hBoxHandle ) { - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; guiCurrentBox = hBoxHandle; } -void GetCurrentBox(INT32 *hBoxHandle) +void GetCurrentBox( INT32 *hBoxHandle ) { *hBoxHandle = guiCurrentBox; } -void DisplayBoxes(UINT32 uiBuffer) +void DisplayBoxes( UINT32 uiBuffer ) { UINT32 uiCounter; - for( uiCounter=0; uiCounter < MAX_POPUP_BOX_COUNT; uiCounter++ ) + for ( uiCounter = 0; uiCounter < MAX_POPUP_BOX_COUNT; uiCounter++ ) { DisplayOnePopupBox( uiCounter, uiBuffer ); } @@ -1212,15 +1317,15 @@ void DisplayBoxes(UINT32 uiBuffer) void DisplayOnePopupBox( UINT32 uiIndex, UINT32 uiBuffer ) { - if ( ( uiIndex < 0 ) || ( uiIndex >= MAX_POPUP_BOX_COUNT ) ) + if ( (uiIndex < 0) || (uiIndex >= MAX_POPUP_BOX_COUNT) ) return; - if ( PopUpBoxList[ uiIndex ] != NULL ) + if ( PopUpBoxList[uiIndex] != NULL ) { - if( ( PopUpBoxList[ uiIndex ]->uiBuffer == uiBuffer) && ( PopUpBoxList[ uiIndex ]->fShowBox ) ) + if ( (PopUpBoxList[uiIndex]->uiBuffer == uiBuffer) && (PopUpBoxList[uiIndex]->fShowBox) ) { - DrawBox( uiIndex ); - DrawBoxText( uiIndex ); + DrawBox( uiIndex ); + DrawBoxText( uiIndex ); } } } @@ -1230,132 +1335,132 @@ void DisplayOnePopupBox( UINT32 uiIndex, UINT32 uiBuffer ) // force an update of this box void ForceUpDateOfBox( UINT32 uiIndex ) { - if ( ( uiIndex < 0 ) || ( uiIndex >= MAX_POPUP_BOX_COUNT ) ) + if ( (uiIndex < 0) || (uiIndex >= MAX_POPUP_BOX_COUNT) ) return; - if( PopUpBoxList[ uiIndex ] != NULL ) + if ( PopUpBoxList[uiIndex] != NULL ) { - PopUpBoxList[ uiIndex ]->fUpdated = FALSE; + PopUpBoxList[uiIndex]->fUpdated = FALSE; } } -BOOLEAN DrawBox(UINT32 uiCounter) +BOOLEAN DrawBox( UINT32 uiCounter ) { // will build pop up box in usTopX, usTopY with dimensions usWidth and usHeight UINT32 uiNumTilesWide; UINT32 uiNumTilesHigh; - UINT32 uiCount=0; + UINT32 uiCount = 0; HVOBJECT hBoxHandle; HVSURFACE hSrcVSurface; UINT32 uiDestPitchBYTES; UINT32 uiSrcPitchBYTES; - UINT16 *pDestBuf; - UINT8 *pSrcBuf; + UINT16 *pDestBuf; + UINT8 *pSrcBuf; SGPRect clip; UINT16 usTopX, usTopY; UINT16 usWidth, usHeight; - if ( ( uiCounter < 0 ) || ( uiCounter >= MAX_POPUP_BOX_COUNT ) ) + if ( (uiCounter < 0) || (uiCounter >= MAX_POPUP_BOX_COUNT) ) return(FALSE); - - Assert( PopUpBoxList[uiCounter] != NULL ); + auto box = PopUpBoxList[uiCounter]; + Assert( box != NULL ); // only update if we need to - if( PopUpBoxList[uiCounter]->fUpdated == TRUE ) + if ( box->fUpdated == TRUE ) { - return( FALSE ); + return(FALSE); } - PopUpBoxList[uiCounter]->fUpdated = TRUE; + box->fUpdated = TRUE; - if( PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_RESIZE ) + if ( box->uiFlags & POPUP_BOX_FLAG_RESIZE ) { - ResizeBoxToText(uiCounter); + ResizeBoxToText( uiCounter ); } - usTopX=(UINT16)PopUpBoxList[uiCounter]->Position.iX; - usTopY=(UINT16)PopUpBoxList[uiCounter]->Position.iY; - usWidth=((UINT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-PopUpBoxList[uiCounter]->Dimensions.iLeft)); - usHeight=((UINT16)(PopUpBoxList[uiCounter]->Dimensions.iBottom-PopUpBoxList[uiCounter]->Dimensions.iTop)); + usTopX = (UINT16)box->Position.iX; + usTopY = (UINT16)box->Position.iY; + usWidth = ((UINT16)(box->Dimensions.iRight - box->Dimensions.iLeft)); + usHeight = ((UINT16)(box->Dimensions.iBottom - box->Dimensions.iTop)); //CHRISL: Adjust position for screen limits - if((usTopX + usWidth) > SCREEN_WIDTH && usTopX > ((usTopX + usWidth) - SCREEN_WIDTH)) + if ( (usTopX + usWidth) > SCREEN_WIDTH && usTopX > ((usTopX + usWidth) - SCREEN_WIDTH) ) { usTopX -= ((usTopX + usWidth) - SCREEN_WIDTH); - PopUpBoxList[uiCounter]->Position.iX -= (PopUpBoxList[uiCounter]->Position.iX - usTopX); + box->Position.iX -= (box->Position.iX - usTopX); } - if((usTopY + usHeight) > SCREEN_HEIGHT && usTopY > ((usTopY + usHeight) - SCREEN_HEIGHT)) + if ( (usTopY + usHeight) > SCREEN_HEIGHT && usTopY > ((usTopY + usHeight) - SCREEN_HEIGHT) ) { usTopY -= ((usTopY + usHeight) - SCREEN_HEIGHT); - PopUpBoxList[uiCounter]->Position.iY -= (PopUpBoxList[uiCounter]->Position.iY - usTopY); + box->Position.iY -= (box->Position.iY - usTopY); } // check if we have a min width, if so then update box for such - if( ( PopUpBoxList[uiCounter]->uiBoxMinWidth ) && ( usWidth < PopUpBoxList[uiCounter]->uiBoxMinWidth ) ) + if ( (box->uiBoxMinWidth) && (usWidth < box->uiBoxMinWidth) ) { - usWidth = ( INT16 )( PopUpBoxList[uiCounter]->uiBoxMinWidth ); + usWidth = (INT16)(box->uiBoxMinWidth); } // make sure it will fit on screen! - Assert( usTopX + usWidth <= SCREEN_WIDTH ); + Assert( usTopX + usWidth <= SCREEN_WIDTH ); Assert( usTopY + usHeight <= SCREEN_HEIGHT ); // subtract 4 because the 2 2-pixel corners are handled separately - uiNumTilesWide=((usWidth-4)/BORDER_WIDTH); - uiNumTilesHigh=((usHeight-4)/BORDER_HEIGHT); + uiNumTilesWide = ((usWidth - 4) / BORDER_WIDTH); + uiNumTilesHigh = ((usHeight - 4) / BORDER_HEIGHT); - clip.iLeft=0; - clip.iRight=clip.iLeft+usWidth; - clip.iTop=0; - clip.iBottom=clip.iTop+usHeight; + clip.iLeft = 0; + clip.iRight = clip.iLeft + usWidth; + clip.iTop = 0; + clip.iBottom = clip.iTop + usHeight; // blit in texture first, then borders // blit in surface - pDestBuf = (UINT16*)LockVideoSurface(PopUpBoxList[uiCounter]->uiBuffer, &uiDestPitchBYTES); - CHECKF( GetVideoSurface( &hSrcVSurface, PopUpBoxList[uiCounter]->iBackGroundSurface) ); - pSrcBuf = LockVideoSurface( PopUpBoxList[uiCounter]->iBackGroundSurface, &uiSrcPitchBYTES); - Blt8BPPDataSubTo16BPPBuffer( pDestBuf, uiDestPitchBYTES, hSrcVSurface, pSrcBuf,uiSrcPitchBYTES,usTopX,usTopY, &clip); - UnLockVideoSurface( PopUpBoxList[uiCounter]->iBackGroundSurface); - UnLockVideoSurface(PopUpBoxList[uiCounter]->uiBuffer); - GetVideoObject(&hBoxHandle, PopUpBoxList[uiCounter]->iBorderObjectIndex); + pDestBuf = (UINT16 *)LockVideoSurface( box->uiBuffer, &uiDestPitchBYTES ); + CHECKF( GetVideoSurface( &hSrcVSurface, box->iBackGroundSurface ) ); + pSrcBuf = LockVideoSurface( box->iBackGroundSurface, &uiSrcPitchBYTES ); + Blt8BPPDataSubTo16BPPBuffer( pDestBuf, uiDestPitchBYTES, hSrcVSurface, pSrcBuf, uiSrcPitchBYTES, usTopX, usTopY, &clip ); + UnLockVideoSurface( box->iBackGroundSurface ); + UnLockVideoSurface( box->uiBuffer ); + GetVideoObject( &hBoxHandle, box->iBorderObjectIndex ); // blit in 4 corners (they're 2x2 pixels) - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, TOP_LEFT_CORNER,usTopX,usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, TOP_RIGHT_CORNER,usTopX+usWidth-2,usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, BOTTOM_RIGHT_CORNER,usTopX+usWidth-2,usTopY+usHeight-2, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, BOTTOM_LEFT_CORNER,usTopX,usTopY+usHeight-2, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, TOP_LEFT_CORNER, usTopX, usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, TOP_RIGHT_CORNER, usTopX + usWidth - 2, usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, BOTTOM_RIGHT_CORNER, usTopX + usWidth - 2, usTopY + usHeight - 2, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, BOTTOM_LEFT_CORNER, usTopX, usTopY + usHeight - 2, VO_BLT_SRCTRANSPARENCY, NULL ); // blit in edges - if (uiNumTilesWide > 0) + if ( uiNumTilesWide > 0 ) { // full pieces - for (uiCount=0; uiCount uiBuffer, hBoxHandle, TOP_EDGE, usTopX+2+(uiCount*BORDER_WIDTH),usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, BOTTOM_EDGE,usTopX+2+(uiCount*BORDER_WIDTH),usTopY+usHeight-2, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, TOP_EDGE, usTopX + 2 + (uiCount * BORDER_WIDTH), usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, BOTTOM_EDGE, usTopX + 2 + (uiCount * BORDER_WIDTH), usTopY + usHeight - 2, VO_BLT_SRCTRANSPARENCY, NULL ); } // partial pieces - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, TOP_EDGE, usTopX+usWidth-2-BORDER_WIDTH,usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, BOTTOM_EDGE,usTopX+usWidth-2-BORDER_WIDTH,usTopY+usHeight-2, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, TOP_EDGE, usTopX + usWidth - 2 - BORDER_WIDTH, usTopY, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, BOTTOM_EDGE, usTopX + usWidth - 2 - BORDER_WIDTH, usTopY + usHeight - 2, VO_BLT_SRCTRANSPARENCY, NULL ); } - if (uiNumTilesHigh > 0) + if ( uiNumTilesHigh > 0 ) { // full pieces - for (uiCount=0; uiCount uiBuffer, hBoxHandle, SIDE_EDGE,usTopX, usTopY+2+(uiCount*BORDER_HEIGHT), VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, SIDE_EDGE,usTopX+usWidth-2,usTopY+2+(uiCount*BORDER_HEIGHT), VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, SIDE_EDGE, usTopX, usTopY + 2 + (uiCount * BORDER_HEIGHT), VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, SIDE_EDGE, usTopX + usWidth - 2, usTopY + 2 + (uiCount * BORDER_HEIGHT), VO_BLT_SRCTRANSPARENCY, NULL ); } // partial pieces - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, SIDE_EDGE,usTopX, usTopY+usHeight-2-BORDER_HEIGHT, VO_BLT_SRCTRANSPARENCY, NULL ); - BltVideoObject(PopUpBoxList[uiCounter]->uiBuffer, hBoxHandle, SIDE_EDGE,usTopX+usWidth-2,usTopY+usHeight-2-BORDER_HEIGHT, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, SIDE_EDGE, usTopX, usTopY + usHeight - 2 - BORDER_HEIGHT, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( box->uiBuffer, hBoxHandle, SIDE_EDGE, usTopX + usWidth - 2, usTopY + usHeight - 2 - BORDER_HEIGHT, VO_BLT_SRCTRANSPARENCY, NULL ); } InvalidateRegion( usTopX, usTopY, usTopX + usWidth, usTopY + usHeight ); @@ -1364,177 +1469,167 @@ BOOLEAN DrawBox(UINT32 uiCounter) -BOOLEAN DrawBoxText(UINT32 uiCounter) +BOOLEAN DrawBoxText( UINT32 uiCounter ) { - UINT32 uiCount=0; - INT16 uX, uY; - CHAR16 sString[100]; + UINT32 uiCount = 0; + INT16 uX, uY; + CHAR16 sString[100]; - if ( ( uiCounter < 0 ) || ( uiCounter >= MAX_POPUP_BOX_COUNT ) ) + if ( (uiCounter < 0) || (uiCounter >= MAX_POPUP_BOX_COUNT) ) return(FALSE); + auto box = PopUpBoxList[uiCounter]; + Assert( box != NULL ); - Assert( PopUpBoxList[uiCounter] != NULL ); - - //clip text? - if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CLIP_TEXT) - { - SetFontDestBuffer(PopUpBoxList[uiCounter]->uiBuffer,PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin-1, PopUpBoxList[uiCounter]->Position.iY+PopUpBoxList[uiCounter]->uiTopMargin, PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->Dimensions.iRight-PopUpBoxList[uiCounter]->uiRightMargin,PopUpBoxList[uiCounter]->Position.iY+PopUpBoxList[uiCounter]->Dimensions.iBottom-PopUpBoxList[uiCounter]->uiBottomMargin, FALSE); - } - - for(uiCount=0; uiCount Text[uiCount]) + //clip text? + if ( box->uiFlags & POPUP_BOX_FLAG_CLIP_TEXT ) { + const auto x1 = box->Position.iX + box->uiLeftMargin - 1; + const auto y1 = box->Position.iY + box->uiTopMargin; + const auto x2 = box->Position.iX + box->Dimensions.iRight - box->uiRightMargin; + const auto y2 = box->Position.iY + box->Dimensions.iBottom - box->uiBottomMargin; + SetFontDestBuffer( box->uiBuffer, x1, y1, x2, y2, FALSE ); + } - // set font - SetFont(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont); - - // are we highlighting?...shading?..or neither - if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fHighLightFlag == FALSE )&&( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fShadeFlag == FALSE) &&( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fSecondaryShadeFlag == FALSE ) ) - { - // neither - SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubForegroundColor); - } - else if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fHighLightFlag == TRUE ) ) + for ( size_t i = 0; i < MAX_POPUP_BOX_COLUMNS; i++ ) + { + for ( uiCount = 0; uiCount < MAX_POPUP_BOX_STRING_COUNT; uiCount++ ) { + auto entry = box->Text[i][uiCount]; + // there is text in this line? + if ( entry ) + { + // set font + SetFont( entry->uiFont ); - // highlight - SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubHighLight); - } - else if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fSecondaryShadeFlag == TRUE ) ) - { - SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubSecondaryShade); - } - else - { - //shading - SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubShade); - } + // are we highlighting?...shading?..or neither + if ( (entry->fHighLightFlag == FALSE) && (entry->fShadeFlag == FALSE) && (entry->fSecondaryShadeFlag == FALSE) ) + { + // neither + SetFontForeground( entry->ubForegroundColor ); + } + else if ( (entry->fHighLightFlag == TRUE) ) + { + // highlight + SetFontForeground( entry->ubHighLight ); + } + else if ( (entry->fSecondaryShadeFlag == TRUE) ) + { + SetFontForeground( entry->ubSecondaryShade ); + } + else + { + //shading + SetFontForeground( entry->ubShade ); + } - // set background - SetFontBackground(PopUpBoxList[uiCounter]->Text[uiCount]->ubBackgroundColor); + // set background + SetFontBackground( entry->ubBackgroundColor ); - // copy string - wcsncpy(sString, PopUpBoxList[uiCounter]->Text[uiCount]->pString, wcslen(PopUpBoxList[uiCounter]->Text[uiCount]->pString)+1); + // copy string + wcsncpy( sString, entry->pString, wcslen( entry->pString ) + 1 ); - // cnetering? - if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT) - { - FindFontCenterCoordinates(((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)),((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)),((INT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-(PopUpBoxList[uiCounter]->uiRightMargin+PopUpBoxList[uiCounter]->uiLeftMargin+2))),((INT16)GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)),(sString),((INT32)PopUpBoxList[uiCounter]->Text[uiCount]->uiFont) ,&uX, &uY); + // centering? + if ( box->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT ) + { + INT16 sLeft = box->Position.iX + box->uiLeftMargin; + INT16 sTop = box->Position.iY + uiCount * GetFontHeight( entry->uiFont ) + box->uiTopMargin + uiCount * box->uiLineSpace; + INT16 sWidth = box->Dimensions.iRight - (box->uiRightMargin + box->uiLeftMargin + 2); + INT16 sHeight = GetFontHeight( entry->uiFont ); + FindFontCenterCoordinates( sLeft, sTop, sWidth, sHeight, (sString), ((INT32)entry->uiFont), &uX, &uY ); + } + else + { + uX = box->Position.iX + box->uiLeftMargin + box->uiSecondColumnCurrentOffset * i; + uY = ((INT16)(box->Position.iY + uiCount * GetFontHeight( entry->uiFont ) + box->uiTopMargin + uiCount * box->uiLineSpace)); + } + + // print + mprintf( uX, uY, entry->pString ); + } } - else - { - uX=((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)); - uY=((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)); - } - - // print - //gprintfdirty(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString ); - mprintf(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString); } - // there is secondary text in this line? - if(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]) + if ( box->uiBuffer != guiSAVEBUFFER ) { - - // set font - SetFont(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont); - - // are we highlighting?...shading?..or neither - if( ( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fHighLightFlag == FALSE )&&( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fShadeFlag == FALSE) ) - { - // neither - SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubForegroundColor); - } - else if( ( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fHighLightFlag == TRUE ) ) - { - - // highlight - SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubHighLight); - } - else - { - //shading - SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubShade); - } - - // set background - SetFontBackground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubBackgroundColor); - - // copy string - wcsncpy(sString, PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString, wcslen(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString)+1); - - // cnetering? - if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT) - { - FindFontCenterCoordinates(((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)),((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)),((INT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-(PopUpBoxList[uiCounter]->uiRightMargin+PopUpBoxList[uiCounter]->uiLeftMargin+2))),((INT16)GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)),(sString),((INT32)PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont) ,&uX, &uY); - } - else - { - uX=((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin + PopUpBoxList[uiCounter]->uiSecondColumnCurrentOffset ) ); - uY=((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)); - } - - // print - //gprintfdirty(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString ); - mprintf(uX,uY,PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString); - } - } - - - if( PopUpBoxList[uiCounter]->uiBuffer != guiSAVEBUFFER ) - { - InvalidateRegion( PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin-1, PopUpBoxList[uiCounter]->Position.iY+PopUpBoxList[uiCounter]->uiTopMargin, PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->Dimensions.iRight-PopUpBoxList[uiCounter]->uiRightMargin,PopUpBoxList[uiCounter]->Position.iY+PopUpBoxList[uiCounter]->Dimensions.iBottom-PopUpBoxList[uiCounter]->uiBottomMargin ); + InvalidateRegion( box->Position.iX + box->uiLeftMargin - 1, box->Position.iY + box->uiTopMargin, box->Position.iX + box->Dimensions.iRight - box->uiRightMargin, box->Position.iY + box->Dimensions.iBottom - box->uiBottomMargin ); } - SetFontDestBuffer(FRAME_BUFFER, 0,0,SCREEN_WIDTH, SCREEN_HEIGHT,FALSE); + SetFontDestBuffer( FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE ); - return TRUE; + return TRUE; } -void ResizeBoxToText(INT32 hBoxHandle) +void ResizeBoxToText( INT32 hBoxHandle ) { // run through lines of text in box and size box width to longest line plus margins // height is sum of getfontheight of each line+ spacing - INT32 iWidth=0; - INT32 iHeight=0; - INT32 iCurrString=0; - INT32 iSecondColumnLength = 0; + INT32 iWidth = 0; + INT32 iHeight = 0; + INT32 iCurrString = 0; + INT32 iColumnLength = 0; - if ( ( hBoxHandle < 0 ) || ( hBoxHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) return; - if(!PopUpBoxList[hBoxHandle]) + if ( !PopUpBoxList[hBoxHandle] ) return; - ResizeBoxForSecondStrings( hBoxHandle ); + if ( hBoxHandle == ghMoveBox ) + { + ResizeStrategicMvtBoxForSecondStrings( hBoxHandle ); + } + else + { + ResizeBoxForSecondStrings( hBoxHandle ); + } - iHeight=PopUpBoxList[hBoxHandle]->uiTopMargin+PopUpBoxList[hBoxHandle]->uiBottomMargin; + auto box = PopUpBoxList[hBoxHandle]; + const UINT32 margins = box->uiLeftMargin + box->uiRightMargin; + iHeight = box->uiTopMargin + box->uiBottomMargin; + const auto columnOffset = box->uiSecondColumnCurrentOffset; for ( iCurrString = 0; iCurrString < MAX_POPUP_BOX_STRING_COUNT; iCurrString++ ) { - if ( PopUpBoxList[hBoxHandle]->Text[iCurrString] != NULL) + if ( box->Text[0][iCurrString] != NULL ) { - if( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCurrString] != NULL ) + + if ( box->Text[3][iCurrString] != NULL && wcscmp( box->Text[3][iCurrString]->pString, L"" ) != 0 ) { - iSecondColumnLength = StringPixLength( PopUpBoxList[hBoxHandle]->pSecondColumnString[iCurrString]->pString,PopUpBoxList[ hBoxHandle]->pSecondColumnString[ iCurrString ]->uiFont ); - if( PopUpBoxList[hBoxHandle]->uiSecondColumnCurrentOffset + iSecondColumnLength + PopUpBoxList[hBoxHandle]->uiLeftMargin+PopUpBoxList[hBoxHandle]->uiRightMargin > ( ( UINT32 ) iWidth ) ) + iColumnLength = StringPixLength( box->Text[3][iCurrString]->pString, box->Text[3][iCurrString]->uiFont ); + if ( 3 * columnOffset + iColumnLength + margins > iWidth ) { - iWidth = PopUpBoxList[hBoxHandle]->uiSecondColumnCurrentOffset + iSecondColumnLength + PopUpBoxList[hBoxHandle]->uiLeftMargin+PopUpBoxList[hBoxHandle]->uiRightMargin; + iWidth = 3 * columnOffset + iColumnLength + margins; + } + } + else if ( box->Text[2][iCurrString] != NULL && wcscmp( box->Text[2][iCurrString]->pString, L"" ) != 0 ) + { + iColumnLength = StringPixLength( box->Text[2][iCurrString]->pString, box->Text[2][iCurrString]->uiFont ); + if ( 2 * columnOffset + iColumnLength + margins > iWidth ) + { + iWidth = 2 * columnOffset + iColumnLength + margins; + } + } + else if ( box->Text[1][iCurrString] != NULL && wcscmp( box->Text[1][iCurrString]->pString, L"" ) != 0 ) + { + iColumnLength = StringPixLength( box->Text[1][iCurrString]->pString, box->Text[1][iCurrString]->uiFont ); + if ( columnOffset + iColumnLength + margins > iWidth ) + { + iWidth = columnOffset + iColumnLength + margins; } } - if( ( StringPixLength(PopUpBoxList[hBoxHandle]->Text[iCurrString]->pString,PopUpBoxList[hBoxHandle]->Text[iCurrString]->uiFont ) + PopUpBoxList[hBoxHandle]->uiLeftMargin+PopUpBoxList[hBoxHandle]->uiRightMargin ) > ( (UINT32) iWidth ) ) - iWidth=StringPixLength(PopUpBoxList[hBoxHandle]->Text[iCurrString]->pString,PopUpBoxList[hBoxHandle]->Text[iCurrString]->uiFont ) + PopUpBoxList[hBoxHandle]->uiLeftMargin+PopUpBoxList[hBoxHandle]->uiRightMargin; + + INT32 iFirstColumnLength = StringPixLength( box->Text[0][iCurrString]->pString, box->Text[0][iCurrString]->uiFont ) + margins; + if ( iFirstColumnLength > iWidth ) + iWidth = iFirstColumnLength; //vertical - iHeight+=GetFontHeight(PopUpBoxList[hBoxHandle]->Text[iCurrString]->uiFont)+PopUpBoxList[hBoxHandle]->uiLineSpace; + iHeight += GetFontHeight( box->Text[0][iCurrString]->uiFont ) + box->uiLineSpace; } else { @@ -1544,22 +1639,29 @@ void ResizeBoxToText(INT32 hBoxHandle) } // Flugente we shouldn't have added more popup options than we can display anyway, but I have no idea where to stop that, so at least we can fix this - PopUpBoxList[hBoxHandle]->Dimensions.iBottom = min( iHeight, SCREEN_HEIGHT - PopUpBoxList[hBoxHandle]->Position.iY); - PopUpBoxList[hBoxHandle]->Dimensions.iRight = min( iWidth, SCREEN_WIDTH - PopUpBoxList[hBoxHandle]->Position.iX ); + box->Dimensions.iBottom = min( iHeight, SCREEN_HEIGHT - box->Position.iY ); + box->Dimensions.iRight = min( iWidth, SCREEN_WIDTH - box->Position.iX ); + + // Constrain popup box height to background graphics max height. Otherwise we get blue graphics glitches + const auto popupBoxHeight = box->Dimensions.iBottom - box->Dimensions.iTop; + if ( popupBoxHeight > 480 ) + { + box->Dimensions.iBottom = box->Dimensions.iTop + 480; + } } BOOLEAN IsBoxShown( UINT32 uiHandle ) { - if ( ( uiHandle < 0 ) || ( uiHandle >= MAX_POPUP_BOX_COUNT ) ) + if ( (uiHandle < 0) || (uiHandle >= MAX_POPUP_BOX_COUNT) ) return(FALSE); - if( PopUpBoxList[ uiHandle ] == NULL ) + if ( PopUpBoxList[uiHandle] == NULL ) { - return ( FALSE ); + return (FALSE); } - return( PopUpBoxList[ uiHandle ]->fShowBox ); + return(PopUpBoxList[uiHandle]->fShowBox); } @@ -1568,7 +1670,7 @@ void MarkAllBoxesAsAltered( void ) INT32 iCounter = 0; // mark all boxes as altered - for( iCounter = 0; iCounter < MAX_POPUP_BOX_COUNT; iCounter++ ) + for ( iCounter = 0; iCounter < MAX_POPUP_BOX_COUNT; iCounter++ ) { ForceUpDateOfBox( iCounter ); } @@ -1582,52 +1684,85 @@ void HideAllBoxes( void ) INT32 iCounter = 0; // hide all the boxes that are shown - for(iCounter=0; iCounter < MAX_POPUP_BOX_COUNT; iCounter++) + for ( iCounter = 0; iCounter < MAX_POPUP_BOX_COUNT; iCounter++ ) { HideBox( iCounter ); } } - void RemoveCurrentBoxPrimaryText( INT32 hStringHandle ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); Assert( hStringHandle < MAX_POPUP_BOX_STRING_COUNT ); // remove & release primary text - if(PopUpBoxList[guiCurrentBox]->Text[hStringHandle] != NULL) + if ( box->Text[0][hStringHandle] != NULL ) { - if ( PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->pString ) + if ( box->Text[0][hStringHandle]->pString ) { - MemFree(PopUpBoxList[guiCurrentBox]->Text[hStringHandle]->pString); + MemFree( box->Text[0][hStringHandle]->pString ); } - MemFree(PopUpBoxList[guiCurrentBox]->Text[hStringHandle]); - PopUpBoxList[guiCurrentBox]->Text[hStringHandle]=NULL; + MemFree( box->Text[0][hStringHandle] ); + box->Text[0][hStringHandle] = NULL; } } void RemoveCurrentBoxSecondaryText( INT32 hStringHandle ) { - if ( ( guiCurrentBox < 0 ) || ( guiCurrentBox >= MAX_POPUP_BOX_COUNT ) ) + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) ) return; - Assert( PopUpBoxList[guiCurrentBox] != NULL ); + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); Assert( hStringHandle < MAX_POPUP_BOX_STRING_COUNT ); // remove & release secondary strings - if(PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle] != NULL) + if ( box->Text[1][hStringHandle] != NULL ) { - if ( PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->pString ) + if ( box->Text[1][hStringHandle]->pString ) { - MemFree(PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]->pString); + MemFree( box->Text[1][hStringHandle]->pString ); } - MemFree(PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]); - PopUpBoxList[guiCurrentBox]->pSecondColumnString[hStringHandle]=NULL; + MemFree( box->Text[1][hStringHandle] ); + box->Text[1][hStringHandle] = NULL; } } + +void RemoveCurrentBoxText( INT32 hStringHandle, UINT8 column ) +{ + if ( (guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT) || column >= MAX_POPUP_BOX_COLUMNS ) + return; + + auto box = PopUpBoxList[guiCurrentBox]; + Assert( box != NULL ); + Assert( hStringHandle < MAX_POPUP_BOX_STRING_COUNT ); + + // remove & release text + auto textColumn = box->Text[column]; + + if ( textColumn[hStringHandle] != NULL ) + { + if ( textColumn[hStringHandle]->pString ) + { + MemFree( textColumn[hStringHandle]->pString ); + } + + MemFree( textColumn[hStringHandle] ); + textColumn[hStringHandle] = NULL; + } +} + +UINT32 GetBoxSecondColumnCurrentOffset( INT32 hBoxHandle ) +{ + if ( (hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT) ) + return 0; + + return PopUpBoxList[hBoxHandle]->uiSecondColumnCurrentOffset; +} diff --git a/Utils/PopUpBox.h b/Utils/PopUpBox.h index dbdb0cdb..f1b4ded7 100644 --- a/Utils/PopUpBox.h +++ b/Utils/PopUpBox.h @@ -9,6 +9,7 @@ #define MAX_POPUP_BOX_COUNT 32 #define MAX_POPUP_BOX_STRING_COUNT 128 // worst case = 45: move menu with 20 soldiers, each on different squad + overhead +#define MAX_POPUP_BOX_COLUMNS 4 // PopUpBox Flags #define POPUP_BOX_FLAG_CLIP_TEXT 1 @@ -50,8 +51,7 @@ struct popupbox{ BOOLEAN fUpdated; BOOLEAN fShowBox; - POPUPSTRINGPTR Text[ MAX_POPUP_BOX_STRING_COUNT ]; - POPUPSTRINGPTR pSecondColumnString[ MAX_POPUP_BOX_STRING_COUNT ]; + POPUPSTRINGPTR Text[MAX_POPUP_BOX_COLUMNS][ MAX_POPUP_BOX_STRING_COUNT ]; }; typedef struct popupbox PopUpBo; @@ -73,14 +73,16 @@ UINT32 GetLineSpace( INT32 hBoxHandle ); void SetBoxBuffer(INT32 hBoxHandle, UINT32 uiBuffer); void SetBoxPosition(INT32 hBoxHandle,SGPPoint Position); void GetBoxPosition( INT32 hBoxHandle, SGPPoint *Position ); -UINT32 GetNumberOfLinesOfTextInBox( INT32 hBoxHandle ); +UINT32 GetNumberOfLinesOfTextInBox( INT32 hBoxHandle, UINT8 column = 0 ); +UINT32 GetTotalNumberOfLinesOfTextInBox( INT32 hBoxHandle ); +UINT32 GetBoxSecondColumnCurrentOffset( INT32 hBoxHandle ); void SetBoxSize( INT32 hBoxHandle, SGPRect Dimensions ); void GetBoxSize( INT32 hBoxHandle, SGPRect *Dimensions ); void SetBoxFlags( INT32 hBoxHandle, UINT32 uiFlags); void SetBorderType(INT32 hBoxHandle,INT32 BorderObjectIndex); void SetBackGroundSurface(INT32 hBoxHandle, INT32 BackGroundSurfaceIndex); -void AddMonoString(UINT32 *hStringHandle, STR16 pString); -void AddColorString(INT32 *hStringHandle, STR16 pString); +void AddMonoString(UINT32 *hStringHandle, STR16 pString, UINT8 column = 0); +void AddColorString(INT32 *hStringHandle, STR16 pString, UINT8 column = 0); void SetPopUpStringFont(INT32 hStringHandle, UINT32 uiFont); void SetBoxFont(INT32 hBoxHandle, UINT32 uiFont); UINT32 GetBoxFont( INT32 hBoxHandle ); @@ -92,11 +94,11 @@ void SetBoxForeground(INT32 hBoxHandle, UINT8 ubColor); void SetBoxBackground(INT32 hBoxHandle, UINT8 ubColor); void SetBoxHighLight(INT32 hBoxHandle, UINT8 ubColor); void SetBoxShade(INT32 hBoxHandle, UINT8 ubColor); -void ShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ); -void UnShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ); -void HighLightLine(INT32 hStringHandle); -void HighLightBoxLine( INT32 hBoxHandle, INT32 iLineNumber ); -void UnHighLightLine(INT32 hStringHandle); +void ShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column = 0 ); +void UnShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column = 0 ); +void HighLightLine( INT32 hStringHandle, UINT8 column = 0 ); +void HighLightBoxLine( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column = 0 ); +void UnHighLightLine(INT32 hStringHandle, UINT8 column = 0); void UnHighLightBox(INT32 hBoxHandle); void RemoveOneCurrentBoxString(INT32 hStringHandle, BOOLEAN fFillGaps); void RemoveAllCurrentBoxStrings( void ); @@ -137,9 +139,6 @@ void HideAllBoxes( void ); // add the second column monocrome string void AddSecondColumnMonoString( UINT32 *hStringHandle, STR16 pString ); -// set the 2nd column font for this box -void SetBoxSecondColumnFont(INT32 hBoxHandle, UINT32 uiFont); - // set the minimum offset void SetBoxSecondColumnMinimumOffset( INT32 hBoxHandle, UINT32 uiWidth ); void SetBoxSecondColumnCurrentOffset( INT32 hBoxHandle, UINT32 uiCurrentOffset ); @@ -152,19 +151,21 @@ void SetStringSecondColumnHighLight(INT32 hStringHandle, UINT8 ubColor); void SetStringSecondColumnShade(INT32 hStringHandle, UINT8 ubShade); // now on a box wide basis, one if recomened to use this function after adding all the strings..rather than on an individual basis -void SetBoxSecondColumnForeground(INT32 hBoxHandle, UINT8 ubColor); -void SetBoxSecondColumnBackground(INT32 hBoxHandle, UINT8 ubColor); -void SetBoxSecondColumnHighLight(INT32 hBoxHandle, UINT8 ubColor); -void SetBoxSecondColumnShade(INT32 hBoxHandle, UINT8 ubColor); +// Set attributes by column +void SetBoxColumnForeground( INT32 hBoxHandle, UINT8 ubColor, UINT8 column = 0 ); +void SetBoxColumnBackground( INT32 hBoxHandle, UINT8 ubColor, UINT8 column = 0 ); +void SetBoxColumnHighLight( INT32 hBoxHandle, UINT8 ubColor, UINT8 column = 0 ); +void SetBoxColumnShade( INT32 hBoxHandle, UINT8 ubColor, UINT8 column = 0 ); +void SetBoxColumnFont( INT32 hBoxHandle, UINT32 uiFont, UINT8 column = 0 ); // secondary shades for boxes -void UnSecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ); -void SecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber ); +void UnSecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column = 0 ); +void SecondaryShadeStringInBox( INT32 hBoxHandle, INT32 iLineNumber, UINT8 column = 0 ); void SetBoxSecondaryShade( INT32 iBox, UINT8 ubColor ); // min width for box void SpecifyBoxMinWidth( INT32 hBoxHandle, INT32 iMinWidth ); -#endif +#endif diff --git a/Utils/Sound Control.cpp b/Utils/Sound Control.cpp index 83ac23e1..a25e66fb 100644 --- a/Utils/Sound Control.cpp +++ b/Utils/Sound Control.cpp @@ -575,16 +575,15 @@ UINT32 PlayJA2AmbientRandom( UINT32 usNum, UINT32 uiTimeMin, UINT32 uiTimeMax) -UINT32 PlaySoldierJA2Sample( UINT16 usID, UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, BOOLEAN fCheck ) +UINT32 PlaySoldierJA2Sample( SoldierID usID, UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, BOOLEAN fCheck ) { - if( !( gTacticalStatus.uiFlags & LOADING_SAVED_GAME ) ) { - // CHECK IF GUY IS ON SCREEN BEFORE PLAYING! - if ( ( MercPtrs[ usID ]->bVisible != -1 ) || !fCheck ) - { - return( PlayJA2Sample( usNum, usRate, CalculateSoundEffectsVolume( ubVolume ), ubLoops, uiPan ) ); - } + // CHECK IF GUY IS ON SCREEN BEFORE PLAYING! + if ( ( usID->bVisible != -1 ) || !fCheck ) + { + return( PlayJA2Sample( usNum, usRate, CalculateSoundEffectsVolume( ubVolume ), ubLoops, uiPan ) ); + } } return( 0 ); diff --git a/Utils/Sound Control.h b/Utils/Sound Control.h index e351c783..65535793 100644 --- a/Utils/Sound Control.h +++ b/Utils/Sound Control.h @@ -5,6 +5,8 @@ #ifndef SOUND_CONTROL_H #define SOUND_CONTROL_H +#include "Overhead Types.h" + // == Lesh modifications ====== #define FARLEFT 0 #define LEFTSIDE 96 @@ -425,7 +427,7 @@ UINT32 PlayJA2StreamingSampleFromFile( STR8 szFileName, UINT32 usRate, UINT32 ub UINT32 PlayJA2Ambient( UINT32 usNum, UINT32 ubVolume, UINT32 ubLoops); UINT32 PlayJA2AmbientRandom(UINT32 usNum, UINT32 uiTimeMin, UINT32 uiTimeMax); -UINT32 PlaySoldierJA2Sample( UINT16 usID, UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, BOOLEAN fCheck ); +UINT32 PlaySoldierJA2Sample( SoldierID usID, UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, BOOLEAN fCheck ); @@ -467,4 +469,4 @@ void SetPositionSndGridNo( INT32 iPositionSndIndex, INT32 sGridNo ); -#endif +#endif diff --git a/i18n/ExportStrings.cpp b/i18n/ExportStrings.cpp index c390cb17..2fbe1043 100644 --- a/i18n/ExportStrings.cpp +++ b/i18n/ExportStrings.cpp @@ -1,707 +1,707 @@ -#include "ExportStrings.h" -#include "LocalizedStrings.h" -#include "Map Screen Interface.h" -#include "personnel.h" -#include "soldier profile type.h" -#include "Interface.h" -#include "Keys.h" -#include "Merc Contract.h" -#include "Campaign Types.h" -#include "finances.h" -#include "laptop.h" - -#include -#include -#include -#include - -namespace Loc -{ - bool Translate(vfs::String::char_t* str, int len, Language lang); - - void ExportMercBio(); - void ExportAIMHistory(); - void ExportAIMPolicy(); - void ExportAlumniName(); - void ExportDialogues(); - void ExportNPCDialogues(); -}; - -////////////////////////////////////////////////////////// - -//#define GERMAN -#include "Text.h" -namespace Loc -{ -#ifdef CHINESE -# include "_ChineseText.cpp" - static Loc::Language gs_Lang = Loc::Chinese; -#endif -#ifdef DUTCH -# include "_DutchText.cpp" - static Loc::Language gs_Lang = Loc::Dutch; -#endif -#ifdef ENGLISH -# include "_EnglishText.cpp" - static Loc::Language gs_Lang = Loc::English; -#endif -#ifdef FRENCH -# include "_FrenchText.cpp" - static Loc::Language gs_Lang = Loc::French; -#endif -#ifdef GERMAN -# include "_GermanText.cpp" - static Loc::Language gs_Lang = Loc::German; -#endif -#ifdef ITALIAN -# include "_ItalianText.cpp" - static Loc::Language gs_Lang = Loc::Italian; -#endif -#ifdef POLISH -# include "_PolishText.cpp" - static Loc::Language gs_Lang = Loc::Polish; -#endif -#ifdef RUSSIAN -# include "_RussianText.cpp" - static Loc::Language gs_Lang = Loc::Russian; -#endif -} - -#include "Assignments.h" -#include "history.h" - -template -void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, T* strings, int min, int max) -{ - for(int i = min; i < max; ++i) - { - vfs::String str(strings[i]); - //Loc::Translate(&str.r_wcs()[0],str.length(), gs_Lang); - if(!str.empty()) - { - props.setStringProperty(section_name, vfs::toString(i), str); - } - } -} - -template<> -void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, wchar_t* strings, int min, int max) -{ - ExportSection(props,section_name, &strings, min, max); -} - - -bool Loc::ExportStrings() -{ - vfs::PropertyContainer::TagMap tmap; - //tmap.Container(L"LocalizedStrings"); - //tmap.Section(L"Topic"); - //tmap.SectionID(L"name"); - //tmap.Key(L"msg"); - //tmap.KeyID(L"index"); - - vfs::PropertyContainer props; - - //not_required ExportSection(props, L"Ja2Credits", Loc::pCreditsJA2113, 0, 7); - ExportSection(props, L"WeaponType", Loc::WeaponType, 0, MAXITEMS); - ExportSection(props, L"TeamTurn", Loc::TeamTurnString, 0, 10); - ExportSection(props, L"Message", Loc::Message, 0, TEXT_NUM_STR_MESSAGE); - ExportSection(props, L"TownNames", Loc::pTownNames, 0, MAX_TOWNS); - ExportSection(props, L"Time", Loc::sTimeStrings, 0, 6); - ExportSection(props, L"Assignment", Loc::pAssignmentStrings, 0, NUM_ASSIGNMENTS); - ExportSection(props, L"PersonnelAssignment", Loc::pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS); - ExportSection(props, L"LongAssignment", Loc::pLongAssignmentStrings, 0, NUM_ASSIGNMENTS); - ExportSection(props, L"Militia", Loc::pMilitiaString, 0, 3); - - ExportSection(props, L"MilitiaButton", Loc::pMilitiaButtonString, 0, 2); - ExportSection(props, L"Condition", Loc::pConditionStrings, 0, 9); - ExportSection(props, L"EpcMenu", Loc::pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT); - ExportSection(props, L"Contract", Loc::pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT); - ExportSection(props, L"POW", Loc::pPOWStrings, 0, 2); - ExportSection(props, L"InvPanelTitle", Loc::pInvPanelTitleStrings, 0, 5); - ExportSection(props, L"LongAttribute", Loc::pLongAttributeStrings, 0, 10); - ExportSection(props, L"ShortAttribute", Loc::pShortAttributeStrings, 0, 10); - ExportSection(props, L"UpperLeftMapScreen", Loc::pUpperLeftMapScreenStrings, 0, 6); - ExportSection(props, L"Training", Loc::pTrainingStrings, 0, 4); - - ExportSection(props, L"GuardMenu", Loc::pGuardMenuStrings, 0, 10); - ExportSection(props, L"OtherGuardMenu", Loc::pOtherGuardMenuStrings, 0, 10); - ExportSection(props, L"AssignMenu", Loc::pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT); - ExportSection(props, L"MilitiaControlMenu", Loc::pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT); - ExportSection(props, L"RemoveMerc", Loc::pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT); - ExportSection(props, L"AttributeMenu", Loc::pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT); - ExportSection(props, L"TrainingMenu", Loc::pTrainingMenuStrings, 0, MAX_TRAIN_STRING_COUNT); - ExportSection(props, L"SquadMenu", Loc::pSquadMenuStrings, 0, MAX_SQUAD_MENU_STRING_COUNT); - - ExportSection(props, L"SnitchMenu", Loc::pSnitchMenuStrings, 0, MAX_SNITCH_MENU_STRING_COUNT); - ExportSection(props, L"SnitchMenuDesc", Loc::pSnitchMenuDescStrings, 0, MAX_SNITCH_MENU_STRING_COUNT-1); - ExportSection(props, L"SnitchToggleMenu", Loc::pSnitchToggleMenuStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT); - ExportSection(props, L"SnitchToggleMenuDesc", Loc::pSnitchToggleMenuDescStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT-1); - ExportSection(props, L"SnitchSectorMenu", Loc::pSnitchSectorMenuStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT); - ExportSection(props, L"SnitchSectorMenuDesc", Loc::pSnitchSectorMenuDescStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT-1); - ExportSection(props, L"PrisonerMenu", Loc::pPrisonerMenuStrings, 0, MAX_PRISONER_MENU_STRING_COUNT ); - ExportSection(props, L"PrisonerMenuDesc", Loc::pPrisonerMenuDescStrings, 0, MAX_PRISONER_MENU_STRING_COUNT - 1 ); - ExportSection(props, L"SnitchPrisonExposed", Loc::pSnitchPrisonExposedStrings, 0, NUM_SNITCH_PRISON_EXPOSED); - ExportSection(props, L"SnitchGatheringRumoursResult", Loc::pSnitchGatheringRumoursResultStrings, 0, NUM_SNITCH_GATHERING_RUMOURS_RESULT); - - ExportSection(props, L"PersonnelTitle", Loc::pPersonnelTitle, 0, 1); - ExportSection(props, L"PersonnelScreen", Loc::pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL); - - ExportSection(props, L"MercSkill", Loc::gzMercSkillText, 0, NUM_SKILLTRAITS_OT); - ExportSection(props, L"TacticalPopupButton", Loc::pTacticalPopupButtonStrings, 0, NUM_ICONS); - ExportSection(props, L"DoorTrap", Loc::pDoorTrapStrings, 0, NUM_DOOR_TRAPS); - ExportSection(props, L"ContractExtend", Loc::pContractExtendStrings, 0, NUM_CONTRACT_EXTEND); - ExportSection(props, L"MapScreenMouseRegionHelp", Loc::pMapScreenMouseRegionHelpText, 0, 6); - ExportSection(props, L"NoiseVol", Loc::pNoiseVolStr, 0, 4); - ExportSection(props, L"NoiseType", Loc::pNoiseTypeStr, 0, 12); - ExportSection(props, L"Direction", Loc::pDirectionStr, 0, 8); - ExportSection(props, L"LandType", Loc::pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES); - ExportSection(props, L"Strategic", Loc::gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT); - - ExportSection(props, L"GameClock", Loc::gpGameClockString, 0, TEXT_NUM_GAMECLOCK); - ExportSection(props, L"KeyDescription", Loc::sKeyDescriptionStrings, 0, 2); - ExportSection(props, L"WeaponStatsDesc", Loc::gWeaponStatsDesc, 0, 17); - ExportSection(props, L"WeaponStatsFasthelpTactical",Loc::gzWeaponStatsFasthelpTactical, 0, 29); - ExportSection(props, L"MiscItemStatsFasthelp", Loc::gzMiscItemStatsFasthelp, 0, 34); - ExportSection(props, L"MoneyStatsDesc", Loc::gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC); - - ExportSection(props, L"Health", Loc::zHealthStr, 0, 7); - ExportSection(props, L"MoneyAmounts", Loc::gzMoneyAmounts, 0, 6); - ExportSection(props, L"ProsLabel", Loc::gzProsLabel, 0, 1); - ExportSection(props, L"ConsLabel", Loc::gzConsLabel, 0, 1); - ExportSection(props, L"TalkMenu", Loc::zTalkMenuStrings, 0, 6); - ExportSection(props, L"Dealer", Loc::zDealerStrings, 0, 4); - ExportSection(props, L"DialogActions", Loc::zDialogActions, 0, 1); - ExportSection(props, L"Vehicle", Loc::pVehicleStrings, 0, 6); - ExportSection(props, L"ShortVehicle", Loc::pShortVehicleStrings, 0, 6); - ExportSection(props, L"VehicleName", Loc::zVehicleName, 0, 6); - ExportSection(props, L"VehicleSeatsStrings", Loc::pVehicleSeatsStrings, 0, 2); - - ExportSection(props, L"Tactical", Loc::TacticalStr, 0, TEXT_NUM_TACTICAL_STR); - ExportSection(props, L"ExitingSectorHelp", Loc::pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI); - ExportSection(props, L"Repair", Loc::pRepairStrings, 0, 4); - ExportSection(props, L"PreStatBuild", Loc::sPreStatBuildString, 0, 6); - ExportSection(props, L"StatGain", Loc::sStatGainStrings, 0, 11); - ExportSection(props, L"HelicopterEta", Loc::pHelicopterEtaStrings, 0, TEXT_NUM_STR_HELI_ETA); - ExportSection(props, L"HelicopterRepair", Loc::pHelicopterRepairRefuelStrings, 0, TEXT_NUM_STR_HELI_REPAIRS); - ExportSection(props, L"MapLevel", Loc::sMapLevelString, 0, 1); - ExportSection(props, L"Loyal", Loc::gsLoyalString, 0, 1); - ExportSection(props, L"Underground", Loc::gsUndergroundString, 0, 1); - ExportSection(props, L"TimeStings", Loc::gsTimeStrings, 0, 1); - - ExportSection(props, L"Facilities", Loc::sFacilitiesStrings, 0, 7); - ExportSection(props, L"MapPopUpInventory", Loc::pMapPopUpInventoryText, 0, 2); - ExportSection(props, L"TownInfo", Loc::pwTownInfoStrings, 0, 12); - ExportSection(props, L"Mine", Loc::pwMineStrings, 0, 14); - ExportSection(props, L"MiscSector", Loc::pwMiscSectorStrings, 0, 7); - ExportSection(props, L"MapInventoryError", Loc::pMapInventoryErrorString, 0, 7); - ExportSection(props, L"MapInventory", Loc::pMapInventoryStrings, 0, 2); - ExportSection(props, L"MapScreenFastHelp", Loc::pMapScreenFastHelpTextList, 0, 10); - ExportSection(props, L"MovementMenu", Loc::pMovementMenuStrings, 0, 4); - ExportSection(props, L"UpdateMerc", Loc::pUpdateMercStrings, 0, 6); - - ExportSection(props, L"MapScreenBorderButtonHelp", Loc::pMapScreenBorderButtonHelpText,0, 6); - ExportSection(props, L"MapScreenBottomFastHelp", Loc::pMapScreenBottomFastHelp, 0, 8); - ExportSection(props, L"MapScreenBottom", Loc::pMapScreenBottomText, 0, 1); - ExportSection(props, L"MercDead", Loc::pMercDeadString, 0, 1); - ExportSection(props, L"Day", Loc::pDayStrings, 0, 1); - ExportSection(props, L"SenderName", Loc::pSenderNameList, 0, 51); - ExportSection(props, L"Traverse", Loc::pTraverseStrings, 0, 2); - ExportSection(props, L"NewMail", Loc::pNewMailStrings, 0, 1); - ExportSection(props, L"DeleteMail", Loc::pDeleteMailStrings, 0, 2); - ExportSection(props, L"EmailHeader", Loc::pEmailHeaders, 0, 3); - - ExportSection(props, L"EmailTitle", Loc::pEmailTitleText, 0, 1); - ExportSection(props, L"FinanceTitle", Loc::pFinanceTitle, 0, 1); - ExportSection(props, L"FinanceSummary", Loc::pFinanceSummary, 0, 12); - ExportSection(props, L"FinanceHeader", Loc::pFinanceHeaders, 0, 7); - ExportSection(props, L"Transaction", Loc::pTransactionText, 0, TEXT_NUM_FINCANCES); - ExportSection(props, L"TransactionAlternate", Loc::pTransactionAlternateText, 0, 4); - ExportSection(props, L"Skyrider", Loc::pSkyriderText, 0, 7); - ExportSection(props, L"Moral", Loc::pMoralStrings, 0, 6); - ExportSection(props, L"LeftEquipment", Loc::pLeftEquipmentString, 0, 2); - ExportSection(props, L"MapScreenStatus", Loc::pMapScreenStatusStrings, 0, 5); - - ExportSection(props, L"MapScreenPrevNextCharButtonHelp", Loc::pMapScreenPrevNextCharButtonHelpText, 0, 2); - ExportSection(props, L"Eta", Loc::pEtaString, 0, 1); - ExportSection(props, L"TrashItem", Loc::pTrashItemText, 0, 2); - ExportSection(props, L"MapError", Loc::pMapErrorString, 0, 50); - ExportSection(props, L"MapPlot", Loc::pMapPlotStrings, 0, 5); - ExportSection(props, L"Bullseye", Loc::pBullseyeStrings, 0, 5); - ExportSection(props, L"MiscMapScreenMouseRegionHelp", Loc::pMiscMapScreenMouseRegionHelpText, 0, 3); - ExportSection(props, L"MercHeLeave", Loc::pMercHeLeaveString, 0, 5); - ExportSection(props, L"MercSheLeave", Loc::pMercSheLeaveString, 0, 5); - ExportSection(props, L"MercContractOver", Loc::pMercContractOverStrings, 0, 5); - - ExportSection(props, L"ImpPopUp", Loc::pImpPopUpStrings, 0, 12); - ExportSection(props, L"ImpButton", Loc::pImpButtonText, 0, 26); - ExportSection(props, L"ExtraIMP", Loc::pExtraIMPStrings, 0, 4); - ExportSection(props, L"FilesTitle", Loc::pFilesTitle, 0, 1); - ExportSection(props, L"FilesSender", Loc::pFilesSenderList, 0, 7); - ExportSection(props, L"HistoryTitle", Loc::pHistoryTitle, 0, 1); - ExportSection(props, L"HistoryHeader", Loc::pHistoryHeaders, 0, 5); - //ExportSection(props, L"History", Loc::pHistoryStrings, 0, TEXT_NUM_HISTORY); - ExportSection(props, L"HistoryLocation", Loc::pHistoryLocations, 0, 1); - ExportSection(props, L"LaptopIcon", Loc::pLaptopIcons, 0, 8); - - ExportSection(props, L"BookMark", Loc::pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS); - ExportSection(props, L"BookmarkTitle", Loc::pBookmarkTitle, 0, 2); - ExportSection(props, L"Download", Loc::pDownloadString, 0, 2); - ExportSection(props, L"AtmSideButton", Loc::gsAtmSideButtonText, 0, 5); - ExportSection(props, L"AtmStartButton", Loc::gsAtmStartButtonText, 0, 4); - ExportSection(props, L"ATM", Loc::sATMText, 0, 6); - ExportSection(props, L"Error", Loc::pErrorStrings, 0, 5); - ExportSection(props, L"Personnel", Loc::pPersonnelString, 0, 1); - ExportSection(props, L"WebTitle", Loc::pWebTitle, 0, 1); - ExportSection(props, L"WebPagesTitle", Loc::pWebPagesTitles, 0, 36); - - ExportSection(props, L"ShowBookmark", Loc::pShowBookmarkString, 0, 2); - ExportSection(props, L"LaptopTitle", Loc::pLaptopTitles, 0, 5); - ExportSection(props, L"PersonnelDepartedState", Loc::pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED); - ExportSection(props, L"PersonelTeam", Loc::pPersonelTeamStrings, 0, 8); - ExportSection(props, L"PersonnelCurrentTeamStats", Loc::pPersonnelCurrentTeamStatsStrings, 0, 3); - ExportSection(props, L"PersonnelTeamStats", Loc::pPersonnelTeamStatsStrings, 0, 11); - ExportSection(props, L"MapVertIndex", Loc::pMapVertIndex, 0, 17); - ExportSection(props, L"MapHortIndex", Loc::pMapHortIndex, 0, 17); - ExportSection(props, L"MapDepthIndex", Loc::pMapDepthIndex, 0, 4); - ExportSection(props, L"ContractButton", Loc::pContractButtonString, 0, 1); - - ExportSection(props, L"UpdatePanelButton", Loc::pUpdatePanelButtons, 0, 2); - ExportSection(props, L"LargeTactical", Loc::LargeTacticalStr, 0, TEXT_NUM_LARGESTR); - ExportSection(props, L"InsContract", Loc::InsContractText, 0, TEXT_NUM_INS_CONTRACT); - ExportSection(props, L"InsInfo", Loc::InsInfoText, 0, TEXT_NUM_INS_INFO); - ExportSection(props, L"MercAccount", Loc::MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT); - ExportSection(props, L"MercAccountPage", Loc::MercAccountPageText, 0, 2); - ExportSection(props, L"MercInfo", Loc::MercInfo, 0, TEXT_NUM_MERC_FILES); - ExportSection(props, L"MercNoAccount", Loc::MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC); - ExportSection(props, L"MercHomePage", Loc::MercHomePageText, 0, TEXT_NUM_MERC); - ExportSection(props, L"Funeral", Loc::sFuneralString, 0, TEXT_NUM_FUNERAL); - - ExportSection(props, L"Florist", Loc::sFloristText, 0, TEXT_NUM_FLORIST); - ExportSection(props, L"OrderForm", Loc::sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER); - ExportSection(props, L"FloristGallery", Loc::sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY); - ExportSection(props, L"FloristCards", Loc::sFloristCards, 0, TEXT_NUM_FLORIST_CARDS); - ExportSection(props, L"BobbyROrderForm", Loc::BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER); - ExportSection(props, L"BobbyRFilter", Loc::BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER); - ExportSection(props, L"BobbyR", Loc::BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS); - ExportSection(props, L"BobbyRaysFront", Loc::BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR); - ExportSection(props, L"AimSort", Loc::AimSortText, 0, TEXT_NUM_AIM_SORT); - ExportSection(props, L"AimPolicy", Loc::AimPolicyText, 0, TEXT_NUM_AIM_POLICIES); - - ExportSection(props, L"AimMember", Loc::AimMemberText, 0, 4); - ExportSection(props, L"CharacterInfo", Loc::CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO); - ExportSection(props, L"VideoConfercing", Loc::VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF); - ExportSection(props, L"AimPopUp", Loc::AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP); - ExportSection(props, L"AimLink", Loc::AimLinkText, 0, TEXM_NUM_AIM_LINK); - ExportSection(props, L"AimHistory", Loc::AimHistoryText, 0, TEXT_NUM_AIM_HISTORY); - ExportSection(props, L"AimFi", Loc::AimFiText, 0, TEXT_NUM_AIM_FI); - ExportSection(props, L"AimAlumni", Loc::AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI); - ExportSection(props, L"AimScreen", Loc::AimScreenText, 0, TEXT_NUM_AIM_SCREEN); - ExportSection(props, L"AimBottomMenu", Loc::AimBottomMenuText, 0, TEXT_NUM_AIM_MENU); - - ExportSection(props, L"SKI", Loc::SKI_Text, 0, TEXT_NUM_SKI_TEXT); - ExportSection(props, L"SkiAtm", Loc::SkiAtmText, 0, NUM_SKI_ATM_BUTTONS); - ExportSection(props, L"SkiAtmText", Loc::gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT); - ExportSection(props, L"SkiMessageBox", Loc::SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT); - ExportSection(props, L"Options", Loc::zOptionsText, 0, TEXT_NUM_OPT_TEXT); - ExportSection(props, L"SaveLoad", Loc::zSaveLoadText, 0, TEXT_NUM_SLG_TEXT); - ExportSection(props, L"MarksMapScreen", Loc::zMarksMapScreenText, 0, 25); - ExportSection(props, L"LandMarkInSector", Loc::pLandMarkInSectorString, 0, 1); - ExportSection(props, L"MilitiaConfirm", Loc::pMilitiaConfirmStrings, 0, 11); - ExportSection(props, L"MoneyWithdrawMessage", Loc::gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW); - - ExportSection(props, L"Copyright", Loc::gzCopyrightText, 0, 1); - ExportSection(props, L"OptionsToggle", Loc::zOptionsToggleText, 0, 49); - ExportSection(props, L"OptionsScreenHelp", Loc::zOptionsScreenHelpText, 0, 49); - ExportSection(props, L"GIOScreen", Loc::gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT); - ExportSection(props, L"MPJScreen", Loc::gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT); - ExportSection(props, L"MPJHelpText", Loc::gzMPJHelpText, 0, 10); - ExportSection(props, L"MPHScreen", Loc::gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT); - ExportSection(props, L"DeliveryLocation", Loc::pDeliveryLocationStrings, 0, 17); - ExportSection(props, L"SkillAtZeroWarning", Loc::pSkillAtZeroWarning, 0, 1); - ExportSection(props, L"IMPBeginScreen", Loc::pIMPBeginScreenStrings, 0, 1); - ExportSection(props, L"IMPFinishButton", Loc::pIMPFinishButtonText, 0, 1); - - ExportSection(props, L"IMPFinish", Loc::pIMPFinishStrings, 0, 1); - ExportSection(props, L"IMPVoices", Loc::pIMPVoicesStrings, 0, 1); - ExportSection(props, L"DepartedMercPortrait", Loc::pDepartedMercPortraitStrings, 0, 3); - ExportSection(props, L"PersTitle", Loc::pPersTitleText, 0, 1); - ExportSection(props, L"PausedGame", Loc::pPausedGameText, 0, 3); - ExportSection(props, L"MessageStrings", Loc::pMessageStrings, 0, TEXT_NUM_MSG); - ExportSection(props, L"ItemPickupHelpPopup", Loc::ItemPickupHelpPopup, 0, 5); - ExportSection(props, L"DoctorWarning", Loc::pDoctorWarningString, 0, 2); - ExportSection(props, L"MilitiaButtonsHelp", Loc::pMilitiaButtonsHelpText, 0, 4); - ExportSection(props, L"MapScreenJustStartedHelp", Loc::pMapScreenJustStartedHelpText, 0, 2); - - ExportSection(props, L"AntiHacker", Loc::pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR); - ExportSection(props, L"LaptopHelp", Loc::gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT); - ExportSection(props, L"HelpScreen", Loc::gzHelpScreenText, 0, TEXT_NUM_HLP); - ExportSection(props, L"NonPersistantPBI", Loc::gzNonPersistantPBIText, 0, 10); - ExportSection(props, L"MiscString", Loc::gzMiscString, 0, 5); - ExportSection(props, L"IntroScreen", Loc::gzIntroScreen, 0, 1); - ExportSection(props, L"NewNoise", Loc::pNewNoiseStr, 0, 11/*MAX_NOISES*/); - ExportSection(props, L"MapScreenSortButtonHelp", Loc::wMapScreenSortButtonHelpText, 0, 6); - ExportSection(props, L"BrokenLink", Loc::BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK); - ExportSection(props, L"BobbyRShipment", Loc::gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT); - - ExportSection(props, L"CreditNames", Loc::gzCreditNames, 0, 15); - ExportSection(props, L"CreditNameTitle", Loc::gzCreditNameTitle, 0, 15); - ExportSection(props, L"CreditNameFunny", Loc::gzCreditNameFunny, 0, 15); - ExportSection(props, L"RepairsDone", Loc::sRepairsDoneString, 0, 7); - ExportSection(props, L"GioDifConfirm", Loc::zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS); - ExportSection(props, L"LateLocalized", Loc::gzLateLocalizedString, 0, 64); - ExportSection(props, L"CWStrings", Loc::gzCWStrings, 0, 1); - ExportSection(props, L"TooltipStrings", Loc::gzTooltipStrings, 0, TEXT_NUM_STR_TT); - ExportSection(props, L"New113Message", Loc::New113Message, 0, TEXT_NUM_MSG113); - - ExportSection(props, L"New113HAMMessage", Loc::New113HAMMessage, 0, 25); - ExportSection(props, L"New113MERCMercMail", Loc::New113MERCMercMailTexts, 0, 4); - ExportSection(props, L"New113AIMMercMail", Loc::New113AIMMercMailTexts, 0, 16); - ExportSection(props, L"MissingIMPSkills", Loc::MissingIMPSkillsDescriptions, 0, 2); - ExportSection(props, L"NewInvMessage", Loc::NewInvMessage, 0, TEXT_NUM_NIV); - ExportSection(props, L"MPServerMessage", Loc::MPServerMessage, 0, 13); - ExportSection(props, L"MPClientMessage", Loc::MPClientMessage, 0, 69); - ExportSection(props, L"MPEdges", Loc::gszMPEdgesText, 0, 5); - ExportSection(props, L"MPTeamName", Loc::gszMPTeamNames, 0, 5); - ExportSection(props, L"MPMapscreen", Loc::gszMPMapscreenText, 0, 9); - - ExportSection(props, L"MPSScreen", Loc::gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT); - ExportSection(props, L"MPCScreen", Loc::gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT); - ExportSection(props, L"MPChatToggle", Loc::gzMPChatToggleText, 0, 2); - ExportSection(props, L"MPChatbox", Loc::gzMPChatboxText, 0, 2); - - props.writeToXMLFile(L"Localization/GameStrings.xml",tmap); - props.writeToIniFile(L"Localization/GameStrings.ini",true); - - Loc::ExportMercBio(); - Loc::ExportAIMHistory(); - Loc::ExportAIMPolicy(); - Loc::ExportAlumniName(); - Loc::ExportDialogues(); - Loc::ExportNPCDialogues(); - - return true; -} - -#include -#include "Encrypted File.h" - -namespace Loc -{ - wchar_t ToPolish(wchar_t siChar) - { - switch( siChar ) - { - case 165: siChar = 260; break; - case 198: siChar = 262; break; - case 202: siChar = 280; break; - case 163: siChar = 321; break; - case 209: siChar = 323; break; - case 211: siChar = 211; break; - - case 140: siChar = 346; break; - case 175: siChar = 379; break; - case 143: siChar = 377; break; - case 185: siChar = 261; break; - case 230: siChar = 263; break; - case 234: siChar = 281; break; - - case 179: siChar = 322; break; - case 241: siChar = 324; break; - case 243: siChar = 243; break; - case 156: siChar = 347; break; - case 191: siChar = 380; break; - case 159: siChar = 378; break; - } - return siChar; - } - - wchar_t ToRussian(wchar_t siChar) - { - switch( siChar ) - { - //capital letters - case 168: siChar = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO - case 192: siChar = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A - case 193: siChar = 1041; break; - case 194: siChar = 1042; break; - case 195: siChar = 1043; break; - case 196: siChar = 1044; break; - case 197: siChar = 1045; break; - case 198: siChar = 1046; break; - case 199: siChar = 1047; break; - case 200: siChar = 1048; break; - case 201: siChar = 1049; break; - case 202: siChar = 1050; break; - case 203: siChar = 1051; break; - case 204: siChar = 1052; break; - case 205: siChar = 1053; break; - case 206: siChar = 1054; break; - case 207: siChar = 1055; break; - case 208: siChar = 1056; break; - case 209: siChar = 1057; break; - case 210: siChar = 1058; break; - case 211: siChar = 1059; break; - case 212: siChar = 1060; break; - case 213: siChar = 1061; break; - case 214: siChar = 1062; break; - case 215: siChar = 1063; break; - case 216: siChar = 1064; break; - case 217: siChar = 1065; break; - case 218: siChar = 1066; break; - case 219: siChar = 1067; break; - case 220: siChar = 1068; break; - case 221: siChar = 1069; break; - case 222: siChar = 1070; break; - case 223: siChar = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA - - //small letters - case 185: siChar = 8470; break; // ¹ - case 178: siChar = 1030; break; // ² - case 161: siChar = 1038; break; // ¡ - case 179: siChar = 1110; break; // ³ - case 162: siChar = 1118; break; // ¢ - case 165: siChar = 1168; break; // ¥ - case 170: siChar = 1028; break; // ª - case 175: siChar = 1031; break; // ¯ - case 180: siChar = 1169; break; // ´ - case 186: siChar = 1108; break; // º - case 191: siChar = 1111; break; // ¿ - - case 184: siChar = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO - case 224: siChar = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A - case 225: siChar = 1073; break; - case 226: siChar = 1074; break; - case 227: siChar = 1075; break; - case 228: siChar = 1076; break; - case 229: siChar = 1077; break; - case 230: siChar = 1078; break; - case 231: siChar = 1079; break; - case 232: siChar = 1080; break; - case 233: siChar = 1081; break; - case 234: siChar = 1082; break; - case 235: siChar = 1083; break; - case 236: siChar = 1084; break; - case 237: siChar = 1085; break; - case 238: siChar = 1086; break; - case 239: siChar = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE - case 240: siChar = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER - case 241: siChar = 1089; break; - case 242: siChar = 1090; break; - case 243: siChar = 1091; break; - case 244: siChar = 1092; break; - case 245: siChar = 1093; break; - case 246: siChar = 1094; break; - case 247: siChar = 1095; break; - case 248: siChar = 1096; break; - case 249: siChar = 1097; break; - case 250: siChar = 1098; break; - case 251: siChar = 1099; break; - case 252: siChar = 1100; break; - case 253: siChar = 1101; break; - case 254: siChar = 1102; break; - case 255: siChar = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA - } - return siChar; - } - bool Translate(vfs::String::char_t* str, int len, Language lang) - { - if(lang == English || lang == German) - { - return true; - } - else if(lang == Russian) - { - for(int i=0; i(i), pInfoString); - - file.read((vfs::Byte*)pAddInfo, SIZE_MERC_ADDITIONAL_INFO); - DecodeString(pAddInfo, SIZE_MERC_ADDITIONAL_INFO); - Loc::Translate(pAddInfo, SIZE_MERC_ADDITIONAL_INFO, lang); - props.setStringProperty(L"Add", vfs::toString(i), pAddInfo); - } - props.writeToXMLFile(L"Localization/AimBiographies.xml", vfs::PropertyContainer::TagMap()); -} - -void Loc::ExportAIMHistory() -{ - Loc::Language lang = gs_Lang; - #define AIM_HISTORY_LINE_SIZE 400 * 2 - vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE]; - vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt"); - vfs::tReadableFile& file = rfile.file(); - - vfs::PropertyContainer props; - for(int i=0; i<23; ++i) - { - memset(pHistLine,0,AIM_HISTORY_LINE_SIZE*sizeof(wchar_t)); - // - file.read((vfs::Byte*)pHistLine, AIM_HISTORY_LINE_SIZE); - DecodeString(pHistLine,AIM_HISTORY_LINE_SIZE); - Loc::Translate(pHistLine, AIM_HISTORY_LINE_SIZE, lang); - props.setStringProperty(L"Line", vfs::toString(i), pHistLine); - } - props.writeToXMLFile(L"Localization/AimHistory.xml", vfs::PropertyContainer::TagMap()); -} - - -void Loc::ExportAIMPolicy() -{ - Loc::Language lang = gs_Lang; - #define AIM_HISTORY_LINE_SIZE 400 * 2 - vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE]; - vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt"); - vfs::tReadableFile& file = rfile.file(); - - vfs::PropertyContainer props; - for(int i=0; i<46; ++i) - { - memset(pPolLine,0,400*sizeof(wchar_t)); - // - file.read((vfs::Byte*)pPolLine, AIM_HISTORY_LINE_SIZE); - DecodeString(pPolLine,AIM_HISTORY_LINE_SIZE); - Loc::Translate(pPolLine, AIM_HISTORY_LINE_SIZE, lang); - props.setStringProperty(L"Line", vfs::toString(i), pPolLine); - } - props.writeToXMLFile(L"Localization/AimPolicy.xml", vfs::PropertyContainer::TagMap()); -} - -void Loc::ExportAlumniName() -{ - Loc::Language lang = gs_Lang; - #define AIM_ALUMNI_NAME_SIZE 80 * 2 - vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE]; - vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt"); - vfs::tReadableFile& file = rfile.file(); - - vfs::PropertyContainer props; - for(int i=0; i<51; ++i) - { - memset(pAlumniName,0,AIM_ALUMNI_NAME_SIZE*sizeof(wchar_t)); - // - file.read((vfs::Byte*)pAlumniName, AIM_ALUMNI_NAME_SIZE); - DecodeString(pAlumniName,AIM_ALUMNI_NAME_SIZE); - Loc::Translate(pAlumniName, AIM_ALUMNI_NAME_SIZE, lang); - props.setStringProperty(L"Line", vfs::toString(i), pAlumniName); - } - props.writeToXMLFile(L"Localization/AlumniName.xml", vfs::PropertyContainer::TagMap()); -} - -#include - -void Loc::ExportDialogues() -{ - Loc::Language lang = gs_Lang; - #define DIALOGUESIZE 480 - vfs::String::char_t pDiagLine[DIALOGUESIZE]; - - vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"MercEdt/*.edt"); - for(; !it.end(); it.next()) - { - vfs::PropertyContainer props; - vfs::COpenReadFile rfile(it.value()); - vfs::tReadableFile& file = rfile.file(); - - std::wstringstream wss; - wss.str(file.getName().c_str()); - int id=0; - wss >> id; - - for(int i=0; i<200; ++i) - { - memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t)); - // - if(file.read((vfs::Byte*)pDiagLine, DIALOGUESIZE) > 0) - { - DecodeString(pDiagLine,DIALOGUESIZE); - Loc::Translate(pDiagLine, DIALOGUESIZE, lang); - if(wcslen(pDiagLine)) - { - props.setStringProperty(vfs::toString(id),vfs::toString(i), pDiagLine); - } - } - } - vfs::Path x(L"Localization/Dialogue"); - x += vfs::Path(file.getName().c_wcs() + L".xml"); - props.writeToXMLFile(x, vfs::PropertyContainer::TagMap()); - } -} - -void Loc::ExportNPCDialogues() -{ - Loc::Language lang = gs_Lang; - #define DIALOGUESIZE 480 - #define CIVQUOTESIZE 320 - vfs::String::char_t pDiagLine[DIALOGUESIZE]; - - vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"npcdata/*.edt"); - for(; !it.end(); it.next()) - { - vfs::PropertyContainer props; - vfs::COpenReadFile rfile(it.value()); - vfs::tReadableFile& file = rfile.file(); - - vfs::String::str_t const& ws = file.getName().c_wcs(); - vfs::String::str_t::size_type pos = ws.find_first_of(L"."); - vfs::String id = ws.substr(0,pos); - - int SIZE; - if(vfs::matchPattern(L"civ*", id)) - { - SIZE = CIVQUOTESIZE; - } - else - { - SIZE = DIALOGUESIZE; - } - - for(int i=0; i<200; ++i) - { - memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t)); - // - if(file.read((vfs::Byte*)pDiagLine, SIZE) > 0) - { - DecodeString(pDiagLine,SIZE); - Loc::Translate(pDiagLine, SIZE, lang); - if(wcslen(pDiagLine)) - { - props.setStringProperty(id,vfs::toString(i), pDiagLine); - } - } - } - vfs::Path x(L"Localization/NpcDialogue"); - x += vfs::Path(file.getName().c_wcs() + L".xml"); - props.writeToXMLFile(x, vfs::PropertyContainer::TagMap()); - } -} +#include "ExportStrings.h" +#include "LocalizedStrings.h" +#include "Map Screen Interface.h" +#include "personnel.h" +#include "soldier profile type.h" +#include "Interface.h" +#include "Keys.h" +#include "Merc Contract.h" +#include "Campaign Types.h" +#include "finances.h" +#include "laptop.h" + +#include +#include +#include +#include + +namespace Loc +{ + bool Translate(vfs::String::char_t* str, int len, Language lang); + + void ExportMercBio(); + void ExportAIMHistory(); + void ExportAIMPolicy(); + void ExportAlumniName(); + void ExportDialogues(); + void ExportNPCDialogues(); +}; + +////////////////////////////////////////////////////////// + +//#define GERMAN +#include "Text.h" +namespace Loc +{ +#ifdef CHINESE +# include "_ChineseText.cpp" + static Loc::Language gs_Lang = Loc::Chinese; +#endif +#ifdef DUTCH +# include "_DutchText.cpp" + static Loc::Language gs_Lang = Loc::Dutch; +#endif +#ifdef ENGLISH +# include "_EnglishText.cpp" + static Loc::Language gs_Lang = Loc::English; +#endif +#ifdef FRENCH +# include "_FrenchText.cpp" + static Loc::Language gs_Lang = Loc::French; +#endif +#ifdef GERMAN +# include "_GermanText.cpp" + static Loc::Language gs_Lang = Loc::German; +#endif +#ifdef ITALIAN +# include "_ItalianText.cpp" + static Loc::Language gs_Lang = Loc::Italian; +#endif +#ifdef POLISH +# include "_PolishText.cpp" + static Loc::Language gs_Lang = Loc::Polish; +#endif +#ifdef RUSSIAN +# include "_RussianText.cpp" + static Loc::Language gs_Lang = Loc::Russian; +#endif +} + +#include "Assignments.h" +#include "history.h" + +template +void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, T* strings, int min, int max) +{ + for(int i = min; i < max; ++i) + { + vfs::String str(strings[i]); + //Loc::Translate(&str.r_wcs()[0],str.length(), gs_Lang); + if(!str.empty()) + { + props.setStringProperty(section_name, vfs::toString(i), str); + } + } +} + +template<> +void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, wchar_t* strings, int min, int max) +{ + ExportSection(props,section_name, &strings, min, max); +} + + +bool Loc::ExportStrings() +{ + vfs::PropertyContainer::TagMap tmap; + //tmap.Container(L"LocalizedStrings"); + //tmap.Section(L"Topic"); + //tmap.SectionID(L"name"); + //tmap.Key(L"msg"); + //tmap.KeyID(L"index"); + + vfs::PropertyContainer props; + + //not_required ExportSection(props, L"Ja2Credits", Loc::pCreditsJA2113, 0, 7); + ExportSection(props, L"WeaponType", Loc::WeaponType, 0, MAXITEMS); + ExportSection(props, L"TeamTurn", Loc::TeamTurnString, 0, 10); + ExportSection(props, L"Message", Loc::Message, 0, TEXT_NUM_STR_MESSAGE); + ExportSection(props, L"TownNames", Loc::pTownNames, 0, MAX_TOWNS); + ExportSection(props, L"Time", Loc::sTimeStrings, 0, 6); + ExportSection(props, L"Assignment", Loc::pAssignmentStrings, 0, NUM_ASSIGNMENTS); + ExportSection(props, L"PersonnelAssignment", Loc::pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS); + ExportSection(props, L"LongAssignment", Loc::pLongAssignmentStrings, 0, NUM_ASSIGNMENTS); + ExportSection(props, L"Militia", Loc::pMilitiaString, 0, 3); + + ExportSection(props, L"MilitiaButton", Loc::pMilitiaButtonString, 0, 2); + ExportSection(props, L"Condition", Loc::pConditionStrings, 0, 9); + ExportSection(props, L"EpcMenu", Loc::pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT); + ExportSection(props, L"Contract", Loc::pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT); + ExportSection(props, L"POW", Loc::pPOWStrings, 0, 2); + ExportSection(props, L"InvPanelTitle", Loc::pInvPanelTitleStrings, 0, 5); + ExportSection(props, L"LongAttribute", Loc::pLongAttributeStrings, 0, 10); + ExportSection(props, L"ShortAttribute", Loc::pShortAttributeStrings, 0, 10); + ExportSection(props, L"UpperLeftMapScreen", Loc::pUpperLeftMapScreenStrings, 0, 6); + ExportSection(props, L"Training", Loc::pTrainingStrings, 0, 4); + + ExportSection(props, L"GuardMenu", Loc::pGuardMenuStrings, 0, 10); + ExportSection(props, L"OtherGuardMenu", Loc::pOtherGuardMenuStrings, 0, 10); + ExportSection(props, L"AssignMenu", Loc::pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT); + ExportSection(props, L"MilitiaControlMenu", Loc::pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT); + ExportSection(props, L"RemoveMerc", Loc::pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT); + ExportSection(props, L"AttributeMenu", Loc::pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT); + ExportSection(props, L"TrainingMenu", Loc::pTrainingMenuStrings, 0, MAX_TRAIN_STRING_COUNT); + ExportSection(props, L"SquadMenu", Loc::pSquadMenuStrings, 0, MAX_SQUAD_MENU_STRING_COUNT); + + ExportSection(props, L"SnitchMenu", Loc::pSnitchMenuStrings, 0, MAX_SNITCH_MENU_STRING_COUNT); + ExportSection(props, L"SnitchMenuDesc", Loc::pSnitchMenuDescStrings, 0, MAX_SNITCH_MENU_STRING_COUNT-1); + ExportSection(props, L"SnitchToggleMenu", Loc::pSnitchToggleMenuStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT); + ExportSection(props, L"SnitchToggleMenuDesc", Loc::pSnitchToggleMenuDescStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT-1); + ExportSection(props, L"SnitchSectorMenu", Loc::pSnitchSectorMenuStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT); + ExportSection(props, L"SnitchSectorMenuDesc", Loc::pSnitchSectorMenuDescStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT-1); + ExportSection(props, L"PrisonerMenu", Loc::pPrisonerMenuStrings, 0, MAX_PRISONER_MENU_STRING_COUNT ); + ExportSection(props, L"PrisonerMenuDesc", Loc::pPrisonerMenuDescStrings, 0, MAX_PRISONER_MENU_STRING_COUNT - 1 ); + ExportSection(props, L"SnitchPrisonExposed", Loc::pSnitchPrisonExposedStrings, 0, NUM_SNITCH_PRISON_EXPOSED); + ExportSection(props, L"SnitchGatheringRumoursResult", Loc::pSnitchGatheringRumoursResultStrings, 0, NUM_SNITCH_GATHERING_RUMOURS_RESULT); + + ExportSection(props, L"PersonnelTitle", Loc::pPersonnelTitle, 0, 1); + ExportSection(props, L"PersonnelScreen", Loc::pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL); + + ExportSection(props, L"MercSkill", Loc::gzMercSkillText, 0, NUM_SKILLTRAITS_OT); + ExportSection(props, L"TacticalPopupButton", Loc::pTacticalPopupButtonStrings, 0, NUM_ICONS); + ExportSection(props, L"DoorTrap", Loc::pDoorTrapStrings, 0, NUM_DOOR_TRAPS); + ExportSection(props, L"ContractExtend", Loc::pContractExtendStrings, 0, NUM_CONTRACT_EXTEND); + ExportSection(props, L"MapScreenMouseRegionHelp", Loc::pMapScreenMouseRegionHelpText, 0, 6); + ExportSection(props, L"NoiseVol", Loc::pNoiseVolStr, 0, 4); + ExportSection(props, L"NoiseType", Loc::pNoiseTypeStr, 0, 12); + ExportSection(props, L"Direction", Loc::pDirectionStr, 0, 8); + ExportSection(props, L"LandType", Loc::pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES); + ExportSection(props, L"Strategic", Loc::gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT); + + ExportSection(props, L"GameClock", Loc::gpGameClockString, 0, TEXT_NUM_GAMECLOCK); + ExportSection(props, L"KeyDescription", Loc::sKeyDescriptionStrings, 0, 2); + ExportSection(props, L"WeaponStatsDesc", Loc::gWeaponStatsDesc, 0, 17); + ExportSection(props, L"WeaponStatsFasthelpTactical",Loc::gzWeaponStatsFasthelpTactical, 0, 29); + ExportSection(props, L"MiscItemStatsFasthelp", Loc::gzMiscItemStatsFasthelp, 0, 34); + ExportSection(props, L"MoneyStatsDesc", Loc::gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC); + + ExportSection(props, L"Health", Loc::zHealthStr, 0, 7); + ExportSection(props, L"MoneyAmounts", Loc::gzMoneyAmounts, 0, 6); + ExportSection(props, L"ProsLabel", Loc::gzProsLabel, 0, 1); + ExportSection(props, L"ConsLabel", Loc::gzConsLabel, 0, 1); + ExportSection(props, L"TalkMenu", Loc::zTalkMenuStrings, 0, 6); + ExportSection(props, L"Dealer", Loc::zDealerStrings, 0, 4); + ExportSection(props, L"DialogActions", Loc::zDialogActions, 0, 1); + ExportSection(props, L"Vehicle", Loc::pVehicleStrings, 0, 6); + ExportSection(props, L"ShortVehicle", Loc::pShortVehicleStrings, 0, 6); + ExportSection(props, L"VehicleName", Loc::zVehicleName, 0, 6); + ExportSection(props, L"VehicleSeatsStrings", Loc::pVehicleSeatsStrings, 0, 2); + + ExportSection(props, L"Tactical", Loc::TacticalStr, 0, TEXT_NUM_TACTICAL_STR); + ExportSection(props, L"ExitingSectorHelp", Loc::pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI); + ExportSection(props, L"Repair", Loc::pRepairStrings, 0, 4); + ExportSection(props, L"PreStatBuild", Loc::sPreStatBuildString, 0, 6); + ExportSection(props, L"StatGain", Loc::sStatGainStrings, 0, 11); + ExportSection(props, L"HelicopterEta", Loc::pHelicopterEtaStrings, 0, TEXT_NUM_STR_HELI_ETA); + ExportSection(props, L"HelicopterRepair", Loc::pHelicopterRepairRefuelStrings, 0, TEXT_NUM_STR_HELI_REPAIRS); + ExportSection(props, L"MapLevel", Loc::sMapLevelString, 0, 1); + ExportSection(props, L"Loyal", Loc::gsLoyalString, 0, 1); + ExportSection(props, L"Underground", Loc::gsUndergroundString, 0, 1); + ExportSection(props, L"TimeStings", Loc::gsTimeStrings, 0, 1); + + ExportSection(props, L"Facilities", Loc::sFacilitiesStrings, 0, 7); + ExportSection(props, L"MapPopUpInventory", Loc::pMapPopUpInventoryText, 0, 2); + ExportSection(props, L"TownInfo", Loc::pwTownInfoStrings, 0, 12); + ExportSection(props, L"Mine", Loc::pwMineStrings, 0, 14); + ExportSection(props, L"MiscSector", Loc::pwMiscSectorStrings, 0, 7); + ExportSection(props, L"MapInventoryError", Loc::pMapInventoryErrorString, 0, 7); + ExportSection(props, L"MapInventory", Loc::pMapInventoryStrings, 0, 2); + ExportSection(props, L"MapScreenFastHelp", Loc::pMapScreenFastHelpTextList, 0, 10); + ExportSection(props, L"MovementMenu", Loc::pMovementMenuStrings, 0, 4); + ExportSection(props, L"UpdateMerc", Loc::pUpdateMercStrings, 0, 6); + + ExportSection(props, L"MapScreenBorderButtonHelp", Loc::pMapScreenBorderButtonHelpText,0, 6); + ExportSection(props, L"MapScreenBottomFastHelp", Loc::pMapScreenBottomFastHelp, 0, 8); + ExportSection(props, L"MapScreenBottom", Loc::pMapScreenBottomText, 0, 1); + ExportSection(props, L"MercDead", Loc::pMercDeadString, 0, 1); + ExportSection(props, L"Day", Loc::pDayStrings, 0, 1); + ExportSection(props, L"SenderName", Loc::pSenderNameList, 0, 51); + ExportSection(props, L"Traverse", Loc::pTraverseStrings, 0, 2); + ExportSection(props, L"NewMail", Loc::pNewMailStrings, 0, 1); + ExportSection(props, L"DeleteMail", Loc::pDeleteMailStrings, 0, 2); + ExportSection(props, L"EmailHeader", Loc::pEmailHeaders, 0, 3); + + ExportSection(props, L"EmailTitle", Loc::pEmailTitleText, 0, 1); + ExportSection(props, L"FinanceTitle", Loc::pFinanceTitle, 0, 1); + ExportSection(props, L"FinanceSummary", Loc::pFinanceSummary, 0, 12); + ExportSection(props, L"FinanceHeader", Loc::pFinanceHeaders, 0, 7); + ExportSection(props, L"Transaction", Loc::pTransactionText, 0, TEXT_NUM_FINCANCES); + ExportSection(props, L"TransactionAlternate", Loc::pTransactionAlternateText, 0, 4); + ExportSection(props, L"Skyrider", Loc::pSkyriderText, 0, 7); + ExportSection(props, L"Moral", Loc::pMoralStrings, 0, 6); + ExportSection(props, L"LeftEquipment", Loc::pLeftEquipmentString, 0, 2); + ExportSection(props, L"MapScreenStatus", Loc::pMapScreenStatusStrings, 0, 5); + + ExportSection(props, L"MapScreenPrevNextCharButtonHelp", Loc::pMapScreenPrevNextCharButtonHelpText, 0, 2); + ExportSection(props, L"Eta", Loc::pEtaString, 0, 1); + ExportSection(props, L"TrashItem", Loc::pTrashItemText, 0, 2); + ExportSection(props, L"MapError", Loc::pMapErrorString, 0, 50); + ExportSection(props, L"MapPlot", Loc::pMapPlotStrings, 0, 5); + ExportSection(props, L"Bullseye", Loc::pBullseyeStrings, 0, 5); + ExportSection(props, L"MiscMapScreenMouseRegionHelp", Loc::pMiscMapScreenMouseRegionHelpText, 0, 3); + ExportSection(props, L"MercHeLeave", Loc::pMercHeLeaveString, 0, 5); + ExportSection(props, L"MercSheLeave", Loc::pMercSheLeaveString, 0, 5); + ExportSection(props, L"MercContractOver", Loc::pMercContractOverStrings, 0, 5); + + ExportSection(props, L"ImpPopUp", Loc::pImpPopUpStrings, 0, 12); + ExportSection(props, L"ImpButton", Loc::pImpButtonText, 0, 26); + ExportSection(props, L"ExtraIMP", Loc::pExtraIMPStrings, 0, 4); + ExportSection(props, L"FilesTitle", Loc::pFilesTitle, 0, 1); + ExportSection(props, L"FilesSender", Loc::pFilesSenderList, 0, 7); + ExportSection(props, L"HistoryTitle", Loc::pHistoryTitle, 0, 1); + ExportSection(props, L"HistoryHeader", Loc::pHistoryHeaders, 0, 5); + //ExportSection(props, L"History", Loc::pHistoryStrings, 0, TEXT_NUM_HISTORY); + ExportSection(props, L"HistoryLocation", Loc::pHistoryLocations, 0, 1); + ExportSection(props, L"LaptopIcon", Loc::pLaptopIcons, 0, 8); + + ExportSection(props, L"BookMark", Loc::pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS); + ExportSection(props, L"BookmarkTitle", Loc::pBookmarkTitle, 0, 2); + ExportSection(props, L"Download", Loc::pDownloadString, 0, 2); + ExportSection(props, L"AtmSideButton", Loc::gsAtmSideButtonText, 0, 5); + ExportSection(props, L"AtmStartButton", Loc::gsAtmStartButtonText, 0, 4); + ExportSection(props, L"ATM", Loc::sATMText, 0, 6); + ExportSection(props, L"Error", Loc::pErrorStrings, 0, 5); + ExportSection(props, L"Personnel", Loc::pPersonnelString, 0, 1); + ExportSection(props, L"WebTitle", Loc::pWebTitle, 0, 1); + ExportSection(props, L"WebPagesTitle", Loc::pWebPagesTitles, 0, 36); + + ExportSection(props, L"ShowBookmark", Loc::pShowBookmarkString, 0, 2); + ExportSection(props, L"LaptopTitle", Loc::pLaptopTitles, 0, 5); + ExportSection(props, L"PersonnelDepartedState", Loc::pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED); + ExportSection(props, L"PersonelTeam", Loc::pPersonelTeamStrings, 0, 8); + ExportSection(props, L"PersonnelCurrentTeamStats", Loc::pPersonnelCurrentTeamStatsStrings, 0, 3); + ExportSection(props, L"PersonnelTeamStats", Loc::pPersonnelTeamStatsStrings, 0, 11); + ExportSection(props, L"MapVertIndex", Loc::pMapVertIndex, 0, 17); + ExportSection(props, L"MapHortIndex", Loc::pMapHortIndex, 0, 17); + ExportSection(props, L"MapDepthIndex", Loc::pMapDepthIndex, 0, 4); + ExportSection(props, L"ContractButton", Loc::pContractButtonString, 0, 1); + + ExportSection(props, L"UpdatePanelButton", Loc::pUpdatePanelButtons, 0, 2); + ExportSection(props, L"LargeTactical", Loc::LargeTacticalStr, 0, TEXT_NUM_LARGESTR); + ExportSection(props, L"InsContract", Loc::InsContractText, 0, TEXT_NUM_INS_CONTRACT); + ExportSection(props, L"InsInfo", Loc::InsInfoText, 0, TEXT_NUM_INS_INFO); + ExportSection(props, L"MercAccount", Loc::MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT); + ExportSection(props, L"MercAccountPage", Loc::MercAccountPageText, 0, 2); + ExportSection(props, L"MercInfo", Loc::MercInfo, 0, TEXT_NUM_MERC_FILES); + ExportSection(props, L"MercNoAccount", Loc::MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC); + ExportSection(props, L"MercHomePage", Loc::MercHomePageText, 0, TEXT_NUM_MERC); + ExportSection(props, L"Funeral", Loc::sFuneralString, 0, TEXT_NUM_FUNERAL); + + ExportSection(props, L"Florist", Loc::sFloristText, 0, TEXT_NUM_FLORIST); + ExportSection(props, L"OrderForm", Loc::sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER); + ExportSection(props, L"FloristGallery", Loc::sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY); + ExportSection(props, L"FloristCards", Loc::sFloristCards, 0, TEXT_NUM_FLORIST_CARDS); + ExportSection(props, L"BobbyROrderForm", Loc::BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER); + ExportSection(props, L"BobbyRFilter", Loc::BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER); + ExportSection(props, L"BobbyR", Loc::BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS); + ExportSection(props, L"BobbyRaysFront", Loc::BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR); + ExportSection(props, L"AimSort", Loc::AimSortText, 0, TEXT_NUM_AIM_SORT); + ExportSection(props, L"AimPolicy", Loc::AimPolicyText, 0, TEXT_NUM_AIM_POLICIES); + + ExportSection(props, L"AimMember", Loc::AimMemberText, 0, 4); + ExportSection(props, L"CharacterInfo", Loc::CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO); + ExportSection(props, L"VideoConfercing", Loc::VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF); + ExportSection(props, L"AimPopUp", Loc::AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP); + ExportSection(props, L"AimLink", Loc::AimLinkText, 0, TEXM_NUM_AIM_LINK); + ExportSection(props, L"AimHistory", Loc::AimHistoryText, 0, TEXT_NUM_AIM_HISTORY); + ExportSection(props, L"AimFi", Loc::AimFiText, 0, TEXT_NUM_AIM_FI); + ExportSection(props, L"AimAlumni", Loc::AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI); + ExportSection(props, L"AimScreen", Loc::AimScreenText, 0, TEXT_NUM_AIM_SCREEN); + ExportSection(props, L"AimBottomMenu", Loc::AimBottomMenuText, 0, TEXT_NUM_AIM_MENU); + + ExportSection(props, L"SKI", Loc::SKI_Text, 0, TEXT_NUM_SKI_TEXT); + ExportSection(props, L"SkiAtm", Loc::SkiAtmText, 0, NUM_SKI_ATM_BUTTONS); + ExportSection(props, L"SkiAtmText", Loc::gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT); + ExportSection(props, L"SkiMessageBox", Loc::SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT); + ExportSection(props, L"Options", Loc::zOptionsText, 0, TEXT_NUM_OPT_TEXT); + ExportSection(props, L"SaveLoad", Loc::zSaveLoadText, 0, TEXT_NUM_SLG_TEXT); + ExportSection(props, L"MarksMapScreen", Loc::zMarksMapScreenText, 0, 25); + ExportSection(props, L"LandMarkInSector", Loc::pLandMarkInSectorString, 0, 1); + ExportSection(props, L"MilitiaConfirm", Loc::pMilitiaConfirmStrings, 0, 11); + ExportSection(props, L"MoneyWithdrawMessage", Loc::gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW); + + ExportSection(props, L"Copyright", Loc::gzCopyrightText, 0, 1); + ExportSection(props, L"OptionsToggle", Loc::zOptionsToggleText, 0, 49); + ExportSection(props, L"OptionsScreenHelp", Loc::zOptionsScreenHelpText, 0, 49); + ExportSection(props, L"GIOScreen", Loc::gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT); + ExportSection(props, L"MPJScreen", Loc::gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT); + ExportSection(props, L"MPJHelpText", Loc::gzMPJHelpText, 0, 10); + ExportSection(props, L"MPHScreen", Loc::gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT); + ExportSection(props, L"DeliveryLocation", Loc::pDeliveryLocationStrings, 0, 17); + ExportSection(props, L"SkillAtZeroWarning", Loc::pSkillAtZeroWarning, 0, 1); + ExportSection(props, L"IMPBeginScreen", Loc::pIMPBeginScreenStrings, 0, 1); + ExportSection(props, L"IMPFinishButton", Loc::pIMPFinishButtonText, 0, 1); + + ExportSection(props, L"IMPFinish", Loc::pIMPFinishStrings, 0, 1); + ExportSection(props, L"IMPVoices", Loc::pIMPVoicesStrings, 0, 1); + ExportSection(props, L"DepartedMercPortrait", Loc::pDepartedMercPortraitStrings, 0, 3); + ExportSection(props, L"PersTitle", Loc::pPersTitleText, 0, 1); + ExportSection(props, L"PausedGame", Loc::pPausedGameText, 0, 3); + ExportSection(props, L"MessageStrings", Loc::pMessageStrings, 0, TEXT_NUM_MSG); + ExportSection(props, L"ItemPickupHelpPopup", Loc::ItemPickupHelpPopup, 0, 5); + ExportSection(props, L"DoctorWarning", Loc::pDoctorWarningString, 0, 2); + ExportSection(props, L"MilitiaButtonsHelp", Loc::pMilitiaButtonsHelpText, 0, 4); + ExportSection(props, L"MapScreenJustStartedHelp", Loc::pMapScreenJustStartedHelpText, 0, 2); + + ExportSection(props, L"AntiHacker", Loc::pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR); + ExportSection(props, L"LaptopHelp", Loc::gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT); + ExportSection(props, L"HelpScreen", Loc::gzHelpScreenText, 0, TEXT_NUM_HLP); + ExportSection(props, L"NonPersistantPBI", Loc::gzNonPersistantPBIText, 0, 10); + ExportSection(props, L"MiscString", Loc::gzMiscString, 0, 5); + ExportSection(props, L"IntroScreen", Loc::gzIntroScreen, 0, 1); + ExportSection(props, L"NewNoise", Loc::pNewNoiseStr, 0, 11/*MAX_NOISES*/); + ExportSection(props, L"MapScreenSortButtonHelp", Loc::wMapScreenSortButtonHelpText, 0, 6); + ExportSection(props, L"BrokenLink", Loc::BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK); + ExportSection(props, L"BobbyRShipment", Loc::gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT); + + ExportSection(props, L"CreditNames", Loc::gzCreditNames, 0, 15); + ExportSection(props, L"CreditNameTitle", Loc::gzCreditNameTitle, 0, 15); + ExportSection(props, L"CreditNameFunny", Loc::gzCreditNameFunny, 0, 15); + ExportSection(props, L"RepairsDone", Loc::sRepairsDoneString, 0, 7); + ExportSection(props, L"GioDifConfirm", Loc::zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS); + ExportSection(props, L"LateLocalized", Loc::gzLateLocalizedString, 0, 64); + ExportSection(props, L"CWStrings", Loc::gzCWStrings, 0, 1); + ExportSection(props, L"TooltipStrings", Loc::gzTooltipStrings, 0, TEXT_NUM_STR_TT); + ExportSection(props, L"New113Message", Loc::New113Message, 0, TEXT_NUM_MSG113); + + ExportSection(props, L"New113HAMMessage", Loc::New113HAMMessage, 0, 25); + ExportSection(props, L"New113MERCMercMail", Loc::New113MERCMercMailTexts, 0, 4); + ExportSection(props, L"New113AIMMercMail", Loc::New113AIMMercMailTexts, 0, 16); + ExportSection(props, L"MissingIMPSkills", Loc::MissingIMPSkillsDescriptions, 0, 2); + ExportSection(props, L"NewInvMessage", Loc::NewInvMessage, 0, TEXT_NUM_NIV); + ExportSection(props, L"MPServerMessage", Loc::MPServerMessage, 0, 13); + ExportSection(props, L"MPClientMessage", Loc::MPClientMessage, 0, 69); + ExportSection(props, L"MPEdges", Loc::gszMPEdgesText, 0, 5); + ExportSection(props, L"MPTeamName", Loc::gszMPTeamNames, 0, 5); + ExportSection(props, L"MPMapscreen", Loc::gszMPMapscreenText, 0, 9); + + ExportSection(props, L"MPSScreen", Loc::gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT); + ExportSection(props, L"MPCScreen", Loc::gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT); + ExportSection(props, L"MPChatToggle", Loc::gzMPChatToggleText, 0, 2); + ExportSection(props, L"MPChatbox", Loc::gzMPChatboxText, 0, 2); + + props.writeToXMLFile(L"Localization/GameStrings.xml",tmap); + props.writeToIniFile(L"Localization/GameStrings.ini",true); + + Loc::ExportMercBio(); + Loc::ExportAIMHistory(); + Loc::ExportAIMPolicy(); + Loc::ExportAlumniName(); + Loc::ExportDialogues(); + Loc::ExportNPCDialogues(); + + return true; +} + +#include +#include "Encrypted File.h" + +namespace Loc +{ + wchar_t ToPolish(wchar_t siChar) + { + switch( siChar ) + { + case 165: siChar = 260; break; + case 198: siChar = 262; break; + case 202: siChar = 280; break; + case 163: siChar = 321; break; + case 209: siChar = 323; break; + case 211: siChar = 211; break; + + case 140: siChar = 346; break; + case 175: siChar = 379; break; + case 143: siChar = 377; break; + case 185: siChar = 261; break; + case 230: siChar = 263; break; + case 234: siChar = 281; break; + + case 179: siChar = 322; break; + case 241: siChar = 324; break; + case 243: siChar = 243; break; + case 156: siChar = 347; break; + case 191: siChar = 380; break; + case 159: siChar = 378; break; + } + return siChar; + } + + wchar_t ToRussian(wchar_t siChar) + { + switch( siChar ) + { + //capital letters + case 168: siChar = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO + case 192: siChar = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A + case 193: siChar = 1041; break; + case 194: siChar = 1042; break; + case 195: siChar = 1043; break; + case 196: siChar = 1044; break; + case 197: siChar = 1045; break; + case 198: siChar = 1046; break; + case 199: siChar = 1047; break; + case 200: siChar = 1048; break; + case 201: siChar = 1049; break; + case 202: siChar = 1050; break; + case 203: siChar = 1051; break; + case 204: siChar = 1052; break; + case 205: siChar = 1053; break; + case 206: siChar = 1054; break; + case 207: siChar = 1055; break; + case 208: siChar = 1056; break; + case 209: siChar = 1057; break; + case 210: siChar = 1058; break; + case 211: siChar = 1059; break; + case 212: siChar = 1060; break; + case 213: siChar = 1061; break; + case 214: siChar = 1062; break; + case 215: siChar = 1063; break; + case 216: siChar = 1064; break; + case 217: siChar = 1065; break; + case 218: siChar = 1066; break; + case 219: siChar = 1067; break; + case 220: siChar = 1068; break; + case 221: siChar = 1069; break; + case 222: siChar = 1070; break; + case 223: siChar = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA + + //small letters + case 185: siChar = 8470; break; // ¹ + case 178: siChar = 1030; break; // ² + case 161: siChar = 1038; break; // ¡ + case 179: siChar = 1110; break; // ³ + case 162: siChar = 1118; break; // ¢ + case 165: siChar = 1168; break; // ¥ + case 170: siChar = 1028; break; // ª + case 175: siChar = 1031; break; // ¯ + case 180: siChar = 1169; break; // ´ + case 186: siChar = 1108; break; // º + case 191: siChar = 1111; break; // ¿ + + case 184: siChar = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO + case 224: siChar = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A + case 225: siChar = 1073; break; + case 226: siChar = 1074; break; + case 227: siChar = 1075; break; + case 228: siChar = 1076; break; + case 229: siChar = 1077; break; + case 230: siChar = 1078; break; + case 231: siChar = 1079; break; + case 232: siChar = 1080; break; + case 233: siChar = 1081; break; + case 234: siChar = 1082; break; + case 235: siChar = 1083; break; + case 236: siChar = 1084; break; + case 237: siChar = 1085; break; + case 238: siChar = 1086; break; + case 239: siChar = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE + case 240: siChar = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER + case 241: siChar = 1089; break; + case 242: siChar = 1090; break; + case 243: siChar = 1091; break; + case 244: siChar = 1092; break; + case 245: siChar = 1093; break; + case 246: siChar = 1094; break; + case 247: siChar = 1095; break; + case 248: siChar = 1096; break; + case 249: siChar = 1097; break; + case 250: siChar = 1098; break; + case 251: siChar = 1099; break; + case 252: siChar = 1100; break; + case 253: siChar = 1101; break; + case 254: siChar = 1102; break; + case 255: siChar = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA + } + return siChar; + } + bool Translate(vfs::String::char_t* str, int len, Language lang) + { + if(lang == English || lang == German) + { + return true; + } + else if(lang == Russian) + { + for(int i=0; i(i), pInfoString); + + file.read((vfs::Byte*)pAddInfo, SIZE_MERC_ADDITIONAL_INFO); + DecodeString(pAddInfo, SIZE_MERC_ADDITIONAL_INFO); + Loc::Translate(pAddInfo, SIZE_MERC_ADDITIONAL_INFO, lang); + props.setStringProperty(L"Add", vfs::toString(i), pAddInfo); + } + props.writeToXMLFile(L"Localization/AimBiographies.xml", vfs::PropertyContainer::TagMap()); +} + +void Loc::ExportAIMHistory() +{ + Loc::Language lang = gs_Lang; + #define AIM_HISTORY_LINE_SIZE 400 * 2 + vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE]; + vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt"); + vfs::tReadableFile& file = rfile.file(); + + vfs::PropertyContainer props; + for(int i=0; i<23; ++i) + { + memset(pHistLine,0,AIM_HISTORY_LINE_SIZE*sizeof(wchar_t)); + // + file.read((vfs::Byte*)pHistLine, AIM_HISTORY_LINE_SIZE); + DecodeString(pHistLine,AIM_HISTORY_LINE_SIZE); + Loc::Translate(pHistLine, AIM_HISTORY_LINE_SIZE, lang); + props.setStringProperty(L"Line", vfs::toString(i), pHistLine); + } + props.writeToXMLFile(L"Localization/AimHistory.xml", vfs::PropertyContainer::TagMap()); +} + + +void Loc::ExportAIMPolicy() +{ + Loc::Language lang = gs_Lang; + #define AIM_HISTORY_LINE_SIZE 400 * 2 + vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE]; + vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt"); + vfs::tReadableFile& file = rfile.file(); + + vfs::PropertyContainer props; + for(int i=0; i<46; ++i) + { + memset(pPolLine,0,400*sizeof(wchar_t)); + // + file.read((vfs::Byte*)pPolLine, AIM_HISTORY_LINE_SIZE); + DecodeString(pPolLine,AIM_HISTORY_LINE_SIZE); + Loc::Translate(pPolLine, AIM_HISTORY_LINE_SIZE, lang); + props.setStringProperty(L"Line", vfs::toString(i), pPolLine); + } + props.writeToXMLFile(L"Localization/AimPolicy.xml", vfs::PropertyContainer::TagMap()); +} + +void Loc::ExportAlumniName() +{ + Loc::Language lang = gs_Lang; + #define AIM_ALUMNI_NAME_SIZE 80 * 2 + vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE]; + vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt"); + vfs::tReadableFile& file = rfile.file(); + + vfs::PropertyContainer props; + for(int i=0; i<51; ++i) + { + memset(pAlumniName,0,AIM_ALUMNI_NAME_SIZE*sizeof(wchar_t)); + // + file.read((vfs::Byte*)pAlumniName, AIM_ALUMNI_NAME_SIZE); + DecodeString(pAlumniName,AIM_ALUMNI_NAME_SIZE); + Loc::Translate(pAlumniName, AIM_ALUMNI_NAME_SIZE, lang); + props.setStringProperty(L"Line", vfs::toString(i), pAlumniName); + } + props.writeToXMLFile(L"Localization/AlumniName.xml", vfs::PropertyContainer::TagMap()); +} + +#include + +void Loc::ExportDialogues() +{ + Loc::Language lang = gs_Lang; + #define DIALOGUESIZE 480 + vfs::String::char_t pDiagLine[DIALOGUESIZE]; + + vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"MercEdt/*.edt"); + for(; !it.end(); it.next()) + { + vfs::PropertyContainer props; + vfs::COpenReadFile rfile(it.value()); + vfs::tReadableFile& file = rfile.file(); + + std::wstringstream wss; + wss.str(file.getName().c_str()); + int id=0; + wss >> id; + + for(int i=0; i<200; ++i) + { + memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t)); + // + if(file.read((vfs::Byte*)pDiagLine, DIALOGUESIZE) > 0) + { + DecodeString(pDiagLine,DIALOGUESIZE); + Loc::Translate(pDiagLine, DIALOGUESIZE, lang); + if(wcslen(pDiagLine)) + { + props.setStringProperty(vfs::toString(id),vfs::toString(i), pDiagLine); + } + } + } + vfs::Path x(L"Localization/Dialogue"); + x += vfs::Path(file.getName().c_wcs() + L".xml"); + props.writeToXMLFile(x, vfs::PropertyContainer::TagMap()); + } +} + +void Loc::ExportNPCDialogues() +{ + Loc::Language lang = gs_Lang; + #define DIALOGUESIZE 480 + #define CIVQUOTESIZE 320 + vfs::String::char_t pDiagLine[DIALOGUESIZE]; + + vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"npcdata/*.edt"); + for(; !it.end(); it.next()) + { + vfs::PropertyContainer props; + vfs::COpenReadFile rfile(it.value()); + vfs::tReadableFile& file = rfile.file(); + + vfs::String::str_t const& ws = file.getName().c_wcs(); + vfs::String::str_t::size_type pos = ws.find_first_of(L"."); + vfs::String id = ws.substr(0,pos); + + int SIZE; + if(vfs::matchPattern(L"civ*", id)) + { + SIZE = CIVQUOTESIZE; + } + else + { + SIZE = DIALOGUESIZE; + } + + for(int i=0; i<200; ++i) + { + memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t)); + // + if(file.read((vfs::Byte*)pDiagLine, SIZE) > 0) + { + DecodeString(pDiagLine,SIZE); + Loc::Translate(pDiagLine, SIZE, lang); + if(wcslen(pDiagLine)) + { + props.setStringProperty(id,vfs::toString(i), pDiagLine); + } + } + } + vfs::Path x(L"Localization/NpcDialogue"); + x += vfs::Path(file.getName().c_wcs() + L".xml"); + props.writeToXMLFile(x, vfs::PropertyContainer::TagMap()); + } +} diff --git a/i18n/Ja2 Libs.cpp b/i18n/Ja2 Libs.cpp index cf911864..ed4541d8 100644 --- a/i18n/Ja2 Libs.cpp +++ b/i18n/Ja2 Libs.cpp @@ -1,60 +1,60 @@ -#include "LibraryDataBase.h" -LibraryInitHeader gGameLibaries[ ] = -{ - //Library Name Can be Init at start -// on cd - { "Data.slf", FALSE, TRUE }, - { "Editor.slf", FALSE, FALSE }, - { "Ambient.slf", FALSE, TRUE }, - { "Anims.slf", FALSE, TRUE }, - { "BattleSnds.slf", FALSE, TRUE }, - { "BigItems.slf", FALSE, TRUE }, - { "BinaryData.slf", FALSE, TRUE }, - { "Cursors.slf", FALSE, TRUE }, - { "Faces.slf", FALSE, TRUE }, - { "Fonts.slf", FALSE, TRUE }, - { "Interface.slf", FALSE, TRUE }, - { "Laptop.slf", FALSE, TRUE }, - { "Maps.slf", TRUE, TRUE }, - { "MercEdt.slf", FALSE, TRUE }, - { "Music.slf", TRUE, TRUE }, - { "Npc_Speech.slf", TRUE, TRUE }, - { "NpcData.slf", FALSE, TRUE }, - { "RadarMaps.slf", FALSE, TRUE }, - { "Sounds.slf", FALSE, TRUE }, - { "Speech.slf", TRUE, TRUE }, -// { "TileCache.slf", FALSE, TRUE }, - { "TileSets.slf", TRUE, TRUE }, - { "LoadScreens.slf", TRUE, TRUE }, - { "Intro.slf", TRUE, TRUE }, - -#ifdef GERMAN - { "German.slf", FALSE, TRUE }, -#endif - -#ifdef POLISH - { "Polish.slf", FALSE, TRUE }, -#endif - -#ifdef DUTCH - { "Dutch.slf", FALSE, TRUE }, -#endif - -#ifdef ITALIAN - { "Italian.slf", FALSE, TRUE }, -#endif - -#ifdef RUSSIAN - { "Russian.slf", FALSE, TRUE }, -#endif - -#ifdef FRENCH - { "French.slf", FALSE, TRUE }, -#endif - -#ifdef CHINESE - { "Chinese.slf", FALSE, TRUE }, -#endif -}; - - +#include "LibraryDataBase.h" +LibraryInitHeader gGameLibaries[ ] = +{ + //Library Name Can be Init at start +// on cd + { "Data.slf", FALSE, TRUE }, + { "Editor.slf", FALSE, FALSE }, + { "Ambient.slf", FALSE, TRUE }, + { "Anims.slf", FALSE, TRUE }, + { "BattleSnds.slf", FALSE, TRUE }, + { "BigItems.slf", FALSE, TRUE }, + { "BinaryData.slf", FALSE, TRUE }, + { "Cursors.slf", FALSE, TRUE }, + { "Faces.slf", FALSE, TRUE }, + { "Fonts.slf", FALSE, TRUE }, + { "Interface.slf", FALSE, TRUE }, + { "Laptop.slf", FALSE, TRUE }, + { "Maps.slf", TRUE, TRUE }, + { "MercEdt.slf", FALSE, TRUE }, + { "Music.slf", TRUE, TRUE }, + { "Npc_Speech.slf", TRUE, TRUE }, + { "NpcData.slf", FALSE, TRUE }, + { "RadarMaps.slf", FALSE, TRUE }, + { "Sounds.slf", FALSE, TRUE }, + { "Speech.slf", TRUE, TRUE }, +// { "TileCache.slf", FALSE, TRUE }, + { "TileSets.slf", TRUE, TRUE }, + { "LoadScreens.slf", TRUE, TRUE }, + { "Intro.slf", TRUE, TRUE }, + +#ifdef GERMAN + { "German.slf", FALSE, TRUE }, +#endif + +#ifdef POLISH + { "Polish.slf", FALSE, TRUE }, +#endif + +#ifdef DUTCH + { "Dutch.slf", FALSE, TRUE }, +#endif + +#ifdef ITALIAN + { "Italian.slf", FALSE, TRUE }, +#endif + +#ifdef RUSSIAN + { "Russian.slf", FALSE, TRUE }, +#endif + +#ifdef FRENCH + { "French.slf", FALSE, TRUE }, +#endif + +#ifdef CHINESE + { "Chinese.slf", FALSE, TRUE }, +#endif +}; + + diff --git a/i18n/Multi Language Graphic Utils.cpp b/i18n/Multi Language Graphic Utils.cpp index 2530e505..31f39fe5 100644 --- a/i18n/Multi Language Graphic Utils.cpp +++ b/i18n/Multi Language Graphic Utils.cpp @@ -1,581 +1,581 @@ -#include "builddefines.h" -#include "stdio.h" -#include "windows.h" -#include "types.h" -#include "Multi Language Graphic Utils.h" - -//SB -#include "FileMan.h" -#include - -BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID ) -{ - if( g_lang == i18n::Lang::en ) { - switch( usMLGGraphicID ) - { - case MLG_AIMSYMBOL: - sprintf( filename, "LAPTOP\\AimSymbol.sti" ); - return TRUE; - case MLG_AIMSYMBOL_SMALL: - sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" ); - return TRUE; - case MLG_BOBBYNAME: - sprintf( filename, "LAPTOP\\BobbyName.sti" ); - return TRUE; - case MLG_BOBBYRAYAD21: - sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" ); - return TRUE; - case MLG_BOBBYRAYLINK: - sprintf( filename, "LAPTOP\\BobbyRayLink.sti" ); - return TRUE; - case MLG_CLOSED: - sprintf( filename, "LAPTOP\\Closed.sti" ); - return TRUE; - case MLG_CONFIRMORDER: - sprintf( filename, "LAPTOP\\ConfirmOrder.sti" ); - return TRUE; - case MLG_DESKTOP: - sprintf( filename, "LAPTOP\\desktop.pcx" ); - return TRUE; - case MLG_FUNERALAD9: - sprintf( filename, "LAPTOP\\FuneralAd_9.sti" ); - return TRUE; - case MLG_GOLDPIECEBUTTONS: - sprintf( filename, "INTERFACE\\goldpiecebuttons.sti" ); - return TRUE; - case MLG_HISTORY: - sprintf( filename, "LAPTOP\\history.sti" ); - return TRUE; - case MLG_INSURANCEAD10: - sprintf( filename, "LAPTOP\\insurancead_10.sti" ); - return TRUE; - case MLG_INSURANCELINK: - sprintf( filename, "LAPTOP\\insurancelink.sti" ); - return TRUE; - case MLG_INSURANCETITLE: - sprintf( filename, "LAPTOP\\largetitle.sti" ); - return TRUE; - case MLG_LARGEFLORISTSYMBOL: - sprintf( filename, "LAPTOP\\LargeSymbol.sti" ); - return TRUE; - case MLG_SMALLFLORISTSYMBOL: - sprintf( filename, "LAPTOP\\SmallSymbol.sti" ); - return TRUE; - case MLG_MCGILLICUTTYS: - sprintf( filename, "LAPTOP\\McGillicuttys.sti" ); - return TRUE; - case MLG_MORTUARY: - sprintf( filename, "LAPTOP\\Mortuary.sti" ); - return TRUE; - case MLG_MORTUARYLINK: - sprintf( filename, "LAPTOP\\MortuaryLink.sti" ); - return TRUE; - case MLG_ORDERGRID: - sprintf( filename, "LAPTOP\\OrderGrid.sti" ); - return TRUE; - case MLG_PREBATTLEPANEL: - sprintf( filename, "INTERFACE\\PreBattlePanel.sti" ); - return TRUE; - case MLG_PREBATTLEPANEL_800x600: - sprintf(filename, "INTERFACE\\PreBattlePanel_800x600.sti"); - return TRUE; - case MLG_PREBATTLEPANEL_1024x768: - sprintf(filename, "INTERFACE\\PreBattlePanel_1024x768.sti"); - return TRUE; - case MLG_PREBATTLEPANEL_1280x720: - sprintf(filename, "INTERFACE\\PreBattlePanel_1280x720.sti"); - return TRUE; - case MLG_SMALLTITLE: - sprintf( filename, "LAPTOP\\SmallTitle.sti" ); - return TRUE; - case MLG_STATSBOX: - sprintf( filename, "LAPTOP\\StatsBox.sti" ); - return TRUE; - case MLG_STOREPLAQUE: - sprintf( filename, "LAPTOP\\BobbyStorePlaque.sti" ); - return TRUE; - case MLG_TITLETEXT: - sprintf( filename, "LOADSCREENS\\titletext.sti" ); - return TRUE; - case MLG_TITLETEXT_MP: - sprintf( filename, "LOADSCREENS\\titletext_mp.sti" ); - return TRUE; - case MLG_TOALUMNI: - sprintf( filename, "LAPTOP\\ToAlumni.sti" ); - return TRUE; - case MLG_TOMUGSHOTS: - sprintf( filename, "LAPTOP\\ToMugShots.sti" ); - return TRUE; - case MLG_TOSTATS: - sprintf( filename, "LAPTOP\\ToStats.sti" ); - return TRUE; - case MLG_WARNING: - sprintf( filename, "LAPTOP\\Warning.sti" ); - return TRUE; - case MLG_YOURAD13: - sprintf( filename, "LAPTOP\\YourAd_13.sti" ); - return TRUE; - case MLG_OPTIONHEADER: - sprintf( filename, "INTERFACE\\optionscreenaddons.sti" ); - return TRUE; - case MLG_LOADSAVEHEADER: - sprintf( filename, "INTERFACE\\loadscreenaddons.sti" ); - return TRUE; - case MLG_SPLASH: - sprintf( filename, "INTERFACE\\splash.sti" ); - return TRUE; - case MLG_IMPSYMBOL: - sprintf( filename, "LAPTOP\\IMPSymbol.sti" ); - return TRUE; -//inshy: translation needed for russian version - case MLG_BOBBYRAYTITLE: - sprintf( filename, "LAPTOP\\BOBBYRAYTITLE.STI" ); - return TRUE; - case MLG_BR: - sprintf( filename, "LAPTOP\\BR.STI" ); - return TRUE; - case MLG_MP_GOLDPIECEBUTTONS: - sprintf( filename, "INTERFACE\\MPGOLDPIECEBUTTONS.sti" ); - return TRUE; - case MLG_ITEMINFOADVANCEDICONS: - sprintf( filename, "INTERFACE\\ITEMINFOADVANCEDICONS.sti" ); - return TRUE; - } - - } else if( g_lang == i18n::Lang::de ) { - switch( usMLGGraphicID ) - { - case MLG_AIMSYMBOL: - //Same graphic (no translation needed) - sprintf( filename, "LAPTOP\\AimSymbol.sti" ); - return TRUE; - case MLG_AIMSYMBOL_SMALL: - //Same graphic (no translation needed) - sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" ); - return TRUE; - case MLG_BOBBYNAME: - //Same graphic (no translation needed) - sprintf( filename, "LAPTOP\\BobbyName.sti" ); - return TRUE; - case MLG_BOBBYRAYAD21: - //Same graphic (no translation needed) - sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" ); - return TRUE; - case MLG_BOBBYRAYLINK: - sprintf( filename, "GERMAN\\BobbyRayLink_german.sti" ); - return TRUE; - case MLG_CLOSED: - sprintf( filename, "GERMAN\\Closed_german.sti" ); - return TRUE; - case MLG_CONFIRMORDER: - sprintf( filename, "GERMAN\\ConfirmOrder_german.sti" ); - return TRUE; - case MLG_DESKTOP: - sprintf( filename, "GERMAN\\desktop_german.pcx" ); - return TRUE; - case MLG_FUNERALAD9: - sprintf( filename, "GERMAN\\FuneralAd_12_german.sti" ); - return TRUE; - case MLG_GOLDPIECEBUTTONS: - sprintf( filename, "GERMAN\\goldpiecebuttons_german.sti" ); - return TRUE; - case MLG_HISTORY: - sprintf( filename, "GERMAN\\history_german.sti" ); - return TRUE; - case MLG_IMPSYMBOL: - sprintf( filename, "German\\IMPSymbol_german.sti" ); - return TRUE; - case MLG_INSURANCEAD10: - sprintf( filename, "GERMAN\\insurancead_10_german.sti" ); - return TRUE; - case MLG_INSURANCELINK: - sprintf( filename, "GERMAN\\insurancelink_german.sti" ); - return TRUE; - case MLG_INSURANCETITLE: - sprintf( filename, "GERMAN\\largetitle_german.sti" ); - return TRUE; - case MLG_LARGEFLORISTSYMBOL: - sprintf( filename, "GERMAN\\LargeSymbol_german.sti" ); - return TRUE; - case MLG_SMALLFLORISTSYMBOL: - sprintf( filename, "GERMAN\\SmallSymbol_german.sti" ); - return TRUE; - case MLG_MCGILLICUTTYS: - sprintf( filename, "GERMAN\\McGillicuttys_german.sti" ); - return TRUE; - case MLG_MORTUARY: - sprintf( filename, "GERMAN\\Mortuary_german.sti" ); - return TRUE; - case MLG_MORTUARYLINK: - sprintf( filename, "GERMAN\\MortuaryLink_german.sti" ); - return TRUE; - case MLG_PREBATTLEPANEL: - sprintf( filename, "GERMAN\\PreBattlePanel_german.sti" ); - return TRUE; - case MLG_PREBATTLEPANEL_800x600: - sprintf(filename, "GERMAN\\PreBattlePanel_800x600_german.sti"); - return TRUE; - case MLG_PREBATTLEPANEL_1024x768: - sprintf(filename, "GERMAN\\PreBattlePanel_1024x768_german.sti"); - return TRUE; - case MLG_PREBATTLEPANEL_1280x720: - sprintf(filename, "GERMAN\\PreBattlePanel_1280x720_german.sti"); - return TRUE; - case MLG_SMALLTITLE: - sprintf( filename, "GERMAN\\SmallTitle_german.sti" ); - return TRUE; - case MLG_STATSBOX: - //Same file - sprintf( filename, "LAPTOP\\StatsBox.sti" ); - return TRUE; - case MLG_STOREPLAQUE: - sprintf( filename, "GERMAN\\StorePlaque_german.sti" ); - return TRUE; - case MLG_TITLETEXT: - sprintf( filename, "GERMAN\\titletext_german.sti" ); - return TRUE; - case MLG_TITLETEXT_MP: - sprintf( filename, "GERMAN\\titletext_mp_german.sti" ); - return TRUE; - case MLG_TOALUMNI: - sprintf( filename, "GERMAN\\ToAlumni_german.sti" ); - return TRUE; - case MLG_TOMUGSHOTS: - sprintf( filename, "GERMAN\\ToMugShots_german.sti" ); - return TRUE; - case MLG_TOSTATS: - sprintf( filename, "GERMAN\\ToStats_german.sti" ); - return TRUE; - case MLG_WARNING: - sprintf( filename, "GERMAN\\Warning_german.sti" ); - return TRUE; - case MLG_YOURAD13: - sprintf( filename, "GERMAN\\YourAd_13_german.sti" ); - return TRUE; - case MLG_OPTIONHEADER: - sprintf( filename, "GERMAN\\optionscreenaddons_german.sti" ); - return TRUE; - case MLG_LOADSAVEHEADER: - sprintf( filename, "GERMAN\\loadscreenaddons_german.sti" ); - return TRUE; - case MLG_ORDERGRID: - //Same file - sprintf( filename, "LAPTOP\\OrderGrid.sti" ); - return TRUE; - case MLG_SPLASH: - sprintf( filename, "German\\splash_german.sti" ); - return TRUE; -//inshy: Same graphic (no translation needed) - case MLG_BOBBYRAYTITLE: - sprintf( filename, "LAPTOP\\BOBBYRAYTITLE.STI" ); - return TRUE; - case MLG_BR: - sprintf( filename, "LAPTOP\\BR.STI" ); - return TRUE; - case MLG_MP_GOLDPIECEBUTTONS: - sprintf( filename, "GERMAN\\MPGOLDPIECEBUTTONS_german.sti" ); - return TRUE; - case MLG_ITEMINFOADVANCEDICONS: - sprintf( filename, "GERMAN\\ITEMINFOADVANCEDICONS_german.sti" ); - return TRUE; - } - - } else { - - UINT8 zLanguage[64]; - - //The foreign language defined determines the name of the directory and filename. - //For example, the German version of: - // - // "LAPTOP\\IMPSymbol.sti" - // - // would become: - // - // "GERMAN\\IMPSymbol_German.sti" - - if(g_lang == i18n::Lang::nl) { - sprintf( (char *)zLanguage, "DUTCH" ); - } else if(g_lang == i18n::Lang::fr) { - sprintf( (char *)zLanguage, "FRENCH" ); - } else if(g_lang == i18n::Lang::it) { - sprintf( (char *)zLanguage, "ITALIAN" ); - } else if(g_lang == i18n::Lang::pl) { - sprintf( (char *)zLanguage, "POLISH" ); - } else if(g_lang == i18n::Lang::ru) { - sprintf( (char *)zLanguage, "RUSSIAN" ); - } else if(g_lang == i18n::Lang::zh) { - sprintf( (char *)zLanguage, "CHINESE" ); - } - -//SB: Also check for russian Gold version, like English - switch( usMLGGraphicID ) - { - case MLG_AIMSYMBOL: - sprintf( filename, "%s\\AimSymbol_%s.sti", zLanguage, zLanguage ); - break; - case MLG_AIMSYMBOL_SMALL: - sprintf( filename, "%s\\AimSymbol_Small_%s.sti", zLanguage, zLanguage ); - break; - case MLG_BOBBYNAME: - sprintf( filename, "%s\\BobbyName_%s.sti", zLanguage, zLanguage ); - break; - case MLG_BOBBYRAYAD21: - sprintf( filename, "%s\\BobbyRayAd_21_%s.sti", zLanguage, zLanguage ); - break; - case MLG_BOBBYRAYLINK: - sprintf( filename, "%s\\BobbyRayLink_%s.sti", zLanguage, zLanguage ); - break; - case MLG_CLOSED: - sprintf( filename, "%s\\Closed_%s.sti", zLanguage, zLanguage ); - break; - case MLG_CONFIRMORDER: - sprintf( filename, "%s\\ConfirmOrder_%s.sti", zLanguage, zLanguage ); - break; - case MLG_DESKTOP: - sprintf( filename, "%s\\desktop_%s.pcx", zLanguage, zLanguage ); - break; - case MLG_FUNERALAD9: - sprintf( filename, "%s\\FuneralAd_9_%s.sti", zLanguage, zLanguage ); - break; - case MLG_GOLDPIECEBUTTONS: - sprintf( filename, "%s\\goldpiecebuttons_%s.sti", zLanguage, zLanguage ); - break; - case MLG_HISTORY: - sprintf( filename, "%s\\history_%s.sti", zLanguage, zLanguage ); - break; - case MLG_INSURANCEAD10: - sprintf( filename, "%s\\insurancead_10_%s.sti", zLanguage, zLanguage ); - break; - case MLG_INSURANCELINK: - sprintf( filename, "%s\\insurancelink_%s.sti", zLanguage, zLanguage ); - break; - case MLG_INSURANCETITLE: - sprintf( filename, "%s\\largetitle_%s.sti", zLanguage, zLanguage ); - break; - case MLG_LARGEFLORISTSYMBOL: - sprintf( filename, "%s\\LargeSymbol_%s.sti", zLanguage, zLanguage ); - break; - case MLG_ORDERGRID: - sprintf( filename, "%s\\OrderGrid_%s.sti", zLanguage, zLanguage ); - break; - case MLG_SMALLFLORISTSYMBOL: - sprintf( filename, "%s\\SmallSymbol_%s.sti", zLanguage, zLanguage ); - break; - case MLG_STATSBOX: - sprintf( filename, "%s\\StatsBox_%s.sti", zLanguage, zLanguage ); - break; - case MLG_MCGILLICUTTYS: - sprintf( filename, "%s\\McGillicuttys_%s.sti", zLanguage, zLanguage ); - break; - case MLG_MORTUARY: - sprintf( filename, "%s\\Mortuary_%s.sti", zLanguage, zLanguage ); - break; - case MLG_MORTUARYLINK: - sprintf( filename, "%s\\MortuaryLink_%s.sti", zLanguage, zLanguage ); - break; - case MLG_PREBATTLEPANEL: - sprintf( filename, "%s\\PreBattlePanel_%s.sti", zLanguage, zLanguage ); - break; - case MLG_PREBATTLEPANEL_800x600: - sprintf(filename, "%s\\PreBattlePanel_800x600_%s.sti", zLanguage, zLanguage); - break; - case MLG_PREBATTLEPANEL_1024x768: - sprintf(filename, "%s\\PreBattlePanel_1024x768_%s.sti", zLanguage, zLanguage); - break; - case MLG_PREBATTLEPANEL_1280x720: - sprintf(filename, "%s\\PreBattlePanel_1280x720_%s.sti", zLanguage, zLanguage); - break; - case MLG_SMALLTITLE: - sprintf( filename, "%s\\SmallTitle_%s.sti", zLanguage, zLanguage ); - break; - case MLG_STOREPLAQUE: - sprintf( filename, "%s\\StorePlaque_%s.sti", zLanguage, zLanguage ); - break; - case MLG_TITLETEXT: - sprintf( filename, "%s\\titletext_%s.sti", zLanguage, zLanguage ); - break; - case MLG_TITLETEXT_MP: - sprintf( filename, "%s\\titletext_mp_%s.sti", zLanguage, zLanguage ); - return TRUE; - case MLG_TOALUMNI: - sprintf( filename, "%s\\ToAlumni_%s.sti", zLanguage, zLanguage ); - break; - case MLG_TOMUGSHOTS: - sprintf( filename, "%s\\ToMugShots_%s.sti", zLanguage, zLanguage ); - break; - case MLG_TOSTATS: - sprintf( filename, "%s\\ToStats_%s.sti", zLanguage, zLanguage ); - break; - case MLG_WARNING: - sprintf( filename, "%s\\Warning_%s.sti", zLanguage, zLanguage ); - break; - case MLG_YOURAD13: - sprintf( filename, "%s\\YourAd_13_%s.sti", zLanguage, zLanguage ); - break; - case MLG_OPTIONHEADER: - sprintf( filename, "%s\\optionscreenaddons_%s.sti", zLanguage, zLanguage ); - break; - case MLG_LOADSAVEHEADER: - sprintf( filename, "%s\\loadscreenaddons_%s.sti", zLanguage, zLanguage ); - break; - case MLG_SPLASH: - sprintf( filename, "%s\\splash_%s.sti", zLanguage, zLanguage ); - break; - case MLG_IMPSYMBOL: - sprintf( filename, "%s\\IMPSymbol_%s.sti", zLanguage, zLanguage ); - break; -//inshy: translation needed for russian version - case MLG_BOBBYRAYTITLE: - sprintf( filename, "%s\\BOBBYRAYTITLE_%s.STI", zLanguage, zLanguage ); - break; - case MLG_BR: - sprintf( filename, "%s\\BR_%s.STI", zLanguage, zLanguage ); - break; - case MLG_MP_GOLDPIECEBUTTONS: - sprintf( filename, "%s\\MPGOLDPIECEBUTTONS_%s.sti", zLanguage, zLanguage ); - break; - case MLG_ITEMINFOADVANCEDICONS: - sprintf( filename, "%s\\ITEMINFOADVANCEDICONS_%s.sti", zLanguage, zLanguage ); - break; - default: - return FALSE; - } - - if(FileExists( filename )) - return TRUE; - - switch( usMLGGraphicID ) - { - case MLG_AIMSYMBOL: - sprintf( filename, "LAPTOP\\AimSymbol.sti" ); - return TRUE; - case MLG_AIMSYMBOL_SMALL: - sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" ); - return TRUE; - case MLG_BOBBYNAME: - sprintf( filename, "LAPTOP\\BobbyName.sti" ); - return TRUE; - case MLG_BOBBYRAYAD21: - sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" ); - return TRUE; - case MLG_BOBBYRAYLINK: - sprintf( filename, "LAPTOP\\BobbyRayLink.sti" ); - return TRUE; - case MLG_CLOSED: - sprintf( filename, "LAPTOP\\Closed.sti" ); - return TRUE; - case MLG_CONFIRMORDER: - sprintf( filename, "LAPTOP\\ConfirmOrder.sti" ); - return TRUE; - case MLG_DESKTOP: - sprintf( filename, "LAPTOP\\desktop.pcx" ); - return TRUE; - case MLG_FUNERALAD9: - sprintf( filename, "LAPTOP\\FuneralAd_9.sti" ); - return TRUE; - case MLG_GOLDPIECEBUTTONS: - sprintf( filename, "INTERFACE\\goldpiecebuttons.sti" ); - return TRUE; - case MLG_HISTORY: - sprintf( filename, "LAPTOP\\history.sti" ); - return TRUE; - case MLG_INSURANCEAD10: - sprintf( filename, "LAPTOP\\insurancead_10.sti" ); - return TRUE; - case MLG_INSURANCELINK: - sprintf( filename, "LAPTOP\\insurancelink.sti" ); - return TRUE; - case MLG_INSURANCETITLE: - sprintf( filename, "LAPTOP\\largetitle.sti" ); - return TRUE; - case MLG_LARGEFLORISTSYMBOL: - sprintf( filename, "LAPTOP\\LargeSymbol.sti" ); - return TRUE; - case MLG_SMALLFLORISTSYMBOL: - sprintf( filename, "LAPTOP\\SmallSymbol.sti" ); - return TRUE; - case MLG_MCGILLICUTTYS: - sprintf( filename, "LAPTOP\\McGillicuttys.sti" ); - return TRUE; - case MLG_MORTUARY: - sprintf( filename, "LAPTOP\\Mortuary.sti" ); - return TRUE; - case MLG_MORTUARYLINK: - sprintf( filename, "LAPTOP\\MortuaryLink.sti" ); - return TRUE; - case MLG_ORDERGRID: - sprintf( filename, "LAPTOP\\OrderGrid.sti" ); - return TRUE; - case MLG_PREBATTLEPANEL: - sprintf( filename, "INTERFACE\\PreBattlePanel.sti" ); - return TRUE; - case MLG_PREBATTLEPANEL_800x600: - sprintf(filename, "INTERFACE\\PreBattlePanel_800x600.sti"); - return TRUE; - case MLG_PREBATTLEPANEL_1024x768: - sprintf(filename, "INTERFACE\\PreBattlePanel_1024x768.sti"); - return TRUE; - case MLG_PREBATTLEPANEL_1280x720: - sprintf(filename, "INTERFACE\\PreBattlePanel_1280x720.sti"); - return TRUE; - case MLG_SMALLTITLE: - sprintf( filename, "LAPTOP\\SmallTitle.sti" ); - return TRUE; - case MLG_STATSBOX: - sprintf( filename, "LAPTOP\\StatsBox.sti" ); - return TRUE; - case MLG_STOREPLAQUE: - sprintf( filename, "LAPTOP\\BobbyStorePlaque.sti" ); - return TRUE; - case MLG_TITLETEXT: - sprintf( filename, "LOADSCREENS\\titletext.sti" ); - return TRUE; - case MLG_TITLETEXT_MP: - sprintf( filename, "LOADSCREENS\\titletext_mp.sti" ); - return TRUE; - case MLG_TOALUMNI: - sprintf( filename, "LAPTOP\\ToAlumni.sti" ); - return TRUE; - case MLG_TOMUGSHOTS: - sprintf( filename, "LAPTOP\\ToMugShots.sti" ); - return TRUE; - case MLG_TOSTATS: - sprintf( filename, "LAPTOP\\ToStats.sti" ); - return TRUE; - case MLG_WARNING: - sprintf( filename, "LAPTOP\\Warning.sti" ); - return TRUE; - case MLG_YOURAD13: - sprintf( filename, "LAPTOP\\YourAd_13.sti" ); - return TRUE; - case MLG_OPTIONHEADER: - sprintf( filename, "INTERFACE\\optionscreenaddons.sti" ); - return TRUE; - case MLG_LOADSAVEHEADER: - sprintf( filename, "INTERFACE\\loadscreenaddons.sti" ); - return TRUE; - case MLG_SPLASH: - sprintf( filename, "INTERFACE\\splash.sti" ); - return TRUE; - case MLG_IMPSYMBOL: - sprintf( filename, "LAPTOP\\IMPSymbol.sti" ); - return TRUE; -//inshy: translation needed for russian version - case MLG_BOBBYRAYTITLE: - sprintf( filename, "LAPTOP\\BOBBYRAYTITLE.STI" ); - return TRUE; - case MLG_BR: - sprintf( filename, "LAPTOP\\BR.STI" ); - return TRUE; - case MLG_MP_GOLDPIECEBUTTONS: - sprintf( filename, "INTERFACE\\MPGOLDPIECEBUTTONS.sti" ); - return TRUE; - case MLG_ITEMINFOADVANCEDICONS: - sprintf( filename, "INTERFACE\\ITEMINFOADVANCEDICONS.sti" ); - return TRUE; - } - - } - - return FALSE; -} +#include "builddefines.h" +#include "stdio.h" +#include "windows.h" +#include "types.h" +#include "Multi Language Graphic Utils.h" + +//SB +#include "FileMan.h" +#include + +BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID ) +{ + if( g_lang == i18n::Lang::en ) { + switch( usMLGGraphicID ) + { + case MLG_AIMSYMBOL: + sprintf( filename, "LAPTOP\\AimSymbol.sti" ); + return TRUE; + case MLG_AIMSYMBOL_SMALL: + sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" ); + return TRUE; + case MLG_BOBBYNAME: + sprintf( filename, "LAPTOP\\BobbyName.sti" ); + return TRUE; + case MLG_BOBBYRAYAD21: + sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" ); + return TRUE; + case MLG_BOBBYRAYLINK: + sprintf( filename, "LAPTOP\\BobbyRayLink.sti" ); + return TRUE; + case MLG_CLOSED: + sprintf( filename, "LAPTOP\\Closed.sti" ); + return TRUE; + case MLG_CONFIRMORDER: + sprintf( filename, "LAPTOP\\ConfirmOrder.sti" ); + return TRUE; + case MLG_DESKTOP: + sprintf( filename, "LAPTOP\\desktop.pcx" ); + return TRUE; + case MLG_FUNERALAD9: + sprintf( filename, "LAPTOP\\FuneralAd_9.sti" ); + return TRUE; + case MLG_GOLDPIECEBUTTONS: + sprintf( filename, "INTERFACE\\goldpiecebuttons.sti" ); + return TRUE; + case MLG_HISTORY: + sprintf( filename, "LAPTOP\\history.sti" ); + return TRUE; + case MLG_INSURANCEAD10: + sprintf( filename, "LAPTOP\\insurancead_10.sti" ); + return TRUE; + case MLG_INSURANCELINK: + sprintf( filename, "LAPTOP\\insurancelink.sti" ); + return TRUE; + case MLG_INSURANCETITLE: + sprintf( filename, "LAPTOP\\largetitle.sti" ); + return TRUE; + case MLG_LARGEFLORISTSYMBOL: + sprintf( filename, "LAPTOP\\LargeSymbol.sti" ); + return TRUE; + case MLG_SMALLFLORISTSYMBOL: + sprintf( filename, "LAPTOP\\SmallSymbol.sti" ); + return TRUE; + case MLG_MCGILLICUTTYS: + sprintf( filename, "LAPTOP\\McGillicuttys.sti" ); + return TRUE; + case MLG_MORTUARY: + sprintf( filename, "LAPTOP\\Mortuary.sti" ); + return TRUE; + case MLG_MORTUARYLINK: + sprintf( filename, "LAPTOP\\MortuaryLink.sti" ); + return TRUE; + case MLG_ORDERGRID: + sprintf( filename, "LAPTOP\\OrderGrid.sti" ); + return TRUE; + case MLG_PREBATTLEPANEL: + sprintf( filename, "INTERFACE\\PreBattlePanel.sti" ); + return TRUE; + case MLG_PREBATTLEPANEL_800x600: + sprintf(filename, "INTERFACE\\PreBattlePanel_800x600.sti"); + return TRUE; + case MLG_PREBATTLEPANEL_1024x768: + sprintf(filename, "INTERFACE\\PreBattlePanel_1024x768.sti"); + return TRUE; + case MLG_PREBATTLEPANEL_1280x720: + sprintf(filename, "INTERFACE\\PreBattlePanel_1280x720.sti"); + return TRUE; + case MLG_SMALLTITLE: + sprintf( filename, "LAPTOP\\SmallTitle.sti" ); + return TRUE; + case MLG_STATSBOX: + sprintf( filename, "LAPTOP\\StatsBox.sti" ); + return TRUE; + case MLG_STOREPLAQUE: + sprintf( filename, "LAPTOP\\BobbyStorePlaque.sti" ); + return TRUE; + case MLG_TITLETEXT: + sprintf( filename, "LOADSCREENS\\titletext.sti" ); + return TRUE; + case MLG_TITLETEXT_MP: + sprintf( filename, "LOADSCREENS\\titletext_mp.sti" ); + return TRUE; + case MLG_TOALUMNI: + sprintf( filename, "LAPTOP\\ToAlumni.sti" ); + return TRUE; + case MLG_TOMUGSHOTS: + sprintf( filename, "LAPTOP\\ToMugShots.sti" ); + return TRUE; + case MLG_TOSTATS: + sprintf( filename, "LAPTOP\\ToStats.sti" ); + return TRUE; + case MLG_WARNING: + sprintf( filename, "LAPTOP\\Warning.sti" ); + return TRUE; + case MLG_YOURAD13: + sprintf( filename, "LAPTOP\\YourAd_13.sti" ); + return TRUE; + case MLG_OPTIONHEADER: + sprintf( filename, "INTERFACE\\optionscreenaddons.sti" ); + return TRUE; + case MLG_LOADSAVEHEADER: + sprintf( filename, "INTERFACE\\loadscreenaddons.sti" ); + return TRUE; + case MLG_SPLASH: + sprintf( filename, "INTERFACE\\splash.sti" ); + return TRUE; + case MLG_IMPSYMBOL: + sprintf( filename, "LAPTOP\\IMPSymbol.sti" ); + return TRUE; +//inshy: translation needed for russian version + case MLG_BOBBYRAYTITLE: + sprintf( filename, "LAPTOP\\BOBBYRAYTITLE.STI" ); + return TRUE; + case MLG_BR: + sprintf( filename, "LAPTOP\\BR.STI" ); + return TRUE; + case MLG_MP_GOLDPIECEBUTTONS: + sprintf( filename, "INTERFACE\\MPGOLDPIECEBUTTONS.sti" ); + return TRUE; + case MLG_ITEMINFOADVANCEDICONS: + sprintf( filename, "INTERFACE\\ITEMINFOADVANCEDICONS.sti" ); + return TRUE; + } + + } else if( g_lang == i18n::Lang::de ) { + switch( usMLGGraphicID ) + { + case MLG_AIMSYMBOL: + //Same graphic (no translation needed) + sprintf( filename, "LAPTOP\\AimSymbol.sti" ); + return TRUE; + case MLG_AIMSYMBOL_SMALL: + //Same graphic (no translation needed) + sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" ); + return TRUE; + case MLG_BOBBYNAME: + //Same graphic (no translation needed) + sprintf( filename, "LAPTOP\\BobbyName.sti" ); + return TRUE; + case MLG_BOBBYRAYAD21: + //Same graphic (no translation needed) + sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" ); + return TRUE; + case MLG_BOBBYRAYLINK: + sprintf( filename, "GERMAN\\BobbyRayLink_german.sti" ); + return TRUE; + case MLG_CLOSED: + sprintf( filename, "GERMAN\\Closed_german.sti" ); + return TRUE; + case MLG_CONFIRMORDER: + sprintf( filename, "GERMAN\\ConfirmOrder_german.sti" ); + return TRUE; + case MLG_DESKTOP: + sprintf( filename, "GERMAN\\desktop_german.pcx" ); + return TRUE; + case MLG_FUNERALAD9: + sprintf( filename, "GERMAN\\FuneralAd_12_german.sti" ); + return TRUE; + case MLG_GOLDPIECEBUTTONS: + sprintf( filename, "GERMAN\\goldpiecebuttons_german.sti" ); + return TRUE; + case MLG_HISTORY: + sprintf( filename, "GERMAN\\history_german.sti" ); + return TRUE; + case MLG_IMPSYMBOL: + sprintf( filename, "German\\IMPSymbol_german.sti" ); + return TRUE; + case MLG_INSURANCEAD10: + sprintf( filename, "GERMAN\\insurancead_10_german.sti" ); + return TRUE; + case MLG_INSURANCELINK: + sprintf( filename, "GERMAN\\insurancelink_german.sti" ); + return TRUE; + case MLG_INSURANCETITLE: + sprintf( filename, "GERMAN\\largetitle_german.sti" ); + return TRUE; + case MLG_LARGEFLORISTSYMBOL: + sprintf( filename, "GERMAN\\LargeSymbol_german.sti" ); + return TRUE; + case MLG_SMALLFLORISTSYMBOL: + sprintf( filename, "GERMAN\\SmallSymbol_german.sti" ); + return TRUE; + case MLG_MCGILLICUTTYS: + sprintf( filename, "GERMAN\\McGillicuttys_german.sti" ); + return TRUE; + case MLG_MORTUARY: + sprintf( filename, "GERMAN\\Mortuary_german.sti" ); + return TRUE; + case MLG_MORTUARYLINK: + sprintf( filename, "GERMAN\\MortuaryLink_german.sti" ); + return TRUE; + case MLG_PREBATTLEPANEL: + sprintf( filename, "GERMAN\\PreBattlePanel_german.sti" ); + return TRUE; + case MLG_PREBATTLEPANEL_800x600: + sprintf(filename, "GERMAN\\PreBattlePanel_800x600_german.sti"); + return TRUE; + case MLG_PREBATTLEPANEL_1024x768: + sprintf(filename, "GERMAN\\PreBattlePanel_1024x768_german.sti"); + return TRUE; + case MLG_PREBATTLEPANEL_1280x720: + sprintf(filename, "GERMAN\\PreBattlePanel_1280x720_german.sti"); + return TRUE; + case MLG_SMALLTITLE: + sprintf( filename, "GERMAN\\SmallTitle_german.sti" ); + return TRUE; + case MLG_STATSBOX: + //Same file + sprintf( filename, "LAPTOP\\StatsBox.sti" ); + return TRUE; + case MLG_STOREPLAQUE: + sprintf( filename, "GERMAN\\StorePlaque_german.sti" ); + return TRUE; + case MLG_TITLETEXT: + sprintf( filename, "GERMAN\\titletext_german.sti" ); + return TRUE; + case MLG_TITLETEXT_MP: + sprintf( filename, "GERMAN\\titletext_mp_german.sti" ); + return TRUE; + case MLG_TOALUMNI: + sprintf( filename, "GERMAN\\ToAlumni_german.sti" ); + return TRUE; + case MLG_TOMUGSHOTS: + sprintf( filename, "GERMAN\\ToMugShots_german.sti" ); + return TRUE; + case MLG_TOSTATS: + sprintf( filename, "GERMAN\\ToStats_german.sti" ); + return TRUE; + case MLG_WARNING: + sprintf( filename, "GERMAN\\Warning_german.sti" ); + return TRUE; + case MLG_YOURAD13: + sprintf( filename, "GERMAN\\YourAd_13_german.sti" ); + return TRUE; + case MLG_OPTIONHEADER: + sprintf( filename, "GERMAN\\optionscreenaddons_german.sti" ); + return TRUE; + case MLG_LOADSAVEHEADER: + sprintf( filename, "GERMAN\\loadscreenaddons_german.sti" ); + return TRUE; + case MLG_ORDERGRID: + //Same file + sprintf( filename, "LAPTOP\\OrderGrid.sti" ); + return TRUE; + case MLG_SPLASH: + sprintf( filename, "German\\splash_german.sti" ); + return TRUE; +//inshy: Same graphic (no translation needed) + case MLG_BOBBYRAYTITLE: + sprintf( filename, "LAPTOP\\BOBBYRAYTITLE.STI" ); + return TRUE; + case MLG_BR: + sprintf( filename, "LAPTOP\\BR.STI" ); + return TRUE; + case MLG_MP_GOLDPIECEBUTTONS: + sprintf( filename, "GERMAN\\MPGOLDPIECEBUTTONS_german.sti" ); + return TRUE; + case MLG_ITEMINFOADVANCEDICONS: + sprintf( filename, "GERMAN\\ITEMINFOADVANCEDICONS_german.sti" ); + return TRUE; + } + + } else { + + UINT8 zLanguage[64]; + + //The foreign language defined determines the name of the directory and filename. + //For example, the German version of: + // + // "LAPTOP\\IMPSymbol.sti" + // + // would become: + // + // "GERMAN\\IMPSymbol_German.sti" + + if(g_lang == i18n::Lang::nl) { + sprintf( (char *)zLanguage, "DUTCH" ); + } else if(g_lang == i18n::Lang::fr) { + sprintf( (char *)zLanguage, "FRENCH" ); + } else if(g_lang == i18n::Lang::it) { + sprintf( (char *)zLanguage, "ITALIAN" ); + } else if(g_lang == i18n::Lang::pl) { + sprintf( (char *)zLanguage, "POLISH" ); + } else if(g_lang == i18n::Lang::ru) { + sprintf( (char *)zLanguage, "RUSSIAN" ); + } else if(g_lang == i18n::Lang::zh) { + sprintf( (char *)zLanguage, "CHINESE" ); + } + +//SB: Also check for russian Gold version, like English + switch( usMLGGraphicID ) + { + case MLG_AIMSYMBOL: + sprintf( filename, "%s\\AimSymbol_%s.sti", zLanguage, zLanguage ); + break; + case MLG_AIMSYMBOL_SMALL: + sprintf( filename, "%s\\AimSymbol_Small_%s.sti", zLanguage, zLanguage ); + break; + case MLG_BOBBYNAME: + sprintf( filename, "%s\\BobbyName_%s.sti", zLanguage, zLanguage ); + break; + case MLG_BOBBYRAYAD21: + sprintf( filename, "%s\\BobbyRayAd_21_%s.sti", zLanguage, zLanguage ); + break; + case MLG_BOBBYRAYLINK: + sprintf( filename, "%s\\BobbyRayLink_%s.sti", zLanguage, zLanguage ); + break; + case MLG_CLOSED: + sprintf( filename, "%s\\Closed_%s.sti", zLanguage, zLanguage ); + break; + case MLG_CONFIRMORDER: + sprintf( filename, "%s\\ConfirmOrder_%s.sti", zLanguage, zLanguage ); + break; + case MLG_DESKTOP: + sprintf( filename, "%s\\desktop_%s.pcx", zLanguage, zLanguage ); + break; + case MLG_FUNERALAD9: + sprintf( filename, "%s\\FuneralAd_9_%s.sti", zLanguage, zLanguage ); + break; + case MLG_GOLDPIECEBUTTONS: + sprintf( filename, "%s\\goldpiecebuttons_%s.sti", zLanguage, zLanguage ); + break; + case MLG_HISTORY: + sprintf( filename, "%s\\history_%s.sti", zLanguage, zLanguage ); + break; + case MLG_INSURANCEAD10: + sprintf( filename, "%s\\insurancead_10_%s.sti", zLanguage, zLanguage ); + break; + case MLG_INSURANCELINK: + sprintf( filename, "%s\\insurancelink_%s.sti", zLanguage, zLanguage ); + break; + case MLG_INSURANCETITLE: + sprintf( filename, "%s\\largetitle_%s.sti", zLanguage, zLanguage ); + break; + case MLG_LARGEFLORISTSYMBOL: + sprintf( filename, "%s\\LargeSymbol_%s.sti", zLanguage, zLanguage ); + break; + case MLG_ORDERGRID: + sprintf( filename, "%s\\OrderGrid_%s.sti", zLanguage, zLanguage ); + break; + case MLG_SMALLFLORISTSYMBOL: + sprintf( filename, "%s\\SmallSymbol_%s.sti", zLanguage, zLanguage ); + break; + case MLG_STATSBOX: + sprintf( filename, "%s\\StatsBox_%s.sti", zLanguage, zLanguage ); + break; + case MLG_MCGILLICUTTYS: + sprintf( filename, "%s\\McGillicuttys_%s.sti", zLanguage, zLanguage ); + break; + case MLG_MORTUARY: + sprintf( filename, "%s\\Mortuary_%s.sti", zLanguage, zLanguage ); + break; + case MLG_MORTUARYLINK: + sprintf( filename, "%s\\MortuaryLink_%s.sti", zLanguage, zLanguage ); + break; + case MLG_PREBATTLEPANEL: + sprintf( filename, "%s\\PreBattlePanel_%s.sti", zLanguage, zLanguage ); + break; + case MLG_PREBATTLEPANEL_800x600: + sprintf(filename, "%s\\PreBattlePanel_800x600_%s.sti", zLanguage, zLanguage); + break; + case MLG_PREBATTLEPANEL_1024x768: + sprintf(filename, "%s\\PreBattlePanel_1024x768_%s.sti", zLanguage, zLanguage); + break; + case MLG_PREBATTLEPANEL_1280x720: + sprintf(filename, "%s\\PreBattlePanel_1280x720_%s.sti", zLanguage, zLanguage); + break; + case MLG_SMALLTITLE: + sprintf( filename, "%s\\SmallTitle_%s.sti", zLanguage, zLanguage ); + break; + case MLG_STOREPLAQUE: + sprintf( filename, "%s\\StorePlaque_%s.sti", zLanguage, zLanguage ); + break; + case MLG_TITLETEXT: + sprintf( filename, "%s\\titletext_%s.sti", zLanguage, zLanguage ); + break; + case MLG_TITLETEXT_MP: + sprintf( filename, "%s\\titletext_mp_%s.sti", zLanguage, zLanguage ); + return TRUE; + case MLG_TOALUMNI: + sprintf( filename, "%s\\ToAlumni_%s.sti", zLanguage, zLanguage ); + break; + case MLG_TOMUGSHOTS: + sprintf( filename, "%s\\ToMugShots_%s.sti", zLanguage, zLanguage ); + break; + case MLG_TOSTATS: + sprintf( filename, "%s\\ToStats_%s.sti", zLanguage, zLanguage ); + break; + case MLG_WARNING: + sprintf( filename, "%s\\Warning_%s.sti", zLanguage, zLanguage ); + break; + case MLG_YOURAD13: + sprintf( filename, "%s\\YourAd_13_%s.sti", zLanguage, zLanguage ); + break; + case MLG_OPTIONHEADER: + sprintf( filename, "%s\\optionscreenaddons_%s.sti", zLanguage, zLanguage ); + break; + case MLG_LOADSAVEHEADER: + sprintf( filename, "%s\\loadscreenaddons_%s.sti", zLanguage, zLanguage ); + break; + case MLG_SPLASH: + sprintf( filename, "%s\\splash_%s.sti", zLanguage, zLanguage ); + break; + case MLG_IMPSYMBOL: + sprintf( filename, "%s\\IMPSymbol_%s.sti", zLanguage, zLanguage ); + break; +//inshy: translation needed for russian version + case MLG_BOBBYRAYTITLE: + sprintf( filename, "%s\\BOBBYRAYTITLE_%s.STI", zLanguage, zLanguage ); + break; + case MLG_BR: + sprintf( filename, "%s\\BR_%s.STI", zLanguage, zLanguage ); + break; + case MLG_MP_GOLDPIECEBUTTONS: + sprintf( filename, "%s\\MPGOLDPIECEBUTTONS_%s.sti", zLanguage, zLanguage ); + break; + case MLG_ITEMINFOADVANCEDICONS: + sprintf( filename, "%s\\ITEMINFOADVANCEDICONS_%s.sti", zLanguage, zLanguage ); + break; + default: + return FALSE; + } + + if(FileExists( filename )) + return TRUE; + + switch( usMLGGraphicID ) + { + case MLG_AIMSYMBOL: + sprintf( filename, "LAPTOP\\AimSymbol.sti" ); + return TRUE; + case MLG_AIMSYMBOL_SMALL: + sprintf( filename, "LAPTOP\\AimSymbol_Small.sti" ); + return TRUE; + case MLG_BOBBYNAME: + sprintf( filename, "LAPTOP\\BobbyName.sti" ); + return TRUE; + case MLG_BOBBYRAYAD21: + sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" ); + return TRUE; + case MLG_BOBBYRAYLINK: + sprintf( filename, "LAPTOP\\BobbyRayLink.sti" ); + return TRUE; + case MLG_CLOSED: + sprintf( filename, "LAPTOP\\Closed.sti" ); + return TRUE; + case MLG_CONFIRMORDER: + sprintf( filename, "LAPTOP\\ConfirmOrder.sti" ); + return TRUE; + case MLG_DESKTOP: + sprintf( filename, "LAPTOP\\desktop.pcx" ); + return TRUE; + case MLG_FUNERALAD9: + sprintf( filename, "LAPTOP\\FuneralAd_9.sti" ); + return TRUE; + case MLG_GOLDPIECEBUTTONS: + sprintf( filename, "INTERFACE\\goldpiecebuttons.sti" ); + return TRUE; + case MLG_HISTORY: + sprintf( filename, "LAPTOP\\history.sti" ); + return TRUE; + case MLG_INSURANCEAD10: + sprintf( filename, "LAPTOP\\insurancead_10.sti" ); + return TRUE; + case MLG_INSURANCELINK: + sprintf( filename, "LAPTOP\\insurancelink.sti" ); + return TRUE; + case MLG_INSURANCETITLE: + sprintf( filename, "LAPTOP\\largetitle.sti" ); + return TRUE; + case MLG_LARGEFLORISTSYMBOL: + sprintf( filename, "LAPTOP\\LargeSymbol.sti" ); + return TRUE; + case MLG_SMALLFLORISTSYMBOL: + sprintf( filename, "LAPTOP\\SmallSymbol.sti" ); + return TRUE; + case MLG_MCGILLICUTTYS: + sprintf( filename, "LAPTOP\\McGillicuttys.sti" ); + return TRUE; + case MLG_MORTUARY: + sprintf( filename, "LAPTOP\\Mortuary.sti" ); + return TRUE; + case MLG_MORTUARYLINK: + sprintf( filename, "LAPTOP\\MortuaryLink.sti" ); + return TRUE; + case MLG_ORDERGRID: + sprintf( filename, "LAPTOP\\OrderGrid.sti" ); + return TRUE; + case MLG_PREBATTLEPANEL: + sprintf( filename, "INTERFACE\\PreBattlePanel.sti" ); + return TRUE; + case MLG_PREBATTLEPANEL_800x600: + sprintf(filename, "INTERFACE\\PreBattlePanel_800x600.sti"); + return TRUE; + case MLG_PREBATTLEPANEL_1024x768: + sprintf(filename, "INTERFACE\\PreBattlePanel_1024x768.sti"); + return TRUE; + case MLG_PREBATTLEPANEL_1280x720: + sprintf(filename, "INTERFACE\\PreBattlePanel_1280x720.sti"); + return TRUE; + case MLG_SMALLTITLE: + sprintf( filename, "LAPTOP\\SmallTitle.sti" ); + return TRUE; + case MLG_STATSBOX: + sprintf( filename, "LAPTOP\\StatsBox.sti" ); + return TRUE; + case MLG_STOREPLAQUE: + sprintf( filename, "LAPTOP\\BobbyStorePlaque.sti" ); + return TRUE; + case MLG_TITLETEXT: + sprintf( filename, "LOADSCREENS\\titletext.sti" ); + return TRUE; + case MLG_TITLETEXT_MP: + sprintf( filename, "LOADSCREENS\\titletext_mp.sti" ); + return TRUE; + case MLG_TOALUMNI: + sprintf( filename, "LAPTOP\\ToAlumni.sti" ); + return TRUE; + case MLG_TOMUGSHOTS: + sprintf( filename, "LAPTOP\\ToMugShots.sti" ); + return TRUE; + case MLG_TOSTATS: + sprintf( filename, "LAPTOP\\ToStats.sti" ); + return TRUE; + case MLG_WARNING: + sprintf( filename, "LAPTOP\\Warning.sti" ); + return TRUE; + case MLG_YOURAD13: + sprintf( filename, "LAPTOP\\YourAd_13.sti" ); + return TRUE; + case MLG_OPTIONHEADER: + sprintf( filename, "INTERFACE\\optionscreenaddons.sti" ); + return TRUE; + case MLG_LOADSAVEHEADER: + sprintf( filename, "INTERFACE\\loadscreenaddons.sti" ); + return TRUE; + case MLG_SPLASH: + sprintf( filename, "INTERFACE\\splash.sti" ); + return TRUE; + case MLG_IMPSYMBOL: + sprintf( filename, "LAPTOP\\IMPSymbol.sti" ); + return TRUE; +//inshy: translation needed for russian version + case MLG_BOBBYRAYTITLE: + sprintf( filename, "LAPTOP\\BOBBYRAYTITLE.STI" ); + return TRUE; + case MLG_BR: + sprintf( filename, "LAPTOP\\BR.STI" ); + return TRUE; + case MLG_MP_GOLDPIECEBUTTONS: + sprintf( filename, "INTERFACE\\MPGOLDPIECEBUTTONS.sti" ); + return TRUE; + case MLG_ITEMINFOADVANCEDICONS: + sprintf( filename, "INTERFACE\\ITEMINFOADVANCEDICONS.sti" ); + return TRUE; + } + + } + + return FALSE; +} diff --git a/i18n/_ChineseText.cpp b/i18n/_ChineseText.cpp index 64e7f38f..1e62e54d 100644 --- a/i18n/_ChineseText.cpp +++ b/i18n/_ChineseText.cpp @@ -1,12237 +1,12317 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("CHINESE") - - #if defined( CHINESE ) - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_ChineseText_public_symbol(void){;} - -#if defined( CHINESE ) - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; - -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"地点", //0 //L"Locations", - L"人物", //L"Characters", - L"物品", //L"Items", - L"任务", //L"Quests", - L"菜单5", //L"Menu 5", - L"菜单6", //5 //L"Menu 6", - L"菜单7", //L"Menu 7", - L"菜单8", //L"Menu 8", - L"菜单9", //L"Menu 9", - L"菜单10", //L"Menu 10", - L"菜单11", //10 //L"Menu 11", - L"菜单12", //L"Menu 12", - L"菜单13", //L"Menu 13", - L"菜单14", //L"Menu 14", - L"菜单15", //L"Menu 15", - L"菜单15", // 15 //L"Menu 15", - - //Briefing Room - L"进入", //L"Enter", -}; - -STR16 pOtherButtonsText[] = -{ - L"简报", //L"Briefing", - L"接受", //L"Accept", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"简报", //L"Briefing", - L"接受任务", //L"Accept missions", -}; - - -STR16 pLocationPageText[] = -{ - L"上一页", //L"Prev page", - L"照片", //L"Photo", - L"下一页", //L"Next page", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"主页面", //L"Main page", - L">>", - L"类型: ", //L"Type: ", - L"空白数据", //L"Empty data", - L"该任务尚未定义。将任务代码放到这里:TableData\\BriefingRoom\\BriefingRoom.xml。 首个任务必须可见,定义值Hidden = 0为可见。", //L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", - L"简报室。请点击 '进入' 按钮", //L"Briefing Room. Please click the 'Enter' button.", -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"未知", //0 //L"Unknown", - L"城市", //1 //L"City", - L"SAM导弹基地", //2 //L"SAM Site", - L"其它位置", //3 //L"Other Location", - L"矿场", //4 //L"Mine", - L"军事设施", //5 //L"Military Complex", - L"研究设施", //6 //L"Laboratory Complex", - L"工厂设施", //7 //L"Factory Complex", - L"医院", //8 //L"Hospital", - L"监狱", //9 //L"Prison", - L"机场", //10 //L"Airport", -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"全部显示", //L"Show All", - L"显示AIM成员", //L"Show AIM", - L"显示MERC成员", //L"Show MERC", - L"显示RPC", //L"Show RPC", - L"显示NPC", //L"Show NPC", - L"显示车辆", //L"Show Vehicle", - L"显示IMP", //L"Show IMP", - L"显示EPC", //L"Show EPC", - L"过滤", //L"Filter", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"全部", //L"All", - L"AIM", //L"AIM", - L"MERC", //L"MERC", - L"RPC", //L"RPC", - L"NPC", //L"NPC", - L"车辆", //L"Veh.", - L"IMP", //L"IMP", - L"EPC", //L"EPC", - L"过滤", //L"Filter", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"全部显示", //L"Show All", - L"显示城市", //L"Show City", - L"显示SAM导弹基地", //L"Show SAM Site", - L"显示其它区域", //L"Show Other Location", - L"显示矿场", //L"Show Mine", - L"显示军事设施", //L"Show Military Complex", - L"显示研究设施", //L"Show Laboratory Complex", - L"显示工厂设施", //L"Show Factory Complex", - L"显示医院", //L"Show Hospital", - L"显示监狱", //L"Show Prison", - L"显示机场", //L"Show Airport", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"全部", //L"All", - L"城市", //L"City", - L"SAM", //L"SAM", - L"其它", //L"Other", - L"矿场", //L"Mine", - L"军事", //L"Mil.", - L"研究所", //L"Lab.", - L"工厂", //L"Fact.", - L"医院", //L"Hosp.", - L"监狱", //L"Prison", - L"机场", //L"Air.", -}; - -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"全部",//All - L"城市",//City - L"SAM",//SAM - L"矿场",//Mine - L"机场",//Airport - L"荒野", - L"地下", - L"设施", - L"其它",//Other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"显示全部",//Show all - L"显示城市",//Show Cities - L"显示SAM",//Show SAM - L"显示矿场",//Show mines - L"显示机场",//Show airports - L"显示荒野", - L"显示地下分区", - L"显示有设施的分区\n|左|键开启,|右|键关闭", - L"显示其它分区", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; - -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"全部",//All - L"A.I.M", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"其它",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"显示全部",//Show all - L"显示A.I.M成员", - L"显示M.E.R.C成员", - L"显示反抗军", - L"显示不可雇佣角色", - L"显示玩家创建角色", - L"显示其他角色\n|左|键开启,|右|键关闭", -}; - -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"车辆",//vehicles - L"机器",//electronic chars - L"",//reserved. Insert new Other filters above! -}; - -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"全部",//All - L"枪械", - L"弹药", - L"护具", - L"携具", - L"附件", - L"杂物",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"显示全部",//Show all - L"显示枪械\n|左|键开启,|右|键关闭", - L"显示弹药\n|左|键开启,|右|键关闭", - L"显示护具\n|左|键开启,|右|键关闭", - L"显示携行具\n|左|键开启,|右|键关闭", - L"显示附件\n|左|键开启,|右|键关闭", - L"显示其它物品\n|左|键开启,|右|键关闭", -}; - -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"手枪", - L"自动手枪", - L"冲锋枪", - L"步枪", - L"狙击步枪", - L"突击步枪", - L"机枪", - L"霰弹枪", - L"重武器", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"手枪", - L"自动手枪", - L"冲锋枪", - L"步枪", - L"狙击步枪", - L"突击步枪", - L"机枪", - L"霰弹枪", - L"重武器", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"头盔", - L"胸甲", - L"护腿", - L"插板", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"贴身", - L"背心", - L"战斗包", - L"背包", - L"口袋", - L"其它", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"瞄准", - L"侧件", - L"枪口", - L"外部", - L"内部", - L"其它", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"刀具", - L"飞刀", - L"钝器", - L"手雷", - L"炸弹", - L"医疗箱", - L"工具箱", - L"面具", - L"其它", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; - -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"全部",//All - L"进行中", - L"已完成", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"显示全部",//Show all - L"显示正在进行的任务", - L"显示已经完成的任务", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"全部", //0 //L"All", - L"枪械", //L"Gun", - L"弹药", //L"Ammo", - L"携行具", //L"LBE", - L"杂货", //L"Misc", - - L"显示全部", //5 //L"Show All", - L"显示枪械", //L"Show Gun", - L"显示弹药", //L"Show Ammo", - L"显示携行具", //L"Show LBE Gear", - L"显示杂货", //L"Show Misc", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"重武器", //L"Heavy", - L"手枪", //L"Pistol", - L"自动手枪", //L"M. Pist.", - L"冲锋枪", //L"SMG", - L"步枪", //L"Rifle", - L"狙击枪", //L"S. Rifle", - L"突击步枪", //L"A. Rifle", - L"机枪", //L"MG", - L"霰弹枪", //L"Shotg.", - - // Ammo - L"手枪", //L"Pistol", - L"自动手枪", //10 //L"M. Pist.", - L"冲锋枪", //L"SMG", - L"步枪", //L"Rifle", - L"狙击枪", //L"S. Rifle", - L"突击步枪", //L"A. Rifle", - L"机枪", //L"MG", - L"霰弹枪", //L"Shotg.", - - // Used - L"枪械", //L"Gun", - L"护甲", //L"Armor", - L"携行具", //L"LBE Gear", - L"杂货", //20 //L"Misc", - - // Armour - L"头盔", //L"Helmet", - L"防弹衣", //L"Vest", - L"作战裤", //L"Legging", - L"防弹板", //L"Plate", - - // Misc - L"刀具", //L"Blade", - L"飞刀", //L"Th. Kn.", - L"格斗", //L"Blunt", - L"手雷等", //L"Grena.", - L"炸药", //L"Bomb", - L"医疗", //30 //L"Med.", - L"工具", //L"Kit", - L"面部设备", //L"Face", - L"携行具", //L"LBE", - L"其它", //34 //L"Misc", -}; - -STR16 QuestDescText[] = -{ - L"送信",//L"Deliver Letter", - L"食物补给线",//L"Food Route", - L"恐怖分子",//L"Terrorists", - L"Kingpin的圣杯 ",//L"Kingpin Chalice", - L"Kingpin的黑钱",//L"Kingpin Money", - L"逃走的Joey",//L"Runaway Joey", - L"拯救Maria",//L"Rescue Maria", - L"Chitzena圣杯",//L"Chitzena Chalice", - L"被困在Alma",//L"Held in Alma", - L"审讯",//L"Interogation", - - L"乡巴佬的问题",//L"Hillbilly Problem", //10 - L"找到科学家",//L"Find Scientist", - L"送摄像机",//L"Deliver Video Camera", - L"血猫",//L"Blood Cats", - L"找到Hermit",//L"Find Hermit", - L"异形",//L"Creatures", - L"找到直升机飞行员",//L"Find Chopper Pilot", - L"护送SkyRider",//L"Escort SkyRider", - L"解救Dyname",//L"Free Dynamo", - L"护送游客",//L"Escort Tourists", - - - L"Doreen",//L"Doreen", //20 - L"关于皮革商店的梦想",//L"Leather Shop Dream", - L"护送Shank",//L"Escort Shank", - L"没有23",//L"No 23 Yet", - L"没有24",//L"No 24 Yet", - L"杀死Deidranna",//L"Kill Deidranna", - L"没有26",//L"No 26 Yet", - L"没有27",//L"No 27 Yet", - L"没有28",//L"No 28 Yet", - L"没有29",//L"No 29 Yet", -}; - -STR16 FactDescText[] = -{ - L"Omerta被解放了",//L"Omerta Liberated", - L"Drassen被解放了",//L"Drassen Liberated", - L"Sanmona被解放了",//L"Sanmona Liberated", - L"Cambria被解放了",//L"Cambria Liberated", - L"Alma被解放了",//L"Alma Liberated", - L"Grumm被解放了",//L"Grumm Liberated", - L"Tixa被解放了",//L"Tixa Liberated", - L"Chitzena被解放了",//L"Chitzena Liberated", - L"Estoni被解放了",//L"Estoni Liberated", - L"Balime被解放了",//L"Balime Liberated", - - L"Orta被解放了",//L"Orta Liberated", //10 - L"Meduna被解放了",//L"Meduna Liberated", - L"Pacos走近了",//L"Pacos approched", - L"Fatima阅读了信件",//L"Fatima Read note", - L"Fatima从佣兵身边离开",//L"Fatima Walked away from player", - L"Dimitri死了",//L"Dimitri (#60) is dead", - L"Fatima回应了Dimitri的惊讶",//L"Fatima responded to Dimitri's supprise", - L"Carlo喊道'都不许动'",//L"Carlo's exclaimed 'no one moves'", - L"Fatima描述了信件",//L"Fatima described note", - L"Fatima到达最终目的地",//L"Fatima arrives at final dest", - - L"Dimitri说Fatima有证据",//L"Dimitri said Fatima has proof", //20 - L"Miguel听到了对话",//L"Miguel overheard conversation", - L"Miguel要看信件",//L"Miguel asked for letter", - L"Miguel阅读了信件",//L"Miguel read note", - L"Ira在Miguel阅读信件时发表意见",//L"Ira comment on Miguel reading note", - L"反抗军是敌人",//L"Rebels are enemies", - L"把信交给Fatima之前与Fatima对话",//L"Fatima spoken to before given note", - L"开始Drassen任务",//L"Start Drassen quest", - L"Miguel安排了Ira",//L"Miguel offered Ira", - L"Pacos受伤了/被杀死了",//L"Pacos hurt/Killed", - - L"Pacos在A10区域",//L"Pacos is in A10", //30 - L"目前区域安全",//L"Current Sector is safe", - L"Bobby R的包裹在路上",//L"Bobby R Shpmnt in transit", - L"Bobby R的包裹到达Drassen",//L"Bobby R Shpmnt in Drassen", - L"33是TRUE,包裹在不到2小时之前到达",//L"33 is TRUE and it arrived within 2 hours", - L"33是TRUE,34是False,包裹到达时刻距现在已经超过2小时",//L"33 is TRUE 34 is false more then 2 hours", - L"佣兵发现部分包裹丢失了",//L"Player has realized part of shipment is missing", - L"36是TRUE,Pablo被佣兵伤害了",//L"36 is TRUE and Pablo was injured by player", - L"Pablo承认偷窃",//L"Pablo admitted theft", - L"Pablo返还货物,设置37为False",//L"Pablo returned goods, set 37 false", - - L"Miguel将会加入团队",//L"Miguel will join team", //40 - L"给Pablo一些钱",//L"Gave some cash to Pablo", - L"Skyrider正在被护送中",//L"Skyrider is currently under escort", - L"Skyrider接近Drassen的直升机",//L"Skyrider is close to his chopper in Drassen", - L"Skyrider解释了交易",//L"Skyrider explained deal", - L"佣兵在地图屏幕上点击了直升机至少一次",//L"Player has clicked on Heli in Mapscreen at least once", - L"欠了NPC的钱",//L"NPC is owed money", - L"NPC受伤了",//L"Npc is wounded", - L"NPC被佣兵伤害了",//L"Npc was wounded by Player", - L"将食物短缺的情况告知了J.Walkder神父",//L"Father J.Walker was told of food shortage", - - L"Ira不在这个区域",//L"Ira is not in sector", //50 - L"Ira在说话中",//L"Ira is doing the talking", - L"寻找食物任务完成",//L"Food quest over", - L"Pable从最近的货物中偷了些东西",//L"Pablo stole something from last shpmnt", - L"最近的货物损坏了",//L"Last shipment crashed", - L"最近的货物被发到了错误的机场",//L"Last shipment went to wrong airport", - L"自从得知货物被发到了错误的机场,24小时过去了",//L"24 hours elapsed since notified that shpment went to wrong airport", - L"丢失的包裹到达,但是(某些)货物损坏了, 把 56 设成 False",//L"Lost package arrived with damaged goods. 56 to False", - L"丢失的包裹永久丢失, 把 56 设成 False",//L"Lost package is lost permanently. Turn 56 False", - L"下一个包裹可能(随机)丢失",//L"Next package can (random) be lost", - - L"下一个包裹可能(随机)被延误",//L"Next package can(random) be delayed", //60 - L"包裹是中等尺寸的",//L"Package is medium sized", - L"包裹是大尺寸的",//L"Package is largesized", - L"Doreen有良心",//L"Doreen has conscience", - L"佣兵对Gordon说话",//L"Player Spoke to Gordon", - L"Ira仍然是NPC,位于A10-2区域(尚未加入)",//L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo要求急救",//L"Dynamo asked for first aid", - L"Dynamo可以被招聘",//L"Dynamo can be recruited", - L"NPC在流血",//L"Npc is bleeding", - L"Shank想加入",//L"Shank wnts to join", - - L"NPC在流血",//L"NPC is bleeding", //70 - L"佣兵队伍有通缉犯的头 & Carmen在San Mona",//L"Player Team has head & Carmen in San Mona", - L"佣兵队伍有通缉犯的头 & Carmen在Cambria",//L"Player Team has head & Carmen in Cambria", - L"佣兵队伍有通缉犯的头 & Carmen在Drassen",//L"Player Team has head & Carmen in Drassen", - L"神父喝醉了",//L"Father is drunk", - L"佣兵伤害了在NPC身边8个格子内的佣兵",//L"Player has wounded mercs within 8 tiles of NPC", - L"NPC身边8个格子内只有1个佣兵受伤",//L"1 & only 1 merc wounded within 8 tiles of NPC", - L"NPC身边8个格子内有多于1个佣兵受伤",//L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda在商店中",//L"Brenda is in the store ", - L"Brenda死了",//L"Brenda is Dead", - - L"Brenda在家",//L"Brenda is at home", //80 - L"NPC是敌人",//L"NPC is an enemy", - L"扩音器音量>=84,<3个男性出现",//L"Speaker Strength >= 84 and < 3 males present", - L"扩音器音量>=84,和至少3名男性",//L"Speaker Strength >= 84 and at least 3 males present", - L"Hans引荐了Tony",//L"Hans lets ou see Tony", - L"Hans正站在 13523",//L"Hans is standing on 13523", - L"Tony今天不在",//L"Tony isnt available Today", - L"妓女在和NPC说话",//L"Female is speaking to NPC", - L"佣兵很享受妓院",//L"Player has enjoyed the Brothel", - L"Carla有空",//L"Carla is available", - - L"Cindy有空",//L"Cindy is available", //90 - L"Bambi有空",//L"Bambi is available", - L"没有小姐有空",//L"No girls is available", - L"佣兵在等小姐",//L"Player waited for girls", - L"佣兵付了钱",//L"Player paid right amount of money", - L"佣兵从小混混身边走过",//L"Mercs walked by goon", - L"NPC身边3个格子内有多于1个佣兵",//L"More thean 1 merc present within 3 tiles of NPC", - L"NPC身边3个格子内至少有1个佣兵",//L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping等待佣兵的拜访",//L"Kingping expectingh visit from player", - L"Darren等待佣兵付钱",//L"Darren expecting money from player", - - L"佣兵在5格内,NPC可见",//L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen在San Mona",//L"Carmen is in San Mona", - L"佣兵对Carmen说话",//L"Player Spoke to Carmen", - L"Kingpin知道自己的钱被偷了",//L"KingPin knows about stolen money", - L"佣兵把钱还给了KingPin",//L"Player gave money back to KingPin", - L"给了Frank钱(不是去买酒)",//L"Frank was given the money ( not to buy booze )", - L"佣兵被告知KingPin看拳击比赛",//L"Player was told about KingPin watching fights", - L"过了俱乐部的关门时间,Darren警告佣兵(每天重置)",//L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey是EPC",//L"Joey is EPC", - L"Joey在C5",//L"Joey is in C5", - - L"Joey在Martha(109)的5格内,G8区域",//L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey死了",//L"Joey is Dead!", - L"至少有一个佣兵在Martha身边的5格内",//L"At least one player merc within 5 tiles of Martha", - L"Spike站在9817格",//L"Spike is occuping tile 9817", - L"Angel提供了背心",//L"Angel offered vest", - L"Angel卖了背心",//L"Angel sold vest", - L"Maria是EPC",//L"Maria is EPC", - L"Maria是EPC,在皮革店里",//L"Maria is EPC and inside leather Shop", - L"佣兵想买背心",//L"Player wants to buy vest", - L"营救Maria被KingPin的狗腿子发现了,Kingpin现在是敌人了",//L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel把契约留在了柜台上",//L"Angel left deed on counter", //120 - L"Maria任务结束",//L"Maria quest over", - L"佣兵今天对NPC进行了包扎",//L"Player bandaged NPC today", - L"Doreen展现了对女皇的忠诚",//L"Doreen revealed allegiance to Queen", - L"Pablo不应该偷佣兵的东西",//L"Pablo should not steal from player", - L"佣兵的货物到了,但因忠诚度过低而被迫运离",//L"Player shipment arrived but loyalty to low, so it left", - L"直升机待命中",//L"Helicopter is in working condition", - L"佣兵给予的金钱>=1000美金",//L"Player is giving amount of money >= $1000", - L"佣兵给予的金钱<1000美金",//L"Player is giving amount less than $1000", - L"Waldo同意修理直升机(直升机已损坏)",//L"Waldo agreed to fix helicopter( heli is damaged )", - - L"直升机已被摧毁",//L"Helicopter was destroyed", //130 - L"Waldo告诉我们关于直升机飞行员的事情",//L"Waldo told us about heli pilot", - L"神父告诉我们Deidranna在屠杀生病的人们",//L"Father told us about Deidranna killing sick people", - L"神父告诉我们Chivaldori一家的事情",//L"Father told us about Chivaldori family", - L"神父告诉我们关于异形的事情",//L"Father told us about creatures", - L"忠诚度一般",//L"Loyalty is OK", - L"忠诚度低",//L"Loyalty is Low", - L"忠诚度高",//L"Loyalty is High", - L"佣兵做的很糟糕",//L"Player doing poorly", - L"佣兵把通缉犯的头颅给了Carmen",//L"Player gave valid head to Carmen", - - L"目前的区域是G9(Cambria)",//L"Current sector is G9(Cambria)", //140 - L"目前的区域是C5(SanMona)",//L"Current sector is C5(SanMona)", - L"目前的区域是C13(Drassen)",//L"Current sector is C13(Drassen", - L"Carmen带了至少10000美金",//L"Carmen has at least $10,000 on him", - L"Slay加入佣兵团队超过48小时",//L"Player has Slay on team for over 48 hours", - L"Carmen在怀疑Slay",//L"Carmen is suspicous about slay", - L"Slay在目前的区域中",//L"Slay is in current sector", - L"Carmen给了我们最终的警告",//L"Carmen gave us final warning", - L"Vince解释了他为何要求日薪",//L"Vince has explained that he has to charge", - L"需要给Vince支付薪金(每日重设)",//L"Vince is expecting cash (reset everyday)", - - L"佣兵偷了些医疗用品",//L"Player stole some medical supplies once", //150 - L"佣兵又偷了些医疗用品",//L"Player stole some medical supplies again", - L"Vince可以被招募",//L"Vince can be recruited", - L"Vince正在坐诊",//L"Vince is currently doctoring", - L"Vince被招募了",//L"Vince was recruited", - L"Slay提供了交易",//L"Slay offered deal", - L"所有的恐怖分子已被歼灭",//L"All terrorists killed", - L"", - L"Maria被落在了错误的区域",//L"Maria left in wrong sector", - L"Skyrider被落在了错误的区域",//L"Skyrider left in wrong sector", - - L"Joey被落在了错误的区域",//L"Joey left in wrong sector", //160 - L"John被落在了错误的区域",//L"John left in wrong sector", - L"Mary被落在了错误的区域",//L"Mary left in wrong sector", - L"Walter被贿赂了",//L"Walter was bribed", - L"Shank(67)在队伍中,但不是参与对话的人",//L"Shank(67) is part of squad but not speaker", - L"和Maddog说话",//L"Maddog spoken to", - L"Jake和我们谈论了Shank",//L"Jake told us about shank", - L"Shank(67)不在区域中",//L"Shank(67) is not in secotr", - L"血猫任务开始超过2天了",//L"Bloodcat quest on for more than 2 days", - L"对Armand进行了有效的威胁",//L"Effective threat made to Armand", - - L"女皇死了!",//L"Queen is DEAD!", //170 - L"参与对话的人是AIM佣兵,或者队伍内的AIM佣兵在10格内",//L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"现有的矿已经空了",//L"Current mine is empty", - L"现有的矿快要被开采完了",//L"Current mine is running out", - L"矿区忠诚度低(低矿产产量)",//L"Loyalty low in affiliated town (low mine production)", - L"异形入侵了矿坑",//L"Creatures invaded current mine", - L"佣兵失去了矿坑",//L"Player LOST current mine", - L"矿坑在全速生产中",//L"Current mine is at FULL production", - L"参与对话的人是Dynamo,或者在参与对话的人的10格内",//L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred告诉了我们异形的事情",//L"Fred told us about creatures", - - L"Matt告诉了我们异形的事情",//L"Matt told us about creatures", //180 - L"Oswald告诉了我们异形的事情",//L"Oswald told us about creatures", - L"Calvin告诉了我们异形的事情",//L"Calvin told us about creatures", - L"Carl告诉了我们异形的事情",//L"Carl told us about creatures", - L"博物馆里的圣杯被偷走了",//L"Chalice stolen from museam", - L"John是EPC",//L"John(118) is EPC", - L"Mary和John是EPC",//L"Mary(119) and John (118) are EPC's", - L"Mary还活着",//L"Mary(119) is alive", - L"Mary是EPC",//L"Mary(119)is EPC", - L"Mary在流血",//L"Mary(119) is bleeding", - - L"John还活着",//L"John(118) is alive", //190 - L"John在流血",//L"John(118) is bleeding", - L"John或者Mary靠近了Drassen(B13)的机场",//L"John or Mary close to airport in Drassen(B13)", - L"Mary死了",//L"Mary is Dead", - L"矿工被部署了",//L"Miners placed", - L"Krott在计划对佣兵开枪",//L"Krott planning to shoot player", - L"Madlab解释了他的情况",//L"Madlab explained his situation", - L"Madlab期望有一把枪",//L"Madlab expecting a firearm", - L"Madlab期望有个摄像机",//L"Madlab expecting a video camera.", - L"物品状况<70",//L"Item condition is < 70 ", - - L"Madlab抱怨枪坏了",//L"Madlab complained about bad firearm.", //200 - L"Madlab抱怨摄像机坏了",//L"Madlab complained about bad video camera.", - L"机器人准备出发",//L"Robot is ready to go!", - L"第一个机器人被摧毁了",//L"First robot destroyed.", - L"给Madlab一个好的摄像机",//L"Madlab given a good camera.", - L"机器人准备第二次出发",//L"Robot is ready to go a second time!", - L"第二个机器人被摧毁了",//L"Second robot destroyed.", - L"给佣兵介绍了矿洞",//L"Mines explained to player.", - L"Dynamo在J9区域",//L"Dynamo (#66) is in sector J9.", - L"Dynamo还活着",//L"Dynamo (#66) is alive.", - - L"在总共进行过不到3场战斗的情况下,有一个有能力参加战斗的NPC没有参加过一次战斗,",//L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"佣兵收到了来自Drassen,Cambria,Alma和Chitzena的采矿收入",//L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"佣兵去过K4_b1",//L"Player has been to K4_b1", - L"当Warden活着时,和Brewster谈过",//L"Brewster got to talk while Warden was alive", - L"Warden死了",//L"Warden (#103) is dead.", - L"Ernest给我们些枪",//L"Ernest gave us the guns", - L"这是第一个酒保",//L"This is the first bartender", - L"这是第二个酒保",//L"This is the second bartender", - L"这是第三个酒保",//L"This is the third bartender", - L"这是第四个酒保",//L"This is the fourth bartender", - - - L"Manny是个酒保",//L"Manny is a bartender.", //220 - L"没有东西被修好了(有些东西正在修理中,现在没有修好的东西可以给佣兵)",//L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"佣兵从Howard处买了东西",//L"Player made purchase from Howard (#125)", - L"买了Dave的汽车",//L"Dave sold vehicle", - L"Dave的车准备好了",//L"Dave's vehicle ready", - L"Dave期望拿到卖车的钱",//L"Dave expecting cash for car", - L"Dave有汽油(每日随机)",//L"Dave has gas. (randomized daily)", - L"汽车准备好了",//L"Vehicle is present", - L"第一场战斗被佣兵赢得了",//L"First battle won by player", - L"机器人被招募和移动",//L"Robot recruited and moved", - - L"俱乐部内不允许斗殴",//L"No club fighting allowed", //230 - L"佣兵今天已经打了三场拳击了",//L"Player already fought 3 fights today", - L"Hans提到了Joey",//L"Hans mentioned Joey", - L"佣兵的表现超过了50%",//L"Player is doing better than 50% (Alex's function)", - L"佣兵的表现非常好(超过80%)",//L"Player is doing very well (better than 80%)", - L"神父喝醉了并且开启了科幻模式",//L"Father is drunk and sci-fi option is on", - L"Micky喝醉了",//L"Micky (#96) is drunk", - L"佣兵尝试用暴力方式进入妓院",//L"Player has attempted to force their way into brothel", - L"有效地威胁了Rat三次",//L"Rat effectively threatened 3 times", - L"佣兵为两个人付了去妓院的钱",//L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"佣兵控制了两个城镇,包括omerta",//L"Player owns 2 towns including omerta", - L"佣兵控制了三个城镇,包括omerta",//L"Player owns 3 towns including omerta",// 243 - L"佣兵控制了四个城镇,包括omerta",//L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"男性谈论女性的现状(也可能是男扮女装的意思)",//L"Fact male speaking female present", - L"Hicks娶了你的一个雇佣兵",//L"Fact hicks married player merc",// 249 - - L"博物馆开了",//L"Fact museum open",// 250 - L"妓院开放",//L"Fact brothel open",// 251 - L"俱乐部开放",//L"Fact club open",// 252 - L"第一局打响",//L"Fact first battle fought",// 253 - L"第一局正在进行",//L"Fact first battle being fought",// 254 - L"Kingpin介绍了他自己",//L"Fact kingpin introduced self",// 255 - L"Kingpin不在办公室",//L"Fact kingpin not in office",// 256 - L"不欠Kingpin钱",//L"Fact dont owe kingpin money",// 257 - L"daryl和flo结婚了",// L"Fact pc marrying daryl is flo", 258 - L"", - - L"", //260 - L"NPC畏缩了",//L"Fact npc cowering", // 261, - L"", - L"", - L"上层和底层已被清理",//L"Fact top and bottom levels cleared", - L"上层已被清理",//L"Fact top level cleared",// 265 - L"底层已被清理",//L"Fact bottom level cleared",// 266 - L"需要友善地说话",//L"Fact need to speak nicely",// 267 - L"物品已经被安装过了",//L"Fact attached item before",// 268 - L"Skyrider被护送过",//L"Fact skyrider ever escorted",// 269 - - L"NPC不在交火中",//L"Fact npc not under fire",// 270 - L"Willis听说了Joey的营救",//L"Fact willis heard about joey rescue",// 271 - L"Willis给了折扣",//L"Fact willis gives discount",// 272 - L"乡巴佬被杀了",//L"Fact hillbillies killed",// 273 - L"Keith不营业了",//L"Fact keith out of business", // 274 - L"Mike可以被招募",//L"Fact mike available to army",// 275 - L"Kingpin会派刺客",//L"Fact kingpin can send assassins",// 276 - L"Estoni可以加油",//L"Fact estoni refuelling possible",// 277 - L"博物馆的警报被关了",//L"Fact museum alarm went off",// 278 - L"", - - L"maddog是参与对话的人",//L"Fact maddog is speaker", //280, - L"", - L"Angel提到了契约",//L"Fact angel mentioned deed", // 282, - L"Iggy可以被招募",//L"Fact iggy available to army",// 283 - L"是否招募conrads",//L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"NPC充满敌意或者吓坏了",//L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Tony在房子里",//L"Fact tony in building", //291, - L"Shank在说话",//L"Fact shank speaking", // 292, - L"Doreen还活着",//L"Fact doreen alive",// 293 - L"Waldo还活着",//L"Fact waldo alive",// 294 - L"Perko还活着",//L"Fact perko alive",// 295 - L"Tony还活着",//L"Fact tony alive",// 296 - L"", - L"Vince还活着",//L"Fact vince alive",// 298, - L"Jenny还活着",//L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Arnold还活着",//L"Fact arnold alive",// 302, - L"", - L"存在火箭枪",//L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; - -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"删除", //L"Delete", - L"删除物品(|D|e|l)", //L"Delete item (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"北", //L"north", - L"东北", //L"northeast", - L"东", //L"east", - L"东南", //L"southeast", - L"南", //L"south", - L"西南", //L"southwest", - L"西", //L"west", - L"西北", //L"northwest", -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"切换佣兵显示", //0 //L"Toggle viewing of players", - L"切换敌兵显示", //L"Toggle viewing of enemies", - L"切换生物显示", //L"Toggle viewing of creatures", - L"切换反抗军显示", //L"Toggle viewing of rebels", - L"切换民兵显示", //L"Toggle viewing of civilians", - - L"佣兵", //L"Player", - L"敌兵", //L"Enemy", - L"生物", //L"Creature", - L"反抗军", //L"Rebels", - L"民兵", //L"Civilian", - - L"细节", //10 //L"DETAILED PLACEMENT", - L"一般信息模式", //L"General information mode", - L"角色体型模式", //L"Physical appearance mode", - L"角色属性模式", //L"Attributes mode", - L"装备模式", //L"Inventory mode", - L"个性化制定", //L"Profile ID mode", - L"行动安排", //L"Schedule mode", - L"行动安排", //L"Schedule mode", - L"删除", //L"DELETE", - L"删除当前选中佣兵(|D|e|l)", //L"Delete currently selected merc (|D|e|l)", - L"下一个", //20 //L"NEXT", - L"定位下一个佣兵(|S|p|a|c|e)\n定位上一个佣兵(|C|t|r|l+|S|p|a|c|e)", //L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", - L"选择优先级", //L"Toggle priority existance", - L"选择此人是否可以开关门", //L"Toggle whether or not placement\nhas access to all doors", - - //Orders - L"站立", //L"STATIONARY", - L"守卫", //L"ON GUARD", - L"呼叫", //L"ON CALL", - L"寻找敌人", //L"SEEK ENEMY", - L"近距巡逻", //L"CLOSE PATROL", - L"长距巡逻", //L"FAR PATROL", - L"固定巡逻", //30 //L"POINT PATROL", - L"往返巡逻", //L"RND PT PATROL", - - //Attitudes - L"防守", //L"DEFENSIVE", - L"大胆独行", //L"BRAVE SOLO", - L"大胆助攻", //L"BRAVE AID", - L"积极进攻", //L"AGGRESSIVE", - L"偷袭独行", //L"CUNNING SOLO", - L"偷袭助攻", //L"CUNNING AID", - - L"佣兵面向%s方", //L"Set merc to face %s", - - L"找到", // L"Find", - L"糟糕", //40 //L"BAD", - L"不良", //L"POOR", - L"一般", //L"AVERAGE", - L"良好", //L"GOOD", - L"优秀", //L"GREAT", - - L"糟糕", //L"BAD", - L"不良", //L"POOR", - L"一般", //L"AVERAGE", - L"良好", //L"GOOD", - L"优秀", //L"GREAT", - - L"上一个颜色设定", //50 //L"Previous color set", - L"下一个颜色设定", //L"Next color set", - - L"上一个体型", //L"Previous body type", - L"下一个体型", //L"Next body type", - - L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", - L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", - L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", - L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", - - L"无行动", //L"No action", - L"无行动", //L"No action", - L"无行动", //60 //L"No action", - L"无行动", //L"No action", - - L"清空任务列表", //L"Clear Schedule", - - L"定位选中佣兵", //L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"房顶", //0 //L"ROOFS", - L"墙", //L"WALLS", - L"房间信息", //L"ROOM INFO", - - L"使用所选方式设置墙", //L"Place walls using selection method", - L"使用所选方式设置门", //L"Place doors using selection method", - L"使用所选方式设置屋顶", //L"Place roofs using selection method", - L"使用所选方式设置窗户", //L"Place windows using selection method", - L"使用所选方式设置破损墙", //L"Place damaged walls using selection method.", - L"使用所选方式设置家具", //L"Place furniture using selection method", - L"使用所选方式设置墙纸", //L"Place wall decals using selection method", - L"使用所选方式设置地板", //10 //L"Place floors using selection method", - L"使用所选方式设置一般家具", //L"Place generic furniture using selection method", - L"智能设置墙", //L"Place walls using smart method", - L"智能设置门", //L"Place doors using smart method", - L"智能设置窗户", //L"Place windows using smart method", - L"智能设置破损墙", //L"Place damaged walls using smart method", - L"给门设置锁或陷阱", //L"Lock or trap existing doors", - - L"添加一个新房间", //L"Add a new room", - L"编辑坍塌的墙。", //L"Edit cave walls.", - L"将选中区域从建筑中移走。", //L"Remove an area from existing building.", - L"移走一个建筑", //20 //L"Remove a building", - L"添加平屋顶或替换已有屋顶。", //L"Add/replace building's roof with new flat roof.", - L"复制建筑", //L"Copy a building", - L"移动建筑", //L"Move a building", - L"房间编号\n(按住|S|h|i|f|t复制房间编号)", //L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", - L"清除房间编号", //L"Erase room numbers", - - L"切换擦除模式(|E)", //L"Toggle |Erase mode", - L"撤销(|B|a|c|k|s|p|a|c|e) ", //L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"切换刷子大小(|A/|Z)", //L"Cycle brush size (|A/|Z)", - L"屋顶(|H)", //L"Roofs (|H)", - L"墙(|W)", //30 //L"|Walls", //30 - L"房间信息(|N)", //L"Room Info (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"武器", //0 //L"Wpns", - L"弹药", //L"Ammo", - L"护甲", //L"Armour", - L"LBE", //L"LBE", - L"Exp", //L"Exp", - L"E1", //L"E1", - L"E2", //L"E2", - L"E3", //L"E3", - L"触发器", //L"Triggers", - L"钥匙", //L"Keys", - L"Rnd", //10 //L"Rnd", - L"上一个(|,)", //L"Previous (|,)", - L"下一个(|.)", //L"Next (|.)", -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"添加环境光源", //0 //L"Add ambient light source", //0 - L"显示非环境光照。", //L"Toggle fake ambient lights.", - L"添加撤退方格(再次单击显示现有方格)。", //L"Add exit grids (r-clk to query existing).", - L"切换刷子大小(|A/|Z)", //L"Cycle brush size (|A/|Z)", - L"撤销(|B|a|c|k|s|p|a|c|e)", //L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"切换擦除模式(|E)", //L"Toggle |Erase mode", - L"再次确定朝北点。", //L"Specify north point for validation purposes.", - L"再次确定朝西点。", //L"Specify west point for validation purposes.", - L"再次确定朝东点。", //L"Specify east point for validation purposes.", - L"再次确定朝南点。", //L"Specify south point for validation purposes.", - L"再次确定中心点。", //10 //L"Specify center point for validation purposes.", - L"再次确定独立点。", //L"Specify isolated point for validation purposes.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"添加屋顶层", //0 //L"New outdoor level", - L"添加地下室层", //L"New basement", - L"添加洞穴层", //L"New cave level", - L"保存地图(|C|t|r|l+|S)", //L"Save map (|C|t|r|l+|S)", - L"读取地图(|C|t|r|l+|L)", //L"Load map (|C|t|r|l+|L)", - L"选择图片模块", //L"Select tileset", - L"退出编辑模式", //L"Leave Editor mode", - L"退出游戏(|A|l|t+|X)", //L"Exit game (|A|l|t+|X)", - L"编辑雷达图", //L"Create radar map", - L"如果点选,地图会被保存为原版JA2的地图格式,ID编号大于350的物品会丢失。\n该选项只对原版大小的地图有效,地图不应超过25600格。", //L"When checked, the map will be saved in original JA2 map format.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", - L"如果点选,载入地图后,该地图会自动按照所选的行列数放大。", //L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"绘制地面构图(|G)", //0 //L"Draw |Ground textures", - L"选择地面构图", //L"Set map ground textures", - L"设置海岸或山崖(|C)", //L"Place banks and |Cliffs", - L"绘制公路(|P)", //L"Draw roads (|P)", - L"绘制废墟(|D)", //L"Draw |Debris", - L"放置树木或树丛(|T)", //L"Place |Trees & bushes", - L"放置石块(|R)", //L"Place |Rocks", - L"放置路障或垃圾(|O)", //L"Place barrels & |Other junk", - L"填满区域", //L"Fill area", - L"撤销(|B|a|c|k|s|p|a|c|e) ", //L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"切换擦除模式(|E)", //10 //L"Toggle |Erase mode", - L"切换刷子大小(|A/|Z)", //L"Cycle brush size (|A/|Z)", - L"增加刷子厚度(|])", //L"Raise brush density (|])", - L"减少刷子厚度(|[)", //L"Lower brush density (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"地形", //0 //L"Terrain", - L"建筑", //L"Buildings", - L"物品", //L"Items", - L"佣兵", //L"Mercs", - L"地图信息", //L"Map Info", - L"选项", //L"Options", - L"\n|./|,:切换刷子:宽xx\n|P|g|U|p/|P|g|D|n:智能模式选择前/后一个模板 ", //Terrain fasthelp text //L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", - L"\n|./|,:切换刷子:宽xx\n|P|g|U|p/|P|g|D|n:智能模式选择前/后一个模板 ", //Buildings fasthelp text //L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", - L"|S|p|a|c|e:选择后一个物品\n|C|t|r|l+|S|p|a|c|e:选择前一个物品\n \n|/:光标下放置同样物品\n|C|t|r|l+|/:光标处放置新物品", //Items fasthelp text //L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", - L"|1-|9:设置路标 \n|C|t|r|l+|C/|C|t|r|l+|V:复制/粘贴佣兵 \n|P|g|U|p/|P|g|D|n:切换俑兵位置层", //Mercs fasthelp text L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", - L"|C|t|r|l+|G:转到某格\n|S|h|i|f|t:地图超出边界\n \n|~:切换光标层\n|I:查看小地图\n|J:切换房顶绘制\n|K:显示房顶标记\n|S|h|i|f|t+|L:显示地图边界 \n|S|h|i|f|t+|T:显示树顶\n|U:切换地图高度\n \n|./|,:切换刷子:宽xx", //Map Info fasthelp text //L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", - L"|C|t|r|l+|N:创造新地图\n \n|F|5:显示总信息/大地图\n|F|1|0:移除所有光源\n|F|1|1:取消修改\n|F|1|2:清空所有\n \n|S|h|i|f|t+|R:随机放置选定数量的物品\n \n命令行选项\n|-|D|O|M|A|P|S:雷达地图批量生成\n|-|D|O|M|A|P|S|C|N|V:雷达及洞穴地图批量生成 ", //Options fasthelp text //L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", // -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"北部降落点", //0 //L"North Entry Point", - L"西部降落点", //L"West Entry Point", - L"东部降落点", //L"East Entry Point", - L"南部降落点", //L"South Entry Point", - L"中心降落点", //L"Center Entry Point", - L"独立降落点", //L"Isolated Entry Point", - - L"最亮", //L"Prime", - L"晚上", //L"Night", - L"全天", //L"24Hour", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"惊慌激活1", //0 //L"Panic Trigger1", - L"惊慌激活2", //L"Panic Trigger2", - L"惊慌激活3", //L"Panic Trigger3", - L"激活%d", //L"Trigger%d", - - L"压力下行为", //L"Pressure Action", - L"惊慌动作1", //L"Panic Action1", - L"惊慌动作2", //L"Panic Action2", - L"惊慌动作3", //L"Panic Action3", - L"动作%d", //L"Action%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"没有锁ID", //0 //L"No Lock ID", - L"爆炸陷阱", //L"Explosion Trap", - L"电击陷阱", //L"Electric Trap", - L"警报器", //L"Siren Trap", - L"静默警报", //L"Silent Alarm", - L"超级电击陷阱", //5 //L"Super Electric Trap", - L"妓院警报器", //L"Brothel Siren Trap", - L"陷阱等级%d", //L"Trap Level %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"地图保存为原版JA2(v1.12)格式(版本:5.00/25)", //0 //L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", - L"尚未读取地图", //L"No map currently loaded.", - L"文件: %S,当前分区: %s", //L"File: %S, Current Tileset: %s", - L"读取时放大地图", //L"Enlarge map on loading", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"转换", //0 //L"TOGGLE", - L"视野", //L"VIEWS", - L"选择方式", //L"SELECTION METHOD", - L"智能模式", //L"SMART METHOD", - L"建造方法", //L"BUILDING METHOD", - L"房间#", //5 //L"Room#", -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"编辑%d号地图锁的属性。", //L"Editing lock attributes at map index %d.", - L"锁ID", //L"Lock ID", - L"陷阱类型", //L"Trap Type", - L"陷阱等级", //L"Trap Level", - L"锁上的", //L"Locked", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"压力下行为", //0 //L"Pressure Action", - L"惊慌动作1", //L"Panic Action1", - L"惊慌动作2", //L"Panic Action2", - L"惊慌动作3", //L"Panic Action3", - L"动作%d", //L"Action%d", - - L"惊慌激活1", //5 //L"Panic Trigger1", - L"惊慌激活2", //L"Panic Trigger2", - L"惊慌激活3", //L"Panic Trigger3", - L"激活%d", //L"Trigger%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"状态信息第1行", //L"Status Info Line 1", - L"状态信息第2行", //L"Status Info Line 2", - L"状态信息第3行", //L"Status Info Line 3", - L"状态信息第4行", //L"Status Info Line 4", - L"状态信息第5行", //L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 //L"R", - L"G", //L"G", - L"B", //L"B", - - L"最亮", //L"Prime", - L"晚上", //L"Night", - L"全天", //L"24Hour", - - L"范围", //L"Radius", - - L"地下", //L"Underground", - L"光照等级", //L"Light Level", - - L"户外", //L"Outdoors", - L"地下室", //10 //L"Basement", - L"洞穴", //L"Caves", - - L"限制", //L"Restricted", - L"滚动ID", //L"Scroll ID", - - L"地点", //L"Destination", - L"分区", //15 //L"Sector", - L"地点", //L"Destination", - L"地下室层", //L"Bsmt. Level", - L"地点", //L"Dest.", - L"网格数", //L"GridNo", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"没有动作", //L"No action", - L"上锁", //L"Lock door", - L"解锁", //L"Unlock door", - L"开锁", //L"Open door", - L"关门", //L"Close door", - L"移动到某网格", //L"Move to gridno", - L"离开分区", //L"Leave sector", - L"进入分区", //L"Enter sector", - L"留在分区", //L"Stay in sector", - L"睡觉", //L"Sleep", - L"算了", //L"Ignore this!", -}; - -STR16 zDiffNames[5] = // NUM_DIFF_LVLS = 5 -{ - L"软弱", //L"Wimp", - L"简单", //L"Easy", - L"一般", //L"Average", - L"顽强", //L"Tough", - L"使用兴奋剂", //L"Steroid Users Only", -}; - -STR16 EditMercStat[12] = -{ - L"最大生命值", //L"Max Health", - L"治疗后生命值", //L"Cur Health", - L"力量", //L"Strength", - L"敏捷", //L"Agility", - L"灵巧", //L"Dexterity", - L"领导", //L"Charisma", - L"智慧", //L"Wisdom", - L"枪法", //L"Marksmanship", - L"爆破", //L"Explosives", - L"医疗", //L"Medical", - L"机械", //L"Scientific", - L"等级", //L"Exp Level", -}; - - -STR16 EditMercOrders[8] = -{ - L"站立", //L"Stationary", - L"守卫", //L"On Guard", - L"近距巡逻", //L"Close Patrol", - L"长距巡逻", //L"Far Patrol", - L"固定巡逻", //L"Point Patrol", - L"呼叫", //L"On Call", - L"寻找敌人", //L"Seek Enemy", - L"随机巡逻", //L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"防守", //L"Defensive", - L"大胆独行", //L"Brave Loner", - L"大胆协助", //L"Brave Buddy", - L"偷袭独行", //L"Cunning Loner", - L"偷袭协助", //L"Cunning Loner", - L"积极", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"佣兵名称:", //0 //L"Merc Name:", - L"指令:", //L"Orders:", - L"战斗倾向:", //L"Combat Attitude:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"佣兵颜色", //0 //L"Merc Colors", - L"完成", //L"Done", - - L"上一个佣兵站立指令", //L"Previous merc standing orders", - L"下一个佣兵站立指令", //L"Next merc standing orders", - - L"上一个佣兵战斗倾向", //L"Previous merc combat attitude", - L"下一个佣兵战斗倾向", //5 //L"Next merc combat attitude", - - L"降低佣兵士气", //L"Decrease merc stat", - L"提升佣兵士气", //L"Increase merc stat", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"随机", //0 //L"Random", - L"普通男性", //L"Reg Male", - L"高大男性", //L"Big Male", - L"肌肉男", //L"Stocky Male", - L"普通女性", //L"Reg Female", - L"NE坦克", //5 //L"NE Tank", - L"NW坦克", //L"NW Tank", - L"胖子市民", //L"Fat Civilian", - L"M市民", //L"M Civilian", - L"迷你裙", //L"Miniskirt", - L"F市民", //10 //L"F Civilian", - L"帽子小孩", //L"Kid w/ Hat", - L"悍马", //L"Humvee", - L"凯迪拉克", //L"Eldorado", - L"冰激凌车", //L"Icecream Truck", - L"吉普车", //15 //L"Jeep", - L"平民小孩", //L"Kid Civilian", - L"奶牛", //L"Domestic Cow", - L"瘸子", //L"Cripple", - L"无武器机器人", //L"Unarmed Robot", - L"异形虫卵", //20 //L"Larvae", - L"异形幼虫", //L"Infant", - L"幼年母异形", //L"Yng F Monster", - L"幼年公异形", //L"Yng M Monster", - L"成年母异形", //L"Adt F Monster", - L"成年公异形", //25 //L"Adt M Monster", - L"异形女王", //L"Queen Monster", - L"血猫", //L"Bloodcat", - L"悍马",//L"Humvee", -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=指令=-- ", //0 //L" --=ORDERS=-- ", - L"--=倾向=--", //L"--=ATTITUDE=--", - - L"对比", //L"RELATIVE", - L"属性", //L"ATTRIBUTES", - - L"对比", //L"RELATIVE", - L"装备", //L"EQUIPMENT", - - L"对比", //L"RELATIVE", - L"属性", //L"ATTRIBUTES", - - L"军队", //L"Army", - L"行政人员", //L"Admin", - L"精英", //10 //L"Elite", - - L"等级", //L"Exp. Level", - L"生命值", //L"Life", - L"最大生命值", //L"LifeMax", - L"枪法", //L"Marksmanship", - L"力量", //L"Strength", - L"敏捷", //L"Agility", - L"灵巧", //L"Dexterity", - L"智慧", //L"Wisdom", - L"领导", //L"Leadership", - L"爆破", //20 //L"Explosives", - L"医疗", //L"Medical", - L"机械", //L"Mechanical", - L"士气", //L"Morale", - - L"头发颜色:", //L"Hair color:", - L"皮肤颜色:", //L"Skin color:", - L"上衣颜色:", //L"Vest color:", - L"裤子颜色:", //L"Pant color:", - - L"随机", //L"RANDOM", - L"随机", //L"RANDOM", - L"随机", //30 //L"RANDOM", - L"随机", //L"RANDOM", - - L"输入档案ID并从中提取资料。", //L"By specifying a profile index, all of the information will be extracted from the profile ", - L"这样会覆盖手动编辑的资料,并且禁止您对所有设置进行修改。", //L"and override any values that you have edited. It will also disable the editing features ", - L"你仍然可以查看各种设置信息。按ENTER键开始读取指定的文件。", //L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", - L"你输入的数字是空的,会将设定文件清空。", //L"extract the number you have typed. A blank field will clear the profile. The current ", - L"现有设定文件的索引为 0-", //L"number of profiles range from 0 to ", - - L"当前档案: n/a", //L"Current Profile: n/a ", - L"当前档案: %s", //L"Current Profile: %s", - - L"站立", //L"STATIONARY", - L"呼叫", //40 //L"ON CALL", - L"守卫", //L"ON GUARD", - L"寻找敌人", //L"SEEK ENEMY", - L"近距巡逻", //L"CLOSE PATROL", - L"长距巡逻", //L"FAR PATROL", - L"固定巡逻", //L"POINT PATROL", - L"往返巡逻", //L"RND PT PATROL", - - L"行动", //L"Action", - L"时间", //L"Time", - L"V", //L"V", - L"网格号1", //50 //L"GridNo 1", - L"网格号2", //L"GridNo 2", - L"1)", //L"1)", - L"2)", //L"2)", - L"3)", //L"3)", - L"4)", //L"4)", - - L"上锁", //L"lock", - L"解锁", //L"unlock", - L"开门", //L"open", - L"关门", //L"close", - - L"点击门相邻的网格号可以%s。", //60 //L"Click on the gridno adjacent to the door that you wish to %s.", - L"点击网格号设定你%s后走到什么地方。", //L"Click on the gridno where you wish to move after you %s the door.", - L"点击网格号选择你想去的地方。", //L"Click on the gridno where you wish to move to.", - L"点击网格号选择你想睡觉的地方,角色唤醒后自动恢复原有姿势。", //L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", - L"点击ESC撤销你所输入的指令。", //L" Hit ESC to abort entering this line in the schedule.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"#%d号位置", //L"Slot #%d", - L"无固定点的巡逻指令", //L"Patrol orders with no waypoints", - L"未设定指令的路标", //L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"无动作", //L"No action", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"未选择放置品,放置品无法被复制。", //L"Placement not copied because no placement selected.", - L"放置品已复制。", //L"Placement copied.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"因为缓存中无资料,放置品粘贴失败。", //L"Placement not pasted as no placement is saved in buffer.", - L"放置品成功粘贴。", //L"Placement pasted.", - L"因为该组放置品已满,放置品粘贴失败。", //L"Placement not pasted as the maximum number of placements for this team has been reached.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"退出编辑器?", //L"Exit editor?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"确定要移除所有光源吗?", //0 //L"Are you sure you wish to remove all lights?", - L"确定要撤销所有修改吗?", //L"Are you sure you wish to reverse the schedules?", - L"确定要清除所有物品吗?", //L"Are you sure you wish to clear all of the schedules?", - - L"允许操作放置品", //L"Clicked Placement Enabled", - L"无法操作放置品", //L"Clicked Placement Disabled", - - L"开启房顶操作", //5 //L"Draw High Ground Enabled", - L"关闭房顶操作", //L"Draw High Ground Disabled", - - L"边界点数目: N=%d E=%d S=%d W=%d", //L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"开启随机放置物品", //L"Random Placement Enabled", - L"关闭随机放置物品", //L"Random Placement Disabled", - - L"隐藏树顶", //10 //L"Removing Treetops", - L"显示树顶", //L"Showing Treetops", - - L"重设地图水平", //L"World Raise Reset", - - L"地图水平还原", //L"World Raise Set Old", - L"地图水平设定", //L"World Raise Set", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"创建%S的雷达图", //0 //L"Creating radar map for %S", - - L"删除当前地图并新建一层地下室?", //L"Delete current map and start a new basement level?", - L"删除当前地图并新建一层洞穴?", //L"Delete current map and start a new cave level?", - L"删除当前地图并新建一层地面?", //L"Delete current map and start a new outdoor level?", - - L"清除地面区块?", //L" Wipe out ground textures? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 //L"HOME", - L"非环境光照开/关", //L"Toggle fake editor lighting ON/OFF", - - L"INSERT", //L"INSERT", - L"填充模式开/关", //L"Toggle fill mode ON/OFF", - - L"BKSPC", //L"BKSPC", - L"撤销", //L"Undo last change", - - L"DEL", //L"DEL", - L"快速删除光标指示物品", //L"Quick erase object under mouse cursor", - - L"ESC", //L"ESC", - L"退出编辑器", //L"Exit editor", - - L"PGUP/PGDN", //10 //L"PGUP/PGDN", - L"切换要复制物品", //L"Change object to be pasted", - - L"F1", //L"F1", - L"打开这个帮助栏", //L"This help screen", - - L"F10", //L"F10", - L"保存当前地图", //L"Save current map", - - L"F11", //L"F11", - L"读取到当前地图", //L"Load map as current", - - L"+/-", //L"+/-", - L"增减0.01的阴影等级", //L"Change shadow darkness by .01", - - L"SHFT +/-", //20 //L"SHFT +/-", - L"增减0.05的阴影等级", //L"Change shadow darkness by .05", - - L"0 - 9", //L"0 - 9", - L"改变地图/区块文件名", //L"Change map/tileset filename", - - L"b", //L"b", - L"改变刷子大小", //L"Change brush size", - - L"d", //L"d", - L"绘制废墟", //L"Draw debris", - - L"o", //L"o", - L"绘制障碍物", //L"Draw obstacle", - - L"r", //30 //L"r", - L"绘制石块", //L"Draw rocks", - - L"t", //L"t", - L"显示树顶开/关", //L"Toggle trees display ON/OFF", - - L"g", //L"g", - L"绘制地面区块", //L"Draw ground textures", - - L"w", //L"w", - L"绘制墙面", //L"Draw building walls", - - L"e", //L"e", - L"擦除模式开/关", //L"Toggle erase mode ON/OFF", - - L"h", //40 //L"h", - L"显示屋顶开/关", //L"Toggle roofs ON/OFF", -}; - -STR16 pAutoLoadMapText[] = -{ - L"地图数据崩溃,不要退出或保存,请保存崩溃前的地图和最后一次操作并反馈此问题。", //L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"任务数据崩溃,不要退出或保存,请保存崩溃前的地图和最后一次操作并反馈此问题。", //L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -STR16 pShowHighGroundText[] = -{ - L"显示高地标记", //L"Showing High Ground Markers", - L"隐藏高地标记", //L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = -{ - L"Klaxon Mine", - L"Flare Mine", - L"Teargas Explosion", - L"Stun Explosion", - L"Smoke Explosion", - L"Mustard Gas", - L"Land Mine", - L"Open Door", - L"Close Door", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Small Explosion", - L"Medium Explosion", - L"Large Explosion", - L"Toggle Door", - L"Toggle Action1s", - L"Toggle Action2s", - L"Toggle Action3s", - L"Toggle Action4s", - L"Enter Brothel", - L"Exit Brothel", - L"Kingpin Alarm", - L"Sex with Prostitute", - L"Reveal Room", - L"Local Alarm", - L"Global Alarm", - L"Klaxon Sound", - L"Unlock door", - L"Toggle lock", - L"Untrap door", - L"Tog pressure items", - L"Museum alarm", - L"Bloodcat alarm", - L"Big teargas", -}; -*/ -STR16 pUpdateItemStatsPanelText[] = -{ - L"切换旗子开关", //0 //L"Toggle hide flag", - L"为选择物品。", //L"No item selected.", - L"可用空位", //L"Slot available for", - L"随机生成。", //L"Random generation.", - L"钥匙不可编辑。", //L"Keys not editable.", - L"此人档案ID", //L"ProfileID of owner", - L"物品未分类。", //L"Item class not implemented.", - L"空位锁定为空。", //L"Slot locked as empty.", - L"状态", //L"Status", - L"回合", //L"Rounds", - L"陷阱等级", //10 //L"Trap Level", - L"数量", //L"Quantity", - L"陷阱等级", //L"Trap Level", - L"状态", //L"Status", - L"陷阱等级", //L"Trap Level", - L"状态", //L"Status", - L"数量", //L"Quantity", - L"陷阱等级", //L"Trap Level", - L"美元", //L"Dollars", - L"状态", //L"Status", - L"陷阱等级", //20 //L"Trap Level", - L"陷阱等级", //L"Trap Level", - L"忍耐", //L"Tolerance", - L"激活警报", //L"Alarm Trigger", - L"放弃机会", //L"Exist Chance", - L"B", //L"B", - L"R", //L"R", - L"S", //L"S", -}; - -STR16 pSetupGameTypeFlagsText[] = -{ - L"物品在现实和科幻模式均有效", //0 //L"Item appears in both Sci-Fi and Realistic modes", - L"物品只在现实模式出现", //L"Item appears in Realistic mode only", - L"物品只在科幻模式出现", //L"Item appears in Sci-Fi mode only", -}; - -STR16 pSetupGunGUIText[] = -{ - L"消音器", //0 //L"SILENCER", - L"狙击镜", //L"SNIPERSCOPE", - L"激光镜", //L"LASERSCOPE", - L"两脚架", //L"BIPOD", - L"鸭嘴", //L"DUCKBILL", - L"榴弹发射器", //5 //L"G-LAUNCHER", -}; - -STR16 pSetupArmourGUIText[] = -{ - L"陶瓷板", //0 //L"CERAMIC PLATES", -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"引爆器", //L"DETONATOR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"如果敌人已经发现你,他们就不会在惊慌触发的情况下再次激活警报器。", //L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"确定", //0 //L"Okay", - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"读取", - L"保存", - L"更新", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"区块: %s", //0 //L"Tileset: %s", - L"版本信息: 总结: 1.%02d,地图: %1.2f/%02d", //L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", - L"物品总数: %d", //L"Number of items: %d", - L"光照数量: %d", //L"Number of lights: %d", - L"降落点数量: %d", //L"Number of entry points: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"房间数量: %d", //L"Number of rooms: %d", - L"地图总人口: %d", //L"Total map population: %d", - L"敌人数量: %d", //L"Enemies: %d", - L"行政人员: %d", //L"Admins: %d", - - L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", - L"军队: %d", //L"Troops: %d", - - L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", - L"精英: %d", - - L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", - L"中立: %d", //20 //L"Civilians: %d", - - L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", - - L"人类: %d", //L"Humans: %d", - L"奶牛: %d", //L"Cows: %d", - L"血猫: %d", //L"Bloodcats: %d", - - L"生物: %d", //L"Creatures: %d", - - L"怪物: %d", //L"Monsters: %d", - L"血猫: %d", //L"Bloodcats: %d", - - L"锁和/或陷阱的数量: %d", //L"Number of locked and/or trapped doors: %d", - L"锁: %d", //L"Locked: %d", - L"陷阱: %d", //30 //L"Trapped: %d", - L"锁或陷阱: %d", //L"Locked & Trapped: %d", - - L"有任务的市民: %d", //L"Civilians with schedules: %d", - - L"网格目的地安排超过了4个。", //L"Too many exit grid destinations (more than 4)...", - L"离开网格:%d(%d是最终目的地)。", //L"ExitGrids: %d (%d with a long distance destination)", - L"离开网格:没有。", //L"ExitGrids: none", - L"离开网格:1 从%d离开网格。", //L"ExitGrids: 1 destination using %d exitgrids", - L"离开网格:2 -- 1) Qty: %d, 2) Qty: %d。", //L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", - L"离开网格:3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d。", //L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"离开网格:3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d。", //L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"敌军相对属性:%d糟糕,%d不良,%d一般,%d良好,%d优秀(总计%+d)。", //40 //L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"敌军相对装备:%d糟糕,%d不良,%d一般,%d良好,%d优秀(总计%+d)。", //L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"%d设置了路标,但是没有分配任何巡逻任务。", //L"%d placements have patrol orders without any waypoints defined.", - L"%d设置了路标,但是没有分配任何巡逻任务。", //L"%d placements have waypoints, but without any patrol orders.", - L"%d网格的房间数存在疑问,请核定。", //L"%d gridnos have questionable room numbers. Please validate.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"敌兵", //L"Enemy", - - L"太多物品无法完全显示。", //L"TOO MANY ITEMS TO DISPLAY!", - - L"惊慌1", //L"Panic1", - L"惊慌2", //L"Panic2", - L"惊慌3", //L"Panic3", - L"正常1", //L"Norm1", - L"正常2", //L"Norm2", - L"正常3", //L"Norm3", - L"正常4", //10 //L"Norm1", - L"压力行为", //L"Pressure Actions", - - L"太多物品无法完全完全显示。", //L"TOO MANY ITEMS TO DISPLAY!", - - L"优先敌兵掉落物品", //L"PRIORITY ENEMY DROPPED ITEMS", - L"无", //L"None", - - L"太多物品无法完全显示!", //L"TOO MANY ITEMS TO DISPLAY!", - L"普通敌兵掉落物品", //L"NORMAL ENEMY DROPPED ITEMS", - L"太多物品无法完全显示!", //L"TOO MANY ITEMS TO DISPLAY!", - L"无", //L"None", - L"太多物品无法完全显示!", //L"TOO MANY ITEMS TO DISPLAY!", - L"错误:无法读取物品,未知原因。", //20 //L"ERROR: Can't load the items for this map. Reason unknown.", -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"战役编辑器 -- %s版本1.%02d", //0 //L"CAMPAIGN EDITOR -- %s Version 1.%02d", - L"(未读取地图)。", //L"(NO MAP LOADED).", - L"你现在有%d个过期地图。", //L"You currently have %d outdated maps.", - L"需要更新的地图越多,需要的时间也越多。", //L"The more maps that need to be updated, the longer it takes. It'll take ", - L"比如一个P200MMX需要大概4分钟时间处理100个地图,", //L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"所以所需时间根据电脑硬件条件而定。", //L"depending on your computer, it may vary.", - L"你确定要重新处理全部地图的信息吗(是/否)?", //L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"目前没有选择分区。", //L"There is no sector currently selected.", - - L"输入了一个不符合编辑器规范的临时文件。。。", //L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"在进入编辑器之前,你必须读取已有地图或者", //L"You need to either load an existing map or create a new map before being", - L"创建新地图,否则无法退出(ESC或Alt+X)。", //10 //L"able to enter the editor, or you can quit (ESC or Alt+x).", - - L",地面", //L", ground level", - L",地下1层", //L", underground level 1", - L",地下2层", //L", underground level 1", - L",地下3层", //L", underground level 1", - L",额外G层", //L", alternate G level", - L",额外B1层", //L", alternate G level", - L",额外B2层", //L", alternate B2 level", - L",额外B3层", //L", alternate B2 level", - - L"物品细节--区域%s", //L"ITEM DETAILS -- sector %s", - L"%s区域总结信息:", //20 //L"Summary Information for sector %s:", - - L"%s区域总结信息", //L"Summary Information for sector %s", - L"不存在。", //L"does not exist.", - - L"%s区域总结信息", //L"Summary Information for sector %s", - L"不存在。", //L"does not exist.", - - L"没有%s区域可显示信息。", //L"No information exists for sector %s.", - - L"没有%s区域可显示信息。", //L"No information exists for sector %s.", - - L"文件: %s", //L"FILE: %s", - - L"文件: %s", //L"FILE: %s", - - L"覆盖只读文件", //L"Override READONLY", - L"覆盖文件", //30 //L"Overwrite File", - - L"你现在没有总结文件,创建一个总结文件,", //L"You currently have no summary data. By creating one, you will be able to keep track", - L"你就可以记录你编辑和保存地图的信息。", //L"of information pertaining to all of the sectors you edit and save. The creation process", - L"这个过程将分析你在\\MAPS文件夹下的所有文件并建立一个新的。", //L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"根据有效地图数量你可能需要几分钟的时间。", //L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"以合适的约定模式入a1.dat - p16.dat命名的文件为有效文件。", //L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"地底模式地图以在dat前加_b1 - _b3命名(例如a9_b1.dat)。", //L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"你确定(是/否)。", //L"Do you wish to do this now (y/n)?", - - L"没有总结信息,拒绝创建。", //L"No summary info. Creation denied.", - - L"网格", //L"Grid", - L"已编辑", //40 //L"Progress", - L"使用别的地图", //L"Use Alternate Maps", - - L"总结", //L"Summary", - L"物品", //L"Items", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"分析地图:%s...", //L"Analyzing map: %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"读取地图:%s", //L"Loading map: %s", -}; - -STR16 pReportErrorText[] = -{ - L"跳过更新%s,可能由于区块冲突。", //L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"生成地图信息", //L"Generating map information", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"生成地图总结", //L"Generating map summary", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"重大版本更新", //L"MAJOR VERSION UPDATE", - L"%d个地图需要重大版本更新。", //L"There are %d maps requiring a major version update.", - L"更新所有过期地图", //L"Updating all outdated maps", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d]来自默认区块%s(%d,%S)", //L"%S[%d] from default tileset %s (%d, %S)", - L"文件:%S,副版本:%d(%d,%S)", //L"File: %S, subindex: %d (%d, %S)", - L"当前分区:%s", //L"Tileset: %s", -}; - -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"确认选择 (|E|n|t|e|r)", - L"取消选择 (|E|s|c)\n清除选择 (|S|p|a|c|e)", - L"窗口上卷 (|U|p)", - L"窗口下卷 (|D|o|w|n)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"小", //L"Small", - L"中", //L"Medium", - L"大", //L"Large", - L"超大", //L"XLarge", - L"宽xx", //L"Width: xx", - L"区域", //L"Area", - }; - -//--- - -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"页 1/2", //0 - L"页 2/2", - - L"页 1/3", - L"页 2/3", - L"页 3/3", - - L"页 1/1", //5 -}; - -// by Jazz: -CHAR16 zGrod[][500] = -{ - L"机器人", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 制作团队", - L"@T,C144,R134,{;代码", - L"@T,C144,R134,{;图像和音效", - L"@};(其他MOD作者!)", - L"@T,C144,R134,{;物品", - L"@T,C144,R134,{;其他参与者", - L"@};(所有其他参与制作和反馈论坛成员!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L".38 cal", -// L"9mm", -// L".45 cal", -// L".357 cal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm NATO", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Rocket", -// L"", // dart -// L"", // flame -// L".50 cal", // barrett -// L"9mm Hvy", // Val silent -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L".38 cal", -// L"9mm", -// L".45 cal", -// L".357 cal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm N.", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Rocket", -// L"dart", // dart -// L"", // flamethrower -// L".50 cal", // barrett -// L"9mm Hvy", // Val silent -//}; - - -CHAR16 WeaponType[MAXITEMS][30] = -{ - L"其它", - L"手枪", - L"自动手枪", - L"冲锋枪", - L"步枪", - L"狙击步枪", - L"突击步枪", - L"轻机枪", - L"霰弹枪", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"玩家回合", - L"敌军回合", - L"异形回合", - L"民兵回合", - L"平民回合", - L"玩家部署", - L"#1 客户端", - L"#2 客户端", - L"#3 客户端", - L"#4 客户端", - -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s 被射中了头部,并且失去了1点智慧!", - L"%s 被射中了肩部,并且失去了1点灵巧!", - L"%s 被射中了胸膛,并且失去了1点力量!", - L"%s 被射中了腿部,并且失去了1点敏捷!", - L"%s 被射中了头部,并且失去了%d点智慧!", - L"%s 被射中了肩部,并且失去了%d点灵巧!", - L"%s 被射中了胸膛,并且失去了%d点力量!", - L"%s 被射中了腿部,并且失去了%d点敏捷!", - L"中断!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"你的援军到达了!", - - // In the following four lines, all %s's are merc names - - L"%s 装填弹药。", - L"%s 没有足够的行动点数!", - L"%s 正在进行包扎。(按任意键取消)", - L"%s和%s 正在进行包扎。(按任意键取消)", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"耐用", - L"不耐用", - L"容易修复", - L"不易修复", - L"杀伤力高", - L"杀伤力低", - L"射击快", - L"射击慢", - L"射程远", - L"射程近", - L"轻盈", - L"笨重", - L"小巧", - L"高速连发", - L"无法点射", - L"大容量弹匣", - L"小容量弹匣", - - // In the following two lines, all %s's are merc names - - L"%s 的伪装失效了。", - L"%s 的伪装被洗掉了。", - - // The first %s is a merc name and the second %s is an item name - - L"副手武器没有弹药了!",// L"Second weapon is out of ammo!", - L"%s 偷到了 %s。", // L"%s has stolen the %s.", - - // The %s is a merc name - - L"%s的武器不能扫射。", // L"%s's weapon can't burst fire.", - - L"你已经装上了该附件。",// L"You've already got one of those attached.", - L"组合物品?", // L"Merge items?", - - // Both %s's are item names - - L"你不能把%s和%s组合在一起。", - - L"无", - L"退出子弹", - L"附件", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and you gas mask at the same time. - L"你不能同时使用%s和%s。", - - L"请把光标选中的物品放到另一物品的任意附件格中,这样就可能合成新物品。", - L"请把光标选中的物品放到另一物品的任意附件格中,这样就可能合成新物品。(但是这一次,该物品不相容。)", - L"该分区的敌军尚未被肃清!", - L"你还得给%s%s", - L"%s 被射中了头部!", - L"放弃战斗?", - L"这个组合是永久性的。你确认要这样做吗?", - L"%s 感觉精力充沛!", - L"%s 踩到了大理石珠子,滑倒了!", - L"%s 没能从敌人手里抢到 %s!", - L"%s 修复了 %s。", - L"中断 ", - L"投降?", - L"此人拒绝你的包扎。", - L"这不可能!", - L"要搭乘Skyrider的直升飞机, 你得先把佣兵分配到交通工具/直升飞机。", - L"%s的时间只够给一支枪装填弹药", - L"血猫的回合", - L"全自动", - L"无全自动", - L"精确", - L"不精确", - L"无半自动", - L"敌人已经没有装备可偷了!", - L"敌人手中没有装备!", - - L"%s 的沙漠迷彩油已经耗竭失效了。", - L"%s 的沙漠迷彩油已经冲刷失效了。", - - L"%s 的丛林迷彩油已经耗竭失效了。", - L"%s 的丛林迷彩油已经冲刷失效了。", - - L"%s 的城市迷彩油已经耗竭失效了。", - L"%s 的城市迷彩油已经冲刷失效了。", - - L"%s 的雪地迷彩油已经耗竭失效了。", - L"%s 的雪地迷彩油已经冲刷失效了。", - - L"你不能把%s添加到这个附件槽。", - L"%s不能被添加到任何附件槽。", - L"这个口袋装不下了。", //L"There's not enough space for this pocket.", - - L"%s 竭尽可能地修理了 %s。", - L"%s 竭尽可能地修理了 %s的%s。", - - L"%s 清理了 %s。", //L"%s has cleaned the %s.", - L"%s 清理了 %s的%s。", //L"%s has cleaned %s's %s.", - - L"此时无法分配任务", //L"Assignment not possible at the moment", - L"没有能够训练的民兵。", //L"No militia that can be drilled present.", - - L"%s 已经完全的探索了 %s。", //L"%s has fully explored %s." -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracona", - L"Traconian", -#else - L"Arulco", - L"Arulcan", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"暂停", - L"普通", - L"5分钟", - L"30分钟", - L"60分钟", - L"6小时", -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"第1小队", - L"第2小队", - L"第3小队", - L"第4小队", - L"第5小队", - L"第6小队", - L"第7小队", - L"第8小队", - L"第9小队", - L"第10小队", - L"第11小队", - L"第12小队", - L"第13小队", - L"第14小队", - L"第15小队", - L"第16小队", - L"第17小队", - L"第18小队", - L"第19小队", - L"第20小队", - L"编队",// on active duty - L"医生",// administering medical aid - L"病人", // getting medical aid - L"交通工具", // in a vehicle - L"在途中",// in transit - abbreviated form - L"修理", // repairing - L"无线电扫描", // scanning for nearby patrols - L"锻炼", // training themselves - L"民兵", // training a town to revolt - L"游击队", //L"M.Militia", //training moving militia units //ham3.6 - L"教练", // training a teammate - L"学员", // being trained by someone else - L"搬运物品", // get items - L"兼职", // L"Staff", // operating a strategic facility //ham3.6 - L"用餐", // eating at a facility (cantina etc.) - L"休息", //L"Rest",// Resting at a facility //ham3.6 - L"审讯", // L"Prison", - L"死亡", // dead - L"虚脱", // abbreviation for incapacitated - L"战俘", // Prisoner of war - captured - L"伤员", // patient in a hospital - L"空车", // Vehicle is empty - L"告发", // facility: undercover prisoner (snitch) - L"造谣", // facility: spread propaganda - L"造谣", // facility: spread propaganda (globally) - L"谣言", // facility: gather information - L"造谣", // spread propaganda - L"谣言", // gather information - L"指挥民兵", //L"Command", militia movement orders - L"诊断", // disease diagnosis - L"治疗疾病", //L"Treat D.", treat disease among the population - L"医生",// administering medical aid - L"病人", // getting medical aid - L"修理", // repairing - L"筑防", //L"Fortify", build structures according to external layout - L"培训工人",//L"Train W.", - L"潜伏", //L"Hide", - L"侦查", //L"GetIntel", - L"医疗民兵", //L"DoctorM.", - L"训练民兵", //L"DMilitia", - L"掩埋尸体", //L"Burial", - L"管理", //L"Admin", - L"探索", //L"Explore" - L"事件", //L"Event", rftr: merc is on a mini event - L"任务", //L"Mission", rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"民兵", // the title of the militia box - L"未分配的民兵", //the number of unassigned militia troops - L"本地区有敌军存在,你无法重新分配民兵!", - L"一些民兵未分派到防区,要不要将它们遣散?", // L"Some militia were not assigned to a sector. Would you like to disband them?", // HEADROCK HAM 3.6 -}; - - -STR16 pMilitiaButtonString[] = -{ - L"自动", // auto place the militia troops for the player - L"完成", // done placing militia troops - L"遣散", // HEADROCK HAM 3.6: Disband militia - L"全部重新分配", // move all milita troops to unassigned pool -}; - -STR16 pConditionStrings[] = -{ - L"极好", //the state of a soldier .. excellent health - L"良好", // good health - L"普通", // fair health - L"受伤", // wounded health - L"疲劳", // tired - L"失血", // bleeding to death - L"昏迷", // knocked out - L"垂死", // near death - L"死亡", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"编队", // set merc on active duty - L"病人",// set as a patient to receive medical aid - L"交通工具", // tell merc to enter vehicle - L"无护送", // let the escorted character go off on their own - L"取消", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"第1小队", - L"第2小队", - L"第3小队", - L"第4小队", - L"第5小队", - L"第6小队", - L"第7小队", - L"第8小队", - L"第9小队", - L"第10小队", - L"第11小队", - L"第12小队", - L"第13小队", - L"第14小队", - L"第15小队", - L"第16小队", - L"第17小队", - L"第18小队", - L"第19小队", - L"第20小队", - L"编队", - L"医生", - L"病人", - L"交通工具", - L"在途中", - L"修理", - L"无线电扫描", // radio scan - L"锻炼", - L"训练民兵", - L"训练游击队", - L"教练", - L"学员", - L"搬运物品", // get items - L"兼职", - L"用餐", // eating at a facility (cantina etc.) - L"休养", - L"审讯", // L"Interrogate prisoners", - L"休息", - L"虚脱", - L"战俘", - L"医院", - L"空车", // Vehicle is empty - L"秘密告发", // facility: undercover prisoner (snitch) - L"派发传单", // facility: spread propaganda - L"派发传单", // facility: spread propaganda (globally) - L"搜集谣言", // facility: gather rumours - L"派发传单", // spread propaganda - L"搜集谣言", // gather information - L"指挥民兵", //L"Commanding Militia" militia movement orders - L"诊断", // disease diagnosis - L"治疗人员的疾病", // treat disease among the population - L"医生", - L"病人", - L"修理", - L"筑防区域", //L"Fortify sector", build structures according to external layout - L"培训工人",//L"Train workers", - L"变装潜伏", //L"Hide while disguised", - L"变装侦查", //L"Get intel while disguised", - L"医疗受伤的民兵", //L"Doctor wounded militia", - L"训练现有的民兵", //L"Drill existing militia", - L"掩埋尸体", //L"Bury corpses", - L"管理人员", //L"Administration", - L"探索事项", //L"Exploration", -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"第1小队", - L"第2小队", - L"第3小队", - L"第4小队", - L"第5小队", - L"第6小队", - L"第7小队", - L"第8小队", - L"第9小队", - L"第10小队", - L"第11小队", - L"第12小队", - L"第13小队", - L"第14小队", - L"第15小队", - L"第16小队", - L"第17小队", - L"第18小队", - L"第19小队", - L"第20小队", - L"编队", - L"医生", - L"病人", - L"交通工具", - L"在途中", - L"修理", - L"无线电扫描", // radio scan - L"练习", - L"训练民兵", - L"训练游击队", //L"Train Mobiles", - L"训练队友", - L"学员", - L"搬运物品", // get items - L"兼职", //L"Staff Facility", - L"休养", //L"Rest at Facility", - L"审讯俘虏", // L"Interrogate prisoners", - L"死亡", - L"虚脱", - L"战俘", - L"医院",// patient in a hospital - L"空车", // Vehicle is empty - L"秘密告发", // facility: undercover prisoner (snitch) - L"派发传单", // facility: spread propaganda - L"派发传单", // facility: spread propaganda (globally) - L"搜集谣言", // facility: gather rumours - L"派发传单", // spread propaganda - L"搜集谣言", // gather information - L"指挥民兵", // militia movement orders - L"诊断", // disease diagnosis - L"治疗人员的疾病", // treat disease among the population - L"医生", - L"病人", - L"修理", - L"筑防区域", // L"Fortify sector", build structures according to external layout - L"培训工人",//L"Train workers", - L"变装潜伏", //L"Hide while disguised", - L"变装侦查", //L"Get intel while disguised", - L"医疗受伤的民兵", //L"Doctor wounded militia", - L"训练现有的民兵", //L"Drill existing militia", - L"掩埋尸体", //L"Bury corpses", - L"管理人员", //L"Administration", - L"探索事项", //L"Exploration", -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"合同选项: ", - L"", // a blank line, required - L"雇佣一日",// offer merc a one day contract extension - L"雇佣一周", // 1 week - L"雇佣两周", // 2 week - L"解雇",// end merc's contract - L"取消", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"囚禁", //an acronym for Prisoner of War - L" ?? ", -}; - -STR16 pLongAttributeStrings[] = -{ - L"力量", - L"灵巧", - L"敏捷", - L"智慧", - L"枪法", - L"医疗", - L"机械", - L"领导", - L"爆破", - L"级别", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"护甲", // the armor rating of the merc - L"负重", // the weight the merc is carrying - L"伪装", // the merc's camouflage rating - L"伪装", - L"防护", -}; - -STR16 pShortAttributeStrings[] = -{ - L"敏捷", // the abbreviated version of : agility - L"灵巧", // dexterity - L"力量", // strength - L"领导", // leadership - L"智慧", // wisdom - L"级别", // experience level - L"枪法", // marksmanship skill - L"机械", // mechanical skill - L"爆破", // explosive skill - L"医疗", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"任务", // the mercs current assignment - L"合同",// the contract info about the merc - L"生命", // the health level of the current merc - L"士气", // the morale of the current merc - L"状态", // the condition of the current vehicle - L"油量", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"锻炼", // tell merc to train self - L"民兵",// tell merc to train town - L"教练", // tell merc to act as trainer - L"学员", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"防备模式: ", // the allowable rate of fire for a merc who is guarding - L" 主动射击", // the merc can be aggressive in their choice of fire rates - L" 节约弹药", // conserve ammo - L" 自卫射击", // fire only when the merc needs to - L"其它选择: ", // other options available to merc - L" 允许撤退", // merc can retreat - L" 自动隐蔽", // merc is allowed to seek cover - L" 自动掩护", // merc can assist teammates - L"完成", // done with this menu - L"取消", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"防备模式:", - L" *主动射击*", - L" *节约弹药*", - L" *自卫射击*", - L"其它选择: ", - L" *允许撤退*", - L" *自动隐蔽*", - L" *自动掩护*", - L"完成", - L"取消", -}; - -STR16 pAssignMenuStrings[] = -{ - L"编队", - L"医生", - L"疾病", // merc is a doctor doing diagnosis - L"病人", - L"交通工具", - L"修理", - L"无线电扫描", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"告发", // anv: snitch actions - L"训练", - L"民兵", //L"Militia", all things militia - L"搬运物品", // get items - L"筑防", //L"Fortify", fortify sector - L"情报", //L"Intel", covert assignments - L"管理", //L"Administer", - L"探索", //L"Explore", - L"设施", // the merc is using/staffing a facility //ham3.6 - L"取消", -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"自动进攻", // set militia to aggresive - L"原地坚守", // set militia to stationary - L"撤退", // retreat militia - L"向我靠拢", - L"卧倒", - L"蹲下", // L"Crouch", - L"隐蔽", - L"移动到这里", //L"Move to", - L"全体: 自动进攻", - L"全体: 原地坚守", - L"全体: 撤退", - L"全体: 向我靠拢", - L"全体: 分散", - L"全体: 卧倒", - L"全体: 蹲下", // L"All: Crouch", - L"全体: 隐蔽", - //L"All: Find items", - L"取消", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = -{ - // radio operator - L"火炮攻击", //L"Artillery Strike", - L"通讯干扰", //L"Jam communications", - L"扫描频率", //L"Scan frequencies", - L"监听", //L"Eavesdrop", - L"呼叫支援", //L"Call reinforcements", - L"关闭接收器", //L"Switch off radio set", - L"无线电:激活所有被策反的敌军", //L"Radio: Activate all turncoats", - - // spy - L"潜伏", //L"Hide assignment", - L"侦查", //L"Get Intel assignment", - L"招募被策反的敌军", //L"Recruit turncoat", - L"激活被策反的敌军", // L"Activate turncoat", - L"激活所有被策反的敌军", // L"Activate all turncoats", - - // disguise - L"伪装", //L"Disguise", - L"解除伪装", //L"Remove disguise", - L"测试伪装", //L"Test disguise", - L"脱掉伪装服", //L"Remove clothes", - - // various - L"侦查员", - L"聚焦", //L"Focus", - L"拖拽", //L"Drag", - L"填装水壶", //L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"命令某分区发动火炮攻击。。。", //L"Order an artillery strike from sector...", - L"所有通讯频率加入空白噪音,阻断正常通讯。", //L"Fill all radio frequencies with white noise, making communications impossible.", - L"查找干扰信号源。", //L"Scan for jamming signals.", - L"使用无线电设备持续监听敌军动向。", //L"Use your radio equipment to continously listen for enemy movement.", - L"从邻区呼叫支援。", //L"Call in reinforcements from neighbouring sectors.", - L"关闭无线电设备。", //L"Turn off radio set.", - L"命令战区内所有已被策反的敌军叛变并加入你的部队。", //L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"任务:潜伏至民众中。", //L"Assignment: hide among the population.", - L"任务:潜伏并侦查。", //L"Assignment: hide among the population and gather intel.", - L"尝试策反敌军。", //L"Try to turn an enemy into a turncoat.", - L"命令所有已被策反的敌军叛变并加入你的部队。", // L"Order previously turned soldier to betray their comrades and join you.", - L"命令战区内所有已被策反的敌军叛变并加入你的部队。", // L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"试着用现有的衣服来伪装成平民或敌军。", //L"Try to disguise with the merc's current clothes.", - L"解除伪装,但伪装服仍然穿着。", //L"Remove the disguise, but clothes remain worn.", - L"测试伪装是否有效。", //L"Test the viability of the disguise.", - L"脱掉伪装的衣服。", //L"Remove any extra clothes.", - - // various - L"侦查一个区域,友军狙击手在瞄准你所观察到的目标时会增加命中率。", - L"增加标记区域内中断几率(标记区域外减少中断几率)", //L"Increase interrupt modifier (malus outside of area)", - L"移动时拖动物品,人或尸体。", //L"Drag a person, corpse or structure while you move.", - L"用这个区域的水源填装小队所有的水壶。", //L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"需要:\n", //L"Requires:\n", - L" - %d AP\n", - L" - %s\n", - L" - %s或更高\n", //L" - %s or higher\n", - L" - %s或更高,或\n", //L" - %s or higher or\n", - L" - %d分钟后就绪\n", //L" - %d minutes to be ready\n", - L" - 邻区的迫击炮位置\n", //L" - mortar positions in neighbouring sectors\n", - L" - %s|或%s|和%s或%s或更高\n", //L" - %s |o|r %s |a|n|d %s or %s or higher\n", - L" - 恶魔的财产\n", //L" - posession by a demon" - L" - 与枪有关的技能(如自动武器)\n", //L" - a gun-related trait\n", - L" - 举起枪(瞄准状态)\n", //L" - aimed gun\n", - L" - 在佣兵旁边有物品,人或尸体\n", //L" - prone person, corpse or structure next to merc\n", - L" - 下蹲姿势\n", //L" - crouched position\n", - L" - 清空主手装备\n", //L" - free main hand\n", - L" - 潜伏技能\n", //L" - covert trait\n", - L" - 敌军占领区域\n", //L" - enemy occupied sector\n", - L" - 单独佣兵\n", //L" - single merc\n", - L" - 没有警报\n", //L" - no alarm raised\n", - L" - 伪装成平民或敌军\n", //L" - civilian or soldier disguise\n", - L" - 正被策反的敌军\n", //L" - being our turn\n", - L" - 已被策反的敌军\n", //L" - turned enemy soldier\n", - L" - 敌军士兵\n", //L" - enemy soldier\n", - L" - 显露伪装\n", //L" - surface sector\n", - L" - 没有被怀疑\n", //L" - not being under suspicion\n", - L" - 没有伪装\n", //L" - not disguised\n", - L" - 不在战斗中\n", //L" - not in combat\n", - L" - 我方控制区\n", //L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = -{ - L"民兵", - L"其他队伍", - L"取消", - L"%d 民兵", - L"所有民兵", - - L"更多", - L"尸体: %s", //L"Corpse: %s", -}; - -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"团队情报员", - L"城镇任务", - L"取消", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"和队友讨论告发行为。", - L"从该分区获取任务。", - L"取消", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"报告队伍怨言", - L"不报告", - L"阻止失常行为", - L"忽略失常行为", - L"取消", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"向指挥员报道从其他队员口中听到的怨言。", - L"什么都不报道。", - L"试图阻止队员浪费时间或小偷小摸。", - L"不关心别的佣兵在做什么。", - L"取消", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"派发传单", - L"搜集谣言", - L"取消", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"赞赏佣兵的行动,增加城镇忠诚度并避免糟糕的新闻。", - L"留心关于敌军动向的谣言。", - L"", -}; - -STR16 pPrisonerMenuStrings[] = -{ - L"审问行政人员", //L"Interrogate admins", - L"审问普通士兵", //L"Interrogate troops", - L"审问精英士兵", //L"Interrogate elites", - L"审问军官", //L"Interrogate officers", - L"审问上将", //L"Interrogate generals", - L"审问平民", //L"Interrogate civilians", - L"取消", //L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"行政人员很容易审问,不过通常只会给你个糟糕的结果", //L"Administrators are easy to process, but give only poor results", - L"普通士兵一般不会有太多有价值的情报。", //L"Regular troops are common and don't give you high rewards.", - L"精英士兵如果投靠你,他们会成为老兵。", //L"If elite troops defect to you, they can become veteran militia.", - L"审问敌方的军官,他们会指引你找到敌方的将军。", //L"Interrogating enemy officers can lead you to find enemy generals.", - L"上将是不会加入你的,但是他们会出高额的赎金。", //L"Generals cannot join your militia, but lead to high ransoms.", - L"平民一般不太会抵抗你,他们是最好的二流军队。", // L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"取消", //L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s告发者的身份暴露,但是及时注意到并成功逃脱。", - L"%s告发者的身份暴露,但是稳定了场面并成功逃脱。", - L"%s告发者的身份暴露,但是逃过了刺杀。", - L"%s告发者的身份暴露,但是狱警阻止了暴力事件的发生。", - - L"%s告发者的身份暴露,几乎被其他犯人淹死,最后被狱警救下。", - L"%s告发者的身份暴露,几乎被其他犯人打死,最后被狱警救下。", - L"%s告发者的身份暴露,几乎被刺死,最后被狱警救下。", - L"%s告发者的身份暴露,几乎被勒死,最后被狱警救下。", - - L"%s告发者的身份暴露,被其他犯人按在马桶内淹死。", - L"%s告发者的身份暴露,被其他犯人打死。", - L"%s告发者的身份暴露,被其他犯人用刀刺死。", - L"%s告发者的身份暴露,被其他犯人勒死。", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s听到了在%d分区有敌军活动的谣言。", - -}; - -STR16 pRemoveMercStrings[] = -{ - L"移除佣兵", // remove dead merc from current team - L"取消", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"生命", //"Health", - L"敏捷", //"Agility", - L"灵巧", //"Dexterity", - L"力量", //"Strength", - L"领导", //"Leadership", - L"枪法", //"Marksmanship", - L"机械", //"Mechanical", - L"爆破", //"Explosives", - L"医疗", //"Medical", - L"取消", //"Cancel", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"锻炼", // train yourself - L"培训工人", //L"Train workers", - L"教练", // train your teammates - L"学员", // be trained by an instructor - L"取消", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"第1小队", - L"第2小队", - L"第3小队", - L"第4小队", - L"第5小队", - L"第6小队", - L"第7小队", - L"第8小队", - L"第9小队", - L"第10小队", - L"第11小队", - L"第12小队", - L"第13小队", - L"第14小队", - L"第15小队", - L"第16小队", - L"第17小队", - L"第18小队", - L"第19小队", - L"第20小队", - L"取消", -}; - -STR16 pPersonnelTitle[] = -{ - L"佣兵", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"生命: ", // health of merc - L"敏捷: ", - L"灵巧: ", - L"力量: ", - L"领导: ", - L"智慧: ", - L"级别: ", // experience level - L"枪法: ", - L"机械: ", - L"爆破: ", - L"医疗: ", - L"医疗保证金: ", // amount of medical deposit put down on the merc - L"合同剩余时间: ", // cost of current contract - L"杀敌数: ", // number of kills by merc - L"助攻数: ",// number of assists on kills by merc - L"日薪: ", // daily cost of merc - L"总花费: ",// total cost of merc - L"当前薪金: ", - L"总日数: ",// total service rendered by merc - L"欠付佣金: ",// amount left on MERC merc to be paid - L"命中率: ",// percentage of shots that hit target - L"战斗次数: ", // number of battles fought - L"受伤次数: ", // number of times merc has been wounded - L"技能: ", - L"没有技能", - L"成就: ", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"精兵: %d\n", - L"杂兵: %d\n", - L"头目: %d\n", - L"刁民: %d\n", - L"动物: %d\n", - L"坦克: %d\n", - L"其他: %d\n", - - L"帮助佣兵: %d\n", - L"帮助民兵: %d\n", - L"帮助其他: %d\n", - - L"枪弹射击: %d\n", - L"火箭发射: %d\n", - L"榴弹投掷: %d\n", - L"飞刀投掷: %d\n", - L"白刃砍杀: %d\n", - L"徒手攻击: %d\n", - L"有效攻击总数: %d\n", - - L"工具撬锁: %d\n", - L"暴力开锁: %d\n", - L"排除陷阱: %d\n", - L"拆除炸弹: %d\n", - L"修理物品: %d\n", - L"合成物品: %d\n", - L"偷窃物品: %d\n", - L"训练民兵: %d\n", - L"战地急救: %d\n", - L"外科手术: %d\n", - L"遇见人物: %d\n", - L"探索区域: %d\n", - L"避免伏击: %d\n", - L"游戏任务: %d\n", - - L"参加战斗: %d\n", - L"自动战斗: %d\n", - L"撤退战斗: %d\n", - L"偷袭次数: %d\n", - L"参加过最多有: %d名敌军的战斗\n", - - L"中枪: %d\n", - L"被砍: %d\n", - L"被揍: %d\n", - L"被炸: %d\n", - L"设施伤害: %d\n", - L"经历手术: %d\n", - L"设施事故: %d\n", - - L"性格:", - L"弱点:", - - L"态度:", // WANNE: For old traits display instead of "Character:"! - - L"僵尸: %d\n", // Zombies: %d\n - - L"背景:", - L"性格:", - - L"已审讯俘虏: %d\n", //L"Prisoners interrogated: %d\n", - L"已感染疾病: %d\n", //L"Diseases caught: %d\n", - L"总共受到伤害: %d\n", //L"Total damage received: %d\n", - L"总共造成伤害: %d\n", //L"Total damage caused: %d\n", - L"总共治疗: %d\n", //L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - // SANDRO - tweaked this - L"没有技能", - L"开锁", - L"格斗", //JA25: modified - L"电子", - L"夜战", //JA25: modified - L"投掷", - L"教学", - L"重武器", - L"自动武器", - L"潜行", - L"双持", - L"偷窃", - L"武术", - L"刀技", - L"狙击手", - L"伪装", //JA25: modified - L"专家", -}; -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"没有技能", // 0 - L"自动武器", - L"重武器", - L"神枪手", - L"猎兵", - L"快枪手", // 5 - L"格斗家", - L"班副", - L"技师", - L"救护兵", - // Minor traits - L"双持", - L"近战", - L"投掷", - L"夜战", - L"潜行", // 14 - L"运动员", - L"健身", - L"爆破", - L"教学", - L"侦察", // 19 - // covert ops is a major trait that was added later - L"特工", // L"Covert Ops", - - // new minor traits - L"无线电操作员", // 21 - L"告发", // 22 - L"向导", //L"Survival" - - // second names for major skills - L"机枪手", // 24 - L"枪炮专家", //L"Bombardier", - L"狙击手", - L"游骑兵", - L"枪斗术", - L"武术家", - L"班长", - L"工兵", - L"军医", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"间谍", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch (minor trait) - L"向导", // for survival (minor trait) - L"更多...", // 47 - L"情报", //L"Intel", for INTEL - L"伪装", //L"Disguise", for DISGUISE - L"多种技能", // for VARIOUSSKILLS - L"治疗佣兵", //L"Bandage Mercs", for AUTOBANDAGESKILLS -}; -////////////////////////////////////////////////////////// - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"站立/行走 (|S)", - L"蹲伏/蹲伏前进(|C)", - L"站立/奔跑 (|R)", - L"匍匐/匍匐前进(|P)", - L"观察(|L)", - L"行动", - L"交谈", - L"检查 (|C|t|r|l)", - - // Pop up door menu - L"用手开门", - L"检查陷阱", - L"开锁", - L"踹门", - L"解除陷阱", - L"锁门", - L"开门", - L"使用破门炸药", - L"使用撬棍", - L"取消 (|E|s|c)", - L"关闭", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"没有陷阱", - L"一个爆炸陷阱", - L"一个带电陷阱", - L"一个警报陷阱", - L"一个无声警报陷阱", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"日", - L"周", - L"两周", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"选择人物", - L"分配任务", - L"安排行军路线", - L"签约 (|C)", - L"移除佣兵", - L"睡觉", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"微弱的", - L"清晰的", - L"大声的", - L"非常大声的", -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"未知", - L"脚步声", - L"辗扎声", - L"溅泼声", - L"撞击声", - L"枪声", - L"爆炸声", - L"尖叫声", - L"撞击声", - L"撞击声", - L"粉碎声", - L"破碎声", -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"东北方", - L"东方", - L"东南方", - L"南方", - L"西南方", - L"西方", - L"西北方", - L"北方" -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"城市", - L"公路", - L"平原", - L"沙漠", - L"灌木", - L"森林", - L"沼泽", - L"湖泊", - L"山地", - L"不可通行", - L"河流", //river from north to south - L"河流", //river from east to west - L"外国", - //NONE of the following are used for directional travel, just for the sector description. - L"热带", - L"农田", - L"平原,公路", - L"灌木,公路", - L"农庄,公路", - L"热带,公路", - L"森林,公路", - L"海滨", - L"山地,公路", - L"海滨,公路", - L"沙漠,公路", - L"沼泽,公路", - L"灌木,SAM导弹基地", - L"沙漠,SAM导弹基地", - L"热带,SAM导弹基地", - L"Meduna, SAM导弹基地", - - //These are descriptions for special sectors - L"Cambria医院", - L"Drassen机场", - L"Meduna机场", - L"SAM导弹基地", - L"加油站", - L"抵抗军隐蔽处",//The rebel base underground in sector A10 - L"Tixa地牢",//The basement of the Tixa Prison (J9) - L"异形巢穴",//Any mine sector with creatures in it - L"Orta地下室", //The basement of Orta (K4) - L"地道", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"地下掩体", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s在%c%d分区被发现了,另一小队即将到达。", //STR_DETECTED_SINGULAR - L"%s在%c%d分区被发现了,其他几个小队即将到达。", //STR_DETECTED_PLURAL - L"你想调整为同时到达吗?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"敌军给你一个投降的机会。", - L"敌军俘虏了昏迷中的佣兵。", - - //The text that goes on the autoresolve buttons - - L"撤退", //The retreat button - L"完成", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"防守", //STR_AR_DEFEND_HEADER - L"攻击", //STR_AR_ATTACK_HEADER - L"遭遇战", //STR_AR_ENCOUNTER_HEADER - L"分区", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"胜利!", //STR_AR_OVER_VICTORY - L"失败!", //STR_AR_OVER_DEFEAT - L"投降!", //STR_AR_OVER_SURRENDERED - L"被俘!", //STR_AR_OVER_CAPTURED - L"撤退!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"民兵", //STR_AR_MILITIA_NAME, - L"精兵", //STR_AR_ELITE_NAME, - L"部队", //STR_AR_TROOP_NAME, - L"行政人员", //STR_AR_ADMINISTRATOR_NAME, - L"异形", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"战斗用时", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"已撤退", //STR_AR_MERC_RETREATED, - L"正在撤退", //STR_AR_MERC_RETREATING, - L"撤退", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"自动战斗", //STR_PB_AUTORESOLVE_BTN, - L"进入战区", //STR_PB_GOTOSECTOR_BTN, - L"撤退佣兵", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"遭遇敌军", //STR_PB_ENEMYENCOUNTER_HEADER, - L"敌军入侵", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"敌军伏击", - L"进入敌占区", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"异形攻击", //STR_PB_CREATUREATTACK_HEADER - L"血猫伏击", //STR_PB_BLOODCATAMBUSH_HEADER - L"进入血猫巢穴", - L"敌方空降", //L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"地区", - L"敌军", - L"佣兵", - L"民兵", - L"异形", - L"血猫", - L"分区", - L"无人", //If there are no uninvolved mercs in this fight. - L"N/A", //Acronym of Not Applicable - L"日", //One letter abbreviation of day - L"小时", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"清除", - L"分散", - L"集中", - L"完成", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"清除所有佣兵的位置,然后一个一个对他们进行布置。(|c)" , - L"每按一次,就会重新随机分散地布置佣兵。(|s)", - L"集中所有佣兵,选择你想布置的地方。(|g)", - L"完成佣兵布置后,请按本按钮确认。(|E|n|t|e|r)", - L"开始战斗前,你必须对所有佣兵完成布置。", - - //Various strings (translate word for word) - - L"分区", - L"选择进入的位置(大地图可以按“↑”“↓”“←”“→”键来移动屏幕)", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"看起来不太好。无法进入这里。换个不同的位置吧。", - L"请把佣兵放在地图的高亮分区里。", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"已到达该地区", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"自动解决战斗,不需要\n载入该分区地图。(|A)", - L"当玩家在攻击时,无法使用\n自动战斗功能。", - L"进入该分区和敌军作战(|E)", - L"将小队撤退到先前的分区。(|R)", //singular version - L"将所有小队撤退到先前的分区。(|R)", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"敌军向你的民兵发起了攻击,在分区%c%d。", - //%c%d is the sector -- ex: A9 - L"异形向你的民兵发起了攻击,在分区%c%d。", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"生物(血猫,异形,僵尸)袭击了%s分区,杀死%d平民。", //注:这里原本的%d和%s在中文中要反过来放,不然会出错。(%d和%s在中文中要反过来) L"Creatures attack and kill %d civilians in sector %s.", - //%s is the sector location -- ex: A9: Omerta - L"敌军向你的%s分区发起了攻击,你的佣兵中没人能进行战斗。", - //%s is the sector location -- ex: A9: Omerta - L"异形向你的%s分区发起了攻击,你的佣兵中没人能进行战斗。", - - // Flugente: militia movement forbidden due to limited roaming - L"民兵无法移动到这。(RESTRICT_ROAMING = TRUE)", //L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", - L"战术中心无人兼职,民兵移动失败!", //L"War room isn't staffed - militia move aborted!", - - L"机器人", //L"Robot", STR_AR_ROBOT_NAME, - L"坦克", //STR_AR_TANK_NAME, - L"吉普", // L"Jeep", STR_AR_JEEP_NAME - - L"\n睡觉时每小时恢复精力: %d", //L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"僵尸", //L"Zombies", - L"土匪", //L"Bandits", - L"血猫攻击", //L"BLOODCAT ATTACK", - L"僵尸攻击", //L"ZOMBIE ATTACK", - L"土匪攻击", //L"BANDIT ATTACK", - L"僵尸", //L"Zombie", - L"土匪", //L"Bandit", - L"土匪杀死了%d名平民,在%s分区。", //注:这里的%d和%s不可以随意放前面或后面,一定要按英文顺序,不然会出错。(%d和%s 在中文中不能反过来。) L"Bandits attack and kill %d civilians in sector %s.", - L"运输队", //L"Transport group", - L"运输队已出发", //L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"日", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"找到钥匙的分区: ", - L"找到钥匙的日期: ", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"状态: ", - L"重量: ", - L"AP 消耗", - L"射程: ", // Range - L"杀伤力: ", // Damage - L"弹药", // Number of bullets left in a magazine - L"AP: ", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"准确性: ", //9 - L"射程: ", //10 - L"杀伤力: ", //11 - L"重量: ", //12 - L"晕眩杀伤力: ",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - // HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only) - // Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES... - L"附件:", //14 //ham3.6 - L"连发/5AP: ", //15 - L"剩余弹药:", //16 - L"默认:", //17 //WarmSteel - So we can also display default attachments - L"污垢:", // 18 //added by Flugente - L"空位:", // 19 //space left on Molle items L"Space:", - L"传播模式:", //L"Spread Pattern:",// 20 - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - L"|射|程\n \n武器的有效射程。\n超出这个距离精瞄效果将受到严重影响。\n \n该数值越高越好。", // L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", - L"|伤|害\n \n武器的原始伤害。\n理想情况下对无护甲目标造成的大致伤害值。\n \n该数值越高越好。", // L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", - L"|精|度\n \n武器的固有准确度。\n由武器自身的结构设计所决定。\n \n该数值越高越好。", // L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", - L"|精|瞄|等|级\n \n武器最大瞄准次数。\n \n瞄准次数越多射击越准确。\n不同武器有不同次数限制。\n次数越多AP消耗越大。\n \n该数值越高越好。", // L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", - L"|精|瞄|修|正\n \n精瞄统一修正。\n每一次瞄准都会获得这个修正值。\n次数越高效果越大。\n \n该数值越高越好。", // L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", - L"|精|瞄|修|正|最|小|距|离\n \n|精|瞄|修|正生效所需最小射距。\n小于这个距离|精|瞄|修|正不会生效。\n \n该数值越低越好。", // L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", - L"|命|中|率|修|正\n \n命中率统一修正。\n该武器所有射击模式都会获得则个修正值。\n \n该数值越高越好。", // L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", - L"|最|佳|激|光|距|离\n \n激光瞄准有效距离。\n这有在这个格数以内激光瞄准才生效。\n超过这个距离效果减弱或消失。\n \n该数值越高越好。", // L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", - L"|枪|口|焰|抑|制\n \n枪口是否消焰。\n枪口消焰后射手更不容易被发现。", // L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", - L"|音|量\n \n射击发出的噪声。\n在这个格数内敌人会听到射手所处位置。\n \n该数值越低越好。\n除非你想被敌人发现。", // L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", - L"|可|靠|度\n \n武器或道具的结实程度。\n会在战斗使用时磨损消耗\n你不想拿着中国制造到处炫耀。\n \n该数值越高越好。", // L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", - L"|维|修|难|度\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有工兵和特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", // Determines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"", //12 - L"举枪AP", - L"单发AP", - L"点射AP", - L"连发AP", - L"上弹AP", - L"手动上弹AP", - L"点射惩罚(越低越好)", //19 - L"脚架修正", - L"连发数量/5AP", - L"连发惩罚(越低越好)", - L"点射/连发惩罚(越低越好)", //23 - L"投掷AP", //20 - L"发射AP", - L"捅人AP", - L"无法单发!", - L"无点射模式!", - L"无连发模式!", - L"械斗AP", - L"", - L"|维|修|难|度\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"物品大小修正(越低越好)", // 0 - L"可靠性修正", - L"噪音修正(越低越好)", - L"枪口消焰", - L"脚架修正", - L"射程修正", // 5 - L"命中率修正", - L"最佳激光瞄准距离", - L"精瞄加成修正", - L"点射长度修正", - L"点射惩罚修正(越高越好)", // 10 - L"连发惩罚修正(越高越好)", - L"AP修正", - L"点射AP修正(越低越好)", - L"连发AP修正(越低越好)", - L"举枪AP修正(越低越好)", // 15 - L"上弹AP修正(越低越好)", - L"弹容量修正", - L"攻击AP修正(越低越好)", - L"杀伤修正", - L"近战杀伤修正", // 20 - L"丛林迷彩", - L"城市迷彩", - L"沙漠迷彩", - L"雪地迷彩", - L"潜行修正", // 25 - L"听觉距离修正", - L"视距修正", - L"白天视距修正", - L"夜晚视距修正", - L"亮光下视距修正", //30 - L"洞穴视距修正", - L"隧道视野百分比(越低越好)", - L"精瞄加成所需最小距离", - L"按住 |C|t|r|l 点击装备物品", //L"Hold |C|t|r|l to compare items", item compare help text - L"装备重量: %4.1f 公斤", //L"Equipment weight: %4.1f kg", // 35 -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"处于 ", - L"完美", - L"优秀", - L"好的", - L"尚可", - L"不良", - L"差的", - L"糟糕的", - L" 状态。", //L" condition.", -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"剩余", - L"金额: ",//this is the overall balance - L"分割", - L"金额: ", // the amount he wants to separate from the overall balance to get two piles of money - - L"当前", - L"余额:", - L"提取", - L"金额:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"垂死", //"DYING", // >= 0 - L"濒危", //"CRITICAL", // >= 15 - L"虚弱", //"POOR", // >= 30 - L"受伤", //"WOUNDED", // >= 45 - L"健康", //"HEALTHY", // >= 60 - L"强壮", //"STRONG", // >= 75 - L"极好", //"EXCELLENT", // >= 90 - L"被俘", // L"CAPTURED", -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"$1000", - L"$100", - L"$10", - L"完成", - L"分割", - L"提取", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"优点: ", -}; - -CHAR16 gzConsLabel[10] = -{ - L"缺点: ", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"再说一次?", //meaning "Repeat yourself" - L"友好", //approach in a friendly - L"直率", //approach directly - let's get down to business - L"恐吓", //approach threateningly - talk now, or I'll blow your face off - L"给予", - L"招募", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"买/卖", - L"买", - L"卖", - L"修理", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"完成", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"凯迪拉克", - L"悍马", // a hummer jeep/truck -- military vehicle - L"冰激凌车", - L"吉普", - L"坦克", - L"直升飞机", -}; - -STR16 pShortVehicleStrings[] = -{ - L"凯迪拉克", - L"悍马", // the HMVV - L"冰激凌车", - L"吉普", - L"坦克", - L"直升飞机", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"凯迪拉克", - L"悍马", //a military jeep. This is a brand name. - L"冰激凌车", // Ice cream truck - L"吉普", - L"坦克", - L"直升飞机", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"你不能在这个位置射击。", //L"You cannot shoot from this seat.", - L"在战斗中你不能在没有退出交通工具之前就交换这两个位置。", //L"You cannot swap those two seats in combat without exiting vehicle first.", -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"空袭", - L"自动包扎?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s发现运来的货品缺少了几件。", - - // The %s is a string from pDoorTrapStrings - - L"锁上有%s。", - L"没有上锁。", - L"成功!", - L"失败。", - L"成功!", - L"失败", - L"锁上没有被设置陷阱。", - L"成功!", - // The %s is a merc name - L"%s没有对应的钥匙。", - L"锁上的陷阱被解除了。", - L"锁上没有被设置陷阱。", - L"锁住了。", - L"门", - L"有陷阱的", - L"锁住的", - L"没锁的", - L"被打烂的", - L"这里有一个开关。启动它吗?", - L"解除陷阱?", - L"上一个...", - L"下一个...", - L"更多的...", - - // In the next 2 strings, %s is an item name - - L"%s放在了地上。", - L"%s交给了%s。", - - // In the next 2 strings, %s is a name - - L"%s已经被完全支付。", - L"%s还拖欠%d。", - L"选择引爆的频率", //in this case, frequency refers to a radio signal - L"设定几个回合后爆炸: ", //how much time, in turns, until the bomb blows - L"设定遥控雷管的频率: ",//in this case, frequency refers to a radio signal - L"解除诡雷?", - L"移掉蓝旗?", - L"在这里插上蓝旗吗?", - L"结束回合", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"你确定要攻击%s吗?", - L"车辆无法变动姿势。", - L"机器人无法变动姿势。", - - // In the next 3 strings, %s is a name - - L"%s无法在这里变为该姿势。", - L"%s无法在这里被包扎。", - L"%s不需要包扎。", - L"不能移动到那儿。", - L"你的队伍已经满员了。没有空位雇佣新队员。", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s已经被招募。", - - // Here %s is a name and %d is a number - - L"尚拖欠%s,$%d。", - - // In the next string, %s is a name - - L"护送%s吗?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"要雇佣%s吗?(每日得支付%s)", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"你要进行拳击比赛吗?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"要买%s吗(得支付%s)?", - - // In the next string, %s is a name - - L"%s接受第%d小队的护送。", - - // These messages are displayed during play to alert the player to a particular situation - - L"卡壳", //weapon is jammed. - L"机器人需要%s口径的子弹。", //Robot is out of ammo - L"扔到那儿?那不可能。", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"潜行模式 (|Z)", - L"地图屏幕 (|M)", - L"结束回合 (|D)", - L"谈话", - L"禁音", - L"起身 (|P|g|U|p)", - L"光标层次 (|T|a|b)", - L"攀爬/跳跃", - L"伏下 (|P|g|D|n)", - L"检查", - L"上一个佣兵", - L"下一个佣兵 (|S|p|a|c|e)", - L"选项 (|O)", - L"扫射模式 (|B)", - L"查看/转向(|L)", - L"生命: %d/%d\n精力: %d/%d\n士气: %s", - L"厄?", //this means "what?" - L"继续", //an abbrieviation for "Continued" - L"对%s关闭禁音模式。", - L"对%s打开禁音模式。", - L"耐久度: %d/%d\n油量: %d/%d", - L"下车", //L"Exit Vehicle", - L"切换小队 ( |S|h|i|f|t |S|p|a|c|e )", - L"驾驶", - L"N/A", //this is an acronym for "Not Applicable." - L"使用 (拳头)", - L"使用 (武器)", - L"使用 (刀具)", - L"使用 (爆炸品)", - L"使用 (医疗用品)", - L"(抓住)", - L"(装填弹药)", - L"(给予)", - L"%s被触发了。", - L"%s已到达。", - L"%s用完了行动点数(AP)。", - L"%s无法行动。", - L"%s包扎好了。", - L"%s用完了绷带。", - L"这个分区中有敌军。", - L"视野中没有敌军。", - L"没有足够的行动点数(AP)。", - L"没人使用遥控器。", - L"射光了子弹!", - L"敌兵", - L"异形", - L"民兵", - L"平民", - L"僵尸", - L"战俘", - L"离开分区", - L"确定", - L"取消", - L"选择佣兵", - L"小队的所有佣兵", - L"前往分区", - L"前往地图", - L"你不能从这边离开这个分区。", - L"你不能在回合制模式离开。", - L"%s太远了。", - L"不显示树冠", - L"显示树冠", - L"乌鸦" , //Crow, as in the large black bird - L"颈部", - L"头部", - L"躯体", - L"腿部", - L"要告诉女王她想知道的情报吗?", - L"获得指纹ID", - L"指纹ID无效。无法使用该武器。", - L"达成目标", - L"路被堵住了", - L"存钱/取钱", //Help text over the $ button on the Single Merc Panel - L"没人需要包扎。", - L"卡壳", // Short form of JAMMED, for small inv slots - L"无法到达那里。", // used ( now ) for when we click on a cliff - L"路被堵住了。你要和这个人交换位置吗?", - L"那人拒绝移动。", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"你同意支付%s吗?", - L"你要接受免费治疗吗?", - L"你同意让佣兵和%s结婚吗?", //Daryl - L"钥匙面板", - L"你不能这样用EPC。", - L"不杀%s?", //Krott - L"超出武器的有效射程。", - L"矿工", - L"车辆只能在分区间旅行", - L"现在不能自动包扎", - L"%s被堵住了。", - L"被%s的军队俘虏的佣兵,被关押在这里!", //Deidranna - L"锁被击中了", - L"锁被破坏了", - L"其他人在使用这扇门。", - L"耐久度: %d/%d\n油量: %d/%d", - L"%s看不见%s。", // Cannot see person trying to talk to - L"附件被移除", - L"你已经有了两辆车,无法拥有更多的车辆。", - - // added by Flugente for defusing/setting up trap networks - L"选择引爆频率 (1 - 4) 或拆除频率 (A - D):", //L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", - L"设置拆除频率:", //L"Set defusing frequency:", - L"设置引爆频率 (1 - 4) 和拆除频率 (A - D):", //L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", - L"设置引爆时间回合数 (1 - 4) 和拆除频率 (A - D):", //L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", - L"选择绊线的分层 (1 - 4) 和网格 (A - D):", //L"Select tripwire hierarchy (1 - 4) and network (A - D):", - - // added by Flugente to display food status - L"生命: %d/%d\n精力: %d/%d\n士气: %s\n口渴: %d%s\n饥饿: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"你想要做的是什么?", - L"装满水壶", - L"清洁枪污垢", - L"清洁所有枪污垢", - L"脱掉衣服", - L"去掉伪装", //L"Lose disguise", - L"民兵检查", //L"Militia inspection", - L"补充民兵", //L"Militia restock", - L"测试伪装", //L"Test disguise", - L"未使用", //L"unused", - - // added by Flugente: decide what to do with the corpses - L"你想要对尸体做什么?", - L"砍掉头颅", - L"取出内脏", - L"脱掉衣服", - L"拿起尸体", - - // Flugente: weapon cleaning - L"%s 清洁了 %s", - - // added by Flugente: decide what to do with prisoners - L"既然我们没有监狱,只能现场审讯了。", //L"As we have no prison, a field interrogation is performed.", - L"现场审讯", //L"Field interrogation", - L"你打算把%d名俘虏送到哪里去?",//L"Where do you want to send the %d prisoners?", - L"放俘虏离开",//L"Let them go", - L"你想要做什么?", - L"劝说敌人投降", - L"我方缴械投降", //L"Offer surrender", - L"转移", //L"Distract", - L"交谈", - L"招募被策反的敌军", //L"Recruit turncoat", // TODO: confirm translation. copied from pTraitSkillsMenuStrings - - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"拆除陷阱", - L"查看陷阱", - L"移除蓝旗", - L"引爆!", - L"激活绊线", - L"关闭绊线", - L"移除绊线", - L"没有发现引爆器或远程引爆器!", - L"炸弹已经起爆了!", - L"安全", - L"基本安全", - L"可能危险", - L"危险", - L"非常危险!", - - L"面具", - L"夜视仪", - L"物品", - - L"这一功能只能通过新物品携带系统实现", - L"主手上没有物品", - L"主手上的物品无处可放", - L"便捷槽位无可放置物品", - L"没有空手来拿新物品", - L"未发现物品", - L"无法把物品转移到主手上", - - L"尝试对行进中的佣兵进行包扎...", //L"Attempting to bandage travelling mercs...", - - L"补充装备", //L"Improve gear", - L"%s对%s进行了临时补给。", //L"%s changed %s for superior version", - L"%s 捡起 %s。", //L"%s picked up %s", - - L"%s停止了与%s的交谈", //L"%s has stopped chatting with %s", - L"尝试策反", //L"Attempt to turn", -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"如果勾中,将立即进入邻近的分区。", - L"如果勾中,你将被立即自动放置在地图屏幕,\n因为你的佣兵要花些时间来行军。", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"该分区被敌军占据。你不能将佣兵留在这里。\n在进入其他分区前,你必须把这里的问题解决。", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"让留下的佣兵离开本分区,\n将立即进入邻近的分区。", - L"让留下的佣兵离开本分区,\n你将被立即自动放置在地图屏幕,\n因为你的佣兵要花些时间来行军。", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s需要被你的佣兵护送,他(她)无法独自离开本分区。", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s无法独自离开本分区,因为他得护送%s。", //male singular - L"%s无法独自离开本分区,因为她得护送%s。", //female singular - L"%s无法独自离开本分区,因为他得护送多人。", //male plural - L"%s无法独自离开本分区,因为她得护送多人。", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"如果要让小队在分区间移动的话,\n你的全部队员都必须在附近。", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"如果勾中,%s将独自行军,\n而且被自动重新分配到一个单独的小队中。", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"如果勾中,你当前选中的小队\n将会离开本分区,开始行军。", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s正在被你的佣兵护送,他(她)无法独自离开本分区。你的佣兵必须在附近以护送他(她)离开。", -}; - - - -STR16 pRepairStrings[] = -{ - L"物品", // tell merc to repair items in inventor - L"SAM导弹基地", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"取消", // cancel this menu - L"机器人", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"丧失",// the merc has lost a statistic - L"获得",// the merc has gained a statistic - L"点",// singular - L"点",// plural - L"级",//singular - L"级",//plural -}; - -STR16 sStatGainStrings[] = -{ - L"生命。", - L"敏捷。", - L"灵巧。", - L"智慧。", - L"医疗技能。", - L"爆破技能。", - L"机械技能。", - L"枪法技能。", - L"等级。", - L"力量。", - L"领导。", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"总距离: ", // total distance for helicopter to travel - L"安全: ", // distance to travel to destination - L"不安全: ", // distance to return from destination to airport - L"总价: ", // total cost of trip by helicopter - L"耗时: ", // ETA is an acronym for "estimated time of arrival" - L"直升机油量不够,必须在敌占区着陆。", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"乘客: ", - L"选择Skyrider,还是“着陆点”?", - L"Skyrider", - L"着陆点", - L"直升机严重受损,必须降落在敌军领地!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"直升机将直接返回基地,你希望在此之前放下乘客吗?", - L"剩余燃料:", - L"到加油站距离:", -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"你希望让%s来修理吗?这将花费$%d,而且直升机在%d小时左右将无法起飞。", - L"直升机正在维修。请等到修理完成。", - L"修理完成。直升机已可使用。", - L"直升机已加满油。", - - L"直升机已经超过了最大的航程!",//L"Helicopter has exceeded maximum range!", -}; - -STR16 sMapLevelString[] = -{ - L"地层: ", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"忠诚度: ", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"不能在地底下达行军命令。", -}; - -STR16 gsTimeStrings[] = -{ - L"小时", // hours abbreviation - L"分钟", // minutes abbreviation - L"秒", // seconds abbreviation - L"日", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"无", - L"医院", - L"工厂", - L"监狱", - L"军事基地", - L"机场", - L"靶场", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"存货", - L"离开", - L"修理", //L"Repair", - L"工厂", //L"Factories", -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"大小", // 0 // size of the town in sectors - L"", // blank line, required - L"占领度", // how much of town is controlled - L"无", // none of this town - L"矿区", // mine associated with this town - L"忠诚度 ",//(后空5格,工厂生产会档住其它字) // 5 // the loyalty level of this town - L"民兵", // the forces in the town trained by the player - L"", - L"主要设施", // main facilities in this town - L"等级", // the training level of civilians in this town - L"民兵训练度", // 10 // state of civilian training in town - L"民兵", // the state of the trained civilians in the town - - // Flugente: prisoner texts - L"囚犯", //L"Prisoners", - L"%d(容量 %d)", //L"%d (capacity %d)", - L"%d 行政人员", //L"%d Admins", - L"%d 常规士兵", //L"%d Regulars", - L"%d 精英", //L"%d Elites", - L"%d 军官", //L"%d Officers", - L"%d 上将", //L"%d Generals", - L"%d 平民", //L"%d Civilians", - L"%d 特殊1", //L"%d Special1", - L"%d 特殊2", //L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"矿井", // 0 - L"银块", - L"金块", - L"当前日产量", - L"最高产量", - L"废弃", // 5 - L"关闭", - L"矿脉耗尽", - L"生产", - L"状态", - L"生产率", - L"矿石类型", // 10 - L"占领度", - L"忠诚度", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"敌军", - L"分区", - L"物品数量", - L"未知", - - L"已占领", - L"是", - L"否", - L"状态/软件状态:", //L"Status/Software status:", - - L"其它情报", //L"Additional Intel", -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s不够近。", //Merc is in sector with item but not close enough - L"无法选择该佣兵。", //MARK CARTER - L"%s不在这个分区,不能拿到这个物品。", - L"在战斗时,你只能动手捡起物品。", - L"在战斗时,你只能动手放下物品。", - L"%s不在该分区,不能放下那个物品。", - L"在战斗时你没有时间开启成箱的弹药。", -}; - -STR16 pMapInventoryStrings[] = -{ - L"位置", // sector these items are in - L"物品总数", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"如果要改变佣兵的分配任务,比如分到另一个小队、当医生、进行修理等,请按 '任务' 栏。", - L"要让佣兵以另一个分区为行军目标,请按'Dest'栏。", - L"一旦对佣兵下达了行军命令 ,请按时间压缩按钮以让他们开始行进。", - L"鼠标左击以选择该分区。再次鼠标左击以对佣兵下达行军命令, 或者鼠标右击以获取分区信息小结。", - L"任何时候在该屏幕下都可以按'h'键,以弹出帮助窗口。", - L"测试文本", - L"测试文本", - L"测试文本", - L"测试文本", - L"您尚未开始Arulco之旅,现在在这个屏幕上您无事可做。当您把队员都雇佣好后,请左击右下方的“时间压缩”按钮。这样在您的队伍到达Arulco前,时间就前进了。", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"调动佣兵", // title for movement box - L"安排行军路线", // done with movement menu, start plotting movement - L"取消", // cancel this menu - L"其它", // title for group of mercs not on squads nor in vehicles - L"全选", //L"Select all", Select all squads TODO: Translate -}; - - -STR16 pUpdateMercStrings[] = -{ - L"糟了: ", // an error has occured - L"佣兵合同到期了: ", // this pop up came up due to a merc contract ending - L"佣兵完成了分配的任务: ", // this pop up....due to more than one merc finishing assignments - L"佣兵醒来了,继续干活: ", // this pop up ....due to more than one merc waking up and returing to work - L"佣兵困倦了: ", // this pop up ....due to more than one merc being tired and going to sleep - L"合同快到期了: ", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"显示城镇 (|W)", - L"显示矿井 (|M)", - L"显示队伍和敌人 (|T)", - L"显示领空 (|A)", - L"显示物品 (|I)", - L"显示民兵和敌人 (|Z)", - L"显示疾病 (|D)", //L"Show |Disease Data", - L"显示天气 (|R)", //L"Show Weathe|r", - L"显示任务 (|Q)", //L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"下一页 (|.)", // next page - L"上一页 (|,)", // previous page - L"离开 (|E|s|c)", // exit sector inventory - L"放大", // HEAROCK HAM 5: Inventory Zoom Button - L"合并堆叠同类的物品", // HEADROCK HAM 5: Stack and Merge - L"|鼠|标|左|击: 将子弹分类装入弹箱 \n|鼠|标|右|击: 将子弹分类装入纸盒 ", //L"|L|e|f|t |C|l|i|c|k: 将子弹分类装入弹箱\n|R|i|g|h|t |C|l|i|c|k: 将子弹分类装入纸盒", HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|鼠|标|左|击: 移除所有物品的附件 \n|鼠|标|右|击: 清空携行具里的物品 ", //L"|鼠|标|左|击: 移除所有物品的附件\n|鼠|标|右|击: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments - L"退出所有武器的子弹", //HEADROCK HAM 5: Eject Ammo - L"|鼠|标|左|击: 显示全部物品 \n|鼠|标|右|击: 隐藏全部物品 ", // HEADROCK HAM 5: Filter Button - L"|鼠|标|左|击: 切换显示武器 \n|鼠|标|右|击: 只显示武器 ", // HEADROCK HAM 5: Filter Button - L"|鼠|标|左|击: 切换显示弹药 \n|鼠|标|右|击: 只显示弹药 ", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|鼠|标|左|击: 切换显示爆炸物 \n|鼠|标|右|击: 只显示爆炸物 ", // HEADROCK HAM 5: Filter Button - L"|鼠|标|左|击: 切换显示近战武器 \n|鼠|标|右|击: 只显示近战武器 ", // HEADROCK HAM 5: Filter Button - L"|鼠|标|左|击: 切换显示护甲 \n|鼠|标|右|击: 只显示护甲 ", // HEADROCK HAM 5: Filter Button - L"|鼠|标|左|击: 切换显示携行具 \n|鼠|标|右|击: 只显示携行具 ", // HEADROCK HAM 5: Filter Button - L"|鼠|标|左|击: 切换显示医疗物品 \n|鼠|标|右|击: 只显示医疗物品 ", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|鼠|标|左|击: 切换显示杂项物品 \n|鼠|标|右|击: 只显示杂项物品 ", // HEADROCK HAM 5: Filter Button - L"切换搬运中的物品", // Flugente: move item display - L"保存装备模版", //L"Save Gear Template", - L"载入装备模版...", //L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"笔记本电脑 (|L)", - L"战术屏幕 (|E|s|c)", - L"选项 (|O)", - L"时间压缩 (|+)", // time compress more - L"时间压缩 (|-)", // time compress less - L"上一条信息 (|U|p)\n上一页 (|P|g|U|p)", // previous message in scrollable list - L"下一条信息 (|D|o|w|n)\n下一页 (|P|g|D|n)", // next message in the scrollable list - L"开始/停止时间压缩 (|S|p|a|c|e)", //"Start/Stop Time (|S|p|a|c|e)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"帐户余额", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s死了。", -}; - - -STR16 pDayStrings[] = -{ - L"日", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Enrico", - L"Psych Pro Inc", - L"Help Desk", - L"Psych Pro Inc", - L"Speck", - L"R.I.S.", //5 - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", //10 - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", //15 - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", //20 - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", //25 - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", //30 - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephen", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"M.I.S. Insurance", - L"Bobby Rays", - L"Kingpin", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"上一个", - L"下一个", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"你有新的邮件...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"删除邮件?", - L"删除未读的邮件?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"来自: ", - L"标题: ", - L"日期: ", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"邮箱", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"帐簿", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"收入: ", // credit (subtract from) to player's account - L"支出: ", // debit (add to) to player's account - L"昨日实际收入: ", - L"昨日其它存款: ", - L"昨日支出: ", - L"昨日日终余额: ", - L"今日实际收入: ", - L"今日其它存款: ", - L"今日支出: ", - L"今日当前余额: ", - L"预期收入: ", - L"明日预计余额: ", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"天数", // the day column - L"收入", // the credits column (to ADD money to your account) - L"支出", // the debits column (to SUBTRACT money from your account) - L"交易记录", // transaction type - see TransactionText below - L"余额", // balance at this point in time - L"页数", // page number - L"日", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"自然增值利息", // interest the player has accumulated so far - L"匿名存款", - L"交易费用", - L"已雇佣", // Merc was hired - L"在Bobby Ray购买货品", // Bobby Ray is the name of an arms dealer - L"在M.E.R.C开户。", - L"%s的医疗保证金", // medical deposit for merc - L"IMP心理剖析分析", // IMP is the acronym for International Mercenary Profiling - L"为%s购买保险", - L"缩短%s的保险期限", - L"延长%s的保险期限", // johnny contract extended - L"取消%s的保险", - L"%s的保险索赔", // insurance claim for merc - L"1日", // merc's contract extended for a day - L"1周", // merc's contract extended for a week - L"2周", // ... for 2 weeks - L"采矿收入", - L"", //String nuked - L"买花", - L"%s的医疗保证金的全额退款", - L"%s的医疗保证金的部分退款", - L"%s的医疗保证金没有退款", - L"付给%s金钱",// %s is the name of the npc being paid - L"支付给%s的佣金", // transfer funds to a merc - L"%s退回的佣金", // transfer funds from a merc - L"在%s训练民兵", // initial cost to equip a town's militia - L"向%s购买了物品。", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s存款。", - L"将装备卖给了当地人", - L"工厂使用", // L"Facility Use", // HEADROCK HAM 3.6 - L"民兵保养", // L"Militia upkeep", // HEADROCK HAM 3.6 - L"释放俘虏所需的赎金", //L"Ransom for released prisoners", - L"记录捐款费", //L"WHO data subscription", // Flugente: disease - L"Kerberus安保公司的费用", //L"Payment to Kerberus",  // Flugente: PMC - L"修理SAM基地",//L"SAM site repair", // Flugente: SAM repair - L"培训工人",//L"Trained workers", // Flugente: train workers - L"在%s区域训练民兵", //L"Drill militia in %s", Flugente: drill militia - L"微型事件", //L"Mini event", rftr: mini events - L"从反抗军司令部转移资金", //L"Funds transferred from rebel command", rftr: rebel command - L"资金转移到反抗军司令部", //L"Funds transferred to rebel command", rftr: rebel command - L"支付赏金", //L"Bounty payout", rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"的保险", // insurance for a merc - L"延长%s的合同一日。", // entend mercs contract by a day - L"延长%s的合同一周。", - L"延长%s的合同两周。", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"付给Skyrider,$%d", // skyrider was paid an amount of money - L"还欠Skyrider,$%d", // skyrider is still owed an amount of money - L"Skyrider完成补给汽油",// skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider已作好再次飞行的准备。", // Skyrider was grounded but has been freed - L"Skyrider没有乘客。如果你试图运送这个分区的佣兵,首先要分配他们进入“交通工具”->“直升飞机”。", -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"高涨", - L"良好", - L"稳定", - L"低下", - L"恐慌", - L"糟糕", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"%s的装备现在可以在Omerta (A9)获得。", - L"%s的装备现在可以在Drassen (B13)获得。", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"生命", - L"精力", - L"士气", - L"状态", // the condition of the current vehicle (its "health") - L"油量", // the fuel level of the current vehicle (its "energy") - L"毒性", // Posion - L"口渴", // drink level - L"饥饿", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"上一佣兵 (|L|e|f|t)", //"Previous Merc (|L|e|f|t)", // previous merc in the list - L"下一佣兵 (|R|i|g|h|t)", //"Next Merc (|R|i|g|h|t)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"耗时: ", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"你将不会再见到它了。你确定吗?", // do you want to continue and lose the item forever - L"这个物品看起来非常非常重要。你真的要扔掉它吗?", // does the user REALLY want to trash this item -}; - - -STR16 pMapErrorString[] = -{ - L"小队不能行军,因为有人在睡觉。", - -//1-5 - L"首先要回到地面,才能移动小队。", - L"行军?那里是敌占区!", - L"必须给佣兵分配小队或者交通工具才能开始行军。", - L"你现在没有任何队员。", // you have no members, can't do anything - L"佣兵无法遵从命令。", // merc can't comply with your order -//6-10 - L"需要有人护送才能行军。请把他分进一个小队里。", // merc can't move unescorted .. for a male - L"需要有人护送才能行军。请把她分进一个小队里。", // for a female - L"佣兵尚未到达%s!", - L"看来得先谈妥合同。", - L"无法发出行军命令。目前有空袭。", -//11-15 - L"行军?这里正在战斗中!", - L"你在分区%s被血猫伏击了!", - L"你刚刚进入了%s分区,这里是血猫的巢穴!", // HEADROCK HAM 3.6: Added argument. - L"", - L"在%s的SAM导弹基地被敌军占领了。", -//16-20 - L"在%s的矿井被敌军占领了。你的日收入下降为每日%s。", - L"敌军未遭到抵抗,就占领了%s。", - L"至少有一名你的佣兵不能被分配这个任务。", - L"%s无法加入%s,因为它已经满员了。", - L"%s无法加入%s,因为它太远了。", -//21-25 - L"在%s的矿井被敌军占领了!", - L"敌军入侵了%s处的SAM导弹基地。", - L"敌军入侵了%s。", - L"敌军在%s出没。", - L"敌军占领了%s。", -//26-30 - L"你的佣兵中至少有一人不能睡眠。", - L"你的佣兵中至少有一人不能醒来。", - L"训练完毕,才会出现民兵。", - L"现在无法对%s下达行军命令。", - L"不在城镇边界的民兵无法行军到另一个分区。", -//31-35 - L"你不能在%s拥有民兵。", - L"车是空的,无法移动!", - L"%s受伤太严重了,无法行军!", - L"你必须首先离开博物馆!", - L"%s死了!", -//36-40 - L"%s无法转到%s,因为它在移动中。", - L"%s无法那样进入交通工具。", - L"%s无法加入%s。", - L"在你雇佣新的佣兵前,你不能压缩时间。", - L"车辆只能在公路上开!", -//41-45 - L"在佣兵移动时,你不能重新分配任务。", - L"车辆没油了!", - L"%s太累了,以致不能行军。", - L"车上没有人能够驾驶。", - L"这个小队的佣兵现在不能移动。", -//46-50 - L"其他佣兵现在不能移动。", - L"车辆被损坏得太严重了!", - L"每个分区只能由两名佣兵来训练民兵。", - L"没有遥控员,机器人无法移动。请把他们分配在同一个小队。", - L"物品不能被移动到%s,由于没有有效的空投地点。请进入地图解决这个问题。",//L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", -// 51-55 - L"%d 物品移动 %s到%s",//L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"再点击一下目的地以确认你的最后路线,或者点击下一个分区以设置更多的路点。", - L"行军路线已确认。", - L"目的地未改变。", - L"行军路线已取消。", - L"行军路线已缩短。", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"点击你想让佣兵着陆的分区。", - L"好的。佣兵将在%s着陆。", - L"佣兵不能飞往那里,领空不安全!", - L"取消。着陆分区未改变。", - L"%s上的领空现在不安全了!着陆分区被改为%s。", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"进入装备界面 (|E|n|t|e|r)", - L"扔掉物品", //"Throw Item Away", - L"离开装备界面 (|E|n|t|e|r)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"让%s把装备留在他现在所在的地方(%s),或者在(%s)登机飞离,把装备留在那里?", - L"%s要离开了,他的装备将被留在%s。", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"让%s把装备留在她现在所在的地方(%s),或者在(%s)登机飞离,把装备留在那里?", - L"%s要离开了,她的装备将被留在%s。", -}; - - -STR16 pMercContractOverStrings[] = -{ - L"的合同到期了,所以他回家了。", - L"的合同到期了,所以她回家了。", - L"的合同中止了,所以他离开了。", - L"的合同中止了,所以她离开了。", - L"你欠了M.E.R.C太多钱,所以%s离开了。", -}; - -// Text used on IMP Web Pages - -// WDS: Allow flexible numbers of IMPs of each sex -// note: I only updated the English text to remove "three" below -STR16 pImpPopUpStrings[] = -{ - L"无效的授权号", - L"你试图重新开始整个测试。你确定吗?", - L"请输入正确的全名和性别。", - L"对你的财政状况的预先分析显示了你无法负担心理剖析的费用。", - L"现在不是个有效的选择。", - L"要进行心理剖析,你的队伍中必须至少留一个空位。", - L"测试完毕。", - L"无法从磁盘上读入I.M.P人物数据。", - L"你已经达到I.M.P人物上限。", - L"你已经达到I.M.P该性别人物上限。", - L"你无法支付此I.M.P人物的费用。", // 10 - L"新的I.M.P人物加入了你的队伍。", - L"你已经设置了最大数量的佣兵特性。", - L"未找到语音包。", //L"No voicesets found.", -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"关于我们", // about the IMP site - L"开始", // begin profiling - L"特长", // personality section - L"属性", // personal stats/attributes section - L"外表", // changed from portrait - SANDRO - L"嗓音%d", // the voice selection - L"完成", // done profiling - L"重新开始", // start over profiling - L"是的,我选择了高亮突出的回答。", - L"是", - L"否", - L"结束", // finished answering questions - L"上一个", // previous question..abbreviated form - L"下一个", // next question - L"是的,我确定。", // yes, I am certain - L"不,我想重新开始。", - L"是", - L"否", - L"后退", // back one page - L"取消", // cancel selection - L"是的,我确定。", - L"不,让我再看看。", - L"注册", // the IMP site registry..when name and gender is selected - L"分析...", // analyzing your profile results - L"完成", - L"性格", // Change from "Voice" - SANDRO - L"无", //"None", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - SANDRO - L"选择完角色性格特征之后,接着选择您所掌握的技能。", - L"最后调整好你的各项属性值完成整个自创角色过程。", - L"开始实际分析,请先选择头像、声音和颜色。", - L"初步阶段完成,现在开始角色性格特征分析部分。", -}; - -STR16 pFilesTitle[] = -{ - L"文件查看器", -}; - -STR16 pFilesSenderList[] = -{ - L"侦察报告", - L"1号通缉令", - L"2号通缉令", - L"3号通缉令", - L"4号通缉令", - L"5号通缉令", - L"6号通缉令", -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"日志", -}; - -STR16 pHistoryHeaders[] = -{ - L"日", // the day the history event occurred - L"页数", // the current page in the history report we are in - L"日数", // the days the history report occurs over - L"位置", // location (in sector) the event occurred - L"事件", // the event label -}; - -// Externalized to "TableData\History.xml" -/* -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"从A.I.M雇佣了%s。", - L"从M.E.R.C雇佣了%s。", - L"%s死了。", //"%s died.", // merc was killed - L"在M.E.R.C开户。", - L"接受Enrico Chivaldori的委托", //"Accepted Assignment From Enrico Chivaldori", - //6-10 - L"IMP已生成", - L"为%s购买保险。", - L"取消%s的保险合同。", - L"收到%s的保险索赔。", - L"延长一日%s的合同。", - //11-15 - L"延长一周%s的合同。", - L"延长两周%s的合同。", - L"%s被解雇了。", - L"%s退出了。", - L"开始任务。", - //16-20 - L"完成任务。", - L"和%s的矿主交谈", - L"解放了%s", - L"启用作弊", - L"食物会在明天送达Omerta", - //21-25 - L"%s离队并成为了Daryl Hick的妻子", - L"%s的合同到期了。", - L"招募了%s。", - L"Enrico抱怨进展缓慢", - L"战斗胜利", - //26-30 - L"%s的矿井开始缺乏矿石", - L"%s的矿井采完了矿石", - L"%s的矿井关闭了", //"%s mine was shut down", - L"%s的矿井复工了", - L"发现一个叫Tixa的监狱。", - //31-35 - L"打听到一个叫Orta的秘密武器工厂。", - L"在Orta的科学家捐赠了大量的火箭枪。", - L"Deidranna女王在利用死尸做某些事情。", - L"Frank谈到了在San Mona的拳击比赛。", - L"一个病人说他在矿井里看到了一些东西。", - //36-40 - L"遇到一个叫Devin的人,他出售爆炸物。", - L"偶遇Mike,前AIM名人!", - L"遇到Tony,他做武器买卖。", - L"从Krott中士那里得到一把火箭枪。", - L"把Angel皮衣店的契约给了Kyle。", - //41-45 - L"Madlab提议做一个机器人。", - L"Gabby能制作对付虫子的隐形药。", - L"Keith歇业了。", - L"Howard给Deidranna女王提供氰化物。", - L"遇到Keith -Cambria的杂货商。", - //46-50 - L"遇到Howrd,一个在Balime的医药商。", - L"遇到Perko,他开了一家小修理档口。。", - L"遇到在Balime的Sam,他有一家五金店。", - L"Franz做电子产品和其它货物的生意。", - L"Arnold在Grumm开了一家修理店。", - //51-55 - L"Fredo在Grumm修理电子产品。", - L"收到在Balime的有钱人的捐款。", - L"遇到一个叫Jake的废品商人。", - L"一个流浪者给了我们一张电子钥匙卡。", - L"贿赂了Walter,让他打开地下室的门。", - //56-60 - L"如果Dave有汽油,他会免费进行加油。", - L"贿赂Pablo。", - L"Kingping拿回了San Mona矿井中的钱。", - L"%s赢了拳击赛", - L"%s输了拳击赛", - //61-65 - L"%s丧失了拳击赛的参赛资格", - L"在废弃的矿井里找到一大笔钱。", - L"遭遇Kingpin派出的杀手。", - L"该分区失守", //ENEMY_INVASION_CODE - L"成功防御该分区", - //66-70 - L"作战失败", //ENEMY_ENCOUNTER_CODE - L"致命的伏击", //ENEMY_AMBUSH_CODE - L"杀光了敌军的伏兵", - L"攻击失败", //ENTERING_ENEMY_SECTOR_CODE - L"攻击成功!", - //71-75 - L"异形攻击", //CREATURE_ATTACK_CODE - L"被血猫吃掉了", //BLOODCAT_AMBUSH_CODE - L"宰掉了血猫", - L"%s被干掉了", - L"把一个恐怖分子的头颅给了Carmen", - //76-80 - L"Slay走了", - L"干掉了%s", - L"碰到了Waldo飞机机械师。",//L"Met Waldo - aircraft mechanic.", - L"直升机维修开始。预计时间: %d小时(s)。",//L"Helicopter repairs started. Estimated time: %d hour(s).", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"N/A", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"邮箱", - L"网页", - L"财务", - L"人事", - L"日志", - L"文件", - L"关闭", - L"Sir-FER 4.0 简体中文版", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"A.I.M", - L"Bobby Ray's", - L"I.M.P", - L"M.E.R.C", - L"公墓", - L"花店", - L" M.I.S 保险公司", - L"取消", - L"百科全书", - L"简报室", - L"战役历史", - L"佣兵之家", //L"MeLoDY", - L"世界卫生组织", //L"WHO",  - L"安保公司", //L"Kerberus", - L"民兵总览",//L"Militia Overview", - L"R.I.S", - L"工厂", //L"Factories", - L"A.R.C", //L"A.R.C", -}; - -STR16 pBookmarkTitle[] = -{ - L"收藏夹", - L"右击以放进收藏夹,便于以后访问本页面。", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"下载...", - L"重载...", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"好的", - L"拿取", // take money from merc - L"给予", //give money to merc - L"取消", // cancel transaction - L"清除", //clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"状态", //L"Stats", // view stats of the merc - L"更多状态", //L"More Stats", - L"雇佣合同", //L"Employment", - L"物品清单", //L"Inventory", // view the inventory of the merc -}; - -STR16 sATMText[ ]= -{ - L"转帐?", // transfer funds to merc? - L"确定?", // are we certain? - L"输入金额", // enter the amount you want to transfer to merc - L"选择类型", // select the type of transfer to merc - L"资金不足", //not enough money to transfer to merc - L"必须是$10的倍数", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"错误", - L"服务器没有DNS入口。", - L"请检查URL地址,再次尝试连接。", - L"好的", - L"主机连接时断时续。预计需要较长的传输时间。", -}; - - -STR16 pPersonnelString[] = -{ - L"佣兵: ", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0 简体中文版", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"A.I.M", - L"A.I.M 成员", - L"A.I.M 肖像", // a mug shot is another name for a portrait - L"A.I.M 排序", - L"A.I.M", - L"A.I.M 前成员", - L"A.I.M 规则", - L"A.I.M 历史", - L"A.I.M 链接", - L"M.E.R.C", - L"M.E.R.C 账号", - L"M.E.R.C 注册", - L"M.E.R.C 索引", - L"Bobby Ray 商店", - L"Bobby Ray - 枪械", - L"Bobby Ray - 弹药", - L"Bobby Ray - 护甲", - L"Bobby Ray - 杂货", //"Bobby Ray's - Misc", //misc is an abbreviation for miscellaneous - L"Bobby Ray - 二手货", - L"Bobby Ray - 邮购", - L"I.M.P", - L"I.M.P", - L"联合花卉服务公司", - L"联合花卉服务公司 - 花卉", - L"联合花卉服务公司 - 订单", - L"联合花卉服务公司 - 贺卡", - L"Malleus, Incus & Stapes 保险公司", - L"信息", - L"合同", - L"评论", - L"McGillicutty 公墓", - L"", - L"无法找到URL。", - L"%s新闻发布会 - 战役总结", - L"%s新闻发布会 - 战役报告", - L"%s新闻发布会 - 最新消息", - L"%s新闻发布会 - 关于我们", - L"佣兵之家 - 关于我们", //L"Mercs Love or Dislike You - About us", - L"佣兵之家 - 队伍分析", //L"Mercs Love or Dislike You - Analyze a team", - L"佣兵之家 - 成对分析", //L"Mercs Love or Dislike You - Pairwise comparison", - L"佣兵之家 - 个人分析", //L"Mercs Love or Dislike You - Personality", - L"世界卫生组织 - 关于世界卫生组织", //L"WHO - About WHO", - L"世界卫生组织 - Arulco的疾病", //L"WHO - Disease in Arulco", - L"世界卫生组织 - 有用的贴士", //L"WHO - Helpful Tips", - L"Kerberus安保公司 - 关于我们", //L"Kerberus - About Us", - L"Kerberus安保公司 - 雇佣队伍", //L"Kerberus - Hire a Team", - L"Kerberus安保公司 - 独立协议", //L"Kerberus - Individual Contracts", - L"民兵总览", //L"Militia Overview", - L"侦察情报局 - 情报需求", //L"Recon Intelligence Services - Information Requests", - L"侦察情报局 - 情报验证", //L"Recon Intelligence Services - Information Verification", - L"侦察情报局 - 关于我们", //L"Recon Intelligence Services - About us", - L"工厂概况", //L"Factory Overview", - L"Bobby Ray - 最近的运货", - L"百科全书", - L"百科全书 - 数据", - L"简报室", - L"简报室 - 数据", - L"", //LAPTOP_MODE_BRIEFING_ROOM_ENTER - L"", //LAPTOP_MODE_AIM_MEMBERS_ARCHIVES_NEW - L"A.R.C", //L"A.R.C", -}; - -STR16 pShowBookmarkString[] = -{ - L"Sir 帮助",//L"Sir-Help", - L"再次点击页面以放进收藏夹。", -}; - -STR16 pLaptopTitles[] = -{ - L"邮箱", - L"文件查看器", - L"人事", - L"帐簿", - L"日志", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"阵亡", - L"解雇", - L"其他: ", - L"结婚", - L"合同到期", - L"退出", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"当前成员: ", - L"离队成员: ", - L"每日花费: ", - L"最高日薪: ", - L"最低日薪: ", - L"行动中牺牲: ", - L"解雇: ", - L"其他: ", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"最低", - L"平均", - L"最高", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"生命", - L"敏捷", - L"灵巧", - L"力量", - L"领导", - L"智慧", - L"级别", - L"枪法", - L"机械", - L"爆破", - L"医疗", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"合同", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"继续", - L"停止", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"你在这个地区战败了!", - L"敌人冷酷无情地处死了你的队员!", - L"你昏迷的队员被俘虏了!", - L"你的队员被敌军俘虏了。", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"上一页", - L"下一页", - L"接受", - L"清除", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"上一页", - L"下一页", -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"支付", - L"主页", - L"账号:", - L"佣兵", - L"日数", - L"日薪", //5 - L"索价", - L"合计:", - L"你确定要支付%s吗?", - L"%s (+装备)", //L"%s (+gear)", -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"上一页", - L"下一页", -}; - - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"生命", - L"敏捷", - L"灵巧", - L"力量", - L"领导", - L"智慧", - L"级别", - L"枪法", - L"机械", - L"爆破", - L"医疗", - - L"上一位", //"Previous", - L"雇佣", //"Hire", - L"下一位", //"Next", - L"附加信息", //"Additional Info", - L"主页", //"Home", - L"已雇佣", //"Hired", - L"日薪:", //"Salary:", - L"每日", //"per Day", - L"装备:", //"Gear:", - L"合计:", //"Total:", - L"阵亡", //"Deceased", - - L"你的队伍已经满员了。", //L"You have a full team of mercs already.", - L"购买装备?", //"Buy Equipment?", - L"不可雇佣", //"Unavailable", - L"未结账单", //L"Unsettled Bills", - L"生平", //L"Bio", - L"物品", //L"Inv", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"开户", //"Open Account", - L"取消", //"Cancel", - L"你没有帐户。你希望开一个吗?", //"You have no account. Would you like to open one?", -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L" Speck T. Kline 创办者和拥有者", - L"开户点击这里", //"To open an account press here", - L"查看帐户点击这里", //"To view account press here", - L"查看文件点击这里", //"To view files press here", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"转账失败,暂无可用资金。", -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"McGillicutty公墓: 1983开业,办理家庭悼念业务。", - L"葬礼部经理兼A.I.M前佣兵 Murray \"Pops\" McGillicutty是一名经验丰富、业务熟练的殡仪业者。", - L"Pops跟死亡和葬礼打了一辈子交道,他非常熟悉该业务。", - L"McGillicutty公墓提供各种各样的悼念服务: 从可以依靠着哭泣的肩膀到对严重变形的遗体做美容美体服务。", - L"McGillicutty公墓是你所爱的人的安息地。", - - // Text for the various links available at the bottom of the page - L"献花", - L"骨灰盒", - L"火葬服务", - L"安排葬礼", - L"葬礼规则", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"很抱歉,由于家里有人去世,本网站的剩余部分尚未完成。一旦解决了宣读遗嘱和财产分配问题,本网站会尽快建设好。", - L"很抱歉,但是,现在还是测试期间,请以后再来访问。", -}; - -// Text for the florist Home page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"花卉", - - //Address of United Florist - - L"\"我们空投至任何地区\"",//L"\"We air-drop anywhere\"", - L"1-555-SCENT-ME", - L"333 NoseGay Dr, Seedy City, CA USA 90210", - L"http://www.scent-me.com", - - // detail of the florist page - - L"我们快速高效!", - L"保证把鲜花在第二天送到世界上大部分地区,但有少量限制。", - L"保证价格是世界上最低廉的!", - L"向我们反应比我们价格更低的送花服务广告,我们会送你一打绝对免费的玫瑰。", - L"自从1981年来,我们送植物、送动物、送鲜花。", - L"我们雇请了被颁发过勋章的前轰炸机飞行员,他们能把你的鲜花空投在指定位置的十英里半径内。总是这样 - 每次这样!", - L"让我们满足你对鲜花的品位。", - L"让Bruce,我们的世界闻名的花卉设计师,从我们的花房里为你亲手摘取最新鲜、最优质的花束。", - L"还有请记住,如果我们没有你要的花,我们能种出来 - 很快!", -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"后退", //"Back", - L"发送", //"Send", - L"清除", //"Clear", - L"花卉", //"Gallery", - - L"花卉名称: ", //"Name of Bouquet:", - L"价格: ", //"Price:",//5 - L"订单号: ", //"Order Number:", - L"送货日期", //"Delivery Date", - L"第二天", //"next day", - L"慢慢送去", //"gets there when it gets there", - L"送货目的地", //"Delivery Location",//10 - L"额外服务", //"Additional Services", - L"变形的花卉($10)", //"Crushed Bouquet($10)", - L"黑玫瑰($20)", //"Black Roses($20)", - L"枯萎的花卉($10)", //"Wilted Bouquet($10)", - L"水果蛋糕(如果有的话)($10)", //"Fruit Cake (if available)($10)", //15 - L"私人密语: ", //"Personal Sentiments:", - L"你写的话不能多于75字。", - L"...或者选择我们提供的", //L"...or select from one of our", - - L"标准贺卡", //"STANDARDIZED CARDS", - L"传单信息", //"Billing Information", //20 - - //The text that goes beside the area where the user can enter their name - - L"姓名: ", //"Name:", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"上一页", //abbreviation for previous - L"下一页", //abbreviation for next - - L"点击你想要订购的花卉。", - L"请注意: 为了防止运输中的枯萎和变形,每束花另收$10包装费。", - - //text on the button - - L"主页", //"Home", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"请点击你想要订购的贺卡", //"Click on your selection", - L"后退", //"Back", -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"订单", //"Order Form", //Title of the page - L"数量", //"Qty", // The number of items ordered - L"重量(%s)", //"Weight (%s)", // The weight of the item - L"物品名称", //"Item Name", // The name of the item - L"物品单价", //"Unit Price", // the item's weight - L"总价", //"Total", //5 // The total price of all of items of the same type - L"全部物品总价", //"Sub-Total", // The sub total of all the item totals added - L"运费(视目的地而定)", // "S&H (See Delivery Loc.)", // S&H is an acronym for Shipping and Handling - L"全部费用", //"Grand Total", // The grand total of all item totals + the shipping and handling - L"送货目的地", //"Delivery Location", - L"运输速度", //"Shipping Speed", //10 // See below - L"运费(每%s)", //"Cost (per %s.)", // The cost to ship the items - L"连夜速递", //"Overnight Express", // Gets deliverd the next day - L"2工作日", //"2 Business Days", // Gets delivered in 2 days - L"标准服务", //"Standard Service", // Gets delivered in 3 days - L"清除订单", //"Clear Order", //15// Clears the order page - L"确认订单", //"Accept Order", // Accept the order - L"后退", //"Back", // text on the button that returns to the previous page - L"主页", //"Home", // Text on the button that returns to the home page - L"*代表二手货", //"* Denotes Used Items", // Disclaimer stating that the item is used - L"你无法支付所需费用。", //"You can't afford to pay for this.", //20 // A popup message that to warn of not enough money - L"<无>", //"", // Gets displayed when there is no valid city selected - L"你确定要把该订单里订购的物品送往%s吗?", //"Are you sure you want to send this order to %s?", // A popup that asks if the city selected is the correct one - L"包裹重量**", //"Package Weight**", // Displays the weight of the package - L"** 最小重量: ", //"** Min. Wt.", // Disclaimer states that there is a minimum weight for the package - L"运货", //"Shipments", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"手枪", //"Pistol", - L"自动手枪", //"M. Pistol", - L"冲锋枪", //"SMG", - L"歩枪", //"Rifle", - L"狙击歩枪", //"SN Rifle", - L"突击歩枪", //"AS Rifle", - L"机枪", //"MG", - L"霰弹枪", //"Shotgun", - L"重武器", //"Heavy W.", - - // Ammo - L"手枪", //"Pistol", - L"自动手枪", //"M. Pistol", - L"冲锋枪", //"SMG", - L"歩枪", //"Rifle", - L"狙击歩枪", //"SN Rifle", - L"突击歩枪", //"AS Rifle", - L"机枪", //"MG", - L"霰弹枪", //"Shotgun", - - // Used - L"枪械", //"Guns", - L"护甲", //"Armor", - L"携行具", //"LBE Gear", - L"杂货", //"Misc", - - // Armour - L"头盔", //"Helmets", - L"防弹衣", //"Vests", - L"作战裤", //"Leggings", - L"防弹板", //"Plates", - - // Misc - L"刀具", //"Blades", - L"飞刀", //"Th. Knives", - L"格斗武器", //"Blunt W.", - L"手雷/榴弹", //"Grenades", - L"炸药", //"Bombs", - L"医疗用品", //"Med. Kits", - L"工具套装", //"Kits", - L"头部装备", //"Face Items", - L"携行具", //"LBE Gear", - L"瞄具", // Madd: new BR filters - L"握把/脚架", - L"消音类", - L"枪托", - L"弹匣/板机", - L"其它附件", - L"其它", //"Misc.", -}; - - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"订购", //"To Order", // Title - // instructions on how to order - L"请点击该物品。如果要订购多件,请连续点击。右击以减少要订购的数量。一旦选好了你要订购的,请前往订单页面。", - - //Text on the buttons to go the various links - - L"上一页", //"Previous Items", // - L"枪械", //"Guns", //3 - L"弹药", //"Ammo", //4 - L"护甲", //"Armor", //5 - L"杂货", //"Misc.", //6 //misc is an abbreviation for miscellaneous - L"二手货", //"Used", //7 - L"下一页", //"More Items", - L"订货单", //"ORDER FORM", - L"主页", //"Home", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"你的队伍有", //"Your team has",//11 - L"件可使用该类型弹药的武器", //"weapon(s) that use this type of ammo", //12 - - //The following lines provide information on the items - - L"重量: ", //"Weight:", // Weight of all the items of the same type - L"口径: ", //"Cal:", // the caliber of the gun - L"载弹量: ", //"Mag:", // number of rounds of ammo the Magazine can hold - L"射程: ", //"Rng:", // The range of the gun - L"杀伤力: ", //"Dam:", // Damage of the weapon - L"射速: ", //"ROF:", // Weapon's Rate Of Fire, acronym ROF - L"AP: ", //L"AP:", // Weapon's Action Points, acronym AP - L"晕眩: ", //L"Stun:", // Weapon's Stun Damage - L"防护: ", //L"Protect:", // Armour's Protection - L"伪装: ", //L"Camo:", // Armour's Camouflage - L"侵彻力:", //L"Armor Pen:", Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"翻搅力:", //L"Dmg Mod:", Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"弹丸量:", //L"Projectiles:", Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"单价: ", //"Cost:", // Cost of the item - L"库存: ", //"In stock:", // The number of items still in the store's inventory - L"购买量: ", //"Qty on Order:", // The number of items on order - L"已损坏", //"Damaged", // If the item is damaged - L"重量: ", //"Weight:", // the Weight of the item - L"小计: ", //"SubTotal:", // The total cost of all items on order - L"* %% 可用", //"* %% Functional", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"靠!我们这里的在线订单一次只接受", //L"Darn! This on-line order form will only accept ", First part - L"件物品的订购。如果你想要订购更多东西(我们希望如此),请接受我们的歉意,再开一份订单。", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"抱歉,这种商品我们现在正在进货。请稍后再来订购。", - - //A popup that tells the user that the store is temporarily sold out - - L"抱歉,这种商品我们现在缺货。", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"这里有最新最火爆的军火供应", //"This is the place to be for the newest and hottest in weaponry and military supplies", - L"我们提供硬件满足您所有破坏欲望!", //"We can find the perfect solution for all your explosives needs", - L"二手货", //"Used and refitted items", - - //Text for the various links to the sub pages - - L"杂货", //"Miscellaneous", - L"枪械", //"GUNS", - L"弹药", //"AMMUNITION", //5 - L"护甲", //"ARMOR", - - //Details on the web site - - L"独此一家,别无分店!", //"If we don't sell it, you can't get it!", - L"网站建设中", //"Under Construction", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"A.I.M 成员", //"A.I.M. Members", // Title - // Title for the way to sort - L"排序: ", //"Sort By:", - - // sort by... - - L"薪金", //"Price", - L"级别", //"Experience", - L"枪法", //"Marksmanship", - L"机械", //"Mechanical", - L"爆破", //"Explosives", - L"医疗", //"Medical", - L"生命", //"Health", - L"敏捷", //"Agility", - L"灵巧", //"Dexterity", - L"力量", //"Strength", - L"领导", //"Leadership", - L"智慧", //"Wisdom", - L"姓名", //"Name", - - //Text of the links to other AIM pages - - L"查看佣兵的肖像索引", //"View the mercenary mug shot index", - L"查看单独的佣兵档案", //"Review the individual mercenary's file", - L"浏览 A.I.M 前成员", //"Browse the A.I.M. Alumni Gallery", - - // text to display how the entries will be sorted - - L"升序", //"Ascending", - L"降序", //"Descending", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"上一页", //"Previous Page", - L"AIM主页", //"AIM HomePage", - L"规则索引", //"Policy Index", - L"下一页", //"Next Page", - L"不同意", //Disagree", - L"同意", //"Agree", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"鼠标左击", //"Left Click", - L"联系佣兵。", //"to Contact Merc.", - L"鼠标右击", //"Right Click", - L"回到肖像索引。", //"for Mug Shot Index.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"生命", - L"敏捷", - L"灵巧", - L"力量", - L"领导", - L"智慧", - L"级别", - L"枪法", - L"机械", - L"爆破", - L"医疗", - - // the contract expenses' area - - L"费用", //"Fee", - L"合同", //"Contract", - L"一日", //"one day", - L"一周", //"one week", - L"两周", //"two weeks", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"上一位", //"Previous", - L"联系", //"Contact", - L"下一位", //"Next", - - L"附加信息", //"Additional Info", // Title for the additional info for the merc's bio - L"现役成员", //"Active Members", //20 // Title of the page - L"可选装备:", //"Optional Gear:", // Displays the optional gear cost - L"装备", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's - L"所需医疗保证金", //"MEDICAL deposit required", // If the merc required a medical deposit, this is displayed - L"装备1", // Text on Starting Gear Selection Button 1 - L"装备2", // Text on Starting Gear Selection Button 2 - L"装备3", // Text on Starting Gear Selection Button 3 - L"装备4", // Text on Starting Gear Selection Button 4 - L"装备5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"合同总价:", //"Contract Charge:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"一日", //"One Day", - L"一周", //"One Week", - L"两周", //"Two Weeks", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"不买装备", //"No Equipment", - L"购买装备", //"Buy Equipment", - - // Text on the Buttons - - L"转帐", //"TRANSFER FUNDS", // to actually hire the merc - L"取消", //"CANCEL", // go back to the previous menu - L"雇佣", //"HIRE", // go to menu in which you can hire the merc - L"挂断", //"HANG UP", // stops talking with the merc - L"完成", //"OK", - L"留言", //"LEAVE MESSAGE", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"视频通讯: ", //"Video Conferencing with", - L"建立连接……", //"Connecting. . .", - - L"包括医保", //"with medical", // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"电子转帐成功", //"ELECTRONIC FUNDS TRANSFER SUCCESSFUL", // You hired the merc - L"无法处理转帐", //"UNABLE TO PROCESS TRANSFER", // Player doesn't have enough money, message 1 - L"资金不足", //"INSUFFICIENT FUNDS", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"执行任务中", //"On Assignment" - L"请留言", //"Please Leave Message", - L"阵亡", //"Deceased", - - //If you try to hire more mercs than game can support - - L"你的队伍已经满员了。", //L"You have a full team of mercs already.", - - L"预录消息", //"Pre-recorded message", - L"留言已记录", //"Message recorded", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"A.I.M 链接",// L"A.I.M. Links", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"A.I.M 历史", //"A.I.M. History", //Title - - // Text on the buttons at the bottom of the page - - L"上一页", //"Previous Page", - L"主页", //"Home", - L"A.I.M 前成员", //"A.I.M. Alumni", - L"下一页", //"Next Page", -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"薪金", //"Price", - L"级别", //"Experience", - L"枪法", //"Marksmanship", - L"机械", //"Mechanical", - L"爆破", //"Explosives", - L"医疗", //"Medical", - L"生命", //"Health", - L"敏捷", //"Agility", - L"灵巧", //"Dexterity", - L"力量", //"Strength", - L"领导", //"Leadership", - L"智慧", //"Wisdom", - L"姓名", //"Name", - - // The title of the page, the above text gets added at the end of this text - - L"根据%s升序排列的A.I.M成员", //"A.I.M. Members Sorted Ascending By %s", - L"根据%s降序排列的A.I.M成员", //"A.I.M. Members Sorted Descending By %s", - - // Instructions to the players on what to do - - L"鼠标左击", //"Left Click", - L"选择佣兵", //"To Select Merc", //10 - L"鼠标右击", //"Right Click", - L"回到排序选项", //"For Sorting Options", - - // Gets displayed on top of the merc's portrait if they are... - - L"离开", //"Away", - L"阵亡", //"Deceased", //14 - L"任务中", //"On Assign", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"第一页", - L"第二页", - L"第三页", - - L"A.I.M 前成员", - - L"完成", - L"下一页", -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"A.I.M和A.I.M图标在世界大多数国家已经注册。", - L"版权所有,仿冒必究。", - L"Copyright 1998-1999 A.I.M, Ltd. All rights reserved。", - - //Text for an advertisement that gets displayed on the AIM page - - L"联合花卉服务公司", - L"\"我们将花空运到任何地方\"", //10 - L"把活干好", - L"... 第一次", - L"枪械和杂货,只此一家,别无分店。", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"主页", //"Home", - L"成员", //"Members", - L"前成员", //"Alumni", - L"规则", //"Policies", - L"历史", //"History", - L"链接", //"Links", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"库存商品", //"MERCHANDISE IN STOCK", //Header for the merchandise available - L"页面", //"PAGE", //The current store inventory page being displayed - L"总价格", //"TOTAL COST", //The total cost of the the items in the Dealer inventory area - L"总价值", //"TOTAL VALUE", //The total value of items player wishes to sell - L"估价", //"EVALUATE", //Button text for dealer to evaluate items the player wants to sell - L"确认交易", //"TRANSACTION", //Button text which completes the deal. Makes the transaction. - L"完成", //"DONE", //Text for the button which will leave the shopkeeper interface. - L"修理费", //"REPAIR COST", //The amount the dealer will charge to repair the merc's goods - L"1小时", //"1 HOUR",// SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d小时", //"%d HOURS",// PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"已经修好", //"REPAIRED",// Text appearing over an item that has just been repaired by a NPC repairman dealer - L"你没有空余的位置来放东西了。", //"There is not enough room in your offer area.",//Message box that tells the user there is no more room to put there stuff - L"%d分钟", //"%d MINUTES", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"把物品放在地上。", //"Drop Item To Ground.", - L"特价", //L"BUDGET", -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"确认", //"OK", // Transfer the money - L"拿", //"Take", // Take money from the player - L"给", //"Give", // Give money to the player - L"取消", //"Cancel", // Cancel the transfer - L"清除", //"Clear", // Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"选择类型", //"Select Type", // tells the user to select either to give or take from the merc - L"输入数额", //"Enter Amount", // Enter the amount to transfer - L"把钱给佣兵", //"Transfer Funds To Merc",// Giving money to the merc - L"从佣兵那拿钱", //"Transfer Funds From Merc", // Taking money from the merc - L"资金不足", //"Insufficient Funds", // Not enough money to transfer - L"余额", //"Balance", // Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"你要从主帐户中提取%s来支付吗?", - L"资金不足。你缺少%s。", - L"你要从主帐户中提取%s来支付吗?", - L"请求商人开始交易", - L"请求商人修理选定物品", - L"结束对话", - L"当前余额", - - L"你要使用%s情报来支付差额吗?", //L"Do you want to transfer %s Intel to cover the difference?", - L"你要使用%s情报来支付吗?", //L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"保存游戏", //"Save Game", - L"载入游戏", //"Load Game", - L"退出", //"Quit", - L"下一页", //L"Next", - L"上一页", //L"Prev", - L"完成", //"Done", - L"1.13 特征功能", //L"1.13 Features", - L"特征选项", //L"New in 1.13", - L"选项", //L"Options", - - //Text above the slider bars - L"特效", //"Effects", - L"语音", //"Speech", - L"音乐", //"Music", - - //Confirmation pop when the user selects.. - L"退出并回到游戏主菜单?", - - L"你必须选择“语音”和“对话显示”中的至少一项。", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 特征功能", //L"1.13 FEATURE TOGGLES", - L"在游戏中更改这些选项将影响您的游戏体验。(更改后必须重新开始新游戏)", //L"Changing these settings during a campaign will affect your experience.", - L"将鼠标悬停在功能按钮上以获得更多信息。某些功能需要在JA2_Options.ini(或其他文件)中设置。", //L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"开启特征功能", //L"Use These Overrides", - L"新NCTH瞄准系统", //L"New Chance to Hit", - L"物品全掉功能", //L"Enemies Drop All", - L"物品全掉功能(物品几率损坏)", //L"Enemies Drop All (Damaged)", - L"火力压制功能", //L"Suppression Fire", - L"女王反击Drassen功能", //L"Drassen Counterattack", - L"女王反击所有城镇功能", //L"City Counterattacks", - L"女王多次反击功能", //L"Multiple Counterattacks", - L"情报功能", //L"Intel", - L"俘虏功能", //L"Prisoners", - L"矿井管理功能", //L"Mines Require Workers", - L"敌军伏击功能", //L"Enemy Ambushes", - L"女王刺客功能", //L"Enemy Assassins", - L"敌军角色功能", //L"Enemy Roles", - L"敌军角色功能:医生", //L"Enemy Role: Medic", - L"敌军角色功能:军官", //L"Enemy Role: Officer", - L"敌军角色功能:将军", //L"Enemy Role: General", - L"Kerberus安保公司功能", //L"Kerberus", - L"食物系统", //L"Mercs Need Food", - L"疾病系统", //L"Disease", - L"动态观点功能", //L"Dynamic Opinions", - L"动态对话功能", //L"Dynamic Dialogue", - L"敌军战略司令部功能", //L"Arulco Strategic Division", - L"敌军直升机功能", //L"ASD: Helicopters", - L"敌军战斗车功能", //L"Enemy Vehicles Can Move", - L"僵尸系统", //L"Zombies", - L"血猫袭击功能", //L"Bloodcat Raids", - L"土匪袭击功能", //L"Bandit Raids", - L"僵尸袭击功能", //L"Zombie Raids", - L"民兵储备功能", //L"Militia Volunteer Pool", - L"民兵战术命令功能", //L"Tactical Militia Command", - L"民兵战略命令功能", //L"Strategic Militia Command", - L"民兵武装装备功能", //L"Militia Uses Sector Equipment", - L"民兵需要资源功能", //L"Militia Requires Resources", - L"强化近战功能", //L"Enhanced Close Combat", - L"新中断功能", //L"Improved Interrupt System", - L"武器过热功能", //L"Weapon Overheating", - L"天气功能:下雨", //L"Weather: Rain", - L"天气功能:闪电", //L"Weather: Lightning", - L"天气功能:沙尘暴", //L"Weather: Sandstorms", - L"天气功能:暴风雪", //L"Weather: Snow", - L"随机事件功能", //L"Mini Events", - L"反抗军司令部功能", //L"Arulco Rebel Command", - L"战略运输队", //L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|开|启|特|征|功|能\n \n允许以下功能覆盖JA2_Options.ini中的设置。\n \n将鼠标悬停在按钮上查看具体替换的项目内容。\n \n如果禁用此选项功能将以JA2_Options.ini中设置为准。\n \n", //L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|新|N|C|T|H|瞄|准|系|统\n \n覆盖 [Tactical Gameplay Settings] NCTH\n \n启用新命中系统。\n \n详细的内容设定请查看CTHConstants.ini。\n \n", //L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|敌|人|物|品|全|掉|功|能\n \n覆盖 [Tactical Difficulty Settings] DROP_ALL\n \n敌人死亡时会掉落所有物品。\n \n不能同\"物品全掉功能(物品几率损坏)\"一起使用。\n \n", //L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|敌|人|物|品|全|掉|功|能|(|物|品|几|率|损|坏|)\n \n覆盖 [Tactical Difficulty Settings] DROP_ALL\n \n敌人死亡时会掉落所有的物品,并且所掉落的物品有几率会严重损坏。\n \n不能同\"物品全掉功能\"一起使用。\n \n", //L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|火|力|压|制|功|能\n \n覆盖 [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \n角色会逐渐受到压制损失一定比例的AP。\n \n有关配置选项,请参阅[Tactical Suppression Fire Settings]。\n \n", //L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|女|王|反|击|D|r|a|s|s|e|n|功|能\n \n覆盖 [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \n女王向Drassen城发起了大规模反击。\n \n", //L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|女|王|反|击|所|有|城|镇|功|能\n \n覆盖 [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \n女王可以向所有城镇发动大规模反击。\n \n不能同\"女王多次反击功能\"一起使用。\n \n", // L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|女|王|多|次|反|击|功|能\n \n覆盖 [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \n女王可以向所有城镇发动大规模反击。\n \n这可能会发生多次反击。\n \n这会使游戏变得更难。\n \n", //L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|情|报|功|能\n \n覆盖 [Intel Settings] RESOURCE_INTEL\n \n通过一些秘密行动获得的新资源。\n \n", //L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|俘|虏|功|能\n \n覆盖 [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \n允许俘虏敌军并审问他们。\n \n配置选项:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN\n \n", //L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|矿|井|管|理|功|能\n \n覆盖 [Financial Settings] MINE_REQUIRES_WORKERS\n \n矿井需要培训工人。\n \n配置选项:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS\n \n", //L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|敌|军|伏|击|功|能\n \n覆盖 [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \n允许敌人伏击玩家的小队。\n \n配置选项:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2\n \n", //L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|女|王|刺|客|功|能\n \n覆盖 [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \n女王将派刺客潜入你的民兵中。\n \n需要使用\"新技能系统\"。\n \n配置选项:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER\n \n", //L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|敌|军|角|色|功|能\n \n覆盖 [Tactical Enemy Role Settings] ENEMYROLES\n \n允许敌军扮演多种角色并获得一些能力。\n \n配置选项:\nENEMYROLES_TURNSTOUNCOVER\n \n", //L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|敌|军|角|色|功|能|:|医|生\n \n覆盖 [Tactical Enemy Role Settings] ENEMY_MEDICS\n \n医疗兵将出现在敌军角色中。\n \n需要开启\"敌军角色功能\"。\n \n配置选项:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF\n \n", //L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|敌|军|角|色|功|能|:|军|官\n \n覆盖 [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \n军官将出现在敌军角色中。\n \n需要开启\"敌军角色功能\"。\n \n配置选项:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS\n \n", //L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|敌|军|角|色|功|能|:|将|军\n \n覆盖 [Tactical Enemy Role Settings] ENEMY_GENERALS\n \n将军会提高敌人的战略移动和决策速度。\n \n需要开启\"敌军角色功能\"。\n \n配置选项:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS\n \n", //L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s|安|保|公|司|功|能\n \n覆盖 [PMC Settings] PMC\n \n一家私人军事承包商,允许玩家雇佣安保力量。\n \n配置选项:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS\n \n", //L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|食|物|系|统\n \n覆盖 [Tactical Food Settings] FOOD\n \n你的佣兵需要食物和水才能生存。\n \n配置选项:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS\n \n", //L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|疾|病|系|统\n \n覆盖 [Disease Settings] DISEASE\n \n你的佣兵会生病。\n \n配置选项:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS\n \n", //L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|动|态|观|点|功|能\n \n覆盖 [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \n佣兵可以互相发表意见,影响士气。\n \n配置选项:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\n \n请查看Morale_Settings.ini文件中的[Dynamic Opinion Modifiers Settings]内容。\n \n", //L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|动|态|对|话|功|能\n \n覆盖 [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \n佣兵可以发表简短的评论,改变彼此之间的关系。\n \n要求\"动态观点功能\"处于开启状态。\n \n配置选项:\nDYNAMIC_DIALOGUE_TIME_OFFSET\n \n", //L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|敌|军|战|略|司|令|部|功|能\n \n覆盖 [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \n女王将获得机械化部队。\n \n配置选项:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS\n \n", //L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|敌|军|直|升|机|功|能\n \n覆盖 [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \n女王将使用直升机快速部署部队。\n \n需要开启\"敌军战略司令部功能\"。\n \n配置选项:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME\n \n", //L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|敌|军|战|斗|车|功|能\n \n覆盖 [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \n敌军的战斗吉普车和坦克可以在战斗中移动。\n \n配置选项:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR\n \n", //L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|僵|尸|系|统\n \n覆盖选项中的\"僵尸模式\"。\n \n生化危机!九死一生!\n \n配置选项:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL\n \n", //L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|血|猫|袭|击|功|能\n \n覆盖 [Raid Settings] RAID_BLOODCATS\n \n血猫将对你发动夜袭。\n \n配置选项:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS\n \n", //L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|土|匪|袭|击|功|能\n \n覆盖 [Raid Settings] RAID_BANDITS\n \n土匪将伺机对你的城镇发动袭击。\n \n配置选项:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS\n \n", //L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|僵|尸|袭|击|功|能\n \n覆盖 [Raid Settings] RAID_ZOMBIES\n \n丧尸突袭!\n \n需要开启\"僵尸系统\"。\n \n配置选项:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES\n \n", //L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|民|兵|储|备|功|能\n \n覆盖 [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \n没有志愿者就不能训练民兵。\n \n配置选项:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY\n \n", //L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|民|兵|战|术|命|令|功|能\n \n覆盖 [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \n允许在战术界面对佣兵下达战术命令。\n \n", //L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|民|兵|战|略|命|令|功|能\n \n覆盖 [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \n允许在战略界面对民兵下达移动命令。\n \n配置选项:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC\n \n", //L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|民|兵|武|装|装|备|功|能\n \n覆盖 [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \n民兵的武器装备需要从当前区域获取。\n \n与\"民兵需要资源功能\"不兼容。\n \n配置选项:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS\n \n", //L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|民|兵|需|要|资|源|功|能\n \n覆盖 [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \n训练和升级民兵需要消耗资源。\n \n与\"民兵武装装备功能\"不兼容。\n \n配置选项:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN\n \n", //L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|强|化|近|战|功|能\n \n覆盖 [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \n对近战系统的全面改进。\n \n", //L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|新|中|断|功|能\n \n覆盖 [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \n对中断机制的全面改进。\n \n配置选项:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING\n \n", //L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|武|器|过|热|功|能\n \n覆盖 [Tactical Weapon Overheating Settings] OVERHEATING\n \n连续射击将导致武器过热。\n \n配置选项:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL\n \n", //L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|天|气|功|能|:|下|雨\n \n覆盖 [Tactical Weather Settings] ALLOW_RAIN\n \n下雨会降低能见度。\n \n配置选项:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN\n \n", //L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|天|气|功|能|:|闪|电\n \n覆盖 [Tactical Weather Settings] ALLOW_LIGHTNING\n \n暴雨期间可能发生闪电。\n需要\"天气功能:下雨\"\n \n配置选项:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM\n \n", //L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|天|气|功|能|:|沙|尘|暴\n \n覆盖 [Tactical Weather Settings] ALLOW_SANDSTORMS\n \n沙尘暴会使战场变得更加困难。\n \n配置选项:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM\n \n", //L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|天|气|功|能|:|暴|风|雪\n \n覆盖 [Tactical Weather Settings] ALLOW_SNOW\n \n暴风雪降低了能见度。\n \n配置选项:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW\n \n", //L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|随|机|事|件|功|能\n \n覆盖 [Mini Events Settings] MINI_EVENTS_ENABLED\n \n可能发生一些随机互动事件。\n \n配置选项:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \n详细信息请查看MiniEvents.lua。\n \n", //L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|反|抗|军|司|令|部|功|能\n \n覆盖 [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \n允许你升级占领的城镇,控制反抗军在战略层面上运作。\n \n详细的内容设定请查看RebelCommand_Settings.ini。\n \n", //L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|战|略|运|输|队\n \n覆盖 [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \n运输队在地图上运送有价值的装备。\n \n配置选项: \nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", //L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"这个选项可以开启一些1.13新功能,启用后以下选项的生效优先级将高于JA2_Options.ini文件中的设置。如果禁用此项,以下选项将不生效。", //L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"新NCTH瞄准系统对命中机制进行了全面改进,在射击时需要更复杂的计算和更多的变量。", //L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"如果启用敌人死亡时会掉落所有的物品,否则将使用标准掉落。", //L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"如果启用敌人死亡时会掉落所有的物品,并且所掉落的物品有几率会严重损坏。", //L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"火力压制功能,是控制战场的一种方式。在重火力下,角色会逐渐受到压制损失一定比例的AP,在压制下会成为负数,这表示在下一回也会损失AP。若角色丧失了下一回合的全部AP,则被完全压制。压制的目的是压榨敌人的AP,让其不能移动或还击。注意,敌人也会对你这么做!", //L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"该选项允许女王对Drassen城市进行反攻。若允许,这将使游戏的初始阶段变得困难。不建议新手玩家启用此功能!", //L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"该选项允许女王对所有的城市进行反攻。其他城市在你攻占后女王会大规模反击。", //L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"如果女王反击对你来说仍然不够,试着启用它!女王不仅会发起反击,还可能试图同时夺回多个城市。", //L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"你可以获取和消耗情报点数。这种资源与间谍和情报贩子密切相关。可以通过间谍活动、审讯俘虏或其他方式获得情报点数。可以在黑市购买稀有武器,也可以在情报网站上购买敌人的信息。", //L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"允许抓捕俘虏。可以通过在战斗中劝降或者用手铐铐住不能行动的敌人来抓捕俘虏。被俘虏的敌人可以送到监狱中进行审问。审问会带来金钱、情报或者将敌人策反进你的民兵队伍。", //L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"在矿场上先投资才能获得它的全部收益。工人像民兵一样需要金钱和时间来训练。注意!如果失去对城镇的控制将导致工人流失!", //L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"敌军有机率会伏击你的小队。如果的你小队遭到伏击,你的小队将会出现在地图中央并被敌人包围。", //L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"女王现在会派出刺客。这些精英士兵是秘密行动的专家,他们会伪装成你的民兵,伺机对你的佣兵发动突袭。需要使用\"新技能系统\",也强烈建议使用\"新物品系统\"。", //L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"敌军中将出现各种技能类型的敌人。被观察到的士兵身边将出现一个标识身份的小图标,身份包括无线电操作员、狙击手、迫击炮炮手和持有钥匙的敌人。", //L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"需要开启\"敌军角色功能\",敌军医生会给战友进行包扎和手术。", //L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"需要开启\"敌军角色功能\",敌军的上尉(班长)和中尉(班副)将对整个小队提供战术指挥加成。", //L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"将军会为敌军提供战略加成奖励,他们会出现在敌军控制的城镇中,将军拥有自己的精英保镖,会在预感到危险时逃跑。", //L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Kerberus安保公司将会为您提供安保人员,您可以从他们的网站上雇佣有经验的安保人员充当民兵。虽然价格很高,但是你不必在花时间训练他们。", //L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"你的佣兵需要食物和水才能生存。挨饿将遭受严厉的惩罚。要注意食物的质量,小心吃坏肚子!", //L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"伤口、尸体、沼泽、昆虫都可能导致您的佣兵生病,一些疾病会引起并发症,严重时会导致死亡。医生和药品可以治疗大多数疾病,还有一些装备可以预防疾病。", //L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"佣兵会动态对话。遇到影响关系的事件时会发生对话。佣兵们会互相指责或赞美。其他佣兵也会做出回应,或根据他们的关系进行回答。", //L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"这是动态对话附加功能。允许佣兵在相互交谈时,如果IMP参与其中,您将有一个简短的窗口来根据需要建立的关系选择回复内容。", //L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"敌军战略司令部负责订购并向陆军部署机械化部队,使用从矿山获得的收入购买战车来对付你!", //L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"需要开启\"敌军战略司令部功能\",当游戏达到一定进度时,敌军战略司令部开始使用直升机部署精锐小队士兵来骚扰你。", //L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"敌人的战斗吉普车和坦克可以在战斗中四处移动,移动撞击会摧毁一些障碍物,甚至会试图碾过你的佣兵。", //L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"僵尸会从尸体中复活!(生化危机)", //L"Zombies rise from corpses!", - L"致命的血猫可以在夜间对城镇发动突袭。平民死亡将造成忠诚度降低。", //L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"土匪会袭击防御薄弱的城镇,平民死亡将造成忠诚度降低。", //L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"需要开启\"僵尸系统\",僵尸会成群的冲击城镇各区,平民死亡将造成忠诚度降低。", //L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"没有志愿者就不能继续训练民兵,控制城镇和周边的农田可以增加志愿者加入的数量。", //L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"允许您在战术地图中向民兵下达命令。要执行此操作,请与任意民兵对话,然后会出现命令菜单。使用无线电的佣兵可以向不在视野范围内的民兵下达命令。", //L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"允许您在战略地图中向民兵下达移动命令。您需要佣兵和民兵在同一区域(除非相邻区域有佣兵操作无线电或民兵指挥部有工作人员)才能发布战略移动命令。", //L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"民兵装备不会随机生成,而是从民兵目前驻扎的区域获取。您需要充分地给民兵分配装备。当一个新的区域被装载时,民兵将把他们的装备放回他们的区域。在战术地图下,通过按\"CTRL+ .\"弹出菜单,选则militia inspection手动放下物品。如果要使民兵无法接触某些装备,则在战略模式下的物品栏中对其按下\"TAB + 鼠标左键\"。", //L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"民兵需要消耗枪支、护甲、杂物才能训练,在战略地图仓库中按\"alt+鼠标右键\"将道具添加进民兵资源,绿色民兵需要消耗枪支,老兵需要枪支+盔甲,精兵消耗枪支+盔甲+杂物。", //L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"对近战系统的全面改进。头部更难被击中但会造成更多伤害,击中腿部更容易倒地,但伤害更小。偷袭将造成更多的伤害。可以拿走被击晕目标身上的道具。还有一些其它小调整。", //L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"新的中断系统(IIS)完全改变了中断发生的方式,不在是目标进入视野时发生中断,而是以若干个变量模拟士兵的反应能力来判断是否发生中断。", //L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"武器的枪管在开火时会升温,这会导致频繁的武器故障。带有可更换枪管的武器对保持冷却非常有用。", //L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"启用下雨功能。雨水会略微降低整体能见度,使人更难听到声音。", //L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"启用闪电功能。闪电会短暂显示你和敌人的位置。打雷的雷声使人的听觉变差。整体体力再生有所降低。", //L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"启用沙尘暴功能,在沙尘暴中战斗会对所有战斗人员造成明显的伤害——视力和听力范围会减少,武器退化会显著增加,呼吸也会变得更加困难。", //L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"启用暴风雪功能。在暴风雪中,更难被看到,武器退化更快,呼吸也更困难。", //L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"在游戏过程中,可能会弹出简短的事件。您可以从两个选项中选择一个,这可能会产生积极或消极的影响。事件可以影响各种各样的事情,但主要是你的佣兵。", //L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"在完成反抗军食物运送任务后,你可以访问他们的(A.R.C)指挥部网站。在这里你可以设定反抗军的政策,也可以为占领区单独设置地方政策。这将带来丰厚的奖励。作为代价,城镇的民忠会上升得更慢,所以你需要更加努力地让当地人信任你。", //L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"敌人会在地图上派遣战略运输队,如果你能找到并截获它们就可能获取有价值的装备。但是,如果让敌人的运输队完成运输任务,那么就会给敌人提供战略资源(具体视难度而定)。要想获得最好体验,建议开启\"敌军战略司令部功能\"。", //L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"保存游戏", - L"载入游戏", - L"取消", - L"选择要存档的位置", - L"选择要读档的位置", - - L"保存游戏成功", - L"保存游戏错误!", - L"载入游戏成功", - L"载入游戏错误!", - - L"存档的游戏版本不同于当前的游戏版本。读取它的话很可能游戏可以正常进行。要读取该存档吗?", - - L"存档可能已经无效。你要删除它们吗?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"存档版本已改变。如果出现问题请报告。继续?", -#else - L"试图载入老版本的存档。自动修正并载入存档?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"存档版本和游戏版本已改变。如果出现问题请报告。继续?", -#else - L"试图载入老版本的存档。你要自动更新并载入存档吗?", -#endif - - L"你确认你要将#%d位置的存档覆盖吗?", - L"你要从#号位置载入存档吗?", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"你的硬盘空间不够。你现在只有%dMB可用空间,JA2需要至少%dMB可用空间。", - - L"保存", //"Saving", //When saving a game, a message box with this string appears on the screen - - L"普通武器", //"Normal Guns", - L"包括前华约武器", //"Tons of Guns", - L"现实风格", //"Realistic style", - L"科幻风格", //"Sci Fi style", - - L"难度", //"Difficulty", - L"白金模式", //L"Platinum Mode", - - L"Bobby Ray 货品等级", - L"普通|一般", - L"一级|较多", - L"高级|很多", - L"极品|囧多", - - L"新携行系统不兼容640x480的屏幕分辨率,请重新设置分辨率。", - L"新携行系统无法使用默认的Data文件夹,请仔细读说明。", - - L"当前分辨率不支持存档文件的小队人数,请增加分辨率再试。", //L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", - L"Bobby Ray 供货量", -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"地图层次", //"Map Level", - L"你没有民兵。你需要在城镇中训练民兵。", //"You have no militia. You need to train town residents in order to have a town militia.", - L"每日收入", //"Daily Income", - L"佣兵有人寿保险", //"Merc has life insurance", - L"%s不疲劳。", //"%s isn't tired.", - L"%s行军中,不能睡觉", //"%s is on the move and can't sleep", - L"%s太累了,等会儿再试。", //"%s is too tired, try a little later.", - L"%s正在开车。", //"%s is driving.", - L"有人在睡觉时,整个队伍不能行动。", //"Squad can't move with a sleeping merc on it.", - - // stuff for contracts - L"你能支付合同所需费用,但是你的钱不够给该佣兵购买人寿保险。", - L"要给%s花费保险金%s,以延长保险合同%d天。你要付费吗?", - L"分区存货", //"Sector Inventory", - L"佣兵有医疗保证金。", //"Merc has a medical deposit.", - - // other items - L"医生", //"Medics", // people acting a field medics and bandaging wounded mercs - L"病人", //"Patients", // people who are being bandaged by a medic - L"完成", //"Done", // Continue on with the game after autobandage is complete - L"停止", //"Stop", // Stop autobandaging of patients by medics now - L"抱歉。游戏取消了该选项的功能。", - L"%s 没有工具箱。", //"%s doesn't have a repair kit.", - L"%s 没有医药箱。", //"%s doesn't have a medical kit.", - L"现在没有足够的人愿意加入民兵。", - L"%s的民兵已经训练满了。", //"%s is full of militia.", - L"佣兵有一份限时的合同。", //"Merc has a finite contract.", - L"佣兵的合同没投保", //"Merc's contract is not insured", - L"地图概况",//"Map Overview", // 24 - - // Flugente: disease texts describing what a map view does //文本描述疾病查看地图并做翻译。 - L"这个视图会展示出哪个地区爆发了瘟疫,这个数字表明,平均每个人的感染程度,颜色表示它的范围。 灰色=无病。 绿色到红色=不断升级的感染程度。", //L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", - - // Flugente: weather texts describing what a map view does - L"这个视图显示了目前的天气。没有颜色=晴天。青色为雨天。蓝色为雷暴。橙色为沙尘暴。白色为下雪",//L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", - - // Flugente: describe what intel map view does - L"这个界面显示哪一个区域与当前进行的任务相关。某些购买的情报也会显示在这里。", //L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"第%d小队在%s地区发现有人", - L"%s小队在%s地区发现有人的行踪",// L"Squad %s has noticed someone in sector %s", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"训练一队民兵要花费$", - L"同意支付吗?", - L"你无法支付。", - L"继续在%s(%s %d)训练民兵吗?", - - L"花费$", - L"( Y/N )", // abbreviated yes/no - L"", // unused - L"在%d地区训练民兵将花费$%d。%s", - - L"你无法支付$%d以供在这里训练民兵。", - L"%s的忠诚度必须达到%d以上方可训练民兵。", - L"你不能在%s训练民兵了。", - L"解放更多城镇分区", //L"liberate more town sectors", - - L"解放新的城镇分区", //L"liberate new town sectors", - L"解放更多城镇", //L"liberate more towns", - L"恢复失去的进度", //L"regain your lost progress", - L"继续进度", //L"progress further", - - L"雇佣更多反抗军", //L"recruit more rebels", -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"你每次最多能提取$20,000。", - L"你确认要把%s存入你的帐户吗?", -}; - -STR16 gzCopyrightText[] = -{ - L"Copyright (C) 1999 Sir-tech Canada Ltd. All rights reserved.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"语音", //"Speech", - L"确认静默", //"Mute Confirmations", - L"显示对话文字", //"Subtitles", - L"显示对话文字时暂停", //"Pause Text Dialogue", - L"烟火效果", //"Animate Smoke", - L"血腥效果", //"Blood n Gore", - L"不移动鼠标", //"Never Move My Mouse!", - L"旧的选择方式", //"Old Selection Method", - L"显示移动路径", //"Show Movement Path", - L"显示未击中", //"Show Misses", - L"实时确认", //"Real Time Confirmation", - L"显示睡觉/醒来时的提示", //"Display sleep/wake notifications", - L"使用公制系统", //"Use Metric System", - L"高亮显示佣兵", //"Highlight Mercs", - L"锁定佣兵", //"Snap Cursor to Mercs", - L"锁定门", //"Snap Cursor to Doors", - L"物品闪亮", //"Make Items Glow", - L"显示树冠", //"Show Tree Tops", - L"智能显示树冠", //L"Smart Tree Tops", - L"显示轮廓", //"Show Wireframes", - L"显示3D光标", //"Show 3D Cursor", - L"显示命中机率", //"Show Chance to Hit on cursor", - L"榴弹发射器用连发准星", //"GL Burst uses Burst cursor", - L"允许敌人嘲讽", // Changed from "Enemies Drop all Items" - SANDRO - L"允许高仰角榴弹发射", //"High angle Grenade launching", - L"允许实时潜行", // Changed from "Restrict extra Aim Levels" - SANDRO - L"按空格键选择下一支小队", //"Space selects next Squad", - L"显示物品阴影", //"Show Item Shadow", - L"用格数显示武器射程", //"Show Weapon Ranges in Tiles", - L"单发曳光弹显示曳光", //"Tracer effect for single shot", - L"雨声", //"Rain noises", - L"允许乌鸦", //"Allow crows", - L"允许显示敌军装备", // Show Soldier Tooltips - L"自动存盘", //"Auto save", - L"沉默的Skyrider", //"Silent Skyrider", - L"增强属性框(EDB)", //L"Enhanced Description Box", - L"强制回合制模式", // add forced turn mode - L"替代战略地图颜色", // Change color scheme of Strategic Map - L"替代子弹图像", // Show alternate bullet graphics (tracers) - L"佣兵外观造型", //L"Use Logical Bodytypes", - L"显示佣兵军衔", // shows mercs ranks - L"显示脸部装备图", - L"显示脸部装备图标", - L"禁止光标切换", // Disable Cursor Swap - L"佣兵训练时保持沉默", // Madd: mercs don't say quotes while training - L"佣兵修理时保持沉默", // Madd: mercs don't say quotes while repairing - L"佣兵医疗时保持沉默", // Madd: mercs don't say quotes while doctoring - L"自动加速敌军回合", // Automatic fast forward through AI turns - L"僵尸模式", - L"区域物品栏弹窗匹配拾取", // the_bob : enable popups for picking items from sector inv - L"标记剩余敌人", - L"显示LBE(携行具)物品", - L"反转鼠标滚轮", //L"Invert mouse wheel", - L"保持佣兵间距", // when multiple mercs are selected, they will try to keep their relative distances - L"显示已知敌人位置", //L"Show enemy location", show locator on last known enemy location - L"准心开始时为最大", // L"Start at maximum aim", - L"替换新的寻路方式", // L"Alternative pathfinding", - L"--作弊模式选项--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"强制 Bobby Ray 送货", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--DEBUG 选项--", // an example options screen options header (pure text) - L"报告错误的偏移量", // L"Report Miss Offsets",Screen messages showing amount and direction of shot deviation. - L"重置所有选项", // failsafe show/hide option to reset all options - L"确定要重置?", // a do once and reset self option (button like effect) - L"其它版本调试选项", // L"Debug Options in other builds"allow debugging in release or mapeditor - L"渲染选项组调试", // L"DEBUG Render Option group"an example option that will show/hide other options - L"鼠标显示区域", // L"Render Mouse Regions"an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"如果你想听到人物对话,打开这个选项。", - - //Mute Confirmation - L"打开或关闭人物的口头确认。", - - //Subtitles - L"是否显示对话的文字。", - - //Key to advance speech - L"如果“显示对话文字”已打开,这个选项会让你有足够的时间来阅读NPC的对话。", - - //Toggle smoke animation - L"如果烟火效果使得游戏变慢,关闭这个选项。", - - //Blood n Gore - L"如果鲜血使你觉得恶心,关闭这个选项。", - - //Never move my mouse - L"关闭这个选项会使你的光标自动移到弹出的确认对话框上。", - - //Old selection method - L"打开时,使用铁血联盟1代的佣兵选择方式。", - - //Show movement path - L"打开时,会实时显示移动路径(可用|S|h|i|f|t键来打开或者关闭)。", - - //show misses - L"打开时,会显示未击中目标的子弹落点。", - - //Real Time Confirmation - L"打开时,在即时模式中移动要单击两次。", - - //Sleep/Wake notification - L"打开时,被分配任务的佣兵睡觉和醒来时会提示你。", - - //Use the metric system - L"打开时,使用公制系统,否则使用英制系统。", - - //Highlight Mercs - L"打开时,虚拟灯光会照亮佣兵周围。(|G)", //L"When ON, highlights the mercenary (Not visible to enemies).\nToggle in-game with (|G)", - - //Smart cursor - L"打开时,光标移动到佣兵身上时会高亮显示佣兵。", - - //snap cursor to the door - L"打开时,光标靠近门时会自动定位到门上。", - - //glow items - L"打开时,物品会不断的闪烁。(|C|t|r|l+|A|l|t+|I)", - - //toggle tree tops - L"打开时,显示树冠。(|T)", - - //smart tree tops - L"打开时,不显示位于可见佣兵和鼠标附近的树冠。", //L"When ON, hides tree tops near visible mercs and cursor position.", - - //toggle wireframe - L"打开时,显示未探明的墙的轮廓。(|C|t|r|l+|A|l|t+|W)", - - L"打开时,移动时的光标为3D式样。(|H|o|m|e)", - - // Options for 1.13 - L"打开时,在光标上显示命中机率。", - L"打开时,榴弹发射器点射使用点射的准星。", - L"打开时,敌人行动中有时会带有对白。", // Changed from Enemies Drop All Items - SANDRO - L"打开时,榴弹发射器允许采用较高仰角发射榴弹。(|A|l|t+|Q)", - L"打开时,潜行状态未被敌人发现时不会进入回合制模式。\n除非按下 |C|t|r|l+|X 。(|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO - L"打开时,按空格键自动切换到下一小队。(|S|p|a|c|e)", - L"打开时,显示物品阴影。", - L"打开时,用格数显示武器射程。", - L"打开时,单发曳光弹也显示曳光。", - L"打开时,下雨时能听到雨水音效。", //"When ON, you will hear rain noises when it is raining.", - L"打开时,允许乌鸦出现。", - L"打开时,把光标定位在敌人身上并且按下|A|l|t键会显示敌兵装备信息窗口。", - L"打开时,游戏将在玩家回合后自动存盘。", - L"打开时,Skyrider保持沉默。", - L"打开时,使用物品及武器的“增强描述框”(EDB)。", - L"打开时,在战术画面内存在敌军时,将一直处于回合制模式直至该地区所有敌军被消灭。\n(可以通过快捷键 (|C|t|r|l+|T) 来控制打开或关闭强制回合制模式)", - L"打开时,战略地图将会根据探索状态显示不同的着色。", - L"打开时,当你射击时会显示间隔子弹图像。", - L"打开时,佣兵外观可随着武器或防具装备的改变而改变佣兵外观造型。", //L"When ON, mercenary body graphic can change along with equipped gear.", - L"打开时,在战略界面的佣兵名旁显示军衔。", - L"打开时,显示佣兵脸部装备图。", - L"打开时,佣兵肖像右下角显示脸部装备图标。", - L"打开时,在交换位置和其它动作时光标不切换。键入|x可以快速切换。", - L"打开时,佣兵训练时不会随时汇报进程。", - L"打开时,佣兵修理时不会随时汇报进程。", - L"打开时,佣兵医疗时不会随时汇报进程。", - L"打开时,敌军回合将被大幅加速。", - - L"打开时,被击毙的敌人将有可能变成僵尸。(生化危机模式)", - L"打开时,在区域物品栏界面,点击佣兵身上空白的携行具位置会弹窗匹配拾取物品。", - L"打开时,会直接显示该区域最后一个敌人的大致位置。", - L"打开时,在区域物品栏界面,右键点击装有物品的携行具时可直接显示包含的物品。", - L"打开时,反转鼠标滚轮方向。", - L"打开时,当选择多个佣兵,在前进时会保持彼此的间距。|C|t|r|l+|A|l|t+|G \n(按|S|h|i|f|t+点击人物头像可以加入或移出队伍)", //L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", - L"打开时,会显示已知敌人最后移动的位置。", //L"When ON, shows last known enemy location.", - L"打开时,默认瞄准值为最大,而不是无。", //L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"打开时,使用A*寻路算法,而不是原始算法。", //L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"强制 Bobby Ray 出货", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: 当打开时, 将报告每个子弹偏离目标中心点的距离,考虑各种NCTH因素。", - L"修复损坏的游戏设置", // failsafe show/hide option to reset all options - L"修复损坏的游戏设置", // a do once and reset self option (button like effect) - L"在建立release或mapeditor时,允许调试操作", // allow debugging in release or mapeditor - L"切换以显示调试渲染选项", // an example option that will show/hide other options - L"尝试在鼠标周围地区显示斜线矩形", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - - -STR16 gzGIOScreenText[] = -{ - L"游戏初始设置", -#ifdef JA2UB - L"随机 Manuel 文本",//L"Random Manuel texts ", - L"关",//L"Off", - L"开",//L"On", -#else - L"游戏风格", - L"现实", - L"科幻", -#endif - L"金版", - L"武器数量", // changed by SANDRO - L"大量武器", - L"少量武器", // changed by SANDRO - L"游戏难度", - L"新手", - L"老手", - L"专家", - L"疯子", - L"确定", - L"取消", - L"额外难度", - L"随时存盘", - L"铁人模式", - L"在Demo中禁用", - L"Bobby Ray 货品等级", - L"普通|一般", - L"一级|较多", - L"高级|很多", - L"极品|囧多", - L"携行系统 / 附件系统", - L"NOT USED", - L"NOT USED", - L"读取联机游戏", - L"游戏初始设置(仅在服务器设置时有效)", - // Added by SANDRO - L"技能系统", - L"旧", - L"新", - L"IMP 数量", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"敌军物品全掉", - L"关", - L"开", -#ifdef JA2UB - L"Tex 和 John",//L"Tex and John", - L"随机",//L"Random", - L"全部",//"All", -#else - L"通缉犯出现方式", - L"随机", - L"全部", -#endif - L"敌军秘密基地出现方式", - L"随机", - L"全部", - L"敌军装备进展速度", - L"很慢", - L"慢", - L"一般", - L"快", - L"很快", - - L"旧 / 旧", - L"新 / 旧", - L"新 / 新", - - // Squad Size - L"小队人数",//"Max. Squad Size", - L"6", - L"8", - L"10", - //L"Bobby Ray 快速出货", //L"Faster Bobby Ray Shipments", - L"战斗时取放物品消耗AP", //L"Inventory Manipulation Costs AP", - - L"新命中率系统(NCTH)", //L"New Chance to Hit System", - L"改进的中断系统(IIS)", //L"Improved Interrupt System", - L"佣兵故事背景", //L"Merc Story Backgrounds", - L"生存模式与食物系统", - L"Bobby Ray 供货量", - - // anv: extra iron man modes - L"假铁人", //L"Soft Iron Man", - L"真铁人", //L"Extreme Iron Man", -}; - -STR16 gzMPJScreenText[] = -{ - L"多人游戏",//L"MULTIPLAYER", - L"加入",//L"Join", - L"主机",//L"Host", - L"取消",//L"Cancel", - L"刷新",//L"Refresh", - L"玩家名称",//L"Player Name", - L"服务器 IP",//L"Server IP", - L"端口",//L"Port", - L"服务器名",//L"Server Name", - L"# Plrs", - L"版本",//L"Version", - L"游戏类型",//L"Game Type", - L"Ping", - L"你必须输入你的玩家名称。",//L"You must enter a player name.", - L"你必须输入有效的服务器IP地址。(例如 84.114.195.239)。",//L"You must enter a valid server IP address.\n (eg 84.114.195.239).", - L"您必须输入正确的服务器端口,范围1~65535。",//L"You must enter a valid Server Port between 1 and 65535.", -}; - -STR16 gzMPJHelpText[] = -{ - L"访问http://webchat.quakenet.org/?channels=ja2-multiplayer寻找其他玩家。", //Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players - L"您可以按“Y”,打开游戏中的聊天窗口,之后你一直连接到服务器。", - - L"主机",//L"HOST", - L"输入IP地址,端口号必须大于60000", //Enter '127.0.0.1' for the IP and the Port number should be greater than 60000. - L"确保(UDP, TCP)端口由你的路由器转发,更多信息请看:http://portforward.com", //Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com - L"你必须将你的外网IP通过QQ或者什么,告诉其他玩家", //You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players. - L"点击“主机”创建一个新的局域网游戏", //Click on 'Host' to host a new Multiplayer Game. - - L"加入", //JOIN - L"主机需要发送外网IP和端口", //The host has to send (via IRC, ICQ, etc) you the external IP and the Port number - L"输入主机的外网IP和端口号", //L"Enter the external IP and the Port number from the host.", - L"点击“加入”来加入已经创建好的游戏。", //Click on 'Join' to join an already hosted Multiplayer Game -}; - -STR16 gzMPHScreenText[] = -{ - L"建立主机",//L"HOST GAME", - L"开始",//L"Start", - L"取消",//L"Cancel", - L"服务器名",//L"Server Name", - L"游戏类型",//L"Game Type", - L"死亡模式",//L"Deathmatch", - L"团队死亡模式",//L"Team Deathmatch", - L"合作模式",//L"Co-operative", - L"最大玩家数",//L"Max Players", - L"小队规模",//L"Squad Size", - L"选择佣兵",//L"Merc Selection", - L"随机佣兵",//L"Random Mercs", - L"已被雇佣",//L"Hired by Player", - L"起始平衡",//L"Starting Cash", - L"可以雇佣相同佣兵",//L"Can Hire Same Merc", - L"佣兵报告", //Report Hired Mercs - L"开启Bobby Rays网上商店", - L"开始边缘区域", //Sector Starting Edge - L"必须输入服务器名", - L"", - L"", - L"开始时间", - L"", - L"", - L"武器伤害", - L"", - L"计时器", - L"", - L"合作模式中允许平民", - L"", - L"CO-OP敌军最大值", //Maximum Enemies in CO-OP - L"同步游戏目录", - L"同步多人模式目录", - L"你必须进入一个文件传输目录.", - L"(使用 '/' 代替 '\\' 作为目录分隔符)", - L"指定的同步目录不存在。", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Yes", - L"No", - // Starting Time - L"早晨", //Morning - L"下午", //Afternoon - L"晚上", //Night - // Starting Cash - L"低", - L"中", - L"高", - L"无限", //Unlimited - // Time Turns - L"从不",//Never - L"缓慢",//Slow - L"中速",//Medium - L"快速",//Fast - // Weapon Damage - L"很慢", - L"慢", - L"正常", - // Merc Hire - L"随机", - L"正常", - // Sector Edge - L"随机", - L"可选", - // Bobby Ray / Hire same merc - L"禁止", - L"允许", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"奥斯汀", //"Austin", //Austin, Texas, USA - L"巴格达", //"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"香港", //"Hong Kong", //Hong Kong, Hong Kong - L"贝鲁特", //"Beirut", //Beirut, Lebanon (Middle East) - L"伦敦", //"London", //London, England - L"洛杉矶", //"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Metavira", //The island of Metavira was the fictional location used by JA1 - L"迈阿密", //"Miami", //Miami, Florida, USA (SE corner of USA) - L"莫斯科", //"Moscow", //Moscow, USSR - L"纽约", //"New York", //New York, New York, USA - L"渥太华", //"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"巴黎", //"Paris", //Paris, France - L"的黎波里", //"Tripoli", //Tripoli, Libya (eastern Mediterranean) - L"东京", //"Tokyo", //Tokyo, Japan - L"温哥华", //"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"你确定吗?零意味着你不能拥有这项技能。", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"(最多8个字符)", //"( 8 Characters Max )", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"分析...", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"谢谢你,%s", -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"嗓音", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"阵亡", //"Killed in Action", - L"解雇", //"Dismissed", - L"其他", //"Other", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"人事管理", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"游戏暂停", //"Game Paused", - L"继续游戏 (|P|a|u|s|e)", //"Resume Game (|P|a|u|s|e)", - L"暂停游戏 (|P|a|u|s|e)", //"Pause Game (|P|a|u|s|e)", -}; - - -STR16 pMessageStrings[] = -{ - L"退出游戏", //"Exit Game?", - L"确定", //"OK", - L"是", //"YES", - L"否", //"NO", - L"取消", //"CANCEL", - L"再次雇佣", //"REHIRE", - L"撒谎", //"LIE", // - L"没有描述", //"No description", //Save slots that don't have a description. - L"游戏已保存。", //"Game Saved.", - L"游戏已保存。", //"Game Saved.", - L"QuickSave", //"QuickSave", //The name of the quicksave file (filename, text reference) - L"SaveGame", //"SaveGame",//The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"日", //"Day", - L"个佣兵", //"Mercs", - L"空", //"Empty Slot", //An empty save game slot - L"Demo", //Demo of JA2 - L"Debug", //State of development of a project (JA2) that is a debug build - L"Release", //Release build for JA2 - L"rpm", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"分钟", //"min", //Abbreviation for minute. - L"米", //"m", //One character abbreviation for meter (metric distance measurement unit). - L"发", //L"rnds", //Abbreviation for rounds (# of bullets) - L"公斤", //"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"磅", //"lb", //Abbreviation for pounds (Imperial weight measurement unit) - L"主页", //"Home", //Home as in homepage on the internet. - L"USD", //L"USD", //Abbreviation to US dollars - L"n/a", //Lowercase acronym for not applicable. - L"与此同时", //"Meanwhile", //Meanwhile - L"%s已到达%s%s分区", //"%s has arrived in sector %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying //SirTech - - L"版本", //L"Version", - L"没有快速存档", //"Empty Quick Save Slot", - L"该位置用来放Quick Save(快速存档)。请在战术屏幕或者地图屏幕按ALT+S进行快速存档。", - L"打开的", //"Opened", - L"关闭的", //"Closed", - L"磁盘空间不足。只有%sMB可用空间,《铁血联盟2》需要%sMB。", - L"从AIM雇佣了%s。", //"Hired %s from AIM", - L"%s抓住了%s。", //"%s has caught %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s(使用了、拾取了、中了)%s。", //L"%s has taken %s。", - L"%s没有医疗技能", //"%s has no medical skill",//'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"游戏不完整。",//The integrity of the game has been compromised - L"错误: 弹出 CD-ROM",//ERROR: Ejected CD-ROM - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"没有空间施展你的武器。", //"There is no room to fire from here.", - - //Can't change stance due to objects in the way... - L"现在无法改变姿势。", //"Cannot change stance at this time.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"放下", //"Drop", - L"投掷", //"Throw", - L"交给", //"Pass", - - L"把%s交给了%s。", //"%s passed to %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"没有足够空位把%s交给%s。", //"No room to pass %s to %s.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" 附加]", //L" attached]", - - //Cheat modes - L"开启作弊等级一", //"Cheat level ONE reached", - L"开启作弊等级二", //"Cheat level TWO reached", - - //Toggling various stealth modes - L"小队进入潜行模式。", //"Squad on stealth mode.", - L"小队退出潜行模式。", //"Squad off stealth mode.", - L"%s 进入潜行模式。", //"%s on stealth mode.", - L"%s 退出潜行模式。", //"%s off stealth mode.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"打开显示轮廓", //"Extra Wireframes On", - L"关闭显示轮廓", //"Extra Wireframes Off", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"无法从这层上去...", //"Can't go up from this level...", - L"没有更低的层了...", //"There are no lower levels...", - L"进入地下室%d层...", //"Entering basement level %d...", - L"离开地下室...", //"Leaving basement...", - - L"的", //"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"关闭跟随模式。", //"Follow mode OFF.", - L"打开跟随模式。", //"Follow mode ON.", - L"不显示3D光标。", //"3D Cursor OFF.", - L"显示3D光标。", //"3D Cursor ON.", - L"第%d小队激活。", //"Squad %d active.", - L"你无法支付%s的%s日薪", //"You cannot afford to pay for %s's daily salary of %s", //first %s is the mercs name, the seconds is a string containing the salary - L"跳过", //"Skip", - L"%s不能独自离开。", //"%s cannot leave alone.", - L"一个文件名为SaveGame99.sav的存档被创建了。如果需要的话,将其更名为SaveGame01 - SaveGame10,然后你就能载入这个存档了。", //"A save has been created called, SaveGame99.sav. If needed, rename it to SaveGame01 - SaveGame10 and then you will have access to it in the Load screen.", - L"%s 喝了点 %s。", //"%s drank some %s", - L"Drassen收到了包裹。", //"A package has arrived in Drassen.", - L"%s将到达指定的着陆点(分区%s),于%d日%s。", //"%s should arrive at the designated drop-off point (sector %s) on day %d, at approximately %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival - L"日志已经更新。", //"History log updated.", - L"榴弹发射器点射时使用准星光标(可以扫射)", - L"榴弹发射器连发时使用弹道光标(不可以扫射)", //"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", - L"开启敌兵装备提示", // Changed from Drop All On - SANDRO - L"关闭敌兵装备提示", // 80 // Changed from Drop All Off - SANDRO - L"榴弹发射器以正常仰角发射榴弹", //"Grenade Launchers fire at standard angles", - L"榴弹发射器以较高仰角发射榴弹", //L"Grenade Launchers fire at higher angles", - // forced turn mode strings - L"强制回合制模式", - L"正常回合制模式", - L"离开战斗", - L"强制回合制模式启动,进入战斗", - L"自动储存成功。", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved - L"客户端", //"Client", - L"旧携行系统不能与新附件系统同时使用。", - - L"自动存盘 #", //91 // Text des Auto Saves im Load Screen mit ID - L"自动存盘专用,可在ja2_options.ini里设置AUTO_SAVE_EVERY_N_HOURS来开启/关闭。", //L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save - L"... 自动存盘位置 #", //L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"End-Turn 存盘 #", // 95 // The text for the tactical end turn auto save - L"自动存盘中 #", // 96 // The message box, when doing auto save - L"存盘中", // 97 // The message box, when doing end turn auto save - L"... End-Turn 存盘位置 #", // 98 // The message box, when doing auto save - L"战术回合完毕存盘专用,可以在游戏设置开启/关闭。", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) - L"鼠标已锁定,鼠标移动范围强制限制在游戏窗口内部区域。", // 104 - L"鼠标已释放,鼠标移动范围不再受限于游戏窗口内部区域。", // 105 - L"保持佣兵间距开启", - L"保持佣兵间距关闭", - L"虚拟佣兵光照开启", - L"虚拟佣兵光照关闭", - L"军队%s活动。", //L"Squad %s active.", - L"%s抽了只%s。", //L"%s smoked %s.", - L"激活作弊?", //L"Activate cheats?", - L"关闭作弊?", //L"Deactivate cheats?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"确认", //"OK", - L"向上滚动", //"Scroll Up", - L"选择全部", //"Select All", - L"向下滚动", //"Scroll Down", - L"取消", //"Cancel", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s不够近,不能被治疗。", - L"你的医生不能包扎完每个人。", -}; - -STR16 pMilitiaButtonsHelpText[] = -{ - L"撤走 (|R|i|g|h|t |C|l|i|c|k)\n分配 (|L|e|f|t |C|l|i|c|k)\n新兵", // button help text informing player they can pick up or drop militia with this button - L"撤走 (|R|i|g|h|t |C|l|i|c|k)\n分配 (|L|e|f|t |C|l|i|c|k)\n常规兵", - L"撤走 (|R|i|g|h|t |C|l|i|c|k)\n分配 (|L|e|f|t |C|l|i|c|k)\n老兵", - L"所有民兵将在城市所属分区平均分配", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"去AIM雇几个佣兵( *提示* 在笔记本电脑里)", -#ifdef JA2UB - L"当你准备出发前往Tracona,点击屏幕右下方的时间压缩按钮。", -#else - L"当你准备出发前往Arulco,点击屏幕右下方的时间压缩按钮。", -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"错误。丢失或损坏文件。游戏将退出。", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"查看邮件", - L"浏览网页", - L"查看文件和邮件的附件", - L"阅读事件日志", - L"查看队伍信息", - L"查看财务简报和记录", - L"关闭笔记本电脑", - - //Bottom task bar icons (if they exist): - L"你有新的邮件", - L"你有新的文件", - - //Bookmarks: - L"国际佣兵联盟", - L"Bobby Ray网上武器店", - L"佣兵心理剖析研究所", - L"廉价佣兵中心", - L"McGillicutty公墓", - L"联合花卉服务公司", - L"A.I.M指定保险代理人", - //New Bookmarks - L"", - L"百科全书", - L"简报室", - L"战役历史", - L"佣兵之家", //L"Mercenaries Love or Dislike You", - L"世界卫生组织", //L"World Health Organization", - L"Kerberus - 安保公司",//L"Kerberus - Experience In Security", - L"民兵总览",//L"Militia Overview", - L"侦察情报局", //L"Recon Intelligence Services", - L"已占领的工厂", //L"Controlled factories", - L"Arulco反抗军司令部", //L"Arulco Rebel Command", -}; - - -STR16 gzHelpScreenText[] = -{ - L"退出帮助屏幕", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"战斗正在进行中,你只能在战术屏幕进行撤退。", - L"进入该分区,继续战斗。(|E)", - L"自动解决这次战斗。(|A)", - L"当你进攻时,不能自动解决战斗。", - L"当你遭遇伏兵时,不能自动解决战斗。", - L"当在矿井里和异形作战时,不能自动解决战斗。", - L"还有敌对的平民时,不能自动解决战斗。", - L"有血猫时,不能自动解决战斗。", - L"战斗进行中", - L"你不能在这时撤退。", -}; - -STR16 gzMiscString[] = -{ - L"在没有你的佣兵支援下,民兵继续战斗...", - L"现在车辆不需要加油。", //"The vehicle does not need anymore fuel right now.", - L"油箱装了%d%的油。", //"The fuel tank is %d%% full.", - L"Deidranna女王的军队重新完全占领了%s。", - L"你丢失了加油点。", //"You have lost a refueling site.", -}; - -STR16 gzIntroScreen[] = -{ - L"找不到视频文件", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s 听到%s声音来自%s。", - L"%s 听到%s移动声来自%s。", - L"%s 听到%s吱吱声来自%s。", - L"%s 听到%s溅水声来自%s。", - L"%s 听到%s撞击声来自%s。", - L"%s 听到%s开火声来自%s.", // anv: without this, all further noise notifications were off by 1! - L"%s 听到%s爆炸声发向%s。", - L"%s 听到%s尖叫声发向%s。", - L"%s 听到%s撞击声发向%s。", - L"%s 听到%s撞击声发向%s。", - L"%s 听到%s粉碎声来自%s。", - L"%s 听到%s破碎声来自%s。", - L"", // anv: placeholder for silent alarm - L"%s 听到%s某人的说话声来自%s。", // anv: report enemy taunt to player -}; - -STR16 pTauntUnknownVoice[] = -{ - L"不明说话声", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"按姓名排序 (|F|1)", - L"按任务排序 (|F|2)", - L"按睡眠状态排序 (|F|3)", - L"按地点排序 (|F|4)", - L"按目的地排序 (|F|5)", - L"按预计离队时间排序 (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"错误 404", //"Error 404", - L"网站未找到", //"Site not found.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"近期运货", //"Recent Shipments", - L"订单 #", //"Order #", - L"物品数量", //"Number Of Items", - L"订购日期", //"Ordered On", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Maarnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"游戏开发者", // Chris Camfield - L"策划/编剧", // Shaun Lyng - L"战略系统和编辑器开发者", //Kris \"The Cow Rape Man\" Marnes - L"制片人/总策划", // Ian Currie - L"地图设计师", // Linda Currie - L"美术设计", // Eric \"WTF\" Cheng - L"测试", // Lynn Holowka - L"高级美术设计", // Norman \"NRG\" Olsen - L"音效师", // George Brooks - L"界面设计", // Andrew Stacey - L"动画师", // Scot Loving - L"程序开发", // Andrew \"Big Cheese Doddle\" Emmons - L"程序设计", // Dave French - L"战略系统与游戏平衡开发", // Alex Meduna - L"人物设计师", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(还在学习标点符号)", // Shaun Lyng - L"(\"已经完成,我们只是做一些修正\")", //Kris \"The Cow Rape Man\" Marnes - L"(干这活我的年纪太大了)", // Ian Currie - L"(进行巫术8项目的工作)", // Linda Currie - L"(被枪指着去做QA)", // Eric \"WTF\" Cheng - L"(Left us for the CFSA - go figure...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(蹭车以及爵士乐爱好者)", // Andrew Stacey - L"(他真正的名字是罗伯特)", // Scot Loving - L"(唯一负责任的人)", // Andrew \"Big Cheese Doddle\" Emmons - L"(现在就想回到motocrossing)", // Dave French - L"(从巫术8项目中偷来的)", // Alex Meduna - L"(也参与制作物品及读档画面)", // Joey \"Joeker\" Whelan", -}; - -// HEADROCK: Adjusted strings for better feedback, and added new string for LBE repair. -STR16 sRepairsDoneString[] = -{ - L"%s 修复了自己的物品。", - L"%s 修复了所有人的枪和护甲。", - L"%s 修复了所有人的装备。", - L"%s 修复所有人携带的大型物品。",//L"%s finished repairing everyone's large carried items", - L"%s 修复所有人携带的中型物品。",//L"%s finished repairing everyone's medium carried items", - L"%s 修复所有人携带的小型物品。",//L"%s finished repairing everyone's small carried items", - L"%s 修复所有人的携行具。",//L"%s finished repairing everyone's LBE gear", - L"%s 清洁了所有人的枪支。", //L"%s finished cleaning everyone's guns.", -}; - -STR16 zGioDifConfirmText[]= -{ - L"你选择了“新手”模式。这个设置是为那些刚玩铁血联盟的玩家准备的,他们刚接触策略游戏,或者他们希望快点结束战斗。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“新手”模式吗?", - L"你选择了“老手”模式。这个设置是为那些已经熟悉铁血联盟或类似游戏的玩家准备的。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“老手”模式吗?", - L"你选择了“专家”模式。我们警告你,如果你被装在尸袋里运回来,不要来向我们抱怨。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“专家”模式吗?", - L"你选择了“疯狂”模式。警告: 如果你被装在塑料袋里一块块运回来,不要来向我们抱怨。女王会狠狠地凌虐你。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“疯狂”模式吗?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"没有找到loadscreen数据文件%S...", //"%S loadscreen data file not found...", - - //1-5 - L"由于没有人在用遥控器,机器人无法离开本分区。", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"你现在无法压缩时间。请等待炸弹爆炸!", - - //'Name' refuses to move. - L"%s拒绝移动。", - - //%s a merc name - L"%s精力不足,无法改变姿势。", //"%s does not have enough energy to change stance.", - - //A message that pops up when a vehicle runs out of gas. - L"%s汽油耗尽,现在在%c%d抛锚了。", //"The %s has run out of gas and is now stranded in %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"上方", - L"下方", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"佣兵中没人有医疗技能。", - L"没有足够的医疗物品进行包扎。", - L"没有足够的医疗物品给所有人进行包扎。", - L"佣兵中没人需要包扎。", //"None of your mercs need bandaging.", - L"自动包扎佣兵。", //"Bandages mercs automatically.", - L"全部佣兵已被包扎完毕。", //"All your mercs are bandaged.", - - //14 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - - L"(屋顶)", - - L"生命: %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d vs. %d", - - L"%s满了。", - - L"%s现在不用包扎,他(她)需要认真的治疗和休息。", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s 被击中腿部,并且倒下了!", - //Name can't speak right now. - L"%s 现在不能说话。", - - //22-24 plural versions - L"%d个新兵被提升为精兵。", - L"%d个新兵被提升为老兵。", - L"%d个老兵被提升为精兵。", - - //25 - L"开关", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s 疯狂了!", //L"%s goes psycho!", - - //27-28 - //Messages why a player can't time compress. - L"现在压缩时间不安全,因为你有佣兵在分区%s。", - L"现在压缩时间不安全,因为你有佣兵在异形所在的矿井。", - - //29-31 singular versions - L"1个新兵被晋升为精兵。", - L"1个新兵被晋升为老兵。", - L"1个老兵被晋升为精兵。", - - //32-34 - L"%s无语。", //"%s doesn't say anything.", - L"回到地面?", - L"(第%d小队)", //"(Squad %d)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s 修复了 %s的%s。", - - //36 - L"血猫", - - //37-38 "Name trips and falls" - L"%s 踩到陷阱,跌倒了。", - L"这个物品不能从这里捡起。", - - //39 - L"你现有的佣兵中没人能进行战斗。民兵们将独自和异形作战。", - - //40-43 - //%s is the name of merc. - L"%s用完了医药箱里的药品!", //"%s ran out of medical kits!", - L"%s没有所需技能来医疗他人!", //"%s lacks the necessary skill to doctor anyone!", - L"%s用完工具箱里的工具!", //"%s ran out of tool kits!", - L"%s没有所需技能来修理物品!", //"%s lacks the necessary skill to repair anything!", - - //44-45 - L"修理时间", //L"Repair Time", - L"%s看不到这个人。", - - //46-48 - L"%s的增程枪管掉下来了!", //"%s's gun barrel extender falls off!", - // HEADROCK HAM 3.5: Changed to reflect facility effect. - L"只允许不多于%d名佣兵在这个分区训练民兵。", //"No more than %d militia trainers are permitted per sector.", //L"No more than %d militia trainers are permitted in this sector.",//ham3.6 - L"你确定吗?", //"Are you sure?", - - //49-50 - L"时间压缩", - L"车辆的油箱已经加满油了。", - - //51-52 Fast help text in mapscreen. - L"继续时间压缩 (|S|p|a|c|e)", - L"停止时间压缩 (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s 修理好了卡壳的 %s", //L"%s has unjammed the %s", - L"%s 修理好了卡壳的 %s的%s", //L"%s has unjammed %s's %s", - - //55 - L"查看分区存货时无法压缩时间。", //L"Can't compress time while viewing sector inventory.", - - L"没有找到铁血联盟2光盘,程序即将退出。", //The Jagged Alliance 2 v1.13 PLAY DISK was not found. Program will now exit. - - L"物品组合成功。", - - //58 - //Displayed with the version information when cheats are enabled. - L"当前/最大进展: %d%%/%d%%", //"Current/Max Progress: %d%%/%d%%",//zww - - L"护送John和Mary?", - - // 60 - L"开关被激活", //"Switch Activated.", - - L"%s的陶瓷片已经粉碎了!", //"%s's ceramic plates have been smashed!", - L"%s 多打了%d发子弹!", //"%s fires %d more rounds than intended!", - L"%s 多打了1发子弹!", //"%s fires %d more round than intended!", - - L"你得先关闭物品信息界面!", - - L"无法快进 - 该分区有敌对的市民和/或血猫。", // 65 //L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", -}; - -// HEADROCK HAM 3.5: Added sector name -STR16 gzCWStrings[] = -{ - L"是否呼叫邻近区域的援兵到%s?", //L"Call reinforcements to %s from adjacent sectors?", -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|位|置: %d\n", - L"%s|亮|度: %d / %d\n", - L"%s|目|标|距|离: %d\n", - L"%s|I|D: %d\n", - L"%s|订|单: %d\n", - L"%s|属|性: %d\n", - L"%s|当|前 |A|Ps: %d\n", - L"%s|当|前 |生|命: %d\n", - L"%s|当|前|精|力: %d\n", - L"%s|当|前|士|气: %d\n", - L"%s|当|前|惊|慌|度: %d\n", //L"%s|Current |S|hock: %d\n", - L"%s|当|前|压|制点数: %d\n",//L"%s|Current |S|uppression Points: %d\n", - // Full info - L"%s|头|盔: %s\n", - L"%s|防|弹|衣: %s\n", - L"%s|作|战|裤: %s\n", - // Limited, Basic - L"|护|甲: ", - L"头盔 ", - L"防弹衣 ", - L"作战裤", - L"装备了", - L"无护甲", - L"%s|夜|视|仪: %s\n", - L"无夜视仪", - L"%s|防|毒|面|具: %s\n", - L"无防毒面具", - L"%s|头|部|1: %s\n", - L"%s|头|部|2: %s\n", - L"\n(背包内) ", - L"%s|武|器: %s ", - L"空手", - L"手枪", - L"冲锋枪", - L"步枪", - L"机枪", - L"霰弹枪", - L"刀", - L"重武器", - L"无头盔", - L"无防弹衣", - L"无作战裤", - L"|护|甲: %s\n", - // Added - SANDRO - L"%s|技能 1: %s\n", - L"%s|技能 2: %s\n", - L"%s|技能 3: %s\n", - // Additional suppression effects - sevenfm - L"%s|火|力|压|制导致的|A|P损失:%d\n", - L"%s|火|力|压|制|耐|性: %d\n", - L"%s|有|效|惊|吓|等|级:%d\n", - L"%s|A|I|士|气:%d\n", -}; - -STR16 New113Message[] = -{ - L"风暴开始了。", - L"风暴结束了。", - L"下雨了。", - L"雨停了。", - L"小心狙击手……", - L"火力压制!", - L"点射", - L"自动", - L"榴弹", - L"榴弹点射", - L"榴弹自动", - L"UB", // INFO: UB = Under Barrel - L"UBRST", - L"UAUTO", - L"BAYONET", - L"狙击手!", - L"已经点选物品,此时无法分钱。", - L"新兵的会合地被挪至%s,因降落地点%s目前由敌人占据。", - L"物品销毁", - L"此类物品全部销毁", - L"物品卖出", - L"此类物品全部卖出", - L"你得检查一下你的眼部装备", - // Real Time Mode messages - L"进入战斗模式", - L"视野中没有敌人", - L"即时潜行模式 关闭", - L"即时潜行模式 开启", - //L"Enemy spotted! (Ctrl + x to enter turn based)", - L"发现敌人!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s偷窃成功!",// L"%s was successful on stealing!", - L"%s没有足够的行动点来偷取所选物品。",// L"%s had not enough action points to steal all selected items.", - L"是否在包扎前对%s实施手术?(可回复%i点生命。)",// L"Do you want to make surgery on %s before bandaging? (You can heal about %i Health.)", - L"是否对%s实施手术?(可回复%i点生命。)",// L"Do you want to make surgery on %s? (You can heal about %i Health.)", - L"是否进行必要的手术?(%i名病人)",// L"Do you wish to make necessary surgeries first? (%i patient(s))", - L"是否在该病人身上进行手术?",// L"Do you wish to make the surgery on this patient first?", - L"在包扎前是否进行手术?",// L"Apply first aid automatically with necessary surgeries or without them?", - L"您不包扎%s直接进行手术吗?(手术可回复%i生命值,输血*:使用血包手术可回复%i生命值。)", //L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", - L"您要给%s进行手术吗?(手术可回复%i生命值,输血*:使用血包手术可回复%i生命值。)", //L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"您希望给%s进行手术吗?(手术可回复%i生命值,输血*:使用血包手术可回复%i生命值。)", //L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"%s手术完毕。",// L"Surgery on %s finished.", - L"%s 胸部中弹,失去1点生命上限!",// L"%s is hit in the chest and loses a point of maximum health!", - L"%s 胸部中弹,失去%d点生命上限!",// L"%s is hit in the chest and loses %d points of maximum health!", - L"%s被爆炸物炸瞎了!(丧失视野)", - L"%s重获1点失去的%s",// L"%s has regained one point of lost %s", - L"%s重获%d点失去的%s",// L"%s has regained %d points of lost %s", - L"你的侦察能力避免了敌人的偷袭!",// L"Your scouting skills prevented you to be ambushed by the enemy!", - L"多亏了你的侦查技能,你成功的避开了大群血猫!",// L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", - L"%s 命根子中弹,痛苦的倒下了!",// L"%s is hit to groin and falls down in pain!", - ////////////////////////////////////////////////////////////////////////////////////// - L"注意: 敌人尸体被发现!!!", - L"%s[%d发]\n%s %1.1f %s", // L"%s [%d rnds]\n%s %1.1f %s", - L"AP不够!需要%d,你只有%d。", //L"Insufficient AP Points! Cost %d, you have %d.", - L"提示: %s", - L"玩家力量: %d - 敌人力量: %6.0f", //Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"无法使用技能!", - L"敌人在该分区时无法建造!", - L"看不到那个地方!", - L"无法发射炮弹,不是合理的区域定位!", - L"无线电波段遭到干扰。无法通讯!", - L"无线电操作失败!", - L"迫击炮弹不足,无法在分区发动密集轰炸!", - L"Items.xml里没有定义信号弹物品!", - L"Items.xml里没有定义高爆弹物品!", //L"No High-Explosive shell item found in Items.xml!", - L"未发现迫击炮,无法执行密集轰炸!", - L"干扰信号成功,不需要重复操作!", - L"正在监听周围声音,无需重复操作!", - L"正在观察,无需重复操作!", - L"正在扫描干扰信号,无需重复操作!", - L"%s没办法把%s用在%s上。", - L"%s指示%s前来支援。", - L"%s无线电设备没电了。", - L"正在工作的无线电设备。", - L"望远镜", - L"耐心", - L"%s的防护盾毁坏了!", //L"%s's shield has been destroyed!", - L" 延迟", //L" DELAY", - L"输血*", //L"Yes*", - L"是的", //L"Yes", - L"否", //L"No", - L"%s将%s应用于%s。", //L"%s applied %s to %s.", -}; - -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s 害怕得退缩了!",// L"%s cowers in fear!", - L"%s 被压制住了!",// L"%s is pinned down!", //ham3.6 - L"%s 多打了几发子弹!",// L"%s fires more rounds than intended!", - L"你不能在这个地区训练民兵。",// L"You cannot train militia in this sector.", - L"民兵拾起 %s。",// L"Militia picks up %s.", - L"有敌人出没时无法训练民兵!", // L"Cannot train militia with enemies present!", - // 6 - 10 - L"%s缺乏训练民兵所需要的领导能力。",// L"%s lacks sufficient Leadership score to train militia.", - L"此地训练民兵的教官不能超过%d名。",// L"No more than %d Mobile Militia trainers are permitted in this sector.", - L"%s和周边地区的游击队已经满员了!",// L"No room in %s or around it for new Mobile Militia!", - L"你需要有至少%d个民兵在%s每个被解放的地区才能训练游击队。",// L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", - L"有敌人出没时不能在任何设施内工作!",// L"Can't staff a facility while enemies are present!", - // 11 - 15 - L"%s缺乏就任于该设施所需要的智慧。",// L"%s lacks sufficient Wisdom to staff this facility.", - L"%s已经满员了。",// L"The %s is already fully-staffed.", - L"使用该设施每小时消耗$%d,你确定吗?",// L"It will cost $%d per hour to staff this facility. Do you wish to continue?", - L"你没有足够的资金来支付今天的设施费用。付出$%d,还欠$%d,当地人很不满。",// L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", - L"没有足够的资金来支付今天的设施费用。欠款$%d,当地人很不满.。",// L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", - // 16 - 20 - L"你仍有$%d的欠款,同时你已经身无分文了!",// L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", - L"你仍有$%d的欠款,在有钱还清这笔债务之前你不能分配雇佣兵去这个设施。",// L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", - L"你有$%d的欠款,是否支付?",// L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", - L"这个区域没有",// L"N/A in this sector", - L"日常支出",// L"Daily Expenses", - // 21 - 25 - L"维持民兵的资金不足!%d名民兵回老家结婚去了。",// L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", - L"要在战斗中查看某样物品,你必须先把它捡起来。", // L"To examine an item's stats during combat, you must pick it up manually first.", - L"要在战斗中组合两样物品,你必须先把它们捡起来。", // L"To attach an item to another item during combat, you must pick them both up first.", - L"要在战斗中合并两样物品,你必须先把它们捡起来。", // L"To merge two items during combat, you must pick them both up first.", -}; - -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"没有可用的转换方案", //L"No available adjustments", - L"%s被拆开了。", //L"%s was split into several parts.", - L"%s被拆开了,部件放在了%s的背包里。", //L"%s was split into several parts. Check %s's inventory for the resulting items.", - L"由于背包没有足够空间,转换后的%s一些物品被丢在了地上。", //L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", - L"%s被拆开了。由于背包没有足够空间,转换后的%s一些物品被丢在了地上。", //L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", - L"你希望转换该列所有%d吗?如果只想转换1个,请将它从该列中先取出来。", //L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", - // 6 - 10 - L"拆分弹药箱,弹匣放入背包", //L"Split Crate into Inventory", - L"拆分成%d发的弹匣", //L"Split into %d-rd Mags", - L"%s被拆分成%d个弹匣每个有%d发子弹。", //L"%s was split into %d Magazines containing %d rounds each.", - L"%s拆分完成并放入%s的背包。", //L"%s was split into %s's inventory.", - L"%s的背包空间不足,放不下这个口径的弹匣了!", //L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", - L"即时模式", //L"Instant mode", - L"延时模式", //L"Delayed mode", - L"即时模式 (%d AP)", //L"Instant mode (%d AP)", - L"延时模式 (%d AP)", //L"Delayed mode (%d AP)", -}; - -// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercLevelUp.xml" file! -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"鉴于Gaston最近发挥异常突出,他的服务费也跟着上涨。以我个人的观点,这一点也不让我惊讶。 ± ± Speck T. Kline ± ", - // Stogie: Text from Line 43 in Email.edt - L"请注意,Stogie近期能力有所提升,他的价格也要随之增长。 ± ± Speck T. Kline ± ", - // Tex: Text from Line 45 in Email.edt - L"请注意,因为Tex新获得的经验, 更高的身价才匹配他的能力。 ± ± Speck T. Kline ± ", - // Biggens: Text from Line 49 in Email.edt - L"鉴于Biggins发挥有所提高, 他的价格也同时上涨。 ± ± Speck T. Kline ± ", -}; - -// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercAvailable.xml" file! -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk - L"转发自AIM服务器:Victor Kolesnikov的信件", - L"你好,这是Monk,留言已收到。我已经回来了,你可以联系我了。 ± ± 等你的电话。 ± ", - - // Brain: Text from Line 60 - L"转发自AIM服务器:Janno Allik的信件", - L"我已经准备好接受任务了。我有空干任何事情 ± ± Janno Allik ± ", - - // Scream: Text from Line 62 - L"转发自AIM服务器:Lennart Vilde的信件", - L"Lennart Vilde已经准备好了! ± ", - - // Henning: Text from Line 64 - L"转发自AIM服务器:Henning von Branitz的信件", - L"你的留言我已收到,谢谢。请到A.I.M主页联系我,然后讨论招募事宜。 ± ± 那时见! ± ± Henning von Branitz ± ", - - // Luc: Text from Line 66 - L"转发自AIM服务器:Luc Fabre的信件", - L"收到留言,Merci(谢谢)! 你能考虑我我非常高兴。你知道在哪里能找到我。 ± ± 希望能收到你的电话。 ± ", - - // Laura: Text from Line 68 - L"转发自AIM服务器:Dr. Laura Colin的信件", - L"你好!非常高兴你能给我留言,我很感兴趣。 ± ± 请再上AIM,我愿意听听详细事宜 ± ± 此致敬礼! ± ± Dr. Laura Colin ± ", - - // Grace: Text from Line 70 - L"转发自AIM服务器:Graziella Girelli的信件", - L"你上次想联系我但是没有成功。± ± 你懂得?家庭聚会啦。我现在已经厌倦了我的家庭,你能再上AIM联系我的话我会非常高兴 ± ± Ciao(再见)! ± ", - - // Rudolf: Text from Line 72 - L"转发自AIM服务器:Rudolf Steiger的信件", - L"你知道我每天有多少个电话要接吗?每个蠢货都认为他可以Call我。 ± ± 反正我回来了,前提是你真的有有趣的工作给我的话。 ± ", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"转发自AIM服务器:M.E.R.C的信件", - L"我收到你的留言,等你联系。 ± ", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"狙击手: 拥有鹰的眼睛和百步穿杨的枪法! ± ", - // Camouflage - L"伪装: 跟你的伪装迷彩比起来,树丛看起来倒象是假的! ± ", - // SANDRO - new strings for new traits added - // MINTY - Altered the texts for more natural English, and added a little flavour too - // Ranger - L"猎兵:你跟那些从德克萨斯来的土包子可大不一样! ± ", - // Gunslinger - L"快枪手:拿着一两把手枪,你可以和Billy the Kid一样致命! ± ", - // Squadleader - L"领队:天生的领袖,你的队员需要你的灵感! ± ", - // Technician - L"技师:你比MacGyver牛逼多了!无论机械、电子产品还是爆破物,你都能修! ± ", - // Doctor - L"军医:从轻微擦伤到开肠破肚,甚至截肢,你都能治! ± ", - // Athletics - L"运动员:你的速度和活力能和奥运会运动员相提并论! ± ", - // Bodybuilding - L"健身:施瓦辛格?窝囊废一个。你只用一只手就能办掉他。 ± ", - // Demolitions - L"爆破:播种手雷,深埋炸弹,看羊羔飞。这就是你的生活! ± ", - // Scouting - L"侦查:没有什么东西你觉察不到! ± ", - // Covert ops - L"特工: 你让詹姆斯邦德甘拜下风! ± ", // L"Covert Operations: You make 007 look like an amateur! ± ", - // Radio Operator - L"无线电操作员:你通过使用通讯设备让队伍的战略和战术水平得到了提升。 ± ", //L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", - // Survival - L"向导: 大自然是你第二个家。 ± ", //L"Survival: Nature is a second home to you. ± ", -}; - -STR16 NewInvMessage[] = -{ - L"此时无法拾起背包", - L"背包中无处可放", - L"没发现背包", - L"拉锁只在战斗中有效", - L"背包拉锁打开时无法移动", - L"你确定要变卖该地区所有物品吗?", - L"你确定要销毁该地区所有物品吗?", - L"装备大背包后无法爬上房顶", - L"所有人的背包已放下", - L"所有人的背包已捡起", - L"%s 放下背包", //L"%s drops backpack", - L"%s 捡起背包", //L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"启动RakNet服务器...", - L"服务器启动,等待连接...", - L"你现在必须按'2'来连接你的客户端和服务器。", - L"服务器已经在运行。", - L"服务器启动失败。终止中。", - // 5 - L"%d/%d 客户端已经准备好进入即时模式。", - L"服务器断开并关闭。", - L"服务器没有运行。", - L"客户端仍在载入, 请稍等...", - L"服务器启动之后你无法更改着陆点。", - // 10 - L"已发送文件 '%S' - 100/100",//L"Sent file '%S' - 100/100", - L"文件已发送到 '%S'。",// L"Finished sending files to '%S'.", - L"开始发送文件到 '%S'。",// L"Started sending files to '%S'.", - L"使用空域视图选择你想进入的地图。你只能在点击“开始游戏”按钮前更换地图。", // L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"启动RakNet客户端...", - L"正在连接IP: %S ...", - L"接受游戏设置: ", - L"你已经连接上了。", - L"你已经开始连接...", - // 5 - L"客户端 #%d - '%S' 已被雇佣 '%s'。", - L"客户端 #%d - '%S' 已雇佣另一名佣兵。", - L"你已准备 - 准备就绪 = %d/%d。", - L"你不再准备 - 准备就绪 = %d/%d。", - L"开始战斗...", - // 10 - L"客户端 #%d - '%S' 已准备 - 准备就绪 = %d/%d。", - L"客户端 #%d - '%S' 不再准备 - 准备就绪 = %d/%d", - L"你已准备。 等候其他客户端... 按'OK'如果你已准备就绪。", - L"让我们开始战斗!", - L"要开始游戏必须运行一台客户端。", - // 15 - L"游戏无法开始。没有佣兵被雇佣...", - L"等待服务器解锁便携电脑出现'OK'...", - L"中断", - L"中断结束", - L"鼠标方格坐标: ", - // 20 - L"X: %d, Y: %d", - L"坐标值: %d", - L"服务器独占模式", - L"手动选择服务器优先级: ('1' - 授权 便携电脑/雇佣) ('2' - 启动/载入 级别) ('3' - 解锁 UI) ('4' - 完成设置)", - L"分区=%s, 最大客户端数=%d, 最大佣兵数=%d, 游戏模式=%d, 同一佣兵=%d, 伤害倍数=%f, 时间前进=%d, 秒/Tic=%d, 取消 BobbyRay=%d, 取消 Aim/Merc 装备=%d, 取消士气=%d, 测试=%d。", - // 25 - L"", - L"新建连接: 客户端 #%d - '%S'。", - L"队: %d。",//not used any more - L"'%s' (客户端 %d - '%S') 已被 '%s' (客户端 %d - '%S' 杀死)", - L"踢出客户端 #%d - '%S'。", - // 30 - L"开始排序客户端号。 #1: <取消>, #2: %S, #3: %S, #4: %S", - L"开始客户端 #%d。", - L"请求即时模式...", - L"转回即时模式。", - L"错误: 转回过程中出现错误。", - // 35 - L"要解锁笔记本电脑开始雇佣吗?(连接所有客户端?)", - L"服务器已经解锁笔记本电脑。开始雇佣!", - L"中断。", - L"你无法更改着陆点,如果你只是客户端而不是服务器。", - L"你拒绝投降, 因为你在一个多人游戏中。", - // 40 - L"你所有的佣兵全部死亡!", - L"激活观看模式。", - L"你已被击败!", - L"对不起, 在多人游戏中无法攀登。", - L"你雇佣了 '%s'", - // 45 - L"当开始购买后你不能更换地图",// L"You cant change the map once purchasing has commenced", - L"地图改为 '%s'。",// L"Map changed to '%s'", - L"玩家 '%s' 断开连接, 踢出游戏",// L"Client '%s' disconnected, removing from game", - L"您已经断开连接,返回主菜单。",// L"You were disconnected from the game, returning to the Main Menu", - L"连接失败, 5秒内重试, 还有%i次重试机会……",// L"Connection failed, Retrying in 5 seconds, %i retries left...", - //50 - L"连接失败,放弃……",// L"Connection failed, giving up...", - L"在另一个玩家进入前您无法开始游戏。",// L"You cannot start the game until another player has connected", - L"%s : %s", - L"发送给所有人",// L"Send to All", - L"发送给盟友",// L"Allies only", - // 55 - L"此游戏已经开始,无法加入。",// L"Cannot join game. This game has already started.", - L"%s (team): %s", - L"#%i - '%s'",// L"Client #%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"已收到服务器的所有文件。",// L"Received all files from server.", - L"'%S' 完成下载。",// L"'%S' finished downloading from server.", - L"'%S' 开始从服务器下载。",// L"'%S' started downloading from server"., - L"在全部客户端的文件未接收完以前不能开始游戏。",// L"Cannot start the game until all clients have finished receiving files", - L"你需要下载修改后的文件才能继续游戏, 你想继续吗?",// L"This server requires that you download modified files to play, do you wish to continue?", - // 65 - L"点击 '准备' 进入战术画面。",// L"Press 'Ready' to enter tactical screen.", - L"不能连接到服务器,因为你的版本%S和服务器端的版本%S不同。", - L"你击毙了一个敌人。", - L"无法启动游戏,因为所有小队都一样。", //L"Cannot start the game, because all teams are the same.", - L"服务器使用了新装备系统(NIV),但是你的屏幕分辨率不支持NIV。", // - // 70 - L"无法保存接收文件'%S'", - L"%s的炸弹被%s拆除了", - L"你输了,真丢人", // All over red rover - L"禁用观众模式", - L"选择所要踢出游戏的用户:#1: <取消>, #2: %S, #3: %S, #4: %S", - // 75 - L"队伍%s被消灭了。", - L"客户端初始化失败。结束游戏。", - L"客户端连接中断,强行关闭。", - L"客户端无响应。", - L"提示:如果游戏卡死(对手进度条不动),告知服务端然后按ALT+E获取控制权!", - // 80 - L"AI回合 - %d剩余", -}; - -STR16 gszMPEdgesText[] = -{ - L"北", //L"N", - L"东", //L"E", - L"南", //L"S", - L"西", //L"W", - L"中", //L"C", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"F小队", - L"B小队", - L"D小队", - L"C小队", - L"N/A", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"游戏类型: ",// L"Game Type: ", - L"玩家: ",// L"Players: ", - L"所拥有的佣兵: ",// L"Mercs each: ", - L"手提电脑打开时你无法开始移动。",// L"You cannot change starting edge once Laptop is unlocked.", - L"手提电脑开启后你无法更换队伍。",// L"You cannot change teams once the Laptop is unlocked.", - L"随机佣兵: ",// L"Random Mercs: ", - L"Y", - L"难度:",// L"Difficulty:", - L"服务器版本:", //Server Version -}; - -STR16 gzMPSScreenText[] = -{ - L"记分板",// L"Scoreboard", - L"继续",// L"Continue", - L"取消",// L"Cancel", - L"玩家",// L"Player", - L"杀人数",// L"Kills", - L"死亡数",// L"Deaths", - L"女王的部队",// L"Queen's Army", - L"命中数",// L"Hits", - L"脱靶数",// L"Misses", - L"准确度",// L"Accuracy", - L"损害量",// L"Damage Dealt", - L"受损量",// L"Damage Taken", - L"请等待服务器指令按‘继续’。", //L"Please wait for the server to press 'Continue'.", -}; - -STR16 gzMPCScreenText[] = -{ - L"取消",// L"Cancel", - L"连接到服务器",// L"Connecting to Server", - L"获得服务器设置",// L"Getting Server Settings", - L"下载定制文件",// L"Downloading custom files", - L"按 'ESC' 取消,'Y' 开始聊天",// L"Press 'ESC' to cancel or 'Y' to chat", - L"按 'ESC' 取消", // L"Press 'ESC' to cancel", - L"准备", // L"Ready", -}; - -STR16 gzMPChatToggleText[] = -{ - L"发送给所有人",// L"Send to All", - L"发送给盟友",// L"Send to Allies only", -}; - -STR16 gzMPChatboxText[] = -{ - L"多人聊天",// L"Multiplayer Chat", - L"聊天: 按 'Enter' 发送,'Esc' 取消。",// L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", -}; - - -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits 用于旧特长 - L"下一页你必须依照你作为雇佣兵的专业选择特长。注意你只能选择两种一般特长或者一种专家级特长。", - L"你可以只选择一个专家特长或者干脆什么也不选,作为回报你会得到额外的能力点数。注意电子、左右开弓和伪装是没有专家级的。", - // For new major/minor traits 用于新的主/副特长 - L"下一步你将会为你的佣兵选择专业技能。在第一页你可以选择%d项潜在主技能,代表佣兵在你的小队里的角色,第二页你可以选择副技能,代表个人特征。", // L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", - L"最多只能选择%d项。这意味着如果你没有选择主技能,你可以选择%d项副技能。如果你选择了两个主技能(或者一个加强技能),你只能再选择%d项副技能。", // L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"请 按 照 你 对 自 己 的 感 觉 , 调 整 你 的 各 项 能 力 值 。 各 项 能 力 值 的 最 大 值 为", - L"I.M.P 能力值和技能概览。", - L"奖励点数 :", - L"开始等级", - // New strings for new traits - L"下一页你将设定你的属性(生命,敏捷,灵敏,力量和智力)和基本技能。属性不能低于%d。", - L"其余的是“技能”,它可以设定为零,表示你对此一窍不通。", - L"所有初始数值都设置在最低,其中有一些数值因为你选择的特技而被设在一个最低标准,不能低于该标准。", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"I.M.P 性格分析", - L"现在开始你个人档案的建立,在第一页会有一些性格特质给你的角色选择,可能你会发觉列出的选择未能完全反映你的性格,但是请至少选择一样你认为最接近你的。", - L"下面来设定你性格上的缺陷,相信自己做一个诚实的孩子吧!每个人至少都有一种缺陷的。真实反映有助于让你的未来雇主更能了解你的潜力,避免给你安排不利的工作环境。", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"平常", - L"友善", - L"独行侠", - L"乐观主义者", - L"悲观主义者", - L"有侵略性", - L"傲慢自大", - L"大人物", - L"神憎鬼厌", - L"胆小鬼", - L"I.M.P 性格特征", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"普通", - L"喜欢社交", - L"独行侠", - L"乐观", - L"坚定自信", - L"知识份子", - L"野性", - L"侵略性", - L"镇定", - L"无所畏惧", - L"和平主义者", - L"恶毒", - L"爱炫耀", - L"懦夫", //L"Coward", - L"I.M.P 性格特征", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"I.M.P 颜色及身型", - L"I.M.P 颜色", - L"请选择你喜欢的IMP发色、肤色、服装颜色以及体型。", - L"请选择你喜欢的IMP发色、肤色、服装颜色。", - L"点选这里佣兵将单手持大枪。", - L"\n(提示: 你必须有强壮体格。)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"头色", - L"肤色", - L"上衣颜色", - L"裤子颜色", - L"一般体型", - L"魔鬼身材", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"身心健全", - L"怕热", - L"神经质", - L"幽闭恐惧症", - L"旱鸭子", - L"怕虫", - L"健忘", - L"神经错乱", - L"聋子", //L"Deaf", - L"近视眼", //L"Shortsighted", - L"血友病",//L"Hemophiliac", - L"恐高", //L"Fear of Heights", - L"自残倾向", //L"Self-Harming", - L"I.M.P 性格缺陷", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] = -{ - L"我们觉得你肯定会因为这不是语音信息很高兴。", //L"We bet you're glad this isn't voicemail.", - L"你不是小时候去迪厅去多了,就是离大规模火炮轰击太近,或者就是太老了。总之,你的队友最好开始学习手语了。", // L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"如果丢了眼镜你就死定了。", // L"You'll be screwed if you ever lose your glasses.", - L"因为你在发光的长方体前面花了太久时间。你应该多吃点胡萝卜,你见过戴眼镜的兔子么?没有吧。", // L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = -{ - L"你确信这个工作适合你么?",//L"Are you SURE this is the right job for you?", - L"只要你够NB永远不被枪打中,或者战斗只在设施完备的医院中进行,应该就会没事的。",//L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= -{ - L"这么说吧,你是个走路鸡。", //L"Let's just say you are a grounded person.", - L"登高啊,上房啊,爬山什么的任务啊对你来说很艰难,我们推荐你去没有山的地方执行任务,比如荷兰。", //L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"你应该经常消毒你的刀子。", //L"Might want to make sure your knives are always clean.", - L"你对刀子有种特别的感情。我不是说你害怕刀子,而是完全相反的那种感情,你懂吧?", //L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s缺乏所需要的力量。", - L"%s缺乏所需要的敏捷。", - L"%s缺乏所需要的灵活。", - L"%s缺乏所需要的生命值。", - L"%s缺乏所需要的智慧。", - L"%s缺乏所需要的枪法。", - // 6 - 10 - L"%s缺乏所需要的医疗技能。", - L"%s缺乏所需要的机械技能。", - L"%s缺乏所需要的领导能力。", - L"%s缺乏所需要的爆破技能。", - L"%s缺乏所需要的经验(等级)。", - // 11 - 15 - L"%s的士气不足不能完成这项任务。", - L"%s过度疲劳, 不能完成这项任务。", - L"%s的忠诚度不足,当地人拒绝让你执行这项任务。", - L"已经有太多人被分配到%s了。", - L"已经有太多人在%s执行这项任务了。", - // 16 - 20 - L"%s找不到更多需要修理的物品。", - L"%s损失了一些%s, 在%s的工作中!", - L"%s损失了一些%s, 在%s, %s的工作中!", - L"%s在%s工作时负伤,急需医护!", - L"%s在%s,%s工作时负伤,急需医护!", - // 21 - 25 - L"%s在%s工作时负伤,只不过是皮外伤。", - L"%s在%s,%s工作时负伤,只不过是皮外伤。", - L"%s地区的居民似乎对%s的出现不满。", - L"%s地区的居民似乎对%s在%s的行为不满。", - L"%s在%s的所作所为造成地区忠诚度下降!", - // 26 - 30 - L"%s在%s, %s的所作所为造成了该地区忠诚度下降!", - L"%s喝高了。", // <--- This is a log message string. - L"%s在%s得了重病, 被暂时解职了。", - L"%s得了重病, 无法继续在%s, %s的活动。", - L"%s在%s负伤了。", // <--- This is a log message string. - // 31 - 35 - L"%s在%s负了重伤。", //<--- This is a log message string. - L"现在这里有俘虏能认得出%s。", - L"%s现在是人尽皆知的佣兵告发者。至少需要再等%d小时。", //L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", - - -}; - -STR16 gzFacilityRiskResultStrings[]= -{ - L"力量", - L"灵活", - L"敏捷", - L"智慧", - L"生命", - L"枪法", - // 5-10 - L"领导", - L"机械", - L"医疗", - L"爆破", -}; - -STR16 gzFacilityAssignmentStrings[]= -{ - L"环境", - L"工作人员", - L"饮食", - L"休息", - L"修理物品", - L"修理%s", // Vehicle name inserted here - L"修理机器人", - // 6-10 - L"医生", - L"病人", - L"锻炼力量", - L"锻炼敏捷", - L"锻炼灵活", - L"锻炼生命", - // 11-15 - L"锻炼枪法", - L"锻炼医疗", - L"锻炼机械", - L"锻炼领导", - L"锻炼爆破", - // 16-20 - L"学习力量", - L"学习敏捷", - L"学习灵活", - L"学习生命", - L"学习枪法", - // 21-25 - L"学习医疗", - L"学习机械", - L"学习领导", - L"学习爆破", - L"训练力量", - // 26-30 - L"训练敏捷", - L"训练灵活", - L"训练生命", - L"训练枪法", - L"训练医疗", - // 30-35 - L"训练医疗", - L"训练领导", - L"训练爆破", - L"审讯俘虏", //L"Interrogate Prisoners", - L"便衣揭发", - // 36-40 - L"传播谣言", - L"传播谣言", // spread propaganda (globally) - L"搜集谣言", - L"指挥民兵", //L"Command Militia", militia movement orders -}; -STR16 Additional113Text[]= -{ - L"铁血联盟2 v1.13 窗口模式需要一个16bpp的颜色深度。", - L"铁血联盟2 v1.13 全屏模式(%d x %d)不支持你的显示屏分辨率。\n请改变游戏分辨率或使用16bpp窗口模式。", //L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", - L"存盘文件%s读取错误:存盘文件的(%d)数量跟Ja2_Options.ini设置的(%d)不一致。", //L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", - // WANNE: Savegame slots validation against INI file - L"佣兵 (MAX_NUMBER_PLAYER_MERCS) / 交通工具 (MAX_NUMBER_PLAYER_VEHICLES)", - L"敌人 (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"动物 (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"民兵 (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"平民 (MAX_NUMBER_CIVS_IN_TACTICAL)", - -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -// MINTY - Changed some of the following taunts to sound more natural -STR16 sEnemyTauntsFireGun[]= -{ - L"吃我一发吧!", - L"兔崽子,来见你外公!", // MINTY - "Touch this" just doesn't sound right, so I changed it to a Scarface quote. - L"放马过来吧!", - L"你是我的了!", - L"去死吧!", - L"害怕了吗?操你妈妈的!", - L"这会很痛的哦!", - L"来吧你这个混蛋!", - L"战吧!很快就会分出胜负的!", - L"过来爸爸的怀抱里吧!", - L"你的葬礼马上就会举行的了!", - L"小样!你很快就会被打包寄回去的!", - L"嘿!想玩玩是吧?", - L"臭婊子,你早应该呆在家里!", - L"靠!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"把你们做成烤肉!",// L"Barbecue time!", - L"送给你的礼物!",// L"I got a present for ya.", - L"灰飞烟灭吧!",// L"Bam!", - L"说“茄子”!",// L"Smile!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"给我接住!", - L"这是给你的!", - L"老鼠给我出来吧!", - L"这个是专门给你尝尝的。", - L"灭哈哈哈哈哈!", - L"接住吧!猪头!", - L"我就喜欢这样!", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"我要把你的头皮活活剥下来!死人头!", - L"来跟我玩玩吧!", - L"我要让你开肠破肚!", - L"我会把你碎尸万段!", - L"他妈的!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"靠!看来我们遇到纯爷们了...", - L"我参加军队是为了抢娘们而不是来送死的!", - L"我受够啦!", - L"上帝啊!救救我吧!", - L"我可不想白白送死...", - L"妈妈咪啊!", - L"老子还会回来的!后会有期!", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"我似乎听见啥了!", - L"谁在那里?", - L"搞什么搞?", - L"嘿!是谁?...", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"他们就在那里!", - L"现在我们来玩玩吧!", - L"我没想到会变成这样...", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"啊啊啊!", - L"呜呜!", - L"痛死我啦!", - L"操你妈妈的!", - L"你会后悔的!", - L"什么..!", - L"你现在可是真把爷我惹火了。", - -}; - -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"草…我草!", //L"Da'ffff...!", - L"我的天哪!", //L"Oh my God!", - L"真他妈的!", //L"Holy crap!", - L"有敌人!", //L"Enemy!!!", - L"警报!警报!", //L"Alert! Alert!", - L"这儿有一个!", //L"There is one!", - L"进攻!", //L"Attack!", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"说明", - L"常规", - L"进阶", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"说明", - L"常规", - L"进阶", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"基本性能", - L"附加性能", - L"AP 消耗", - L"点射 / 连发", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"参数图标", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|说|明|页|面:\n \n显示该物品基本的文字描述。", - L"|常|规|性|能|页|面:\n \n显示该物品的详细性能数据。\n \n武器:再次点击进入第二页。", - L"|进|阶|性|能|页|面:\n \n显示使用该物品的额外效果。", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|基|本|性|能:\n \n由物品类别(武器/护甲/杂物)决定的基本性能与数据。", - L"|附|加|性|能:\n \n该物品的附加特性,以及(或)附加能力。", - L"|A|P |消|耗:\n \n使用这件武器需要耗费的AP。", - L"|点|射 |/ |连|发|性|能:\n \n武器在点射/连发模式下的相关数据。", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|参|数|图|标\n \n鼠标悬停显示参数名称。", - L"|基|本|数|值\n \n该物品使用的基本数值,不包括由附件或弹药导致的\n奖励或惩罚。", - L"|附|件|加|成\n \n弹药,附件或较差的物品状态导致的\n奖励或惩罚。", - L"|最|终|数|值\n \n该物品使用的最终数值,包括所有由附件或弹药导致的\n奖励或惩罚。", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"参数图标(鼠标悬停显示名称)", - L"|站|立 姿态的奖励/惩罚 ", - L"|蹲|伏 姿态的奖励/惩罚 ", - L"|匍|匐 姿态的奖励/惩罚 ", - L"奖励/惩罚", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|精|度", //L"|A|c|c|u|r|a|c|y", - L"|杀|伤|力", //L"|D|a|m|a|g|e", - L"|射|程", //L"|R|a|n|g|e", - L"|操|控|难|度", //L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", - L"|精|瞄|等|级", //L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", - L"|瞄|准|镜|倍|率", //L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|红|点|效|果", //L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|消|焰", //L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|噪|音", //L"|L|o|u|d|n|e|s|s", - L"|可|靠|性", //L"|R|e|l|i|a|b|i|l|i|t|y", - L"|修|理|难|度", //L"|R|e|p|a|i|r |E|a|s|e", - L"|精|瞄|最|低|有|效|距|离", //L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", - L"|命|中|率|修|正", //L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", - L"|举|枪|A|P", //L"|A|P|s |t|o |R|e|a|d|y", - L"|单|发|A|P", //L"|A|P|s |t|o |A|t|t|a|c|k", - L"|点|射|A|P", //L"|A|P|s |t|o |B|u|r|s|t", - L"|连|发|A|P", //L"|A|P|s |t|o |A|u|t|o|f|i|r|e", - L"|换|弹|匣|A|P", //L"|A|P|s |t|o |R|e|l|o|a|d", - L"|手|动|上|弹|A|P", //L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", - L"|横|向|后|坐|力", //L"|L|a|t|e|r|a|l |R|e|c|o|i|l", // No longer used - L"|后|坐|力", //L"|T|o|t|a|l |R|e|c|o|i|l", - L"|连|发|子|弹|数/5|A|P", //L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \n决定该武器发射的子弹偏离瞄准点的远近。\n \n数值范围:0~100。该数值越高越好。", - L"\n \n决定该武器发射的子弹的平均伤害,不包括\n护甲或穿甲修正。\n \n该数值越高越好。", - L"\n \n从该枪射出的子弹在落地前的\n最大飞行距离(格数)。\n \n该数值越高越好。", - L"\n \n决定握持该武器进行射击时的操控难度。\n \n操控难度越高,命中率越低。\n \n该数值越低越好。", - L"\n \n这个数值显示了该武器的精瞄等级。\n \n精瞄等级越低,每次瞄准获得的命中率加成越\n高。因此,精瞄等级要求较低的武器可以在不损\n失精度的情况下更快地瞄准。\n \n该数值越低越好。", - L"\n \n该值大于1.0时,远距离瞄准中的误差会按比例减小。\n \n \n请注意,高倍率瞄准镜不利于射击距离过近的目标。\n \n \n该值为1.0则说明该武器未安装瞄准镜。\n", - L"\n \n在一定距离上按比例减少瞄准误差。\n \n红点效果只在一定距离内有效,因为超过该距离\n光点就会开始暗淡,最终在足够远处消失。\n \n该数值越高越好。", - L"\n \n该属性起作用时,武器发射不会产生枪焰。\n \n \n敌人不能通过枪焰判断你的位置,但是他们仍然可\n能听到你。", - L"\n \n该参数显示了武器开火时枪声传播的\n范围(格数)。\n \n此范围内的敌人均有可能听到枪声。\n \n该数值越低越好。", - L"\n \n决定了该武器使用时损耗的快慢。\n \n该数值越高越好。", - L"\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有工兵和特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \n瞄准镜提供瞄准命中率加成的最短距离。\n(再近就无效了)", - L"\n \n激光瞄准器提供的命中率修正。", - L"\n \n端枪准备开火所需的AP。\n \n举起该武器后,连续发射不会再消\n耗举枪AP。\n \n但是,除转向和开火之外的其它动作均会放\n下武器。\n \n该数值越低越好。", - L"\n \n该武器射出单发子弹所需的AP。\n \n对于枪械而言,该数值显示了在不精瞄的情况下发射\n一发子弹的AP消耗。\n \n如果该图标为灰色,则该武器不可单发射击。\n \n该数值越低越好。", - L"\n \n一次点射所需的AP。\n \n每次点射的子弹数由枪支本身决定,并\n显示在该图标上。\n \n如果该图标发灰,则该武器不可点射。\n \n该数值越低越好。", - L"\n \n连发模式下,该武器一次齐射三发子弹所需的AP。\n \n超过3发子弹,则需要额外的AP。\n \n如果该图标发灰,则该武器不可连发。\n \n该数值越低越好。", - L"\n \n重新装填榴弹/更换弹匣所需的AP。\n \n该数值越低越好。", - L"\n \n在射击间歇为该武器手动上弹的AP消耗。\n \n该数值越低越好。", - L"\n \n该参数是武器枪口在单发或连发时每颗子弹所造成的水平偏移量。\n \n正数表示向右移动。\n \n负数表示向左移动。\n \n越接近0越好。", //L"\n \nThe distance this weapon's muzzle will shift\nhorizontally between each and every bullet in a\nburst or autofire volley.\n \nPositive numbers indicate shifting to the right.\nNegative numbers indicate shifting to the left.\n \nCloser to 0 is better.", // No longer used - L"\n \n该参数是武器枪口在单发或自动模式下每发子弹所造成的最大偏移量。\n \n该数值越低越好。", //L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", //HEADROCK HAM 5: Altered to reflect unified number. - L"\n \n该参数显示了该武器每多花费5AP在连发模式时\n可多发射的子弹数。\n \n该数值越高越好。", - L"\n \n决定了修理该武器的难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|防|护|值", - L"|覆|盖|率", - L"|损|坏|率", - L"|修|理|难|度", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \n这是护具最重要的属性,决定了其可以吸收多\n少伤害。然而,穿甲攻击以及其它的随机因素\n都可能对最终的伤害值产生影响。\n \n该数值越高越好。", - L"\n \n决定该护具对身体的防护面积。\n \n如果该值低于100%,则攻击有可能\n对未被护具保护的部分身体造成最大伤害。\n该数值越高越好。", - L"\n \n显示护具被击中时的磨损速率,与其\n吸收的伤害成比例。\n该数值越低越好。", - L"\n \n决定了护甲修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有工兵和特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \n决定了护甲修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|侵|彻|力|(|穿|甲|弹|)", - L"|翻|搅|力|(|开|花|弹|)", - L"|爆|炸|力|(|炸|子|儿|)", - L"|过|热|修|正", - L"|毒|性|百|分|比", - L"|污|垢|修|正", -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \n即子弹穿透目标护甲的能力。\n \n该值小于1时,被子弹命中的护甲的防护值会成比例减少。\n \n反之,当该值大于1时,则增加\n目标护甲的防护值。\n \n该数值越低越好。", - L"\n \n该值决定子弹打穿护甲击中身体时的伤害力\n加成。\n \n该值大于1时,子弹在穿过护甲后会增加伤害。\n \n当该值小于1时,子弹穿过护甲后会减少伤害。\n \n该数值越高越好。", - L"\n \n该值是子弹在击中目标前已经造成的潜在伤害的倍率。\n \n大于1的数值可以增加伤害,反之\n则减少伤害。\n \n该数值越高越好。", - L"\n \n子弹温度系数。\n \n该数值越低越好。", - L"\n \n该值决定子弹伤害中具有毒性的百分比。", - L"\n \n弹药造成的额外污垢。\n \n该数值越低越好。", -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|杀|伤|力", - L"|眩|晕|杀|伤|力", - L"|爆|炸|杀|伤|力", - L"|爆|炸|范|围", - L"|眩|晕|爆|炸|范|围", - L"|噪|音|扩|散|范|围", - L"|催|泪|毒|气|初|始|范|围", - L"|芥|子|毒|气|初|始|范|围", - L"|照|明|初|始|范|围", - L"|烟|雾|初|始|范|围", - L"|燃|烧|初|始|范|围", - L"|催|泪|毒|气|最|终|范|围", - L"|芥|子|毒|气|最|终|范|围", - L"|照|明|最|终|范|围", - L"|烟|雾|最|终|范|围", - L"|燃|烧|最|终|范|围", - L"|效|果|持|续|时|间", - // HEADROCK HAM 5: Fragmentation - L"|碎|片|数|量", - L"|碎|片|单|片|杀|伤", - L"|碎|片|半|径", - // HEADROCK HAM 5: End Fragmentations - L"|噪|音", - L"|挥|发|性", - L"|修|理|难|度", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \n本次爆炸造成的伤害值。\n \n爆炸型爆破品只在被引爆时造成一次性伤害,而\n具有持续效果的爆破品每回合都可以造成伤\n害,直到效果消失。\n \n该数值越高越好。", - L"\n \n爆破造成的非致命性眩晕伤害值。\n \n爆炸型爆破品只在被引爆时造成一次性伤害,而\n具有持续效果的爆破品每回合都可以造成伤\n害,直到效果消失。\n \n该数值越高越好。", - L"\n \n该爆破品不会弹来弹去。\n \n它一碰到任何实物就会立刻爆炸!", - L"\n \n这是该爆破品的有效杀伤半径。\n \n目标距爆炸中心越远,受到的伤害越少。\n \n该数值越高越好。", - L"\n \n这是该爆破品的眩晕伤害半径。\n \n目标距爆炸中心越远,受到的伤害越少。\n \n该数值越高越好。", - L"\n \n这是该陷阱所发出噪音的传播距离。\n \n在该距离之内的士兵可能听到这个噪音\n并有所警觉。\n \n该数值越高越好。", - L"\n \n这是该爆破品释放出的催泪毒气的初始半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n \n下方则显示了该效果的作用半径与持续时间。\n \n该数值越高越好。", - L"\n \n这是该爆破品释放出的芥子毒气的初始半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n \n下方则显示了该效果的作用半径与持续时间。\n \n该数值越高越好。", - L"\n \n这是该爆破品发光的初始半径。\n \n距爆炸中心较近的格子会变得非常明亮,而接近\n边缘的格子只会比平常亮一点点。\n \n下方则显示了该效果的作用半径与持续时间。\n \n该数值越高越好。", - L"\n \n这是该爆破品释放烟雾的初始半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n(如果有的话)更重要的是,烟雾中的人\n极难被发现,同时他们也会失\n去很大一部分视距。\n \n请查看最大半径和有效时间(显示在下面)。\n \n该数值越高越好。", - L"\n \n这是该爆破品释放出的火焰的初始半径。\n \n在该半径之内的敌人每回合都会受到所列出的\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该数值越高越好。", - L"\n \n这是该爆破品发出的亮光消失前的半径。\n \n离爆炸中心较近的格子会变得非常亮,而接近\n边缘的格子只会比平常稍亮。\n \n留意初始半径和有效时间。\n \n也请记住,与其它爆破品不同的是照明效果会随\n着时间流逝越来越小直到消失。\n \n该数值越高越好。", - L"\n \n这是该爆破品释放的烟雾消散前的最大半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n(如果有的话)更重要的是,烟雾中的人\n极难被发现,同时他们也会失\n去很大一部分视距。\n \n请同时查看初始半径和有效时间。\n \n该数值越高越好。", - L"\n \n这是该爆破品释放的火焰熄灭前的最大半径。\n \n在该半径之内的敌人每回合都会受到所列出的\n物理伤害与眩晕伤害。\n \n请同时查看初始半径和有效时间。\n \n该数值越高越好。", - L"\n \n这是爆炸效果的持续时间。\n \n爆炸效果的范围每回合都会向所有的方向增加一\n格,直到其半径达到所列出的最大值。\n \n一旦持续时间过去,爆炸效果就会完全消失。\n \n注意照明类的爆炸与众不同,会随着时间\n流逝越来越小。\n \n该数值越高越好。", - // HEADROCK HAM 5: Fragmentation - L"\n \n这是爆炸中溅射出碎片的数量。\n \n碎片和子弹类似,会击中任何距离太近的人。\n \n该数值越高越好。", - L"\n \n这是爆炸中溅射出碎片的潜在伤害。\n \n该数值越高越好。", - L"\n \n这是爆炸中溅射出碎片的平均散布范围。\n \n或近或远,这里是取平均值。\n \n该数值越高越好。", - // HEADROCK HAM 5: End Fragmentations - L"\n \n这是爆破品爆炸时发出的声音能够被佣兵和敌\n军听到的距离(格数)。\n \n听到爆炸声的敌人会察觉到你。\n \n该数值越低越好。", - L"\n \n这个数值代表该爆破品受到伤害时(如其它爆破品在\n近处爆炸)自身爆炸的几率(100以内)。\n \n因此携带高挥发性爆破品进入战斗极其危险,应\n当极力避免。\n \n数值范围:0~100,该数值越低越好。", - L"\n \n决定了炸药的修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|修|理|难|度", - L"|可|用|数|量", //L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", - L"|数|量", //L"|V|o|l|u|m|e", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \n决定了这个携行具的可用空间。\n \n该数值越高越好。", //L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", - L"\n \n决定了这个携行具已被占用的空间。\n \n该数值越低越好。", //L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|曳|光|弹", - L"|反|坦|克|弹", - L"|破|甲", - L"|酸|腐|弹", - L"|破|锁|弹", - L"|防|爆", - L"|防|水", - L"|电|子|产|品", - L"|防|毒|面|具", - L"|需|要|电|池", - L"|能|够|开|锁", - L"|能|够|剪|线", - L"|能|够|撬|锁", - L"|金|属|探|测|器", - L"|远|程|引|爆|装|置", - L"|远|程|爆|破|引|信", - L"|定|时|爆|破|引|信", - L"|装|有|汽|油", - L"|工|具|箱", - L"|热|成|像|仪", - L"|X|光|射|线|仪", - L"|装|饮|用|水", - L"|装|酒|精|饮|品", - L"|急|救|包", - L"|医|药|箱", - L"|破|锁|炸|弹", - L"|饮|料", - L"|食|物", - L"|输|弹|带", //L"|A|m|m|o |B|e|l|t", - L"|机|枪|手|背|包", //L"|A|m|m|o |V|e|s|t", - L"|拆|弹|工|具", //L"|D|e|f|u|s|a|l |K|i|t", - L"|间|谍|器|材", //L"|C|o|v|e|r|t |I|t|e|m", - L"|不|会|损|坏", //L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", - L"|金|属|制|品", //L"|M|a|d|e |o|f |M|e|t|a|l", - L"|水|中|下|沉", //L"|S|i|n|k|s", - L"|双|手|操|作", //|T|w|o|-|H|a|n|d|e|d", - L"|挡|住|准|心", //L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", - L"|反|器|材|弹|药", //L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", - L"|面|部|防|护", //L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|感|染|防|护", //L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|护|盾", //L"|S|h|i|e|l|d", - L"|照|相|机", //L"|C|a|m|e|r|a", - L"|掩|埋|工|具|", //L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|空|血|包", //L"|E|m|p|t|y |B|l|o|o|d |B|a|g", - L"|血|包", //L"|B|l|o|o|d |B|a|g", 44 - L"|防|火|护|甲", //L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|管|理|能|力|增|益|器", //L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|间|谍|能|力|增|益|器", //L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|医|用|夹|板", //L"|M|e|d|i|c|a|l |S|p|l|i|n|t", - L"|阻|燃|弹|药", //L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", - L"|燃|烧|弹|药", //L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|弹|链|供|弹", //L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \n在点射或者连射时,曳光弹会产生曳光效果。\n \n由于曳光能够帮助持枪者校准,所以即使考虑\n后座力,该子弹的杀伤仍是致命的;曳光弹\n也能在黑暗中照亮目标。\n \n然而,曳光弹也会暴露射手的位置!\n \n曳光弹会抵消枪口消焰器的效果。", - L"\n \n这种子弹能够对坦克装甲造成伤害。\n \n没有穿甲属性的子弹不能\n对坦克造成任何伤害。\n \n即使拥有穿甲属性,大部分枪械对于坦克的伤害仍然\n十分有限,所以不要抱有太大的期望。", - L"\n \n这种子弹完全无视防弹护甲。\n \n无论目标是否穿着防弹衣,被该子弹击中时,都\n将受到全额伤害!", - L"\n \n当这种子弹击中目标身上的护甲时会使\n护甲快速损坏。\n \n也可能完全破坏目标的护甲。", - L"\n \n这种子弹对于破锁十分有效。\n \n当门锁或者其它容器的锁被击中时,会被严重损坏。", - L"\n \n这种防弹装甲对爆炸的防御力是其防护值的四倍。\n \n受到爆炸物伤害时,该护甲的防御数值按照\n装甲属性中列出数值的四倍计算。", - L"\n \n该物品防水。\n \n它不会因为浸没在水中而受损。没有该属性的\n物品会在持有者游泳时逐渐损坏。", - L"\n \n该物品是电子产品,含有复杂电路。\n \n电子产品在维修者没有电子技能时很难被修复。\n", - L"\n \n将该物品佩戴于面部时,使用者不受任何\n有毒气体的伤害。\n \n然而有些腐蚀性气体可以通过腐\n蚀作用穿过这个面罩。", - L"\n \n该物品需要电池。没有安装电池时使用者不\n能使用这个物品的主要功能。\n \n只要把所需电池安装于该物品的附件栏即可\n(步骤与将瞄准镜安装在步枪上一样)。", - L"\n \n该物品能够用于开锁。\n \n(用技巧)开锁不会发出声音,但是开稍微复\n杂一些的锁需要足够的机械能力。该物品提升了开锁几率。", - L"\n \n该物品能够绞断铁丝网。\n \n使用此物品,佣兵可以快速穿越用铁丝网封锁的地区,以便\n包围敌人!", - L"\n \n该物品能够用于破坏锁具。\n \n破坏锁具需要很大的力量,既会发出很大的\n噪音,也很耗费佣兵的体力。但是在没有出色\n的技巧和复杂的工具时,用力量破坏锁具也是明智\n之举。该物品提升了撬锁几率。", - L"\n \n该物品能够探测地下的金属物品。\n \n显然其主要用于在没有肉眼识别地雷的能力时探测地\n雷。但是你也可以用它发现埋在地下的宝藏。", - L"\n \n该物品能够用来引爆已经安装远程爆破引\n信的炸弹。 \n \n先放置炸弹,时机一到再用它引爆。", - L"\n \n安装该引信的爆破物设置完成后\n,可以被远程控制器引爆。\n \n远程引信是设置陷阱的不二选择,因为它只会在你需要\n它爆炸的时候被引爆,而且留给你足够的时间跑\n开!", - L"\n \n安装该引信的爆破物设置完成后\n,该引信会开始倒数计时,并在设置的时间后\n被引爆。\n \n计时引信便宜并且易于安装,但是你必须给它\n设定合适的时间以便你能够跑开!", - L"\n \n该物品承有汽油。\n \n在你需要加油时十分有用。", - L"\n \n工具箱内装有各种能用来修复其它物品的工具。\n \n安排佣兵进行修复工作时该佣兵必须持有工具\n箱。该物品提升了维修效能。", - L"\n \n将该物品佩戴于面部时,可以\n利用热成像原理,发现\n墙壁后方的敌人。", - L"\n \n这种功能强大的仪器利用X光搜索敌军。\n \n它可以在短时间内暴露一定范围中的敌人位置。\n请远离生殖器使用!", - L"\n \n该物品装有饮用水。\n \n口渴时饮用。", - L"\n \n该物品内含美酒、酒精饮料、洋酒。\n嘿嘿,你叫它什么都行。\n \n适量饮用,不要酒后驾驶,小心肝硬化!", - L"\n \n这一战场的基础急救包提供了基本的医疗用品。\n \n可以被用来包扎受伤的角色以止血。\n \n如需要回复生命,使用名副其实的医药箱,并辅以大量的休息。", - L"\n \n这是名副其实的医药箱,可以用于外科手术或其它复杂的治疗。\n \n安排佣兵进行医疗工作时,该佣兵必须持有医\n药箱。", - L"\n \n该物品能够用于爆破锁具。\n \n使用它需要爆破技能以避免过早引爆。\n \n使用炸药是一个相对简单的破锁手段,但是会\n发出很大噪音,并且对于大部分佣兵来说过于\n危险。", - L"\n \n饮用该物品能让你止渴。", //L"\n \nThis item will still your thirst\nif you drink it.", - L"\n \n食用该物品能让你充饥。", //L"\n \nThis item will still your hunger\nif you eat it.", - L"\n \n使用该供弹带,你可以为他人的机关枪供弹。", //L"\n \nWith this ammo belt you can\nfeed someone else's MG.", - L"\n \n使用该机枪手背包中的供弹带,你可以为他人的机关枪供弹。", //L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", - L"\n \n该物品提升你的陷阱解除几率。", //L"\n \nThis item improves your trap disarm chance by ", - L"\n \n该物品及附着其上的所有物品均让怀疑者无从觉察。", //L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", - L"\n \n这个物品不会被损坏。", //L"\n \nThis item cannot be damaged.", - L"\n \n这个物品是金属制成的,它比其它物\n品更耐磨损。", //L"\n \nThis item is made of metal.\nIt takes less damage than other items.", - L"\n \n这个物品掉在水中会下沉消失。", //L"\n \nThis item sinks when put in water.", - L"\n \n这个物品需要两只手一起操作使用。", //L"\n \nThis item requires both hands to be used.", - L"\n \n这个物品会挡住准心,你无法再使\n用准心瞄准。", //L"\n \nThis item will block your iron sights\nso you cannot use them.", - L"\n \n这种弹药可以破坏发光的墙。\n或者其它不同种类的物品。", //L"\n \nThis ammo can destroy light walls\nand various other objects.", - L"\n \n如果你脸上带了这个,这就将降低\n传播给其他人的几率。", //L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", - L"\n \n如果保存在物品栏降低\n传染给其他人的几率。", //L"\n \nIf kept in your inventory, this will\nlower\nthe chance to be infected by other people.", - L"\n \n拿在手里,就可以抵挡前方的伤害。", //L"\n \nIf equipped in a hand, this will block incoming damage.", - L"\n \n你可以使用它拍照。", //L"\n \nYou can take photos with this.", - L"\n \n这个物品能让你更有效地掩埋尸体。", //L"\n \nThis item makes you more effective at burying corpses.", - L"\n \n医生可以从\n捐献者那里取血。", //L"\n \nA paramedic can extract blood\nfrom a donor with this.", - L"\n \n医生可以用血包输血\n以增加手术回复的生命值。", //L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \n可以降低%i%%的火焰伤害。", //L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \n这个工具可以\n提高%i%%的管理工作的效率。", //L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \n这个工具可以\n提高%i%%的间谍能力。", //L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \n一旦应用, 这个物品可以提高对你的手臂\n或者腿部重伤的治疗速率。", //L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", - L"\n \n这种弹药可以灭火。", //L"\n \nThis ammo can extinguish fire.", - L"\n \n这种弹药会引起燃烧(火灾)。", //L"\n \nThis ammo can cause fire.", - L"\n \n这种枪可以使用弹链供弹\n或者由LBE弹链供弹\n又或者由另一位佣兵供弹。", //L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|精|度|修|正", - L"|速|射|精|度|修|正|值", - L"|速|射|精|度|修|正|百|分|比", - L"|精|瞄|修|正|值", - L"|精|瞄|修|正|百|分|比", - L"|精|瞄|等|级|修|正", - L"|精|瞄|上|限|修|正", - L"|枪|械|使|用|修|正", - L"|弹|道|下|坠|修|正", - L"|瞄|准|误|差|修|正", - L"|杀|伤|力|修|正", - L"|近|战|杀|伤|力|修|正", - L"|射|程|修|正", - L"|瞄|准|镜|倍|率", - L"|红|点|效|果", - L"|水|平|后|坐|力|修|正", - L"|垂|直|后|坐|力|修|正", - L"|最|大|制|退|力|修|正", - L"|制|退|力|精|度|修|正", - L"|制|退|力|频|次|修|正", - L"|A|P|总|量|修|正", - L"|举|枪|A|P|修|正", - L"|单|发|A|P|修|正", - L"|点|射|A|P|修|正", - L"|连|发|A|P|修|正", - L"|上|弹|A|P|修|正", - L"|弹|夹|容|量|修|正", - L"|点|射|弹|数|修|正", - L"|消|焰", - L"|噪|音|修|正", - L"|物|品|尺|寸|修|正", - L"|可|靠|性|修|正", - L"|丛|林|迷|彩", - L"|城|市|迷|彩", - L"|沙|漠|迷|彩", - L"|雪|地|迷|彩", - L"|潜|行|修|正", - L"|听|觉|距|离|修|正", - L"|一|般|视|距|修|正", - L"|夜|晚|视|距|修|正", - L"|白|天|视|距|修|正", - L"|高|光|视|距|修|正", - L"|洞|穴|视|距|修|正", - L"|隧|道|视|野|效|应", - L"|最|大|制|退|力", - L"|制|退|力|频|次", - L"|命|中|率|修|正", - L"|精|瞄|修|正", - L"|单|发|射|击|温|度", - L"|冷|却|参|数", - L"|卡|壳|阈|值", - L"|损|坏|阈|值", - L"|单|发|射|击|温|度", - L"|冷|却|参|数", - L"|卡|壳|阈|值", - L"|损|坏|阈|值", - L"|毒|性|百|分|比", - L"|污|垢|修|正", - L"|毒|性|修|正",//L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r", - L"|食|物|点|数",//L"|F|o|o|d| |P|o|i|n|t|s" - L"|饮|用|点|数",//L"|D|r|i|n|k |P|o|i|n|t|s", - L"|剩|余|大|小",//L"|P|o|r|t|i|o|n |S|i|z|e", - L"|士|气|修|正",//L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r", - 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"|掰|击|锤|射|击", //L"|F|a|n |t|h|e |H|a|m|m|e|r", - L"|枪|管|配|置", //L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \n当安装于远程武器上时,该物品将修正武器的精\n度值。\n \n精度的提高能够使武器在精瞄时更容易命中远\n距离的目标。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n该物品按照所列数值修正射手使用远程武器打出去\n的每颗子弹的精度。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n在原本射击精度的基础上,该物品按照所列百分比修正射手使用远程武器射出\n的每颗子弹。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n该物品按照所列数值修正射手使用远程武器\n瞄准时,每次精瞄所增加的精度。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n该物品按照所列百分比修正射手使用远程武器\n瞄准时,每次精瞄所增加的精度。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n该物品修正该武器的精瞄等级。\n \n减少精瞄等级意味着每一次精瞄会增加更多的\n精度。因此,精瞄等级的减少,有助于这件武\n器在不损精度的情况下快速瞄准。\n \n该数值越低越好。", - L"\n \n在原本射击精度的基础上,该物品按照百分比修正射手使用远程武器时能\n达到的最大精度。\n \n该数值越高越好。", - L"\n \n当将该物品安装于远程武器上时,会修正武器的操\n控难度。\n \n易于操控的武器不论是否进行精瞄都更加\n准确。\n \n该修正基于武器的原始操控难度,步枪\n和重武器高而手枪和轻武器低。\n \n该数值越低越好。", - L"\n \n该物品修正超射距命中的难度。\n \n较高的修正值可以增加武器的最大射程至少几\n格。\n \n该数值越高越好。", - L"\n \n该物品修正命中移动目标的难度。\n \n较高的修正值能够增加在较远距离上命中移动目\n标的几率。\n \n该数值越高越好。", - L"\n \n该物品修正您武器的杀伤力。\n \n该数值越高越好。", - L"\n \n该物品按照所列数值修正您近战武器的伤害值。\n \n该物品只作用于近战武器,无论是利器还是\n钝器。\n \n该数值越高越好。", - L"\n \n当安装于远程武器上时,该物品可修正其\n最大有效射程。\n \n最大射程是指子弹明显坠落前可以飞行的距离。\n \n该数值越高越好。", - L"\n \n当安装于远程武器上时,该物品提供额外的瞄\n准倍率,使远距离射击相对来说更容易命中。\n \n请注意当目标距离小于最佳瞄准距离时,高倍率对于\n瞄准不利。\n \n该数值越高越好。", - L"\n \n当安装于远程武器上时,该物品在目标身上投\n影出一个红点,让其更容易被命中。\n \n红点效果只能在指定距离内使用,超过该距离\n光点就会暗淡直到最终消失。\n \n该数值越高越好。", - L"\n \n当安装于可点射或连发的远程武器上时,该\n物品按照百分比修正该武器的水平后座力。\n \n在连续射击时,降低后坐力可以帮助射手\n保持枪口指向目标。\n \n该数值越低越好。", - L"\n \n当安装于可点射或连发的远程武器上时,该\n物品按照百分比修正该武器的垂直后座力。\n \n在连续射击时,降低后坐力可以帮助射手\n保持枪口指向目标。\n \n该数值越低越好。", - L"\n \n该物品修正射手在点射或者连发时,应对制退后坐\n力的能力。\n \n高修正值能帮助射手控制后坐力较高的武器,即使\n射手自身力量较低。\n \n该数值越高越好。", - L"\n \n该物品修正射手在点射或者连发时,运用反作\n用力制退后坐力的精确度。\n \n高修正值能帮助射手维持枪口始终朝向目标,哪怕\n目标较远,也能提升精度。\n \n该数值越高越好。", - L"\n \n在射手进行点射或者连发时,该物品修正其频繁评估\n制退力大小以应对后坐力的能力。\n \n低修正值使连发的总体精度更高,此外,由于射手能\n正确制退后坐力,其长点射也更\n加准确。\n \n该数值越高越好。", - L"\n \n该物品直接修正佣兵每回合的初始AP量。\n \n该数值越高越好。", - L"\n \n当安装于远程武器上时,该物品修正举枪AP。\n \n该数值越低越好。", - L"\n \n当安装于远程武器上时,该物品修正单发AP。\n \n注意对于可以点射或连发的武器来说,该物品\n也会影响点射和连发的AP。\n \n该数值越低越好。", - L"\n \n当安装于可以进行点射的远程武器上时,该物品修正点射AP。\n \n该数值越低越好。", - L"\n \n当安装于可以进行连发的远程武器上时,该物品修正连发AP。\n \n注意,这不改变连发增加子弹时的AP消耗,只\n影响连发时AP的初始消耗。\n \n该数值越低越好。", - L"\n \n当安装于远程武器上时,该物品修正上弹AP。\n \n该数值越低越好。", - L"\n \n当安装于远程武器上时,该物品修正该武器的\n弹匣容量。\n \n该武器便能够使用相同口径的不同容量的弹匣。\n \n该数值越高越好。", - L"\n \n当安装于远程武器上时,该物品修正该武器在\n点射时发射的子弹数。\n \n如果该武器不能点射而此修正值为正,该物品\n会使武器能够点射。\n \n相反,如果该武器原本能够点射,而此修正值\n为负,该物品可能使武器失去点射能力。\n \n该数值一般越高越好。当然连发时也需要注意\n节省弹药。", - L"\n \n当安装于远程武器上时,该物品能够隐藏该武\n器的枪焰。.\n \n当射手在隐蔽的地方开枪,将不会被敌人发现\n,这在夜战中十分重要。", - L"\n \n当安装于武器上时,该物品修正使用该武器时\n发出的噪音能被敌人和佣兵发觉的距离。\n \n如果该修正值将武器的噪音数值削减至0,那\n么该武器就被完全消音了。\n \n该数值越低越好。", - L"\n \n该物品修正把它作为附件的物品的尺寸大小。\n \n物品大小在新携行系统中很重要,因为口袋只\n能装下特定大小和形状的物品。\n \n增加尺寸会使物品太大而不能放入某些口袋。\n \n反之,减少尺寸意味着该物品可以适合于更多\n的口袋,并且一个口袋可以装得更多。\n \n一般来说,该数值越低越好。", - L"\n \n当安装于武器上时,该物品修正该武器的可靠\n性数值。\n \n如果该修正值为正,该武器在使用过程中的磨\n损会更慢,反之磨损会更快。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n丛林环境中的伪装值。\n \n该伪装需靠近树木或较高的草丛才能发挥最大功效。\n \n该伪装数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n城市环境中的伪装值。\n \n该伪装需靠近沥青或混凝土材质才能发挥最大功效。\n \n该伪装数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n沙漠环境中的伪装值。\n \n该伪装需靠近沙地、沙砾地或沙漠植被才能发挥最大功\n效。\n \n该伪装数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n雪地环境中的伪装值。\n \n该伪装需靠近雪地才能发挥最大功效。\n \n该伪装数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,修正使用者的潜\n行能力,使其在潜行时更难被听到。\n \n注意该物品并不修正潜行者的可视特征,而只是\n改变潜行中动静的大小。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的听觉感知范围。\n \n该值为正时可以从更远的距离听到噪音。\n \n与此同时,该值为负时会削减使用者的听力。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一修正值适用于所有情况。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一夜视修正只在光线明显不足时有效。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一白天视觉修正只在光照度为平均值或更高时有效。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一高光视觉修正只在光照度过高时有效,例如\n直视闪光弹照亮的格子或\n在正午时分。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一洞穴视觉修正只在昏暗且位于地下时有效。\n \n该数值越高越好。", - L"\n \n当该物品戴在身上或附在穿戴品上时,会改变视\n野范围,视野范围减少会导致可视角度变窄。\n \n该数值越低越好。", - L"\n \n这是射手在点射或者连发时,制退后坐力的能力。\n \n该数值越高越好。", - L"\n \n这是射手在点射或者连发时,频繁评估\n制退力大小以应对后坐力的能力。\n \n较高的频率使连发的总体精度更高,此外,由于射手能\n正确制退后坐力,其长点射也更\n加准确。\n \n该数值越低越好。", - L"\n \n当安装于远程武器上时,该物品修正武器的命\n中率。\n \n命中率的提高使该武器在精瞄时更容易命中\n目标。\n \n该数值越高越好。", - L"\n \n当安装于远程武器上时,该物品修正武器的精\n瞄加成。\n \n精瞄加成的提高使该武器在精瞄时更容易命\n中远距离的目标。\n \n该数值越高越好。", - L"\n \n单发射击所造成的温度。\n所使用的子弹类型对本值有影响。", - L"\n \n每回合自动冷却所降低的温度值。", - L"\n \n当武器温度超过卡壳阈值时,卡壳\n将更容易发生。", - L"\n \n当武器温度超过损坏阈值时,武器\n将更容易损坏。", - L"\n \n武器的单发射击温度增加了(百分比)。\n \n该数值越低越好。", - L"\n \n武器的冷却系数数增加了(百分比)。\n \n该数值越高越好。", - L"\n \n武器的卡壳阈值增加了(百分比)。\n \n该数值越高越好。", - L"\n \n武器的损坏阈值增加了(百分比)。\n \n该数值越高越好。", - L"\n \n总伤害中毒性伤害所占的百分比。\n\n部分取决于敌人的装备是否有毒性抵抗或毒性吸收属性。", - L"\n \n单发射击所造成的污垢。\n所使用的子弹类型和附件种类对本值有影响。\n \n该数值越低越好。", - L"\n \n吃掉该物品会累加这些中毒值。\n \n该数值越低越好。", // L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", - L"\n \n食物热量值单位千卡路里。\n \n该数值越高越好。", // L"\n \nAmount of energy in kcal.\n \nHigher is better.", - L"\n \n还剩多少升水。\n \n该数值越高越好。", // L"\n \nAmount of water in liter.\n \nHigher is better.", - 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"", - 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 \n如果枪手用双手使用这把枪,可\n以腰间连续连射。", //L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", - L"\n \n切换射击模式,还可以\n同时切换发射多少发子弹。", //L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \n由于所装的附件,弹药或其内置特性,这件武\n器的精度得到了修正。\n \n提高精度能够使该武器在精瞄时更容易命中远\n距离的目标。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n这件武器按照所列数值修正了射手\n的精度。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n这件武器按照所列百分比修正了射手打出去的每颗\n子弹的精度。\n \n该数值越高越好。", - L"\n \n这件武器按照所列数值修正了每次精瞄所增加的精\n度。\n \n数值范围:-100~+100,该数值越高越好。", - L"\n \n根据射手本身的射击精度,这件武器\n按照所列百分比修正每次精瞄所增加的\n精度。\n \n该数值越高越好。", - L"\n \n由于其所装的附件,弹药或由于其内置特性,这件\n武器的精瞄等级得到了修正。\n \n如果精瞄等级减少了,则这件武器可以在不损\n失精度的情况下快速瞄准。\n \n反之,若精瞄等级增加,则这件武器瞄准的\n更慢,却不会额外增加精度。\n \n该数值越低越好。", - L"\n \n这件武器按照一定百分比\n修正射手能够达到的最大精度。\n(依据射手本来的精度)\n \n该数值越高越好。", - L"\n \n由于所装的附件或其固有特性,武器操\n控难度得到了修正。\n \n易于操控的武器不论是否进行精瞄都更加\n准确。\n \n该修正基于武器的原始操控难度,步枪\n和重武器高而手枪和轻武器低。\n \n该数值越低越好。", - L"\n \n由于所装的附件或其固有特性,这件武\n器超射距命中的能力得到了修正。\n \n较高的修正值可以增加该武器的最大射程至少\n几个格。\n \n该数值越高越好。", - L"\n \n由于所装的附件或其固有特性,这件武\n器命中远距移动目标的能力得到了修正。\n \n高修正值有助于在较远的距离上增加命中快速移动目\n标的几率。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的伤害值得到了修正。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的近战伤害值得到了修正。\n \n该修正值仅限于近战武器,无论是利器还是钝\n器。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的最大射程得到了修正。\n \n最大射程是指子弹明显坠落前所飞行的距离。\n \n该数值越高越好。", - L"\n \n这件武器装备了光学瞄准镜,因而其远距离射击更\n容易命中。\n \n注意在目标比最佳瞄准距离近时,高倍率对于\n瞄准是不利的。\n \n该数值越高越好。", - L"\n \n这件武器装备了瞄准指示设备(可能是激光),它\n可以在目标身上投影出一个点,使其更容易\n被命中。\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该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器修正了射手在点射或者连发时,制退后坐力\n的能力。\n \n高修正数值能帮助射手控制后坐力较强的武器\n,即使射手自身力量较低。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器修正了射手运用反作用力制退后坐力的精确\n度。\n \n如果武器缺少点射和连发功能,则此修正无效。\n \n高修正值能帮助射手维持枪口始终朝向目标,哪怕\n目标较远,也能提升精度。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器修正了射手频繁估量制退力大小的能力。\n \n如果点射和连发功能都没有,则此修正无效。\n \n高修正值能够提高子弹的总体精度,在射手能\n正确制退后坐力的前提下,远距离的连发也更\n能加准确。\n \n该数值越高越好。", - L"\n \n持有这件武器将修正佣兵每回合的初\n始AP量。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的举枪AP得到了修正。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的单发AP得到了修正。\n \n请注意对于可以点射或连发的武器来说,点射和\n连发AP也会被修正。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的点射AP得到了修正。\n \n如果武器没有点射功能,此修正自然无效。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的连发AP得到了修正。\n \n如果武器没有连发功能,此修正自然无效。\n \n注意,增加连发子弹时的AP消耗并不会改变,只\n影响连发时AP的初始消耗。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的上弹AP得到了修正。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,此武器\n的弹匣容量得到了修正。\n \n现在这件武器可以接受相同口径的更大(或更小)容量的\n弹匣。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器在点射时发射的子弹数得到了修正。\n \n如果此武器本不能点射而此修正值为正,将赋予武器\n点射能力。\n \n反之,如果此武器原本能够点射,而此修正值\n为负,则将使其失去点射能力。\n \n该数值一般越高越好。当然连发时也需要注意\n节省弹药。", - L"\n \n由于所装的附件,弹药或其固有特性,此武器\n发射时没有枪焰。\n \n当射手在隐蔽的地方开枪,将不会被敌人发现,这在夜战中十分重要。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器发出的噪音得到了修正。因而敌人和佣兵能\n发觉枪响的距离也就修正了。\n \n如果该修正值将武器的噪音数值削减至0,那\n么该武器就被完全消音了。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的尺寸大小得到了修正。\n \n物品大小在新携行系统中很重要,因为口袋只\n能装下特定大小和形状的物品。\n \n增加尺寸会使物品太大而不能放入某些口袋。\n \n反之,减少尺寸意味着该物品可以被放入更多\n的口袋中,并且一个口袋可以装更多。\n \n该数值一般越低越好。", - L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的可靠性得到了修正。\n \n如果该修正值为正,该武器在使用过程中的磨\n损会更慢,反之磨损会更快。\n \n该数值越高越好。", - L"\n \n当手持这件武器时,使用者\n在丛林环境中的伪装值改变了。\n \n该伪装需靠近树木或草丛才能发挥最大功效。\n \n该伪装数值越高越好。", - L"\n \n当手持这件武器时,使用者\n在城市环境中的伪装值改变了。\n \n该伪装需靠近沥青或水泥才能发挥最大功效。\n \n该伪装数值越高越好。", - L"\n \n当手持这件武器时,使用者\n在沙漠环境中的伪装值改变了。\n \n该伪装需靠近沙砾或沙漠植被才能发挥最大功\n效。\n \n该伪装数值越高越好。", - L"\n \n当手持这件武器时,使用者\n在雪地环境中的伪装值改变了。\n \n该伪装需靠近雪地才能发挥最大功效。\n \n该伪装数值越高越好。", - L"\n \n当手持这件武器时,将修正士兵的潜行能力,使潜行\n者更难或更容易被听到。\n \n注意该物品并不修正潜行者的可视特征,而\n只是改变潜行中动静的大小。\n \n该数值越高越好。", - L"\n \n当手持这件武器时,将按照所列\n百分比修正使用者的听觉感知范围。\n \n该值为正时可以从更远的距离听到噪音。\n \n若该值为负,则会削减使用者的听力。\n \n该数值越高越好。", - L"\n \n当完成该武器的举枪动作时,由于\n附件或武器的本身特点,使用者的\n视觉范围将依照所列比例得到修正\n \n这一一般修正适用于所有情形。\n \n该数值越高越好。", - L"\n \n当完成该武器的举枪动作时,由于\n附件或武器的本身特点,使用者的\n视觉范围将依照所列比例得到修正\n \n这一夜视修正只在光线明显不足时有效。\n \n该数值越高越好。", - L"\n \n当完成该武器的举枪动作时,由于\n附件或武器的本身特点,使用者的\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该数值越高越好。", - L"\n \n当完成该武器的举枪动作时,将\n改变使用者的视野范围,视野\n范围减少会导致可视角度变窄。\n \n该数值越高越好。", - L"\n \n这是射手在点射和连发时,制退后坐力的能力。\n \n该数值越高越好。", - L"\n \n这是射手频繁估量制退力大小以应对后坐力的能力。\n \n如果武器缺乏点射和连发功能,则此能力无\n效。\n \n低修正值能提高连发的总体精度,此外,由于射手能\n正确制退后坐力,其长点射也更\n加准确。\n \n该数值越低越好。", - L"\n \n由于所装的附件,弹药或其内置特性,这件武\n器的命中率得到了修正。\n \n命中率的提高使该武器在精瞄时\n更容易命中目标。\n \n该数值越高越好。", - L"\n \n由于所装的附件,弹药或其内置特性,这件武\n器的精瞄加成得到了修正。\n \n精瞄加成的提高能够使该武器在精瞄时更容易命\n中远距离的目标。\n \n该数值越高越好。", - L"\n \n单发射击所造成的温度。\n所使用的子弹类型对本值有影响。", - L"\n \n每回合自动冷却所降低的温度值。", - L"\n \n当武器温度超过卡壳阈值时,卡壳\n将更容易发生。", - L"\n \n当武器温度超过损坏阈值时,武器\n将更容易损坏。", - L"\n \n这个武器的后座力大小因为所使用的弹药,附\n件,或内部构造而获得该比例大小的修正。如\n果没有点射或自动模式,这个值无效。\n后座力越小,枪口在瞄准目标扫射时越稳定。\n该值越低越好。",//L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"单发", - L"AP", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"已完成 所有弹药的分类并装箱 在区域%c%d。", - L"已完成 所有物品上的附件移除 在区域%c%d。", - L"已完成 所有武器里的子弹退出 在区域%c%d。", - L"已完成 所有物品的合并和堆叠 在区域%c%d。", - // Bob: new strings for emptying LBE items - L"已清空分区%c%d携行具里面的物品。", //L"Finished emptying LBE items in sector %c%d.", - L"从携行具%s清空了%i个物品。", //L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"%s内没有可清空的物品!", //L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s现在已经清空了。", //L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"无法清空%s!", //L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s内的物品找不到!", //L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"全部显示", - L"枪械", - L"弹药", - L"炸药", - L"格斗武器", - L"护甲", - L"携行器", - L"工具", - L"杂物", - L"全部隐藏", -}; - -// MercCompare (MeLoDy) - -STR16 gzMercCompare[] = -{ - L"???", - L"基本态度",//L"Base opinion:", - - L"不喜欢 %s %s",//L"Dislikes %s %s", - L"喜欢 %s %s",//L"Likes %s %s", - - L"强烈讨厌 %s",//L"Strongly hates %s", - L"讨厌 %s",// L"Hates %s", // 5 - - L"强烈的种族主义 %s",// L"Deep racism against %s", - L"种族主义 %s",//L"Racism against %s", - - L"高度在乎外表",//L"Cares deeply about looks", - L"在乎外表",//L"Cares about looks", - - L"高度性别歧视",//L"Very sexist", // 10 - L"性别歧视",//L"Sexist", - - L"不喜欢其他背景",//L"Dislikes other background", - L"不喜欢其他背景",//L"Dislikes other backgrounds", - - L"过去受过委屈",// L"Past grievances", - L"____", // 15 - L"/", - L"* 态度总是在 [%d;%d]",//L"* Opinion is always in [%d; %d]", -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = -{ - L"当前温度为: ", - L"很低", - L"低", - L"中等", - L"高", - L"很高", - L"危险", - L"很危险", - L"致命", - L"未知", - L"." -}; - -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"这食物 ",// Food is - L"非常新鲜啊",// fresh - L"看着还行吧",// good - L"挺一般的哎",// ok - L"有点难闻了",// stale - L"都变味了啊",// shabby - L"快要腐烂了",// rotting - L"!", //L".", -}; - -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"列兵 ", //L"Pvt. ", //ExpLevel 1 - L"下士 ", //L"Pfc. ", //ExpLevel 2 - L"中士 ", //L"Cpl. " //ExpLevel 3 - L"上士 ", //L"Sgt. ", //ExpLevel 4 - L"少尉 ", //L"Lt. ", //ExpLevel 5 - L"中尉 ", //L"Cpt. ", //ExpLevel 6 - L"上尉 ", //L"Maj. ", //ExpLevel 7 - L"少校 ", //L"Lt.Col. ", //ExpLevel 8 - L"上校 ", //L"Col. ", //ExpLevel 9 - L"将军 ", //L"Gen. ", //ExpLevel 10 -}; - - -STR16 gzNewLaptopMessages[]= -{ - L"敬请垂询我们的最新特惠信息!", //L"Ask about our special offer!", - L"暂时没货", //L"Temporarily Unavailable", - L"这份预览版资料片仅提供最初6个区域的地图。最终版将提供完整支持,请阅读帮助文档获取更多信息。", //L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"目标的距离: %d格, 亮度: %d/%d", - L"将发报机装到笔记本电脑上。", - L"你无法支付或雇佣%s的费用。", - L"在限定时间内,以上的费用包括了整个行动和下列装备的花费。", - L"现在就雇请%s吧。您可以享受我们提供的空前的“一次付费,全部服务”的优惠价格。在这个难以置信的出价里,佣兵的随身装备是免费的哦。", - L"费用", - L"在本分区发现有人……", - //L"枪的射程: %d格,命中率: %d%", - L"显示覆盖物", - L"视距", - L"新雇请的佣兵无法到达那里。", - L"由于你的笔记本电脑没有发报机,你无法雇请新的队员。也许你得读取存档或者重新开始游戏!", - L"%s听到了Jerry的身体下面传来金属的破碎的声音。听起来令人不安,似乎你的笔记本电脑的天线被压断了。", - L"看完副指挥官Morris留下的备忘录后,%s觉得有机会了。备忘录里有向Arulco各个城镇发射导弹的基地的坐标。它还给出了这个罪恶计划的发源地的坐标 —— 导弹工厂。", - L"看到了控制面板后,%s发现它正在倒计时,因此导弹会把这个工厂炸毁。%s得找出个脱逃的路线。使用电梯看起来是最快的办法...", - L"现在您在铁人模式进行游戏,周围有敌人的时候不能存档。", - L"(不能在战斗时存盘)", - L"当前的战役名称超过了30个字符。", - L"无法找到当前的战役。", // @@@ new text - L"战役: 默认 ( %S )", // @@@ new text - L"战役: %S", // @@@ new text - L"你选择了%S战役。该战役是原版UB战役的玩家自定义游戏版本。你确认你要在%S战役下进行游戏吗?", - L"如果你要使用编辑器的话,请选择一个战役,不要用默认战役。", - // anv: extra iron man modes - L"这是假铁人模式在这模式下你不能在回合制模式下存档。", //L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", - L"这是真铁人模式在这模式下你只能在每天的%02d:00下存档。", //L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", -}; - -// The_bob : pocket popup text defs -STR16 gszPocketPopupText[]= -{ - L"榴弹发射器", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"火箭发射器", // POCKET_POPUP_ROCKET_LAUNCHERS - L"格斗&投掷武器", // POCKET_POPUP_MEELE_AND_THROWN - L"- 没有合适的弹药 -", //POCKET_POPUP_NO_AMMO - L"- 区域存货没有武器 -", //POCKET_POPUP_NO_GUNS - L"更多...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features -STR16 szCovertTextStr[]= -{ - L"%s有迷彩油(血)的痕迹!", //L"%s has camo!", - L"%s有不合身份的背包!", //L"%s has a backpack!", - L"%s被发现携带尸体!", //L"%s is seen carrying a corpse!", - L"%s的%s很可疑!", // L"%s's %s is suspicious!", - L"%s的%s属于军用装备!", // L"%s's %s is considered military hardware!", - L"%s携带了太多的枪支!", //L"%s carries too many guns!", - L"%s的%s对于%s士兵来说太先进了!", //L"%s's %s is too advanced for an %s soldier!", - L"%s的%s有太多附件!", // L"%s's %s has too many attachments!", - L"%s有可疑的举动!", //L"%s was seen performing suspicious activities!", - L"%s看起来不像平民!", //L"%s does not look like a civilian!", - L"%s受伤流血不止被发现了!", //L"%s bleeding was discovered!", - L"%s醉醺醺的完全不像个士兵!", //L"%s is drunk and doesn't behave like a soldier!", - L"%s的伪装在近距离观察下暴露了!", //L"On closer inspection, %s's disguise does not hold!", - L"%s不应该出现在这里!", //L"%s isn't supposed to be here!", - L"%s不应该在这个时候出现在这里!", //L"%s isn't supposed to be here at this time!", - L"%s被发现在尸体旁边行踪诡秘!", //L"%s was seen near a fresh corpse!", - L"%s的装备暴露了伪装!", //L"%s equipment raises a few eyebrows!", - L"%s被发现正在攻击%s!", //L"%s is seen targetting %s!", - L"%s识破了%s的伪装!", //L"%s has seen through %s's disguise!", - L"无法找到对应的衣服信息在Items.xml中!", //L"No clothes item found in Items.xml!", - L"这在传统特性(旧)系统下无法工作!", //L"This does not work with the old trait system!", - L"行动点数(AP)不足!", //L"Not enough Aps!", - L"色板无效!", //L"Bad palette found!", - L"你得有伪装技能才能做这个!", //L"You need the covert skill to do this!", - L"未发现制服!", //L"No uniform found!", - L"%s已伪装成平民。", //L"%s is now disguised as a civilian.", - L"%s已伪装成士兵。", //L"%s is now disguised as a soldier.", - L"%s穿着件破破烂烂的制服!(按 Ctrl + . 去除伪装)", // L"%s wears a disorderly uniform!", - L"事后看来,穿着伪装去劝降不是什么好主意…", // L"In retrospect, asking for surrender in disguise wasn't the best idea...", - L"%s被发现了!", // L"%s was uncovered!", - L"%s的伪装看起来还可以…", // L"%s's disguise seems to be ok...", - L"%s的伪装要被识破了。", // L"%s's disguise will not hold.", - L"%s在偷窃的时候被发现了!", // L"%s was caught stealing!", - L"%s在试图调整%s的装备物品。", //L"%s tried to manipulate %s's inventory.", - L"敌军精英士兵不认识%s!", //L"An elite soldier did not recognize %s!", - L"敌军所知的%s不是军队里的!", //L"A officer knew %s was unfamiliar!", -}; - -STR16 szCorpseTextStr[]= -{ - L"无法找到对应的头颅信息在Items.xml中!", //L"No head item found in Items.xml!", - L"这尸体无法被斩首!", //L"Corpse cannot be decapitated!", - L"无法找到对应的肉类信息在Items.xml中!", //L"No meat item found in Items.xml!", - L"这不可能!你这个恶心、变态的家伙!", //L"Not possible, you sick, twisted individual!", - L"这尸体已无衣可脱!", //L"No clothes to take!", - L"%s无法脱掉这尸体的衣服!", //L"%s cannot take clothes off of this corpse!", - L"这尸体无法被带走!", //L"This corpse cannot be taken!", - L"没有第三只手携带尸体了!", //L"No free hand to carry corpse!", - L"无法找到对应的尸体信息在Items.xml中!", //L"No corpse item found in Items.xml!", - L"无效的尸体 ID!", //L"Invalid corpse ID!", -}; - -STR16 szFoodTextStr[]= -{ - L"%s 不想吃 %s",//L"%s does not want to eat %s", - L"%s 不想喝 %s",//L"%s does not want to drink %s", - L"%s 吃了 %s",//L"%s ate %s", - L"%s 喝了 %s",//L"%s drank %s", - L"%s的力量受损,因为吃得太饱,撑得四肢无力!",//L"%s's strength was damaged due to being overfed!", - L"%s的力量受损,因为没有吃的,饿得头晕眼花!",//L"%s's strength was damaged due to lack of nutrition!", - L"%s的生命受损,因为吃得太饱,撑得肠胃欲裂!",//L"%s's health was damaged due to being overfed!", - L"%s的生命受损,因为没有吃的,饿得精神恍惚!",//L"%s's health was damaged due to lack of nutrition!", - L"%s的力量受损,因为喝太多水,他水中毒了!",//L"%s's strength was damaged due to excessive drinking!", - L"%s的力量受损,因为没有水喝,渴疯了!",//L"%s's strength was damaged due to lack of water!", - L"%s的生命受损,因为喝太多水,他水中毒了!",//L"%s's health was damaged due to excessive drinking!", - L"%s的生命受损,因为没有水喝,渴疯了!",//L"%s's health was damaged due to lack of water!", - L"区域供水不可行,食物和生存系统已被关闭!",//L"Sectorwide canteen filling not possible, Food System is off!", -}; - -STR16 szPrisonerTextStr[]= -{ - L"%d名军官,%d名精英士兵,%d名普通士兵,%d名行政人员,%d名上将和%d名平民都被审问了。", //L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", - L"得到了$%d赎金。", //L"Gained $%d as ransom money.", - L"%d名俘虏已供出同伙位置。", //L"%d prisoners revealed enemy positions.", - L"%d名军官,%d名精英士兵,%d名普通士兵,%d名行政人员加入了我方。", //L"%d officers, %d elites, %d regulars and %d admins joined our cause.", - L"俘虏掀起大规模暴动!在%s监狱!", //L"Prisoners start a massive riot in %s!", - L"%d名俘虏被押送到%s监狱!", //L"%d prisoners were sent to %s!", - L"俘虏已被释放!", //L"Prisoners have been released!", - L"军队已占领%s监狱,俘虏已被释放!", //L"The army now occupies the prison in %s, the prisoners were freed!", - L"敌人宁死不降!", //L"The enemy refuses to surrender!", - L"敌人不肯拿你当囚犯 - 他们宁愿你死!", //L"The enemy refuses to take you as prisoners - they prefer you dead!", - L"此功能在INI设置里未开启。", // L"This behaviour is set OFF in your ini settings.", - L"%s 释放了 %s!", //L"%s has freed %s!", - L"一个高阶军官%s被发现!", //L"A high-ranking army officer in %s has been revealed!", - L"敌方领袖拒绝考虑投降!", //L"The enemy leader refuses to even consider surrender!", - L"%d名囚犯自愿加入我军。", //L"%d prisoners volunteered to join our forces.", - L"你的佣兵成功逃脱了敌人的追捕。", //L"Some of your mercs managed to escape the enemy capture!", - L"没有逃跑与投降,只有死战到底!", //L"No possible escape is seen, it's a fight to the death!", -}; - -STR16 szMTATextStr[]= -{ - L"空无一物", - L"建造掩体", //L"building a fortification", - L"拆除掩体", //L"removing a fortification", - L"开垦",//L"hacking", - L"%s必须停止%s。", //L"%s had to stop %s.", - L"所选的路障无法再该分区建造", -}; - -STR16 szInventoryArmTextStr[]= -{ - L"炸毁 (%d AP)", //L"Blow up (%d AP)", - L"炸毁", //L"Blow up", - L"装备 (%d AP)", //L"Arm (%d AP)", - L"装备", //L"Arm", - L"解除 (%d AP)", //L"Disarm (%d AP)", - L"解除", //L"Disarm", -}; - -STR16 szBackgroundText_Flags[]= -{ - L" 会消耗掉背包中的药品 \n", //L" might consume drugs in inventory\n", - L" 蔑视其他背景的角色 \n", //L" disregard for other backgrounds\n", - L" +1 角色等级在地下分区时 \n", //L" +1 level in underground sectors\n", - L" 有时候会偷窃平民的钱 \n", //L" steals money from the locals sometimes\n", - - L" +1 埋设炸弹等级 \n", //L" +1 traplevel to planted bombs\n", - L" 会导致附近的佣兵腐败 \n", //L" spreads corruption to nearby mercs\n", - L" female only", //L" female only", won't show up, text exists for compatibility reasons - L" male only", //L" male only", won't show up, text exists for compatibility reasons - - L"如果我们死了所有城镇都会受到巨大的忠诚惩罚\n", //L" huge loyality penalty in all towns if we die\n", - - L" 拒绝伤害动物\n", //L" refuses to attack animals\n", - L" 拒绝伤害在同一小队的成员\n", //L" refuses to attack members of the same group\n", -}; - -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% 行动点在极地地区 \n", //L" %s%d%% APs in polar sectors\n", - L" %s%d%% 行动点在沙漠地区 \n", //L" %s%d%% APs in desert sectors\n", - L" %s%d%% 行动点在沼泽地区 \n", //L" %s%d%% APs in swamp sectors\n", - L" %s%d%% 行动点在城镇地区 \n", //L" %s%d%% APs in urban sectors\n", - L" %s%d%% 行动点在森林地区 \n", //L" %s%d%% APs in forest sectors\n", - L" %s%d%% 行动点在平原地区 \n", //L" %s%d%% APs in plain sectors\n", - L" %s%d%% 行动点在河流地区 \n", // L" %s%d%% APs in river sectors\n", - L" %s%d%% 行动点在热带地区 \n", //L" %s%d%% APs in tropical sectors\n", - L" %s%d%% 行动点在海岸地区 \n", //L" %s%d%% APs in coastal sectors\n", - L" %s%d%% 行动点在山地地区 \n", //L" %s%d%% APs in mountainous sectors\n", - - L" %s%d%% 敏捷值 \n", //L" %s%d%% agility stat\n", - L" %s%d%% 灵巧值 \n", //L" %s%d%% dexterity stat\n", - L" %s%d%% 力量值 \n", //L" %s%d%% strength stat\n", - L" %s%d%% 领导值 \n", //L" %s%d%% leadership stat\n", - L" %s%d%% 枪法值 \n", //L" %s%d%% marksmanship stat\n", - L" %s%d%% 机械值 \n", //L" %s%d%% mechanical stat\n", - L" %s%d%% 爆破值 \n", //L" %s%d%% explosives stat\n", - L" %s%d%% 医疗值 \n", //L" %s%d%% medical stat\n", - L" %s%d%% 智慧值 \n", //L" %s%d%% wisdom stat\n", - - L" %s%d%% 行动点在房顶时 \n", //L" %s%d%% APs on rooftops\n", - L" %s%d%% 行动点在游泳时 \n", //L" %s%d%% APs needed to swim\n", - L" %s%d%% 行动点在筑垒时 \n", //L" %s%d%% APs needed for fortification actions\n", - L" %s%d%% 行动点在发射迫击炮时 \n", //L" %s%d%% APs needed for mortars\n", - L" %s%d%% 行动点在操作背包时 \n", //L" %s%d%% APs needed to access inventory\n", - L" 空降时观望其它方向\n %s%d%% 行动点在空降后 \n", //L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", - L" %s%d%% 行动点在进入战区的第一回合 \n", //L" %s%d%% APs on first turn when assaulting a sector\n", - - L" %s%d%% 步行速度 \n", //L" %s%d%% travel speed on foot\n", - L" %s%d%% 开车速度 \n", //L" %s%d%% travel speed on land vehicles\n", - L" %s%d%% 坐飞机速度 \n", //L" %s%d%% travel speed on air vehicles\n", - L" %s%d%% 坐船速度 \n", //L" %s%d%% travel speed on water vehicles\n", - - L" %s%d%% 畏惧抵制 \n", //L" %s%d%% fear resistance\n", - L" %s%d%% 压制忍耐 \n", //L" %s%d%% suppression resistance\n", - L" %s%d%% 近战抗性 \n", //L" %s%d%% physical resistance\n", - L" %s%d%% 酒精耐性 \n", //L" %s%d%% alcohol resistance\n", - L" %s%d%% 疾病抗性 \n", //L" %s%d%% disease resistance\n", - - L" %s%d%% 审问效率 \n", //L" %s%d%% interrogation effectiveness\n", - L" %s%d%% 监狱守卫强度 \n", //L" %s%d%% prison guard strength\n", - L" %s%d%% 买卖弹药武器优惠 \n", //L" %s%d%% better prices when trading guns and ammo\n", - L" %s%d%% 买卖护甲,携行具,刀具,工具箱等优惠 \n", //L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", - L" %s%d%% 队伍劝降能力 \n", //L" %s%d%% team capitulation strength if we lead negotiations\n", - L" %s%d%% 跑步速度 \n", //L" %s%d%% faster running\n", - L" %s%d%% 包扎速度 \n", //L" %s%d%% bandaging speed\n", - L" %s%d%% 精力恢复 \n", //L" %s%d%% breath regeneration\n", - L" %s%d%% 负重能力 \n", //L" %s%d%% strength to carry items\n", - L" %s%d%% 食物需求 \n", //L" %s%d%% food consumption\n", - L" %s%d%% 饮水需求 \n", //L" %s%d%% water consumption\n", - L" %s%d 睡眠需求 \n", //L" %s%d need for sleep\n", - L" %s%d%% 近战伤害 \n", //L" %s%d%% melee damage\n", - L" %s%d%% 刺刀准确度(CTH) \n", //L" %s%d%% cth with blades\n", - L" %s%d%% 迷彩效果 \n", //L" %s%d%% camo effectiveness\n", - L" %s%d%% 潜行效果 \n", //L" %s%d%% stealth\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 day\n", - L" %s%d 解除陷阱效率 \n", - L" %s%d%% 防空导弹的命中率 \n", //L" %s%d%% CTH with SAMs\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 threaten approach\n", - L" %s%d%% 招募对话效果 \n", //L" %s%d%% effectiveness to recruit approach\n", - - L" %s%d%% 暴力开门成功率 \n", //L" %s%d%% chance of success with door breaching charges\n", - L" %s%d%% 射击生物准确率(CTH) \n", //L" %s%d%% cth with firearms against creatures\n", - L" %s%d%% 医疗保证金 \n", //L" %s%d%% insurance cost\n", - L" %s%d%% 发现狙击手的成功率 \n", - L" %s%d%% 疾病诊断的效率 \n", //L" %s%d%% effectiveness at diagnosing diseases\n", - L" %s%d%% 对人员治疗疾病的效率 \n", //L" %s%d%% effectiveness at treating population against diseases\n", - L" 能够发现%d格之内的脚印 \n", //L"Can spot tracks up to %d tiles away\n", - L" %s%d%% 被伏击时的初始距离 \n", //L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% 几率回避攻击 \n", //L" %s%d%% chance to evade snake attacks\n", - - L" 对某些其他背景的厌恶 \n", //L" dislikes some other backgrounds\n", - L" 吸烟者", //L"Smoker", - L" 非吸烟者", //L"Nonsmoker", - L" %s%d%% 敌军对蹲伏在掩体后佣兵的命中率 \n", //L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% 建设速度 \n",//L" %s%d%% building speed\n", - L" 黑客技能:%s%d ",//L" hacking skill: %s%d ", - L" %s%d%% 掩埋尸体速度 \n", //L" %s%d%% burial speed\n", - L" %s%d%% 管理效率 \n", //L" %s%d%% administration effectiveness\n", - L" %s%d%% 探索效率\n", //L" %s%d%% exploration effectiveness\n", -}; - -STR16 szBackgroundTitleText[] = -{ - L"I.M.P 佣兵背景", //L"I.M.P. Background", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = -{ - L"I.M.P 佣兵偏见", //L"I.M.P. Prejudices", -}; - -STR16 szPersonalityDisplayText[]= -{ - L"你看上去", //L"You look", - L"而且长相对你而言", //L"and appearance is", - L"重要。", //L"important to you.", - L"你举止", //L"You have", - L"而且", //L"and care", - L"在乎这些。", //L"about that.", - L"你是", //L"You are", - L"并且讨厌", //L"and hate everyone", - L"。", - L"种族主义者,讨厌非 ", //L"racist against non-", - L"人。", //L"people.", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"你长得怎样?", //L"How do you look?", - L"别人的长相对你而言是否重要?", //L"How important are the looks of others to you?", - L"你行为举止如何?", //L"What are your manners?", - L"别人的行为举止对你而言是否重要?", //L"How important are the manners of other people to you?", - L"你是哪个国家的?", //L"What is your nationality?", - L"你讨厌哪个国家?", //L"What nation o you dislike?", - L"你有多讨厌那个国家?", //L"How much do you dislike that nation?", - L"你的种族主义情结如何?", //L"How racist are you?", - L"你是哪个种族?你讨厌所有非本族人。", //L"What is your race? You will be\nracist against all other races.", - L"你的性别歧视程度如何?", //L"How sexist are you against the other gender?", -}; - - -STR16 szRaceText[]= -{ - L"白种", - L"黑种", - L"亚洲", - L"爱斯基摩", - L"拉美裔", -}; - -STR16 szAppearanceText[]= -{ - L"很普通", - L"很丑", - L"是大众脸", - L"很吸引人", - L"像个孩子", -}; - -STR16 szRefinementText[]= -{ - L"正常", //L"average manners", - L"邋遢", //L"manners of a slob", - L"讲究", //L"manners of a snob", -}; - -STR16 szRefinementTextTypes[] = -{ - L"普通的人", //L"normal people", - L"懒虫", //L"slobs", - L"努力的人", //L"snobs", -}; - -STR16 szNationalityText[]= -{ - L"美国人", // 0 - L"阿拉伯人", - L"澳大利亚人", - L"英国人", - L"加拿大人", - L"古巴人", // 5 - L"丹麦人", - L"法国人", - L"俄国人", - L"Tracona人", // (UB takes place in Tracona) - L"瑞士人", // 10 - L"牙买加人", - L"波兰人", - L"中国人", - L"爱尔兰人", - L"南非人", // 15 - L"匈牙利人", - L"苏格兰人", - L"Arulco人", - L"德国人", - L"非洲人", // 20 - L"意大利人", - L"荷兰人", - L"罗马利亚人", - L"Metavira人", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"白俄罗斯人", - L"比利时人", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"巴西人", - L"保加利亚人", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"爱沙尼亚人", - L"Ethiopian", - L"Filipino", // 50 - L"芬兰人", - L"Georgian", - L"希腊人", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"印度人", - L"Indonesian", - L"伊朗人", - L"伊拉克人", // 60 - L"Islandic", - L"以色列人", - L"日本人", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"墨西哥人", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"尼日利亚人", - L"Nigerien", - L"挪威人", - L"Pakistani", // 85 - L"Panamanian", - L"葡萄牙人", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"塞尔维亚人", - L"Slovakian", - L"Slovenian", - L"Somali", - L"西班牙人", // 95 - L"Sudanese", - L"瑞典人", - L"叙利亚人", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"土耳其人", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"委内瑞拉人", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -STR16 szNationalityTextAdjective[] = -{ - L"美国人", // 0 - L"阿拉伯人", - L"澳大利亚人", - L"英国人", - L"加拿大人", - L"古巴人", // 5 - L"丹麦人", - L"法国人", - L"俄国人", - L"traconia人" // UB takes place in Tracona - L"瑞士人", // 10 - L"牙买加人", - L"波兰人", - L"中国人", - L"爱尔兰人", - L"南非人", // 15 - L"匈牙利人", - L"苏格兰人", - L"Arulco人", - L"德国人", - L"非洲人", // 20 - L"意大利人", - L"荷兰人", - L"罗马利亚人", - L"Metavira人", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"白俄罗斯人", - L"比利时人", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"巴西人", - L"保加利亚人", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"爱沙尼亚人", - L"ethiopians", - L"filipinos", // 50 - L"芬兰人", - L"georgians", - L"希腊人", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"印度人", - L"indonesians", - L"伊朗人", - L"伊拉克人", // 60 - L"islandics", - L"以色列人", - L"日本人", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"墨西哥人", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"尼日利亚人", - L"nigeriens", - L"挪威人", - L"巴基斯坦人", // 85 - L"panamanians", - L"葡萄牙人", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"塞尔维亚人", - L"slovakians", - L"slovenians", - L"somali", - L"西班牙人", // 95 - L"sudanese", - L"瑞典人", - L"叙利亚人", - L"thais", - L"togolese", // 100 - L"tunisians", - L"土耳其人", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"委内瑞拉人", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"不讨厌其它国籍的人。", // used in personnel.cpp //L"do not hate any other nationality.", - L"无国籍", // used in IMP generation //L"of no origin", -}; - -STR16 szCareLevelText[]= -{ - L"不", - L"有点", - L"非常", -}; - -STR16 szRacistText[]= -{ - L"非", - L"正常", - L"极端", -}; - -STR16 szSexistText[]= -{ - L"非性别歧视者", - L"有些性别歧视者", - L"极端性别歧视者", - L"尊重异性者", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"电池", //L"Batteries are ", - L"是满的", //L"full", - L"正常", //L"good", - L"剩余一半", //L"at half", - L"电量低", //L"low", - L"耗尽了", //L"depleted", - L"。", -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= -{ - L"佣兵", - L"新手民兵", - L"常规民兵", - L"精英民兵", - - L"市民", - - L"行政人员", - L"军队士兵", - L"精英士兵", - L"坦克", - - L"生物", - L"僵尸", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"%s 新闻议会", - L"%s 情报配送部门", - L"%s 革命运动", - L"时代国际版", - L"国际时代", - L"R.I.S(情报侦察服务)", - - L"%s 媒体资源集", - L"我们是中立情报部门。我们从%s搜集各种新闻报道。我们不会对这些资料进行评估——我们仅仅将它们发表出来供你自己评估。我们从各类资源中发布文章。", - - L"战斗总结", - L"战役报告", - L"最新新闻", - L"关于我们", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s,%s %s %s 于 %s。", - - L"反抗军", - L"女王部队", - - L"进攻了", - L"袭击了", - L"空袭了", - - L"敌人从%s攻入。", - L"%s获得了来自%s的支援。", - L"敌人从%s攻入,%s获得了来自%s的支援。", - L"北方", - L"东方", - L"南方", - L"西方", - L"和", - L"未知地区", - - L"该分区的建筑遭到了破坏。", - L"在战斗中,该地区建筑物被损坏,计有%d位平民遭到杀害,%d位负伤。", //In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded. - L"在战斗中,%s和%s呼叫了支援。", - L"在战斗中,%s呼叫了支援。", - L"目击者报道交战双方都使用了化学武器。", - L"%s使用了化学武器。", - L"在交战大规模升级过程中,双方都部署了坦克。", - L"%s部署了%d辆坦克,%d辆坦克在激烈的交火中被摧毁。", - L"据称双方都部署了狙击手。", - L"未经证实的消息称有%s名狙击手参与了交火。", - L"这一分区战略意义十分重大,它拥有%s军队的大量地对空导弹设备。空中侦察摄影给指挥中心带来严重的伤害。这将导致从此途径%s的航班无法受到保护。", - L"地面情况更加不明朗,看起来反抗军混战达到了新的高度。我们已经确认了反抗军民兵部队同国外佣兵一起组织了主动进攻。", - L"保皇党在当地的地位比之前预期的更加糟糕。报告显示出现了内部分歧,军方人员互相火并。", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"深夜", // 23 - 3 - L"黎明", // 3 - 6 - L"早晨", // 6 - 8 - L"上午", // 8 - 11 - L"正午", // 11 - 14 - L"下午", // 14 - 18 - L"傍晚", // 18 - 21 - L"晚上", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"初始资金", - L"矿场收入", - L"贸易", - L"其它来源", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"弹药", - L"炸药", - L"食物", - L"医疗器械", - L"物品维护", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"在这场实力悬殊的战役中,女王部队毫无抵抗地被完全歼灭了。", - - L"反抗军轻易地击败了女王部队,使其遭到巨大损失。", - L"反抗军毫不费力地沉重打击了女王部队,并且俘虏了一些敌人。", - - L"在这场血战中,反抗军最终战胜了对手。女王部队损失巨大。", - L"反抗军略有损失,最终击败了精英部队。未证实消息称一些士兵可能被俘虏。", - - L"在一场皮洛士式胜利中,反抗军击退了精英部队,但是自己也损失惨重。很难肯定他们在这样的连续攻势下能否坚持得住。", - - L"女王部队占尽天时地利人和。反抗军没有任何机会,如果不撤退,要么被杀死或者被俘虏。", - L"尽管反抗军在人数上占用优势,女王部队还是轻易地击退了他们。", - - L"反抗军显然对装备精良且为数众多的女王部队毫无准备,他们被轻易地击败了。", - L"虽然反抗军在人数上占有优势,但是女王部队装备精良。反抗军显然落败了。", - - L"在激烈的战斗中双方都遭到了巨大损失,不过最终,女王部队以人数上的优势决定了战役的胜利。反抗军被击溃。至于有没有幸存者,我们目前还无法核实。", - L"在激烈的交火中,女王部队的优秀训练起到了关键性作用。反抗军被迫撤退。", - - L"双方都不愿轻易认输。虽然女王部队最终扫除了当地的反抗军威胁,但是巨大的损失使得女王军队本身名存实亡。不过很显然,如果女王军队能够耗得起的话,反抗军很快就会消失得一干二净了。", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"无关的", - L"不重要的", - L"著名的", - L"值得注意的", - L"重大的", - L"有趣的", - L"重要的", - L"相当重要的", - L"十分重要的", - L"极为重要的", - L"意义重大的", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"杀死", - L"受伤", - L"俘虏", - L"射击次数", - - L"获益", - L"消费", - L"损失", - L"参与者", - - L"晋升", - L"总结", - L"细节", - L"上一个", - - L"下一个", - L"事件", - L"天", -}; - -STR16 szCampaignStatsOperationPrefix[] = -{ - L"荣耀之%s", //"Glorious %s" - L"强势之%s", //"Mighty %s" - L"威严之%s", //"Awesome %s" - L"无畏之%s", //"Intimidating %s" - - L"强力之%s", //"Powerful %s" - L"彻地之%s", //"Earth-Shattering %s" - L"诡诈之%s", //"Insidious %s" - L"疾速之%s", //"Swift %s" - - L"狂暴之%s", //"Violent %s" - L"残暴之%s", //"Brutal %s" - L"无情之%", //"Relentless %s" - L"冷酷之%s", //"Merciless %s" - - L"食人之%s", //"Cannibalistic %s" - L"华丽之%s", //"Gorgeous %s", - L"凶猛之%s", //"Rogue %s", - L"可疑之%s", //"Dubious %s", - - L"中性之%s", //"Sexually Ambigious %s" - L"燃烧之%s", //"Burning %s" - L"狂怒之%s", //"Enraged %s" - L"幻想之%s", //"Visonary %s" - - // 20 - L"阴森之%s", //L"Gruesome %s", - L"非人道之%s", //L"International-law-ignoring %s", - L"挑衅之%s", //L"Provoked %s", - L"无尽之%s", //L"Ceaseless %s", - - L"执着之%s", //L"Inflexible %s", - L"不屈之%s", //L"Unyielding %s", - L"无悔之%s", //L"Regretless %s", - L"残酷的%s", //L"Remorseless %s", - - L"易怒之%s", //L"Choleric %s", - L"意外之%s", //L"Unexpected %s", - L"民众之%s", //L"Democratic %s", - L"渴望之%s", //L"Bursting %s", - - L"多党之%s", //L"Bipartisan %s", - L"浴血之%s", //L"Bloodstained %s", - L"红装之%s", //L"Rouge-wearing %s", - L"无辜之%s", //L"Innocent %s", - - L"可恶的%s", //L"Hateful %s", - L"阴险的%s", //L"Underwear-staining %s", - L"杀戮的%s", //L"Civilian-devouring %s", - L"无畏的%s", //L"Unflinching %s", - - // 40 - L"毫不留情的%s", //L"Expect No Mercy From Our %s", - L"疯狂的%s", //L"Very Mad %s", - L"终极的%s", //L"Ultimate %s", - L"愤怒的%s", //L"Furious %s", - - L"避让%s", //L"Its best to Avoid Our %s", - L"敬畏%s", //L"Fear the %s", - L"%s万岁!", //L"All Hail the %s!", - L"保护%s", //L"Protect the %s", - - L"小心%s", //"Beware the %s" - L"碾碎%s", //"Crush the %s" - L"两面三刀的%s", //"Backstabbing %s" - L"狠毒的%s", //"Vicious %s" - - L"虐待狂的%s", //L"Sadistic %s", - L"燃烧的%s", //L"Burning %s", - L"愤怒的%s", //L"Wrathful %s", - L"无敌的%s", //L"Invincible %s", - - L"负罪的%s", //L"Guilt-ridden %s", - L"腐烂的%s", //L"Rotting %s", - L"无垢的%s", //L"Sanitized %s", - L"自我怀疑的%s", //L"Self-doubting %s", - - // 60 - L"远古的%s", //L"Ancient %s", - L"饥饿的%s", //L"Very Hungry %s", - L"乏力的%s", //L"Sleepy %s", - L"消极的%s", //L"Demotivated %s", - - L"严酷的%s", //"Cruel %s" - L"恼人的%s", //"Annoying %s" - L"发怒的%s", //"Huffy %s" - L"双性的%s", //"Bisexual %s" - - L"尖叫的%s", //L"Screaming %s", - L"丑恶的%s", //L"Hideous %s", - L"信仰的%s", //L"Praying %s", - L"阴魂不散的%s", //L"Stalking %s", - - L"冷血的%s", // L"Cold-blooded %s", - L"可怕的%s", // L"Fearsome %s", - L"大惊小怪的%s", // L"Trippin' %s", - L"该死的%s", // L"Damned %s", - - L"食素的%s", // L"Vegetarian %s", - L"古怪的%s", // L"Grotesque %s", - L"落后的%s", // L"Backward %s", - L"优越的%s", // L"Superior %s", - - // 80 - L"低劣的%s", //L"Inferior %s", - L"不好不坏的%s", //L"Okay-ish %s", - L"色欲旺盛的%s", //L"Porn-consuming %s", - L"中毒的%s", //L"Poisoned %s", - - L"自觉的%s", //L"Spontaneous %s", - L"懒惰的%s", //L"Lethargic %s", - L"靠不住的%s", //L"Tickled %s", - L"脑残的%s", //L"The %s is a dupe!", - - L"%s是瘾君子", //L"%s on Steroids", - L"%s大战铁血战士", //L"%s vs. Predator", - L"耍花招的%s", //L"A %s with a twist", - L"自娱自乐的%s", //L"Self-Pleasuring %s", - - L"半人半%s", //L"Man-%s hybrid", - L"愚蠢的%s", //L"Inane %s", // - L"昂贵的%s", //L"Overpriced %s", - L"午夜%s", //L"Midnight %s", - - L"资本家的%s", //L"Capitalist %s", - L"共产党的%s", //L"Communist %s", - L"热烈的%s", //L"Intense %s", - L"坚定的%s", //L"Steadfast %s", - - // 100 - L"嗜睡的%s",//L"Narcoleptic %s", - L"晒白的%s",// L"Bleached %s", - L"咬指甲的%s",//L"Nail-biting %s", - L"猛击%s",//L"Smite the %s", - - L"嗜血的%s",//L"Bloodthirsty %s", - L"肥胖的%s",// L"Obese %s", - L"诡计多端的%s",// L"Scheming %s", - L"驼背的%s",//L"Tree-Humping %s", - - L"便宜的%s",//L"Cheaply made %s", - L"圣洁的%s",//L"Sanctified %s", - L"被诬告的%s",//L"Falsely accused %s", - L"%s被救援",//L"%s to the rescue", - - L"螃蟹人大战%s",//L"Crab-people vs. %s", - L"%s上天了!!!",//L"%s in Space!!!", - L"%s大战哥斯拉",//L"%s vs. Godzilla", - L"野性%s",// L"Untamed %s", - - L"耐用的%s",//L"Durable %s", - L"厚颜无耻的%s",// L"Brazen %s", - L"贪婪的%s",//L"Greedy %s", - L"午夜%s",// L"Midnight %s", - - // 120 - L"困惑的%s",//L"Confused %s", - L"恼怒的%s",//L"Irritated %s", - L"可恶的%s",//L"Loathsome %s", - L"躁狂的%s",//L"Manic %s", - - L"古老的%s",//L"Ancient %s", - L"鬼鬼祟祟的%s",//L"Sneaking %s", - L"%s之末日",//L"%s of Doom", - L"%s之复仇",//L"%s's revenge", - - L"%s上演中",//L"A %s on the run", - L"来不及%s了",//L"A %s out of time", - L"带着%s",//L"One with %s", - L"%s来自地狱",//L"%s from hell", - - L"超级-%s",//L"Super-%s", - L"终极-%s",//L"Ultra-%s", - L"巨型-%s",//L"Mega-%s", - L"超级巨型-%s",// L"Giga-%s", - - L"一些%s",//L"A quantum of %s", - L"%s陛下",//L"Her Majesties' %s", - L"颤抖的%s",//L"Shivering %s", - L"可怕的%s",// L"Fearful %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"龙", //L"Dragon", - L"狮", //L"Mountain Lion", - L"蛇", //L"Copperhead Snake", - L"狗", //L"Jack Russell Terrier", - - L"敌", //L"Arch-Nemesis", - L"怪", //L"Basilisk", - L"锋", //L"Blade", - L"盾", //L"Shield", - - L"锤", //L"Hammer", - L"灵", //L"Spectre", - L"府", //L"Congress", - L"田", //L"Oilfield", - - L"男友", //L"Boyfriend", - L"女友", //L"Girlfriend", - L"丈夫", //L"Husband", - L"后妈", //L"Stepmother", - - L"蜥", //"Sand Lizard" - L"吏", //"Bankers" - L"蟒", //"Anaconda" - L"猫", //"Kitten" - - // 20 - L"国会", //"Congress" - L"议院", //"Senate" - L"牧师", //"Cleric" - L"混蛋", //"Badass" - - L"刺刀", //L"Bayonet", - L"狼獾", //L"Wolverine", - L"战士", //L"Soldier", - L"树蛙", //L"Tree Frog", - - L"黄鼠狼", //L"Weasel", - L"灌木丛", //L"Shrubbery", - L"油坑", //L"Tar pit", - L"日落", //L"Sunset", - - L"台风", //L"Hurricane", - L"山猫", //L"Ocelot", - L"老虎", //L"Tiger", - L"国防", //L"Defense Industry", - - L"雪豹", //L"Snow Leopard", - L"巨魔", //L"Megademon", - L"蜻蜓", //L"Dragonfly", - L"猎犬", //L"Rottweiler", - - // 40 - L"表哥", //L"Cousin", - L"奶奶", //L"Grandma", - L"婴儿", //L"Newborn", - L"异教徒", //L"Cultist", - - L"大清洗", //L"Disinfectant", - L"民主", //L"Democracy", - L"军阀", //L"Warlord", - L"末日杀器", //L"Doomsday Device", - - L"部长", //L"Minister", - L"小人", //L"Beaver", - L"刺客", //L"Assassin", - L"死亡之雨", //L"Rain of Burning Death", - - L"先知", //L"Prophet", - L"入侵者", //L"Interloper", - L"十字军", //L"Crusader", - L"政府", //L"Administration", - - L"超新星", //L"Supernova", - L"解放", //L"Liberty", - L"爆炸", //L"Explosion", - L"鹰隼", //L"Bird of Prey", - - // 60 - L"蝎狮", //L"Manticore", - L"寒霜巨人", //L"Frost Giant", - L"名流", //L"Celebrity", - L"有钱人", //L"Middle Class", - - L"大嗓门", //L"Loudmouth", - L"替罪羊", //L"Scape Goat", - L"军犬", //L"Warhound", - L"复仇", //L"Vengeance", - - L"要塞", //L"Fortress", - L"小丑", //L"Mime", - L"指挥家", //L"Conductor", - L"领头人", //L"Job-Creator", - - L"糊涂蛋", //L"Frenchman", - L"强力胶", //L"Superglue", - L"蝾螈", //L"Newt", - L"无能者", //L"Incompetency", - - L"荒原狼", //L"Steppenwolf", - L"铁砧", //L"Iron Anvil", - L"大领主", //L"Grand Lord", - L"统治者", //L"Supreme Ruler", - - // 80 - L"独裁者", //L"Dictator", - L"离世", //L"Old Man Death", - L"碎纸机", //L"Shredder", - L"吸尘器", //L"Vacuum Cleaner", - - L"仓鼠", //L"Hamster", - L"癞蛤蟆", //L"Hypno-Toad", - L"DJ", //L"Discjockey", - L"送葬者", //L"Undertaker", - - L"蛇发女妖", //L"Gorgon", - L"小孩", //L"Child", - L"黑帮", //L"Mob", - L"猛禽", //L"Raptor", - - L"女神", //L"Goddess", - L"性别歧视", //L"Gender Inequality", - L"二五仔", //L"Mole", - L"口活", //L"Baby Jesus", - - L"武装直升机", //L"Gunship", - L"公民", //L"Citizen", - L"情人", //L"Lover", - L"基金", //L"Mutual Fund", - - // 100 - L"制服",//L"Uniform", - L"军刀",//L"Saber", - L"雪豹",//L"Snow Leopard", - L"黑豹",//L"Panther", - - L"半人马",//L"Centaur", - L"蝎子",//L"Scorpion", - L"毒蛇",//L"Serpent", - L"黑寡妇",// L"Black Widow", - - L"狼蛛",// L"Tarantula", - L"秃鹫",//L"Vulture", - L"异教徒",//L"Heretic", - L"僵尸",//L"Zombie", - - L"劳模",//L"Role-Model", - L"恶鬼",//L"Hellhound", - L"猫鼬",//L"Mongoose", - L"护士",//L"Nurse", - - L"修女",//L"Nun", - L"太空鬼魂",//L"Space Ghost", - L"毒蛇",//L"Viper", - L"黑曼巴",//L"Mamba", - - // 120 - L"罪人",//L"Sinner", - L"圣人",//L"Saint", - L"彗星",//L"Comet", - L"流星",//L"Meteor", - - L"虫罐头",//L"Can of worms", - L"鱼油",//L"Fish oil pills", - L"母乳",//L"Breastmilk", - L"触手",//L"Tentacle", - - L"疯狂",//L"Insanity", - L"发疯",//L"Madness", - L"咳嗽",//L"Cough reflex", - L"结肠",//L"Colon", - - L"国王",//L"King", - L"女皇",//L"Queen", - L"主教",//L"Bishop", - L"农民",//L"Peasant", - - L"高塔",//L"Tower", - L"大厦",//L"Mansion", - L"战马",//L"Warhorse", - L"裁判",//L"Referee", - - // 140 -}; - -STR16 szMercCompareWebSite[] = -{ - // main page - L"佣兵之家", //L"Mercs Love or Dislike You", - L"互联网上最好的团队分析专家", //L"Your #1 teambuilding experts on the web", - - L"关于我们", //L"About us", - L"团队分析", //L"Analyse a team", - L"成对分析", //L"Pairwise comparison", - L"客户意见", //L"Personalities", - L"客户意见", //L"Customer voices", - - L"如果您的业务是为有实时性要求的项目提供创新的解决方案,也许您会经常观察到如下现象:", //L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"您的团队效率低下。", //L"Your team struggles with itself.", - L"您的员工经常内斗。", //L"Your employees waste time working against each other.", - L"您的员工离职率很高。", //L"Your workforce experiences a high fluctuation rate.", - L"您的多数员工都不喜欢这份工作。", //L"You constantly receive low marks on workplace satisfaction ratings.", - L"如果您经常观察到以上一项或多项情况,那么您的员工的工作效率并不高,您的生意也就可能会出现问题。幸好我们有易学易操作的专利系统MeLoDY,立马就能让您的单位工作效率翻番,让您的员工喜上眉梢!", //L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"客户感谢信:", //L"A few citations from our satisfied customers:", - L"我最近一次恋爱是一场灾难。我很自责...但是现在我开窍了。所有男人全都该死!MeLoDY,谢谢你启发了我!", //L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G,小说家-", //L"-Louisa G., Novelist-", - L"我和我兄弟们关系一直不好,最近变得更糟糕了。MeLoDY告诉我一切都是我们不信任父亲的错。谢谢你!我要找机会和父亲好好谈谈这个事情。", //L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C,典狱官-", //L"-Konrad C., Corrective law enforcement-", - L"我一直都独来独往,所以很难和别人组队。您让我见识到了如何组队。MeLoDY真是帮大忙了啊!", //L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W,耍蛇人-", //L"-Grant W., Snake charmer-", - L"干我们这一行的,必须得百分百信任你的所有组员,所以我们来求助砖家 - 求助MeLoDY系统", //L"In my line of work, you need to trust every member of your team 100%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L,社会主义精神病患集团-", //L"-Halle L., SPK-", - L"我是局里唯一一个发声的。由于我们的组员大都自命不凡,所以工作中遇到了很多问题。不过现在我们已经学会了互相尊重,能完美的协作了。", //L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C,美国国家航空航天局-", //L"-Michael C., NASA-", - L"我强力推荐这个网站!", //L"I fully recommend this site!", - L"-Kasper H,H&C物流公司-", //L"-Kasper H., H&C logistic Inc-", - L"我们的培训流程时间很短,所以我们得知道每个员工的个性。使用MeLoDY系统是明智的选择", //L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke,Kerberus安保公司-", //L"-Stan Duke, Kerberus Inc-", - - // analyze - L"选择您的员工", //L"Choose your employee", - L"选择您的小队", //L"Choose your squad", - - // error messages - L"目前您还没有员工在岗。士气低落往往会导致员工较高的脱岗率。", //L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s枪毙了我!", //L"%s shot me!", - L"%s背着我耍阴招", //L"%s is scheming behind my back", - L"%s干扰我的工作", //L"%s interfered in my business", - L"%s和敌人是一伙的", //L"%s is friends with my enemy", - - L"%s抢我的单子", //L"%s got a contract before I did", - L"%s命令我们夹着尾巴逃跑", //L"%s ordered a shameful retreat", - L"%s滥杀无辜", //L"%s massacred the innocent", - L"%s拖我们后腿", //L"%s slows us down", - - L"%s从不分享食物", //L"%s doesn't share food", - L"%s会让任务失败", //L"%s jeopardizes the mission", - L"%s是个瘾君子", //L"%s is a drug addict", - L"%s是个偷东西的贼", //L"%s is thieving scum", - - L"%s是个不称职的指挥官", //L"%s is an incompetent commander", - L"%s不值那么多薪水", //L"%s is overpaid", - L"%s抢走了所有好东西", //L"%s gets all the good stuff", - L"%s拿枪指着我", //L"%s mounted a gun on me", - - L"%s为我疗伤", //L"%s treated my wounds", - L"我和%s喝酒喝得挺高兴", //L"Had a good drink with %s", - L"%s挺有趣", //L"L"%s is fun to get wasted with", - L"%s喝多了会撒酒疯", //L"%s is annoying when drunk", - - L"%s喝多了会变白痴", //L"%s is an idiot when drunk", - L"%s的观点与我们相左", //L"%s opposed our view in an argument", - L"%s的观点在我们这边", //L"%s supported our position", - L"%s同意我们的论断", //L"%s agrees to our reasoning", - - L"%s是个异教徒", //L"%s's beliefs are contrary to ours", - L"%s知道如何安抚别人", //L"%s knows how to calm down people", - L"%s太迟钝", //L"%s is insensitive", - L"%s能做到人尽其才", //L"%s puts people in their places", - - L"%s过于冲动", //L"%s is way too impulsive", - L"%s是个病秧子", //L"%s is disease-ridden", - L"%s治好了我的病", //L"%s treated my diseases", - L"%s在战斗中从不退缩", //L"%s does not hold back in combat", - - L"%s就是个武术疯子", //L"%s enjoys combat a bit too much", - L"%s是个好老师", //L"%s is a good teacher", - L"%s带领我们走向胜利", //L"%s led us to victory", - L"%s救过我的命", //L"%s saved my life", - - L"%s跟我抢人头", //L"%s stole my kill", - L"%s跟我一起扛过枪", //L"%s and me fought well together", - L"%s劝降了敌军", //L"%s made the enemy surrender", - L"%s打伤了平民", //L"%s injured civilians", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"世界卫生组织", //L"World Health Organization", - L"为生活带来健康", //L"Bringing health to life", - - // links to other pages - L"关于世界卫生组织", //L"About WHO", - L"关于Arulco的传染病", //L"Disease in Arulco", - L"关于传染病", //L"About diseases", - - // text on the main page - L"世界卫生组织是联合国系统内卫生问题的指导和协调机构。", //L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"它负责对全球卫生事务提供领导,拟定卫生研究议程,制订规范和标准,制定实事求是的政策方案,向各国提供技术支持,以及监测和评估卫生趋势。", //L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"在二十一世纪,各国要通力协作,重视卫生问题,特别是全民医保和协作防御跨国传染病。", //L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"现在致命的Arulcan瘟疫正在小国Arulco肆虐。", //L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"由于国家卫生系统的混乱状态,只有军队的医护兵团在与致命瘟疫奋战。", //L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"由于Arulco限制联合国机构在当地展开行动,目前我们唯一能做的就是在地图上标出现阶段Arulco各地的疫情。但是由于与Arulco政府打交道十分困难,我们十分遗憾的通告该地图的使用者,必须缴纳每天$%d的地图使用费用。", //L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"您希望获得Arulco现阶段疫情的详细资料吗?一旦获得,这些数据会在战略地图上标出。", //L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", - L"您目前没有访问权限,不能获得世卫组织关于Arulcan瘟疫的数据。", //L"You currently do not have access to WHO data on the arulcan plague.", - L"疫情的详细资料已在您的地图上标出。", //L"You have acquired detailed maps on the status of the disease.", - L"订阅地图更新", //L"Subscribe to map updates", - L"注销地图更新", //L"Unsubscribe map updates", - - // helpful tips page - L"Arulcan瘟疫这种致命的瘟疫一般不会在Arulco这种小国爆发。其典型的爆发过程是,首批感染者在沼泽地区或者热带地区被蚊子叮到后感染,然后首批感染者会在不知不觉中传染其他邻近城市的人。", //L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"如果被感染,症状不会立刻出现,可能要在几天以后才能发现早期症状。", //"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"在战术地图上,使用鼠标移动到你的佣兵肖像上来查看你的佣兵感染已知疾病的状况。", //"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"多数疾病会随着时间流逝越发严重,必须尽早分配一个医生到你的队伍。", //"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"某些疾病可以用特定药物治愈,你可以从大药品店中找到这些药。", //"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"医生可以被指派去检查所有的同行的同伴是否染病,你可以及时在症状爆发之前发现它!", //"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"当医生治疗被感染的病患的时候他会有较高的几率感染疾病,所以此时防护服就显得很有用!", //"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"一把刀砍伤了一个被感染的人以后这把刀就被感染了,可以将该传染源带到其他地方以扩散瘟疫。", //"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus安保公司", - L"经验丰富的安保公司", //"Experience In Security", - - // links to other pages - L"Kerberus安保公司", //"What is Kerberus?", - L"团队合约", //"Team Contracts", - L"个人合约", //"Individual Contracts", - - // text on the main page - L"Kerberus安保公司是一个著名的国际私人军事承包商。成立于1983,我们在全球范围提供安保服务和武装力量培训。", //"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"我公司培训出的出色的员工为全世界超过30个政府提供安保工作,包括若干冲突区的政府。", //"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", - L"我们在全球有多个训练中心,包括印度尼西亚,哥伦比亚,卡塔尔,南非,罗马尼亚,因此我们基本可以在24小时内提供满足我们合同要求的人员。", //"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"在'个人合约'的页面下, 我们将提供有丰富安保经验的资深老兵去履行合同。", //"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"同时您可以选择雇佣一个安保团队。在'团队合约'的页面下,你可以选择你想要雇佣的人员数量和行动目的地点。由于之前发生过令人遗憾的意外,所以我们要求登陆地点必须在您的实际占领区。", //"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"我们的团队可以通过空中部署,当然,在这种情况下机场是必需的。根据目的地国家的具体情况,我们的团队也可以通过港口或边境哨所渗透进入。", //Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", - L"我们要求客户先支付一定的保证金,然后我们佣兵的每日收费会在你的账户中扣取。", //"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"你可以在这选择你想要雇佣的人员类型和数目:", //"You can select the type and number of personnel you want to hire here:", - L"初始部署", //"Initial deployment", - L"常规佣兵", //"Regular personnel", - L"资深佣兵", //"Veteran personnel", - - L"%d名可招雇,每个$%d", //"%d available, %d$ each", - L"雇佣: %d", //"Hire: %d", - L"费用: %d美金", //"Cost: %d$", - - L"选择初始登陆区域:", //"Select the initial operational area:", - L"总费用: %d美金", //"Total Cost: %d$", - L"到达时间: %02d:%02d", - L"签署合同", //"Close Contract", - - L"谢谢!我们的人员会在明天%02d:%02d登陆。", //"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus安保公司的部队已经到达 %s。", //"Kerberus reinforcements have arrived in %s.", - L"下一轮部署:%d名常规佣兵和%d名资深佣兵在%s的%02d:%02d到达,第%d天。", //"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"你并没有实际控制至少一个我们可以部署佣兵的地区!", //"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"操作背包和仓库整理", - - L"眼部切换", //L"NVG", - L"全体装弹", - L"物品集合", - L"", - - L"分类物品", - L"合并物品", - L"分离", - L"整理物品", - - L"子弹装箱", - L"子弹装盒", - L"放下背包", - L"捡起背包", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"显示掩护模式", - - L"关闭", - L"敌人", - L"佣兵", - L"", - - L"角色", //L"Roles", - L"筑防", //L"Fortification", - L"跟踪者",// L"Tracker", - L"瞄准模式",//L"CTH mode", - - L"陷阱", - L"绊线网", - L"检测器", - L"", - - L"A网", - L"B网", - L"C网", - L"D网", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"关闭掩护/陷阱显示模式", - L"显示危险区域", - L"显示佣兵视野", - L"", - - L"显示敌人称号",//L"Display enemy role symbols", - L"显示计划的防御工事",//L"Display planned fortifications", - L"显示敌军路线",//L"Display enemy tracks", - L"", - - L"显示绊线网络", - L"显示绊线网络颜色", - L"显示附近的陷阱", - L"", - - L"显示绊线网络A", - L"显示绊线网络B", - L"显示绊线网络C", - L"显示绊线网络D", -}; - - -STR16 szDynamicDialogueText[40][17] = -{ - // OPINIONEVENT_FRIENDLYFIRE - L"见鬼!$CAUSE$ 攻击我!", //"What the hell! $CAUSE$ attacked me!" - L"", - L"", - L"什么?我?那不可能,我正跟敌人打的起劲呢!", //"What? Me? No way, I'm engaging at the enemy!" - L"唉哟。", //"Oops." - L"", - L"", - L"$CAUSE$ 攻击了 $VICTIM$。你怎么看?", //"$CAUSE$ has attacked $VICTIM$. What do you do?" - L"不,那绝对是敌人开的枪!", //"Nah, that must have been enemy fire!" - L"对,我也看见了!", //"Yeah, I saw it too!" - L"少在这儿装傻!$CAUSE$。你的视野很清晰!你到底是哪边的?", //"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?" - L"我看见了,很明显是敌人开的枪!", //"I saw it, it was clearly enemy fire!" - L"在激战中,这是很有可能发生的。下回一定小心点,$CAUSE$。", //"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$." - L"现在是在打仗!人们随时都会被击中的!还是说说... 怎么开枪打的准一些吧,打敌人!", //"This is war! People get shot all the time! Speaking of... shoot more people, people!" - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"嘿!闭嘴,$CAUSE$! 该死的内奸!", //L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"如果你不是傻瓜,我就是。", //L"I would if you weren't such a wussy!", - L"你听到了吗?该死的。", //L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ 冲 $CAUSE$ 生气,就是因为 $CAUSE_GENDER$ 和你打小报告。你怎么看?", //L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"不不,$CAUSE$,说吧... $VICTIM$ 做了啥?", //L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"嘿,少管闲事,$CAUSE$!", //L"Yeah, mind your own business, $CAUSE$!", - L"这儿又不是女子学校,偷着乐吧,$CAUSE$。", //L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"对,像个爷们儿!", //L"Yeah. Man up!", - L"我不确定那是正确的方法,但是 $CAUSE_GENDER$ 做这种事情应该有原因的...", //L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"又来?把小报告藏在心里吧,我们可没这时间!", //L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ 又在欺负我!", //L"$CAUSE$ is bullying me again!", - L"", - L"", - L"你搞砸了整个任务,我受够了!", //L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"嘿,这对你个人有好处。过后你会感谢我。", //L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ 阻止了 $VICTIM$ 的不端行为,$VICTIM_GENDER$ 就报复。你怎么看?", //L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"别再为那事儿找借口了!", //L"Then stop giving reasons for that!", - L"算了吧,$CAUSE$, 以为你是谁啊,能对我们指手画脚?!", //L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"你不想那样?伙计,谁让你发号施令的?", //L"You won't let that stand? Cute. Who ever made you the boss?", - L"同意。我们片刻不能放松警惕!", //L"Agreed. We can't let our guard down for a single moment!", - L"你俩就不能把这事摆平吗?", //L"Can't you two sort this out?", - L"呶呶呶。你们这些失败了的家伙有谁丢了围嘴儿吗?可怜虫!", //L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"哼。典型的 $CAUSE$,估计 $CAUSE_GENDER$ 想找同伴出去喝酒找错了人!", //L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"我找谁做朋友和你没关系!", //L"My friends are none of your business!", - L"你俩相处的不好吗?$VICTIM$。", //L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ 不喜欢 $CAUSE$ 的朋友。你怎么看?", //L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"$CAUSE_GENDER$ 当然可以和他自己想找的人一起喝酒。", //L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"嘿,你们这群丑鬼!", //L"Yeah, you guys are ugly!", - L"你该换工作了,因为它很糟。", //L"Then you should change your business. 'Cause its bad.", - L"$VICTIM$,感觉如何?", //L"What's that to you, $VICTIM$?", - L"是啊,是啊,那个烂事儿。你确定它是现在最要紧的事儿?", //L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"没人愿意听这些废话...", //L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"是的,当然。我的合同即将到期,不过,先谈谈 $CAUSE$ 吧。", //L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"哦,是吗?我真的很有用,或许这就是为什么你没给我延期的原因。", //L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"我保证你会很快获得延期。你知道网上银行有多奇葩。", //L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ 嫉妒我们提前延期 $CAUSE$ 的合同。你说咋整?", //L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"你不是还领着报酬吗?既然你拿到了钱,管别的干嘛?", //L"You are still getting paid, no? What does it matter as long as you get the money?", - L"你的合同就快到期了,$CAUSE$ ... 真希望你能延期。", //L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"是的。全部的价值都还没发挥出来。", //L"Yeah. All that worth hasn't shown yet though.", - L"哦,戳到痛处了,是吧?$VICTIM$。", //L"Aww, that burns, doesn't it, $VICTIM$?", - L"我们的资金有限。有些人的付出值得先拿到钱,对吧?", //L"We have limited funds. Someone needs to get paid first, right?", - L"每人都会及时得到报酬,除非你们继续吵下去。我也能找到其他不讨人烦的雇佣兵。", //L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"好命令,$CAUSE$!你为什么命令撤退?", //L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"我只是把大家带出了地狱,你该感谢我救你一命。", //L"I just got us out of that hellhole, you should thank me for saving your life.", - L"他们包围了侧翼,我们没退路了!", //L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ 讨厌 $CAUSE$ 的撤退命令,你呢?", //L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"只要愿意,你可以自己回去...没人阻止你。", //L"You know you can go back if you want... nobody's stopping you.", - L"优势一直在我们这边,直到刚才。", //L"We were rockin' it until that point.", - L"哦?你一边第一个撤退,一边救了我们一命?你真高尚!", //L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"我确实救了你们,$CAUSE$。哥们儿,我再也不想回到那儿了。", //L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"最重要的,我们都还活着。", //L"We're still alive, this is what counts.", - L"更要紧的是,我们啥时候打回去,搞定这任务?", //L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"$CAUSE$,你脑子进水了吗?你刚刚杀了一个无辜的人!", //L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"他有枪,我看到了!", //L"He had a gun, I saw it!", - L"哦不!上帝啊!我做了什么?", //L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ 暴怒:$CAUSE$ 杀了个平民。你都干了些什么?", //"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"我们能安全些比我说对不起更有价值...", //"Better safe than sorry I say...", - L"喔。这可怜的家伙没希望了。该死。", //"Yeah. The poor sod never had a chance. Damn.", - L"别废话。那是个手无寸铁的平民。我们来这儿是为了保护这些人们的!", //"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"你干净利索的干掉了他,干得好!", //"And you took him down nice and clean, good job!", - L"现在是在打仗,随时都有人会死....虽然我更喜欢咱们低调点。",//"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"谁在乎?舍不得孩子套不住狼。", //"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"拜托,能让 $CAUSE$ 滚蛋吗?这个慢吞吞的家伙拖了我们的后腿。", //"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"要不是我替你背了本应你背的东西,我怎么会这么慢,$VICTIM$!", //"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"因为我背的东西太多了,太重了!", //"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ 觉得是 $CAUSE$ 拖累了队伍。你觉得呢?", //"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"我们绝不抛弃任何人,特别是 $CAUSE$!", //"We leave nobody behind, not even $CAUSE$!", - L"我们得赶快行军,敌人追上来了!", //"We have to move fast, the enemy isn't far behind!", - L"所有人都背着自己的装备啊。要是不拿着枪你可怎么打仗啊?", //"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"是,停止抱怨。要么咱们一起撑过去要么一起死了拉倒。", //"Aye, stop complaining. We go through this together or we don't do it at all.", - L"你要是那么恼火 $CAUSE$ 拖拖拉拉,$VICTIM$,不如你去帮他一把。", //"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"$VICTIM$,要是你还有闲功夫在这里抱怨个没完,你该去帮 $CAUSE_GENDER$ 一把。", //"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"该死的 $CAUSE$,$CAUSE_GENDER$ 把好吃的自个全吃了......", //"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"怪我咯,你怎么不说你自己先吃完了自己的那份儿。", //"Not my problem if you already ate all your rations.", - L"哎 $VICTIM$,我刚才吃的时候你怎么不说话啊?", //"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ 想要 $CAUSE$'的食物。你怎么看?", //"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"大伙都一样多。你用光了自己那份,那是你自个儿的事。", //"We all get the same. If you used up yours already that's your problem.", - L"要是 $CAUSE$ 能分到的话,我也要!", //"If $CAUSE$ shares, I want some too!", - L"凭啥你有那么多东西吃?我怎么闻着你有额外的口粮呢?", //"Why do you have so much food anyway? Do I smell extra rations there?.", - L"那好,回到基地人人都管够....", //"Right, everyone got enough back at the base...", - L"基地里有足够的食物,别找事,明白么?", //"There's enough food left at the base, so no need to fight, ok?", - L"我觉得那东西根本不能叫美味,不过要是你们这些鸡婆想争食儿,我没意见。", //"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"哦,活见鬼,$CAUSE$。这可不是个好时候!", //"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"说得好,我选择死亡。好建议。谢谢,$VICTIM$,你帮了我大忙,还要我说别的吗?", //"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"这是我唯一的弱点,我无能为力啊!", //"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' 的举动让 $VICTIM$ 心烦意乱。你怎么看?", //"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"这关你什么事?你没事可干了?", //"What does it even matter to you? Don't you have something to do?", - L"确实啊,$CAUSE$。这里是军事组织不是病房。", //"Really $CAUSE$. This is a military organization and not a ward.", - L"呃,我们是专业人士,你可不是,$CAUSE$。", //"Well, we are pros, an you're not, $CAUSE$.", - L"别这么势利眼, $VICTIM$。", //"Don't be such a snob, $VICTIM$.", - L"嗯。$CAUSE_GENDER$ 还好吧?", //"Uhm. Is $CAUSE_GENDER$ okay?", - L"瞎逼逼,一群疯子的典型时刻。", //"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ 嗨得飞起了!我怎么能跟一个瘾君子共事?", //"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"把你的肠子从屁眼里拉出来我才能飞,我的天啊....", //"Taking the stick out of your butt would be a starter, jeez...", - L"我看到了未来,伙计。还有...其它的东西!", //"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ 吸毒的时候被 $VICTIM$ 看见了。你怎么看?", //"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"喂,$CAUSE$ 得减减压,好吧?", //"Hey, $CAUSE$ needs to ease the stress, ok?", - L"太没职业道德了。", //"How unprofessional.", - L"这是打仗不是贵族舞会。赶紧住手,$CAUSE$!", //"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"呵呵,太对了。", //"Hehe. So true.", - L"我相信你吸毒有一个很好的理由,是吧,$CAUSE$?", //"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"战斗结束之后,你想注射什么随你的便。", //"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"见鬼...喂!$CAUSE$!你给我拿回来,你这个该死的小偷!", //"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"你喝多了吧?有病啊你!", //"Have you been drinking? What the hell is your problem?", - L"你都看见了?倒霉....要不一人一半?", //"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ 看见 $CAUSE$ 偷了件东西。你怎么看?", //"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"捉贼捉赃,如果没证据你就别瞎指责,$VICTIM$.", //"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"我们一起共事的就是这样的人了,$VICIM$? 大家都看好自己的钱包为妙。", //"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"喂你!你把那个立刻还回去!", //"HEY! You put that back right now!", - L"我什么都没看见啊。怎么突然间 $VICTIM$ 就抽风了?", //"No idea. All of a sudden $VICTIM$ is all drama.", - L"也许我们可以多分点战利品来解决这个...小问题?", //"Perhaps we could get a raise to resolve this... issue?", - L"闭嘴!这些战利品对我们所有人来说足够多了!", //"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"这简直是个灾难啊。从没有这么差劲的指挥, $CAUSE$!", //"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"我不会接受你这样的大头兵来指挥我!", //"I don't have to take that from a grunt like you!", - L"做你的白日梦,$VICTIM$。我对得起这价钱,你心里清楚!", //"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ 不相信 $VICTIM$ 的命令。你怎么看?", //"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"总得有人当头儿啊,除了 $CAUSE$ 你有更好的人选?", //"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"好啊,这样的话我们肯定是赢不了这场战争了....", //"Well, we sure aren't going to win the war at this rate...", - L"我向你保证...那并不是像打手势一样的指挥", //"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"我们有清晰的指挥层级,而你并不是发号施令的那个,$VICTIM$!", //"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"我们不会忘记他们的牺牲。正是他们的牺牲使得我们能够继续战斗下去。", //"We will not forget their sacrifice. They died so we could fight on.", - L"什么?生意就是这样。搞砸了你就玩儿完了。他们知道这里头的风险。继续干活。", //"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"$CAUSE$ 怎么能挣这么多钱?这不公平!", //"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"做你的白日梦,$VICTIM$。我对得起这价钱,你心里清楚!", //"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"你觉得我不会往心里去的,是吧?", //"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ 正在嫉妒 $VICTIM$ 的时薪。你怎么看?", //"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"别在钱上斤斤计较,你自己挣得够多的了!", //"Quit whining about the money, you get more than enough yourself!", - L"说实在的,$VICTIM$, 我觉得你应该调整下报价!", //"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"你值那个价?你的所作所为根本就是在装腔作势!", //"Worth it? All you do is pose!", - L"放松点,至少我们明白你付出了多少,$CAUSE$。", //"Relax. At least some of us appreciate your service, $CAUSE$.", - L"也许 $CAUSE_GENDER$ 刚好擅长薪资谈判?", //"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"每个人都会得到自己应得的那一份儿。你越是抱怨,得到的越少。", //"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ 把好装备自个儿都囤起来了。不公平!", //"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"跟你不一样,实际上我才懂得怎么用这些玩意儿。", //"Contrary to you, I actually know how to use them.", - L"是啊,东西在那里总得用人用它,对吧?祝你下回好运!", //"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ 眼红 $VICTIM$ 的装备。你怎么看?", //"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"你不过是在给你糟糕的枪法编个借口而已。", //"You're just making up an excuse for your poor marksmanship.", - L"是的,对我来说这分明是任人唯亲。", //"Yeah, this smells of cronyism to me.", - L"如果你的词典里'使用'是'浪费弹药'的意思,那好吧,你真特么专业啊。", //"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"我举双手赞成!", //"I'll second that!", - L"真是那样?那好,从现在起我对 $CAUSE_GENDER$ 高超的枪法拭目以待。", //"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"你就没想到过我们的补给是有限的么?我们根本连一把好枪也搞不到。", //"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"你拿我当双脚架吗?别拿我架枪,$CAUSE$!",//L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"别怂!咱这是在打仗!",//L"Don't be such a wuss. This is war!", - L"哎呀,你怎么倒在那里,我压根没看见。",//L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ 用 $VICTIM$ 的胸膛架枪。好怪异。你怎么看?",//L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"别怂!咱这是在打仗!",//L"Don't be such a wuss. This is war!", - L"哟,$CAUSE$,你是想变成一个混球呢,还是你本来就是个混球?",//L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"$CAUSE$ 你就一迟钝的混球,迟钝到死。",//L"You are and always will be an insensitive jerk, $CAUSE$.", - L"有时你确实得利用一下你周围的环境!",//L"Sometimes you just have to use your surroundings!", - L"诶...你俩在搅基吗?",//L"Ehm... what are you two DOING?", - L"卧槽,这会儿不是做那事儿的时候",//L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"谢谢你,$CAUSE$。我还以为我会流血致死。",//L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"我干完了我的活,现在你得回去干你的活了!",//L"I'm doing my job. Get back to yours!", - L"我们得互相照顾对方,换成你你也一定会帮我包扎,$VICTIM$。",//L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ 给 $VICTIM$ 做了包扎。你怎么看?",//L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"邦迪贴好了?好,开始干活!",//L"Patched together again? Good, now move!", - L"不客气。",//L"You're welcome.", - L"老天,今天咋这么点背?",//L"Jeez. Woken up on the wrong foot today?", - L"找个靠谱点的法子...",//L"Talk about a no-nonsense approach...", - L"你咋受伤的呢?子弹从哪边飞来的啊?",//L"How did you even get wounded? Where did the attack come from?", - L"你得小心点。现在,攻击来自哪边?",//L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"哦耶,$CAUSE$!你成功了!开始下一轮吧?",//L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"呸。我看你已经喝大了。",//L"Pah. I think you've had enough.", - L"好的。放马过来吧!",//L"Sure. Bring it on!", - L"", - L"", - L"喝醉了的 $VICTIM$ 和 $CAUSE$ 玩嗨了。你怎么看?",//L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"没错,你俩今天酒喝的够多了。",//L"Yeah, enough booze for you today.", - L"哈哈,开干!",//L"Hoho, party!", - L"真是扫兴!",//L"Party pooper!", - L"$CAUSE$,你一定要保持冷静的头脑。",//L"You sure like to keep a cool head, $CAUSE$.", - L"好了,女士们,派对结束了,继续前进!",//L"Alright, ladies, party's over, move on!", - L"谁让你们放松了?干活去!",//L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... 你是... 你是... 呃... 你是最棒的!",//L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"额呵呵呵。$VICTIM$, 你失态了。你..嗝,你得控制住你自己。自律,知道不?像我一样!",//L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"嗝...是啊,你也是,$VICTIM$。你也.嗝...是!",//L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"叮咛大醉的 $VICTIM$ 和 $CAUSE$ 英雄相惜了。你怎么看?",//L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"无所谓。我们得继续干活,所以 $VICTIM$,对你来说游戏已经结束了。",//L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"嘿~~~ 这事在往好的方向发展。",//L"Heeeey... this is actually kinda nice for a change.", - L"和煞笔酒鬼谈自律?你在逗我...",//L"'I know discipline', said the clueless drunk...", - L"是啊。自... 咕噜!能自律的人,就像... 呃... 咱们!",//L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"也为我干一杯!不过现在不行,咱们正打仗呢。",//L"Drink one for me too! But not now, because war.", - L"你已经在庆祝啦?这仗还没结束呢,不可能这么快结束。",//L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"可恶,$CAUSE$!你...你耍诈...你这酒根本没下去。",//L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"打住,$VICTIM$!你一喝就喝个没够!",//L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"额呵呵呵。你说的真特么的对啊。呵呵,你一直都对是吧,嗝!",//L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ 喝大发了,想把 $VICTIM$ 爆菊了。你怎么看?",//L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"放松,这只是一点小酒。",//L"Relax, it's just a bit of booze.", - L"你们小声点,行不?",//L"Hey keep it down over there, okay?", - L"$CAUSE$,你也喝醉了,振作点!",//L"You're just as drunk. Beat it, $CAUSE$!", - L"喝不下就把酒留给能喝的,好呗?",//L"Leave alcohol to the big ones, okay?", - L"等会儿,行不?",//L"Later, ok?", - L"也许我们赢了这一仗,但是还没特么的打赢战争。所以动起来,大兵!",//L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"卧槽,$CAUSE$!嗝... 我再也不跟你喝酒了,你个神经病。",//L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"$VICTIM$,闭嘴!你根本不懂怎么...啥来着?呃...你这人一点都不讲道理。哎,你这人真是没意思。",//L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"你这人真是没意...意...意?意思!你没意思。嗝!..没意思。",//L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ 喝大发了,想在 $VICTIM$ 身上开窟窿。你怎么看?",//L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"哎呀 $VICTIM$, 咋突然这紧张了呢?咋回事?",//L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"咱这派对超好玩,直到 $CAUSE$ 来扫兴。",//L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$!闭嘴!你是我们小队的耻辱。滚出去醒醒酒!",//L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"都讲人话!",//L"Word!", - L"你们俩醒醒酒,你们俩废物...",//L"Why don't you two sober up? You're pretty wasted...", - L"你们俩都给我闭嘴!你们就是我们小队的耻辱!",//L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"我就知道我不能指望你的,$CAUSE$!",//L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"指望我?这明明是你的错!",//L"Depend? It was all your fault!", - L"我戳到你的痛处了,是不是啊?",//L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ 不太喜欢 $CAUSE$ 所说的。你怎么看?",//L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"你就指望别人来帮你工作?那你这废物有啥用?",//L"So you depend on others to do your job? Then what good are you?!", - L"说真的,$VICTIM$ 应该滚蛋了!",//L"Indeed. Way to let $VICTIM$ hang!", - L"这不是校园里对小孩同情的废话,这是你的错!",//L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"哼,干嘛用这种态度?",//L"Yeah, what's with the attitude?", - L"都算了吧,你们两个!",//L"Zip it, both of you!", - L"安静,马上!",//L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"哈!看到吧?甚至连 $CAUSE$ 也赞同我。",//L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'甚至'?你为啥用这个词?",//L"'Even'? What does that mean?", - L"是的。在这件事上我100%% 赞同 $VICTIM$。",//L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ 同意 $CAUSE$ 对 $VICTIM_GENDER$ 所说的。你怎么看?",//L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"你俩说说就行了啊,不用太往心里去。",//L"Don't let it go to your head.", - L"嘿,我也赞同啊!",//L"Hey, don't forget about me!", - L"看起来,有时即便是 $CAUSE$ 说的话也掷地有声啊...",//L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"我好像闻到了这里有麻烦了??",//L"Do I smell trouble here??", - L"这些是无关紧要的!私下再讨论,不过不是现在。",//L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$!$CAUSE$!少说话,多干活,拜托了!",//L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"就是。$CAUSE$ 看到你干了!",//L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"不,我没做!",//L"No I did not!", - L"我们是不会对这保持沉默的,绝不会的,长官!",//L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ 赞同 $CAUSE$ 对其他人的意见。你怎么看?",//L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"我不这么认为...",//L"I don't think so...", - L"是的,我也赞同!",//L"Yeah, totally!", - L"啥?你说你干了?",//L"Hu? You said you did.", - L"是呀,不要歪曲事实!",//L"Yeah, don't twist what happened!", - L"谁介意?我们都有自己的工作要做。",//L"Who cares? We have a job to do.", - L"如果你们这些鸡婆坚持要继续吵下去,我们很快就会有真正的大麻烦。",//L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"我不能相信你居然在这事上不同意我,$CAUSE$。",//L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"这就是因为你是错的,这就是为什么。",//L"It's because you're wrong, that's why.", - L"我也很意外,但事实就是如此。",//L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ 不喜欢 $CAUSE$ 和其他人站在一边。你该怎么办?",//L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"呃,又怎么了...",//L"Ugh. What now...", - L"什么,我也不敢相信。",//L"Hum. Never saw that coming.", - L"嘿,别站在道德制高点上居高临下了,$CAUSE$。",//L"Oh come down from your high horse, $CAUSE$.", - L"是啊,你是错的,$VICTIM$!",//L"Yeah, you are wrong, $VICTIM$!", - L"我能不能把对讲机关了,这样我就不用听你俩瞎逼逼了?",//L"Can I shut down squad radio, so I don't have to listen to you?", - L"嗯是的,非常戏剧性的一幕,但这关我屁事?",//L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"好。。。你是对的,$CAUSE$。开心了吧?",//L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"不,我不会让你这么敷衍过去。",//L"No. I won't let this go.", - L"嗯。。。好吧!",//L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ 看起来很欣赏 $CAUSE$ 对这次冲突的解决办法。你怎么看?",//L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"虽然花了点时间,但是至少这事情过去了。",//L"You're not getting away this easy.", - L"很高兴你们不再生气了。",//L"Glad you guys are not angry anymore.", - L"噢我日。$VICTIM$ 都已经不再追究了,你还有啥意见?",//L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"不满意就要大声说出来 $CAUSE$!",//L"You tell 'em, $CAUSE$!", - L"*唉* 来握个手什么的,然后给我回去干正事儿。",//L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"好,请吧,和我们详细说说你那小伤心事儿,我们都特么的认真听呢。",//L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"不,这是原则的问题。",//L"No. This is a matter of principle.", - L"", - L"", - L"搞到好像你自己有什么原则似的。",//L"As if you had any to start with.", - L"收起你的架子...",//L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ 不太喜欢 $CAUSE$'的反驳。你怎么看?",//L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"你特么的就是来搞事的,是吗?",//L"You're just asking for trouble, right?", - L"就猜到你不会被那么容易的糊弄过去,$CAUSE$。",//L"Guess you're not getting away that easy, $CAUSE$.", - L"不要那么冒失。",//L"Don't be so flippant.", - L"这年头谁还需要原则?",//L"Who needs principles anyway?", - L"既然你俩没法互相理解,那你俩是不是该干嘛干嘛去?",//L"Now that this is out of the way, perhaps we could continue?", - L"闭嘴,你们两个!",//L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"好啦好啦,上帝。我不追究了,行不?",//L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"到此为止,别演了。",//L"Cut it, drama queen.", - L"再一再二不再三。",//L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ 和 $CAUSE$ 停止了争论。你怎么看?",//L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"不需要那么纠结它。",//L"No reason to be so stiff about it.", - L"是,你俩自己解决,好吧?",//L"Yeah, keep it down, will ya?", - L"嘿,你TM别总是什么都大惊小怪的...",//L"Pah. You're the one making all the fuss about it...", - L"是的,摆正你的态度,$VICTIM$。",//L"Yeah, drop that attitude, $VICTIM$.", - L"*唉* 这事就这样了吧?",//L"*Sigh* More of this?", - L"我为啥还要听你们这些人瞎逼逼...",//L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"你以为你是谁,$CAUSE$?操,我真的没法忍了这次!",//L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"我就是要来叫你闭嘴的!我是你的头儿,$VICTIM$!",//L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"我们中的一个要有大麻烦了,$VICTIM$。",//L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ 不太乐意听 $CAUSE$'的话。你怎么办?",//L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"啧,不要大惊小怪。",//L"Pfft. Don't make a fuss out of it.", - L"滚,你不再是我们的头儿了!",//L"Yeah, you won't boss us around anymore!", - L"你们就是菜鸡中的菜鸡!",//L"You are certainly nobodies superior!", - L"不太确定这啊,但就那样吧!",//L"Not sure about that, but yep!", - L"嘿。嘿!你们两个,停手!你们两个这是干什么?",//L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"如果这边有一个人是头儿,那就是我...我命令你们闭嘴!",//L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"额呀!$CAUSE$ 病了!离我远点,你的脸色看起来很恶心~~~!",//L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"噢,真的?退后,我要感觉要咳嗽!",//L"Oh yeah? Back off, before I cough on you!", - L"确实是啊。我...*咳咳* 感觉不太好...",//L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ 害怕被 $CAUSE$ 的病传染了。你怎么看?",//L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"不要像个小学生一样,我们需要给 $CAUSE$ 找个医生!",//L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"脸色看起来是不好,希望不是传染病!",//L"This does look unhealthy. That better not be contagious!", - L"别吵了!别在病以外给我添其它烦心的事情了!",//L"Stop it! We don't need more of whatever it is you have!", - L"是啊,你除了瞎逼逼外也没别的办法对抗病魔了吗,是吧?",//L"Yeah, there's nothing you can do against this stuff, right?", - L"重要的是把 $CAUSE$ 送到医生那里,再确保 $CAUSE_GENDER$ 不再传染其他人。",//L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"不要吵了!$CAUSE$, 把病治好要紧,其他人都该干嘛干嘛去!",//L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"谢谢, $CAUSE$。我已经感觉好多了。",//L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"你是怎么被传染上的?你是不是又忘了洗手啊?",//L"How did you get that in the first place? Did you forget to wash your hands again?", - L"没问题,我们可不能让你一边咳血一边打仗,对吧?",//L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ 治好了 $CAUSE$ 的病。你怎么看?", //"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"你怎么染上这个病的啊?", //"Where did you get that stuff from in the first place?", - L"太好了。我的病完全好了...是吧?", //"Great. Are you sure it's fully treated now?", - L"重要的是你的病现在好了...对吧?", //"The important thing is that it's gone now... It is, right?", - L"我早就警告过你们了...这个国家哪里都是病源,所以别乱摸乱碰!", //"I told you people before... this country a dirty place, so beware of what you touch.", - L"我们得小心点,我们不仅仅要对抗那些想让我们死的人。", //"We have to be careful. The army isn't the only thing that wants us dead.", - L"很好。该治的病都治好了,我们得找些敌人来治治了。", //"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"干得漂亮,$CAUSE$!", // L"Nice one, $CAUSE$!", - L"", - L"", - L"哇塞,你看到这个很兴奋吧?", //L"Whoa. Are you really getting off on that?", - L"这才叫军事行动!", // L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ 给 $CAUSE$ 的暴力美学点赞了。你怎么看?", // L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"小朋友,这可不是打游戏机。", // L"This isn't a video game, kid...", - L"那可真够恶心的,但是我喜欢!", // L"That was so wicked!", - L"没啥好道歉的,那简直太棒了!", // L"What are you apologizing for? That was awesome!", - L"$VICTIM$,你可真够狠的。", //L"You are sick, $VICTIM$.", - L"杀了他们就行了,你还非得玩些花样。", // L"Killing them is enough. No need to make a show out of it.", - L"这就是和我们对抗的下场,来,把剩下的全一锅端了。", //L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"我去,$CAUSE$,你只要杀了他们就行了,不需要人间蒸发了他们!", //L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"感觉到有什么不同吗?", //L"Is there a difference?", - L"哎呦,这玩意威力很大啊!", //L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ 被 $CAUSE$ 的暴行吓到了。你怎么看?", //L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"别告诉我你晕血。", //L"Don't tell me you've never seen blood before...", - L"那有点过激了。", //L"That was a bit excessive...", - L"这是不是说明你都没怎么用过这把枪?", //L"Does that mean you aren't even remotely familiar with your gun?", - L"往好里说,这货至少不会抱怨了", //L"On the plus side, I doubt this guy is going to complain.", - L"别浪费子弹,$CAUSE$。", //L"Don't waste ammunition, $CAUSE$.", - L"既然他们挑事,那我们就把他们扔到裹尸袋里。就这么简单。", //L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"多谢指点,$CAUSE$。我从你那里学到不少知识。", //L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"你还有很多东西要学呢,$VICTIM$。", //L"About that... you still have a lot to learn, $VICTIM$.", - L"你是个好学生!", //L"You're welcome!", - L"", - L"", - L"$CAUSE$ 不满 $VICTIM$ 的学习进度缓慢。你怎么看?", //L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"师父领进门,修行在个人。", //L"At some point you'll have to do on your own though.", - L"是的,你最好继续向 $CAUSE$ 学习。", //L"Yeah, you better stick to $CAUSE$.", - L"不,$VICTIM_GENDER$ 保持这样就挺好。", //L"Nah, $VICTIM_GENDER$ is doing fine.", - L"是的,$VICTIM_GENDER$ 还需要更多提高。", //L"Yes, $VICTIM_GENDER$ still needs training.", - L"这次训练很有成效,就这个气势,继续保持下去。", //L"This training is a good preparation, keep up the good work.", - L"想赢得最终胜利的话所有人都要继续努力,一鼓作气吧!", //L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"干得好!卢瑟们都下地狱吧!$CAUSE$ 是战术大师!", //L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"大家也都劳苦功高。", //L"I couldn't have done it without you people.", - L"嘿嘿,今天是我的幸运日。", // L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ 肯定了 $VICTIM$ 的领导能力。你怎么看?", //L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"嗯...当然这也不完全是 $CAUSE_GENDER$ 一个人的功劳...", //L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"同意。 $CAUSE$ 是优秀的团队领导者。", //L"Agreed. $CAUSE$ is a fine squadleader.", - L"一点也不夸张,你应该得到称赞。", //L"It's alright. You deserve this.", - L"你做的很好,$CAUSE$。干得漂亮!", //L"You did everything right, $CAUSE$. Good work!", - L"很好,我们靠战术扭转了装备的劣势,对吧?", //L"Yeah. We're turning into quite the outfit, aren't we?", - L"这场仗胜利了,但是要取得最终的胜利,我们还要继续打更多的胜仗。", //L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"好险。谢谢你,$CAUSE$,我欠你条命!", //L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"小事一桩。", //L"Don't mention it.", - L"换成你你也会这样做的。", //L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ 救了 $VICTIM$ 一命。你怎么看?", //L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"唉,他还是死了。", //L"Pff, that guy was dead anyway.", - L"很严重吗,$VICTIM$?还能坚持战斗吗?", //L"How bad is it, $VICTIM$? Can you still fight?", - L"没问题,你干得漂亮。", //L"Then I will. Good job!", - L"还是可以的,我刚才以为是真不行了。", //L"Yeah, I was worried there for a moment.", - L"干得好,但是我们先得把这场战斗打完,是吧?", //L"Good job, but let's focus on ending this first, okay?", - L"你们拥抱完了没,我们得先解决手头上的活儿,我的意思是解决这些向我们开枪的人。", //L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"卧槽,我先看到他的,这个人头应该是我的!", //L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"哈?你疯了吗?我们都在热火朝天的战斗,你却在数人头数?", //L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"啥?那我的靶子呢?", //L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ 对于 $CAUSE$ 抢了他的人头非常生气,后果很严重。你怎么想?", //L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"这可不是网游,弱智,没人会去注意你那该死的人头数!", //L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"真是的,我最讨厌别人杀我弹道上的敌人了。", //L"Yeah, I hate it when people don't stick to their firing lane.", - L"$CAUSE$,你只能杀你应该杀的人。", //L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"操,怎么跟打网游似的,$VICTIM_GENDER$ 是不是要指责敌人打蹲点战术了?", //L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"这种问题以后私下解决,但是现在,所有人先确保没有视线的死角。", //L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"只要所有人把自己火力范围内的敌人都杀光,所有人都会有足够的人头数了。", //L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"隆隆! 那个人解决掉了。", //L"Boom! We sure took care of that guy.", - L"", - L"", - L"好吧,虽然大部分是我的功劳,你也确实帮了点忙。", //L"Well, it was mostly me, but you did help too.", - L"没问题。接下来搞谁?", //L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ 和 $VICTIM$ 一起搞定了敌人。怎么样?", //L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"如果你能射得再准点,$CAUSE$ 就不用给他最后一击了。", //L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"几个人联手才干掉他?上帝啊,他穿的什么牌子的防弹衣?", //L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"瞧一瞧看一看了啊,$VICTIM$ 太得意忘形了啊", //L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"嘿嘿,他们一点办法都没有。", //L"Hehe, they've got no chance.", - L"嗯...我们或许需要更强大的火力才能单挑他们,不过刚才大家都干得不错。", //L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"我觉得我们应该平分战利品,不过 $CAUSE$ 可以先选他喜欢的。", //L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"思路对了。我们已经赢了,没必要屠杀他们。", //L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"我们走一步看一步吧,如果他们不放弃抵抗,也没有好果子吃。", //L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"对。或许从这些人嘴里能撬出什么敌情。", //L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"剩下的敌军对 $CAUSE$ 投降了。请指示。", //L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"没有冒犯的意思,但是如果 $CAUSE$ 你惧怕死亡,你可能并不能胜任这个工作。", //L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"很好,$CAUSE$。我们的工作一下轻松了很多。", //L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"嘿!把枪收起来吧,他们都投降了。", //L"Hey! Cut the crap. They already surrendered.", - L"对,你不应该相信他们,他们都是些六亲不认的人。", //L"Yeah, you can't trust these guys, they're totally reckless.", - L"我们应该赶紧把这些人扔进监狱里面去严加审讯,他们肯定知道女王军的下一步动向。", //L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"啧。我觉得应该把这些卢瑟们全枪毙了,这些人只会拖我们的后腿。", //L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"$CAUSE$,注意点,他们是站在我们这边的。", //L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"只是擦伤而已,没什么大不了的。", //L"That's just a scratch, they'll live.", - L"我不是故意的。", //L"Oops.", - L"", - L"", - L"$VICTIM$ 对 $CAUSE$ 误伤了平民非常生气。你怎么看?", //L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"唉,误伤是没法避免的,他们不会死的。", //L"Well, this can happen. As long as they live it's okay.", - L"在事后报告中添上这一笔可不太好看。", //L"This won't look good in the after-action report.", - L"你在干嘛啊?睁大眼睛看清楚,$CAUSE$!", //L"What are you doing? Watch it, $CAUSE$!", - L"别大惊小怪。我也经常被误伤。", //L"Don't worry. Happens to me too all the time.", - L"不要乱开枪!战斗结束以后 $VICTIM$ 和 $CAUSE$ 负责医护被误伤的人员", //L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"如果 $CAUSE$ 真的是故意的,他们早就死了,不用过于担心。", //L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"你说啥?", //L"What?!", - L"胡说!", //L"No!", - L"你说的是假话!", //L"That is false!", - L"那不是真的!", //L"That is not true!", - - L"说谎!说谎!说谎!一派胡言!", //L"Lies, lies, lies. Nothing but lies!", - L"骗子!", //L"Liar!", - L"叛徒!", //L"Traitor!", - L"你说话注意点!", //L"You watch your mouth!", - - L"不关你的事。", //L"This is none of your business.", - L"别插嘴!", //L"Who ever invited you?", - L"没人问你的意见,$INTERJECTOR$。", //L"Nobody asked for your opinion, $INTERJECTOR$.", - L"哪凉快哪呆着去。", //L"You stay away from me.", - - L"为什么你们都要和我对着干?", //L"Why are you all against me?", - L"为什么你要和我对着干,$INTERJECTOR$?", //L"Why are you against me, $INTERJECTOR$?", - L"我就知道 $VICTIM$ 和 $INTERJECTOR$ 是一根绳上的蚂蚱。", //L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"听而不闻!", //L"Not listening...!", - - L"我受够这种变态马戏表演了", //L"I hate this psycho circus.", - L"我受够这种恶心的秀了", //L"I hate this freak show.", - L"一边玩儿去!", //L"Back off!", - L"说谎!说谎!说谎...", // L"Lies, lies, lies...", - - L"不可能的!", // L"No way!", - L"那不是真的!", // L"So not true.", - L"那不可能是真的。", //L"That is so not true.", - L"眼见为实,耳听为虚。", //L"I know what I saw.", - - L"我压根儿不知道 $INTERJECTOR_GENDER$ 在讲什么。", //L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"别听 $INTERJECTOR_PRONOUN$ 瞎掰!", //L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"不是那么回事儿。", // L"Nope.", - L"你弄错了。", // L"You are mistaken.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"我知道你会支持我的,$INTERJECTOR$。", //L"I knew you'd back me, $INTERJECTOR$", - L"我知道 $INTERJECTOR$ 会支持我的。", //L"I knew $INTERJECTOR$ would back me.", - L"$INTERJECTOR$ 说得对。", // L"What $INTERJECTOR$ said.", - L"$INTERJECTOR_GENDER$ 说得对。", // L"What $INTERJECTOR_GENDER$ said.", - - L"太感谢了,$INTERJECTOR$!", //L"Thanks, $INTERJECTOR$!", - L"相信我,没错的!", //L"Once again I'm right!", - L"看见了吧,$CAUSE$?我是对的!", //L"See, $CAUSE$? I am right!", - L"$SPEAKER$ 又说对了!", //L"Once again $SPEAKER$ is right!", - - L"好。", //L"Aye.", - L"是。", //L"Yup.", - L"是的。", // L"Yep", - L"对的。", //L"Yes.", - - L"确实。", // L"Indeed.", - L"没错。", // L"True.", - L"哈!", // L"Ha!", - L"看吧?", // L"See?", - - L"一点没错!", //L"Exactly!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"说得对!", //L"That's right!", - L"确实!", //L"Indeed!", - L"非常准确。", //L"Exactly that.", - L"$CAUSE$ 每次都是对的。", //L"$CAUSE$ does that all the time.", - - L"$VICTIM$ 是对的!", //L"$VICTIM$ is right!", - L"我也想指出这个呢。", //L"I was gonna' point that out, too!", - L"$VICTIM$ 说得对。", //L"What $VICTIM$ said.", - L"我支持 $CAUSE$!", //L"That's our $CAUSE$!", - - L"对!", //L"Yeah!", - L"事情越来越有趣了...", //L"Now THIS is going to be interesting...", - L"你和他们说说,$VICTIM$!", //L"You tell'em, $VICTIM$!", - L"我同意 $VICTIM$ 在这里...", //L"Agreeing with $VICTIM$ here...", - - L"精彩啊,$CAUSE$。", //L"Classic $CAUSE$.", - L"我就没这么伶牙俐齿。", //L"I couldn't have said it better myself.", - L"事情就是这样的。", //L"That is exactly what happened.", - L"我同意!", //L"Agreed!", - - L"是。", //L"Yup.", - L"对的。", //L"True.", - L"完全正确。", //L"Bingo.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"我得打断一下...", //L"Now wait a minute...", - L"等等,那不是事实...", //L"Wait a sec, that's not what right...", - L"你说啥?当然不是。", //L"What? No.", - L"事实不是那样的。", //L"That is not what happened.", - - L"哎,别这么说 $CAUSE$!", //L"Hey, stop blaming $CAUSE$!", - L"闭嘴,$VICTIM$!", //L"Oh shut up, $VICTIM$!", - L"不不不,你弄错了。", //L"Nonono, you got that wrong.", - L"靠,能不能不要这么死板啊,$VICTIM$?", //L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"你就从来没这么干过,$VICTIM$?", //L"And I suppose you never did, $VICTIM$?", - L"嗯...不。", //L"Hmmmm... no.", - L"很好。让我们吵一架吧,反正也没其它事情可做...", //L"Great. Let's have an argument. It's not like we have other things to do...", - L"你错了!", //L"You are mistaken!", - - L"你错了!", //L"You are wrong!", - L"我和 $CAUSE$ 绝不会这么做。", //L"Me and $CAUSE$ would never do such a thing.", - L"不,不可能的。", //L"Nah, can't be.", - L"我可不这么认为。", //L"I don't think so.", - - L"怎么想起现在说这个事情?", //L"Why bring that up now?", - L"干嘛啊,$VICTIM$?有必要这样吗?", //L"Really, $VICTIM$? Is this necessary?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"什么也不说", //L"Keep silent", - L"支持 $VICTIM$", //L"Support $VICTIM$", - L"支持 $CAUSE$", //L"Support $CAUSE$", - L"呼吁理智解决问题", //L"Appeal to reason", - L"让两边都闭嘴", //L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"他", //L"he", - L"她", //L"she", - L"他", //L"him", - L"她", //L"her", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% 敏捷\n", // L" %s%d%% agility stat\n", - L" %s%d%% 灵巧\n", // L" %s%d%% dexterity stat\n", - L" %s%d%% 力量\n", // L" %s%d%% strength stat\n", - L" %s%d%% 智慧\n", // L" %s%d%% wisdom stat\n", - L" %s%d%% 有效等级\n", //L" %s%d%% effective level\n", - - L" %s%d%% APs\n", //L" %s%d%% APs\n", - L" %s%d 最大的呼吸次数\n", //L" %s%d maximum breath\n", - L" %s%d%% 负重能力\n", //L" %s%d%% strength to carry items\n", - L" %s%2.2f 生命值回复/小时\n", //L" %s%2.2f life regeneration/hour\n", - L" %s%d 睡眠所需时间\n", //L" %s%d need for sleep\n", - L" %s%d%% 水量耗费\n", //L" %s%d%% water consumption\n", - L" %s%d%% 食物耗费\n", //L" %s%d%% food consumption\n", - - L"%s被诊断出%s了!", //L"%s was diagnosed with %s!", - L"%s的%s被治愈了!", //L"%s is cured of %s!", - - L"诊断", // L"Diagnosis", - L"治疗", //L"Treatment", - L"掩埋尸体", //L"Burial", - L"取消", //L"Cancel",  - - L"\n\n%s (未诊断的) - %d / %d\n", //L"\n\n%s (undiagnosed) - %d / %d\n", - - L"高度的痛苦会导致人格分裂\n", //L"High amount of distress can cause a personality split\n", - L"在%s'库存中发现污染物品。\n", //L"Contaminated items found in %s' inventory.\n", - L"每当我们遇到这种情况的时候, 会增加一个新的伤残属性。\n", //L"Whenever we get this, a new disability is added.\n", - - L"只有一只手还能用。\n", //L"Only one hand can be used.\n", - L"只有一只手还能用。\n已使用医用夹板来加快治疗进程。\n", //L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"腿部机能严重受限。\n", //L"Leg functionality severely limited.\n", - L"腿部机能严重受限。\n已使用医用夹板来加快治疗进程。\n", //L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"潜伏", //L"Hide", - L"侦查", //L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|水: %d%%\n", //L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|食|物: %d%%\n", //L"\n\n|F|o|o|d: %d%%\n", - - L"最大士气被改变 %s%d\n", //L"max morale altered by %s%d\n", - L" %s%d 需要睡眠\n", //L" %s%d need for sleep\n", - L" %s%d%% 精力回复\n", // L" %s%d%% breath regeneration\n", - L" %s%d%% 任务效率\n", //L" %s%d%% assignment efficiency\n", - L" %s%d%% 失去能力点的几率\n", //L" %s%d%% chance to lose stats\n", -}; - -STR16 szIMPGearWebSiteText[] = -{ - // IMP Gear Entrance - L"如何选择装备?", //L"How should gear be selected?", - L"旧系统:根据技能和能力随机选择装备", //L"Old method: Random gear according to your choices", - L"新系统:自由选购装备", //L"New method: Free selection of gear", - L"旧系统", //L"Old method", - L"新系统", //L"New method", - - // IMP Gear Entrance - L"I.M.P 装备", // L"I.M.P. Equipment", - L"额外花费: %d$ (%d$ 预付款)", //L"Additional Cost: %d$ (%d$ prepaid)", -}; - -STR16 szIMPGearPocketText[] = -{ - L"选择头盔", //L"Select helmet", - L"选择背心", // L"Select vest", - L"选择裤子", //L"Select pants", - L"选择头部装备", //L"Select face gear", - L"选择头部装备", //L"Select face gear", - - L"选择主武器", //L"Select main gun", - L"选择副武器", //L"Select sidearm", - - L"选择LBE背心", //L"Select LBE vest", - L"选择左LBE枪套", //L"Select left LBE holster", - L"选择右LBE枪套", //L"Select right LBE holster", - L"选择LBE战斗包", //L"Select LBE combat pack", - L"选择LBE背包", //L"Select LBE backpack", - - L"选择发射器/步枪", //L"Select launcher / rifle", - L"选择近战武器", //L"Select melee weapon", - - L"选择附加物品", //L"Select additional items", //BIGPOCK1POS - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择医疗套件", //L"Select medkit",MEDPOCK1POS - L"选择医疗套件", //L"Select medkit", - L"选择医疗套件", //L"Select medkit", - L"选择医疗套件", //L"Select medkit", - L"选择主武器弹药", //L"Select main gun ammo",SMALLPOCK1POS - L"选择主武器弹药", //L"Select main gun ammo", - L"选择主武器弹药", //L"Select main gun ammo", - L"选择主武器弹药", //L"Select main gun ammo", - L"选择主武器弹药", //L"Select main gun ammo", - L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",SMALLPOCK6POS - L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", - L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", - L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", - L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", - L"选择配枪弹药", //L"Select sidearm ammo",SMALLPOCK11POS - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择配枪弹药", //L"Select sidearm ammo", - L"选择附加物品", //L"Select additional items", //SMALLPOCK19POS - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", - L"选择附加物品", //L"Select additional items", //SMALLPOCK30POS - L"左键单击选择项目/右键单击关闭窗口", //L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"无法对该地区下达命令,民兵的命令不可用。", // L"We cannot relay orders to this sector, militia command not possible.", - L"未被分配", //L"Unassigned", - L"小队编号", //L"Group No.", - L"下一站 ", //L"Next", - - L"_时间", //L"ETA", - L"第%d小队(新)", //L"Group %d (new)", - L"第%d小队", //L"Group %d", - L"_目的地", //L"Final", - - L"志愿者: %d (+%5.3f)", //L"Volunteers: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = -{ - L"敌人的直升机在%s被打下了!",//L"Enemy helicopter shot down in %s!", - L"我们。。。嗯。。目前没有控制那个基地,指挥官。。。",//L"We... uhm... currently don't control that site, commander...", - L"SAM导弹现在不需要保养。",//L"The SAM does not need maintenance at the moment.", - L"我们已经订购了维修零件,这需要时间。",//L"We've already ordered the repair, this will take time.", - - L"我们没有足够的资源来做这件事。",//L"We do not have enough resources to do that.", - L"修理SAM基地?这将花费%d美金和%d小时。",//L"Repair SAM site? This will cost %d$ and take %d hours.", - L"敌人的直升机在%s被击中了。",//L"Enemy helicopter hit in %s.", - L"%s用%s对敌军直升机开火了,地点在%s。",//L"%s fires %s at enemy helicopter in %s.", - - L"%s的SAM对位于%s的敌军直升机开火了。",//L"SAM in %s fires at enemy helicopter in %s.", -}; - -STR16 szFortificationText[] = -{ - L"没有有效的建筑被选中,因而建造计划中没有增加任何内容。",//L"No valid structure selected, nothing added to build plan.", - L"没有找到网格编号来创建物品%s ---创建的物品丢失。",//L"No grid no found to create items in %s - created items are lost.", - L"无法在%s建造建筑---人们还在路上。",//L"Structures could not be built in %s - people are in the way.", - L"无法在%s建造建筑---需要下列物品:",//L"Structures could not be built in %s - the following items are required:", - - L"没有找到合适的防御公事来进行网格设置 %d: %s",//L"No fitting fortifications found for tileset %d: %s", - L"网格设置 %d: %s",//L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"民兵",//L"Militia", - L"民兵力量总览",//L"Militia Forces Overview", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"参与行动 %s",//L"Took part in Operation %s", - L"招募日期 %d, %d:%02d 在 %s",//L"Recruited on Day %d, %d:%02d in %s", - L"加薪日期 %d, %d:%02d",//L"Promoted on Day %d, %d:%02d", - L"KIA,行动 %s",//L"KIA, Operation %s", - - L"在行动中受了轻伤 %s",//L"Lightly wounded during Operation %s", - L"在行动中受了重伤 %s",//L"Heavily wounded during Operation %s", - L"在行动中受了致命伤 %s",//L"Critically wounded during Operation %s", - L"在行动中勇敢地战斗 %s",//L"Valiantly fought in Operation %s", - - L"从Kerberus安保公司雇佣的时间:%d, %d:%02d 在 %s",//L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"反叛的时间:%d, %d:%02d 在 %s",//L"Defected to us on Day %d, %d:%02d in %s", - L"合同终止的时间:%d, %d:%02d",//L"Contract terminated on Day %d, %d:%02d", - L"在%d天投奔我们,%d:%02d在%s", //L"Defected to us on Day %d, %d:%02d in %s", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"生命",//L"HP", - L"敏捷",//L"AGI", - L"灵巧",//L"DEX", - L"力量",//L"STR", - - L"领导",//L"LDR", - L"枪法",//L"MRK", - L"机械",//L"MEC", - L"爆炸",//L"EXP", - - L"医疗",//L"MED", - L"智慧",//L"WIS", - L"\n必须有老手或者精英等级",//L"\nMust have regular or elite rank", - L"\n必须有精英的等级",//L"\nMust have elite rank", - - L"\n\n|满|足|要|求",//L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|不|满|足|要|求",//L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\n基本版本的特性",//L"\nBasic version of trait", - - L"(专家)",//L" (Expert)", -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"行动",//L"Operations", - L"你确定要从你的服务中发布%s?",//L"Are you sure you want to release %s from your service?", - L"生命率: %3.0f %% 每日薪水: %3d$ 年龄: %d年",//L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"每日薪水: %3d$ 年龄: %d年",//L"Daily Wage: %3d$ Age: %d years", - - L"歼敌数:%d 助攻数:%d",//L"Kills: %d Assists: %d", - L"状态:减少",//L"Status: Deceased", - L"状态:开火",//L"Status: Fired", - L"状态:激活",//L"Status: Active", - - L"终止合同",//L"Terminate Contract", - L"个人数据",//L"Personal Data", - L"服役记录",//L"Service Record", - L"清单",//L"Inventory", - - L"民兵名字",//L"Militia name", - L"区域名字",//L"Sector name", - L"武器",//L"Weapon", - L"生命比率: %3.1f%%%%%%%",//L"HP ratio: %3.1f%%%%%%%", - - L"%s 当前载入的区域尚未激活。",//L"%s is not active in the currently loaded sector.", - L"%s 已经被提升为熟练民兵",//L"%s has been promoted to regular militia", - L"%s 已经被提升为精英民兵",//L"%s has been promoted to elite militia", - L"状态: 逃兵", //L"Status: Deserted", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"所有状态",//L"All statuses", - L"减少",//L"Deceased", - L"激活",//L"Active", - L"开火",//L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"所有等级",//L"All ranks", - L"新手",//L"Green", - L"熟练",//L"Regular", - L"精英",//L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"所有原住民",//L"All origins", - L"反抗军",//L"Rebel", - L"PMC",//L"PMC", - L"逃兵",//L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"所有区域",//L"All sectors", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"商人处于敌意状态,不愿意进行交易。",//L"Merchant is hostile and does not want to trade.", - L"商人暂时不做生意。",//L"Merchant is in no state to do business.", - L"商人不在交战中进行交易。",//L"Merchant won't trade during combat.", - L"商人拒绝和你交易。",//L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = -{ - L"晴天",//L"normal", - L"下雨",//L"rain", - L"雷暴",//L"thunderstorm", - L"沙尘暴",//L"sandstorm", - - L"下雪",//L"snow", -}; - -STR16 szSnakeText[] = -{ - L"%s遇到蛇的袭击!",//L"%s evaded a snake attack!", - L"%s被蛇攻击了!",//L"%s was attacked by a snake!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"把%s转变成资源",//L"Converted %s into resources", - L"枪械:",//L"Guns: ", - L"护具:",//L"Armour: ", - L"杂项:",//L"Misc: ", - - L"没有足够的志愿者参加民兵!",//L"There are no volunteers left for militia!", - L"没有足够的资源来训练民兵!",//L"Not enough resources to train militia!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s开始侵入。",//L"%s starts hacking.", - L"%s进入电脑,但没找到感兴趣的内容。",//L"%s accesses the computer, but finds nothing of interest.", - L"%s的技能不够,不足以攻入电脑。",//L"%s is not skilled enough to hack the computer.", - L"%s阅读了文件,但没找到新的内容。",//L"%s reads the file, but learns nothing new.", - - L"%s离开了这个,没有意义。",//L"%s can't make sense out of this.", - L"%s不能使用水龙头。",//L"%s couldn't use the watertap.", - L"%s买了一个%s。",//L"%s has bought a %s.", - L"%s没有足够的钱。那真让人难为情。",//L"%s doesn't have enough money. That's just embarassing.", - - L"%s使用水龙头喝水。",//L"%s drank from water tap", - L"这台机器看起来无法工作。", //L"This machine doesn't seem to be working.", -}; - -STR16 szLaptopStatText[] = -{ - L"威胁效率 %d\n", //L"threaten effectiveness %d\n", - L"领导能力 %d\n", //L"leadership %d\n", - L"对话修正 %.2f\n", //L"approach modifier %.2f\n", - L"背景修正 %.2f\n", //L"background modifier %.2f\n", - - L"+50 来源于自信 (其它) \n", //L"+50 (other) for assertive\n", - L"-50 来源于恶毒 (其它) \n", //L"-50 (other) for malicious\n", - L"好人", //L"Good Guy", - L"%s不愿过度使用暴力,并且拒绝攻击非敌对目标。", //L"%s eschews excessive violence and will refuse to attack non - hostiles.", - - L"友好对话", //L"Friendly approach", - L"直接对话", //L"Direct approach", - L"威胁对话", //L"Threaten approach", - L"招募对话", //L"Recruit approach", - - L"统计倒退数据。", //L"Stats will regress.", - L"快速", //L"Fast", - L"平均", //L"Average", - L"慢速", //L"Slow", - L"生命成长", //L"Health growth", - L"力量成长", //L"Strength growth", - L"敏捷成长", //L"Agility growth", - L"灵巧成长", //L"Dexterity growth", - L"智慧成长", //L"Wisdom growth", - L"枪法成长", //L"Marksmanship growth", - L"爆破成长", //L"Explosives growth", - L"领导成长", //L"Leadership growth", - L"医疗成长", //L"Medical growth", - L"机械成长", //L"Mechanical growth", - L"等级成长", //L"Experience growth", -}; - -STR16 szGearTemplateText[] = -{ - L"输入模版名称", //L"Enter Template Name", - L"无法在战斗中进行。", //L"Not possible during combat.", - L"所选佣兵不在这个区域。", //L"Selected mercenary is not in this sector.", - L"%s不在这个区域。", //L"%s is not in that sector.", - L"%s无法装备%s。", //L"%s could not equip %s.", - L"由于会损坏物品,无法安装%s(物品%d)。", //L"We cannot attach %s (item %d) as that might damage items.", -}; - -STR16 szIntelWebsiteText[] = -{ - L"侦察情报局", //L"Recon Intelligence Services", - L"你想要知道的情报", //L"Your need to know base", - L"情报需求", //L"Information Requests", - L"情报验证", //L"Information Verification", - - L"关于我们", //L"About us", - L"你拥有情报点数:%d点。", //L"You have %d Intel.", - L"我们现有下列情报信息,可使用情报点数交换:", //L"We currently have information on the following items, available in exchange for intel as usual:", - L"目前我们没有其他情报。", //L"There is currently no other information available.", - - L"%d点 - %s", //L"%d Intel - %s", - L"我们可以提供某一区域范围的空中侦察,持续到 %02d:00。", //L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"购买情报 50点", //L"Buy data - 50 intel", - L"购买详细情报 70点", //L"Buy detailed data - 70 Intel", - - L"选择你需要的区域范围:", //L"Select map region on which you want info on:", - - L"西北", //L"North-west", - L"西北偏北", //L"North-north-west", - L"东北偏北", //L"North-north-east", - L"东北", //L"North-east", - - L"西北偏西", //L"West-north-west", - L"中西北", //L"Center-north-west", - L"中东北", //L"Center-north-east", - L"东北偏东", //L"East-north-east", - - L"西南偏西", //L"West-south-west", - L"中西南", //L"Center-south-west", - L"中东南", //L"Center-south-east", - L"东南偏东", //L"East-south-east", - - L"西南", //L"South-west", - L"西南偏南", //L"South-south-west", - L"东南偏南", //L"South-south-east", - L"东南", //L"South-east", - - // about us - L"在“情报需求”页面,你可以购买敌占区情报。", //L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"情报内容包括:敌军巡逻队和兵营,特殊人员,敌军飞行器等。", //L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"某些情报具有时效性。", //L"Some of that information may be of temporary nature.", - L"在“情报验证”页面,你可以上传你搜集到的重要情报。", //L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"我们会验证该情报(这个过程通常需要几个小时)并给您相应的报酬。", //L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"请注意,如果情报受外部条件变化(如收集情报的人员死亡了),那么您收到的情报点数将会变少。", //L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"你可以上传以下情报:", //L"You can upload the following facts:", - L"上一个", //L"Previous", - L"下一个", //L"Next", - L"上传", //L"Upload", - - L"您已经收到以下情报的报酬:", //L"You have already received compensation for the following:", - L"没有情报可以上传。", //L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"没有敌军,%s不用继续潜伏!", //L"No more enemies present, %s is no longer in hiding!", - L"%s已经被敌军发现,还能躲藏%d小时。", //L"%s has been discovered and goes into hiding for %d hours.", - L"%s已经被敌军发现,请立刻前往该区域营救。", //L"%s has been discovered, going to sector!", - L"发现敌军将领\n", //L"Enemy general present\n", - - L"发现恐怖分子\n", //L"Terrorist present\n", - L"%s于%02d:%02d\n", //L"%s on %02d:%02d\n", - L"没有相关情报", //L"No data found", - L"情报已经失效。", //L"Data no longer eligible.", - - L"关于女王军的高级军官所在位置。", //L"Whereabouts of a high-ranking officer of the royal army.", - L"关于直升机的飞行计划。", //L"Flight plans of an airforce helicopter.", - L"关于最近友军被囚禁的所在地。", //L"Coordinates of a recently imprisoned member of your force.", - L"关于赏金逃犯的地点。", //L"Location of a high-value fugitive.", - - L"关于血猫可能会进攻哪个城镇的情报。", //L"Information on possible bloodcat attacks against settlements.", - L"关于僵尸可能会进攻哪个城镇的情报。", //L"Time and place of possible zombie attacks against settlements.", - L"关于土匪可能会袭击哪个城镇的情报。", //L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... 想象一下我突然出现的惊喜吧...", //L"... so imagine my surprise when suddenly...", - L"... 我有没有给你讲过这个故事...", //L"... and did I ever tell you the story of that one time...", - L"... 所以,最后,上校还是决定...", //L"... so, in conclusion, the colonel decided...", - L"... 告诉你,他们压根没看见...", //L"... tell you, they did not see that coming...", - - L"... 所以,不用想了...", //L"... so, without further consideration...", - L"... 但这时她说了...", //L"... but then SHE said...", - L"... 对了,说到美洲驼...", //L"... and, speaking of llamas...", - L"... 沙尘暴来袭时我正好在那里,当时...", //L"... there I was, in the middle of the dustbowl, when...", - - L"... 让我告诉你,这些事情很烦人...", //L"... and let me tell, those things chafe...", - L"... 他当时那脸色别提多难看了...", //L"... you should have seen his face...", - L"... 这不是我们最后看到的...", //L"... which wasn't the last of what we saw of them...", - L"... 这让我想到,我祖母总是说过...", //L"... which reminds me, my grandmother used to say...", - - L"... 顺便说一下,他是一个彻头彻尾的白痴...", //L"... who, by the way, is a total berk...", - L"... 并且,从源头上就大错特错了...", //L"... also, the roots were off by a margin...", - L"... 当时我就说,“滚开,异教徒!”...", //L"... and I was like, 'Back off, heathen!'...", - L"... 当时,主教们都开始公开叛教了...", //L"... at that point the vicars were in oben rebellion...", - - L"... 不是我介意,你知道,但是...", //L"... not that I would've minded, you know, but...", - L"... 如果不是因为那顶可笑的帽子...", //L"... if not for that ridiculous hat...", - L"... 再说,反正他也不怎么喜欢这条腿...", //L"... besides, it wasn't his favourite leg anyway...", - L"... 尽管这些船仍然是防水的...", //L"... even though the ships were still watertight...", - - L"... 尽管事实上长颈鹿无法做到这一点...", //L"... aside from the fact that giraffes can't do that...", - L"... 这叉子不是这么用的,注意...", //L"... totally wasted that fork, mind you...", - L"... 而且周围没有面包店。在那之后...", //L"... and no bakery in sight. After that...", - L"... 尽管在这方面有明确的规定...", //L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"哇。我不知道!", //L"Whoa. I had no idea!", - L"真的吗?", //L"Really?", - L"嗯...", //L"Uhhhh....", - L"嗯...你看,喔...", //L"Well... you see, uhh...", - - L"我不完全确定…", //L"I am not entirely sure that...", - L"我...嗯...", //L"I... well...", - L"我要是...", //L"If I could just...", - L"但是...", //L"But...", - - L"我无意打扰,但是...", //L"I don't mean to intrude, but...", - L"真的吗?我不清楚!", //L"Really? I had no idea!", - L"什么?全都是吗?", //L"What? All of it?", - L"不会吧!", //L"No way!", - - L"哈哈!", //L"Haha!", - L"哇,这些家伙不会相信我的!", //L"Whoa, the guys are not going to believe me!", - L"... 对,只要...", //L"... yeah, just...", - L"就跟那个算命的说的一样!", //L"That's just like the gypsy woman said!", - - L"... 是的,这就是为什么...", //L"... yeah, is that why...", - L"... 呵呵,说到翻新...", //L"... hehe, talk about refurbishing...", - L"... 是吧,我猜...", //L"... yeah, I guess...", - L"等等,啥?", //L"Wait. What?", - - L"... 不会介意看到...", //L"... wouldn't have minded seeing that...", - L"... 你这么一说我才想到...", //L"... now that you mention it...", - L"... 但是粉笔在哪呢...", //L"... but where did all the chalk go...", - L"... 从来没有考虑过...", //L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"训练新民兵", //L"Train new militia", - L"训练民兵", //L"Drill militia", - L"医疗民兵", //L"Doctor militia", - L"取消", //L"Cancel", -}; - -STR16 szFactoryText[] = -{ - L"%s: 的生产进程 %s 已因为忠诚度太低而被关闭。", //L"%s: Production of %s switched off as loyalty is too low.", - L"%s: 的生产进程 %s 已因为资金短缺而被关闭。", //L"%s: Production of %s switched off due to insufficient funds.", - L"%s: 的生产进程 %s 已因为缺少一个佣兵作为工作人员而被关闭。", //L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: 的生产进程 %s 已因为缺少必要的物品而被关闭。", //L"%s: Production of %s switched off due to required items missing.", - L" 制造列表 ", //(前空5格,后空10格) //L"Item to build", - - L"生产筹备 ", //(后空25格) //L"Preproducts", 5 - L"h/物品", //L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s 现在秘密的为我们工作!", //L"%s now secretly works for us!", - L"%s 不为我们的提议所动摇。对我们的怀疑度上升了...", //L"%s is not swayed by our offer. Suspicion against us rises...", - L"对我们的怀疑度很高。我们应该停止尝试转化更多的敌兵到我们的阵营,并在一段时间内保持低调。", //L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"直接招募 (%d)", //L"Recruit approach (%d)", - L"魅力引诱 (%d)", //L"Use seduction (%d)", - - L"行贿 ($%d) (%d)", //L"Bribe ($%d) (%d)", 5 - L"提供 %d 情报 (%d)", //L"Offer %d intel (%d)", - L"用什么方式来说服敌兵加入你的部队?", //L"How to convince the soldier to join your forces?", - L"执行", //L"Do it", - L"%d 变节者出现了", //L"%d turncoats present", -}; - -// rftr: better lbe tooltips -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE可用空间:", //L"MOLLE Space Available:", - L"MOLLE所需空间:", //L"MOLLE Space Required:", - L"MOLLE小包数量:", //L"MOLLE Small Slot Count:", - L"MOLLE中包数量:", //L"MOLLE Medium Slot Count:", - L"MOLLE包容量:小型", //L"MOLLE Pouch Size: Small", - L"MOLLE包容量:中型", //L"MOLLE Pouch Size: Medium", - L"MOLLE包容量:中型(液体)", //L"MOLLE Pouch Size: Medium (Hydration)", - L"腿包", //L"Thigh Rig", - L"背心", //L"Vest", - L"战斗包", //L"Combat Pack", - L"背包", //L"Backpack", - L"MOLLE包", //L"MOLLE Pouch", - L"兼容背包:", //L"Compatible backpacks:", - L"兼容战斗包:", //L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = -{ - L"国家总览", //L"National Overview", - L"地区总览", //L"Regional Overview", - L"任务总览", //L"Mission Overview", - L"选择区域:", //L"Select View:", - L"地区总览 (2)", //L"Regional (2)", - L"国家总览 (1)", //L"National (1)", - L"任务(3)", //L"Mission (3)", - L"物资:", //L"Supplies:", - L"后勤物资", //L"Incoming Supplies", - L"情报:", //L"Intel:", - L" /天", //L"/day", - L"当前项目", //L"Current Directive", - L"升级项目($%d)", //L"Improve Directive ($%d)", - L"升级所选项目将花费$%d。确认支付?", //L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"后勤物资或资金供应不足", //L"Insufficient funds.", - L"新项目将于00:00开始生效", //L"New directive will take effect at 00:00.", - L"民兵总览", //L"Militia Overview", - L"新兵:", //L"Green:", - L"正规军:", //L"Regular:", - L"精英:", //L"Elite:", - L"预计每日总数:", //L"Projected Daily Total:", - L"志愿者总数:", //L"Volunteer Pool:", - L"可用资源:", //L"Resources Available:", - L"枪支:", //L"Guns:", - L"防弹衣:", //L"Armour:", - L"杂物:", //L"Misc:", - L"训练费用:", //L"Training Cost:", - L"士兵每人每天维持费用:", //L"Upkeep Cost Per Soldier Per Day:", - L"训练速度加成:", //L"Training Speed Bonus:", - L"战斗加成:", //L"Combat Bonuses:", - L"装备加成:", //L"Physical Stats Bonus:", - L"枪法加成:", //L"Marksmanship Bonus:", - L"提升等级($%d)", //L"Upgrade Stats ($%d)", - L"提升民兵等级需要$%d。确认支付?", //L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"地区:", //L"Region:", - L"下一个", //L"Next", - L"上一个", //L"Previous", - L"指挥部:", //L"Administration Team:", - L"无", //L"None", - L"激活", //L"Active", - L"闲置", //L"Inactive", - L"忠诚度:", //L"Loyalty:", - L"最高忠诚度:", //L"Maximum Loyalty:", - L"部署指挥部(%d后勤物资)", //L"Deploy Administration Team (%d supplies)", - L"重新激活指挥部(%d后勤物资)", //L"Reactivate Administration Team (%d supplies)", - L"目前该地区部署指挥部不安全,你必须先打下至少一个城镇区域来扩展基地。", //L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"目前在Omerta不能进行区域行动。", //L"No regional actions available in Omerta.", - L"一旦你占领了至少一个城镇区域,指挥部就可以部署到其区域。一旦活跃起来,它们将能够扩大你在该地区的影响力和军事力量。然而,他们需要后勤物资来运作和制定政策。", //L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"请注意你选择的地区,制定区域政策将增加同一区域和全国(在较小程度上)其他政策的物资成本。", //L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"指挥部指令:", //L"Administrative Actions:", - L"建立 %s", //L"Establish %s", - L"升级 %s", //L"Improve %s", - L"当前:%d", //L"Current Tier: %d", - L"在该地区采取任何指挥部指令都会消耗%d后勤物资。", //L"Taking any administrative action in this region will cost %d supplies.", - L"情报传递站收益:%d", //L"Dead drop intel gain: %d", - L"走私贩提供收益:%d", //L"Smuggler supply gain: %d", - L"一小队民兵从附近的秘密基地加入了战斗! ", //L"A small group of militia from a nearby safehouse have joined the battle!", - L"通过给Omerta运送食物和物资,你已经得到反抗军的信任。并授权你访问他们的指挥系统,通过你的笔记本电脑访问A.R.C反抗军司令部网站。", //L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"目前恢复这里的指挥部并不安全。必须先夺回一个城镇区域。", //L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"突袭矿井成功。获取$%d。", //L"Mine raid successful. Stole $%d.", - L"没有足够的情报点数来策反敌人!", //L"Insufficient Intel to create turncoats!", - L"更改指令操作", //L"Change Admin Action", - L"取消", //L"Cancel", - L"确认", //L"Confirm", - L"<", //L"<", - L">", //L">", - L"更改此指令操作将花费$%d并重置。确认支出?", //L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"补给不足!管理操作已禁用。", //L"Insufficient supplies! Admin Actions have been DISABLED.", - L"每过%d小时可获得新任务。", //L"New missions will be available every %d hours.", - L"A.R.C网站上已有新任务可以获取。", //L"New missions are available at the A.R.C. website.", - L"任务准备工作进行中。", //L"Mission preparations in progress.", - L"任务持续时间:%d天", //L"Mission duration: %d days", - L"成功率:%d%s", //L"Chance of success: %d%s", - L"[编辑]", //L"[REDACTED]", - L"姓名:%s", //L"Name: %s", - L"地址:%s", //L"Location: %s", - L"分配任务:%s", //L"Assignment: %s", - L"合同:%d天", //L"Contract: %d days", - L"合同:%d小时", //L"Contract: %d hours", - L"合同:---", //L"Contract: ---", - L"代理奖金:", //L"Agent bonus:", - L"成功率+%d%s (%s)", //L"Chance of success +%d%s (%s)", - L"部署范围+%d (%s)", //L"Deployment range +%d (%s)", - L"ASD收入-%2.0f%s (%s)", //L"ASD Income -%2.0f%s (%s)", - L"偷窃燃料;发送至%s (%s)", //L"Steal fuel; send to %s (%s)", - L"销毁储存单位(%s)", //L"Destroy reserve units (%s)", - L"时间+%2.0f%s (%s)", //L"Time +%2.0f%s (%s)", - L"视野-%2.0f%s (%s)", //L"Vision -%2.0f%s (%s)", - L"装备质量-%d (%s)", //L"Gear quality -%d (%s)", - L"总体统计-%d (%s)", //L"Overall stats -%d (%s)", - L"训练人数上限:%d (%s)", //L"Max trainers: %d (%s)", - L"支付+%2.0f%s (%s)", //L"Payout +%2.0f%s (%s)", - L"支付限额增加到$%d (%s)", //L"Payout limit increased to $%d (%s)", - L"军官奖励(%s)", //L"Bonus for officers (%s)", - L"车辆奖励(%s)", //L"Bonus for vehicles (%s)", - L"持续时间+%d小时(%s)", //L"Duration +%d hours (%s)", - L"特工不在城镇", //L"Agent not in town", - L"城镇忠诚度太低", //L"Town loyalty too low", - L"特工不可用", //L"Agent unavailable", - L"特工合同到期", //L"Agent contract expiring", - L"无法使用反抗军特工", //L"Can't use rebel agent", - L"战斗进行中", //L"Battle in progress", - L"准备任务(%d补给)", //L"Prepare Mission (%d supplies)", - L"查看当前任务结果", //L"View active mission effects", - L"查看可用任务列表", //L"View available mission list", - L"你可以做准备展示的两个任务之一,一旦派遣特工成功,他们将在大约%d小时内不可用,然后再次可用。任务准备完成时,会有弹窗提醒,任务效果将变为有效。", //L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"一名抵抗军特工可以前去准备这个任务,但是使用佣兵的话效果会更好。他们的等级和技能可以带来额外的任务奖励。", //L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"任务准备的花销将根据同时准备或激活的其它任务数量有所增加。", //L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"新的任务将在%d日00:00可用。", //L"New missions will be available on Day %d at 00:00.", - L"激活的任务:", //L"Active missions:", - L"%s - 准备中 - 就绪时间:%d日,%02d:%02d", //L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - 生效 - 过期时间:%d日,%02d:%02d", //L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d补给)]", //L"[%s (%d supplies)]", - L"%s派遣一名反抗军特工去准备这个任务?", //L"%s Send a rebel agent to prepare this mission?", - L"%s派遣%s去准备这个任务?他将会在大致%d小时后返回。", //L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s派遣%s去准备这个任务?她将会在大致%d小时后返回。", //L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"任务\"%s\"生效中。", //L"Mission \"%s\" is now in effect.", - L"任务\"%s\"准备失败。", //L"Preparations for mission \"%s\" failed.", - L"任务\"%s\"已经过期,不再生效。", //L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = -{ - L"|物|资\n \n食物、水、医疗用品、武器以及任何\n反抗军认为有用的物资。反抗军会自动收集。", //L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|后|勤|物|资\n \n反抗军每天都会自动收集物资。当你\n占领更多的城镇时,他们每天能够\n找到的物资补给量将会增加。\n \n+%d (基础收入)", //L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|当|前|项|目\n \n你可以选择反抗军优先进行的战略目标。\n当你选定好战略目标时,新的项目指令将生效。", //L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|指|挥|部\n \n指挥部一旦部署,就会负责处理\n该区域内的日常事务。包括支持当地人,制造\n反抗宣传,制定地区政策等等。", //L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|忠|诚|度\n \n许多行政命令的有效性取决于\n该地区的忠诚度,提高忠诚度\n能得到最大利益化。", //L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|最|高|忠|诚|度\n \n你需要说服当地人完全信任你。这可以\n通过为他们建立物资供应来实现,表明\n你打算改善他们的生活质量。", //L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"该管理行动只会作用到城镇区域。", //L"This Admin Action applies its bonus to town sectors only.", - L"该管理行动会作用到城镇区域。\n和直接相邻的区域。", //L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"该管理行动会作用到城镇区域。\n1级覆盖周边1个区域。\n2级覆盖周边2个区域。", //L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"该管理行动会作用到城镇区域。\n1级覆盖周边2个区域。\n2级覆盖周边3个区域。", //L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = -{ - L"补给线", //L"Supply Line", - L"向当地人分发生活必需品。增加最大地区忠诚度。", //L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"反抗军电台", //L"Rebel Radio", - L"开始在该地区播放反抗军公共广播。城镇每天都会获得忠诚度。", //L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"秘密基地", //L"Safehouses", - L"在乡下建造反抗军的秘密基地,远离窥探者的目光。当你在这个地区作战时,会有额外的民兵加入战斗。", //L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"后勤干扰", //L"Supply Disruption", - L"反抗军将以敌方的后勤线路为目标,干扰敌人在该地区的活动。在这个地区的敌人会被削弱。", //L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"侦察巡逻队", //L"Scout Patrols", - L"开始定期侦察巡逻,监视该地区的敌对活动。敌人会在离城镇更远的地方被发现。", //L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"情报传递站", //L"Dead Drops", - L"为反抗军侦察员和渗透者设立情报站,以传递情报。提供日常情报工作。", //L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"走私团队", //L"Smugglers", - L"争取走私贩的帮助,为反抗军提供物资。可使每日物资得到增加。", //L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"民兵武器库", //L"Militia Warehouses", - L"在偏远地区建造仓库,让反抗军为民兵储备武器。提供每日民兵资源。", //L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"税务局", //L"Regional Taxes", - L"从当地人那里筹集资金来帮助你。增加每日收入,但地区忠诚度会逐日下降。", //L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"民间援助", //L"Civilian Aid", - L"指派一些反抗军直接协助和支持该地区的平民。增加每天志愿者的总数。", //L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"私人佣兵团", //L"Merc Support", - L"建立直接支持你的雇佣兵设施。增加雇佣兵工作的效率(医疗,修理,民兵训练等)", //L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"矿产管理", //L"Mining Policy", - L"进口更好的设备,与镇上的矿工合作,作出更平衡、更有效的排班表。增加城镇矿产的收入。", //L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"探路者", //L"Pathfinders", - L"当地人会引导您的队伍通过该地区。大大减少徒步行军时间。", //L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"鹞式战机", //L"Harriers", - L"反抗军骚扰附近的敌军,大大增加他们在该地区的行军时间。", // - L"防御工事", //L"Fortifications", - L"建立杀伤区和防御阵地。友军在这个城镇战斗时更有效。仅限于自动战斗。", //L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = -{ - L"收集物资", //L"Gather Supplies", - L"每日额外获得%.0f后勤物资。", //L"Gain an additional %.0f supplies per day.", - L"从有同情心的当地人那里积累物资,并向\n国际救援组织寻求援助,以增加每日后勤供应。", //L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"升级此项将增加反抗军每日收集物资的数量。", //L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"支援民兵", //L"Support Militia", - L"减少民兵每日维护费用。 民兵每日维护费用调整:%.2f。", //L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"反抗军会帮你解决训练民兵\n后勤问题,减轻你的钱包负担。", //L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"升级此项将会减少民兵的日常维护成本。", //L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"训练民兵", //L"Train Militia", - L"降低民兵训练成本,提高民兵训练速度。 民兵训练费用调整:%.2f。 民兵训练速度调整:%.2f。", //L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"当你训练民兵时,反抗军会协助你,提高训练效率。", //L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"升级此项将进一步降低训练成本和提高训练速度。", //L"Improving this directive will further reduce training cost and increase training speed.", - L"宣传活动", //L"Propaganda Campaign", - L"城镇的忠诚度上升得更快。 忠诚加值修正值:%.2f。", //L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"对当地人美化你的胜利和功绩。", //L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"升级此项将提高城镇忠诚度的上升速度。", //L"Improving this directive will increase how quickly town loyalty rises.", - L"部署精兵", //L"Deploy Elites", - L"Omerta每天出现%.0f精锐民兵。", //L"%.0f elite militia appear in Omerta each day.", - L"反抗军将一小部分训练有素的部队交给你指挥。", //L"The rebels release a small number of their highly-trained forces to your command.", - L"升级此项将会增加每天训练的民兵数量。", //L"Improving this directive will increase the number of militia that appear each day.", - L"打击重点目标", //L"High Value Target Strikes", - L"敌军不太可能有重点目标,除了女王。", //L"Enemy groups are less likely to have specialised soldiers.", - L"对敌军进行外科手术式打击。\n军官、医务人员、无线电操作员和其他专家\n都是重点打击目标。", //L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"升级此项将使打击目标更加成功和有效。", //L"Improving this directive will make strikes more successful and effective.", - L"侦查小队", //L"Spotter Teams", - L"在战斗中,敌人的大致位置会显示在战术地图上(在战术界面中按INSERT键)", //L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"每支部队都有一个侦查小队,在战斗中\n提供敌人的大致位置。", //L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"升级此项将会使敌人的位置更精确。", //L"Improving this directive will make the locations of unspotted enemies more precise.", - L"突袭矿井", //L"Raid Mines", - L"从不受你控制的矿井获取一些收入。当你占领该矿井时,这个指令就没多大用处了。", //L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"突袭敌方矿井。虽然不是次次成功,一旦\n成功了,多多少少会为你增加少量的收入。", //L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"升级此项将会增加突袭矿井收入的最大值。", //L"Improving this directive will increase the maximum value of stolen income.", - L"策反敌军", //L"Create Turncoats", - L"每天随机在敌人队伍中策反%.0f名士兵。 每天消耗%.1f情报点数。", //L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"通过贿赂、威胁和勒索,说服敌军士兵\n背叛他们的军队并为你工作。", //L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"升级此项将会增加每天士兵人数。", //L"Improving this directive will increase the number of soldiers turned daily.", - L"征召平民", //L"Draft Civilians", - L"每天获得%.0f名志愿者。所有城镇每天都会失去一些忠诚度。", //L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"征召平民作为民兵新兵。不过民众\n可能不会对此感到高兴。随着您\n占领更多城镇,效率会提高。", //L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"升级此项将会增加每天志愿者人数。", //L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"深入部署", //L"Deep Deployment", - L"协同行动,悄悄地抵进敌军,但是要小心:这可能会让你部署在劣势区域。当进攻敌军部队时,部署区会更大。", //L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"扰乱ASD", //L"Disrupt ASD", - L"破坏Arulco特种部门(ASD)的日常行动。临时阻止ASD部署更多的机械化单位,并且大幅度降低他们的每日收入。", //L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"伪造运输订单", //L"Forge Transport Orders", - L"创建一个虚假的运输请求,敌方的运输队就会在这个地点位置集合。", //L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"战略情报", //L"Strategic Intel", - L"侦听敌人,发现敌军的攻击目标。当在战略地图上观察队伍时,敌军优先进攻的目标区域会被标红。", //L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"强化本地商店", //L"Improve Local Shops", - L"为商人们建立横跨国家的渠道,让他们更方便进到好货。商店将会出售更好的物资。", //L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"减缓战略决策", //L"Slow Strategic Decisions", - L"在敌人的高级指挥层中散布迷惑性和误导性消息。使得敌人会花更长时间进行战略层面的决策。", //L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"降低战备程度", //L"Lower Readiness", - L"戏弄敌军士兵,让他们的警惕性下降。在因为佣兵行动进入警戒前,敌军士兵的视距下降。", //L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"破坏装备", //L"Sabotage Equipment", - L"袭扰敌军的补给线,阻止敌军维护他们的装备。敌军士兵将会使用比平时更糟的装备。", //L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"破坏载具", //L"Sabotage Vehicles", - L"破坏敌军的载具维护中心,削弱他们的战斗效能和战备度。遭遇到的敌军载具状态下降。", //L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"输送补给", //L"Send Supplies", - L"临时增加对这个城镇的直接援助。城镇忠诚度会在任务期间被动提升。", //L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"士兵悬赏(Kingpin)", //L"Soldier Bounties (Kingpin)", - L"杀敌以获得资金奖励。和Kingpin谈谈,他感觉可以利用你的存在来削弱女王的权威。奖金会在午夜存入你的账户,每天最多$%d。", //L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"在城镇外任意地区训练民兵", //L"Train Militia Anywhere", - L"野外训练区是可以快速设立和拆毁的。民兵可以在城镇外的非交战区接受训练。", //L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = -{ - L"已经安装在机器人身上的武器不能替换。", //L"The robot's installed weapon cannot be changed.", - L"机器人的武器不能安装附件。", //L"It is not possible to add attachments to the robot's weapon.", - L"武器已安装", //L"Installed Weapon", - L"装填弹药", //L"Reserve Ammo", - L"瞄准更新", //L"Targeting Upgrade", - L"底座更新", //L"Chassis Upgrade", - L"功能更新", //L"Utility Upgrade", - L"存储仓", //L"Storage", - L"没有效果", //L"No Bonus", - L"激光附件效果应用到机器人。", //L"The laser bonuses of this item are applied to the robot.", - L"夜视仪效果应用到机器人。", //L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"配套工具应用于机器人的武器。", //L"This kit degrades instead of the robot's weapon.", - L"机器人的配套工具耐久耗尽!", //L"The robot's cleaning kit was depleted!", - L"机器人相邻的地雷会自动插旗。", //L"Mines adjacent to the robot are automatically flagged.", - L"战斗过程定期使用金属探测器。不需要电池。", //L"Periodic X-Ray scans during combat. No batteries required.", - L"机器人已经激活金属探测器!", //L"The robot has activated an x-ray scan!", - L"机器人可以使用无线电通信设备。", //L"The robot can use the radio set.", - L"机器人的底座加强,将带来更好的战斗表现。", //L"The robot's chassis is strengthened, giving it better combat performance.", - L"伪装效果应用到机器人。", //L"The camouflage bonuses of this item are applied to the robot.", - L"机器人更加坚固,降低伤害。", //L"The robot is tougher and takes less damage.", - L"机器人的额外装甲破坏了!", //L"The robot's extra armour plating was destroyed!", - L"机器人附加%s技能效果。", //L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //CHINESE +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("CHINESE") + + #if defined( CHINESE ) + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_ChineseText_public_symbol(void){;} + +#if defined( CHINESE ) + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; + +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"地点", //0 //L"Locations", + L"人物", //L"Characters", + L"物品", //L"Items", + L"任务", //L"Quests", + L"菜单5", //L"Menu 5", + L"菜单6", //5 //L"Menu 6", + L"菜单7", //L"Menu 7", + L"菜单8", //L"Menu 8", + L"菜单9", //L"Menu 9", + L"菜单10", //L"Menu 10", + L"菜单11", //10 //L"Menu 11", + L"菜单12", //L"Menu 12", + L"菜单13", //L"Menu 13", + L"菜单14", //L"Menu 14", + L"菜单15", //L"Menu 15", + L"菜单15", // 15 //L"Menu 15", + + //Briefing Room + L"进入", //L"Enter", +}; + +STR16 pOtherButtonsText[] = +{ + L"简报", //L"Briefing", + L"接受", //L"Accept", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"简报", //L"Briefing", + L"接受任务", //L"Accept missions", +}; + + +STR16 pLocationPageText[] = +{ + L"上一页", //L"Prev page", + L"照片", //L"Photo", + L"下一页", //L"Next page", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"主页面", //L"Main page", + L">>", + L"类型: ", //L"Type: ", + L"空白数据", //L"Empty data", + L"该任务尚未定义。将任务代码放到这里:TableData\\BriefingRoom\\BriefingRoom.xml。 首个任务必须可见,定义值Hidden = 0为可见。", //L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", + L"简报室。请点击 '进入' 按钮", //L"Briefing Room. Please click the 'Enter' button.", +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"未知", //0 //L"Unknown", + L"城市", //1 //L"City", + L"SAM导弹基地", //2 //L"SAM Site", + L"其它位置", //3 //L"Other Location", + L"矿场", //4 //L"Mine", + L"军事设施", //5 //L"Military Complex", + L"研究设施", //6 //L"Laboratory Complex", + L"工厂设施", //7 //L"Factory Complex", + L"医院", //8 //L"Hospital", + L"监狱", //9 //L"Prison", + L"机场", //10 //L"Airport", +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"全部显示", //L"Show All", + L"显示AIM成员", //L"Show AIM", + L"显示MERC成员", //L"Show MERC", + L"显示RPC", //L"Show RPC", + L"显示NPC", //L"Show NPC", + L"显示车辆", //L"Show Vehicle", + L"显示IMP", //L"Show IMP", + L"显示EPC", //L"Show EPC", + L"过滤", //L"Filter", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"全部", //L"All", + L"AIM", //L"AIM", + L"MERC", //L"MERC", + L"RPC", //L"RPC", + L"NPC", //L"NPC", + L"车辆", //L"Veh.", + L"IMP", //L"IMP", + L"EPC", //L"EPC", + L"过滤", //L"Filter", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"全部显示", //L"Show All", + L"显示城市", //L"Show City", + L"显示SAM导弹基地", //L"Show SAM Site", + L"显示其它区域", //L"Show Other Location", + L"显示矿场", //L"Show Mine", + L"显示军事设施", //L"Show Military Complex", + L"显示研究设施", //L"Show Laboratory Complex", + L"显示工厂设施", //L"Show Factory Complex", + L"显示医院", //L"Show Hospital", + L"显示监狱", //L"Show Prison", + L"显示机场", //L"Show Airport", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"全部", //L"All", + L"城市", //L"City", + L"SAM", //L"SAM", + L"其它", //L"Other", + L"矿场", //L"Mine", + L"军事", //L"Mil.", + L"研究所", //L"Lab.", + L"工厂", //L"Fact.", + L"医院", //L"Hosp.", + L"监狱", //L"Prison", + L"机场", //L"Air.", +}; + +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"全部",//All + L"城市",//City + L"SAM",//SAM + L"矿场",//Mine + L"机场",//Airport + L"荒野", + L"地下", + L"设施", + L"其它",//Other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"显示全部",//Show all + L"显示城市",//Show Cities + L"显示SAM",//Show SAM + L"显示矿场",//Show mines + L"显示机场",//Show airports + L"显示荒野", + L"显示地下分区", + L"显示有设施的分区\n|左|键开启,|右|键关闭", + L"显示其它分区", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; + +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"全部",//All + L"A.I.M", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"其它",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"显示全部",//Show all + L"显示A.I.M成员", + L"显示M.E.R.C成员", + L"显示反抗军", + L"显示不可雇佣角色", + L"显示玩家创建角色", + L"显示其他角色\n|左|键开启,|右|键关闭", +}; + +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"车辆",//vehicles + L"机器",//electronic chars + L"",//reserved. Insert new Other filters above! +}; + +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"全部",//All + L"枪械", + L"弹药", + L"护具", + L"携具", + L"附件", + L"杂物",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"显示全部",//Show all + L"显示枪械\n|左|键开启,|右|键关闭", + L"显示弹药\n|左|键开启,|右|键关闭", + L"显示护具\n|左|键开启,|右|键关闭", + L"显示携行具\n|左|键开启,|右|键关闭", + L"显示附件\n|左|键开启,|右|键关闭", + L"显示其它物品\n|左|键开启,|右|键关闭", +}; + +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"手枪", + L"自动手枪", + L"冲锋枪", + L"步枪", + L"狙击步枪", + L"突击步枪", + L"机枪", + L"霰弹枪", + L"重武器", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"手枪", + L"自动手枪", + L"冲锋枪", + L"步枪", + L"狙击步枪", + L"突击步枪", + L"机枪", + L"霰弹枪", + L"重武器", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"头盔", + L"胸甲", + L"护腿", + L"插板", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"贴身", + L"背心", + L"战斗包", + L"背包", + L"口袋", + L"其它", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"瞄准", + L"侧件", + L"枪口", + L"外部", + L"内部", + L"其它", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"刀具", + L"飞刀", + L"钝器", + L"手雷", + L"炸弹", + L"医疗箱", + L"工具箱", + L"面具", + L"其它", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; + +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"全部",//All + L"进行中", + L"已完成", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"显示全部",//Show all + L"显示正在进行的任务", + L"显示已经完成的任务", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"全部", //0 //L"All", + L"枪械", //L"Gun", + L"弹药", //L"Ammo", + L"携行具", //L"LBE", + L"杂货", //L"Misc", + + L"显示全部", //5 //L"Show All", + L"显示枪械", //L"Show Gun", + L"显示弹药", //L"Show Ammo", + L"显示携行具", //L"Show LBE Gear", + L"显示杂货", //L"Show Misc", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"重武器", //L"Heavy", + L"手枪", //L"Pistol", + L"自动手枪", //L"M. Pist.", + L"冲锋枪", //L"SMG", + L"步枪", //L"Rifle", + L"狙击枪", //L"S. Rifle", + L"突击步枪", //L"A. Rifle", + L"机枪", //L"MG", + L"霰弹枪", //L"Shotg.", + + // Ammo + L"手枪", //L"Pistol", + L"自动手枪", //10 //L"M. Pist.", + L"冲锋枪", //L"SMG", + L"步枪", //L"Rifle", + L"狙击枪", //L"S. Rifle", + L"突击步枪", //L"A. Rifle", + L"机枪", //L"MG", + L"霰弹枪", //L"Shotg.", + + // Used + L"枪械", //L"Gun", + L"护甲", //L"Armor", + L"携行具", //L"LBE Gear", + L"杂货", //20 //L"Misc", + + // Armour + L"头盔", //L"Helmet", + L"防弹衣", //L"Vest", + L"作战裤", //L"Legging", + L"防弹板", //L"Plate", + + // Misc + L"刀具", //L"Blade", + L"飞刀", //L"Th. Kn.", + L"格斗", //L"Blunt", + L"手雷等", //L"Grena.", + L"炸药", //L"Bomb", + L"医疗", //30 //L"Med.", + L"工具", //L"Kit", + L"面部设备", //L"Face", + L"携行具", //L"LBE", + L"其它", //34 //L"Misc", +}; + +STR16 QuestDescText[] = +{ + L"送信",//L"Deliver Letter", + L"食物补给线",//L"Food Route", + L"恐怖分子",//L"Terrorists", + L"Kingpin的圣杯 ",//L"Kingpin Chalice", + L"Kingpin的黑钱",//L"Kingpin Money", + L"逃走的Joey",//L"Runaway Joey", + L"拯救Maria",//L"Rescue Maria", + L"Chitzena圣杯",//L"Chitzena Chalice", + L"被困在Alma",//L"Held in Alma", + L"审讯",//L"Interogation", + + L"乡巴佬的问题",//L"Hillbilly Problem", //10 + L"找到科学家",//L"Find Scientist", + L"送摄像机",//L"Deliver Video Camera", + L"血猫",//L"Blood Cats", + L"找到Hermit",//L"Find Hermit", + L"异形",//L"Creatures", + L"找到直升机飞行员",//L"Find Chopper Pilot", + L"护送SkyRider",//L"Escort SkyRider", + L"解救Dyname",//L"Free Dynamo", + L"护送游客",//L"Escort Tourists", + + + L"Doreen",//L"Doreen", //20 + L"关于皮革商店的梦想",//L"Leather Shop Dream", + L"护送Shank",//L"Escort Shank", + L"没有23",//L"No 23 Yet", + L"没有24",//L"No 24 Yet", + L"杀死Deidranna",//L"Kill Deidranna", + L"没有26",//L"No 26 Yet", + L"没有27",//L"No 27 Yet", + L"没有28",//L"No 28 Yet", + L"没有29",//L"No 29 Yet", +}; + +STR16 FactDescText[] = +{ + L"Omerta被解放了",//L"Omerta Liberated", + L"Drassen被解放了",//L"Drassen Liberated", + L"Sanmona被解放了",//L"Sanmona Liberated", + L"Cambria被解放了",//L"Cambria Liberated", + L"Alma被解放了",//L"Alma Liberated", + L"Grumm被解放了",//L"Grumm Liberated", + L"Tixa被解放了",//L"Tixa Liberated", + L"Chitzena被解放了",//L"Chitzena Liberated", + L"Estoni被解放了",//L"Estoni Liberated", + L"Balime被解放了",//L"Balime Liberated", + + L"Orta被解放了",//L"Orta Liberated", //10 + L"Meduna被解放了",//L"Meduna Liberated", + L"Pacos走近了",//L"Pacos approched", + L"Fatima阅读了信件",//L"Fatima Read note", + L"Fatima从佣兵身边离开",//L"Fatima Walked away from player", + L"Dimitri死了",//L"Dimitri (#60) is dead", + L"Fatima回应了Dimitri的惊讶",//L"Fatima responded to Dimitri's supprise", + L"Carlo喊道'都不许动'",//L"Carlo's exclaimed 'no one moves'", + L"Fatima描述了信件",//L"Fatima described note", + L"Fatima到达最终目的地",//L"Fatima arrives at final dest", + + L"Dimitri说Fatima有证据",//L"Dimitri said Fatima has proof", //20 + L"Miguel听到了对话",//L"Miguel overheard conversation", + L"Miguel要看信件",//L"Miguel asked for letter", + L"Miguel阅读了信件",//L"Miguel read note", + L"Ira在Miguel阅读信件时发表意见",//L"Ira comment on Miguel reading note", + L"反抗军是敌人",//L"Rebels are enemies", + L"把信交给Fatima之前与Fatima对话",//L"Fatima spoken to before given note", + L"开始Drassen任务",//L"Start Drassen quest", + L"Miguel安排了Ira",//L"Miguel offered Ira", + L"Pacos受伤了/被杀死了",//L"Pacos hurt/Killed", + + L"Pacos在A10区域",//L"Pacos is in A10", //30 + L"目前区域安全",//L"Current Sector is safe", + L"Bobby R的包裹在路上",//L"Bobby R Shpmnt in transit", + L"Bobby R的包裹到达Drassen",//L"Bobby R Shpmnt in Drassen", + L"33是TRUE,包裹在不到2小时之前到达",//L"33 is TRUE and it arrived within 2 hours", + L"33是TRUE,34是False,包裹到达时刻距现在已经超过2小时",//L"33 is TRUE 34 is false more then 2 hours", + L"佣兵发现部分包裹丢失了",//L"Player has realized part of shipment is missing", + L"36是TRUE,Pablo被佣兵伤害了",//L"36 is TRUE and Pablo was injured by player", + L"Pablo承认偷窃",//L"Pablo admitted theft", + L"Pablo返还货物,设置37为False",//L"Pablo returned goods, set 37 false", + + L"Miguel将会加入团队",//L"Miguel will join team", //40 + L"给Pablo一些钱",//L"Gave some cash to Pablo", + L"Skyrider正在被护送中",//L"Skyrider is currently under escort", + L"Skyrider接近Drassen的直升机",//L"Skyrider is close to his chopper in Drassen", + L"Skyrider解释了交易",//L"Skyrider explained deal", + L"佣兵在地图屏幕上点击了直升机至少一次",//L"Player has clicked on Heli in Mapscreen at least once", + L"欠了NPC的钱",//L"NPC is owed money", + L"NPC受伤了",//L"Npc is wounded", + L"NPC被佣兵伤害了",//L"Npc was wounded by Player", + L"将食物短缺的情况告知了J.Walkder神父",//L"Father J.Walker was told of food shortage", + + L"Ira不在这个区域",//L"Ira is not in sector", //50 + L"Ira在说话中",//L"Ira is doing the talking", + L"寻找食物任务完成",//L"Food quest over", + L"Pable从最近的货物中偷了些东西",//L"Pablo stole something from last shpmnt", + L"最近的货物损坏了",//L"Last shipment crashed", + L"最近的货物被发到了错误的机场",//L"Last shipment went to wrong airport", + L"自从得知货物被发到了错误的机场,24小时过去了",//L"24 hours elapsed since notified that shpment went to wrong airport", + L"丢失的包裹到达,但是(某些)货物损坏了, 把 56 设成 False",//L"Lost package arrived with damaged goods. 56 to False", + L"丢失的包裹永久丢失, 把 56 设成 False",//L"Lost package is lost permanently. Turn 56 False", + L"下一个包裹可能(随机)丢失",//L"Next package can (random) be lost", + + L"下一个包裹可能(随机)被延误",//L"Next package can(random) be delayed", //60 + L"包裹是中等尺寸的",//L"Package is medium sized", + L"包裹是大尺寸的",//L"Package is largesized", + L"Doreen有良心",//L"Doreen has conscience", + L"佣兵对Gordon说话",//L"Player Spoke to Gordon", + L"Ira仍然是NPC,位于A10-2区域(尚未加入)",//L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo要求急救",//L"Dynamo asked for first aid", + L"Dynamo可以被招聘",//L"Dynamo can be recruited", + L"NPC在流血",//L"Npc is bleeding", + L"Shank想加入",//L"Shank wnts to join", + + L"NPC在流血",//L"NPC is bleeding", //70 + L"佣兵队伍有通缉犯的头 & Carmen在San Mona",//L"Player Team has head & Carmen in San Mona", + L"佣兵队伍有通缉犯的头 & Carmen在Cambria",//L"Player Team has head & Carmen in Cambria", + L"佣兵队伍有通缉犯的头 & Carmen在Drassen",//L"Player Team has head & Carmen in Drassen", + L"神父喝醉了",//L"Father is drunk", + L"佣兵伤害了在NPC身边8个格子内的佣兵",//L"Player has wounded mercs within 8 tiles of NPC", + L"NPC身边8个格子内只有1个佣兵受伤",//L"1 & only 1 merc wounded within 8 tiles of NPC", + L"NPC身边8个格子内有多于1个佣兵受伤",//L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda在商店中",//L"Brenda is in the store ", + L"Brenda死了",//L"Brenda is Dead", + + L"Brenda在家",//L"Brenda is at home", //80 + L"NPC是敌人",//L"NPC is an enemy", + L"扩音器音量>=84,<3个男性出现",//L"Speaker Strength >= 84 and < 3 males present", + L"扩音器音量>=84,和至少3名男性",//L"Speaker Strength >= 84 and at least 3 males present", + L"Hans引荐了Tony",//L"Hans lets ou see Tony", + L"Hans正站在 13523",//L"Hans is standing on 13523", + L"Tony今天不在",//L"Tony isnt available Today", + L"妓女在和NPC说话",//L"Female is speaking to NPC", + L"佣兵很享受妓院",//L"Player has enjoyed the Brothel", + L"Carla有空",//L"Carla is available", + + L"Cindy有空",//L"Cindy is available", //90 + L"Bambi有空",//L"Bambi is available", + L"没有小姐有空",//L"No girls is available", + L"佣兵在等小姐",//L"Player waited for girls", + L"佣兵付了钱",//L"Player paid right amount of money", + L"佣兵从小混混身边走过",//L"Mercs walked by goon", + L"NPC身边3个格子内有多于1个佣兵",//L"More thean 1 merc present within 3 tiles of NPC", + L"NPC身边3个格子内至少有1个佣兵",//L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping等待佣兵的拜访",//L"Kingping expectingh visit from player", + L"Darren等待佣兵付钱",//L"Darren expecting money from player", + + L"佣兵在5格内,NPC可见",//L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen在San Mona",//L"Carmen is in San Mona", + L"佣兵对Carmen说话",//L"Player Spoke to Carmen", + L"Kingpin知道自己的钱被偷了",//L"KingPin knows about stolen money", + L"佣兵把钱还给了KingPin",//L"Player gave money back to KingPin", + L"给了Frank钱(不是去买酒)",//L"Frank was given the money ( not to buy booze )", + L"佣兵被告知KingPin看拳击比赛",//L"Player was told about KingPin watching fights", + L"过了俱乐部的关门时间,Darren警告佣兵(每天重置)",//L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey是EPC",//L"Joey is EPC", + L"Joey在C5",//L"Joey is in C5", + + L"Joey在Martha(109)的5格内,G8区域",//L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey死了",//L"Joey is Dead!", + L"至少有一个佣兵在Martha身边的5格内",//L"At least one player merc within 5 tiles of Martha", + L"Spike站在9817格",//L"Spike is occuping tile 9817", + L"Angel提供了背心",//L"Angel offered vest", + L"Angel卖了背心",//L"Angel sold vest", + L"Maria是EPC",//L"Maria is EPC", + L"Maria是EPC,在皮革店里",//L"Maria is EPC and inside leather Shop", + L"佣兵想买背心",//L"Player wants to buy vest", + L"营救Maria被KingPin的狗腿子发现了,Kingpin现在是敌人了",//L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel把契约留在了柜台上",//L"Angel left deed on counter", //120 + L"Maria任务结束",//L"Maria quest over", + L"佣兵今天对NPC进行了包扎",//L"Player bandaged NPC today", + L"Doreen展现了对女皇的忠诚",//L"Doreen revealed allegiance to Queen", + L"Pablo不应该偷佣兵的东西",//L"Pablo should not steal from player", + L"佣兵的货物到了,但因忠诚度过低而被迫运离",//L"Player shipment arrived but loyalty to low, so it left", + L"直升机待命中",//L"Helicopter is in working condition", + L"佣兵给予的金钱>=1000美金",//L"Player is giving amount of money >= $1000", + L"佣兵给予的金钱<1000美金",//L"Player is giving amount less than $1000", + L"Waldo同意修理直升机(直升机已损坏)",//L"Waldo agreed to fix helicopter( heli is damaged )", + + L"直升机已被摧毁",//L"Helicopter was destroyed", //130 + L"Waldo告诉我们关于直升机飞行员的事情",//L"Waldo told us about heli pilot", + L"神父告诉我们Deidranna在屠杀生病的人们",//L"Father told us about Deidranna killing sick people", + L"神父告诉我们Chivaldori一家的事情",//L"Father told us about Chivaldori family", + L"神父告诉我们关于异形的事情",//L"Father told us about creatures", + L"忠诚度一般",//L"Loyalty is OK", + L"忠诚度低",//L"Loyalty is Low", + L"忠诚度高",//L"Loyalty is High", + L"佣兵做的很糟糕",//L"Player doing poorly", + L"佣兵把通缉犯的头颅给了Carmen",//L"Player gave valid head to Carmen", + + L"目前的区域是G9(Cambria)",//L"Current sector is G9(Cambria)", //140 + L"目前的区域是C5(SanMona)",//L"Current sector is C5(SanMona)", + L"目前的区域是C13(Drassen)",//L"Current sector is C13(Drassen", + L"Carmen带了至少10000美金",//L"Carmen has at least $10,000 on him", + L"Slay加入佣兵团队超过48小时",//L"Player has Slay on team for over 48 hours", + L"Carmen在怀疑Slay",//L"Carmen is suspicous about slay", + L"Slay在目前的区域中",//L"Slay is in current sector", + L"Carmen给了我们最终的警告",//L"Carmen gave us final warning", + L"Vince解释了他为何要求日薪",//L"Vince has explained that he has to charge", + L"需要给Vince支付薪金(每日重设)",//L"Vince is expecting cash (reset everyday)", + + L"佣兵偷了些医疗用品",//L"Player stole some medical supplies once", //150 + L"佣兵又偷了些医疗用品",//L"Player stole some medical supplies again", + L"Vince可以被招募",//L"Vince can be recruited", + L"Vince正在坐诊",//L"Vince is currently doctoring", + L"Vince被招募了",//L"Vince was recruited", + L"Slay提供了交易",//L"Slay offered deal", + L"所有的恐怖分子已被歼灭",//L"All terrorists killed", + L"", + L"Maria被落在了错误的区域",//L"Maria left in wrong sector", + L"Skyrider被落在了错误的区域",//L"Skyrider left in wrong sector", + + L"Joey被落在了错误的区域",//L"Joey left in wrong sector", //160 + L"John被落在了错误的区域",//L"John left in wrong sector", + L"Mary被落在了错误的区域",//L"Mary left in wrong sector", + L"Walter被贿赂了",//L"Walter was bribed", + L"Shank(67)在队伍中,但不是参与对话的人",//L"Shank(67) is part of squad but not speaker", + L"和Maddog说话",//L"Maddog spoken to", + L"Jake和我们谈论了Shank",//L"Jake told us about shank", + L"Shank(67)不在区域中",//L"Shank(67) is not in secotr", + L"血猫任务开始超过2天了",//L"Bloodcat quest on for more than 2 days", + L"对Armand进行了有效的威胁",//L"Effective threat made to Armand", + + L"女皇死了!",//L"Queen is DEAD!", //170 + L"参与对话的人是AIM佣兵,或者队伍内的AIM佣兵在10格内",//L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"现有的矿已经空了",//L"Current mine is empty", + L"现有的矿快要被开采完了",//L"Current mine is running out", + L"矿区忠诚度低(低矿产产量)",//L"Loyalty low in affiliated town (low mine production)", + L"异形入侵了矿坑",//L"Creatures invaded current mine", + L"佣兵失去了矿坑",//L"Player LOST current mine", + L"矿坑在全速生产中",//L"Current mine is at FULL production", + L"参与对话的人是Dynamo,或者在参与对话的人的10格内",//L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred告诉了我们异形的事情",//L"Fred told us about creatures", + + L"Matt告诉了我们异形的事情",//L"Matt told us about creatures", //180 + L"Oswald告诉了我们异形的事情",//L"Oswald told us about creatures", + L"Calvin告诉了我们异形的事情",//L"Calvin told us about creatures", + L"Carl告诉了我们异形的事情",//L"Carl told us about creatures", + L"博物馆里的圣杯被偷走了",//L"Chalice stolen from museam", + L"John是EPC",//L"John(118) is EPC", + L"Mary和John是EPC",//L"Mary(119) and John (118) are EPC's", + L"Mary还活着",//L"Mary(119) is alive", + L"Mary是EPC",//L"Mary(119)is EPC", + L"Mary在流血",//L"Mary(119) is bleeding", + + L"John还活着",//L"John(118) is alive", //190 + L"John在流血",//L"John(118) is bleeding", + L"John或者Mary靠近了Drassen(B13)的机场",//L"John or Mary close to airport in Drassen(B13)", + L"Mary死了",//L"Mary is Dead", + L"矿工被部署了",//L"Miners placed", + L"Krott在计划对佣兵开枪",//L"Krott planning to shoot player", + L"Madlab解释了他的情况",//L"Madlab explained his situation", + L"Madlab期望有一把枪",//L"Madlab expecting a firearm", + L"Madlab期望有个摄像机",//L"Madlab expecting a video camera.", + L"物品状况<70",//L"Item condition is < 70 ", + + L"Madlab抱怨枪坏了",//L"Madlab complained about bad firearm.", //200 + L"Madlab抱怨摄像机坏了",//L"Madlab complained about bad video camera.", + L"机器人准备出发",//L"Robot is ready to go!", + L"第一个机器人被摧毁了",//L"First robot destroyed.", + L"给Madlab一个好的摄像机",//L"Madlab given a good camera.", + L"机器人准备第二次出发",//L"Robot is ready to go a second time!", + L"第二个机器人被摧毁了",//L"Second robot destroyed.", + L"给佣兵介绍了矿洞",//L"Mines explained to player.", + L"Dynamo在J9区域",//L"Dynamo (#66) is in sector J9.", + L"Dynamo还活着",//L"Dynamo (#66) is alive.", + + L"在总共进行过不到3场战斗的情况下,有一个有能力参加战斗的NPC没有参加过一次战斗,",//L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"佣兵收到了来自Drassen,Cambria,Alma和Chitzena的采矿收入",//L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"佣兵去过K4_b1",//L"Player has been to K4_b1", + L"当Warden活着时,和Brewster谈过",//L"Brewster got to talk while Warden was alive", + L"Warden死了",//L"Warden (#103) is dead.", + L"Ernest给我们些枪",//L"Ernest gave us the guns", + L"这是第一个酒保",//L"This is the first bartender", + L"这是第二个酒保",//L"This is the second bartender", + L"这是第三个酒保",//L"This is the third bartender", + L"这是第四个酒保",//L"This is the fourth bartender", + + + L"Manny是个酒保",//L"Manny is a bartender.", //220 + L"没有东西被修好了(有些东西正在修理中,现在没有修好的东西可以给佣兵)",//L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"佣兵从Howard处买了东西",//L"Player made purchase from Howard (#125)", + L"买了Dave的汽车",//L"Dave sold vehicle", + L"Dave的车准备好了",//L"Dave's vehicle ready", + L"Dave期望拿到卖车的钱",//L"Dave expecting cash for car", + L"Dave有汽油(每日随机)",//L"Dave has gas. (randomized daily)", + L"汽车准备好了",//L"Vehicle is present", + L"第一场战斗被佣兵赢得了",//L"First battle won by player", + L"机器人被招募和移动",//L"Robot recruited and moved", + + L"俱乐部内不允许斗殴",//L"No club fighting allowed", //230 + L"佣兵今天已经打了三场拳击了",//L"Player already fought 3 fights today", + L"Hans提到了Joey",//L"Hans mentioned Joey", + L"佣兵的表现超过了50%",//L"Player is doing better than 50% (Alex's function)", + L"佣兵的表现非常好(超过80%)",//L"Player is doing very well (better than 80%)", + L"神父喝醉了并且开启了科幻模式",//L"Father is drunk and sci-fi option is on", + L"Micky喝醉了",//L"Micky (#96) is drunk", + L"佣兵尝试用暴力方式进入妓院",//L"Player has attempted to force their way into brothel", + L"有效地威胁了Rat三次",//L"Rat effectively threatened 3 times", + L"佣兵为两个人付了去妓院的钱",//L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"佣兵控制了两个城镇,包括omerta",//L"Player owns 2 towns including omerta", + L"佣兵控制了三个城镇,包括omerta",//L"Player owns 3 towns including omerta",// 243 + L"佣兵控制了四个城镇,包括omerta",//L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"男性谈论女性的现状(也可能是男扮女装的意思)",//L"Fact male speaking female present", + L"Hicks娶了你的一个雇佣兵",//L"Fact hicks married player merc",// 249 + + L"博物馆开了",//L"Fact museum open",// 250 + L"妓院开放",//L"Fact brothel open",// 251 + L"俱乐部开放",//L"Fact club open",// 252 + L"第一局打响",//L"Fact first battle fought",// 253 + L"第一局正在进行",//L"Fact first battle being fought",// 254 + L"Kingpin介绍了他自己",//L"Fact kingpin introduced self",// 255 + L"Kingpin不在办公室",//L"Fact kingpin not in office",// 256 + L"不欠Kingpin钱",//L"Fact dont owe kingpin money",// 257 + L"daryl和flo结婚了",// L"Fact pc marrying daryl is flo", 258 + L"", + + L"", //260 + L"NPC畏缩了",//L"Fact npc cowering", // 261, + L"", + L"", + L"上层和底层已被清理",//L"Fact top and bottom levels cleared", + L"上层已被清理",//L"Fact top level cleared",// 265 + L"底层已被清理",//L"Fact bottom level cleared",// 266 + L"需要友善地说话",//L"Fact need to speak nicely",// 267 + L"物品已经被安装过了",//L"Fact attached item before",// 268 + L"Skyrider被护送过",//L"Fact skyrider ever escorted",// 269 + + L"NPC不在交火中",//L"Fact npc not under fire",// 270 + L"Willis听说了Joey的营救",//L"Fact willis heard about joey rescue",// 271 + L"Willis给了折扣",//L"Fact willis gives discount",// 272 + L"乡巴佬被杀了",//L"Fact hillbillies killed",// 273 + L"Keith不营业了",//L"Fact keith out of business", // 274 + L"Mike可以被招募",//L"Fact mike available to army",// 275 + L"Kingpin会派刺客",//L"Fact kingpin can send assassins",// 276 + L"Estoni可以加油",//L"Fact estoni refuelling possible",// 277 + L"博物馆的警报被关了",//L"Fact museum alarm went off",// 278 + L"", + + L"maddog是参与对话的人",//L"Fact maddog is speaker", //280, + L"", + L"Angel提到了契约",//L"Fact angel mentioned deed", // 282, + L"Iggy可以被招募",//L"Fact iggy available to army",// 283 + L"是否招募conrads",//L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"NPC充满敌意或者吓坏了",//L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Tony在房子里",//L"Fact tony in building", //291, + L"Shank在说话",//L"Fact shank speaking", // 292, + L"Doreen还活着",//L"Fact doreen alive",// 293 + L"Waldo还活着",//L"Fact waldo alive",// 294 + L"Perko还活着",//L"Fact perko alive",// 295 + L"Tony还活着",//L"Fact tony alive",// 296 + L"", + L"Vince还活着",//L"Fact vince alive",// 298, + L"Jenny还活着",//L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Arnold还活着",//L"Fact arnold alive",// 302, + L"", + L"存在火箭枪",//L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; + +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"删除", //L"Delete", + L"删除物品(|D|e|l)", //L"Delete item (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"北", //L"north", + L"东北", //L"northeast", + L"东", //L"east", + L"东南", //L"southeast", + L"南", //L"south", + L"西南", //L"southwest", + L"西", //L"west", + L"西北", //L"northwest", +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"切换佣兵显示", //0 //L"Toggle viewing of players", + L"切换敌兵显示", //L"Toggle viewing of enemies", + L"切换生物显示", //L"Toggle viewing of creatures", + L"切换反抗军显示", //L"Toggle viewing of rebels", + L"切换民兵显示", //L"Toggle viewing of civilians", + + L"佣兵", //L"Player", + L"敌兵", //L"Enemy", + L"生物", //L"Creature", + L"反抗军", //L"Rebels", + L"民兵", //L"Civilian", + + L"细节", //10 //L"DETAILED PLACEMENT", + L"一般信息模式", //L"General information mode", + L"角色体型模式", //L"Physical appearance mode", + L"角色属性模式", //L"Attributes mode", + L"装备模式", //L"Inventory mode", + L"个性化制定", //L"Profile ID mode", + L"行动安排", //L"Schedule mode", + L"行动安排", //L"Schedule mode", + L"删除", //L"DELETE", + L"删除当前选中佣兵(|D|e|l)", //L"Delete currently selected merc (|D|e|l)", + L"下一个", //20 //L"NEXT", + L"定位下一个佣兵(|S|p|a|c|e)\n定位上一个佣兵(|C|t|r|l+|S|p|a|c|e)", //L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", + L"选择优先级", //L"Toggle priority existance", + L"选择此人是否可以开关门", //L"Toggle whether or not placement\nhas access to all doors", + + //Orders + L"站立", //L"STATIONARY", + L"守卫", //L"ON GUARD", + L"呼叫", //L"ON CALL", + L"寻找敌人", //L"SEEK ENEMY", + L"近距巡逻", //L"CLOSE PATROL", + L"长距巡逻", //L"FAR PATROL", + L"固定巡逻", //30 //L"POINT PATROL", + L"往返巡逻", //L"RND PT PATROL", + + //Attitudes + L"防守", //L"DEFENSIVE", + L"大胆独行", //L"BRAVE SOLO", + L"大胆助攻", //L"BRAVE AID", + L"积极进攻", //L"AGGRESSIVE", + L"偷袭独行", //L"CUNNING SOLO", + L"偷袭助攻", //L"CUNNING AID", + + L"佣兵面向%s方", //L"Set merc to face %s", + + L"找到", // L"Find", + L"糟糕", //40 //L"BAD", + L"不良", //L"POOR", + L"一般", //L"AVERAGE", + L"良好", //L"GOOD", + L"优秀", //L"GREAT", + + L"糟糕", //L"BAD", + L"不良", //L"POOR", + L"一般", //L"AVERAGE", + L"良好", //L"GOOD", + L"优秀", //L"GREAT", + + L"上一个颜色设定", //50 //L"Previous color set", + L"下一个颜色设定", //L"Next color set", + + L"上一个体型", //L"Previous body type", + L"下一个体型", //L"Next body type", + + L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", + L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", + L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", + L"改变游戏时间(增减15分钟)", //L"Toggle time variance (+ or - 15 minutes)", + + L"无行动", //L"No action", + L"无行动", //L"No action", + L"无行动", //60 //L"No action", + L"无行动", //L"No action", + + L"清空任务列表", //L"Clear Schedule", + + L"定位选中佣兵", //L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"房顶", //0 //L"ROOFS", + L"墙", //L"WALLS", + L"房间信息", //L"ROOM INFO", + + L"使用所选方式设置墙", //L"Place walls using selection method", + L"使用所选方式设置门", //L"Place doors using selection method", + L"使用所选方式设置屋顶", //L"Place roofs using selection method", + L"使用所选方式设置窗户", //L"Place windows using selection method", + L"使用所选方式设置破损墙", //L"Place damaged walls using selection method.", + L"使用所选方式设置家具", //L"Place furniture using selection method", + L"使用所选方式设置墙纸", //L"Place wall decals using selection method", + L"使用所选方式设置地板", //10 //L"Place floors using selection method", + L"使用所选方式设置一般家具", //L"Place generic furniture using selection method", + L"智能设置墙", //L"Place walls using smart method", + L"智能设置门", //L"Place doors using smart method", + L"智能设置窗户", //L"Place windows using smart method", + L"智能设置破损墙", //L"Place damaged walls using smart method", + L"给门设置锁或陷阱", //L"Lock or trap existing doors", + + L"添加一个新房间", //L"Add a new room", + L"编辑坍塌的墙。", //L"Edit cave walls.", + L"将选中区域从建筑中移走。", //L"Remove an area from existing building.", + L"移走一个建筑", //20 //L"Remove a building", + L"添加平屋顶或替换已有屋顶。", //L"Add/replace building's roof with new flat roof.", + L"复制建筑", //L"Copy a building", + L"移动建筑", //L"Move a building", + L"房间编号\n(按住|S|h|i|f|t复制房间编号)", //L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", + L"清除房间编号", //L"Erase room numbers", + + L"切换擦除模式(|E)", //L"Toggle |Erase mode", + L"撤销(|B|a|c|k|s|p|a|c|e) ", //L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"切换刷子大小(|A/|Z)", //L"Cycle brush size (|A/|Z)", + L"屋顶(|H)", //L"Roofs (|H)", + L"墙(|W)", //30 //L"|Walls", //30 + L"房间信息(|N)", //L"Room Info (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"武器", //0 //L"Wpns", + L"弹药", //L"Ammo", + L"护甲", //L"Armour", + L"LBE", //L"LBE", + L"Exp", //L"Exp", + L"E1", //L"E1", + L"E2", //L"E2", + L"E3", //L"E3", + L"触发器", //L"Triggers", + L"钥匙", //L"Keys", + L"Rnd", //10 //L"Rnd", + L"上一个(|,)", //L"Previous (|,)", + L"下一个(|.)", //L"Next (|.)", +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"添加环境光源", //0 //L"Add ambient light source", //0 + L"显示非环境光照。", //L"Toggle fake ambient lights.", + L"添加撤退方格(再次单击显示现有方格)。", //L"Add exit grids (r-clk to query existing).", + L"切换刷子大小(|A/|Z)", //L"Cycle brush size (|A/|Z)", + L"撤销(|B|a|c|k|s|p|a|c|e)", //L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"切换擦除模式(|E)", //L"Toggle |Erase mode", + L"再次确定朝北点。", //L"Specify north point for validation purposes.", + L"再次确定朝西点。", //L"Specify west point for validation purposes.", + L"再次确定朝东点。", //L"Specify east point for validation purposes.", + L"再次确定朝南点。", //L"Specify south point for validation purposes.", + L"再次确定中心点。", //10 //L"Specify center point for validation purposes.", + L"再次确定独立点。", //L"Specify isolated point for validation purposes.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"添加屋顶层", //0 //L"New outdoor level", + L"添加地下室层", //L"New basement", + L"添加洞穴层", //L"New cave level", + L"保存地图(|C|t|r|l+|S)", //L"Save map (|C|t|r|l+|S)", + L"读取地图(|C|t|r|l+|L)", //L"Load map (|C|t|r|l+|L)", + L"选择图片模块", //L"Select tileset", + L"退出编辑模式", //L"Leave Editor mode", + L"退出游戏(|A|l|t+|X)", //L"Exit game (|A|l|t+|X)", + L"编辑雷达图", //L"Create radar map", + L"如果点选,地图会被保存为原版JA2的地图格式,ID编号大于350的物品会丢失。\n该选项只对原版大小的地图有效,地图不应超过25600格。", //L"When checked, the map will be saved in original JA2 map format.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", + L"如果点选,载入地图后,该地图会自动按照所选的行列数放大。", //L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"绘制地面构图(|G)", //0 //L"Draw |Ground textures", + L"选择地面构图", //L"Set map ground textures", + L"设置海岸或山崖(|C)", //L"Place banks and |Cliffs", + L"绘制公路(|P)", //L"Draw roads (|P)", + L"绘制废墟(|D)", //L"Draw |Debris", + L"放置树木或树丛(|T)", //L"Place |Trees & bushes", + L"放置石块(|R)", //L"Place |Rocks", + L"放置路障或垃圾(|O)", //L"Place barrels & |Other junk", + L"填满区域", //L"Fill area", + L"撤销(|B|a|c|k|s|p|a|c|e) ", //L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"切换擦除模式(|E)", //10 //L"Toggle |Erase mode", + L"切换刷子大小(|A/|Z)", //L"Cycle brush size (|A/|Z)", + L"增加刷子厚度(|])", //L"Raise brush density (|])", + L"减少刷子厚度(|[)", //L"Lower brush density (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"地形", //0 //L"Terrain", + L"建筑", //L"Buildings", + L"物品", //L"Items", + L"佣兵", //L"Mercs", + L"地图信息", //L"Map Info", + L"选项", //L"Options", + L"\n|./|,:切换刷子:宽xx\n|P|g|U|p/|P|g|D|n:智能模式选择前/后一个模板 ", //Terrain fasthelp text //L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", + L"\n|./|,:切换刷子:宽xx\n|P|g|U|p/|P|g|D|n:智能模式选择前/后一个模板 ", //Buildings fasthelp text //L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", + L"|S|p|a|c|e:选择后一个物品\n|C|t|r|l+|S|p|a|c|e:选择前一个物品\n \n|/:光标下放置同样物品\n|C|t|r|l+|/:光标处放置新物品", //Items fasthelp text //L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", + L"|1-|9:设置路标 \n|C|t|r|l+|C/|C|t|r|l+|V:复制/粘贴佣兵 \n|P|g|U|p/|P|g|D|n:切换俑兵位置层", //Mercs fasthelp text L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", + L"|C|t|r|l+|G:转到某格\n|S|h|i|f|t:地图超出边界\n \n|~:切换光标层\n|I:查看小地图\n|J:切换房顶绘制\n|K:显示房顶标记\n|S|h|i|f|t+|L:显示地图边界 \n|S|h|i|f|t+|T:显示树顶\n|U:切换地图高度\n \n|./|,:切换刷子:宽xx", //Map Info fasthelp text //L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", + L"|C|t|r|l+|N:创造新地图\n \n|F|5:显示总信息/大地图\n|F|1|0:移除所有光源\n|F|1|1:取消修改\n|F|1|2:清空所有\n \n|S|h|i|f|t+|R:随机放置选定数量的物品\n \n命令行选项\n|-|D|O|M|A|P|S:雷达地图批量生成\n|-|D|O|M|A|P|S|C|N|V:雷达及洞穴地图批量生成 ", //Options fasthelp text //L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", // +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"北部降落点", //0 //L"North Entry Point", + L"西部降落点", //L"West Entry Point", + L"东部降落点", //L"East Entry Point", + L"南部降落点", //L"South Entry Point", + L"中心降落点", //L"Center Entry Point", + L"独立降落点", //L"Isolated Entry Point", + + L"最亮", //L"Prime", + L"晚上", //L"Night", + L"全天", //L"24Hour", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"惊慌激活1", //0 //L"Panic Trigger1", + L"惊慌激活2", //L"Panic Trigger2", + L"惊慌激活3", //L"Panic Trigger3", + L"激活%d", //L"Trigger%d", + + L"压力下行为", //L"Pressure Action", + L"惊慌动作1", //L"Panic Action1", + L"惊慌动作2", //L"Panic Action2", + L"惊慌动作3", //L"Panic Action3", + L"动作%d", //L"Action%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"没有锁ID", //0 //L"No Lock ID", + L"爆炸陷阱", //L"Explosion Trap", + L"电击陷阱", //L"Electric Trap", + L"警报器", //L"Siren Trap", + L"静默警报", //L"Silent Alarm", + L"超级电击陷阱", //5 //L"Super Electric Trap", + L"妓院警报器", //L"Brothel Siren Trap", + L"陷阱等级%d", //L"Trap Level %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"地图保存为原版JA2(v1.12)格式(版本:5.00/25)", //0 //L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", + L"尚未读取地图", //L"No map currently loaded.", + L"文件: %S,当前分区: %s", //L"File: %S, Current Tileset: %s", + L"读取时放大地图", //L"Enlarge map on loading", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"转换", //0 //L"TOGGLE", + L"视野", //L"VIEWS", + L"选择方式", //L"SELECTION METHOD", + L"智能模式", //L"SMART METHOD", + L"建造方法", //L"BUILDING METHOD", + L"房间#", //5 //L"Room#", +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"编辑%d号地图锁的属性。", //L"Editing lock attributes at map index %d.", + L"锁ID", //L"Lock ID", + L"陷阱类型", //L"Trap Type", + L"陷阱等级", //L"Trap Level", + L"锁上的", //L"Locked", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"压力下行为", //0 //L"Pressure Action", + L"惊慌动作1", //L"Panic Action1", + L"惊慌动作2", //L"Panic Action2", + L"惊慌动作3", //L"Panic Action3", + L"动作%d", //L"Action%d", + + L"惊慌激活1", //5 //L"Panic Trigger1", + L"惊慌激活2", //L"Panic Trigger2", + L"惊慌激活3", //L"Panic Trigger3", + L"激活%d", //L"Trigger%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"状态信息第1行", //L"Status Info Line 1", + L"状态信息第2行", //L"Status Info Line 2", + L"状态信息第3行", //L"Status Info Line 3", + L"状态信息第4行", //L"Status Info Line 4", + L"状态信息第5行", //L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 //L"R", + L"G", //L"G", + L"B", //L"B", + + L"最亮", //L"Prime", + L"晚上", //L"Night", + L"全天", //L"24Hour", + + L"范围", //L"Radius", + + L"地下", //L"Underground", + L"光照等级", //L"Light Level", + + L"户外", //L"Outdoors", + L"地下室", //10 //L"Basement", + L"洞穴", //L"Caves", + + L"限制", //L"Restricted", + L"滚动ID", //L"Scroll ID", + + L"地点", //L"Destination", + L"分区", //15 //L"Sector", + L"地点", //L"Destination", + L"地下室层", //L"Bsmt. Level", + L"地点", //L"Dest.", + L"网格数", //L"GridNo", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"没有动作", //L"No action", + L"上锁", //L"Lock door", + L"解锁", //L"Unlock door", + L"开锁", //L"Open door", + L"关门", //L"Close door", + L"移动到某网格", //L"Move to gridno", + L"离开分区", //L"Leave sector", + L"进入分区", //L"Enter sector", + L"留在分区", //L"Stay in sector", + L"睡觉", //L"Sleep", + L"算了", //L"Ignore this!", +}; + +STR16 zDiffNames[5] = // NUM_DIFF_LVLS = 5 +{ + L"软弱", //L"Wimp", + L"简单", //L"Easy", + L"一般", //L"Average", + L"顽强", //L"Tough", + L"使用兴奋剂", //L"Steroid Users Only", +}; + +STR16 EditMercStat[12] = +{ + L"最大生命值", //L"Max Health", + L"治疗后生命值", //L"Cur Health", + L"力量", //L"Strength", + L"敏捷", //L"Agility", + L"灵巧", //L"Dexterity", + L"领导", //L"Charisma", + L"智慧", //L"Wisdom", + L"枪法", //L"Marksmanship", + L"爆破", //L"Explosives", + L"医疗", //L"Medical", + L"机械", //L"Scientific", + L"等级", //L"Exp Level", +}; + + +STR16 EditMercOrders[8] = +{ + L"站立", //L"Stationary", + L"守卫", //L"On Guard", + L"近距巡逻", //L"Close Patrol", + L"长距巡逻", //L"Far Patrol", + L"固定巡逻", //L"Point Patrol", + L"呼叫", //L"On Call", + L"寻找敌人", //L"Seek Enemy", + L"随机巡逻", //L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"防守", //L"Defensive", + L"大胆独行", //L"Brave Loner", + L"大胆协助", //L"Brave Buddy", + L"偷袭独行", //L"Cunning Loner", + L"偷袭协助", //L"Cunning Loner", + L"积极", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"佣兵名称:", //0 //L"Merc Name:", + L"指令:", //L"Orders:", + L"战斗倾向:", //L"Combat Attitude:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"佣兵颜色", //0 //L"Merc Colors", + L"完成", //L"Done", + + L"上一个佣兵站立指令", //L"Previous merc standing orders", + L"下一个佣兵站立指令", //L"Next merc standing orders", + + L"上一个佣兵战斗倾向", //L"Previous merc combat attitude", + L"下一个佣兵战斗倾向", //5 //L"Next merc combat attitude", + + L"降低佣兵士气", //L"Decrease merc stat", + L"提升佣兵士气", //L"Increase merc stat", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"随机", //0 //L"Random", + L"普通男性", //L"Reg Male", + L"高大男性", //L"Big Male", + L"肌肉男", //L"Stocky Male", + L"普通女性", //L"Reg Female", + L"NE坦克", //5 //L"NE Tank", + L"NW坦克", //L"NW Tank", + L"胖子市民", //L"Fat Civilian", + L"M市民", //L"M Civilian", + L"迷你裙", //L"Miniskirt", + L"F市民", //10 //L"F Civilian", + L"帽子小孩", //L"Kid w/ Hat", + L"悍马", //L"Humvee", + L"凯迪拉克", //L"Eldorado", + L"冰激凌车", //L"Icecream Truck", + L"吉普车", //15 //L"Jeep", + L"平民小孩", //L"Kid Civilian", + L"奶牛", //L"Domestic Cow", + L"瘸子", //L"Cripple", + L"无武器机器人", //L"Unarmed Robot", + L"异形虫卵", //20 //L"Larvae", + L"异形幼虫", //L"Infant", + L"幼年母异形", //L"Yng F Monster", + L"幼年公异形", //L"Yng M Monster", + L"成年母异形", //L"Adt F Monster", + L"成年公异形", //25 //L"Adt M Monster", + L"异形女王", //L"Queen Monster", + L"血猫", //L"Bloodcat", + L"悍马",//L"Humvee", +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=指令=-- ", //0 //L" --=ORDERS=-- ", + L"--=倾向=--", //L"--=ATTITUDE=--", + + L"对比", //L"RELATIVE", + L"属性", //L"ATTRIBUTES", + + L"对比", //L"RELATIVE", + L"装备", //L"EQUIPMENT", + + L"对比", //L"RELATIVE", + L"属性", //L"ATTRIBUTES", + + L"军队", //L"Army", + L"行政人员", //L"Admin", + L"精英", //10 //L"Elite", + + L"等级", //L"Exp. Level", + L"生命值", //L"Life", + L"最大生命值", //L"LifeMax", + L"枪法", //L"Marksmanship", + L"力量", //L"Strength", + L"敏捷", //L"Agility", + L"灵巧", //L"Dexterity", + L"智慧", //L"Wisdom", + L"领导", //L"Leadership", + L"爆破", //20 //L"Explosives", + L"医疗", //L"Medical", + L"机械", //L"Mechanical", + L"士气", //L"Morale", + + L"头发颜色:", //L"Hair color:", + L"皮肤颜色:", //L"Skin color:", + L"上衣颜色:", //L"Vest color:", + L"裤子颜色:", //L"Pant color:", + + L"随机", //L"RANDOM", + L"随机", //L"RANDOM", + L"随机", //30 //L"RANDOM", + L"随机", //L"RANDOM", + + L"输入档案ID并从中提取资料。", //L"By specifying a profile index, all of the information will be extracted from the profile ", + L"这样会覆盖手动编辑的资料,并且禁止您对所有设置进行修改。", //L"and override any values that you have edited. It will also disable the editing features ", + L"你仍然可以查看各种设置信息。按ENTER键开始读取指定的文件。", //L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", + L"你输入的数字是空的,会将设定文件清空。", //L"extract the number you have typed. A blank field will clear the profile. The current ", + L"现有设定文件的索引为 0-", //L"number of profiles range from 0 to ", + + L"当前档案: n/a", //L"Current Profile: n/a ", + L"当前档案: %s", //L"Current Profile: %s", + + L"站立", //L"STATIONARY", + L"呼叫", //40 //L"ON CALL", + L"守卫", //L"ON GUARD", + L"寻找敌人", //L"SEEK ENEMY", + L"近距巡逻", //L"CLOSE PATROL", + L"长距巡逻", //L"FAR PATROL", + L"固定巡逻", //L"POINT PATROL", + L"往返巡逻", //L"RND PT PATROL", + + L"行动", //L"Action", + L"时间", //L"Time", + L"V", //L"V", + L"网格号1", //50 //L"GridNo 1", + L"网格号2", //L"GridNo 2", + L"1)", //L"1)", + L"2)", //L"2)", + L"3)", //L"3)", + L"4)", //L"4)", + + L"上锁", //L"lock", + L"解锁", //L"unlock", + L"开门", //L"open", + L"关门", //L"close", + + L"点击门相邻的网格号可以%s。", //60 //L"Click on the gridno adjacent to the door that you wish to %s.", + L"点击网格号设定你%s后走到什么地方。", //L"Click on the gridno where you wish to move after you %s the door.", + L"点击网格号选择你想去的地方。", //L"Click on the gridno where you wish to move to.", + L"点击网格号选择你想睡觉的地方,角色唤醒后自动恢复原有姿势。", //L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", + L"点击ESC撤销你所输入的指令。", //L" Hit ESC to abort entering this line in the schedule.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"#%d号位置", //L"Slot #%d", + L"无固定点的巡逻指令", //L"Patrol orders with no waypoints", + L"未设定指令的路标", //L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"无动作", //L"No action", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"未选择放置品,放置品无法被复制。", //L"Placement not copied because no placement selected.", + L"放置品已复制。", //L"Placement copied.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"因为缓存中无资料,放置品粘贴失败。", //L"Placement not pasted as no placement is saved in buffer.", + L"放置品成功粘贴。", //L"Placement pasted.", + L"因为该组放置品已满,放置品粘贴失败。", //L"Placement not pasted as the maximum number of placements for this team has been reached.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"退出编辑器?", //L"Exit editor?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"确定要移除所有光源吗?", //0 //L"Are you sure you wish to remove all lights?", + L"确定要撤销所有修改吗?", //L"Are you sure you wish to reverse the schedules?", + L"确定要清除所有物品吗?", //L"Are you sure you wish to clear all of the schedules?", + + L"允许操作放置品", //L"Clicked Placement Enabled", + L"无法操作放置品", //L"Clicked Placement Disabled", + + L"开启房顶操作", //5 //L"Draw High Ground Enabled", + L"关闭房顶操作", //L"Draw High Ground Disabled", + + L"边界点数目: N=%d E=%d S=%d W=%d", //L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"开启随机放置物品", //L"Random Placement Enabled", + L"关闭随机放置物品", //L"Random Placement Disabled", + + L"隐藏树顶", //10 //L"Removing Treetops", + L"显示树顶", //L"Showing Treetops", + + L"重设地图水平", //L"World Raise Reset", + + L"地图水平还原", //L"World Raise Set Old", + L"地图水平设定", //L"World Raise Set", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"创建%S的雷达图", //0 //L"Creating radar map for %S", + + L"删除当前地图并新建一层地下室?", //L"Delete current map and start a new basement level?", + L"删除当前地图并新建一层洞穴?", //L"Delete current map and start a new cave level?", + L"删除当前地图并新建一层地面?", //L"Delete current map and start a new outdoor level?", + + L"清除地面区块?", //L" Wipe out ground textures? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 //L"HOME", + L"非环境光照开/关", //L"Toggle fake editor lighting ON/OFF", + + L"INSERT", //L"INSERT", + L"填充模式开/关", //L"Toggle fill mode ON/OFF", + + L"BKSPC", //L"BKSPC", + L"撤销", //L"Undo last change", + + L"DEL", //L"DEL", + L"快速删除光标指示物品", //L"Quick erase object under mouse cursor", + + L"ESC", //L"ESC", + L"退出编辑器", //L"Exit editor", + + L"PGUP/PGDN", //10 //L"PGUP/PGDN", + L"切换要复制物品", //L"Change object to be pasted", + + L"F1", //L"F1", + L"打开这个帮助栏", //L"This help screen", + + L"F10", //L"F10", + L"保存当前地图", //L"Save current map", + + L"F11", //L"F11", + L"读取到当前地图", //L"Load map as current", + + L"+/-", //L"+/-", + L"增减0.01的阴影等级", //L"Change shadow darkness by .01", + + L"SHFT +/-", //20 //L"SHFT +/-", + L"增减0.05的阴影等级", //L"Change shadow darkness by .05", + + L"0 - 9", //L"0 - 9", + L"改变地图/区块文件名", //L"Change map/tileset filename", + + L"b", //L"b", + L"改变刷子大小", //L"Change brush size", + + L"d", //L"d", + L"绘制废墟", //L"Draw debris", + + L"o", //L"o", + L"绘制障碍物", //L"Draw obstacle", + + L"r", //30 //L"r", + L"绘制石块", //L"Draw rocks", + + L"t", //L"t", + L"显示树顶开/关", //L"Toggle trees display ON/OFF", + + L"g", //L"g", + L"绘制地面区块", //L"Draw ground textures", + + L"w", //L"w", + L"绘制墙面", //L"Draw building walls", + + L"e", //L"e", + L"擦除模式开/关", //L"Toggle erase mode ON/OFF", + + L"h", //40 //L"h", + L"显示屋顶开/关", //L"Toggle roofs ON/OFF", +}; + +STR16 pAutoLoadMapText[] = +{ + L"地图数据崩溃,不要退出或保存,请保存崩溃前的地图和最后一次操作并反馈此问题。", //L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"任务数据崩溃,不要退出或保存,请保存崩溃前的地图和最后一次操作并反馈此问题。", //L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +STR16 pShowHighGroundText[] = +{ + L"显示高地标记", //L"Showing High Ground Markers", + L"隐藏高地标记", //L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = +{ + L"Klaxon Mine", + L"Flare Mine", + L"Teargas Explosion", + L"Stun Explosion", + L"Smoke Explosion", + L"Mustard Gas", + L"Land Mine", + L"Open Door", + L"Close Door", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Small Explosion", + L"Medium Explosion", + L"Large Explosion", + L"Toggle Door", + L"Toggle Action1s", + L"Toggle Action2s", + L"Toggle Action3s", + L"Toggle Action4s", + L"Enter Brothel", + L"Exit Brothel", + L"Kingpin Alarm", + L"Sex with Prostitute", + L"Reveal Room", + L"Local Alarm", + L"Global Alarm", + L"Klaxon Sound", + L"Unlock door", + L"Toggle lock", + L"Untrap door", + L"Tog pressure items", + L"Museum alarm", + L"Bloodcat alarm", + L"Big teargas", +}; +*/ +STR16 pUpdateItemStatsPanelText[] = +{ + L"切换旗子开关", //0 //L"Toggle hide flag", + L"为选择物品。", //L"No item selected.", + L"可用空位", //L"Slot available for", + L"随机生成。", //L"Random generation.", + L"钥匙不可编辑。", //L"Keys not editable.", + L"此人档案ID", //L"ProfileID of owner", + L"物品未分类。", //L"Item class not implemented.", + L"空位锁定为空。", //L"Slot locked as empty.", + L"状态", //L"Status", + L"回合", //L"Rounds", + L"陷阱等级", //10 //L"Trap Level", + L"数量", //L"Quantity", + L"陷阱等级", //L"Trap Level", + L"状态", //L"Status", + L"陷阱等级", //L"Trap Level", + L"状态", //L"Status", + L"数量", //L"Quantity", + L"陷阱等级", //L"Trap Level", + L"美元", //L"Dollars", + L"状态", //L"Status", + L"陷阱等级", //20 //L"Trap Level", + L"陷阱等级", //L"Trap Level", + L"忍耐", //L"Tolerance", + L"激活警报", //L"Alarm Trigger", + L"放弃机会", //L"Exist Chance", + L"B", //L"B", + L"R", //L"R", + L"S", //L"S", +}; + +STR16 pSetupGameTypeFlagsText[] = +{ + L"物品在现实和科幻模式均有效", //0 //L"Item appears in both Sci-Fi and Realistic modes", + L"物品只在现实模式出现", //L"Item appears in Realistic mode only", + L"物品只在科幻模式出现", //L"Item appears in Sci-Fi mode only", +}; + +STR16 pSetupGunGUIText[] = +{ + L"消音器", //0 //L"SILENCER", + L"狙击镜", //L"SNIPERSCOPE", + L"激光镜", //L"LASERSCOPE", + L"两脚架", //L"BIPOD", + L"鸭嘴", //L"DUCKBILL", + L"榴弹发射器", //5 //L"G-LAUNCHER", +}; + +STR16 pSetupArmourGUIText[] = +{ + L"陶瓷板", //0 //L"CERAMIC PLATES", +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"引爆器", //L"DETONATOR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"如果敌人已经发现你,他们就不会在惊慌触发的情况下再次激活警报器。", //L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"确定", //0 //L"Okay", + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"读取", + L"保存", + L"更新", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"区块: %s", //0 //L"Tileset: %s", + L"版本信息: 总结: 1.%02d,地图: %1.2f/%02d", //L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", + L"物品总数: %d", //L"Number of items: %d", + L"光照数量: %d", //L"Number of lights: %d", + L"降落点数量: %d", //L"Number of entry points: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"房间数量: %d", //L"Number of rooms: %d", + L"地图总人口: %d", //L"Total map population: %d", + L"敌人数量: %d", //L"Enemies: %d", + L"行政人员: %d", //L"Admins: %d", + + L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", + L"军队: %d", //L"Troops: %d", + + L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", + L"精英: %d", + + L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", + L"中立: %d", //20 //L"Civilians: %d", + + L"(%d自定义,%d来自档案 -- %d有优先存在权)", //L"(%d detailed, %d profile -- %d have priority existance)", + + L"人类: %d", //L"Humans: %d", + L"奶牛: %d", //L"Cows: %d", + L"血猫: %d", //L"Bloodcats: %d", + + L"生物: %d", //L"Creatures: %d", + + L"怪物: %d", //L"Monsters: %d", + L"血猫: %d", //L"Bloodcats: %d", + + L"锁和/或陷阱的数量: %d", //L"Number of locked and/or trapped doors: %d", + L"锁: %d", //L"Locked: %d", + L"陷阱: %d", //30 //L"Trapped: %d", + L"锁或陷阱: %d", //L"Locked & Trapped: %d", + + L"有任务的市民: %d", //L"Civilians with schedules: %d", + + L"网格目的地安排超过了4个。", //L"Too many exit grid destinations (more than 4)...", + L"离开网格:%d(%d是最终目的地)。", //L"ExitGrids: %d (%d with a long distance destination)", + L"离开网格:没有。", //L"ExitGrids: none", + L"离开网格:1 从%d离开网格。", //L"ExitGrids: 1 destination using %d exitgrids", + L"离开网格:2 -- 1) Qty: %d, 2) Qty: %d。", //L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", + L"离开网格:3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d。", //L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"离开网格:3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d。", //L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"敌军相对属性:%d糟糕,%d不良,%d一般,%d良好,%d优秀(总计%+d)。", //40 //L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"敌军相对装备:%d糟糕,%d不良,%d一般,%d良好,%d优秀(总计%+d)。", //L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"%d设置了路标,但是没有分配任何巡逻任务。", //L"%d placements have patrol orders without any waypoints defined.", + L"%d设置了路标,但是没有分配任何巡逻任务。", //L"%d placements have waypoints, but without any patrol orders.", + L"%d网格的房间数存在疑问,请核定。", //L"%d gridnos have questionable room numbers. Please validate.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"敌兵", //L"Enemy", + + L"太多物品无法完全显示。", //L"TOO MANY ITEMS TO DISPLAY!", + + L"惊慌1", //L"Panic1", + L"惊慌2", //L"Panic2", + L"惊慌3", //L"Panic3", + L"正常1", //L"Norm1", + L"正常2", //L"Norm2", + L"正常3", //L"Norm3", + L"正常4", //10 //L"Norm1", + L"压力行为", //L"Pressure Actions", + + L"太多物品无法完全完全显示。", //L"TOO MANY ITEMS TO DISPLAY!", + + L"优先敌兵掉落物品", //L"PRIORITY ENEMY DROPPED ITEMS", + L"无", //L"None", + + L"太多物品无法完全显示!", //L"TOO MANY ITEMS TO DISPLAY!", + L"普通敌兵掉落物品", //L"NORMAL ENEMY DROPPED ITEMS", + L"太多物品无法完全显示!", //L"TOO MANY ITEMS TO DISPLAY!", + L"无", //L"None", + L"太多物品无法完全显示!", //L"TOO MANY ITEMS TO DISPLAY!", + L"错误:无法读取物品,未知原因。", //20 //L"ERROR: Can't load the items for this map. Reason unknown.", +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"战役编辑器 -- %s版本1.%02d", //0 //L"CAMPAIGN EDITOR -- %s Version 1.%02d", + L"(未读取地图)。", //L"(NO MAP LOADED).", + L"你现在有%d个过期地图。", //L"You currently have %d outdated maps.", + L"需要更新的地图越多,需要的时间也越多。", //L"The more maps that need to be updated, the longer it takes. It'll take ", + L"比如一个P200MMX需要大概4分钟时间处理100个地图,", //L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"所以所需时间根据电脑硬件条件而定。", //L"depending on your computer, it may vary.", + L"你确定要重新处理全部地图的信息吗(是/否)?", //L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"目前没有选择分区。", //L"There is no sector currently selected.", + + L"输入了一个不符合编辑器规范的临时文件。。。", //L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"在进入编辑器之前,你必须读取已有地图或者", //L"You need to either load an existing map or create a new map before being", + L"创建新地图,否则无法退出(ESC或Alt+X)。", //10 //L"able to enter the editor, or you can quit (ESC or Alt+x).", + + L",地面", //L", ground level", + L",地下1层", //L", underground level 1", + L",地下2层", //L", underground level 1", + L",地下3层", //L", underground level 1", + L",额外G层", //L", alternate G level", + L",额外B1层", //L", alternate G level", + L",额外B2层", //L", alternate B2 level", + L",额外B3层", //L", alternate B2 level", + + L"物品细节--区域%s", //L"ITEM DETAILS -- sector %s", + L"%s区域总结信息:", //20 //L"Summary Information for sector %s:", + + L"%s区域总结信息", //L"Summary Information for sector %s", + L"不存在。", //L"does not exist.", + + L"%s区域总结信息", //L"Summary Information for sector %s", + L"不存在。", //L"does not exist.", + + L"没有%s区域可显示信息。", //L"No information exists for sector %s.", + + L"没有%s区域可显示信息。", //L"No information exists for sector %s.", + + L"文件: %s", //L"FILE: %s", + + L"文件: %s", //L"FILE: %s", + + L"覆盖只读文件", //L"Override READONLY", + L"覆盖文件", //30 //L"Overwrite File", + + L"你现在没有总结文件,创建一个总结文件,", //L"You currently have no summary data. By creating one, you will be able to keep track", + L"你就可以记录你编辑和保存地图的信息。", //L"of information pertaining to all of the sectors you edit and save. The creation process", + L"这个过程将分析你在\\MAPS文件夹下的所有文件并建立一个新的。", //L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"根据有效地图数量你可能需要几分钟的时间。", //L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"以合适的约定模式入a1.dat - p16.dat命名的文件为有效文件。", //L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"地底模式地图以在dat前加_b1 - _b3命名(例如a9_b1.dat)。", //L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"你确定(是/否)。", //L"Do you wish to do this now (y/n)?", + + L"没有总结信息,拒绝创建。", //L"No summary info. Creation denied.", + + L"网格", //L"Grid", + L"已编辑", //40 //L"Progress", + L"使用别的地图", //L"Use Alternate Maps", + + L"总结", //L"Summary", + L"物品", //L"Items", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"分析地图:%s...", //L"Analyzing map: %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"读取地图:%s", //L"Loading map: %s", +}; + +STR16 pReportErrorText[] = +{ + L"跳过更新%s,可能由于区块冲突。", //L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"生成地图信息", //L"Generating map information", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"生成地图总结", //L"Generating map summary", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"重大版本更新", //L"MAJOR VERSION UPDATE", + L"%d个地图需要重大版本更新。", //L"There are %d maps requiring a major version update.", + L"更新所有过期地图", //L"Updating all outdated maps", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d]来自默认区块%s(%d,%S)", //L"%S[%d] from default tileset %s (%d, %S)", + L"文件:%S,副版本:%d(%d,%S)", //L"File: %S, subindex: %d (%d, %S)", + L"当前分区:%s", //L"Tileset: %s", +}; + +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"确认选择 (|E|n|t|e|r)", + L"取消选择 (|E|s|c)\n清除选择 (|S|p|a|c|e)", + L"窗口上卷 (|U|p)", + L"窗口下卷 (|D|o|w|n)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"小", //L"Small", + L"中", //L"Medium", + L"大", //L"Large", + L"超大", //L"XLarge", + L"宽xx", //L"Width: xx", + L"区域", //L"Area", + }; + +//--- + +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"页 1/2", //0 + L"页 2/2", + + L"页 1/3", + L"页 2/3", + L"页 3/3", + + L"页 1/1", //5 +}; + +// by Jazz: +CHAR16 zGrod[][500] = +{ + L"机器人", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 制作团队", + L"@T,C144,R134,{;代码", + L"@T,C144,R134,{;图像和音效", + L"@};(其他MOD作者!)", + L"@T,C144,R134,{;物品", + L"@T,C144,R134,{;其他参与者", + L"@};(所有其他参与制作和反馈论坛成员!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L".38 cal", +// L"9mm", +// L".45 cal", +// L".357 cal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm NATO", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Rocket", +// L"", // dart +// L"", // flame +// L".50 cal", // barrett +// L"9mm Hvy", // Val silent +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L".38 cal", +// L"9mm", +// L".45 cal", +// L".357 cal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm N.", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Rocket", +// L"dart", // dart +// L"", // flamethrower +// L".50 cal", // barrett +// L"9mm Hvy", // Val silent +//}; + + +CHAR16 WeaponType[MAXITEMS][30] = +{ + L"其它", + L"手枪", + L"自动手枪", + L"冲锋枪", + L"步枪", + L"狙击步枪", + L"突击步枪", + L"轻机枪", + L"霰弹枪", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"玩家回合", + L"敌军回合", + L"异形回合", + L"民兵回合", + L"平民回合", + L"玩家部署", + L"#1 客户端", + L"#2 客户端", + L"#3 客户端", + L"#4 客户端", + +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s 被射中了头部,并且失去了1点智慧!", + L"%s 被射中了肩部,并且失去了1点灵巧!", + L"%s 被射中了胸膛,并且失去了1点力量!", + L"%s 被射中了腿部,并且失去了1点敏捷!", + L"%s 被射中了头部,并且失去了%d点智慧!", + L"%s 被射中了肩部,并且失去了%d点灵巧!", + L"%s 被射中了胸膛,并且失去了%d点力量!", + L"%s 被射中了腿部,并且失去了%d点敏捷!", + L"中断!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"你的援军到达了!", + + // In the following four lines, all %s's are merc names + + L"%s 装填弹药。", + L"%s 没有足够的行动点数!", + L"%s 正在进行包扎。(按任意键取消)", + L"%s和%s 正在进行包扎。(按任意键取消)", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"耐用", + L"不耐用", + L"容易修复", + L"不易修复", + L"杀伤力高", + L"杀伤力低", + L"射击快", + L"射击慢", + L"射程远", + L"射程近", + L"轻盈", + L"笨重", + L"小巧", + L"高速连发", + L"无法点射", + L"大容量弹匣", + L"小容量弹匣", + + // In the following two lines, all %s's are merc names + + L"%s 的伪装失效了。", + L"%s 的伪装被洗掉了。", + + // The first %s is a merc name and the second %s is an item name + + L"副手武器没有弹药了!",// L"Second weapon is out of ammo!", + L"%s 偷到了 %s。", // L"%s has stolen the %s.", + + // The %s is a merc name + + L"%s的武器不能扫射。", // L"%s's weapon can't burst fire.", + + L"你已经装上了该附件。",// L"You've already got one of those attached.", + L"组合物品?", // L"Merge items?", + + // Both %s's are item names + + L"你不能把%s和%s组合在一起。", + + L"无", + L"退出子弹", + L"附件", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and you gas mask at the same time. + L"你不能同时使用%s和%s。", + + L"请把光标选中的物品放到另一物品的任意附件格中,这样就可能合成新物品。", + L"请把光标选中的物品放到另一物品的任意附件格中,这样就可能合成新物品。(但是这一次,该物品不相容。)", + L"该分区的敌军尚未被肃清!", + L"你还得给%s%s", + L"%s 被射中了头部!", + L"放弃战斗?", + L"这个组合是永久性的。你确认要这样做吗?", + L"%s 感觉精力充沛!", + L"%s 踩到了大理石珠子,滑倒了!", + L"%s 没能从敌人手里抢到 %s!", + L"%s 修复了 %s。", + L"中断 ", + L"投降?", + L"此人拒绝你的包扎。", + L"这不可能!", + L"要搭乘Skyrider的直升飞机, 你得先把佣兵分配到交通工具/直升飞机。", + L"%s的时间只够给一支枪装填弹药", + L"血猫的回合", + L"全自动", + L"无全自动", + L"精确", + L"不精确", + L"无半自动", + L"敌人已经没有装备可偷了!", + L"敌人手中没有装备!", + + L"%s 的沙漠迷彩油已经耗竭失效了。", + L"%s 的沙漠迷彩油已经冲刷失效了。", + + L"%s 的丛林迷彩油已经耗竭失效了。", + L"%s 的丛林迷彩油已经冲刷失效了。", + + L"%s 的城市迷彩油已经耗竭失效了。", + L"%s 的城市迷彩油已经冲刷失效了。", + + L"%s 的雪地迷彩油已经耗竭失效了。", + L"%s 的雪地迷彩油已经冲刷失效了。", + + L"你不能把%s添加到这个附件槽。", + L"%s不能被添加到任何附件槽。", + L"这个口袋装不下了。", //L"There's not enough space for this pocket.", + + L"%s 竭尽可能地修理了 %s。", + L"%s 竭尽可能地修理了 %s的%s。", + + L"%s 清理了 %s。", //L"%s has cleaned the %s.", + L"%s 清理了 %s的%s。", //L"%s has cleaned %s's %s.", + + L"此时无法分配任务", //L"Assignment not possible at the moment", + L"没有能够训练的民兵。", //L"No militia that can be drilled present.", + + L"%s 已经完全的探索了 %s。", //L"%s has fully explored %s." +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracona", + L"Traconian", +#else + L"Arulco", + L"Arulcan", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"暂停", + L"普通", + L"5分钟", + L"30分钟", + L"60分钟", + L"6小时", +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"第1小队", + L"第2小队", + L"第3小队", + L"第4小队", + L"第5小队", + L"第6小队", + L"第7小队", + L"第8小队", + L"第9小队", + L"第10小队", + L"第11小队", + L"第12小队", + L"第13小队", + L"第14小队", + L"第15小队", + L"第16小队", + L"第17小队", + L"第18小队", + L"第19小队", + L"第20小队", + L"第21小队", + L"第22小队", + L"第23小队", + L"第24小队", + L"第25小队", + L"第26小队", + L"第27小队", + L"第28小队", + L"第29小队", + L"第30小队", + L"第31小队", + L"第32小队", + L"第33小队", + L"第34小队", + L"第35小队", + L"第36小队", + L"第37小队", + L"第38小队", + L"第39小队", + L"第40小队", + L"编队",// on active duty + L"医生",// administering medical aid + L"病人", // getting medical aid + L"交通工具", // in a vehicle + L"在途中",// in transit - abbreviated form + L"修理", // repairing + L"无线电扫描", // scanning for nearby patrols + L"锻炼", // training themselves + L"民兵", // training a town to revolt + L"游击队", //L"M.Militia", //training moving militia units //ham3.6 + L"教练", // training a teammate + L"学员", // being trained by someone else + L"搬运物品", // get items + L"兼职", // L"Staff", // operating a strategic facility //ham3.6 + L"用餐", // eating at a facility (cantina etc.) + L"休息", //L"Rest",// Resting at a facility //ham3.6 + L"审讯", // L"Prison", + L"死亡", // dead + L"虚脱", // abbreviation for incapacitated + L"战俘", // Prisoner of war - captured + L"伤员", // patient in a hospital + L"空车", // Vehicle is empty + L"告发", // facility: undercover prisoner (snitch) + L"造谣", // facility: spread propaganda + L"造谣", // facility: spread propaganda (globally) + L"谣言", // facility: gather information + L"造谣", // spread propaganda + L"谣言", // gather information + L"指挥民兵", //L"Command", militia movement orders + L"诊断", // disease diagnosis + L"治疗疾病", //L"Treat D.", treat disease among the population + L"医生",// administering medical aid + L"病人", // getting medical aid + L"修理", // repairing + L"筑防", //L"Fortify", build structures according to external layout + L"培训工人",//L"Train W.", + L"潜伏", //L"Hide", + L"侦查", //L"GetIntel", + L"医疗民兵", //L"DoctorM.", + L"训练民兵", //L"DMilitia", + L"掩埋尸体", //L"Burial", + L"管理", //L"Admin", + L"探索", //L"Explore" + L"事件", //L"Event", rftr: merc is on a mini event + L"任务", //L"Mission", rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"民兵", // the title of the militia box + L"未分配的民兵", //the number of unassigned militia troops + L"本地区有敌军存在,你无法重新分配民兵!", + L"一些民兵未分派到防区,要不要将它们遣散?", // L"Some militia were not assigned to a sector. Would you like to disband them?", // HEADROCK HAM 3.6 +}; + + +STR16 pMilitiaButtonString[] = +{ + L"自动", // auto place the militia troops for the player + L"完成", // done placing militia troops + L"遣散", // HEADROCK HAM 3.6: Disband militia + L"全部重新分配", // move all milita troops to unassigned pool +}; + +STR16 pConditionStrings[] = +{ + L"极好", //the state of a soldier .. excellent health + L"良好", // good health + L"普通", // fair health + L"受伤", // wounded health + L"疲劳", // tired + L"失血", // bleeding to death + L"昏迷", // knocked out + L"垂死", // near death + L"死亡", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"编队", // set merc on active duty + L"病人",// set as a patient to receive medical aid + L"交通工具", // tell merc to enter vehicle + L"无护送", // let the escorted character go off on their own + L"取消", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"第1小队", + L"第2小队", + L"第3小队", + L"第4小队", + L"第5小队", + L"第6小队", + L"第7小队", + L"第8小队", + L"第9小队", + L"第10小队", + L"第11小队", + L"第12小队", + L"第13小队", + L"第14小队", + L"第15小队", + L"第16小队", + L"第17小队", + L"第18小队", + L"第19小队", + L"第20小队", + L"第21小队", + L"第22小队", + L"第23小队", + L"第24小队", + L"第25小队", + L"第26小队", + L"第27小队", + L"第28小队", + L"第29小队", + L"第30小队", + L"第31小队", + L"第32小队", + L"第33小队", + L"第34小队", + L"第35小队", + L"第36小队", + L"第37小队", + L"第38小队", + L"第39小队", + L"第40小队", + L"编队", + L"医生", + L"病人", + L"交通工具", + L"在途中", + L"修理", + L"无线电扫描", // radio scan + L"锻炼", + L"训练民兵", + L"训练游击队", + L"教练", + L"学员", + L"搬运物品", // get items + L"兼职", + L"用餐", // eating at a facility (cantina etc.) + L"休养", + L"审讯", // L"Interrogate prisoners", + L"休息", + L"虚脱", + L"战俘", + L"医院", + L"空车", // Vehicle is empty + L"秘密告发", // facility: undercover prisoner (snitch) + L"派发传单", // facility: spread propaganda + L"派发传单", // facility: spread propaganda (globally) + L"搜集谣言", // facility: gather rumours + L"派发传单", // spread propaganda + L"搜集谣言", // gather information + L"指挥民兵", //L"Commanding Militia" militia movement orders + L"诊断", // disease diagnosis + L"治疗人员的疾病", // treat disease among the population + L"医生", + L"病人", + L"修理", + L"筑防区域", //L"Fortify sector", build structures according to external layout + L"培训工人",//L"Train workers", + L"变装潜伏", //L"Hide while disguised", + L"变装侦查", //L"Get intel while disguised", + L"医疗受伤的民兵", //L"Doctor wounded militia", + L"训练现有的民兵", //L"Drill existing militia", + L"掩埋尸体", //L"Bury corpses", + L"管理人员", //L"Administration", + L"探索事项", //L"Exploration", +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"第1小队", + L"第2小队", + L"第3小队", + L"第4小队", + L"第5小队", + L"第6小队", + L"第7小队", + L"第8小队", + L"第9小队", + L"第10小队", + L"第11小队", + L"第12小队", + L"第13小队", + L"第14小队", + L"第15小队", + L"第16小队", + L"第17小队", + L"第18小队", + L"第19小队", + L"第20小队", + L"第21小队", + L"第22小队", + L"第23小队", + L"第24小队", + L"第25小队", + L"第26小队", + L"第27小队", + L"第28小队", + L"第29小队", + L"第30小队", + L"第31小队", + L"第32小队", + L"第33小队", + L"第34小队", + L"第35小队", + L"第36小队", + L"第37小队", + L"第38小队", + L"第39小队", + L"第40小队", + L"编队", + L"医生", + L"病人", + L"交通工具", + L"在途中", + L"修理", + L"无线电扫描", // radio scan + L"练习", + L"训练民兵", + L"训练游击队", //L"Train Mobiles", + L"训练队友", + L"学员", + L"搬运物品", // get items + L"兼职", //L"Staff Facility", + L"休养", //L"Rest at Facility", + L"审讯俘虏", // L"Interrogate prisoners", + L"死亡", + L"虚脱", + L"战俘", + L"医院",// patient in a hospital + L"空车", // Vehicle is empty + L"秘密告发", // facility: undercover prisoner (snitch) + L"派发传单", // facility: spread propaganda + L"派发传单", // facility: spread propaganda (globally) + L"搜集谣言", // facility: gather rumours + L"派发传单", // spread propaganda + L"搜集谣言", // gather information + L"指挥民兵", // militia movement orders + L"诊断", // disease diagnosis + L"治疗人员的疾病", // treat disease among the population + L"医生", + L"病人", + L"修理", + L"筑防区域", // L"Fortify sector", build structures according to external layout + L"培训工人",//L"Train workers", + L"变装潜伏", //L"Hide while disguised", + L"变装侦查", //L"Get intel while disguised", + L"医疗受伤的民兵", //L"Doctor wounded militia", + L"训练现有的民兵", //L"Drill existing militia", + L"掩埋尸体", //L"Bury corpses", + L"管理人员", //L"Administration", + L"探索事项", //L"Exploration", +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"合同选项: ", + L"", // a blank line, required + L"雇佣一日",// offer merc a one day contract extension + L"雇佣一周", // 1 week + L"雇佣两周", // 2 week + L"解雇",// end merc's contract + L"取消", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"囚禁", //an acronym for Prisoner of War + L" ?? ", +}; + +STR16 pLongAttributeStrings[] = +{ + L"力量", + L"灵巧", + L"敏捷", + L"智慧", + L"枪法", + L"医疗", + L"机械", + L"领导", + L"爆破", + L"级别", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"护甲", // the armor rating of the merc + L"负重", // the weight the merc is carrying + L"伪装", // the merc's camouflage rating + L"伪装", + L"防护", +}; + +STR16 pShortAttributeStrings[] = +{ + L"敏捷", // the abbreviated version of : agility + L"灵巧", // dexterity + L"力量", // strength + L"领导", // leadership + L"智慧", // wisdom + L"级别", // experience level + L"枪法", // marksmanship skill + L"机械", // mechanical skill + L"爆破", // explosive skill + L"医疗", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"任务", // the mercs current assignment + L"合同",// the contract info about the merc + L"生命", // the health level of the current merc + L"士气", // the morale of the current merc + L"状态", // the condition of the current vehicle + L"油量", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"锻炼", // tell merc to train self + L"民兵",// tell merc to train town + L"教练", // tell merc to act as trainer + L"学员", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"防备模式: ", // the allowable rate of fire for a merc who is guarding + L" 主动射击", // the merc can be aggressive in their choice of fire rates + L" 节约弹药", // conserve ammo + L" 自卫射击", // fire only when the merc needs to + L"其它选择: ", // other options available to merc + L" 允许撤退", // merc can retreat + L" 自动隐蔽", // merc is allowed to seek cover + L" 自动掩护", // merc can assist teammates + L"完成", // done with this menu + L"取消", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"防备模式:", + L" *主动射击*", + L" *节约弹药*", + L" *自卫射击*", + L"其它选择: ", + L" *允许撤退*", + L" *自动隐蔽*", + L" *自动掩护*", + L"完成", + L"取消", +}; + +STR16 pAssignMenuStrings[] = +{ + L"编队", + L"医生", + L"疾病", // merc is a doctor doing diagnosis + L"病人", + L"交通工具", + L"修理", + L"无线电扫描", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"告发", // anv: snitch actions + L"训练", + L"民兵", //L"Militia", all things militia + L"搬运物品", // get items + L"筑防", //L"Fortify", fortify sector + L"情报", //L"Intel", covert assignments + L"管理", //L"Administer", + L"探索", //L"Explore", + L"设施", // the merc is using/staffing a facility //ham3.6 + L"取消", +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"自动进攻", // set militia to aggresive + L"原地坚守", // set militia to stationary + L"撤退", // retreat militia + L"向我靠拢", + L"卧倒", + L"蹲下", // L"Crouch", + L"隐蔽", + L"移动到这里", //L"Move to", + L"全体: 自动进攻", + L"全体: 原地坚守", + L"全体: 撤退", + L"全体: 向我靠拢", + L"全体: 分散", + L"全体: 卧倒", + L"全体: 蹲下", // L"All: Crouch", + L"全体: 隐蔽", + //L"All: Find items", + L"取消", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = +{ + // radio operator + L"火炮攻击", //L"Artillery Strike", + L"通讯干扰", //L"Jam communications", + L"扫描频率", //L"Scan frequencies", + L"监听", //L"Eavesdrop", + L"呼叫支援", //L"Call reinforcements", + L"关闭接收器", //L"Switch off radio set", + L"无线电:激活所有被策反的敌军", //L"Radio: Activate all turncoats", + + // spy + L"潜伏", //L"Hide assignment", + L"侦查", //L"Get Intel assignment", + L"招募被策反的敌军", //L"Recruit turncoat", + L"激活被策反的敌军", // L"Activate turncoat", + L"激活所有被策反的敌军", // L"Activate all turncoats", + + // disguise + L"伪装", //L"Disguise", + L"解除伪装", //L"Remove disguise", + L"测试伪装", //L"Test disguise", + L"脱掉伪装服", //L"Remove clothes", + + // various + L"侦查员", + L"聚焦", //L"Focus", + L"拖拽", //L"Drag", + L"填装水壶", //L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"命令某分区发动火炮攻击。。。", //L"Order an artillery strike from sector...", + L"所有通讯频率加入空白噪音,阻断正常通讯。", //L"Fill all radio frequencies with white noise, making communications impossible.", + L"查找干扰信号源。", //L"Scan for jamming signals.", + L"使用无线电设备持续监听敌军动向。", //L"Use your radio equipment to continously listen for enemy movement.", + L"从邻区呼叫支援。", //L"Call in reinforcements from neighbouring sectors.", + L"关闭无线电设备。", //L"Turn off radio set.", + L"命令战区内所有已被策反的敌军叛变并加入你的部队。", //L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"任务:潜伏至民众中。", //L"Assignment: hide among the population.", + L"任务:潜伏并侦查。", //L"Assignment: hide among the population and gather intel.", + L"尝试策反敌军。", //L"Try to turn an enemy into a turncoat.", + L"命令所有已被策反的敌军叛变并加入你的部队。", // L"Order previously turned soldier to betray their comrades and join you.", + L"命令战区内所有已被策反的敌军叛变并加入你的部队。", // L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"试着用现有的衣服来伪装成平民或敌军。", //L"Try to disguise with the merc's current clothes.", + L"解除伪装,但伪装服仍然穿着。", //L"Remove the disguise, but clothes remain worn.", + L"测试伪装是否有效。", //L"Test the viability of the disguise.", + L"脱掉伪装的衣服。", //L"Remove any extra clothes.", + + // various + L"侦查一个区域,友军狙击手在瞄准你所观察到的目标时会增加命中率。", + L"增加标记区域内中断几率(标记区域外减少中断几率)", //L"Increase interrupt modifier (malus outside of area)", + L"移动时拖动物品,人或尸体。", //L"Drag a person, corpse or structure while you move.", + L"用这个区域的水源填装小队所有的水壶。", //L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"需要:\n", //L"Requires:\n", + L" - %d AP\n", + L" - %s\n", + L" - %s或更高\n", //L" - %s or higher\n", + L" - %s或更高,或\n", //L" - %s or higher or\n", + L" - %d分钟后就绪\n", //L" - %d minutes to be ready\n", + L" - 邻区的迫击炮位置\n", //L" - mortar positions in neighbouring sectors\n", + L" - %s|或%s|和%s或%s或更高\n", //L" - %s |o|r %s |a|n|d %s or %s or higher\n", + L" - 恶魔的财产\n", //L" - posession by a demon" + L" - 与枪有关的技能(如自动武器)\n", //L" - a gun-related trait\n", + L" - 举起枪(瞄准状态)\n", //L" - aimed gun\n", + L" - 在佣兵旁边有物品,人或尸体\n", //L" - prone person, corpse or structure next to merc\n", + L" - 下蹲姿势\n", //L" - crouched position\n", + L" - 清空主手装备\n", //L" - free main hand\n", + L" - 潜伏技能\n", //L" - covert trait\n", + L" - 敌军占领区域\n", //L" - enemy occupied sector\n", + L" - 单独佣兵\n", //L" - single merc\n", + L" - 没有警报\n", //L" - no alarm raised\n", + L" - 伪装成平民或敌军\n", //L" - civilian or soldier disguise\n", + L" - 正被策反的敌军\n", //L" - being our turn\n", + L" - 已被策反的敌军\n", //L" - turned enemy soldier\n", + L" - 敌军士兵\n", //L" - enemy soldier\n", + L" - 显露伪装\n", //L" - surface sector\n", + L" - 没有被怀疑\n", //L" - not being under suspicion\n", + L" - 没有伪装\n", //L" - not disguised\n", + L" - 不在战斗中\n", //L" - not in combat\n", + L" - 我方控制区\n", //L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = +{ + L"民兵", + L"其他队伍", + L"取消", + L"%d 民兵", + L"所有民兵", + + L"更多", + L"尸体: %s", //L"Corpse: %s", +}; + +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"团队情报员", + L"城镇任务", + L"取消", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"和队友讨论告发行为。", + L"从该分区获取任务。", + L"取消", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"报告队伍怨言", + L"不报告", + L"阻止失常行为", + L"忽略失常行为", + L"取消", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"向指挥员报道从其他队员口中听到的怨言。", + L"什么都不报道。", + L"试图阻止队员浪费时间或小偷小摸。", + L"不关心别的佣兵在做什么。", + L"取消", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"派发传单", + L"搜集谣言", + L"取消", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"赞赏佣兵的行动,增加城镇忠诚度并避免糟糕的新闻。", + L"留心关于敌军动向的谣言。", + L"", +}; + +STR16 pPrisonerMenuStrings[] = +{ + L"审问行政人员", //L"Interrogate admins", + L"审问普通士兵", //L"Interrogate troops", + L"审问精英士兵", //L"Interrogate elites", + L"审问军官", //L"Interrogate officers", + L"审问上将", //L"Interrogate generals", + L"审问平民", //L"Interrogate civilians", + L"取消", //L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"行政人员很容易审问,不过通常只会给你个糟糕的结果", //L"Administrators are easy to process, but give only poor results", + L"普通士兵一般不会有太多有价值的情报。", //L"Regular troops are common and don't give you high rewards.", + L"精英士兵如果投靠你,他们会成为老兵。", //L"If elite troops defect to you, they can become veteran militia.", + L"审问敌方的军官,他们会指引你找到敌方的将军。", //L"Interrogating enemy officers can lead you to find enemy generals.", + L"上将是不会加入你的,但是他们会出高额的赎金。", //L"Generals cannot join your militia, but lead to high ransoms.", + L"平民一般不太会抵抗你,他们是最好的二流军队。", // L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"取消", //L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s告发者的身份暴露,但是及时注意到并成功逃脱。", + L"%s告发者的身份暴露,但是稳定了场面并成功逃脱。", + L"%s告发者的身份暴露,但是逃过了刺杀。", + L"%s告发者的身份暴露,但是狱警阻止了暴力事件的发生。", + + L"%s告发者的身份暴露,几乎被其他犯人淹死,最后被狱警救下。", + L"%s告发者的身份暴露,几乎被其他犯人打死,最后被狱警救下。", + L"%s告发者的身份暴露,几乎被刺死,最后被狱警救下。", + L"%s告发者的身份暴露,几乎被勒死,最后被狱警救下。", + + L"%s告发者的身份暴露,被其他犯人按在马桶内淹死。", + L"%s告发者的身份暴露,被其他犯人打死。", + L"%s告发者的身份暴露,被其他犯人用刀刺死。", + L"%s告发者的身份暴露,被其他犯人勒死。", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s听到了在%d分区有敌军活动的谣言。", + +}; + +STR16 pRemoveMercStrings[] = +{ + L"移除佣兵", // remove dead merc from current team + L"取消", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"生命", //"Health", + L"敏捷", //"Agility", + L"灵巧", //"Dexterity", + L"力量", //"Strength", + L"领导", //"Leadership", + L"枪法", //"Marksmanship", + L"机械", //"Mechanical", + L"爆破", //"Explosives", + L"医疗", //"Medical", + L"取消", //"Cancel", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"锻炼", // train yourself + L"培训工人", //L"Train workers", + L"教练", // train your teammates + L"学员", // be trained by an instructor + L"取消", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"第1小队", + L"第2小队", + L"第3小队", + L"第4小队", + L"第5小队", + L"第6小队", + L"第7小队", + L"第8小队", + L"第9小队", + L"第10小队", + L"第11小队", + L"第12小队", + L"第13小队", + L"第14小队", + L"第15小队", + L"第16小队", + L"第17小队", + L"第18小队", + L"第19小队", + L"第20小队", + L"第21小队", + L"第22小队", + L"第23小队", + L"第24小队", + L"第25小队", + L"第26小队", + L"第27小队", + L"第28小队", + L"第29小队", + L"第30小队", + L"第31小队", + L"第32小队", + L"第33小队", + L"第34小队", + L"第35小队", + L"第36小队", + L"第37小队", + L"第38小队", + L"第39小队", + L"第40小队", + L"取消", +}; + +STR16 pPersonnelTitle[] = +{ + L"佣兵", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"生命: ", // health of merc + L"敏捷: ", + L"灵巧: ", + L"力量: ", + L"领导: ", + L"智慧: ", + L"级别: ", // experience level + L"枪法: ", + L"机械: ", + L"爆破: ", + L"医疗: ", + L"医疗保证金: ", // amount of medical deposit put down on the merc + L"合同剩余时间: ", // cost of current contract + L"杀敌数: ", // number of kills by merc + L"助攻数: ",// number of assists on kills by merc + L"日薪: ", // daily cost of merc + L"总花费: ",// total cost of merc + L"当前薪金: ", + L"总日数: ",// total service rendered by merc + L"欠付佣金: ",// amount left on MERC merc to be paid + L"命中率: ",// percentage of shots that hit target + L"战斗次数: ", // number of battles fought + L"受伤次数: ", // number of times merc has been wounded + L"技能: ", + L"没有技能", + L"成就: ", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"精兵: %d\n", + L"杂兵: %d\n", + L"头目: %d\n", + L"刁民: %d\n", + L"动物: %d\n", + L"坦克: %d\n", + L"其他: %d\n", + + L"帮助佣兵: %d\n", + L"帮助民兵: %d\n", + L"帮助其他: %d\n", + + L"枪弹射击: %d\n", + L"火箭发射: %d\n", + L"榴弹投掷: %d\n", + L"飞刀投掷: %d\n", + L"白刃砍杀: %d\n", + L"徒手攻击: %d\n", + L"有效攻击总数: %d\n", + + L"工具撬锁: %d\n", + L"暴力开锁: %d\n", + L"排除陷阱: %d\n", + L"拆除炸弹: %d\n", + L"修理物品: %d\n", + L"合成物品: %d\n", + L"偷窃物品: %d\n", + L"训练民兵: %d\n", + L"战地急救: %d\n", + L"外科手术: %d\n", + L"遇见人物: %d\n", + L"探索区域: %d\n", + L"避免伏击: %d\n", + L"游戏任务: %d\n", + + L"参加战斗: %d\n", + L"自动战斗: %d\n", + L"撤退战斗: %d\n", + L"偷袭次数: %d\n", + L"参加过最多有: %d名敌军的战斗\n", + + L"中枪: %d\n", + L"被砍: %d\n", + L"被揍: %d\n", + L"被炸: %d\n", + L"设施伤害: %d\n", + L"经历手术: %d\n", + L"设施事故: %d\n", + + L"性格:", + L"弱点:", + + L"态度:", // WANNE: For old traits display instead of "Character:"! + + L"僵尸: %d\n", // Zombies: %d\n + + L"背景:", + L"性格:", + + L"已审讯俘虏: %d\n", //L"Prisoners interrogated: %d\n", + L"已感染疾病: %d\n", //L"Diseases caught: %d\n", + L"总共受到伤害: %d\n", //L"Total damage received: %d\n", + L"总共造成伤害: %d\n", //L"Total damage caused: %d\n", + L"总共治疗: %d\n", //L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + // SANDRO - tweaked this + L"没有技能", + L"开锁", + L"格斗", //JA25: modified + L"电子", + L"夜战", //JA25: modified + L"投掷", + L"教学", + L"重武器", + L"自动武器", + L"潜行", + L"双持", + L"偷窃", + L"武术", + L"刀技", + L"狙击手", + L"伪装", //JA25: modified + L"专家", +}; +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"没有技能", // 0 + L"自动武器", + L"重武器", + L"神枪手", + L"猎兵", + L"快枪手", // 5 + L"格斗家", + L"班副", + L"技师", + L"救护兵", + // Minor traits + L"双持", + L"近战", + L"投掷", + L"夜战", + L"潜行", // 14 + L"运动员", + L"健身", + L"爆破", + L"教学", + L"侦察", // 19 + // covert ops is a major trait that was added later + L"特工", // L"Covert Ops", + + // new minor traits + L"无线电操作员", // 21 + L"告发", // 22 + L"向导", //L"Survival" + + // second names for major skills + L"机枪手", // 24 + L"枪炮专家", //L"Bombardier", + L"狙击手", + L"游骑兵", + L"枪斗术", + L"武术家", + L"班长", + L"工兵", + L"军医", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"间谍", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch (minor trait) + L"向导", // for survival (minor trait) + L"更多...", // 47 + L"情报", //L"Intel", for INTEL + L"伪装", //L"Disguise", for DISGUISE + L"多种技能", // for VARIOUSSKILLS + L"治疗佣兵", //L"Bandage Mercs", for AUTOBANDAGESKILLS +}; +////////////////////////////////////////////////////////// + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"站立/行走 (|S)", + L"蹲伏/蹲伏前进(|C)", + L"站立/奔跑 (|R)", + L"匍匐/匍匐前进(|P)", + L"观察(|L)", + L"行动", + L"交谈", + L"检查 (|C|t|r|l)", + + // Pop up door menu + L"用手开门", + L"检查陷阱", + L"开锁", + L"踹门", + L"解除陷阱", + L"锁门", + L"开门", + L"使用破门炸药", + L"使用撬棍", + L"取消 (|E|s|c)", + L"关闭", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"没有陷阱", + L"一个爆炸陷阱", + L"一个带电陷阱", + L"一个警报陷阱", + L"一个无声警报陷阱", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"日", + L"周", + L"两周", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"选择人物", + L"分配任务", + L"安排行军路线", + L"签约 (|C)", + L"移除佣兵", + L"睡觉", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"微弱的", + L"清晰的", + L"大声的", + L"非常大声的", +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"未知", + L"脚步声", + L"辗扎声", + L"溅泼声", + L"撞击声", + L"枪声", + L"爆炸声", + L"尖叫声", + L"撞击声", + L"撞击声", + L"粉碎声", + L"破碎声", +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"东北方", + L"东方", + L"东南方", + L"南方", + L"西南方", + L"西方", + L"西北方", + L"北方" +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"城市", + L"公路", + L"平原", + L"沙漠", + L"灌木", + L"森林", + L"沼泽", + L"湖泊", + L"山地", + L"不可通行", + L"河流", //river from north to south + L"河流", //river from east to west + L"外国", + //NONE of the following are used for directional travel, just for the sector description. + L"热带", + L"农田", + L"平原,公路", + L"灌木,公路", + L"农庄,公路", + L"热带,公路", + L"森林,公路", + L"海滨", + L"山地,公路", + L"海滨,公路", + L"沙漠,公路", + L"沼泽,公路", + L"灌木,SAM导弹基地", + L"沙漠,SAM导弹基地", + L"热带,SAM导弹基地", + L"Meduna, SAM导弹基地", + + //These are descriptions for special sectors + L"Cambria医院", + L"Drassen机场", + L"Meduna机场", + L"SAM导弹基地", + L"加油站", + L"抵抗军隐蔽处",//The rebel base underground in sector A10 + L"Tixa地牢",//The basement of the Tixa Prison (J9) + L"异形巢穴",//Any mine sector with creatures in it + L"Orta地下室", //The basement of Orta (K4) + L"地道", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"地下掩体", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s在%c%d分区被发现了,另一小队即将到达。", //STR_DETECTED_SINGULAR + L"%s在%c%d分区被发现了,其他几个小队即将到达。", //STR_DETECTED_PLURAL + L"你想调整为同时到达吗?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"敌军给你一个投降的机会。", + L"敌军俘虏了昏迷中的佣兵。", + + //The text that goes on the autoresolve buttons + + L"撤退", //The retreat button + L"完成", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"防守", //STR_AR_DEFEND_HEADER + L"攻击", //STR_AR_ATTACK_HEADER + L"遭遇战", //STR_AR_ENCOUNTER_HEADER + L"分区", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"胜利!", //STR_AR_OVER_VICTORY + L"失败!", //STR_AR_OVER_DEFEAT + L"投降!", //STR_AR_OVER_SURRENDERED + L"被俘!", //STR_AR_OVER_CAPTURED + L"撤退!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"民兵", //STR_AR_MILITIA_NAME, + L"精兵", //STR_AR_ELITE_NAME, + L"部队", //STR_AR_TROOP_NAME, + L"行政人员", //STR_AR_ADMINISTRATOR_NAME, + L"异形", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"战斗用时", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"已撤退", //STR_AR_MERC_RETREATED, + L"正在撤退", //STR_AR_MERC_RETREATING, + L"撤退", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"自动战斗", //STR_PB_AUTORESOLVE_BTN, + L"进入战区", //STR_PB_GOTOSECTOR_BTN, + L"撤退佣兵", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"遭遇敌军", //STR_PB_ENEMYENCOUNTER_HEADER, + L"敌军入侵", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"敌军伏击", + L"进入敌占区", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"异形攻击", //STR_PB_CREATUREATTACK_HEADER + L"血猫伏击", //STR_PB_BLOODCATAMBUSH_HEADER + L"进入血猫巢穴", + L"敌方空降", //L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"地区", + L"敌军", + L"佣兵", + L"民兵", + L"异形", + L"血猫", + L"分区", + L"无人", //If there are no uninvolved mercs in this fight. + L"N/A", //Acronym of Not Applicable + L"日", //One letter abbreviation of day + L"小时", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"清除", + L"分散", + L"集中", + L"完成", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"清除所有佣兵的位置,然后一个一个对他们进行布置。(|c)" , + L"每按一次,就会重新随机分散地布置佣兵。(|s)", + L"集中所有佣兵,选择你想布置的地方。(|g)", + L"完成佣兵布置后,请按本按钮确认。(|E|n|t|e|r)", + L"开始战斗前,你必须对所有佣兵完成布置。", + + //Various strings (translate word for word) + + L"分区", + L"选择进入的位置(大地图可以按“↑”“↓”“←”“→”键来移动屏幕)", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"看起来不太好。无法进入这里。换个不同的位置吧。", + L"请把佣兵放在地图的高亮分区里。", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"已到达该地区", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"自动解决战斗,不需要\n载入该分区地图。(|A)", + L"当玩家在攻击时,无法使用\n自动战斗功能。", + L"进入该分区和敌军作战(|E)", + L"将小队撤退到先前的分区。(|R)", //singular version + L"将所有小队撤退到先前的分区。(|R)", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"敌军向你的民兵发起了攻击,在分区%c%d。", + //%c%d is the sector -- ex: A9 + L"异形向你的民兵发起了攻击,在分区%c%d。", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"生物(血猫,异形,僵尸)袭击了%s分区,杀死%d平民。", //注:这里原本的%d和%s在中文中要反过来放,不然会出错。(%d和%s在中文中要反过来) L"Creatures attack and kill %d civilians in sector %s.", + //%s is the sector location -- ex: A9: Omerta + L"敌军向你的%s分区发起了攻击,你的佣兵中没人能进行战斗。", + //%s is the sector location -- ex: A9: Omerta + L"异形向你的%s分区发起了攻击,你的佣兵中没人能进行战斗。", + + // Flugente: militia movement forbidden due to limited roaming + L"民兵无法移动到这。(RESTRICT_ROAMING = TRUE)", //L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", + L"战术中心无人兼职,民兵移动失败!", //L"War room isn't staffed - militia move aborted!", + + L"机器人", //L"Robot", STR_AR_ROBOT_NAME, + L"坦克", //STR_AR_TANK_NAME, + L"吉普", // L"Jeep", STR_AR_JEEP_NAME + + L"\n睡觉时每小时恢复精力: %d", //L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"僵尸", //L"Zombies", + L"土匪", //L"Bandits", + L"血猫攻击", //L"BLOODCAT ATTACK", + L"僵尸攻击", //L"ZOMBIE ATTACK", + L"土匪攻击", //L"BANDIT ATTACK", + L"僵尸", //L"Zombie", + L"土匪", //L"Bandit", + L"土匪杀死了%d名平民,在%s分区。", //注:这里的%d和%s不可以随意放前面或后面,一定要按英文顺序,不然会出错。(%d和%s 在中文中不能反过来。) L"Bandits attack and kill %d civilians in sector %s.", + L"运输队", //L"Transport group", + L"运输队已出发", //L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"日", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"找到钥匙的分区: ", + L"找到钥匙的日期: ", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"状态: ", + L"重量: ", + L"AP 消耗", + L"射程: ", // Range + L"杀伤力: ", // Damage + L"弹药", // Number of bullets left in a magazine + L"AP: ", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"准确性: ", //9 + L"射程: ", //10 + L"杀伤力: ", //11 + L"重量: ", //12 + L"晕眩杀伤力: ",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + // HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only) + // Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES... + L"附件:", //14 //ham3.6 + L"连发/5AP: ", //15 + L"剩余弹药:", //16 + L"默认:", //17 //WarmSteel - So we can also display default attachments + L"污垢:", // 18 //added by Flugente + L"空位:", // 19 //space left on Molle items L"Space:", + L"传播模式:", //L"Spread Pattern:",// 20 + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + L"|射|程\n \n武器的有效射程。\n超出这个距离精瞄效果将受到严重影响。\n \n该数值越高越好。", // L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", + L"|伤|害\n \n武器的原始伤害。\n理想情况下对无护甲目标造成的大致伤害值。\n \n该数值越高越好。", // L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", + L"|精|度\n \n武器的固有准确度。\n由武器自身的结构设计所决定。\n \n该数值越高越好。", // L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", + L"|精|瞄|等|级\n \n武器最大瞄准次数。\n \n瞄准次数越多射击越准确。\n不同武器有不同次数限制。\n次数越多AP消耗越大。\n \n该数值越高越好。", // L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", + L"|精|瞄|修|正\n \n精瞄统一修正。\n每一次瞄准都会获得这个修正值。\n次数越高效果越大。\n \n该数值越高越好。", // L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", + L"|精|瞄|修|正|最|小|距|离\n \n|精|瞄|修|正生效所需最小射距。\n小于这个距离|精|瞄|修|正不会生效。\n \n该数值越低越好。", // L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", + L"|命|中|率|修|正\n \n命中率统一修正。\n该武器所有射击模式都会获得则个修正值。\n \n该数值越高越好。", // L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", + L"|最|佳|激|光|距|离\n \n激光瞄准有效距离。\n这有在这个格数以内激光瞄准才生效。\n超过这个距离效果减弱或消失。\n \n该数值越高越好。", // L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", + L"|枪|口|焰|抑|制\n \n枪口是否消焰。\n枪口消焰后射手更不容易被发现。", // L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", + L"|音|量\n \n射击发出的噪声。\n在这个格数内敌人会听到射手所处位置。\n \n该数值越低越好。\n除非你想被敌人发现。", // L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", + L"|可|靠|度\n \n武器或道具的结实程度。\n会在战斗使用时磨损消耗\n你不想拿着中国制造到处炫耀。\n \n该数值越高越好。", // L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", + L"|维|修|难|度\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有工兵和特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", // Determines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"", //12 + L"举枪AP", + L"单发AP", + L"点射AP", + L"连发AP", + L"上弹AP", + L"手动上弹AP", + L"点射惩罚(越低越好)", //19 + L"脚架修正", + L"连发数量/5AP", + L"连发惩罚(越低越好)", + L"点射/连发惩罚(越低越好)", //23 + L"投掷AP", //20 + L"发射AP", + L"捅人AP", + L"无法单发!", + L"无点射模式!", + L"无连发模式!", + L"械斗AP", + L"", + L"|维|修|难|度\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"物品大小修正(越低越好)", // 0 + L"可靠性修正", + L"噪音修正(越低越好)", + L"枪口消焰", + L"脚架修正", + L"射程修正", // 5 + L"命中率修正", + L"最佳激光瞄准距离", + L"精瞄加成修正", + L"点射长度修正", + L"点射惩罚修正(越高越好)", // 10 + L"连发惩罚修正(越高越好)", + L"AP修正", + L"点射AP修正(越低越好)", + L"连发AP修正(越低越好)", + L"举枪AP修正(越低越好)", // 15 + L"上弹AP修正(越低越好)", + L"弹容量修正", + L"攻击AP修正(越低越好)", + L"杀伤修正", + L"近战杀伤修正", // 20 + L"丛林迷彩", + L"城市迷彩", + L"沙漠迷彩", + L"雪地迷彩", + L"潜行修正", // 25 + L"听觉距离修正", + L"视距修正", + L"白天视距修正", + L"夜晚视距修正", + L"亮光下视距修正", //30 + L"洞穴视距修正", + L"隧道视野百分比(越低越好)", + L"精瞄加成所需最小距离", + L"按住 |C|t|r|l 点击装备物品", //L"Hold |C|t|r|l to compare items", item compare help text + L"装备重量: %4.1f 公斤", //L"Equipment weight: %4.1f kg", // 35 +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"处于 ", + L"完美", + L"优秀", + L"好的", + L"尚可", + L"不良", + L"差的", + L"糟糕的", + L" 状态。", //L" condition.", +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"剩余", + L"金额: ",//this is the overall balance + L"分割", + L"金额: ", // the amount he wants to separate from the overall balance to get two piles of money + + L"当前", + L"余额:", + L"提取", + L"金额:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"垂死", //"DYING", // >= 0 + L"濒危", //"CRITICAL", // >= 15 + L"虚弱", //"POOR", // >= 30 + L"受伤", //"WOUNDED", // >= 45 + L"健康", //"HEALTHY", // >= 60 + L"强壮", //"STRONG", // >= 75 + L"极好", //"EXCELLENT", // >= 90 + L"被俘", // L"CAPTURED", +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"$1000", + L"$100", + L"$10", + L"完成", + L"分割", + L"提取", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"优点: ", +}; + +CHAR16 gzConsLabel[10] = +{ + L"缺点: ", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"再说一次?", //meaning "Repeat yourself" + L"友好", //approach in a friendly + L"直率", //approach directly - let's get down to business + L"恐吓", //approach threateningly - talk now, or I'll blow your face off + L"给予", + L"招募", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"买/卖", + L"买", + L"卖", + L"修理", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"完成", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"凯迪拉克", + L"悍马", // a hummer jeep/truck -- military vehicle + L"冰激凌车", + L"吉普", + L"坦克", + L"直升飞机", +}; + +STR16 pShortVehicleStrings[] = +{ + L"凯迪拉克", + L"悍马", // the HMVV + L"冰激凌车", + L"吉普", + L"坦克", + L"直升飞机", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"凯迪拉克", + L"悍马", //a military jeep. This is a brand name. + L"冰激凌车", // Ice cream truck + L"吉普", + L"坦克", + L"直升飞机", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"你不能在这个位置射击。", //L"You cannot shoot from this seat.", + L"在战斗中你不能在没有退出交通工具之前就交换这两个位置。", //L"You cannot swap those two seats in combat without exiting vehicle first.", +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"空袭", + L"自动包扎?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s发现运来的货品缺少了几件。", + + // The %s is a string from pDoorTrapStrings + + L"锁上有%s。", + L"没有上锁。", + L"成功!", + L"失败。", + L"成功!", + L"失败", + L"锁上没有被设置陷阱。", + L"成功!", + // The %s is a merc name + L"%s没有对应的钥匙。", + L"锁上的陷阱被解除了。", + L"锁上没有被设置陷阱。", + L"锁住了。", + L"门", + L"有陷阱的", + L"锁住的", + L"没锁的", + L"被打烂的", + L"这里有一个开关。启动它吗?", + L"解除陷阱?", + L"上一个...", + L"下一个...", + L"更多的...", + + // In the next 2 strings, %s is an item name + + L"%s放在了地上。", + L"%s交给了%s。", + + // In the next 2 strings, %s is a name + + L"%s已经被完全支付。", + L"%s还拖欠%d。", + L"选择引爆的频率", //in this case, frequency refers to a radio signal + L"设定几个回合后爆炸: ", //how much time, in turns, until the bomb blows + L"设定遥控雷管的频率: ",//in this case, frequency refers to a radio signal + L"解除诡雷?", + L"移掉蓝旗?", + L"在这里插上蓝旗吗?", + L"结束回合", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"你确定要攻击%s吗?", + L"车辆无法变动姿势。", + L"机器人无法变动姿势。", + + // In the next 3 strings, %s is a name + + L"%s无法在这里变为该姿势。", + L"%s无法在这里被包扎。", + L"%s不需要包扎。", + L"不能移动到那儿。", + L"你的队伍已经满员了。没有空位雇佣新队员。", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s已经被招募。", + + // Here %s is a name and %d is a number + + L"尚拖欠%s,$%d。", + + // In the next string, %s is a name + + L"护送%s吗?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"要雇佣%s吗?(每日得支付%s)", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"你要进行拳击比赛吗?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"要买%s吗(得支付%s)?", + + // In the next string, %s is a name + + L"%s接受第%d小队的护送。", + + // These messages are displayed during play to alert the player to a particular situation + + L"卡壳", //weapon is jammed. + L"机器人需要%s口径的子弹。", //Robot is out of ammo + L"扔到那儿?那不可能。", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"潜行模式 (|Z)", + L"地图屏幕 (|M)", + L"结束回合 (|D)", + L"谈话", + L"禁音", + L"起身 (|P|g|U|p)", + L"光标层次 (|T|a|b)", + L"攀爬/跳跃", + L"伏下 (|P|g|D|n)", + L"检查", + L"上一个佣兵", + L"下一个佣兵 (|S|p|a|c|e)", + L"选项 (|O)", + L"扫射模式 (|B)", + L"查看/转向(|L)", + L"生命: %d/%d\n精力: %d/%d\n士气: %s", + L"厄?", //this means "what?" + L"继续", //an abbrieviation for "Continued" + L"对%s关闭禁音模式。", + L"对%s打开禁音模式。", + L"耐久度: %d/%d\n油量: %d/%d", + L"下车", //L"Exit Vehicle", + L"切换小队 ( |S|h|i|f|t |S|p|a|c|e )", + L"驾驶", + L"N/A", //this is an acronym for "Not Applicable." + L"使用 (拳头)", + L"使用 (武器)", + L"使用 (刀具)", + L"使用 (爆炸品)", + L"使用 (医疗用品)", + L"(抓住)", + L"(装填弹药)", + L"(给予)", + L"%s被触发了。", + L"%s已到达。", + L"%s用完了行动点数(AP)。", + L"%s无法行动。", + L"%s包扎好了。", + L"%s用完了绷带。", + L"这个分区中有敌军。", + L"视野中没有敌军。", + L"没有足够的行动点数(AP)。", + L"没人使用遥控器。", + L"射光了子弹!", + L"敌兵", + L"异形", + L"民兵", + L"平民", + L"僵尸", + L"战俘", + L"离开分区", + L"确定", + L"取消", + L"选择佣兵", + L"小队的所有佣兵", + L"前往分区", + L"前往地图", + L"你不能从这边离开这个分区。", + L"你不能在回合制模式离开。", + L"%s太远了。", + L"不显示树冠", + L"显示树冠", + L"乌鸦" , //Crow, as in the large black bird + L"颈部", + L"头部", + L"躯体", + L"腿部", + L"要告诉女王她想知道的情报吗?", + L"获得指纹ID", + L"指纹ID无效。无法使用该武器。", + L"达成目标", + L"路被堵住了", + L"存钱/取钱", //Help text over the $ button on the Single Merc Panel + L"没人需要包扎。", + L"卡壳", // Short form of JAMMED, for small inv slots + L"无法到达那里。", // used ( now ) for when we click on a cliff + L"路被堵住了。你要和这个人交换位置吗?", + L"那人拒绝移动。", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"你同意支付%s吗?", + L"你要接受免费治疗吗?", + L"你同意让佣兵和%s结婚吗?", //Daryl + L"钥匙面板", + L"你不能这样用EPC。", + L"不杀%s?", //Krott + L"超出武器的有效射程。", + L"矿工", + L"车辆只能在分区间旅行", + L"现在不能自动包扎", + L"%s被堵住了。", + L"被%s的军队俘虏的佣兵,被关押在这里!", //Deidranna + L"锁被击中了", + L"锁被破坏了", + L"其他人在使用这扇门。", + L"耐久度: %d/%d\n油量: %d/%d", + L"%s看不见%s。", // Cannot see person trying to talk to + L"附件被移除", + L"你已经有了两辆车,无法拥有更多的车辆。", + + // added by Flugente for defusing/setting up trap networks + L"选择引爆频率 (1 - 4) 或拆除频率 (A - D):", //L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", + L"设置拆除频率:", //L"Set defusing frequency:", + L"设置引爆频率 (1 - 4) 和拆除频率 (A - D):", //L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", + L"设置引爆时间回合数 (1 - 4) 和拆除频率 (A - D):", //L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", + L"选择绊线的分层 (1 - 4) 和网格 (A - D):", //L"Select tripwire hierarchy (1 - 4) and network (A - D):", + + // added by Flugente to display food status + L"生命: %d/%d\n精力: %d/%d\n士气: %s\n口渴: %d%s\n饥饿: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"你想要做的是什么?", + L"装满水壶", + L"清洁枪污垢", + L"清洁所有枪污垢", + L"脱掉衣服", + L"去掉伪装", //L"Lose disguise", + L"民兵检查", //L"Militia inspection", + L"补充民兵", //L"Militia restock", + L"测试伪装", //L"Test disguise", + L"未使用", //L"unused", + + // added by Flugente: decide what to do with the corpses + L"你想要对尸体做什么?", + L"砍掉头颅", + L"取出内脏", + L"脱掉衣服", + L"拿起尸体", + + // Flugente: weapon cleaning + L"%s 清洁了 %s", + + // added by Flugente: decide what to do with prisoners + L"既然我们没有监狱,只能现场审讯了。", //L"As we have no prison, a field interrogation is performed.", + L"现场审讯", //L"Field interrogation", + L"你打算把%d名俘虏送到哪里去?",//L"Where do you want to send the %d prisoners?", + L"放俘虏离开",//L"Let them go", + L"你想要做什么?", + L"劝说敌人投降", + L"我方缴械投降", //L"Offer surrender", + L"转移", //L"Distract", + L"交谈", + L"招募被策反的敌军", //L"Recruit turncoat", // TODO: confirm translation. copied from pTraitSkillsMenuStrings + + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"拆除陷阱", + L"查看陷阱", + L"移除蓝旗", + L"引爆!", + L"激活绊线", + L"关闭绊线", + L"移除绊线", + L"没有发现引爆器或远程引爆器!", + L"炸弹已经起爆了!", + L"安全", + L"基本安全", + L"可能危险", + L"危险", + L"非常危险!", + + L"面具", + L"夜视仪", + L"物品", + + L"这一功能只能通过新物品携带系统实现", + L"主手上没有物品", + L"主手上的物品无处可放", + L"便捷槽位无可放置物品", + L"没有空手来拿新物品", + L"未发现物品", + L"无法把物品转移到主手上", + + L"尝试对行进中的佣兵进行包扎...", //L"Attempting to bandage travelling mercs...", + + L"补充装备", //L"Improve gear", + L"%s对%s进行了临时补给。", //L"%s changed %s for superior version", + L"%s 捡起 %s。", //L"%s picked up %s", + + L"%s停止了与%s的交谈", //L"%s has stopped chatting with %s", + L"尝试策反", //L"Attempt to turn", +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"如果勾中,将立即进入邻近的分区。", + L"如果勾中,你将被立即自动放置在地图屏幕,\n因为你的佣兵要花些时间来行军。", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"该分区被敌军占据。你不能将佣兵留在这里。\n在进入其他分区前,你必须把这里的问题解决。", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"让留下的佣兵离开本分区,\n将立即进入邻近的分区。", + L"让留下的佣兵离开本分区,\n你将被立即自动放置在地图屏幕,\n因为你的佣兵要花些时间来行军。", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s需要被你的佣兵护送,他(她)无法独自离开本分区。", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s无法独自离开本分区,因为他得护送%s。", //male singular + L"%s无法独自离开本分区,因为她得护送%s。", //female singular + L"%s无法独自离开本分区,因为他得护送多人。", //male plural + L"%s无法独自离开本分区,因为她得护送多人。", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"如果要让小队在分区间移动的话,\n你的全部队员都必须在附近。", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"如果勾中,%s将独自行军,\n而且被自动重新分配到一个单独的小队中。", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"如果勾中,你当前选中的小队\n将会离开本分区,开始行军。", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s正在被你的佣兵护送,他(她)无法独自离开本分区。你的佣兵必须在附近以护送他(她)离开。", +}; + + + +STR16 pRepairStrings[] = +{ + L"物品", // tell merc to repair items in inventor + L"SAM导弹基地", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"取消", // cancel this menu + L"机器人", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"丧失",// the merc has lost a statistic + L"获得",// the merc has gained a statistic + L"点",// singular + L"点",// plural + L"级",//singular + L"级",//plural +}; + +STR16 sStatGainStrings[] = +{ + L"生命。", + L"敏捷。", + L"灵巧。", + L"智慧。", + L"医疗技能。", + L"爆破技能。", + L"机械技能。", + L"枪法技能。", + L"等级。", + L"力量。", + L"领导。", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"总距离: ", // total distance for helicopter to travel + L"安全: ", // distance to travel to destination + L"不安全: ", // distance to return from destination to airport + L"总价: ", // total cost of trip by helicopter + L"耗时: ", // ETA is an acronym for "estimated time of arrival" + L"直升机油量不够,必须在敌占区着陆。", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"乘客: ", + L"选择Skyrider,还是“着陆点”?", + L"Skyrider", + L"着陆点", + L"直升机严重受损,必须降落在敌军领地!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"直升机将直接返回基地,你希望在此之前放下乘客吗?", + L"剩余燃料:", + L"到加油站距离:", +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"你希望让%s来修理吗?这将花费$%d,而且直升机在%d小时左右将无法起飞。", + L"直升机正在维修。请等到修理完成。", + L"修理完成。直升机已可使用。", + L"直升机已加满油。", + + L"直升机已经超过了最大的航程!",//L"Helicopter has exceeded maximum range!", +}; + +STR16 sMapLevelString[] = +{ + L"地层: ", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"忠诚度: ", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"不能在地底下达行军命令。", +}; + +STR16 gsTimeStrings[] = +{ + L"小时", // hours abbreviation + L"分钟", // minutes abbreviation + L"秒", // seconds abbreviation + L"日", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"无", + L"医院", + L"工厂", + L"监狱", + L"军事基地", + L"机场", + L"靶场", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"存货", + L"离开", + L"修理", //L"Repair", + L"工厂", //L"Factories", +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"大小", // 0 // size of the town in sectors + L"", // blank line, required + L"占领度", // how much of town is controlled + L"无", // none of this town + L"矿区", // mine associated with this town + L"忠诚度 ",//(后空5格,工厂生产会档住其它字) // 5 // the loyalty level of this town + L"民兵", // the forces in the town trained by the player + L"", + L"主要设施", // main facilities in this town + L"等级", // the training level of civilians in this town + L"民兵训练度", // 10 // state of civilian training in town + L"民兵", // the state of the trained civilians in the town + + // Flugente: prisoner texts + L"囚犯", //L"Prisoners", + L"%d(容量 %d)", //L"%d (capacity %d)", + L"%d 行政人员", //L"%d Admins", + L"%d 常规士兵", //L"%d Regulars", + L"%d 精英", //L"%d Elites", + L"%d 军官", //L"%d Officers", + L"%d 上将", //L"%d Generals", + L"%d 平民", //L"%d Civilians", + L"%d 特殊1", //L"%d Special1", + L"%d 特殊2", //L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"矿井", // 0 + L"银块", + L"金块", + L"当前日产量", + L"最高产量", + L"废弃", // 5 + L"关闭", + L"矿脉耗尽", + L"生产", + L"状态", + L"生产率", + L"矿石类型", // 10 + L"占领度", + L"忠诚度", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"敌军", + L"分区", + L"物品数量", + L"未知", + + L"已占领", + L"是", + L"否", + L"状态/软件状态:", //L"Status/Software status:", + + L"其它情报", //L"Additional Intel", +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s不够近。", //Merc is in sector with item but not close enough + L"无法选择该佣兵。", //MARK CARTER + L"%s不在这个分区,不能拿到这个物品。", + L"在战斗时,你只能动手捡起物品。", + L"在战斗时,你只能动手放下物品。", + L"%s不在该分区,不能放下那个物品。", + L"在战斗时你没有时间开启成箱的弹药。", +}; + +STR16 pMapInventoryStrings[] = +{ + L"位置", // sector these items are in + L"物品总数", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"如果要改变佣兵的分配任务,比如分到另一个小队、当医生、进行修理等,请按 '任务' 栏。", + L"要让佣兵以另一个分区为行军目标,请按'Dest'栏。", + L"一旦对佣兵下达了行军命令 ,请按时间压缩按钮以让他们开始行进。", + L"鼠标左击以选择该分区。再次鼠标左击以对佣兵下达行军命令, 或者鼠标右击以获取分区信息小结。", + L"任何时候在该屏幕下都可以按'h'键,以弹出帮助窗口。", + L"测试文本", + L"测试文本", + L"测试文本", + L"测试文本", + L"您尚未开始Arulco之旅,现在在这个屏幕上您无事可做。当您把队员都雇佣好后,请左击右下方的“时间压缩”按钮。这样在您的队伍到达Arulco前,时间就前进了。", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"调动佣兵", // title for movement box + L"安排行军路线", // done with movement menu, start plotting movement + L"取消", // cancel this menu + L"其它", // title for group of mercs not on squads nor in vehicles + L"全选", //L"Select all", Select all squads TODO: Translate +}; + + +STR16 pUpdateMercStrings[] = +{ + L"糟了: ", // an error has occured + L"佣兵合同到期了: ", // this pop up came up due to a merc contract ending + L"佣兵完成了分配的任务: ", // this pop up....due to more than one merc finishing assignments + L"佣兵醒来了,继续干活: ", // this pop up ....due to more than one merc waking up and returing to work + L"佣兵困倦了: ", // this pop up ....due to more than one merc being tired and going to sleep + L"合同快到期了: ", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"显示城镇 (|W)", + L"显示矿井 (|M)", + L"显示队伍和敌人 (|T)", + L"显示领空 (|A)", + L"显示物品 (|I)", + L"显示民兵和敌人 (|Z)", + L"显示疾病 (|D)", //L"Show |Disease Data", + L"显示天气 (|R)", //L"Show Weathe|r", + L"显示任务 (|Q)", //L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"下一页 (|.)", // next page + L"上一页 (|,)", // previous page + L"离开 (|E|s|c)", // exit sector inventory + L"放大", // HEAROCK HAM 5: Inventory Zoom Button + L"合并堆叠同类的物品", // HEADROCK HAM 5: Stack and Merge + L"|鼠|标|左|击: 将子弹分类装入弹箱 \n|鼠|标|右|击: 将子弹分类装入纸盒 ", //L"|L|e|f|t |C|l|i|c|k: 将子弹分类装入弹箱\n|R|i|g|h|t |C|l|i|c|k: 将子弹分类装入纸盒", HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|鼠|标|左|击: 移除所有物品的附件 \n|鼠|标|右|击: 清空携行具里的物品 ", //L"|鼠|标|左|击: 移除所有物品的附件\n|鼠|标|右|击: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments + L"退出所有武器的子弹", //HEADROCK HAM 5: Eject Ammo + L"|鼠|标|左|击: 显示全部物品 \n|鼠|标|右|击: 隐藏全部物品 ", // HEADROCK HAM 5: Filter Button + L"|鼠|标|左|击: 切换显示武器 \n|鼠|标|右|击: 只显示武器 ", // HEADROCK HAM 5: Filter Button + L"|鼠|标|左|击: 切换显示弹药 \n|鼠|标|右|击: 只显示弹药 ", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|鼠|标|左|击: 切换显示爆炸物 \n|鼠|标|右|击: 只显示爆炸物 ", // HEADROCK HAM 5: Filter Button + L"|鼠|标|左|击: 切换显示近战武器 \n|鼠|标|右|击: 只显示近战武器 ", // HEADROCK HAM 5: Filter Button + L"|鼠|标|左|击: 切换显示护甲 \n|鼠|标|右|击: 只显示护甲 ", // HEADROCK HAM 5: Filter Button + L"|鼠|标|左|击: 切换显示携行具 \n|鼠|标|右|击: 只显示携行具 ", // HEADROCK HAM 5: Filter Button + L"|鼠|标|左|击: 切换显示医疗物品 \n|鼠|标|右|击: 只显示医疗物品 ", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|鼠|标|左|击: 切换显示杂项物品 \n|鼠|标|右|击: 只显示杂项物品 ", // HEADROCK HAM 5: Filter Button + L"切换搬运中的物品", // Flugente: move item display + L"保存装备模版", //L"Save Gear Template", + L"载入装备模版...", //L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"笔记本电脑 (|L)", + L"战术屏幕 (|E|s|c)", + L"选项 (|O)", + L"时间压缩 (|+)", // time compress more + L"时间压缩 (|-)", // time compress less + L"上一条信息 (|U|p)\n上一页 (|P|g|U|p)", // previous message in scrollable list + L"下一条信息 (|D|o|w|n)\n下一页 (|P|g|D|n)", // next message in the scrollable list + L"开始/停止时间压缩 (|S|p|a|c|e)", //"Start/Stop Time (|S|p|a|c|e)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"帐户余额", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s死了。", +}; + + +STR16 pDayStrings[] = +{ + L"日", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Enrico", + L"Psych Pro Inc", + L"Help Desk", + L"Psych Pro Inc", + L"Speck", + L"R.I.S.", //5 + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", //10 + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", //15 + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", //20 + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", //25 + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", //30 + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephen", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"M.I.S. Insurance", + L"Bobby Rays", + L"Kingpin", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"上一个", + L"下一个", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"你有新的邮件...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"删除邮件?", + L"删除未读的邮件?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"来自: ", + L"标题: ", + L"日期: ", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"邮箱", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"帐簿", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"收入: ", // credit (subtract from) to player's account + L"支出: ", // debit (add to) to player's account + L"昨日实际收入: ", + L"昨日其它存款: ", + L"昨日支出: ", + L"昨日日终余额: ", + L"今日实际收入: ", + L"今日其它存款: ", + L"今日支出: ", + L"今日当前余额: ", + L"预期收入: ", + L"明日预计余额: ", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"天数", // the day column + L"收入", // the credits column (to ADD money to your account) + L"支出", // the debits column (to SUBTRACT money from your account) + L"交易记录", // transaction type - see TransactionText below + L"余额", // balance at this point in time + L"页数", // page number + L"日", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"自然增值利息", // interest the player has accumulated so far + L"匿名存款", + L"交易费用", + L"已雇佣", // Merc was hired + L"在Bobby Ray购买货品", // Bobby Ray is the name of an arms dealer + L"在M.E.R.C开户。", + L"%s的医疗保证金", // medical deposit for merc + L"IMP心理剖析分析", // IMP is the acronym for International Mercenary Profiling + L"为%s购买保险", + L"缩短%s的保险期限", + L"延长%s的保险期限", // johnny contract extended + L"取消%s的保险", + L"%s的保险索赔", // insurance claim for merc + L"1日", // merc's contract extended for a day + L"1周", // merc's contract extended for a week + L"2周", // ... for 2 weeks + L"采矿收入", + L"", //String nuked + L"买花", + L"%s的医疗保证金的全额退款", + L"%s的医疗保证金的部分退款", + L"%s的医疗保证金没有退款", + L"付给%s金钱",// %s is the name of the npc being paid + L"支付给%s的佣金", // transfer funds to a merc + L"%s退回的佣金", // transfer funds from a merc + L"在%s训练民兵", // initial cost to equip a town's militia + L"向%s购买了物品。", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s存款。", + L"将装备卖给了当地人", + L"工厂使用", // L"Facility Use", // HEADROCK HAM 3.6 + L"民兵保养", // L"Militia upkeep", // HEADROCK HAM 3.6 + L"释放俘虏所需的赎金", //L"Ransom for released prisoners", + L"记录捐款费", //L"WHO data subscription", // Flugente: disease + L"Kerberus安保公司的费用", //L"Payment to Kerberus",  // Flugente: PMC + L"修理SAM基地",//L"SAM site repair", // Flugente: SAM repair + L"培训工人",//L"Trained workers", // Flugente: train workers + L"在%s区域训练民兵", //L"Drill militia in %s", Flugente: drill militia + L"微型事件", //L"Mini event", rftr: mini events + L"从反抗军司令部转移资金", //L"Funds transferred from rebel command", rftr: rebel command + L"资金转移到反抗军司令部", //L"Funds transferred to rebel command", rftr: rebel command + L"支付赏金", //L"Bounty payout", rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"的保险", // insurance for a merc + L"延长%s的合同一日。", // entend mercs contract by a day + L"延长%s的合同一周。", + L"延长%s的合同两周。", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"付给Skyrider,$%d", // skyrider was paid an amount of money + L"还欠Skyrider,$%d", // skyrider is still owed an amount of money + L"Skyrider完成补给汽油",// skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider已作好再次飞行的准备。", // Skyrider was grounded but has been freed + L"Skyrider没有乘客。如果你试图运送这个分区的佣兵,首先要分配他们进入“交通工具”->“直升飞机”。", +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"高涨", + L"良好", + L"稳定", + L"低下", + L"恐慌", + L"糟糕", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"%s的装备现在可以在Omerta (A9)获得。", + L"%s的装备现在可以在Drassen (B13)获得。", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"生命", + L"精力", + L"士气", + L"状态", // the condition of the current vehicle (its "health") + L"油量", // the fuel level of the current vehicle (its "energy") + L"毒性", // Posion + L"口渴", // drink level + L"饥饿", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"上一佣兵 (|L|e|f|t)", //"Previous Merc (|L|e|f|t)", // previous merc in the list + L"下一佣兵 (|R|i|g|h|t)", //"Next Merc (|R|i|g|h|t)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"耗时: ", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"你将不会再见到它了。你确定吗?", // do you want to continue and lose the item forever + L"这个物品看起来非常非常重要。你真的要扔掉它吗?", // does the user REALLY want to trash this item +}; + + +STR16 pMapErrorString[] = +{ + L"小队不能行军,因为有人在睡觉。", + +//1-5 + L"首先要回到地面,才能移动小队。", + L"行军?那里是敌占区!", + L"必须给佣兵分配小队或者交通工具才能开始行军。", + L"你现在没有任何队员。", // you have no members, can't do anything + L"佣兵无法遵从命令。", // merc can't comply with your order +//6-10 + L"需要有人护送才能行军。请把他分进一个小队里。", // merc can't move unescorted .. for a male + L"需要有人护送才能行军。请把她分进一个小队里。", // for a female + L"佣兵尚未到达%s!", + L"看来得先谈妥合同。", + L"无法发出行军命令。目前有空袭。", +//11-15 + L"行军?这里正在战斗中!", + L"你在分区%s被血猫伏击了!", + L"你刚刚进入了%s分区,这里是血猫的巢穴!", // HEADROCK HAM 3.6: Added argument. + L"", + L"在%s的SAM导弹基地被敌军占领了。", +//16-20 + L"在%s的矿井被敌军占领了。你的日收入下降为每日%s。", + L"敌军未遭到抵抗,就占领了%s。", + L"至少有一名你的佣兵不能被分配这个任务。", + L"%s无法加入%s,因为它已经满员了。", + L"%s无法加入%s,因为它太远了。", +//21-25 + L"在%s的矿井被敌军占领了!", + L"敌军入侵了%s处的SAM导弹基地。", + L"敌军入侵了%s。", + L"敌军在%s出没。", + L"敌军占领了%s。", +//26-30 + L"你的佣兵中至少有一人不能睡眠。", + L"你的佣兵中至少有一人不能醒来。", + L"训练完毕,才会出现民兵。", + L"现在无法对%s下达行军命令。", + L"不在城镇边界的民兵无法行军到另一个分区。", +//31-35 + L"你不能在%s拥有民兵。", + L"车是空的,无法移动!", + L"%s受伤太严重了,无法行军!", + L"你必须首先离开博物馆!", + L"%s死了!", +//36-40 + L"%s无法转到%s,因为它在移动中。", + L"%s无法那样进入交通工具。", + L"%s无法加入%s。", + L"在你雇佣新的佣兵前,你不能压缩时间。", + L"车辆只能在公路上开!", +//41-45 + L"在佣兵移动时,你不能重新分配任务。", + L"车辆没油了!", + L"%s太累了,以致不能行军。", + L"车上没有人能够驾驶。", + L"这个小队的佣兵现在不能移动。", +//46-50 + L"其他佣兵现在不能移动。", + L"车辆被损坏得太严重了!", + L"每个分区只能由两名佣兵来训练民兵。", + L"没有遥控员,机器人无法移动。请把他们分配在同一个小队。", + L"物品不能被移动到%s,由于没有有效的空投地点。请进入地图解决这个问题。",//L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", +// 51-55 + L"%d 物品移动 %s到%s",//L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"再点击一下目的地以确认你的最后路线,或者点击下一个分区以设置更多的路点。", + L"行军路线已确认。", + L"目的地未改变。", + L"行军路线已取消。", + L"行军路线已缩短。", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"点击你想让佣兵着陆的分区。", + L"好的。佣兵将在%s着陆。", + L"佣兵不能飞往那里,领空不安全!", + L"取消。着陆分区未改变。", + L"%s上的领空现在不安全了!着陆分区被改为%s。", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"进入装备界面 (|E|n|t|e|r)", + L"扔掉物品", //"Throw Item Away", + L"离开装备界面 (|E|n|t|e|r)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"让%s把装备留在他现在所在的地方(%s),或者在(%s)登机飞离,把装备留在那里?", + L"%s要离开了,他的装备将被留在%s。", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"让%s把装备留在她现在所在的地方(%s),或者在(%s)登机飞离,把装备留在那里?", + L"%s要离开了,她的装备将被留在%s。", +}; + + +STR16 pMercContractOverStrings[] = +{ + L"的合同到期了,所以他回家了。", + L"的合同到期了,所以她回家了。", + L"的合同中止了,所以他离开了。", + L"的合同中止了,所以她离开了。", + L"你欠了M.E.R.C太多钱,所以%s离开了。", +}; + +// Text used on IMP Web Pages + +// WDS: Allow flexible numbers of IMPs of each sex +// note: I only updated the English text to remove "three" below +STR16 pImpPopUpStrings[] = +{ + L"无效的授权号", + L"你试图重新开始整个测试。你确定吗?", + L"请输入正确的全名和性别。", + L"对你的财政状况的预先分析显示了你无法负担心理剖析的费用。", + L"现在不是个有效的选择。", + L"要进行心理剖析,你的队伍中必须至少留一个空位。", + L"测试完毕。", + L"无法从磁盘上读入I.M.P人物数据。", + L"你已经达到I.M.P人物上限。", + L"你已经达到I.M.P该性别人物上限。", + L"你无法支付此I.M.P人物的费用。", // 10 + L"新的I.M.P人物加入了你的队伍。", + L"你已经设置了最大数量的佣兵特性。", + L"未找到语音包。", //L"No voicesets found.", +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"关于我们", // about the IMP site + L"开始", // begin profiling + L"特长", // personality section + L"属性", // personal stats/attributes section + L"外表", // changed from portrait - SANDRO + L"嗓音%d", // the voice selection + L"完成", // done profiling + L"重新开始", // start over profiling + L"是的,我选择了高亮突出的回答。", + L"是", + L"否", + L"结束", // finished answering questions + L"上一个", // previous question..abbreviated form + L"下一个", // next question + L"是的,我确定。", // yes, I am certain + L"不,我想重新开始。", + L"是", + L"否", + L"后退", // back one page + L"取消", // cancel selection + L"是的,我确定。", + L"不,让我再看看。", + L"注册", // the IMP site registry..when name and gender is selected + L"分析...", // analyzing your profile results + L"完成", + L"性格", // Change from "Voice" - SANDRO + L"无", //"None", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed - SANDRO + L"选择完角色性格特征之后,接着选择您所掌握的技能。", + L"最后调整好你的各项属性值完成整个自创角色过程。", + L"开始实际分析,请先选择头像、声音和颜色。", + L"初步阶段完成,现在开始角色性格特征分析部分。", +}; + +STR16 pFilesTitle[] = +{ + L"文件查看器", +}; + +STR16 pFilesSenderList[] = +{ + L"侦察报告", + L"1号通缉令", + L"2号通缉令", + L"3号通缉令", + L"4号通缉令", + L"5号通缉令", + L"6号通缉令", +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"日志", +}; + +STR16 pHistoryHeaders[] = +{ + L"日", // the day the history event occurred + L"页数", // the current page in the history report we are in + L"日数", // the days the history report occurs over + L"位置", // location (in sector) the event occurred + L"事件", // the event label +}; + +// Externalized to "TableData\History.xml" +/* +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"从A.I.M雇佣了%s。", + L"从M.E.R.C雇佣了%s。", + L"%s死了。", //"%s died.", // merc was killed + L"在M.E.R.C开户。", + L"接受Enrico Chivaldori的委托", //"Accepted Assignment From Enrico Chivaldori", + //6-10 + L"IMP已生成", + L"为%s购买保险。", + L"取消%s的保险合同。", + L"收到%s的保险索赔。", + L"延长一日%s的合同。", + //11-15 + L"延长一周%s的合同。", + L"延长两周%s的合同。", + L"%s被解雇了。", + L"%s退出了。", + L"开始任务。", + //16-20 + L"完成任务。", + L"和%s的矿主交谈", + L"解放了%s", + L"启用作弊", + L"食物会在明天送达Omerta", + //21-25 + L"%s离队并成为了Daryl Hick的妻子", + L"%s的合同到期了。", + L"招募了%s。", + L"Enrico抱怨进展缓慢", + L"战斗胜利", + //26-30 + L"%s的矿井开始缺乏矿石", + L"%s的矿井采完了矿石", + L"%s的矿井关闭了", //"%s mine was shut down", + L"%s的矿井复工了", + L"发现一个叫Tixa的监狱。", + //31-35 + L"打听到一个叫Orta的秘密武器工厂。", + L"在Orta的科学家捐赠了大量的火箭枪。", + L"Deidranna女王在利用死尸做某些事情。", + L"Frank谈到了在San Mona的拳击比赛。", + L"一个病人说他在矿井里看到了一些东西。", + //36-40 + L"遇到一个叫Devin的人,他出售爆炸物。", + L"偶遇Mike,前AIM名人!", + L"遇到Tony,他做武器买卖。", + L"从Krott中士那里得到一把火箭枪。", + L"把Angel皮衣店的契约给了Kyle。", + //41-45 + L"Madlab提议做一个机器人。", + L"Gabby能制作对付虫子的隐形药。", + L"Keith歇业了。", + L"Howard给Deidranna女王提供氰化物。", + L"遇到Keith -Cambria的杂货商。", + //46-50 + L"遇到Howrd,一个在Balime的医药商。", + L"遇到Perko,他开了一家小修理档口。。", + L"遇到在Balime的Sam,他有一家五金店。", + L"Franz做电子产品和其它货物的生意。", + L"Arnold在Grumm开了一家修理店。", + //51-55 + L"Fredo在Grumm修理电子产品。", + L"收到在Balime的有钱人的捐款。", + L"遇到一个叫Jake的废品商人。", + L"一个流浪者给了我们一张电子钥匙卡。", + L"贿赂了Walter,让他打开地下室的门。", + //56-60 + L"如果Dave有汽油,他会免费进行加油。", + L"贿赂Pablo。", + L"Kingping拿回了San Mona矿井中的钱。", + L"%s赢了拳击赛", + L"%s输了拳击赛", + //61-65 + L"%s丧失了拳击赛的参赛资格", + L"在废弃的矿井里找到一大笔钱。", + L"遭遇Kingpin派出的杀手。", + L"该分区失守", //ENEMY_INVASION_CODE + L"成功防御该分区", + //66-70 + L"作战失败", //ENEMY_ENCOUNTER_CODE + L"致命的伏击", //ENEMY_AMBUSH_CODE + L"杀光了敌军的伏兵", + L"攻击失败", //ENTERING_ENEMY_SECTOR_CODE + L"攻击成功!", + //71-75 + L"异形攻击", //CREATURE_ATTACK_CODE + L"被血猫吃掉了", //BLOODCAT_AMBUSH_CODE + L"宰掉了血猫", + L"%s被干掉了", + L"把一个恐怖分子的头颅给了Carmen", + //76-80 + L"Slay走了", + L"干掉了%s", + L"碰到了Waldo飞机机械师。",//L"Met Waldo - aircraft mechanic.", + L"直升机维修开始。预计时间: %d小时(s)。",//L"Helicopter repairs started. Estimated time: %d hour(s).", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"N/A", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"邮箱", + L"网页", + L"财务", + L"人事", + L"日志", + L"文件", + L"关闭", + L"Sir-FER 4.0 简体中文版", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"A.I.M", + L"Bobby Ray's", + L"I.M.P", + L"M.E.R.C", + L"公墓", + L"花店", + L" M.I.S 保险公司", + L"取消", + L"百科全书", + L"简报室", + L"战役历史", + L"佣兵之家", //L"MeLoDY", + L"世界卫生组织", //L"WHO",  + L"安保公司", //L"Kerberus", + L"民兵总览",//L"Militia Overview", + L"R.I.S", + L"工厂", //L"Factories", + L"A.R.C", //L"A.R.C", +}; + +STR16 pBookmarkTitle[] = +{ + L"收藏夹", + L"右击以放进收藏夹,便于以后访问本页面。", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"下载...", + L"重载...", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"好的", + L"拿取", // take money from merc + L"给予", //give money to merc + L"取消", // cancel transaction + L"清除", //clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"状态", //L"Stats", // view stats of the merc + L"更多状态", //L"More Stats", + L"雇佣合同", //L"Employment", + L"物品清单", //L"Inventory", // view the inventory of the merc +}; + +STR16 sATMText[ ]= +{ + L"转帐?", // transfer funds to merc? + L"确定?", // are we certain? + L"输入金额", // enter the amount you want to transfer to merc + L"选择类型", // select the type of transfer to merc + L"资金不足", //not enough money to transfer to merc + L"必须是$10的倍数", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"错误", + L"服务器没有DNS入口。", + L"请检查URL地址,再次尝试连接。", + L"好的", + L"主机连接时断时续。预计需要较长的传输时间。", +}; + + +STR16 pPersonnelString[] = +{ + L"佣兵: ", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0 简体中文版", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"A.I.M", + L"A.I.M 成员", + L"A.I.M 肖像", // a mug shot is another name for a portrait + L"A.I.M 排序", + L"A.I.M", + L"A.I.M 前成员", + L"A.I.M 规则", + L"A.I.M 历史", + L"A.I.M 链接", + L"M.E.R.C", + L"M.E.R.C 账号", + L"M.E.R.C 注册", + L"M.E.R.C 索引", + L"Bobby Ray 商店", + L"Bobby Ray - 枪械", + L"Bobby Ray - 弹药", + L"Bobby Ray - 护甲", + L"Bobby Ray - 杂货", //"Bobby Ray's - Misc", //misc is an abbreviation for miscellaneous + L"Bobby Ray - 二手货", + L"Bobby Ray - 邮购", + L"I.M.P", + L"I.M.P", + L"联合花卉服务公司", + L"联合花卉服务公司 - 花卉", + L"联合花卉服务公司 - 订单", + L"联合花卉服务公司 - 贺卡", + L"Malleus, Incus & Stapes 保险公司", + L"信息", + L"合同", + L"评论", + L"McGillicutty 公墓", + L"", + L"无法找到URL。", + L"%s新闻发布会 - 战役总结", + L"%s新闻发布会 - 战役报告", + L"%s新闻发布会 - 最新消息", + L"%s新闻发布会 - 关于我们", + L"佣兵之家 - 关于我们", //L"Mercs Love or Dislike You - About us", + L"佣兵之家 - 队伍分析", //L"Mercs Love or Dislike You - Analyze a team", + L"佣兵之家 - 成对分析", //L"Mercs Love or Dislike You - Pairwise comparison", + L"佣兵之家 - 个人分析", //L"Mercs Love or Dislike You - Personality", + L"世界卫生组织 - 关于世界卫生组织", //L"WHO - About WHO", + L"世界卫生组织 - Arulco的疾病", //L"WHO - Disease in Arulco", + L"世界卫生组织 - 有用的贴士", //L"WHO - Helpful Tips", + L"Kerberus安保公司 - 关于我们", //L"Kerberus - About Us", + L"Kerberus安保公司 - 雇佣队伍", //L"Kerberus - Hire a Team", + L"Kerberus安保公司 - 独立协议", //L"Kerberus - Individual Contracts", + L"民兵总览", //L"Militia Overview", + L"侦察情报局 - 情报需求", //L"Recon Intelligence Services - Information Requests", + L"侦察情报局 - 情报验证", //L"Recon Intelligence Services - Information Verification", + L"侦察情报局 - 关于我们", //L"Recon Intelligence Services - About us", + L"工厂概况", //L"Factory Overview", + L"Bobby Ray - 最近的运货", + L"百科全书", + L"百科全书 - 数据", + L"简报室", + L"简报室 - 数据", + L"", //LAPTOP_MODE_BRIEFING_ROOM_ENTER + L"", //LAPTOP_MODE_AIM_MEMBERS_ARCHIVES_NEW + L"A.R.C", //L"A.R.C", +}; + +STR16 pShowBookmarkString[] = +{ + L"Sir 帮助",//L"Sir-Help", + L"再次点击页面以放进收藏夹。", +}; + +STR16 pLaptopTitles[] = +{ + L"邮箱", + L"文件查看器", + L"人事", + L"帐簿", + L"日志", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"阵亡", + L"解雇", + L"其他: ", + L"结婚", + L"合同到期", + L"退出", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"当前成员: ", + L"离队成员: ", + L"每日花费: ", + L"最高日薪: ", + L"最低日薪: ", + L"行动中牺牲: ", + L"解雇: ", + L"其他: ", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"最低", + L"平均", + L"最高", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"生命", + L"敏捷", + L"灵巧", + L"力量", + L"领导", + L"智慧", + L"级别", + L"枪法", + L"机械", + L"爆破", + L"医疗", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"合同", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"继续", + L"停止", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"你在这个地区战败了!", + L"敌人冷酷无情地处死了你的队员!", + L"你昏迷的队员被俘虏了!", + L"你的队员被敌军俘虏了。", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"上一页", + L"下一页", + L"接受", + L"清除", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"上一页", + L"下一页", +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"支付", + L"主页", + L"账号:", + L"佣兵", + L"日数", + L"日薪", //5 + L"索价", + L"合计:", + L"你确定要支付%s吗?", + L"%s (+装备)", //L"%s (+gear)", +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"上一页", + L"下一页", +}; + + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"生命", + L"敏捷", + L"灵巧", + L"力量", + L"领导", + L"智慧", + L"级别", + L"枪法", + L"机械", + L"爆破", + L"医疗", + + L"上一位", //"Previous", + L"雇佣", //"Hire", + L"下一位", //"Next", + L"附加信息", //"Additional Info", + L"主页", //"Home", + L"已雇佣", //"Hired", + L"日薪:", //"Salary:", + L"每日", //"per Day", + L"装备:", //"Gear:", + L"合计:", //"Total:", + L"阵亡", //"Deceased", + + L"你的队伍已经满员了。", //L"You have a full team of mercs already.", + L"购买装备?", //"Buy Equipment?", + L"不可雇佣", //"Unavailable", + L"未结账单", //L"Unsettled Bills", + L"生平", //L"Bio", + L"物品", //L"Inv", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"开户", //"Open Account", + L"取消", //"Cancel", + L"你没有帐户。你希望开一个吗?", //"You have no account. Would you like to open one?", +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L" Speck T. Kline 创办者和拥有者", + L"开户点击这里", //"To open an account press here", + L"查看帐户点击这里", //"To view account press here", + L"查看文件点击这里", //"To view files press here", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"转账失败,暂无可用资金。", +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"McGillicutty公墓: 1983开业,办理家庭悼念业务。", + L"葬礼部经理兼A.I.M前佣兵 Murray \"Pops\" McGillicutty是一名经验丰富、业务熟练的殡仪业者。", + L"Pops跟死亡和葬礼打了一辈子交道,他非常熟悉该业务。", + L"McGillicutty公墓提供各种各样的悼念服务: 从可以依靠着哭泣的肩膀到对严重变形的遗体做美容美体服务。", + L"McGillicutty公墓是你所爱的人的安息地。", + + // Text for the various links available at the bottom of the page + L"献花", + L"骨灰盒", + L"火葬服务", + L"安排葬礼", + L"葬礼规则", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"很抱歉,由于家里有人去世,本网站的剩余部分尚未完成。一旦解决了宣读遗嘱和财产分配问题,本网站会尽快建设好。", + L"很抱歉,但是,现在还是测试期间,请以后再来访问。", +}; + +// Text for the florist Home page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"花卉", + + //Address of United Florist + + L"\"我们空投至任何地区\"",//L"\"We air-drop anywhere\"", + L"1-555-SCENT-ME", + L"333 NoseGay Dr, Seedy City, CA USA 90210", + L"http://www.scent-me.com", + + // detail of the florist page + + L"我们快速高效!", + L"保证把鲜花在第二天送到世界上大部分地区,但有少量限制。", + L"保证价格是世界上最低廉的!", + L"向我们反应比我们价格更低的送花服务广告,我们会送你一打绝对免费的玫瑰。", + L"自从1981年来,我们送植物、送动物、送鲜花。", + L"我们雇请了被颁发过勋章的前轰炸机飞行员,他们能把你的鲜花空投在指定位置的十英里半径内。总是这样 - 每次这样!", + L"让我们满足你对鲜花的品位。", + L"让Bruce,我们的世界闻名的花卉设计师,从我们的花房里为你亲手摘取最新鲜、最优质的花束。", + L"还有请记住,如果我们没有你要的花,我们能种出来 - 很快!", +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"后退", //"Back", + L"发送", //"Send", + L"清除", //"Clear", + L"花卉", //"Gallery", + + L"花卉名称: ", //"Name of Bouquet:", + L"价格: ", //"Price:",//5 + L"订单号: ", //"Order Number:", + L"送货日期", //"Delivery Date", + L"第二天", //"next day", + L"慢慢送去", //"gets there when it gets there", + L"送货目的地", //"Delivery Location",//10 + L"额外服务", //"Additional Services", + L"变形的花卉($10)", //"Crushed Bouquet($10)", + L"黑玫瑰($20)", //"Black Roses($20)", + L"枯萎的花卉($10)", //"Wilted Bouquet($10)", + L"水果蛋糕(如果有的话)($10)", //"Fruit Cake (if available)($10)", //15 + L"私人密语: ", //"Personal Sentiments:", + L"你写的话不能多于75字。", + L"...或者选择我们提供的", //L"...or select from one of our", + + L"标准贺卡", //"STANDARDIZED CARDS", + L"传单信息", //"Billing Information", //20 + + //The text that goes beside the area where the user can enter their name + + L"姓名: ", //"Name:", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"上一页", //abbreviation for previous + L"下一页", //abbreviation for next + + L"点击你想要订购的花卉。", + L"请注意: 为了防止运输中的枯萎和变形,每束花另收$10包装费。", + + //text on the button + + L"主页", //"Home", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"请点击你想要订购的贺卡", //"Click on your selection", + L"后退", //"Back", +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"订单", //"Order Form", //Title of the page + L"数量", //"Qty", // The number of items ordered + L"重量(%s)", //"Weight (%s)", // The weight of the item + L"物品名称", //"Item Name", // The name of the item + L"物品单价", //"Unit Price", // the item's weight + L"总价", //"Total", //5 // The total price of all of items of the same type + L"全部物品总价", //"Sub-Total", // The sub total of all the item totals added + L"运费(视目的地而定)", // "S&H (See Delivery Loc.)", // S&H is an acronym for Shipping and Handling + L"全部费用", //"Grand Total", // The grand total of all item totals + the shipping and handling + L"送货目的地", //"Delivery Location", + L"运输速度", //"Shipping Speed", //10 // See below + L"运费(每%s)", //"Cost (per %s.)", // The cost to ship the items + L"连夜速递", //"Overnight Express", // Gets deliverd the next day + L"2工作日", //"2 Business Days", // Gets delivered in 2 days + L"标准服务", //"Standard Service", // Gets delivered in 3 days + L"清除订单", //"Clear Order", //15// Clears the order page + L"确认订单", //"Accept Order", // Accept the order + L"后退", //"Back", // text on the button that returns to the previous page + L"主页", //"Home", // Text on the button that returns to the home page + L"*代表二手货", //"* Denotes Used Items", // Disclaimer stating that the item is used + L"你无法支付所需费用。", //"You can't afford to pay for this.", //20 // A popup message that to warn of not enough money + L"<无>", //"", // Gets displayed when there is no valid city selected + L"你确定要把该订单里订购的物品送往%s吗?", //"Are you sure you want to send this order to %s?", // A popup that asks if the city selected is the correct one + L"包裹重量**", //"Package Weight**", // Displays the weight of the package + L"** 最小重量: ", //"** Min. Wt.", // Disclaimer states that there is a minimum weight for the package + L"运货", //"Shipments", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"手枪", //"Pistol", + L"自动手枪", //"M. Pistol", + L"冲锋枪", //"SMG", + L"歩枪", //"Rifle", + L"狙击歩枪", //"SN Rifle", + L"突击歩枪", //"AS Rifle", + L"机枪", //"MG", + L"霰弹枪", //"Shotgun", + L"重武器", //"Heavy W.", + + // Ammo + L"手枪", //"Pistol", + L"自动手枪", //"M. Pistol", + L"冲锋枪", //"SMG", + L"歩枪", //"Rifle", + L"狙击歩枪", //"SN Rifle", + L"突击歩枪", //"AS Rifle", + L"机枪", //"MG", + L"霰弹枪", //"Shotgun", + + // Used + L"枪械", //"Guns", + L"护甲", //"Armor", + L"携行具", //"LBE Gear", + L"杂货", //"Misc", + + // Armour + L"头盔", //"Helmets", + L"防弹衣", //"Vests", + L"作战裤", //"Leggings", + L"防弹板", //"Plates", + + // Misc + L"刀具", //"Blades", + L"飞刀", //"Th. Knives", + L"格斗武器", //"Blunt W.", + L"手雷/榴弹", //"Grenades", + L"炸药", //"Bombs", + L"医疗用品", //"Med. Kits", + L"工具套装", //"Kits", + L"头部装备", //"Face Items", + L"携行具", //"LBE Gear", + L"瞄具", // Madd: new BR filters + L"握把/脚架", + L"消音类", + L"枪托", + L"弹匣/板机", + L"其它附件", + L"其它", //"Misc.", +}; + + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"订购", //"To Order", // Title + // instructions on how to order + L"请点击该物品。如果要订购多件,请连续点击。右击以减少要订购的数量。一旦选好了你要订购的,请前往订单页面。", + + //Text on the buttons to go the various links + + L"上一页", //"Previous Items", // + L"枪械", //"Guns", //3 + L"弹药", //"Ammo", //4 + L"护甲", //"Armor", //5 + L"杂货", //"Misc.", //6 //misc is an abbreviation for miscellaneous + L"二手货", //"Used", //7 + L"下一页", //"More Items", + L"订货单", //"ORDER FORM", + L"主页", //"Home", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"你的队伍有", //"Your team has",//11 + L"件可使用该类型弹药的武器", //"weapon(s) that use this type of ammo", //12 + + //The following lines provide information on the items + + L"重量: ", //"Weight:", // Weight of all the items of the same type + L"口径: ", //"Cal:", // the caliber of the gun + L"载弹量: ", //"Mag:", // number of rounds of ammo the Magazine can hold + L"射程: ", //"Rng:", // The range of the gun + L"杀伤力: ", //"Dam:", // Damage of the weapon + L"射速: ", //"ROF:", // Weapon's Rate Of Fire, acronym ROF + L"AP: ", //L"AP:", // Weapon's Action Points, acronym AP + L"晕眩: ", //L"Stun:", // Weapon's Stun Damage + L"防护: ", //L"Protect:", // Armour's Protection + L"伪装: ", //L"Camo:", // Armour's Camouflage + L"侵彻力:", //L"Armor Pen:", Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"翻搅力:", //L"Dmg Mod:", Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"弹丸量:", //L"Projectiles:", Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"单价: ", //"Cost:", // Cost of the item + L"库存: ", //"In stock:", // The number of items still in the store's inventory + L"购买量: ", //"Qty on Order:", // The number of items on order + L"已损坏", //"Damaged", // If the item is damaged + L"重量: ", //"Weight:", // the Weight of the item + L"小计: ", //"SubTotal:", // The total cost of all items on order + L"* %% 可用", //"* %% Functional", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"靠!我们这里的在线订单一次只接受", //L"Darn! This on-line order form will only accept ", First part + L"件物品的订购。如果你想要订购更多东西(我们希望如此),请接受我们的歉意,再开一份订单。", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"抱歉,这种商品我们现在正在进货。请稍后再来订购。", + + //A popup that tells the user that the store is temporarily sold out + + L"抱歉,这种商品我们现在缺货。", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"这里有最新最火爆的军火供应", //"This is the place to be for the newest and hottest in weaponry and military supplies", + L"我们提供硬件满足您所有破坏欲望!", //"We can find the perfect solution for all your explosives needs", + L"二手货", //"Used and refitted items", + + //Text for the various links to the sub pages + + L"杂货", //"Miscellaneous", + L"枪械", //"GUNS", + L"弹药", //"AMMUNITION", //5 + L"护甲", //"ARMOR", + + //Details on the web site + + L"独此一家,别无分店!", //"If we don't sell it, you can't get it!", + L"网站建设中", //"Under Construction", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"A.I.M 成员", //"A.I.M. Members", // Title + // Title for the way to sort + L"排序: ", //"Sort By:", + + // sort by... + + L"薪金", //"Price", + L"级别", //"Experience", + L"枪法", //"Marksmanship", + L"机械", //"Mechanical", + L"爆破", //"Explosives", + L"医疗", //"Medical", + L"生命", //"Health", + L"敏捷", //"Agility", + L"灵巧", //"Dexterity", + L"力量", //"Strength", + L"领导", //"Leadership", + L"智慧", //"Wisdom", + L"姓名", //"Name", + + //Text of the links to other AIM pages + + L"查看佣兵的肖像索引", //"View the mercenary mug shot index", + L"查看单独的佣兵档案", //"Review the individual mercenary's file", + L"浏览 A.I.M 前成员", //"Browse the A.I.M. Alumni Gallery", + + // text to display how the entries will be sorted + + L"升序", //"Ascending", + L"降序", //"Descending", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"上一页", //"Previous Page", + L"AIM主页", //"AIM HomePage", + L"规则索引", //"Policy Index", + L"下一页", //"Next Page", + L"不同意", //Disagree", + L"同意", //"Agree", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"鼠标左击", //"Left Click", + L"联系佣兵。", //"to Contact Merc.", + L"鼠标右击", //"Right Click", + L"回到肖像索引。", //"for Mug Shot Index.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"生命", + L"敏捷", + L"灵巧", + L"力量", + L"领导", + L"智慧", + L"级别", + L"枪法", + L"机械", + L"爆破", + L"医疗", + + // the contract expenses' area + + L"费用", //"Fee", + L"合同", //"Contract", + L"一日", //"one day", + L"一周", //"one week", + L"两周", //"two weeks", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"上一位", //"Previous", + L"联系", //"Contact", + L"下一位", //"Next", + + L"附加信息", //"Additional Info", // Title for the additional info for the merc's bio + L"现役成员", //"Active Members", //20 // Title of the page + L"可选装备:", //"Optional Gear:", // Displays the optional gear cost + L"装备", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's + L"所需医疗保证金", //"MEDICAL deposit required", // If the merc required a medical deposit, this is displayed + L"装备1", // Text on Starting Gear Selection Button 1 + L"装备2", // Text on Starting Gear Selection Button 2 + L"装备3", // Text on Starting Gear Selection Button 3 + L"装备4", // Text on Starting Gear Selection Button 4 + L"装备5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"合同总价:", //"Contract Charge:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"一日", //"One Day", + L"一周", //"One Week", + L"两周", //"Two Weeks", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"不买装备", //"No Equipment", + L"购买装备", //"Buy Equipment", + + // Text on the Buttons + + L"转帐", //"TRANSFER FUNDS", // to actually hire the merc + L"取消", //"CANCEL", // go back to the previous menu + L"雇佣", //"HIRE", // go to menu in which you can hire the merc + L"挂断", //"HANG UP", // stops talking with the merc + L"完成", //"OK", + L"留言", //"LEAVE MESSAGE", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"视频通讯: ", //"Video Conferencing with", + L"建立连接……", //"Connecting. . .", + + L"包括医保", //"with medical", // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"电子转帐成功", //"ELECTRONIC FUNDS TRANSFER SUCCESSFUL", // You hired the merc + L"无法处理转帐", //"UNABLE TO PROCESS TRANSFER", // Player doesn't have enough money, message 1 + L"资金不足", //"INSUFFICIENT FUNDS", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"执行任务中", //"On Assignment" + L"请留言", //"Please Leave Message", + L"阵亡", //"Deceased", + + //If you try to hire more mercs than game can support + + L"你的队伍已经满员了。", //L"You have a full team of mercs already.", + + L"预录消息", //"Pre-recorded message", + L"留言已记录", //"Message recorded", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"A.I.M 链接",// L"A.I.M. Links", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"A.I.M 历史", //"A.I.M. History", //Title + + // Text on the buttons at the bottom of the page + + L"上一页", //"Previous Page", + L"主页", //"Home", + L"A.I.M 前成员", //"A.I.M. Alumni", + L"下一页", //"Next Page", +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"薪金", //"Price", + L"级别", //"Experience", + L"枪法", //"Marksmanship", + L"机械", //"Mechanical", + L"爆破", //"Explosives", + L"医疗", //"Medical", + L"生命", //"Health", + L"敏捷", //"Agility", + L"灵巧", //"Dexterity", + L"力量", //"Strength", + L"领导", //"Leadership", + L"智慧", //"Wisdom", + L"姓名", //"Name", + + // The title of the page, the above text gets added at the end of this text + + L"根据%s升序排列的A.I.M成员", //"A.I.M. Members Sorted Ascending By %s", + L"根据%s降序排列的A.I.M成员", //"A.I.M. Members Sorted Descending By %s", + + // Instructions to the players on what to do + + L"鼠标左击", //"Left Click", + L"选择佣兵", //"To Select Merc", //10 + L"鼠标右击", //"Right Click", + L"回到排序选项", //"For Sorting Options", + + // Gets displayed on top of the merc's portrait if they are... + + L"离开", //"Away", + L"阵亡", //"Deceased", //14 + L"任务中", //"On Assign", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"第一页", + L"第二页", + L"第三页", + + L"A.I.M 前成员", + + L"完成", + L"下一页", +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"A.I.M和A.I.M图标在世界大多数国家已经注册。", + L"版权所有,仿冒必究。", + L"Copyright 1998-1999 A.I.M, Ltd. All rights reserved。", + + //Text for an advertisement that gets displayed on the AIM page + + L"联合花卉服务公司", + L"\"我们将花空运到任何地方\"", //10 + L"把活干好", + L"... 第一次", + L"枪械和杂货,只此一家,别无分店。", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"主页", //"Home", + L"成员", //"Members", + L"前成员", //"Alumni", + L"规则", //"Policies", + L"历史", //"History", + L"链接", //"Links", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"库存商品", //"MERCHANDISE IN STOCK", //Header for the merchandise available + L"页面", //"PAGE", //The current store inventory page being displayed + L"总价格", //"TOTAL COST", //The total cost of the the items in the Dealer inventory area + L"总价值", //"TOTAL VALUE", //The total value of items player wishes to sell + L"估价", //"EVALUATE", //Button text for dealer to evaluate items the player wants to sell + L"确认交易", //"TRANSACTION", //Button text which completes the deal. Makes the transaction. + L"完成", //"DONE", //Text for the button which will leave the shopkeeper interface. + L"修理费", //"REPAIR COST", //The amount the dealer will charge to repair the merc's goods + L"1小时", //"1 HOUR",// SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d小时", //"%d HOURS",// PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"已经修好", //"REPAIRED",// Text appearing over an item that has just been repaired by a NPC repairman dealer + L"你没有空余的位置来放东西了。", //"There is not enough room in your offer area.",//Message box that tells the user there is no more room to put there stuff + L"%d分钟", //"%d MINUTES", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"把物品放在地上。", //"Drop Item To Ground.", + L"特价", //L"BUDGET", +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"确认", //"OK", // Transfer the money + L"拿", //"Take", // Take money from the player + L"给", //"Give", // Give money to the player + L"取消", //"Cancel", // Cancel the transfer + L"清除", //"Clear", // Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"选择类型", //"Select Type", // tells the user to select either to give or take from the merc + L"输入数额", //"Enter Amount", // Enter the amount to transfer + L"把钱给佣兵", //"Transfer Funds To Merc",// Giving money to the merc + L"从佣兵那拿钱", //"Transfer Funds From Merc", // Taking money from the merc + L"资金不足", //"Insufficient Funds", // Not enough money to transfer + L"余额", //"Balance", // Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"你要从主帐户中提取%s来支付吗?", + L"资金不足。你缺少%s。", + L"你要从主帐户中提取%s来支付吗?", + L"请求商人开始交易", + L"请求商人修理选定物品", + L"结束对话", + L"当前余额", + + L"你要使用%s情报来支付差额吗?", //L"Do you want to transfer %s Intel to cover the difference?", + L"你要使用%s情报来支付吗?", //L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"保存游戏", //"Save Game", + L"载入游戏", //"Load Game", + L"退出", //"Quit", + L"下一页", //L"Next", + L"上一页", //L"Prev", + L"完成", //"Done", + L"1.13 特征功能", //L"1.13 Features", + L"特征选项", //L"New in 1.13", + L"选项", //L"Options", + + //Text above the slider bars + L"特效", //"Effects", + L"语音", //"Speech", + L"音乐", //"Music", + + //Confirmation pop when the user selects.. + L"退出并回到游戏主菜单?", + + L"你必须选择“语音”和“对话显示”中的至少一项。", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 特征功能", //L"1.13 FEATURE TOGGLES", + L"在游戏中更改这些选项将影响您的游戏体验。(更改后必须重新开始新游戏)", //L"Changing these settings during a campaign will affect your experience.", + L"将鼠标悬停在功能按钮上以获得更多信息。某些功能需要在JA2_Options.ini(或其他文件)中设置。", //L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"开启特征功能", //L"Use These Overrides", + L"新NCTH瞄准系统", //L"New Chance to Hit", + L"物品全掉功能", //L"Enemies Drop All", + L"物品全掉功能(物品几率损坏)", //L"Enemies Drop All (Damaged)", + L"火力压制功能", //L"Suppression Fire", + L"女王反击Drassen功能", //L"Drassen Counterattack", + L"女王反击所有城镇功能", //L"City Counterattacks", + L"女王多次反击功能", //L"Multiple Counterattacks", + L"情报功能", //L"Intel", + L"俘虏功能", //L"Prisoners", + L"矿井管理功能", //L"Mines Require Workers", + L"敌军伏击功能", //L"Enemy Ambushes", + L"女王刺客功能", //L"Enemy Assassins", + L"敌军角色功能", //L"Enemy Roles", + L"敌军角色功能:医生", //L"Enemy Role: Medic", + L"敌军角色功能:军官", //L"Enemy Role: Officer", + L"敌军角色功能:将军", //L"Enemy Role: General", + L"Kerberus安保公司功能", //L"Kerberus", + L"食物系统", //L"Mercs Need Food", + L"疾病系统", //L"Disease", + L"动态观点功能", //L"Dynamic Opinions", + L"动态对话功能", //L"Dynamic Dialogue", + L"敌军战略司令部功能", //L"Arulco Strategic Division", + L"敌军直升机功能", //L"ASD: Helicopters", + L"敌军战斗车功能", //L"Enemy Vehicles Can Move", + L"僵尸系统", //L"Zombies", + L"血猫袭击功能", //L"Bloodcat Raids", + L"土匪袭击功能", //L"Bandit Raids", + L"僵尸袭击功能", //L"Zombie Raids", + L"民兵储备功能", //L"Militia Volunteer Pool", + L"民兵战术命令功能", //L"Tactical Militia Command", + L"民兵战略命令功能", //L"Strategic Militia Command", + L"民兵武装装备功能", //L"Militia Uses Sector Equipment", + L"民兵需要资源功能", //L"Militia Requires Resources", + L"强化近战功能", //L"Enhanced Close Combat", + L"新中断功能", //L"Improved Interrupt System", + L"武器过热功能", //L"Weapon Overheating", + L"天气功能:下雨", //L"Weather: Rain", + L"天气功能:闪电", //L"Weather: Lightning", + L"天气功能:沙尘暴", //L"Weather: Sandstorms", + L"天气功能:暴风雪", //L"Weather: Snow", + L"随机事件功能", //L"Mini Events", + L"反抗军司令部功能", //L"Arulco Rebel Command", + L"战略运输队", //L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|开|启|特|征|功|能\n \n允许以下功能覆盖JA2_Options.ini中的设置。\n \n将鼠标悬停在按钮上查看具体替换的项目内容。\n \n如果禁用此选项功能将以JA2_Options.ini中设置为准。\n \n", //L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|新|N|C|T|H|瞄|准|系|统\n \n覆盖 [Tactical Gameplay Settings] NCTH\n \n启用新命中系统。\n \n详细的内容设定请查看CTHConstants.ini。\n \n", //L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|敌|人|物|品|全|掉|功|能\n \n覆盖 [Tactical Difficulty Settings] DROP_ALL\n \n敌人死亡时会掉落所有物品。\n \n不能同\"物品全掉功能(物品几率损坏)\"一起使用。\n \n", //L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|敌|人|物|品|全|掉|功|能|(|物|品|几|率|损|坏|)\n \n覆盖 [Tactical Difficulty Settings] DROP_ALL\n \n敌人死亡时会掉落所有的物品,并且所掉落的物品有几率会严重损坏。\n \n不能同\"物品全掉功能\"一起使用。\n \n", //L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|火|力|压|制|功|能\n \n覆盖 [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \n角色会逐渐受到压制损失一定比例的AP。\n \n有关配置选项,请参阅[Tactical Suppression Fire Settings]。\n \n", //L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|女|王|反|击|D|r|a|s|s|e|n|功|能\n \n覆盖 [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \n女王向Drassen城发起了大规模反击。\n \n", //L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|女|王|反|击|所|有|城|镇|功|能\n \n覆盖 [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \n女王可以向所有城镇发动大规模反击。\n \n不能同\"女王多次反击功能\"一起使用。\n \n", // L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|女|王|多|次|反|击|功|能\n \n覆盖 [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \n女王可以向所有城镇发动大规模反击。\n \n这可能会发生多次反击。\n \n这会使游戏变得更难。\n \n", //L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|情|报|功|能\n \n覆盖 [Intel Settings] RESOURCE_INTEL\n \n通过一些秘密行动获得的新资源。\n \n", //L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|俘|虏|功|能\n \n覆盖 [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \n允许俘虏敌军并审问他们。\n \n配置选项:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN\n \n", //L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|矿|井|管|理|功|能\n \n覆盖 [Financial Settings] MINE_REQUIRES_WORKERS\n \n矿井需要培训工人。\n \n配置选项:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS\n \n", //L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|敌|军|伏|击|功|能\n \n覆盖 [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \n允许敌人伏击玩家的小队。\n \n配置选项:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2\n \n", //L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|女|王|刺|客|功|能\n \n覆盖 [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \n女王将派刺客潜入你的民兵中。\n \n需要使用\"新技能系统\"。\n \n配置选项:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER\n \n", //L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|敌|军|角|色|功|能\n \n覆盖 [Tactical Enemy Role Settings] ENEMYROLES\n \n允许敌军扮演多种角色并获得一些能力。\n \n配置选项:\nENEMYROLES_TURNSTOUNCOVER\n \n", //L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|敌|军|角|色|功|能|:|医|生\n \n覆盖 [Tactical Enemy Role Settings] ENEMY_MEDICS\n \n医疗兵将出现在敌军角色中。\n \n需要开启\"敌军角色功能\"。\n \n配置选项:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF\n \n", //L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|敌|军|角|色|功|能|:|军|官\n \n覆盖 [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \n军官将出现在敌军角色中。\n \n需要开启\"敌军角色功能\"。\n \n配置选项:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS\n \n", //L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|敌|军|角|色|功|能|:|将|军\n \n覆盖 [Tactical Enemy Role Settings] ENEMY_GENERALS\n \n将军会提高敌人的战略移动和决策速度。\n \n需要开启\"敌军角色功能\"。\n \n配置选项:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS\n \n", //L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s|安|保|公|司|功|能\n \n覆盖 [PMC Settings] PMC\n \n一家私人军事承包商,允许玩家雇佣安保力量。\n \n配置选项:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS\n \n", //L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|食|物|系|统\n \n覆盖 [Tactical Food Settings] FOOD\n \n你的佣兵需要食物和水才能生存。\n \n配置选项:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS\n \n", //L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|疾|病|系|统\n \n覆盖 [Disease Settings] DISEASE\n \n你的佣兵会生病。\n \n配置选项:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS\n \n", //L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|动|态|观|点|功|能\n \n覆盖 [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \n佣兵可以互相发表意见,影响士气。\n \n配置选项:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\n \n请查看Morale_Settings.ini文件中的[Dynamic Opinion Modifiers Settings]内容。\n \n", //L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|动|态|对|话|功|能\n \n覆盖 [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \n佣兵可以发表简短的评论,改变彼此之间的关系。\n \n要求\"动态观点功能\"处于开启状态。\n \n配置选项:\nDYNAMIC_DIALOGUE_TIME_OFFSET\n \n", //L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|敌|军|战|略|司|令|部|功|能\n \n覆盖 [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \n女王将获得机械化部队。\n \n配置选项:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS\n \n", //L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|敌|军|直|升|机|功|能\n \n覆盖 [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \n女王将使用直升机快速部署部队。\n \n需要开启\"敌军战略司令部功能\"。\n \n配置选项:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME\n \n", //L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|敌|军|战|斗|车|功|能\n \n覆盖 [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \n敌军的战斗吉普车和坦克可以在战斗中移动。\n \n配置选项:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR\n \n", //L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|僵|尸|系|统\n \n覆盖选项中的\"僵尸模式\"。\n \n生化危机!九死一生!\n \n配置选项:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL\n \n", //L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|血|猫|袭|击|功|能\n \n覆盖 [Raid Settings] RAID_BLOODCATS\n \n血猫将对你发动夜袭。\n \n配置选项:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS\n \n", //L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|土|匪|袭|击|功|能\n \n覆盖 [Raid Settings] RAID_BANDITS\n \n土匪将伺机对你的城镇发动袭击。\n \n配置选项:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS\n \n", //L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|僵|尸|袭|击|功|能\n \n覆盖 [Raid Settings] RAID_ZOMBIES\n \n丧尸突袭!\n \n需要开启\"僵尸系统\"。\n \n配置选项:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES\n \n", //L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|民|兵|储|备|功|能\n \n覆盖 [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \n没有志愿者就不能训练民兵。\n \n配置选项:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY\n \n", //L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|民|兵|战|术|命|令|功|能\n \n覆盖 [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \n允许在战术界面对佣兵下达战术命令。\n \n", //L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|民|兵|战|略|命|令|功|能\n \n覆盖 [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \n允许在战略界面对民兵下达移动命令。\n \n配置选项:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC\n \n", //L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|民|兵|武|装|装|备|功|能\n \n覆盖 [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \n民兵的武器装备需要从当前区域获取。\n \n与\"民兵需要资源功能\"不兼容。\n \n配置选项:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS\n \n", //L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|民|兵|需|要|资|源|功|能\n \n覆盖 [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \n训练和升级民兵需要消耗资源。\n \n与\"民兵武装装备功能\"不兼容。\n \n配置选项:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN\n \n", //L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|强|化|近|战|功|能\n \n覆盖 [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \n对近战系统的全面改进。\n \n", //L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|新|中|断|功|能\n \n覆盖 [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \n对中断机制的全面改进。\n \n配置选项:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING\n \n", //L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|武|器|过|热|功|能\n \n覆盖 [Tactical Weapon Overheating Settings] OVERHEATING\n \n连续射击将导致武器过热。\n \n配置选项:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL\n \n", //L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|天|气|功|能|:|下|雨\n \n覆盖 [Tactical Weather Settings] ALLOW_RAIN\n \n下雨会降低能见度。\n \n配置选项:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN\n \n", //L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|天|气|功|能|:|闪|电\n \n覆盖 [Tactical Weather Settings] ALLOW_LIGHTNING\n \n暴雨期间可能发生闪电。\n需要\"天气功能:下雨\"\n \n配置选项:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM\n \n", //L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|天|气|功|能|:|沙|尘|暴\n \n覆盖 [Tactical Weather Settings] ALLOW_SANDSTORMS\n \n沙尘暴会使战场变得更加困难。\n \n配置选项:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM\n \n", //L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|天|气|功|能|:|暴|风|雪\n \n覆盖 [Tactical Weather Settings] ALLOW_SNOW\n \n暴风雪降低了能见度。\n \n配置选项:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW\n \n", //L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|随|机|事|件|功|能\n \n覆盖 [Mini Events Settings] MINI_EVENTS_ENABLED\n \n可能发生一些随机互动事件。\n \n配置选项:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \n详细信息请查看MiniEvents.lua。\n \n", //L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|反|抗|军|司|令|部|功|能\n \n覆盖 [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \n允许你升级占领的城镇,控制反抗军在战略层面上运作。\n \n详细的内容设定请查看RebelCommand_Settings.ini。\n \n", //L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|战|略|运|输|队\n \n覆盖 [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \n运输队在地图上运送有价值的装备。\n \n配置选项: \nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", //L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"这个选项可以开启一些1.13新功能,启用后以下选项的生效优先级将高于JA2_Options.ini文件中的设置。如果禁用此项,以下选项将不生效。", //L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"新NCTH瞄准系统对命中机制进行了全面改进,在射击时需要更复杂的计算和更多的变量。", //L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"如果启用敌人死亡时会掉落所有的物品,否则将使用标准掉落。", //L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"如果启用敌人死亡时会掉落所有的物品,并且所掉落的物品有几率会严重损坏。", //L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"火力压制功能,是控制战场的一种方式。在重火力下,角色会逐渐受到压制损失一定比例的AP,在压制下会成为负数,这表示在下一回也会损失AP。若角色丧失了下一回合的全部AP,则被完全压制。压制的目的是压榨敌人的AP,让其不能移动或还击。注意,敌人也会对你这么做!", //L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"该选项允许女王对Drassen城市进行反攻。若允许,这将使游戏的初始阶段变得困难。不建议新手玩家启用此功能!", //L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"该选项允许女王对所有的城市进行反攻。其他城市在你攻占后女王会大规模反击。", //L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"如果女王反击对你来说仍然不够,试着启用它!女王不仅会发起反击,还可能试图同时夺回多个城市。", //L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"你可以获取和消耗情报点数。这种资源与间谍和情报贩子密切相关。可以通过间谍活动、审讯俘虏或其他方式获得情报点数。可以在黑市购买稀有武器,也可以在情报网站上购买敌人的信息。", //L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"允许抓捕俘虏。可以通过在战斗中劝降或者用手铐铐住不能行动的敌人来抓捕俘虏。被俘虏的敌人可以送到监狱中进行审问。审问会带来金钱、情报或者将敌人策反进你的民兵队伍。", //L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"在矿场上先投资才能获得它的全部收益。工人像民兵一样需要金钱和时间来训练。注意!如果失去对城镇的控制将导致工人流失!", //L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"敌军有机率会伏击你的小队。如果的你小队遭到伏击,你的小队将会出现在地图中央并被敌人包围。", //L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"女王现在会派出刺客。这些精英士兵是秘密行动的专家,他们会伪装成你的民兵,伺机对你的佣兵发动突袭。需要使用\"新技能系统\",也强烈建议使用\"新物品系统\"。", //L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"敌军中将出现各种技能类型的敌人。被观察到的士兵身边将出现一个标识身份的小图标,身份包括无线电操作员、狙击手、迫击炮炮手和持有钥匙的敌人。", //L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"需要开启\"敌军角色功能\",敌军医生会给战友进行包扎和手术。", //L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"需要开启\"敌军角色功能\",敌军的上尉(班长)和中尉(班副)将对整个小队提供战术指挥加成。", //L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"将军会为敌军提供战略加成奖励,他们会出现在敌军控制的城镇中,将军拥有自己的精英保镖,会在预感到危险时逃跑。", //L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Kerberus安保公司将会为您提供安保人员,您可以从他们的网站上雇佣有经验的安保人员充当民兵。虽然价格很高,但是你不必在花时间训练他们。", //L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"你的佣兵需要食物和水才能生存。挨饿将遭受严厉的惩罚。要注意食物的质量,小心吃坏肚子!", //L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"伤口、尸体、沼泽、昆虫都可能导致您的佣兵生病,一些疾病会引起并发症,严重时会导致死亡。医生和药品可以治疗大多数疾病,还有一些装备可以预防疾病。", //L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"佣兵会动态对话。遇到影响关系的事件时会发生对话。佣兵们会互相指责或赞美。其他佣兵也会做出回应,或根据他们的关系进行回答。", //L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"这是动态对话附加功能。允许佣兵在相互交谈时,如果IMP参与其中,您将有一个简短的窗口来根据需要建立的关系选择回复内容。", //L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"敌军战略司令部负责订购并向陆军部署机械化部队,使用从矿山获得的收入购买战车来对付你!", //L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"需要开启\"敌军战略司令部功能\",当游戏达到一定进度时,敌军战略司令部开始使用直升机部署精锐小队士兵来骚扰你。", //L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"敌人的战斗吉普车和坦克可以在战斗中四处移动,移动撞击会摧毁一些障碍物,甚至会试图碾过你的佣兵。", //L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"僵尸会从尸体中复活!(生化危机)", //L"Zombies rise from corpses!", + L"致命的血猫可以在夜间对城镇发动突袭。平民死亡将造成忠诚度降低。", //L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"土匪会袭击防御薄弱的城镇,平民死亡将造成忠诚度降低。", //L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"需要开启\"僵尸系统\",僵尸会成群的冲击城镇各区,平民死亡将造成忠诚度降低。", //L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"没有志愿者就不能继续训练民兵,控制城镇和周边的农田可以增加志愿者加入的数量。", //L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"允许您在战术地图中向民兵下达命令。要执行此操作,请与任意民兵对话,然后会出现命令菜单。使用无线电的佣兵可以向不在视野范围内的民兵下达命令。", //L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"允许您在战略地图中向民兵下达移动命令。您需要佣兵和民兵在同一区域(除非相邻区域有佣兵操作无线电或民兵指挥部有工作人员)才能发布战略移动命令。", //L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"民兵装备不会随机生成,而是从民兵目前驻扎的区域获取。您需要充分地给民兵分配装备。当一个新的区域被装载时,民兵将把他们的装备放回他们的区域。在战术地图下,通过按\"CTRL+ .\"弹出菜单,选则militia inspection手动放下物品。如果要使民兵无法接触某些装备,则在战略模式下的物品栏中对其按下\"TAB + 鼠标左键\"。", //L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"民兵需要消耗枪支、护甲、杂物才能训练,在战略地图仓库中按\"alt+鼠标右键\"将道具添加进民兵资源,绿色民兵需要消耗枪支,老兵需要枪支+盔甲,精兵消耗枪支+盔甲+杂物。", //L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"对近战系统的全面改进。头部更难被击中但会造成更多伤害,击中腿部更容易倒地,但伤害更小。偷袭将造成更多的伤害。可以拿走被击晕目标身上的道具。还有一些其它小调整。", //L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"新的中断系统(IIS)完全改变了中断发生的方式,不在是目标进入视野时发生中断,而是以若干个变量模拟士兵的反应能力来判断是否发生中断。", //L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"武器的枪管在开火时会升温,这会导致频繁的武器故障。带有可更换枪管的武器对保持冷却非常有用。", //L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"启用下雨功能。雨水会略微降低整体能见度,使人更难听到声音。", //L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"启用闪电功能。闪电会短暂显示你和敌人的位置。打雷的雷声使人的听觉变差。整体体力再生有所降低。", //L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"启用沙尘暴功能,在沙尘暴中战斗会对所有战斗人员造成明显的伤害——视力和听力范围会减少,武器退化会显著增加,呼吸也会变得更加困难。", //L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"启用暴风雪功能。在暴风雪中,更难被看到,武器退化更快,呼吸也更困难。", //L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"在游戏过程中,可能会弹出简短的事件。您可以从两个选项中选择一个,这可能会产生积极或消极的影响。事件可以影响各种各样的事情,但主要是你的佣兵。", //L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"在完成反抗军食物运送任务后,你可以访问他们的(A.R.C)指挥部网站。在这里你可以设定反抗军的政策,也可以为占领区单独设置地方政策。这将带来丰厚的奖励。作为代价,城镇的民忠会上升得更慢,所以你需要更加努力地让当地人信任你。", //L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"敌人会在地图上派遣战略运输队,如果你能找到并截获它们就可能获取有价值的装备。但是,如果让敌人的运输队完成运输任务,那么就会给敌人提供战略资源(具体视难度而定)。要想获得最好体验,建议开启\"敌军战略司令部功能\"。", //L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"保存游戏", + L"载入游戏", + L"取消", + L"选择要存档的位置", + L"选择要读档的位置", + + L"保存游戏成功", + L"保存游戏错误!", + L"载入游戏成功", + L"载入游戏错误!", + + L"存档的游戏版本不同于当前的游戏版本。读取它的话很可能游戏可以正常进行。要读取该存档吗?", + + L"存档可能已经无效。你要删除它们吗?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"存档版本已改变。如果出现问题请报告。继续?", +#else + L"试图载入老版本的存档。自动修正并载入存档?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"存档版本和游戏版本已改变。如果出现问题请报告。继续?", +#else + L"试图载入老版本的存档。你要自动更新并载入存档吗?", +#endif + + L"你确认你要将#%d位置的存档覆盖吗?", + L"你要从#号位置载入存档吗?", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"你的硬盘空间不够。你现在只有%dMB可用空间,JA2需要至少%dMB可用空间。", + + L"保存", //"Saving", //When saving a game, a message box with this string appears on the screen + + L"普通武器", //"Normal Guns", + L"包括前华约武器", //"Tons of Guns", + L"现实风格", //"Realistic style", + L"科幻风格", //"Sci Fi style", + + L"难度", //"Difficulty", + L"白金模式", //L"Platinum Mode", + + L"Bobby Ray 货品等级", + L"普通|一般", + L"一级|较多", + L"高级|很多", + L"极品|囧多", + + L"新携行系统不兼容640x480的屏幕分辨率,请重新设置分辨率。", + L"新携行系统无法使用默认的Data文件夹,请仔细读说明。", + + L"当前分辨率不支持存档文件的小队人数,请增加分辨率再试。", //L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray 供货量", +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"地图层次", //"Map Level", + L"你没有民兵。你需要在城镇中训练民兵。", //"You have no militia. You need to train town residents in order to have a town militia.", + L"每日收入", //"Daily Income", + L"佣兵有人寿保险", //"Merc has life insurance", + L"%s不疲劳。", //"%s isn't tired.", + L"%s行军中,不能睡觉", //"%s is on the move and can't sleep", + L"%s太累了,等会儿再试。", //"%s is too tired, try a little later.", + L"%s正在开车。", //"%s is driving.", + L"有人在睡觉时,整个队伍不能行动。", //"Squad can't move with a sleeping merc on it.", + + // stuff for contracts + L"你能支付合同所需费用,但是你的钱不够给该佣兵购买人寿保险。", + L"要给%s花费保险金%s,以延长保险合同%d天。你要付费吗?", + L"分区存货", //"Sector Inventory", + L"佣兵有医疗保证金。", //"Merc has a medical deposit.", + + // other items + L"医生", //"Medics", // people acting a field medics and bandaging wounded mercs + L"病人", //"Patients", // people who are being bandaged by a medic + L"完成", //"Done", // Continue on with the game after autobandage is complete + L"停止", //"Stop", // Stop autobandaging of patients by medics now + L"抱歉。游戏取消了该选项的功能。", + L"%s 没有工具箱。", //"%s doesn't have a repair kit.", + L"%s 没有医药箱。", //"%s doesn't have a medical kit.", + L"现在没有足够的人愿意加入民兵。", + L"%s的民兵已经训练满了。", //"%s is full of militia.", + L"佣兵有一份限时的合同。", //"Merc has a finite contract.", + L"佣兵的合同没投保", //"Merc's contract is not insured", + L"地图概况",//"Map Overview", // 24 + + // Flugente: disease texts describing what a map view does //文本描述疾病查看地图并做翻译。 + L"这个视图会展示出哪个地区爆发了瘟疫,这个数字表明,平均每个人的感染程度,颜色表示它的范围。 灰色=无病。 绿色到红色=不断升级的感染程度。", //L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", + + // Flugente: weather texts describing what a map view does + L"这个视图显示了目前的天气。没有颜色=晴天。青色为雨天。蓝色为雷暴。橙色为沙尘暴。白色为下雪",//L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", + + // Flugente: describe what intel map view does + L"这个界面显示哪一个区域与当前进行的任务相关。某些购买的情报也会显示在这里。", //L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"第%d小队在%s地区发现有人", + L"%s小队在%s地区发现有人的行踪",// L"Squad %s has noticed someone in sector %s", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"训练一队民兵要花费$", + L"同意支付吗?", + L"你无法支付。", + L"继续在%s(%s %d)训练民兵吗?", + + L"花费$", + L"( Y/N )", // abbreviated yes/no + L"", // unused + L"在%d地区训练民兵将花费$%d。%s", + + L"你无法支付$%d以供在这里训练民兵。", + L"%s的忠诚度必须达到%d以上方可训练民兵。", + L"你不能在%s训练民兵了。", + L"解放更多城镇分区", //L"liberate more town sectors", + + L"解放新的城镇分区", //L"liberate new town sectors", + L"解放更多城镇", //L"liberate more towns", + L"恢复失去的进度", //L"regain your lost progress", + L"继续进度", //L"progress further", + + L"雇佣更多反抗军", //L"recruit more rebels", +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"你每次最多能提取$20,000。", + L"你确认要把%s存入你的帐户吗?", +}; + +STR16 gzCopyrightText[] = +{ + L"Copyright (C) 1999 Sir-tech Canada Ltd. All rights reserved.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"语音", //"Speech", + L"确认静默", //"Mute Confirmations", + L"显示对话文字", //"Subtitles", + L"显示对话文字时暂停", //"Pause Text Dialogue", + L"烟火效果", //"Animate Smoke", + L"血腥效果", //"Blood n Gore", + L"不移动鼠标", //"Never Move My Mouse!", + L"旧的选择方式", //"Old Selection Method", + L"显示移动路径", //"Show Movement Path", + L"显示未击中", //"Show Misses", + L"实时确认", //"Real Time Confirmation", + L"显示睡觉/醒来时的提示", //"Display sleep/wake notifications", + L"使用公制系统", //"Use Metric System", + L"高亮显示佣兵", //"Highlight Mercs", + L"锁定佣兵", //"Snap Cursor to Mercs", + L"锁定门", //"Snap Cursor to Doors", + L"物品闪亮", //"Make Items Glow", + L"显示树冠", //"Show Tree Tops", + L"智能显示树冠", //L"Smart Tree Tops", + L"显示轮廓", //"Show Wireframes", + L"显示3D光标", //"Show 3D Cursor", + L"显示命中机率", //"Show Chance to Hit on cursor", + L"榴弹发射器用连发准星", //"GL Burst uses Burst cursor", + L"允许敌人嘲讽", // Changed from "Enemies Drop all Items" - SANDRO + L"允许高仰角榴弹发射", //"High angle Grenade launching", + L"允许实时潜行", // Changed from "Restrict extra Aim Levels" - SANDRO + L"按空格键选择下一支小队", //"Space selects next Squad", + L"显示物品阴影", //"Show Item Shadow", + L"用格数显示武器射程", //"Show Weapon Ranges in Tiles", + L"单发曳光弹显示曳光", //"Tracer effect for single shot", + L"雨声", //"Rain noises", + L"允许乌鸦", //"Allow crows", + L"允许显示敌军装备", // Show Soldier Tooltips + L"自动存盘", //"Auto save", + L"沉默的Skyrider", //"Silent Skyrider", + L"增强属性框(EDB)", //L"Enhanced Description Box", + L"强制回合制模式", // add forced turn mode + L"替代战略地图颜色", // Change color scheme of Strategic Map + L"替代子弹图像", // Show alternate bullet graphics (tracers) + L"佣兵外观造型", //L"Use Logical Bodytypes", + L"显示佣兵军衔", // shows mercs ranks + L"显示脸部装备图", + L"显示脸部装备图标", + L"禁止光标切换", // Disable Cursor Swap + L"佣兵训练时保持沉默", // Madd: mercs don't say quotes while training + L"佣兵修理时保持沉默", // Madd: mercs don't say quotes while repairing + L"佣兵医疗时保持沉默", // Madd: mercs don't say quotes while doctoring + L"自动加速敌军回合", // Automatic fast forward through AI turns + L"僵尸模式", + L"区域物品栏弹窗匹配拾取", // the_bob : enable popups for picking items from sector inv + L"标记剩余敌人", + L"显示LBE(携行具)物品", + L"反转鼠标滚轮", //L"Invert mouse wheel", + L"保持佣兵间距", // when multiple mercs are selected, they will try to keep their relative distances + L"显示已知敌人位置", //L"Show enemy location", show locator on last known enemy location + L"准心开始时为最大", // L"Start at maximum aim", + L"替换新的寻路方式", // L"Alternative pathfinding", + L"--作弊模式选项--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"强制 Bobby Ray 送货", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--DEBUG 选项--", // an example options screen options header (pure text) + L"报告错误的偏移量", // L"Report Miss Offsets",Screen messages showing amount and direction of shot deviation. + L"重置所有选项", // failsafe show/hide option to reset all options + L"确定要重置?", // a do once and reset self option (button like effect) + L"其它版本调试选项", // L"Debug Options in other builds"allow debugging in release or mapeditor + L"渲染选项组调试", // L"DEBUG Render Option group"an example option that will show/hide other options + L"鼠标显示区域", // L"Render Mouse Regions"an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"如果你想听到人物对话,打开这个选项。", + + //Mute Confirmation + L"打开或关闭人物的口头确认。", + + //Subtitles + L"是否显示对话的文字。", + + //Key to advance speech + L"如果“显示对话文字”已打开,这个选项会让你有足够的时间来阅读NPC的对话。", + + //Toggle smoke animation + L"如果烟火效果使得游戏变慢,关闭这个选项。", + + //Blood n Gore + L"如果鲜血使你觉得恶心,关闭这个选项。", + + //Never move my mouse + L"关闭这个选项会使你的光标自动移到弹出的确认对话框上。", + + //Old selection method + L"打开时,使用铁血联盟1代的佣兵选择方式。", + + //Show movement path + L"打开时,会实时显示移动路径(可用|S|h|i|f|t键来打开或者关闭)。", + + //show misses + L"打开时,会显示未击中目标的子弹落点。", + + //Real Time Confirmation + L"打开时,在即时模式中移动要单击两次。", + + //Sleep/Wake notification + L"打开时,被分配任务的佣兵睡觉和醒来时会提示你。", + + //Use the metric system + L"打开时,使用公制系统,否则使用英制系统。", + + //Highlight Mercs + L"打开时,虚拟灯光会照亮佣兵周围。(|G)", //L"When ON, highlights the mercenary (Not visible to enemies).\nToggle in-game with (|G)", + + //Smart cursor + L"打开时,光标移动到佣兵身上时会高亮显示佣兵。", + + //snap cursor to the door + L"打开时,光标靠近门时会自动定位到门上。", + + //glow items + L"打开时,物品会不断的闪烁。(|C|t|r|l+|A|l|t+|I)", + + //toggle tree tops + L"打开时,显示树冠。(|T)", + + //smart tree tops + L"打开时,不显示位于可见佣兵和鼠标附近的树冠。", //L"When ON, hides tree tops near visible mercs and cursor position.", + + //toggle wireframe + L"打开时,显示未探明的墙的轮廓。(|C|t|r|l+|A|l|t+|W)", + + L"打开时,移动时的光标为3D式样。(|H|o|m|e)", + + // Options for 1.13 + L"打开时,在光标上显示命中机率。", + L"打开时,榴弹发射器点射使用点射的准星。", + L"打开时,敌人行动中有时会带有对白。", // Changed from Enemies Drop All Items - SANDRO + L"打开时,榴弹发射器允许采用较高仰角发射榴弹。(|A|l|t+|Q)", + L"打开时,潜行状态未被敌人发现时不会进入回合制模式。\n除非按下 |C|t|r|l+|X 。(|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO + L"打开时,按空格键自动切换到下一小队。(|S|p|a|c|e)", + L"打开时,显示物品阴影。", + L"打开时,用格数显示武器射程。", + L"打开时,单发曳光弹也显示曳光。", + L"打开时,下雨时能听到雨水音效。", //"When ON, you will hear rain noises when it is raining.", + L"打开时,允许乌鸦出现。", + L"打开时,把光标定位在敌人身上并且按下|A|l|t键会显示敌兵装备信息窗口。", + L"打开时,游戏将在玩家回合后自动存盘。", + L"打开时,Skyrider保持沉默。", + L"打开时,使用物品及武器的“增强描述框”(EDB)。", + L"打开时,在战术画面内存在敌军时,将一直处于回合制模式直至该地区所有敌军被消灭。\n(可以通过快捷键 (|C|t|r|l+|T) 来控制打开或关闭强制回合制模式)", + L"打开时,战略地图将会根据探索状态显示不同的着色。", + L"打开时,当你射击时会显示间隔子弹图像。", + L"打开时,佣兵外观可随着武器或防具装备的改变而改变佣兵外观造型。", //L"When ON, mercenary body graphic can change along with equipped gear.", + L"打开时,在战略界面的佣兵名旁显示军衔。", + L"打开时,显示佣兵脸部装备图。", + L"打开时,佣兵肖像右下角显示脸部装备图标。", + L"打开时,在交换位置和其它动作时光标不切换。键入|x可以快速切换。", + L"打开时,佣兵训练时不会随时汇报进程。", + L"打开时,佣兵修理时不会随时汇报进程。", + L"打开时,佣兵医疗时不会随时汇报进程。", + L"打开时,敌军回合将被大幅加速。", + + L"打开时,被击毙的敌人将有可能变成僵尸。(生化危机模式)", + L"打开时,在区域物品栏界面,点击佣兵身上空白的携行具位置会弹窗匹配拾取物品。", + L"打开时,会直接显示该区域最后一个敌人的大致位置。", + L"打开时,在区域物品栏界面,右键点击装有物品的携行具时可直接显示包含的物品。", + L"打开时,反转鼠标滚轮方向。", + L"打开时,当选择多个佣兵,在前进时会保持彼此的间距。|C|t|r|l+|A|l|t+|G \n(按|S|h|i|f|t+点击人物头像可以加入或移出队伍)", //L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", + L"打开时,会显示已知敌人最后移动的位置。", //L"When ON, shows last known enemy location.", + L"打开时,默认瞄准值为最大,而不是无。", //L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"打开时,使用A*寻路算法,而不是原始算法。", //L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"强制 Bobby Ray 出货", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: 当打开时, 将报告每个子弹偏离目标中心点的距离,考虑各种NCTH因素。", + L"修复损坏的游戏设置", // failsafe show/hide option to reset all options + L"修复损坏的游戏设置", // a do once and reset self option (button like effect) + L"在建立release或mapeditor时,允许调试操作", // allow debugging in release or mapeditor + L"切换以显示调试渲染选项", // an example option that will show/hide other options + L"尝试在鼠标周围地区显示斜线矩形", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + + +STR16 gzGIOScreenText[] = +{ + L"游戏初始设置", +#ifdef JA2UB + L"随机 Manuel 文本",//L"Random Manuel texts ", + L"关",//L"Off", + L"开",//L"On", +#else + L"游戏风格", + L"现实", + L"科幻", +#endif + L"金版", + L"武器数量", // changed by SANDRO + L"大量武器", + L"少量武器", // changed by SANDRO + L"游戏难度", + L"新手", + L"老手", + L"专家", + L"疯子", + L"确定", + L"取消", + L"额外难度", + L"随时存盘", + L"铁人模式", + L"在Demo中禁用", + L"Bobby Ray 货品等级", + L"普通|一般", + L"一级|较多", + L"高级|很多", + L"极品|囧多", + L"携行系统 / 附件系统", + L"NOT USED", + L"NOT USED", + L"读取联机游戏", + L"游戏初始设置(仅在服务器设置时有效)", + // Added by SANDRO + L"技能系统", + L"旧", + L"新", + L"IMP 数量", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"敌军物品全掉", + L"关", + L"开", +#ifdef JA2UB + L"Tex 和 John",//L"Tex and John", + L"随机",//L"Random", + L"全部",//"All", +#else + L"通缉犯出现方式", + L"随机", + L"全部", +#endif + L"敌军秘密基地出现方式", + L"随机", + L"全部", + L"敌军装备进展速度", + L"很慢", + L"慢", + L"一般", + L"快", + L"很快", + + L"旧 / 旧", + L"新 / 旧", + L"新 / 新", + + // Squad Size + L"小队人数",//"Max. Squad Size", + L"6", + L"8", + L"10", + //L"Bobby Ray 快速出货", //L"Faster Bobby Ray Shipments", + L"战斗时取放物品消耗AP", //L"Inventory Manipulation Costs AP", + + L"新命中率系统(NCTH)", //L"New Chance to Hit System", + L"改进的中断系统(IIS)", //L"Improved Interrupt System", + L"佣兵故事背景", //L"Merc Story Backgrounds", + L"生存模式与食物系统", + L"Bobby Ray 供货量", + + // anv: extra iron man modes + L"假铁人", //L"Soft Iron Man", + L"真铁人", //L"Extreme Iron Man", +}; + +STR16 gzMPJScreenText[] = +{ + L"多人游戏",//L"MULTIPLAYER", + L"加入",//L"Join", + L"主机",//L"Host", + L"取消",//L"Cancel", + L"刷新",//L"Refresh", + L"玩家名称",//L"Player Name", + L"服务器 IP",//L"Server IP", + L"端口",//L"Port", + L"服务器名",//L"Server Name", + L"# Plrs", + L"版本",//L"Version", + L"游戏类型",//L"Game Type", + L"Ping", + L"你必须输入你的玩家名称。",//L"You must enter a player name.", + L"你必须输入有效的服务器IP地址。(例如 84.114.195.239)。",//L"You must enter a valid server IP address.\n (eg 84.114.195.239).", + L"您必须输入正确的服务器端口,范围1~65535。",//L"You must enter a valid Server Port between 1 and 65535.", +}; + +STR16 gzMPJHelpText[] = +{ + L"访问http://webchat.quakenet.org/?channels=ja2-multiplayer寻找其他玩家。", //Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players + L"您可以按“Y”,打开游戏中的聊天窗口,之后你一直连接到服务器。", + + L"主机",//L"HOST", + L"输入IP地址,端口号必须大于60000", //Enter '127.0.0.1' for the IP and the Port number should be greater than 60000. + L"确保(UDP, TCP)端口由你的路由器转发,更多信息请看:http://portforward.com", //Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com + L"你必须将你的外网IP通过QQ或者什么,告诉其他玩家", //You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players. + L"点击“主机”创建一个新的局域网游戏", //Click on 'Host' to host a new Multiplayer Game. + + L"加入", //JOIN + L"主机需要发送外网IP和端口", //The host has to send (via IRC, ICQ, etc) you the external IP and the Port number + L"输入主机的外网IP和端口号", //L"Enter the external IP and the Port number from the host.", + L"点击“加入”来加入已经创建好的游戏。", //Click on 'Join' to join an already hosted Multiplayer Game +}; + +STR16 gzMPHScreenText[] = +{ + L"建立主机",//L"HOST GAME", + L"开始",//L"Start", + L"取消",//L"Cancel", + L"服务器名",//L"Server Name", + L"游戏类型",//L"Game Type", + L"死亡模式",//L"Deathmatch", + L"团队死亡模式",//L"Team Deathmatch", + L"合作模式",//L"Co-operative", + L"最大玩家数",//L"Max Players", + L"小队规模",//L"Squad Size", + L"选择佣兵",//L"Merc Selection", + L"随机佣兵",//L"Random Mercs", + L"已被雇佣",//L"Hired by Player", + L"起始平衡",//L"Starting Cash", + L"可以雇佣相同佣兵",//L"Can Hire Same Merc", + L"佣兵报告", //Report Hired Mercs + L"开启Bobby Rays网上商店", + L"开始边缘区域", //Sector Starting Edge + L"必须输入服务器名", + L"", + L"", + L"开始时间", + L"", + L"", + L"武器伤害", + L"", + L"计时器", + L"", + L"合作模式中允许平民", + L"", + L"CO-OP敌军最大值", //Maximum Enemies in CO-OP + L"同步游戏目录", + L"同步多人模式目录", + L"你必须进入一个文件传输目录.", + L"(使用 '/' 代替 '\\' 作为目录分隔符)", + L"指定的同步目录不存在。", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Yes", + L"No", + // Starting Time + L"早晨", //Morning + L"下午", //Afternoon + L"晚上", //Night + // Starting Cash + L"低", + L"中", + L"高", + L"无限", //Unlimited + // Time Turns + L"从不",//Never + L"缓慢",//Slow + L"中速",//Medium + L"快速",//Fast + // Weapon Damage + L"很慢", + L"慢", + L"正常", + // Merc Hire + L"随机", + L"正常", + // Sector Edge + L"随机", + L"可选", + // Bobby Ray / Hire same merc + L"禁止", + L"允许", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"奥斯汀", //"Austin", //Austin, Texas, USA + L"巴格达", //"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"香港", //"Hong Kong", //Hong Kong, Hong Kong + L"贝鲁特", //"Beirut", //Beirut, Lebanon (Middle East) + L"伦敦", //"London", //London, England + L"洛杉矶", //"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Metavira", //The island of Metavira was the fictional location used by JA1 + L"迈阿密", //"Miami", //Miami, Florida, USA (SE corner of USA) + L"莫斯科", //"Moscow", //Moscow, USSR + L"纽约", //"New York", //New York, New York, USA + L"渥太华", //"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"巴黎", //"Paris", //Paris, France + L"的黎波里", //"Tripoli", //Tripoli, Libya (eastern Mediterranean) + L"东京", //"Tokyo", //Tokyo, Japan + L"温哥华", //"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"你确定吗?零意味着你不能拥有这项技能。", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"(最多8个字符)", //"( 8 Characters Max )", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"分析...", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"谢谢你,%s", +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"嗓音", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"阵亡", //"Killed in Action", + L"解雇", //"Dismissed", + L"其他", //"Other", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"人事管理", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"游戏暂停", //"Game Paused", + L"继续游戏 (|P|a|u|s|e)", //"Resume Game (|P|a|u|s|e)", + L"暂停游戏 (|P|a|u|s|e)", //"Pause Game (|P|a|u|s|e)", +}; + + +STR16 pMessageStrings[] = +{ + L"退出游戏", //"Exit Game?", + L"确定", //"OK", + L"是", //"YES", + L"否", //"NO", + L"取消", //"CANCEL", + L"再次雇佣", //"REHIRE", + L"撒谎", //"LIE", // + L"没有描述", //"No description", //Save slots that don't have a description. + L"游戏已保存。", //"Game Saved.", + L"游戏已保存。", //"Game Saved.", + L"QuickSave", //"QuickSave", //The name of the quicksave file (filename, text reference) + L"SaveGame", //"SaveGame",//The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"日", //"Day", + L"个佣兵", //"Mercs", + L"空", //"Empty Slot", //An empty save game slot + L"Demo", //Demo of JA2 + L"Debug", //State of development of a project (JA2) that is a debug build + L"Release", //Release build for JA2 + L"rpm", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"分钟", //"min", //Abbreviation for minute. + L"米", //"m", //One character abbreviation for meter (metric distance measurement unit). + L"发", //L"rnds", //Abbreviation for rounds (# of bullets) + L"公斤", //"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"磅", //"lb", //Abbreviation for pounds (Imperial weight measurement unit) + L"主页", //"Home", //Home as in homepage on the internet. + L"USD", //L"USD", //Abbreviation to US dollars + L"n/a", //Lowercase acronym for not applicable. + L"与此同时", //"Meanwhile", //Meanwhile + L"%s已到达%s%s分区", //"%s has arrived in sector %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying //SirTech + + L"版本", //L"Version", + L"没有快速存档", //"Empty Quick Save Slot", + L"该位置用来放Quick Save(快速存档)。请在战术屏幕或者地图屏幕按ALT+S进行快速存档。", + L"打开的", //"Opened", + L"关闭的", //"Closed", + L"磁盘空间不足。只有%sMB可用空间,《铁血联盟2》需要%sMB。", + L"从AIM雇佣了%s。", //"Hired %s from AIM", + L"%s抓住了%s。", //"%s has caught %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s(使用了、拾取了、中了)%s。", //L"%s has taken %s。", + L"%s没有医疗技能", //"%s has no medical skill",//'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"游戏不完整。",//The integrity of the game has been compromised + L"错误: 弹出 CD-ROM",//ERROR: Ejected CD-ROM + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"没有空间施展你的武器。", //"There is no room to fire from here.", + + //Can't change stance due to objects in the way... + L"现在无法改变姿势。", //"Cannot change stance at this time.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"放下", //"Drop", + L"投掷", //"Throw", + L"交给", //"Pass", + + L"把%s交给了%s。", //"%s passed to %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"没有足够空位把%s交给%s。", //"No room to pass %s to %s.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" 附加]", //L" attached]", + + //Cheat modes + L"开启作弊等级一", //"Cheat level ONE reached", + L"开启作弊等级二", //"Cheat level TWO reached", + + //Toggling various stealth modes + L"小队进入潜行模式。", //"Squad on stealth mode.", + L"小队退出潜行模式。", //"Squad off stealth mode.", + L"%s 进入潜行模式。", //"%s on stealth mode.", + L"%s 退出潜行模式。", //"%s off stealth mode.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"打开显示轮廓", //"Extra Wireframes On", + L"关闭显示轮廓", //"Extra Wireframes Off", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"无法从这层上去...", //"Can't go up from this level...", + L"没有更低的层了...", //"There are no lower levels...", + L"进入地下室%d层...", //"Entering basement level %d...", + L"离开地下室...", //"Leaving basement...", + + L"的", //"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"关闭跟随模式。", //"Follow mode OFF.", + L"打开跟随模式。", //"Follow mode ON.", + L"不显示3D光标。", //"3D Cursor OFF.", + L"显示3D光标。", //"3D Cursor ON.", + L"第%d小队激活。", //"Squad %d active.", + L"你无法支付%s的%s日薪", //"You cannot afford to pay for %s's daily salary of %s", //first %s is the mercs name, the seconds is a string containing the salary + L"跳过", //"Skip", + L"%s不能独自离开。", //"%s cannot leave alone.", + L"一个文件名为SaveGame99.sav的存档被创建了。如果需要的话,将其更名为SaveGame01 - SaveGame10,然后你就能载入这个存档了。", //"A save has been created called, SaveGame99.sav. If needed, rename it to SaveGame01 - SaveGame10 and then you will have access to it in the Load screen.", + L"%s 喝了点 %s。", //"%s drank some %s", + L"Drassen收到了包裹。", //"A package has arrived in Drassen.", + L"%s将到达指定的着陆点(分区%s),于%d日%s。", //"%s should arrive at the designated drop-off point (sector %s) on day %d, at approximately %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival + L"日志已经更新。", //"History log updated.", + L"榴弹发射器点射时使用准星光标(可以扫射)", + L"榴弹发射器连发时使用弹道光标(不可以扫射)", //"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", + L"开启敌兵装备提示", // Changed from Drop All On - SANDRO + L"关闭敌兵装备提示", // 80 // Changed from Drop All Off - SANDRO + L"榴弹发射器以正常仰角发射榴弹", //"Grenade Launchers fire at standard angles", + L"榴弹发射器以较高仰角发射榴弹", //L"Grenade Launchers fire at higher angles", + // forced turn mode strings + L"强制回合制模式", + L"正常回合制模式", + L"离开战斗", + L"强制回合制模式启动,进入战斗", + L"自动储存成功。", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved + L"客户端", //"Client", + L"旧携行系统不能与新附件系统同时使用。", + + L"自动存盘 #", //91 // Text des Auto Saves im Load Screen mit ID + L"自动存盘专用,可在ja2_options.ini里设置AUTO_SAVE_EVERY_N_HOURS来开启/关闭。", //L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save + L"... 自动存盘位置 #", //L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"End-Turn 存盘 #", // 95 // The text for the tactical end turn auto save + L"自动存盘中 #", // 96 // The message box, when doing auto save + L"存盘中", // 97 // The message box, when doing end turn auto save + L"... End-Turn 存盘位置 #", // 98 // The message box, when doing auto save + L"战术回合完毕存盘专用,可以在游戏设置开启/关闭。", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) + L"鼠标已锁定,鼠标移动范围强制限制在游戏窗口内部区域。", // 104 + L"鼠标已释放,鼠标移动范围不再受限于游戏窗口内部区域。", // 105 + L"保持佣兵间距开启", + L"保持佣兵间距关闭", + L"虚拟佣兵光照开启", + L"虚拟佣兵光照关闭", + L"军队%s活动。", //L"Squad %s active.", + L"%s抽了只%s。", //L"%s smoked %s.", + L"激活作弊?", //L"Activate cheats?", + L"关闭作弊?", //L"Deactivate cheats?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"确认", //"OK", + L"向上滚动", //"Scroll Up", + L"选择全部", //"Select All", + L"向下滚动", //"Scroll Down", + L"取消", //"Cancel", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s不够近,不能被治疗。", + L"你的医生不能包扎完每个人。", +}; + +STR16 pMilitiaButtonsHelpText[] = +{ + L"撤走 (|R|i|g|h|t |C|l|i|c|k)\n分配 (|L|e|f|t |C|l|i|c|k)\n新兵", // button help text informing player they can pick up or drop militia with this button + L"撤走 (|R|i|g|h|t |C|l|i|c|k)\n分配 (|L|e|f|t |C|l|i|c|k)\n常规兵", + L"撤走 (|R|i|g|h|t |C|l|i|c|k)\n分配 (|L|e|f|t |C|l|i|c|k)\n老兵", + L"所有民兵将在城市所属分区平均分配", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"去AIM雇几个佣兵( *提示* 在笔记本电脑里)", +#ifdef JA2UB + L"当你准备出发前往Tracona,点击屏幕右下方的时间压缩按钮。", +#else + L"当你准备出发前往Arulco,点击屏幕右下方的时间压缩按钮。", +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"错误。丢失或损坏文件。游戏将退出。", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"查看邮件", + L"浏览网页", + L"查看文件和邮件的附件", + L"阅读事件日志", + L"查看队伍信息", + L"查看财务简报和记录", + L"关闭笔记本电脑", + + //Bottom task bar icons (if they exist): + L"你有新的邮件", + L"你有新的文件", + + //Bookmarks: + L"国际佣兵联盟", + L"Bobby Ray网上武器店", + L"佣兵心理剖析研究所", + L"廉价佣兵中心", + L"McGillicutty公墓", + L"联合花卉服务公司", + L"A.I.M指定保险代理人", + //New Bookmarks + L"", + L"百科全书", + L"简报室", + L"战役历史", + L"佣兵之家", //L"Mercenaries Love or Dislike You", + L"世界卫生组织", //L"World Health Organization", + L"Kerberus - 安保公司",//L"Kerberus - Experience In Security", + L"民兵总览",//L"Militia Overview", + L"侦察情报局", //L"Recon Intelligence Services", + L"已占领的工厂", //L"Controlled factories", + L"Arulco反抗军司令部", //L"Arulco Rebel Command", +}; + + +STR16 gzHelpScreenText[] = +{ + L"退出帮助屏幕", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"战斗正在进行中,你只能在战术屏幕进行撤退。", + L"进入该分区,继续战斗。(|E)", + L"自动解决这次战斗。(|A)", + L"当你进攻时,不能自动解决战斗。", + L"当你遭遇伏兵时,不能自动解决战斗。", + L"当在矿井里和异形作战时,不能自动解决战斗。", + L"还有敌对的平民时,不能自动解决战斗。", + L"有血猫时,不能自动解决战斗。", + L"战斗进行中", + L"你不能在这时撤退。", +}; + +STR16 gzMiscString[] = +{ + L"在没有你的佣兵支援下,民兵继续战斗...", + L"现在车辆不需要加油。", //"The vehicle does not need anymore fuel right now.", + L"油箱装了%d%的油。", //"The fuel tank is %d%% full.", + L"Deidranna女王的军队重新完全占领了%s。", + L"你丢失了加油点。", //"You have lost a refueling site.", +}; + +STR16 gzIntroScreen[] = +{ + L"找不到视频文件", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s 听到%s声音来自%s。", + L"%s 听到%s移动声来自%s。", + L"%s 听到%s吱吱声来自%s。", + L"%s 听到%s溅水声来自%s。", + L"%s 听到%s撞击声来自%s。", + L"%s 听到%s开火声来自%s.", // anv: without this, all further noise notifications were off by 1! + L"%s 听到%s爆炸声发向%s。", + L"%s 听到%s尖叫声发向%s。", + L"%s 听到%s撞击声发向%s。", + L"%s 听到%s撞击声发向%s。", + L"%s 听到%s粉碎声来自%s。", + L"%s 听到%s破碎声来自%s。", + L"", // anv: placeholder for silent alarm + L"%s 听到%s某人的说话声来自%s。", // anv: report enemy taunt to player +}; + +STR16 pTauntUnknownVoice[] = +{ + L"不明说话声", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"按姓名排序 (|F|1)", + L"按任务排序 (|F|2)", + L"按睡眠状态排序 (|F|3)", + L"按地点排序 (|F|4)", + L"按目的地排序 (|F|5)", + L"按预计离队时间排序 (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"错误 404", //"Error 404", + L"网站未找到", //"Site not found.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"近期运货", //"Recent Shipments", + L"订单 #", //"Order #", + L"物品数量", //"Number Of Items", + L"订购日期", //"Ordered On", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Maarnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"游戏开发者", // Chris Camfield + L"策划/编剧", // Shaun Lyng + L"战略系统和编辑器开发者", //Kris \"The Cow Rape Man\" Marnes + L"制片人/总策划", // Ian Currie + L"地图设计师", // Linda Currie + L"美术设计", // Eric \"WTF\" Cheng + L"测试", // Lynn Holowka + L"高级美术设计", // Norman \"NRG\" Olsen + L"音效师", // George Brooks + L"界面设计", // Andrew Stacey + L"动画师", // Scot Loving + L"程序开发", // Andrew \"Big Cheese Doddle\" Emmons + L"程序设计", // Dave French + L"战略系统与游戏平衡开发", // Alex Meduna + L"人物设计师", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(还在学习标点符号)", // Shaun Lyng + L"(\"已经完成,我们只是做一些修正\")", //Kris \"The Cow Rape Man\" Marnes + L"(干这活我的年纪太大了)", // Ian Currie + L"(进行巫术8项目的工作)", // Linda Currie + L"(被枪指着去做QA)", // Eric \"WTF\" Cheng + L"(Left us for the CFSA - go figure...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(蹭车以及爵士乐爱好者)", // Andrew Stacey + L"(他真正的名字是罗伯特)", // Scot Loving + L"(唯一负责任的人)", // Andrew \"Big Cheese Doddle\" Emmons + L"(现在就想回到motocrossing)", // Dave French + L"(从巫术8项目中偷来的)", // Alex Meduna + L"(也参与制作物品及读档画面)", // Joey \"Joeker\" Whelan", +}; + +// HEADROCK: Adjusted strings for better feedback, and added new string for LBE repair. +STR16 sRepairsDoneString[] = +{ + L"%s 修复了自己的物品。", + L"%s 修复了所有人的枪和护甲。", + L"%s 修复了所有人的装备。", + L"%s 修复所有人携带的大型物品。",//L"%s finished repairing everyone's large carried items", + L"%s 修复所有人携带的中型物品。",//L"%s finished repairing everyone's medium carried items", + L"%s 修复所有人携带的小型物品。",//L"%s finished repairing everyone's small carried items", + L"%s 修复所有人的携行具。",//L"%s finished repairing everyone's LBE gear", + L"%s 清洁了所有人的枪支。", //L"%s finished cleaning everyone's guns.", +}; + +STR16 zGioDifConfirmText[]= +{ + L"你选择了“新手”模式。这个设置是为那些刚玩铁血联盟的玩家准备的,他们刚接触策略游戏,或者他们希望快点结束战斗。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“新手”模式吗?", + L"你选择了“老手”模式。这个设置是为那些已经熟悉铁血联盟或类似游戏的玩家准备的。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“老手”模式吗?", + L"你选择了“专家”模式。我们警告你,如果你被装在尸袋里运回来,不要来向我们抱怨。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“专家”模式吗?", + L"你选择了“疯狂”模式。警告: 如果你被装在塑料袋里一块块运回来,不要来向我们抱怨。女王会狠狠地凌虐你。你的选择会在整个游戏中生效,所以请作出明智的选择。你真的要玩“疯狂”模式吗?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"没有找到loadscreen数据文件%S...", //"%S loadscreen data file not found...", + + //1-5 + L"由于没有人在用遥控器,机器人无法离开本分区。", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"你现在无法压缩时间。请等待炸弹爆炸!", + + //'Name' refuses to move. + L"%s拒绝移动。", + + //%s a merc name + L"%s精力不足,无法改变姿势。", //"%s does not have enough energy to change stance.", + + //A message that pops up when a vehicle runs out of gas. + L"%s汽油耗尽,现在在%c%d抛锚了。", //"The %s has run out of gas and is now stranded in %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"上方", + L"下方", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"佣兵中没人有医疗技能。", + L"没有足够的医疗物品进行包扎。", + L"没有足够的医疗物品给所有人进行包扎。", + L"佣兵中没人需要包扎。", //"None of your mercs need bandaging.", + L"自动包扎佣兵。", //"Bandages mercs automatically.", + L"全部佣兵已被包扎完毕。", //"All your mercs are bandaged.", + + //14 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + + L"(屋顶)", + + L"生命: %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d vs. %d", + + L"%s满了。", + + L"%s现在不用包扎,他(她)需要认真的治疗和休息。", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s 被击中腿部,并且倒下了!", + //Name can't speak right now. + L"%s 现在不能说话。", + + //22-24 plural versions + L"%d个新兵被提升为精兵。", + L"%d个新兵被提升为老兵。", + L"%d个老兵被提升为精兵。", + + //25 + L"开关", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s 疯狂了!", //L"%s goes psycho!", + + //27-28 + //Messages why a player can't time compress. + L"现在压缩时间不安全,因为你有佣兵在分区%s。", + L"现在压缩时间不安全,因为你有佣兵在异形所在的矿井。", + + //29-31 singular versions + L"1个新兵被晋升为精兵。", + L"1个新兵被晋升为老兵。", + L"1个老兵被晋升为精兵。", + + //32-34 + L"%s无语。", //"%s doesn't say anything.", + L"回到地面?", + L"(第%d小队)", //"(Squad %d)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s 修复了 %s的%s。", + + //36 + L"血猫", + + //37-38 "Name trips and falls" + L"%s 踩到陷阱,跌倒了。", + L"这个物品不能从这里捡起。", + + //39 + L"你现有的佣兵中没人能进行战斗。民兵们将独自和异形作战。", + + //40-43 + //%s is the name of merc. + L"%s用完了医药箱里的药品!", //"%s ran out of medical kits!", + L"%s没有所需技能来医疗他人!", //"%s lacks the necessary skill to doctor anyone!", + L"%s用完工具箱里的工具!", //"%s ran out of tool kits!", + L"%s没有所需技能来修理物品!", //"%s lacks the necessary skill to repair anything!", + + //44-45 + L"修理时间", //L"Repair Time", + L"%s看不到这个人。", + + //46-48 + L"%s的增程枪管掉下来了!", //"%s's gun barrel extender falls off!", + // HEADROCK HAM 3.5: Changed to reflect facility effect. + L"只允许不多于%d名佣兵在这个分区训练民兵。", //"No more than %d militia trainers are permitted per sector.", //L"No more than %d militia trainers are permitted in this sector.",//ham3.6 + L"你确定吗?", //"Are you sure?", + + //49-50 + L"时间压缩", + L"车辆的油箱已经加满油了。", + + //51-52 Fast help text in mapscreen. + L"继续时间压缩 (|S|p|a|c|e)", + L"停止时间压缩 (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s 修理好了卡壳的 %s", //L"%s has unjammed the %s", + L"%s 修理好了卡壳的 %s的%s", //L"%s has unjammed %s's %s", + + //55 + L"查看分区存货时无法压缩时间。", //L"Can't compress time while viewing sector inventory.", + + L"没有找到铁血联盟2光盘,程序即将退出。", //The Jagged Alliance 2 v1.13 PLAY DISK was not found. Program will now exit. + + L"物品组合成功。", + + //58 + //Displayed with the version information when cheats are enabled. + L"当前/最大进展: %d%%/%d%%", //"Current/Max Progress: %d%%/%d%%",//zww + + L"护送John和Mary?", + + // 60 + L"开关被激活", //"Switch Activated.", + + L"%s的陶瓷片已经粉碎了!", //"%s's ceramic plates have been smashed!", + L"%s 多打了%d发子弹!", //"%s fires %d more rounds than intended!", + L"%s 多打了1发子弹!", //"%s fires %d more round than intended!", + + L"你得先关闭物品信息界面!", + + L"无法快进 - 该分区有敌对的市民和/或血猫。", // 65 //L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", +}; + +// HEADROCK HAM 3.5: Added sector name +STR16 gzCWStrings[] = +{ + L"是否呼叫邻近区域的援兵到%s?", //L"Call reinforcements to %s from adjacent sectors?", +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|位|置: %d\n", + L"%s|亮|度: %d / %d\n", + L"%s|目|标|距|离: %d\n", + L"%s|I|D: %d\n", + L"%s|订|单: %d\n", + L"%s|属|性: %d\n", + L"%s|当|前 |A|Ps: %d\n", + L"%s|当|前 |生|命: %d\n", + L"%s|当|前|精|力: %d\n", + L"%s|当|前|士|气: %d\n", + L"%s|当|前|惊|慌|度: %d\n", //L"%s|Current |S|hock: %d\n", + L"%s|当|前|压|制点数: %d\n",//L"%s|Current |S|uppression Points: %d\n", + // Full info + L"%s|头|盔: %s\n", + L"%s|防|弹|衣: %s\n", + L"%s|作|战|裤: %s\n", + // Limited, Basic + L"|护|甲: ", + L"头盔 ", + L"防弹衣 ", + L"作战裤", + L"装备了", + L"无护甲", + L"%s|夜|视|仪: %s\n", + L"无夜视仪", + L"%s|防|毒|面|具: %s\n", + L"无防毒面具", + L"%s|头|部|1: %s\n", + L"%s|头|部|2: %s\n", + L"\n(背包内) ", + L"%s|武|器: %s ", + L"空手", + L"手枪", + L"冲锋枪", + L"步枪", + L"机枪", + L"霰弹枪", + L"刀", + L"重武器", + L"无头盔", + L"无防弹衣", + L"无作战裤", + L"|护|甲: %s\n", + // Added - SANDRO + L"%s|技能 1: %s\n", + L"%s|技能 2: %s\n", + L"%s|技能 3: %s\n", + // Additional suppression effects - sevenfm + L"%s|火|力|压|制导致的|A|P损失:%d\n", + L"%s|火|力|压|制|耐|性: %d\n", + L"%s|有|效|惊|吓|等|级:%d\n", + L"%s|A|I|士|气:%d\n", +}; + +STR16 New113Message[] = +{ + L"风暴开始了。", + L"风暴结束了。", + L"下雨了。", + L"雨停了。", + L"小心狙击手……", + L"火力压制!", + L"点射", + L"自动", + L"榴弹", + L"榴弹点射", + L"榴弹自动", + L"UB", // INFO: UB = Under Barrel + L"UBRST", + L"UAUTO", + L"BAYONET", + L"狙击手!", + L"已经点选物品,此时无法分钱。", + L"新兵的会合地被挪至%s,因降落地点%s目前由敌人占据。", + L"物品销毁", + L"此类物品全部销毁", + L"物品卖出", + L"此类物品全部卖出", + L"你得检查一下你的眼部装备", + // Real Time Mode messages + L"进入战斗模式", + L"视野中没有敌人", + L"即时潜行模式 关闭", + L"即时潜行模式 开启", + //L"Enemy spotted! (Ctrl + x to enter turn based)", + L"发现敌人!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s偷窃成功!",// L"%s was successful on stealing!", + L"%s没有足够的行动点来偷取所选物品。",// L"%s had not enough action points to steal all selected items.", + L"是否在包扎前对%s实施手术?(可回复%i点生命。)",// L"Do you want to make surgery on %s before bandaging? (You can heal about %i Health.)", + L"是否对%s实施手术?(可回复%i点生命。)",// L"Do you want to make surgery on %s? (You can heal about %i Health.)", + L"是否进行必要的手术?(%i名病人)",// L"Do you wish to make necessary surgeries first? (%i patient(s))", + L"是否在该病人身上进行手术?",// L"Do you wish to make the surgery on this patient first?", + L"在包扎前是否进行手术?",// L"Apply first aid automatically with necessary surgeries or without them?", + L"您不包扎%s直接进行手术吗?(手术可回复%i生命值,输血*:使用血包手术可回复%i生命值。)", //L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", + L"您要给%s进行手术吗?(手术可回复%i生命值,输血*:使用血包手术可回复%i生命值。)", //L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"您希望给%s进行手术吗?(手术可回复%i生命值,输血*:使用血包手术可回复%i生命值。)", //L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"%s手术完毕。",// L"Surgery on %s finished.", + L"%s 胸部中弹,失去1点生命上限!",// L"%s is hit in the chest and loses a point of maximum health!", + L"%s 胸部中弹,失去%d点生命上限!",// L"%s is hit in the chest and loses %d points of maximum health!", + L"%s被爆炸物炸瞎了!(丧失视野)", + L"%s重获1点失去的%s",// L"%s has regained one point of lost %s", + L"%s重获%d点失去的%s",// L"%s has regained %d points of lost %s", + L"你的侦察能力避免了敌人的偷袭!",// L"Your scouting skills prevented you to be ambushed by the enemy!", + L"多亏了你的侦查技能,你成功的避开了大群血猫!",// L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", + L"%s 命根子中弹,痛苦的倒下了!",// L"%s is hit to groin and falls down in pain!", + ////////////////////////////////////////////////////////////////////////////////////// + L"注意: 敌人尸体被发现!!!", + L"%s[%d发]\n%s %1.1f %s", // L"%s [%d rnds]\n%s %1.1f %s", + L"AP不够!需要%d,你只有%d。", //L"Insufficient AP Points! Cost %d, you have %d.", + L"提示: %s", + L"玩家力量: %d - 敌人力量: %6.0f", //Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"无法使用技能!", + L"敌人在该分区时无法建造!", + L"看不到那个地方!", + L"无法发射炮弹,不是合理的区域定位!", + L"无线电波段遭到干扰。无法通讯!", + L"无线电操作失败!", + L"迫击炮弹不足,无法在分区发动密集轰炸!", + L"Items.xml里没有定义信号弹物品!", + L"Items.xml里没有定义高爆弹物品!", //L"No High-Explosive shell item found in Items.xml!", + L"未发现迫击炮,无法执行密集轰炸!", + L"干扰信号成功,不需要重复操作!", + L"正在监听周围声音,无需重复操作!", + L"正在观察,无需重复操作!", + L"正在扫描干扰信号,无需重复操作!", + L"%s没办法把%s用在%s上。", + L"%s指示%s前来支援。", + L"%s无线电设备没电了。", + L"正在工作的无线电设备。", + L"望远镜", + L"耐心", + L"%s的防护盾毁坏了!", //L"%s's shield has been destroyed!", + L" 延迟", //L" DELAY", + L"输血*", //L"Yes*", + L"是的", //L"Yes", + L"否", //L"No", + L"%s将%s应用于%s。", //L"%s applied %s to %s.", +}; + +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s 害怕得退缩了!",// L"%s cowers in fear!", + L"%s 被压制住了!",// L"%s is pinned down!", //ham3.6 + L"%s 多打了几发子弹!",// L"%s fires more rounds than intended!", + L"你不能在这个地区训练民兵。",// L"You cannot train militia in this sector.", + L"民兵拾起 %s。",// L"Militia picks up %s.", + L"有敌人出没时无法训练民兵!", // L"Cannot train militia with enemies present!", + // 6 - 10 + L"%s缺乏训练民兵所需要的领导能力。",// L"%s lacks sufficient Leadership score to train militia.", + L"此地训练民兵的教官不能超过%d名。",// L"No more than %d Mobile Militia trainers are permitted in this sector.", + L"%s和周边地区的游击队已经满员了!",// L"No room in %s or around it for new Mobile Militia!", + L"你需要有至少%d个民兵在%s每个被解放的地区才能训练游击队。",// L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", + L"有敌人出没时不能在任何设施内工作!",// L"Can't staff a facility while enemies are present!", + // 11 - 15 + L"%s缺乏就任于该设施所需要的智慧。",// L"%s lacks sufficient Wisdom to staff this facility.", + L"%s已经满员了。",// L"The %s is already fully-staffed.", + L"使用该设施每小时消耗$%d,你确定吗?",// L"It will cost $%d per hour to staff this facility. Do you wish to continue?", + L"你没有足够的资金来支付今天的设施费用。付出$%d,还欠$%d,当地人很不满。",// L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", + L"没有足够的资金来支付今天的设施费用。欠款$%d,当地人很不满.。",// L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", + // 16 - 20 + L"你仍有$%d的欠款,同时你已经身无分文了!",// L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", + L"你仍有$%d的欠款,在有钱还清这笔债务之前你不能分配雇佣兵去这个设施。",// L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", + L"你有$%d的欠款,是否支付?",// L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", + L"这个区域没有",// L"N/A in this sector", + L"日常支出",// L"Daily Expenses", + // 21 - 25 + L"维持民兵的资金不足!%d名民兵回老家结婚去了。",// L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", + L"要在战斗中查看某样物品,你必须先把它捡起来。", // L"To examine an item's stats during combat, you must pick it up manually first.", + L"要在战斗中组合两样物品,你必须先把它们捡起来。", // L"To attach an item to another item during combat, you must pick them both up first.", + L"要在战斗中合并两样物品,你必须先把它们捡起来。", // L"To merge two items during combat, you must pick them both up first.", +}; + +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"没有可用的转换方案", //L"No available adjustments", + L"%s被拆开了。", //L"%s was split into several parts.", + L"%s被拆开了,部件放在了%s的背包里。", //L"%s was split into several parts. Check %s's inventory for the resulting items.", + L"由于背包没有足够空间,转换后的%s一些物品被丢在了地上。", //L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", + L"%s被拆开了。由于背包没有足够空间,转换后的%s一些物品被丢在了地上。", //L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", + L"你希望转换该列所有%d吗?如果只想转换1个,请将它从该列中先取出来。", //L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", + // 6 - 10 + L"拆分弹药箱,弹匣放入背包", //L"Split Crate into Inventory", + L"拆分成%d发的弹匣", //L"Split into %d-rd Mags", + L"%s被拆分成%d个弹匣每个有%d发子弹。", //L"%s was split into %d Magazines containing %d rounds each.", + L"%s拆分完成并放入%s的背包。", //L"%s was split into %s's inventory.", + L"%s的背包空间不足,放不下这个口径的弹匣了!", //L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", + L"即时模式", //L"Instant mode", + L"延时模式", //L"Delayed mode", + L"即时模式 (%d AP)", //L"Instant mode (%d AP)", + L"延时模式 (%d AP)", //L"Delayed mode (%d AP)", +}; + +// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercLevelUp.xml" file! +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"鉴于Gaston最近发挥异常突出,他的服务费也跟着上涨。以我个人的观点,这一点也不让我惊讶。 ± ± Speck T. Kline ± ", + // Stogie: Text from Line 43 in Email.edt + L"请注意,Stogie近期能力有所提升,他的价格也要随之增长。 ± ± Speck T. Kline ± ", + // Tex: Text from Line 45 in Email.edt + L"请注意,因为Tex新获得的经验, 更高的身价才匹配他的能力。 ± ± Speck T. Kline ± ", + // Biggens: Text from Line 49 in Email.edt + L"鉴于Biggins发挥有所提高, 他的价格也同时上涨。 ± ± Speck T. Kline ± ", +}; + +// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercAvailable.xml" file! +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk + L"转发自AIM服务器:Victor Kolesnikov的信件", + L"你好,这是Monk,留言已收到。我已经回来了,你可以联系我了。 ± ± 等你的电话。 ± ", + + // Brain: Text from Line 60 + L"转发自AIM服务器:Janno Allik的信件", + L"我已经准备好接受任务了。我有空干任何事情 ± ± Janno Allik ± ", + + // Scream: Text from Line 62 + L"转发自AIM服务器:Lennart Vilde的信件", + L"Lennart Vilde已经准备好了! ± ", + + // Henning: Text from Line 64 + L"转发自AIM服务器:Henning von Branitz的信件", + L"你的留言我已收到,谢谢。请到A.I.M主页联系我,然后讨论招募事宜。 ± ± 那时见! ± ± Henning von Branitz ± ", + + // Luc: Text from Line 66 + L"转发自AIM服务器:Luc Fabre的信件", + L"收到留言,Merci(谢谢)! 你能考虑我我非常高兴。你知道在哪里能找到我。 ± ± 希望能收到你的电话。 ± ", + + // Laura: Text from Line 68 + L"转发自AIM服务器:Dr. Laura Colin的信件", + L"你好!非常高兴你能给我留言,我很感兴趣。 ± ± 请再上AIM,我愿意听听详细事宜 ± ± 此致敬礼! ± ± Dr. Laura Colin ± ", + + // Grace: Text from Line 70 + L"转发自AIM服务器:Graziella Girelli的信件", + L"你上次想联系我但是没有成功。± ± 你懂得?家庭聚会啦。我现在已经厌倦了我的家庭,你能再上AIM联系我的话我会非常高兴 ± ± Ciao(再见)! ± ", + + // Rudolf: Text from Line 72 + L"转发自AIM服务器:Rudolf Steiger的信件", + L"你知道我每天有多少个电话要接吗?每个蠢货都认为他可以Call我。 ± ± 反正我回来了,前提是你真的有有趣的工作给我的话。 ± ", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"转发自AIM服务器:M.E.R.C的信件", + L"我收到你的留言,等你联系。 ± ", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"狙击手: 拥有鹰的眼睛和百步穿杨的枪法! ± ", + // Camouflage + L"伪装: 跟你的伪装迷彩比起来,树丛看起来倒象是假的! ± ", + // SANDRO - new strings for new traits added + // MINTY - Altered the texts for more natural English, and added a little flavour too + // Ranger + L"猎兵:你跟那些从德克萨斯来的土包子可大不一样! ± ", + // Gunslinger + L"快枪手:拿着一两把手枪,你可以和Billy the Kid一样致命! ± ", + // Squadleader + L"领队:天生的领袖,你的队员需要你的灵感! ± ", + // Technician + L"技师:你比MacGyver牛逼多了!无论机械、电子产品还是爆破物,你都能修! ± ", + // Doctor + L"军医:从轻微擦伤到开肠破肚,甚至截肢,你都能治! ± ", + // Athletics + L"运动员:你的速度和活力能和奥运会运动员相提并论! ± ", + // Bodybuilding + L"健身:施瓦辛格?窝囊废一个。你只用一只手就能办掉他。 ± ", + // Demolitions + L"爆破:播种手雷,深埋炸弹,看羊羔飞。这就是你的生活! ± ", + // Scouting + L"侦查:没有什么东西你觉察不到! ± ", + // Covert ops + L"特工: 你让詹姆斯邦德甘拜下风! ± ", // L"Covert Operations: You make 007 look like an amateur! ± ", + // Radio Operator + L"无线电操作员:你通过使用通讯设备让队伍的战略和战术水平得到了提升。 ± ", //L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", + // Survival + L"向导: 大自然是你第二个家。 ± ", //L"Survival: Nature is a second home to you. ± ", +}; + +STR16 NewInvMessage[] = +{ + L"此时无法拾起背包", + L"背包中无处可放", + L"没发现背包", + L"拉锁只在战斗中有效", + L"背包拉锁打开时无法移动", + L"你确定要变卖该地区所有物品吗?", + L"你确定要销毁该地区所有物品吗?", + L"装备大背包后无法爬上房顶", + L"所有人的背包已放下", + L"所有人的背包已捡起", + L"%s 放下背包", //L"%s drops backpack", + L"%s 捡起背包", //L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"启动RakNet服务器...", + L"服务器启动,等待连接...", + L"你现在必须按'2'来连接你的客户端和服务器。", + L"服务器已经在运行。", + L"服务器启动失败。终止中。", + // 5 + L"%d/%d 客户端已经准备好进入即时模式。", + L"服务器断开并关闭。", + L"服务器没有运行。", + L"客户端仍在载入, 请稍等...", + L"服务器启动之后你无法更改着陆点。", + // 10 + L"已发送文件 '%S' - 100/100",//L"Sent file '%S' - 100/100", + L"文件已发送到 '%S'。",// L"Finished sending files to '%S'.", + L"开始发送文件到 '%S'。",// L"Started sending files to '%S'.", + L"使用空域视图选择你想进入的地图。你只能在点击“开始游戏”按钮前更换地图。", // L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"启动RakNet客户端...", + L"正在连接IP: %S ...", + L"接受游戏设置: ", + L"你已经连接上了。", + L"你已经开始连接...", + // 5 + L"客户端 #%d - '%S' 已被雇佣 '%s'。", + L"客户端 #%d - '%S' 已雇佣另一名佣兵。", + L"你已准备 - 准备就绪 = %d/%d。", + L"你不再准备 - 准备就绪 = %d/%d。", + L"开始战斗...", + // 10 + L"客户端 #%d - '%S' 已准备 - 准备就绪 = %d/%d。", + L"客户端 #%d - '%S' 不再准备 - 准备就绪 = %d/%d", + L"你已准备。 等候其他客户端... 按'OK'如果你已准备就绪。", + L"让我们开始战斗!", + L"要开始游戏必须运行一台客户端。", + // 15 + L"游戏无法开始。没有佣兵被雇佣...", + L"等待服务器解锁便携电脑出现'OK'...", + L"中断", + L"中断结束", + L"鼠标方格坐标: ", + // 20 + L"X: %d, Y: %d", + L"坐标值: %d", + L"服务器独占模式", + L"手动选择服务器优先级: ('1' - 授权 便携电脑/雇佣) ('2' - 启动/载入 级别) ('3' - 解锁 UI) ('4' - 完成设置)", + L"分区=%s, 最大客户端数=%d, 最大佣兵数=%d, 游戏模式=%d, 同一佣兵=%d, 伤害倍数=%f, 时间前进=%d, 秒/Tic=%d, 取消 BobbyRay=%d, 取消 Aim/Merc 装备=%d, 取消士气=%d, 测试=%d。", + // 25 + L"", + L"新建连接: 客户端 #%d - '%S'。", + L"队: %d。",//not used any more + L"'%s' (客户端 %d - '%S') 已被 '%s' (客户端 %d - '%S' 杀死)", + L"踢出客户端 #%d - '%S'。", + // 30 + L"开始排序客户端号。 #1: <取消>, #2: %S, #3: %S, #4: %S", + L"开始客户端 #%d。", + L"请求即时模式...", + L"转回即时模式。", + L"错误: 转回过程中出现错误。", + // 35 + L"要解锁笔记本电脑开始雇佣吗?(连接所有客户端?)", + L"服务器已经解锁笔记本电脑。开始雇佣!", + L"中断。", + L"你无法更改着陆点,如果你只是客户端而不是服务器。", + L"你拒绝投降, 因为你在一个多人游戏中。", + // 40 + L"你所有的佣兵全部死亡!", + L"激活观看模式。", + L"你已被击败!", + L"对不起, 在多人游戏中无法攀登。", + L"你雇佣了 '%s'", + // 45 + L"当开始购买后你不能更换地图",// L"You cant change the map once purchasing has commenced", + L"地图改为 '%s'。",// L"Map changed to '%s'", + L"玩家 '%s' 断开连接, 踢出游戏",// L"Client '%s' disconnected, removing from game", + L"您已经断开连接,返回主菜单。",// L"You were disconnected from the game, returning to the Main Menu", + L"连接失败, 5秒内重试, 还有%i次重试机会……",// L"Connection failed, Retrying in 5 seconds, %i retries left...", + //50 + L"连接失败,放弃……",// L"Connection failed, giving up...", + L"在另一个玩家进入前您无法开始游戏。",// L"You cannot start the game until another player has connected", + L"%s : %s", + L"发送给所有人",// L"Send to All", + L"发送给盟友",// L"Allies only", + // 55 + L"此游戏已经开始,无法加入。",// L"Cannot join game. This game has already started.", + L"%s (team): %s", + L"#%i - '%s'",// L"Client #%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"已收到服务器的所有文件。",// L"Received all files from server.", + L"'%S' 完成下载。",// L"'%S' finished downloading from server.", + L"'%S' 开始从服务器下载。",// L"'%S' started downloading from server"., + L"在全部客户端的文件未接收完以前不能开始游戏。",// L"Cannot start the game until all clients have finished receiving files", + L"你需要下载修改后的文件才能继续游戏, 你想继续吗?",// L"This server requires that you download modified files to play, do you wish to continue?", + // 65 + L"点击 '准备' 进入战术画面。",// L"Press 'Ready' to enter tactical screen.", + L"不能连接到服务器,因为你的版本%S和服务器端的版本%S不同。", + L"你击毙了一个敌人。", + L"无法启动游戏,因为所有小队都一样。", //L"Cannot start the game, because all teams are the same.", + L"服务器使用了新装备系统(NIV),但是你的屏幕分辨率不支持NIV。", // + // 70 + L"无法保存接收文件'%S'", + L"%s的炸弹被%s拆除了", + L"你输了,真丢人", // All over red rover + L"禁用观众模式", + L"选择所要踢出游戏的用户:#1: <取消>, #2: %S, #3: %S, #4: %S", + // 75 + L"队伍%s被消灭了。", + L"客户端初始化失败。结束游戏。", + L"客户端连接中断,强行关闭。", + L"客户端无响应。", + L"提示:如果游戏卡死(对手进度条不动),告知服务端然后按ALT+E获取控制权!", + // 80 + L"AI回合 - %d剩余", +}; + +STR16 gszMPEdgesText[] = +{ + L"北", //L"N", + L"东", //L"E", + L"南", //L"S", + L"西", //L"W", + L"中", //L"C", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"F小队", + L"B小队", + L"D小队", + L"C小队", + L"N/A", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"游戏类型: ",// L"Game Type: ", + L"玩家: ",// L"Players: ", + L"所拥有的佣兵: ",// L"Mercs each: ", + L"手提电脑打开时你无法开始移动。",// L"You cannot change starting edge once Laptop is unlocked.", + L"手提电脑开启后你无法更换队伍。",// L"You cannot change teams once the Laptop is unlocked.", + L"随机佣兵: ",// L"Random Mercs: ", + L"Y", + L"难度:",// L"Difficulty:", + L"服务器版本:", //Server Version +}; + +STR16 gzMPSScreenText[] = +{ + L"记分板",// L"Scoreboard", + L"继续",// L"Continue", + L"取消",// L"Cancel", + L"玩家",// L"Player", + L"杀人数",// L"Kills", + L"死亡数",// L"Deaths", + L"女王的部队",// L"Queen's Army", + L"命中数",// L"Hits", + L"脱靶数",// L"Misses", + L"准确度",// L"Accuracy", + L"损害量",// L"Damage Dealt", + L"受损量",// L"Damage Taken", + L"请等待服务器指令按‘继续’。", //L"Please wait for the server to press 'Continue'.", +}; + +STR16 gzMPCScreenText[] = +{ + L"取消",// L"Cancel", + L"连接到服务器",// L"Connecting to Server", + L"获得服务器设置",// L"Getting Server Settings", + L"下载定制文件",// L"Downloading custom files", + L"按 'ESC' 取消,'Y' 开始聊天",// L"Press 'ESC' to cancel or 'Y' to chat", + L"按 'ESC' 取消", // L"Press 'ESC' to cancel", + L"准备", // L"Ready", +}; + +STR16 gzMPChatToggleText[] = +{ + L"发送给所有人",// L"Send to All", + L"发送给盟友",// L"Send to Allies only", +}; + +STR16 gzMPChatboxText[] = +{ + L"多人聊天",// L"Multiplayer Chat", + L"聊天: 按 'Enter' 发送,'Esc' 取消。",// L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", +}; + + +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits 用于旧特长 + L"下一页你必须依照你作为雇佣兵的专业选择特长。注意你只能选择两种一般特长或者一种专家级特长。", + L"你可以只选择一个专家特长或者干脆什么也不选,作为回报你会得到额外的能力点数。注意电子、左右开弓和伪装是没有专家级的。", + // For new major/minor traits 用于新的主/副特长 + L"下一步你将会为你的佣兵选择专业技能。在第一页你可以选择%d项潜在主技能,代表佣兵在你的小队里的角色,第二页你可以选择副技能,代表个人特征。", // L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", + L"最多只能选择%d项。这意味着如果你没有选择主技能,你可以选择%d项副技能。如果你选择了两个主技能(或者一个加强技能),你只能再选择%d项副技能。", // L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"请 按 照 你 对 自 己 的 感 觉 , 调 整 你 的 各 项 能 力 值 。 各 项 能 力 值 的 最 大 值 为", + L"I.M.P 能力值和技能概览。", + L"奖励点数 :", + L"开始等级", + // New strings for new traits + L"下一页你将设定你的属性(生命,敏捷,灵敏,力量和智力)和基本技能。属性不能低于%d。", + L"其余的是“技能”,它可以设定为零,表示你对此一窍不通。", + L"所有初始数值都设置在最低,其中有一些数值因为你选择的特技而被设在一个最低标准,不能低于该标准。", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P 性格分析", + L"现在开始你个人档案的建立,在第一页会有一些性格特质给你的角色选择,可能你会发觉列出的选择未能完全反映你的性格,但是请至少选择一样你认为最接近你的。", + L"下面来设定你性格上的缺陷,相信自己做一个诚实的孩子吧!每个人至少都有一种缺陷的。真实反映有助于让你的未来雇主更能了解你的潜力,避免给你安排不利的工作环境。", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"平常", + L"友善", + L"独行侠", + L"乐观主义者", + L"悲观主义者", + L"有侵略性", + L"傲慢自大", + L"大人物", + L"神憎鬼厌", + L"胆小鬼", + L"I.M.P 性格特征", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"普通", + L"喜欢社交", + L"独行侠", + L"乐观", + L"坚定自信", + L"知识份子", + L"野性", + L"侵略性", + L"镇定", + L"无所畏惧", + L"和平主义者", + L"恶毒", + L"爱炫耀", + L"懦夫", //L"Coward", + L"I.M.P 性格特征", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P 颜色及身型", + L"I.M.P 颜色", + L"请选择你喜欢的IMP发色、肤色、服装颜色以及体型。", + L"请选择你喜欢的IMP发色、肤色、服装颜色。", + L"点选这里佣兵将单手持大枪。", + L"\n(提示: 你必须有强壮体格。)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"头色", + L"肤色", + L"上衣颜色", + L"裤子颜色", + L"一般体型", + L"魔鬼身材", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"身心健全", + L"怕热", + L"神经质", + L"幽闭恐惧症", + L"旱鸭子", + L"怕虫", + L"健忘", + L"神经错乱", + L"聋子", //L"Deaf", + L"近视眼", //L"Shortsighted", + L"血友病",//L"Hemophiliac", + L"恐高", //L"Fear of Heights", + L"自残倾向", //L"Self-Harming", + L"I.M.P 性格缺陷", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] = +{ + L"我们觉得你肯定会因为这不是语音信息很高兴。", //L"We bet you're glad this isn't voicemail.", + L"你不是小时候去迪厅去多了,就是离大规模火炮轰击太近,或者就是太老了。总之,你的队友最好开始学习手语了。", // L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"如果丢了眼镜你就死定了。", // L"You'll be screwed if you ever lose your glasses.", + L"因为你在发光的长方体前面花了太久时间。你应该多吃点胡萝卜,你见过戴眼镜的兔子么?没有吧。", // L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = +{ + L"你确信这个工作适合你么?",//L"Are you SURE this is the right job for you?", + L"只要你够NB永远不被枪打中,或者战斗只在设施完备的医院中进行,应该就会没事的。",//L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= +{ + L"这么说吧,你是个走路鸡。", //L"Let's just say you are a grounded person.", + L"登高啊,上房啊,爬山什么的任务啊对你来说很艰难,我们推荐你去没有山的地方执行任务,比如荷兰。", //L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"你应该经常消毒你的刀子。", //L"Might want to make sure your knives are always clean.", + L"你对刀子有种特别的感情。我不是说你害怕刀子,而是完全相反的那种感情,你懂吧?", //L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s缺乏所需要的力量。", + L"%s缺乏所需要的敏捷。", + L"%s缺乏所需要的灵活。", + L"%s缺乏所需要的生命值。", + L"%s缺乏所需要的智慧。", + L"%s缺乏所需要的枪法。", + // 6 - 10 + L"%s缺乏所需要的医疗技能。", + L"%s缺乏所需要的机械技能。", + L"%s缺乏所需要的领导能力。", + L"%s缺乏所需要的爆破技能。", + L"%s缺乏所需要的经验(等级)。", + // 11 - 15 + L"%s的士气不足不能完成这项任务。", + L"%s过度疲劳, 不能完成这项任务。", + L"%s的忠诚度不足,当地人拒绝让你执行这项任务。", + L"已经有太多人被分配到%s了。", + L"已经有太多人在%s执行这项任务了。", + // 16 - 20 + L"%s找不到更多需要修理的物品。", + L"%s损失了一些%s, 在%s的工作中!", + L"%s损失了一些%s, 在%s, %s的工作中!", + L"%s在%s工作时负伤,急需医护!", + L"%s在%s,%s工作时负伤,急需医护!", + // 21 - 25 + L"%s在%s工作时负伤,只不过是皮外伤。", + L"%s在%s,%s工作时负伤,只不过是皮外伤。", + L"%s地区的居民似乎对%s的出现不满。", + L"%s地区的居民似乎对%s在%s的行为不满。", + L"%s在%s的所作所为造成地区忠诚度下降!", + // 26 - 30 + L"%s在%s, %s的所作所为造成了该地区忠诚度下降!", + L"%s喝高了。", // <--- This is a log message string. + L"%s在%s得了重病, 被暂时解职了。", + L"%s得了重病, 无法继续在%s, %s的活动。", + L"%s在%s负伤了。", // <--- This is a log message string. + // 31 - 35 + L"%s在%s负了重伤。", //<--- This is a log message string. + L"现在这里有俘虏能认得出%s。", + L"%s现在是人尽皆知的佣兵告发者。至少需要再等%d小时。", //L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", + + +}; + +STR16 gzFacilityRiskResultStrings[]= +{ + L"力量", + L"灵活", + L"敏捷", + L"智慧", + L"生命", + L"枪法", + // 5-10 + L"领导", + L"机械", + L"医疗", + L"爆破", +}; + +STR16 gzFacilityAssignmentStrings[]= +{ + L"环境", + L"工作人员", + L"饮食", + L"休息", + L"修理物品", + L"修理%s", // Vehicle name inserted here + L"修理机器人", + // 6-10 + L"医生", + L"病人", + L"锻炼力量", + L"锻炼敏捷", + L"锻炼灵活", + L"锻炼生命", + // 11-15 + L"锻炼枪法", + L"锻炼医疗", + L"锻炼机械", + L"锻炼领导", + L"锻炼爆破", + // 16-20 + L"学习力量", + L"学习敏捷", + L"学习灵活", + L"学习生命", + L"学习枪法", + // 21-25 + L"学习医疗", + L"学习机械", + L"学习领导", + L"学习爆破", + L"训练力量", + // 26-30 + L"训练敏捷", + L"训练灵活", + L"训练生命", + L"训练枪法", + L"训练医疗", + // 30-35 + L"训练医疗", + L"训练领导", + L"训练爆破", + L"审讯俘虏", //L"Interrogate Prisoners", + L"便衣揭发", + // 36-40 + L"传播谣言", + L"传播谣言", // spread propaganda (globally) + L"搜集谣言", + L"指挥民兵", //L"Command Militia", militia movement orders +}; +STR16 Additional113Text[]= +{ + L"铁血联盟2 v1.13 窗口模式需要一个16bpp的颜色深度。", + L"铁血联盟2 v1.13 全屏模式(%d x %d)不支持你的显示屏分辨率。\n请改变游戏分辨率或使用16bpp窗口模式。", //L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", + L"存盘文件%s读取错误:存盘文件的(%d)数量跟Ja2_Options.ini设置的(%d)不一致。", //L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", + // WANNE: Savegame slots validation against INI file + L"佣兵 (MAX_NUMBER_PLAYER_MERCS) / 交通工具 (MAX_NUMBER_PLAYER_VEHICLES)", + L"敌人 (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"动物 (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"民兵 (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"平民 (MAX_NUMBER_CIVS_IN_TACTICAL)", + +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +// MINTY - Changed some of the following taunts to sound more natural +STR16 sEnemyTauntsFireGun[]= +{ + L"吃我一发吧!", + L"兔崽子,来见你外公!", // MINTY - "Touch this" just doesn't sound right, so I changed it to a Scarface quote. + L"放马过来吧!", + L"你是我的了!", + L"去死吧!", + L"害怕了吗?操你妈妈的!", + L"这会很痛的哦!", + L"来吧你这个混蛋!", + L"战吧!很快就会分出胜负的!", + L"过来爸爸的怀抱里吧!", + L"你的葬礼马上就会举行的了!", + L"小样!你很快就会被打包寄回去的!", + L"嘿!想玩玩是吧?", + L"臭婊子,你早应该呆在家里!", + L"靠!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"把你们做成烤肉!",// L"Barbecue time!", + L"送给你的礼物!",// L"I got a present for ya.", + L"灰飞烟灭吧!",// L"Bam!", + L"说“茄子”!",// L"Smile!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"给我接住!", + L"这是给你的!", + L"老鼠给我出来吧!", + L"这个是专门给你尝尝的。", + L"灭哈哈哈哈哈!", + L"接住吧!猪头!", + L"我就喜欢这样!", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"我要把你的头皮活活剥下来!死人头!", + L"来跟我玩玩吧!", + L"我要让你开肠破肚!", + L"我会把你碎尸万段!", + L"他妈的!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"靠!看来我们遇到纯爷们了...", + L"我参加军队是为了抢娘们而不是来送死的!", + L"我受够啦!", + L"上帝啊!救救我吧!", + L"我可不想白白送死...", + L"妈妈咪啊!", + L"老子还会回来的!后会有期!", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"我似乎听见啥了!", + L"谁在那里?", + L"搞什么搞?", + L"嘿!是谁?...", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"他们就在那里!", + L"现在我们来玩玩吧!", + L"我没想到会变成这样...", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"啊啊啊!", + L"呜呜!", + L"痛死我啦!", + L"操你妈妈的!", + L"你会后悔的!", + L"什么..!", + L"你现在可是真把爷我惹火了。", + +}; + +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"草…我草!", //L"Da'ffff...!", + L"我的天哪!", //L"Oh my God!", + L"真他妈的!", //L"Holy crap!", + L"有敌人!", //L"Enemy!!!", + L"警报!警报!", //L"Alert! Alert!", + L"这儿有一个!", //L"There is one!", + L"进攻!", //L"Attack!", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"说明", + L"常规", + L"进阶", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"说明", + L"常规", + L"进阶", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"基本性能", + L"附加性能", + L"AP 消耗", + L"点射 / 连发", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"参数图标", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|说|明|页|面:\n \n显示该物品基本的文字描述。", + L"|常|规|性|能|页|面:\n \n显示该物品的详细性能数据。\n \n武器:再次点击进入第二页。", + L"|进|阶|性|能|页|面:\n \n显示使用该物品的额外效果。", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|基|本|性|能:\n \n由物品类别(武器/护甲/杂物)决定的基本性能与数据。", + L"|附|加|性|能:\n \n该物品的附加特性,以及(或)附加能力。", + L"|A|P |消|耗:\n \n使用这件武器需要耗费的AP。", + L"|点|射 |/ |连|发|性|能:\n \n武器在点射/连发模式下的相关数据。", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|参|数|图|标\n \n鼠标悬停显示参数名称。", + L"|基|本|数|值\n \n该物品使用的基本数值,不包括由附件或弹药导致的\n奖励或惩罚。", + L"|附|件|加|成\n \n弹药,附件或较差的物品状态导致的\n奖励或惩罚。", + L"|最|终|数|值\n \n该物品使用的最终数值,包括所有由附件或弹药导致的\n奖励或惩罚。", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"参数图标(鼠标悬停显示名称)", + L"|站|立 姿态的奖励/惩罚 ", + L"|蹲|伏 姿态的奖励/惩罚 ", + L"|匍|匐 姿态的奖励/惩罚 ", + L"奖励/惩罚", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|精|度", //L"|A|c|c|u|r|a|c|y", + L"|杀|伤|力", //L"|D|a|m|a|g|e", + L"|射|程", //L"|R|a|n|g|e", + L"|操|控|难|度", //L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", + L"|精|瞄|等|级", //L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", + L"|瞄|准|镜|倍|率", //L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|红|点|效|果", //L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|消|焰", //L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|噪|音", //L"|L|o|u|d|n|e|s|s", + L"|可|靠|性", //L"|R|e|l|i|a|b|i|l|i|t|y", + L"|修|理|难|度", //L"|R|e|p|a|i|r |E|a|s|e", + L"|精|瞄|最|低|有|效|距|离", //L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", + L"|命|中|率|修|正", //L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", + L"|举|枪|A|P", //L"|A|P|s |t|o |R|e|a|d|y", + L"|单|发|A|P", //L"|A|P|s |t|o |A|t|t|a|c|k", + L"|点|射|A|P", //L"|A|P|s |t|o |B|u|r|s|t", + L"|连|发|A|P", //L"|A|P|s |t|o |A|u|t|o|f|i|r|e", + L"|换|弹|匣|A|P", //L"|A|P|s |t|o |R|e|l|o|a|d", + L"|手|动|上|弹|A|P", //L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", + L"|横|向|后|坐|力", //L"|L|a|t|e|r|a|l |R|e|c|o|i|l", // No longer used + L"|后|坐|力", //L"|T|o|t|a|l |R|e|c|o|i|l", + L"|连|发|子|弹|数/5|A|P", //L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \n决定该武器发射的子弹偏离瞄准点的远近。\n \n数值范围:0~100。该数值越高越好。", + L"\n \n决定该武器发射的子弹的平均伤害,不包括\n护甲或穿甲修正。\n \n该数值越高越好。", + L"\n \n从该枪射出的子弹在落地前的\n最大飞行距离(格数)。\n \n该数值越高越好。", + L"\n \n决定握持该武器进行射击时的操控难度。\n \n操控难度越高,命中率越低。\n \n该数值越低越好。", + L"\n \n这个数值显示了该武器的精瞄等级。\n \n精瞄等级越低,每次瞄准获得的命中率加成越\n高。因此,精瞄等级要求较低的武器可以在不损\n失精度的情况下更快地瞄准。\n \n该数值越低越好。", + L"\n \n该值大于1.0时,远距离瞄准中的误差会按比例减小。\n \n \n请注意,高倍率瞄准镜不利于射击距离过近的目标。\n \n \n该值为1.0则说明该武器未安装瞄准镜。\n", + L"\n \n在一定距离上按比例减少瞄准误差。\n \n红点效果只在一定距离内有效,因为超过该距离\n光点就会开始暗淡,最终在足够远处消失。\n \n该数值越高越好。", + L"\n \n该属性起作用时,武器发射不会产生枪焰。\n \n \n敌人不能通过枪焰判断你的位置,但是他们仍然可\n能听到你。", + L"\n \n该参数显示了武器开火时枪声传播的\n范围(格数)。\n \n此范围内的敌人均有可能听到枪声。\n \n该数值越低越好。", + L"\n \n决定了该武器使用时损耗的快慢。\n \n该数值越高越好。", + L"\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有工兵和特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \n瞄准镜提供瞄准命中率加成的最短距离。\n(再近就无效了)", + L"\n \n激光瞄准器提供的命中率修正。", + L"\n \n端枪准备开火所需的AP。\n \n举起该武器后,连续发射不会再消\n耗举枪AP。\n \n但是,除转向和开火之外的其它动作均会放\n下武器。\n \n该数值越低越好。", + L"\n \n该武器射出单发子弹所需的AP。\n \n对于枪械而言,该数值显示了在不精瞄的情况下发射\n一发子弹的AP消耗。\n \n如果该图标为灰色,则该武器不可单发射击。\n \n该数值越低越好。", + L"\n \n一次点射所需的AP。\n \n每次点射的子弹数由枪支本身决定,并\n显示在该图标上。\n \n如果该图标发灰,则该武器不可点射。\n \n该数值越低越好。", + L"\n \n连发模式下,该武器一次齐射三发子弹所需的AP。\n \n超过3发子弹,则需要额外的AP。\n \n如果该图标发灰,则该武器不可连发。\n \n该数值越低越好。", + L"\n \n重新装填榴弹/更换弹匣所需的AP。\n \n该数值越低越好。", + L"\n \n在射击间歇为该武器手动上弹的AP消耗。\n \n该数值越低越好。", + L"\n \n该参数是武器枪口在单发或连发时每颗子弹所造成的水平偏移量。\n \n正数表示向右移动。\n \n负数表示向左移动。\n \n越接近0越好。", //L"\n \nThe distance this weapon's muzzle will shift\nhorizontally between each and every bullet in a\nburst or autofire volley.\n \nPositive numbers indicate shifting to the right.\nNegative numbers indicate shifting to the left.\n \nCloser to 0 is better.", // No longer used + L"\n \n该参数是武器枪口在单发或自动模式下每发子弹所造成的最大偏移量。\n \n该数值越低越好。", //L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", //HEADROCK HAM 5: Altered to reflect unified number. + L"\n \n该参数显示了该武器每多花费5AP在连发模式时\n可多发射的子弹数。\n \n该数值越高越好。", + L"\n \n决定了修理该武器的难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|防|护|值", + L"|覆|盖|率", + L"|损|坏|率", + L"|修|理|难|度", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \n这是护具最重要的属性,决定了其可以吸收多\n少伤害。然而,穿甲攻击以及其它的随机因素\n都可能对最终的伤害值产生影响。\n \n该数值越高越好。", + L"\n \n决定该护具对身体的防护面积。\n \n如果该值低于100%,则攻击有可能\n对未被护具保护的部分身体造成最大伤害。\n该数值越高越好。", + L"\n \n显示护具被击中时的磨损速率,与其\n吸收的伤害成比例。\n该数值越低越好。", + L"\n \n决定了护甲修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有工兵和特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \n决定了护甲修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n黄色 = 只有特殊NPC可以修复损坏值。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|侵|彻|力|(|穿|甲|弹|)", + L"|翻|搅|力|(|开|花|弹|)", + L"|爆|炸|力|(|炸|子|儿|)", + L"|过|热|修|正", + L"|毒|性|百|分|比", + L"|污|垢|修|正", +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \n即子弹穿透目标护甲的能力。\n \n该值小于1时,被子弹命中的护甲的防护值会成比例减少。\n \n反之,当该值大于1时,则增加\n目标护甲的防护值。\n \n该数值越低越好。", + L"\n \n该值决定子弹打穿护甲击中身体时的伤害力\n加成。\n \n该值大于1时,子弹在穿过护甲后会增加伤害。\n \n当该值小于1时,子弹穿过护甲后会减少伤害。\n \n该数值越高越好。", + L"\n \n该值是子弹在击中目标前已经造成的潜在伤害的倍率。\n \n大于1的数值可以增加伤害,反之\n则减少伤害。\n \n该数值越高越好。", + L"\n \n子弹温度系数。\n \n该数值越低越好。", + L"\n \n该值决定子弹伤害中具有毒性的百分比。", + L"\n \n弹药造成的额外污垢。\n \n该数值越低越好。", +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|杀|伤|力", + L"|眩|晕|杀|伤|力", + L"|爆|炸|杀|伤|力", + L"|爆|炸|范|围", + L"|眩|晕|爆|炸|范|围", + L"|噪|音|扩|散|范|围", + L"|催|泪|毒|气|初|始|范|围", + L"|芥|子|毒|气|初|始|范|围", + L"|照|明|初|始|范|围", + L"|烟|雾|初|始|范|围", + L"|燃|烧|初|始|范|围", + L"|催|泪|毒|气|最|终|范|围", + L"|芥|子|毒|气|最|终|范|围", + L"|照|明|最|终|范|围", + L"|烟|雾|最|终|范|围", + L"|燃|烧|最|终|范|围", + L"|效|果|持|续|时|间", + // HEADROCK HAM 5: Fragmentation + L"|碎|片|数|量", + L"|碎|片|单|片|杀|伤", + L"|碎|片|半|径", + // HEADROCK HAM 5: End Fragmentations + L"|噪|音", + L"|挥|发|性", + L"|修|理|难|度", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \n本次爆炸造成的伤害值。\n \n爆炸型爆破品只在被引爆时造成一次性伤害,而\n具有持续效果的爆破品每回合都可以造成伤\n害,直到效果消失。\n \n该数值越高越好。", + L"\n \n爆破造成的非致命性眩晕伤害值。\n \n爆炸型爆破品只在被引爆时造成一次性伤害,而\n具有持续效果的爆破品每回合都可以造成伤\n害,直到效果消失。\n \n该数值越高越好。", + L"\n \n该爆破品不会弹来弹去。\n \n它一碰到任何实物就会立刻爆炸!", + L"\n \n这是该爆破品的有效杀伤半径。\n \n目标距爆炸中心越远,受到的伤害越少。\n \n该数值越高越好。", + L"\n \n这是该爆破品的眩晕伤害半径。\n \n目标距爆炸中心越远,受到的伤害越少。\n \n该数值越高越好。", + L"\n \n这是该陷阱所发出噪音的传播距离。\n \n在该距离之内的士兵可能听到这个噪音\n并有所警觉。\n \n该数值越高越好。", + L"\n \n这是该爆破品释放出的催泪毒气的初始半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n \n下方则显示了该效果的作用半径与持续时间。\n \n该数值越高越好。", + L"\n \n这是该爆破品释放出的芥子毒气的初始半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n \n下方则显示了该效果的作用半径与持续时间。\n \n该数值越高越好。", + L"\n \n这是该爆破品发光的初始半径。\n \n距爆炸中心较近的格子会变得非常明亮,而接近\n边缘的格子只会比平常亮一点点。\n \n下方则显示了该效果的作用半径与持续时间。\n \n该数值越高越好。", + L"\n \n这是该爆破品释放烟雾的初始半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n(如果有的话)更重要的是,烟雾中的人\n极难被发现,同时他们也会失\n去很大一部分视距。\n \n请查看最大半径和有效时间(显示在下面)。\n \n该数值越高越好。", + L"\n \n这是该爆破品释放出的火焰的初始半径。\n \n在该半径之内的敌人每回合都会受到所列出的\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该数值越高越好。", + L"\n \n这是该爆破品发出的亮光消失前的半径。\n \n离爆炸中心较近的格子会变得非常亮,而接近\n边缘的格子只会比平常稍亮。\n \n留意初始半径和有效时间。\n \n也请记住,与其它爆破品不同的是照明效果会随\n着时间流逝越来越小直到消失。\n \n该数值越高越好。", + L"\n \n这是该爆破品释放的烟雾消散前的最大半径。\n \n除非佩戴了防毒面具,否则在该半径之内的敌\n人每回合都会受到所列出的物理伤害与眩晕伤害。\n(如果有的话)更重要的是,烟雾中的人\n极难被发现,同时他们也会失\n去很大一部分视距。\n \n请同时查看初始半径和有效时间。\n \n该数值越高越好。", + L"\n \n这是该爆破品释放的火焰熄灭前的最大半径。\n \n在该半径之内的敌人每回合都会受到所列出的\n物理伤害与眩晕伤害。\n \n请同时查看初始半径和有效时间。\n \n该数值越高越好。", + L"\n \n这是爆炸效果的持续时间。\n \n爆炸效果的范围每回合都会向所有的方向增加一\n格,直到其半径达到所列出的最大值。\n \n一旦持续时间过去,爆炸效果就会完全消失。\n \n注意照明类的爆炸与众不同,会随着时间\n流逝越来越小。\n \n该数值越高越好。", + // HEADROCK HAM 5: Fragmentation + L"\n \n这是爆炸中溅射出碎片的数量。\n \n碎片和子弹类似,会击中任何距离太近的人。\n \n该数值越高越好。", + L"\n \n这是爆炸中溅射出碎片的潜在伤害。\n \n该数值越高越好。", + L"\n \n这是爆炸中溅射出碎片的平均散布范围。\n \n或近或远,这里是取平均值。\n \n该数值越高越好。", + // HEADROCK HAM 5: End Fragmentations + L"\n \n这是爆破品爆炸时发出的声音能够被佣兵和敌\n军听到的距离(格数)。\n \n听到爆炸声的敌人会察觉到你。\n \n该数值越低越好。", + L"\n \n这个数值代表该爆破品受到伤害时(如其它爆破品在\n近处爆炸)自身爆炸的几率(100以内)。\n \n因此携带高挥发性爆破品进入战斗极其危险,应\n当极力避免。\n \n数值范围:0~100,该数值越低越好。", + L"\n \n决定了炸药的修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|修|理|难|度", + L"|可|用|数|量", //L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", + L"|数|量", //L"|V|o|l|u|m|e", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \n决定了修理难度以及谁可以完全修复其损坏值。\n \n绿色 = 任何人都可以修理。\n \n红色 = 这个物品不能被修理。\n \n该数值越高越好。", //L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \n决定了这个携行具的可用空间。\n \n该数值越高越好。", //L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", + L"\n \n决定了这个携行具已被占用的空间。\n \n该数值越低越好。", //L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|曳|光|弹", + L"|反|坦|克|弹", + L"|破|甲", + L"|酸|腐|弹", + L"|破|锁|弹", + L"|防|爆", + L"|防|水", + L"|电|子|产|品", + L"|防|毒|面|具", + L"|需|要|电|池", + L"|能|够|开|锁", + L"|能|够|剪|线", + L"|能|够|撬|锁", + L"|金|属|探|测|器", + L"|远|程|引|爆|装|置", + L"|远|程|爆|破|引|信", + L"|定|时|爆|破|引|信", + L"|装|有|汽|油", + L"|工|具|箱", + L"|热|成|像|仪", + L"|X|光|射|线|仪", + L"|装|饮|用|水", + L"|装|酒|精|饮|品", + L"|急|救|包", + L"|医|药|箱", + L"|破|锁|炸|弹", + L"|饮|料", + L"|食|物", + L"|输|弹|带", //L"|A|m|m|o |B|e|l|t", + L"|机|枪|手|背|包", //L"|A|m|m|o |V|e|s|t", + L"|拆|弹|工|具", //L"|D|e|f|u|s|a|l |K|i|t", + L"|间|谍|器|材", //L"|C|o|v|e|r|t |I|t|e|m", + L"|不|会|损|坏", //L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", + L"|金|属|制|品", //L"|M|a|d|e |o|f |M|e|t|a|l", + L"|水|中|下|沉", //L"|S|i|n|k|s", + L"|双|手|操|作", //|T|w|o|-|H|a|n|d|e|d", + L"|挡|住|准|心", //L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", + L"|反|器|材|弹|药", //L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", + L"|面|部|防|护", //L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|感|染|防|护", //L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|护|盾", //L"|S|h|i|e|l|d", + L"|照|相|机", //L"|C|a|m|e|r|a", + L"|掩|埋|工|具|", //L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|空|血|包", //L"|E|m|p|t|y |B|l|o|o|d |B|a|g", + L"|血|包", //L"|B|l|o|o|d |B|a|g", 44 + L"|防|火|护|甲", //L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|管|理|能|力|增|益|器", //L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|间|谍|能|力|增|益|器", //L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|医|用|夹|板", //L"|M|e|d|i|c|a|l |S|p|l|i|n|t", + L"|阻|燃|弹|药", //L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", + L"|燃|烧|弹|药", //L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|弹|链|供|弹", //L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \n在点射或者连射时,曳光弹会产生曳光效果。\n \n由于曳光能够帮助持枪者校准,所以即使考虑\n后座力,该子弹的杀伤仍是致命的;曳光弹\n也能在黑暗中照亮目标。\n \n然而,曳光弹也会暴露射手的位置!\n \n曳光弹会抵消枪口消焰器的效果。", + L"\n \n这种子弹能够对坦克装甲造成伤害。\n \n没有穿甲属性的子弹不能\n对坦克造成任何伤害。\n \n即使拥有穿甲属性,大部分枪械对于坦克的伤害仍然\n十分有限,所以不要抱有太大的期望。", + L"\n \n这种子弹完全无视防弹护甲。\n \n无论目标是否穿着防弹衣,被该子弹击中时,都\n将受到全额伤害!", + L"\n \n当这种子弹击中目标身上的护甲时会使\n护甲快速损坏。\n \n也可能完全破坏目标的护甲。", + L"\n \n这种子弹对于破锁十分有效。\n \n当门锁或者其它容器的锁被击中时,会被严重损坏。", + L"\n \n这种防弹装甲对爆炸的防御力是其防护值的四倍。\n \n受到爆炸物伤害时,该护甲的防御数值按照\n装甲属性中列出数值的四倍计算。", + L"\n \n该物品防水。\n \n它不会因为浸没在水中而受损。没有该属性的\n物品会在持有者游泳时逐渐损坏。", + L"\n \n该物品是电子产品,含有复杂电路。\n \n电子产品在维修者没有电子技能时很难被修复。\n", + L"\n \n将该物品佩戴于面部时,使用者不受任何\n有毒气体的伤害。\n \n然而有些腐蚀性气体可以通过腐\n蚀作用穿过这个面罩。", + L"\n \n该物品需要电池。没有安装电池时使用者不\n能使用这个物品的主要功能。\n \n只要把所需电池安装于该物品的附件栏即可\n(步骤与将瞄准镜安装在步枪上一样)。", + L"\n \n该物品能够用于开锁。\n \n(用技巧)开锁不会发出声音,但是开稍微复\n杂一些的锁需要足够的机械能力。该物品提升了开锁几率。", + L"\n \n该物品能够绞断铁丝网。\n \n使用此物品,佣兵可以快速穿越用铁丝网封锁的地区,以便\n包围敌人!", + L"\n \n该物品能够用于破坏锁具。\n \n破坏锁具需要很大的力量,既会发出很大的\n噪音,也很耗费佣兵的体力。但是在没有出色\n的技巧和复杂的工具时,用力量破坏锁具也是明智\n之举。该物品提升了撬锁几率。", + L"\n \n该物品能够探测地下的金属物品。\n \n显然其主要用于在没有肉眼识别地雷的能力时探测地\n雷。但是你也可以用它发现埋在地下的宝藏。", + L"\n \n该物品能够用来引爆已经安装远程爆破引\n信的炸弹。 \n \n先放置炸弹,时机一到再用它引爆。", + L"\n \n安装该引信的爆破物设置完成后\n,可以被远程控制器引爆。\n \n远程引信是设置陷阱的不二选择,因为它只会在你需要\n它爆炸的时候被引爆,而且留给你足够的时间跑\n开!", + L"\n \n安装该引信的爆破物设置完成后\n,该引信会开始倒数计时,并在设置的时间后\n被引爆。\n \n计时引信便宜并且易于安装,但是你必须给它\n设定合适的时间以便你能够跑开!", + L"\n \n该物品承有汽油。\n \n在你需要加油时十分有用。", + L"\n \n工具箱内装有各种能用来修复其它物品的工具。\n \n安排佣兵进行修复工作时该佣兵必须持有工具\n箱。该物品提升了维修效能。", + L"\n \n将该物品佩戴于面部时,可以\n利用热成像原理,发现\n墙壁后方的敌人。", + L"\n \n这种功能强大的仪器利用X光搜索敌军。\n \n它可以在短时间内暴露一定范围中的敌人位置。\n请远离生殖器使用!", + L"\n \n该物品装有饮用水。\n \n口渴时饮用。", + L"\n \n该物品内含美酒、酒精饮料、洋酒。\n嘿嘿,你叫它什么都行。\n \n适量饮用,不要酒后驾驶,小心肝硬化!", + L"\n \n这一战场的基础急救包提供了基本的医疗用品。\n \n可以被用来包扎受伤的角色以止血。\n \n如需要回复生命,使用名副其实的医药箱,并辅以大量的休息。", + L"\n \n这是名副其实的医药箱,可以用于外科手术或其它复杂的治疗。\n \n安排佣兵进行医疗工作时,该佣兵必须持有医\n药箱。", + L"\n \n该物品能够用于爆破锁具。\n \n使用它需要爆破技能以避免过早引爆。\n \n使用炸药是一个相对简单的破锁手段,但是会\n发出很大噪音,并且对于大部分佣兵来说过于\n危险。", + L"\n \n饮用该物品能让你止渴。", //L"\n \nThis item will still your thirst\nif you drink it.", + L"\n \n食用该物品能让你充饥。", //L"\n \nThis item will still your hunger\nif you eat it.", + L"\n \n使用该供弹带,你可以为他人的机关枪供弹。", //L"\n \nWith this ammo belt you can\nfeed someone else's MG.", + L"\n \n使用该机枪手背包中的供弹带,你可以为他人的机关枪供弹。", //L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", + L"\n \n该物品提升你的陷阱解除几率。", //L"\n \nThis item improves your trap disarm chance by ", + L"\n \n该物品及附着其上的所有物品均让怀疑者无从觉察。", //L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", + L"\n \n这个物品不会被损坏。", //L"\n \nThis item cannot be damaged.", + L"\n \n这个物品是金属制成的,它比其它物\n品更耐磨损。", //L"\n \nThis item is made of metal.\nIt takes less damage than other items.", + L"\n \n这个物品掉在水中会下沉消失。", //L"\n \nThis item sinks when put in water.", + L"\n \n这个物品需要两只手一起操作使用。", //L"\n \nThis item requires both hands to be used.", + L"\n \n这个物品会挡住准心,你无法再使\n用准心瞄准。", //L"\n \nThis item will block your iron sights\nso you cannot use them.", + L"\n \n这种弹药可以破坏发光的墙。\n或者其它不同种类的物品。", //L"\n \nThis ammo can destroy light walls\nand various other objects.", + L"\n \n如果你脸上带了这个,这就将降低\n传播给其他人的几率。", //L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", + L"\n \n如果保存在物品栏降低\n传染给其他人的几率。", //L"\n \nIf kept in your inventory, this will\nlower\nthe chance to be infected by other people.", + L"\n \n拿在手里,就可以抵挡前方的伤害。", //L"\n \nIf equipped in a hand, this will block incoming damage.", + L"\n \n你可以使用它拍照。", //L"\n \nYou can take photos with this.", + L"\n \n这个物品能让你更有效地掩埋尸体。", //L"\n \nThis item makes you more effective at burying corpses.", + L"\n \n医生可以从\n捐献者那里取血。", //L"\n \nA paramedic can extract blood\nfrom a donor with this.", + L"\n \n医生可以用血包输血\n以增加手术回复的生命值。", //L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \n可以降低%i%%的火焰伤害。", //L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \n这个工具可以\n提高%i%%的管理工作的效率。", //L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \n这个工具可以\n提高%i%%的间谍能力。", //L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \n一旦应用, 这个物品可以提高对你的手臂\n或者腿部重伤的治疗速率。", //L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", + L"\n \n这种弹药可以灭火。", //L"\n \nThis ammo can extinguish fire.", + L"\n \n这种弹药会引起燃烧(火灾)。", //L"\n \nThis ammo can cause fire.", + L"\n \n这种枪可以使用弹链供弹\n或者由LBE弹链供弹\n又或者由另一位佣兵供弹。", //L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|精|度|修|正", + L"|速|射|精|度|修|正|值", + L"|速|射|精|度|修|正|百|分|比", + L"|精|瞄|修|正|值", + L"|精|瞄|修|正|百|分|比", + L"|精|瞄|等|级|修|正", + L"|精|瞄|上|限|修|正", + L"|枪|械|使|用|修|正", + L"|弹|道|下|坠|修|正", + L"|瞄|准|误|差|修|正", + L"|杀|伤|力|修|正", + L"|近|战|杀|伤|力|修|正", + L"|射|程|修|正", + L"|瞄|准|镜|倍|率", + L"|红|点|效|果", + L"|水|平|后|坐|力|修|正", + L"|垂|直|后|坐|力|修|正", + L"|最|大|制|退|力|修|正", + L"|制|退|力|精|度|修|正", + L"|制|退|力|频|次|修|正", + L"|A|P|总|量|修|正", + L"|举|枪|A|P|修|正", + L"|单|发|A|P|修|正", + L"|点|射|A|P|修|正", + L"|连|发|A|P|修|正", + L"|上|弹|A|P|修|正", + L"|弹|夹|容|量|修|正", + L"|点|射|弹|数|修|正", + L"|消|焰", + L"|噪|音|修|正", + L"|物|品|尺|寸|修|正", + L"|可|靠|性|修|正", + L"|丛|林|迷|彩", + L"|城|市|迷|彩", + L"|沙|漠|迷|彩", + L"|雪|地|迷|彩", + L"|潜|行|修|正", + L"|听|觉|距|离|修|正", + L"|一|般|视|距|修|正", + L"|夜|晚|视|距|修|正", + L"|白|天|视|距|修|正", + L"|高|光|视|距|修|正", + L"|洞|穴|视|距|修|正", + L"|隧|道|视|野|效|应", + L"|最|大|制|退|力", + L"|制|退|力|频|次", + L"|命|中|率|修|正", + L"|精|瞄|修|正", + L"|单|发|射|击|温|度", + L"|冷|却|参|数", + L"|卡|壳|阈|值", + L"|损|坏|阈|值", + L"|单|发|射|击|温|度", + L"|冷|却|参|数", + L"|卡|壳|阈|值", + L"|损|坏|阈|值", + L"|毒|性|百|分|比", + L"|污|垢|修|正", + L"|毒|性|修|正",//L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r", + L"|食|物|点|数",//L"|F|o|o|d| |P|o|i|n|t|s" + L"|饮|用|点|数",//L"|D|r|i|n|k |P|o|i|n|t|s", + L"|剩|余|大|小",//L"|P|o|r|t|i|o|n |S|i|z|e", + L"|士|气|修|正",//L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r", + 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"|掰|击|锤|射|击", //L"|F|a|n |t|h|e |H|a|m|m|e|r", + L"|枪|管|配|置", //L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \n当安装于远程武器上时,该物品将修正武器的精\n度值。\n \n精度的提高能够使武器在精瞄时更容易命中远\n距离的目标。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n该物品按照所列数值修正射手使用远程武器打出去\n的每颗子弹的精度。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n在原本射击精度的基础上,该物品按照所列百分比修正射手使用远程武器射出\n的每颗子弹。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n该物品按照所列数值修正射手使用远程武器\n瞄准时,每次精瞄所增加的精度。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n该物品按照所列百分比修正射手使用远程武器\n瞄准时,每次精瞄所增加的精度。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n该物品修正该武器的精瞄等级。\n \n减少精瞄等级意味着每一次精瞄会增加更多的\n精度。因此,精瞄等级的减少,有助于这件武\n器在不损精度的情况下快速瞄准。\n \n该数值越低越好。", + L"\n \n在原本射击精度的基础上,该物品按照百分比修正射手使用远程武器时能\n达到的最大精度。\n \n该数值越高越好。", + L"\n \n当将该物品安装于远程武器上时,会修正武器的操\n控难度。\n \n易于操控的武器不论是否进行精瞄都更加\n准确。\n \n该修正基于武器的原始操控难度,步枪\n和重武器高而手枪和轻武器低。\n \n该数值越低越好。", + L"\n \n该物品修正超射距命中的难度。\n \n较高的修正值可以增加武器的最大射程至少几\n格。\n \n该数值越高越好。", + L"\n \n该物品修正命中移动目标的难度。\n \n较高的修正值能够增加在较远距离上命中移动目\n标的几率。\n \n该数值越高越好。", + L"\n \n该物品修正您武器的杀伤力。\n \n该数值越高越好。", + L"\n \n该物品按照所列数值修正您近战武器的伤害值。\n \n该物品只作用于近战武器,无论是利器还是\n钝器。\n \n该数值越高越好。", + L"\n \n当安装于远程武器上时,该物品可修正其\n最大有效射程。\n \n最大射程是指子弹明显坠落前可以飞行的距离。\n \n该数值越高越好。", + L"\n \n当安装于远程武器上时,该物品提供额外的瞄\n准倍率,使远距离射击相对来说更容易命中。\n \n请注意当目标距离小于最佳瞄准距离时,高倍率对于\n瞄准不利。\n \n该数值越高越好。", + L"\n \n当安装于远程武器上时,该物品在目标身上投\n影出一个红点,让其更容易被命中。\n \n红点效果只能在指定距离内使用,超过该距离\n光点就会暗淡直到最终消失。\n \n该数值越高越好。", + L"\n \n当安装于可点射或连发的远程武器上时,该\n物品按照百分比修正该武器的水平后座力。\n \n在连续射击时,降低后坐力可以帮助射手\n保持枪口指向目标。\n \n该数值越低越好。", + L"\n \n当安装于可点射或连发的远程武器上时,该\n物品按照百分比修正该武器的垂直后座力。\n \n在连续射击时,降低后坐力可以帮助射手\n保持枪口指向目标。\n \n该数值越低越好。", + L"\n \n该物品修正射手在点射或者连发时,应对制退后坐\n力的能力。\n \n高修正值能帮助射手控制后坐力较高的武器,即使\n射手自身力量较低。\n \n该数值越高越好。", + L"\n \n该物品修正射手在点射或者连发时,运用反作\n用力制退后坐力的精确度。\n \n高修正值能帮助射手维持枪口始终朝向目标,哪怕\n目标较远,也能提升精度。\n \n该数值越高越好。", + L"\n \n在射手进行点射或者连发时,该物品修正其频繁评估\n制退力大小以应对后坐力的能力。\n \n低修正值使连发的总体精度更高,此外,由于射手能\n正确制退后坐力,其长点射也更\n加准确。\n \n该数值越高越好。", + L"\n \n该物品直接修正佣兵每回合的初始AP量。\n \n该数值越高越好。", + L"\n \n当安装于远程武器上时,该物品修正举枪AP。\n \n该数值越低越好。", + L"\n \n当安装于远程武器上时,该物品修正单发AP。\n \n注意对于可以点射或连发的武器来说,该物品\n也会影响点射和连发的AP。\n \n该数值越低越好。", + L"\n \n当安装于可以进行点射的远程武器上时,该物品修正点射AP。\n \n该数值越低越好。", + L"\n \n当安装于可以进行连发的远程武器上时,该物品修正连发AP。\n \n注意,这不改变连发增加子弹时的AP消耗,只\n影响连发时AP的初始消耗。\n \n该数值越低越好。", + L"\n \n当安装于远程武器上时,该物品修正上弹AP。\n \n该数值越低越好。", + L"\n \n当安装于远程武器上时,该物品修正该武器的\n弹匣容量。\n \n该武器便能够使用相同口径的不同容量的弹匣。\n \n该数值越高越好。", + L"\n \n当安装于远程武器上时,该物品修正该武器在\n点射时发射的子弹数。\n \n如果该武器不能点射而此修正值为正,该物品\n会使武器能够点射。\n \n相反,如果该武器原本能够点射,而此修正值\n为负,该物品可能使武器失去点射能力。\n \n该数值一般越高越好。当然连发时也需要注意\n节省弹药。", + L"\n \n当安装于远程武器上时,该物品能够隐藏该武\n器的枪焰。.\n \n当射手在隐蔽的地方开枪,将不会被敌人发现\n,这在夜战中十分重要。", + L"\n \n当安装于武器上时,该物品修正使用该武器时\n发出的噪音能被敌人和佣兵发觉的距离。\n \n如果该修正值将武器的噪音数值削减至0,那\n么该武器就被完全消音了。\n \n该数值越低越好。", + L"\n \n该物品修正把它作为附件的物品的尺寸大小。\n \n物品大小在新携行系统中很重要,因为口袋只\n能装下特定大小和形状的物品。\n \n增加尺寸会使物品太大而不能放入某些口袋。\n \n反之,减少尺寸意味着该物品可以适合于更多\n的口袋,并且一个口袋可以装得更多。\n \n一般来说,该数值越低越好。", + L"\n \n当安装于武器上时,该物品修正该武器的可靠\n性数值。\n \n如果该修正值为正,该武器在使用过程中的磨\n损会更慢,反之磨损会更快。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n丛林环境中的伪装值。\n \n该伪装需靠近树木或较高的草丛才能发挥最大功效。\n \n该伪装数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n城市环境中的伪装值。\n \n该伪装需靠近沥青或混凝土材质才能发挥最大功效。\n \n该伪装数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n沙漠环境中的伪装值。\n \n该伪装需靠近沙地、沙砾地或沙漠植被才能发挥最大功\n效。\n \n该伪装数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,会增加穿戴者在\n雪地环境中的伪装值。\n \n该伪装需靠近雪地才能发挥最大功效。\n \n该伪装数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,修正使用者的潜\n行能力,使其在潜行时更难被听到。\n \n注意该物品并不修正潜行者的可视特征,而只是\n改变潜行中动静的大小。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的听觉感知范围。\n \n该值为正时可以从更远的距离听到噪音。\n \n与此同时,该值为负时会削减使用者的听力。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一修正值适用于所有情况。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一夜视修正只在光线明显不足时有效。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一白天视觉修正只在光照度为平均值或更高时有效。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一高光视觉修正只在光照度过高时有效,例如\n直视闪光弹照亮的格子或\n在正午时分。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,将按照所列\n百分比修正使用者的视觉感知范围。\n \n这一洞穴视觉修正只在昏暗且位于地下时有效。\n \n该数值越高越好。", + L"\n \n当该物品戴在身上或附在穿戴品上时,会改变视\n野范围,视野范围减少会导致可视角度变窄。\n \n该数值越低越好。", + L"\n \n这是射手在点射或者连发时,制退后坐力的能力。\n \n该数值越高越好。", + L"\n \n这是射手在点射或者连发时,频繁评估\n制退力大小以应对后坐力的能力。\n \n较高的频率使连发的总体精度更高,此外,由于射手能\n正确制退后坐力,其长点射也更\n加准确。\n \n该数值越低越好。", + L"\n \n当安装于远程武器上时,该物品修正武器的命\n中率。\n \n命中率的提高使该武器在精瞄时更容易命中\n目标。\n \n该数值越高越好。", + L"\n \n当安装于远程武器上时,该物品修正武器的精\n瞄加成。\n \n精瞄加成的提高使该武器在精瞄时更容易命\n中远距离的目标。\n \n该数值越高越好。", + L"\n \n单发射击所造成的温度。\n所使用的子弹类型对本值有影响。", + L"\n \n每回合自动冷却所降低的温度值。", + L"\n \n当武器温度超过卡壳阈值时,卡壳\n将更容易发生。", + L"\n \n当武器温度超过损坏阈值时,武器\n将更容易损坏。", + L"\n \n武器的单发射击温度增加了(百分比)。\n \n该数值越低越好。", + L"\n \n武器的冷却系数数增加了(百分比)。\n \n该数值越高越好。", + L"\n \n武器的卡壳阈值增加了(百分比)。\n \n该数值越高越好。", + L"\n \n武器的损坏阈值增加了(百分比)。\n \n该数值越高越好。", + L"\n \n总伤害中毒性伤害所占的百分比。\n\n部分取决于敌人的装备是否有毒性抵抗或毒性吸收属性。", + L"\n \n单发射击所造成的污垢。\n所使用的子弹类型和附件种类对本值有影响。\n \n该数值越低越好。", + L"\n \n吃掉该物品会累加这些中毒值。\n \n该数值越低越好。", // L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", + L"\n \n食物热量值单位千卡路里。\n \n该数值越高越好。", // L"\n \nAmount of energy in kcal.\n \nHigher is better.", + L"\n \n还剩多少升水。\n \n该数值越高越好。", // L"\n \nAmount of water in liter.\n \nHigher is better.", + 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"", + 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 \n如果枪手用双手使用这把枪,可\n以腰间连续连射。", //L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", + L"\n \n切换射击模式,还可以\n同时切换发射多少发子弹。", //L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \n由于所装的附件,弹药或其内置特性,这件武\n器的精度得到了修正。\n \n提高精度能够使该武器在精瞄时更容易命中远\n距离的目标。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n这件武器按照所列数值修正了射手\n的精度。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n这件武器按照所列百分比修正了射手打出去的每颗\n子弹的精度。\n \n该数值越高越好。", + L"\n \n这件武器按照所列数值修正了每次精瞄所增加的精\n度。\n \n数值范围:-100~+100,该数值越高越好。", + L"\n \n根据射手本身的射击精度,这件武器\n按照所列百分比修正每次精瞄所增加的\n精度。\n \n该数值越高越好。", + L"\n \n由于其所装的附件,弹药或由于其内置特性,这件\n武器的精瞄等级得到了修正。\n \n如果精瞄等级减少了,则这件武器可以在不损\n失精度的情况下快速瞄准。\n \n反之,若精瞄等级增加,则这件武器瞄准的\n更慢,却不会额外增加精度。\n \n该数值越低越好。", + L"\n \n这件武器按照一定百分比\n修正射手能够达到的最大精度。\n(依据射手本来的精度)\n \n该数值越高越好。", + L"\n \n由于所装的附件或其固有特性,武器操\n控难度得到了修正。\n \n易于操控的武器不论是否进行精瞄都更加\n准确。\n \n该修正基于武器的原始操控难度,步枪\n和重武器高而手枪和轻武器低。\n \n该数值越低越好。", + L"\n \n由于所装的附件或其固有特性,这件武\n器超射距命中的能力得到了修正。\n \n较高的修正值可以增加该武器的最大射程至少\n几个格。\n \n该数值越高越好。", + L"\n \n由于所装的附件或其固有特性,这件武\n器命中远距移动目标的能力得到了修正。\n \n高修正值有助于在较远的距离上增加命中快速移动目\n标的几率。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的伤害值得到了修正。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的近战伤害值得到了修正。\n \n该修正值仅限于近战武器,无论是利器还是钝\n器。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的最大射程得到了修正。\n \n最大射程是指子弹明显坠落前所飞行的距离。\n \n该数值越高越好。", + L"\n \n这件武器装备了光学瞄准镜,因而其远距离射击更\n容易命中。\n \n注意在目标比最佳瞄准距离近时,高倍率对于\n瞄准是不利的。\n \n该数值越高越好。", + L"\n \n这件武器装备了瞄准指示设备(可能是激光),它\n可以在目标身上投影出一个点,使其更容易\n被命中。\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该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器修正了射手在点射或者连发时,制退后坐力\n的能力。\n \n高修正数值能帮助射手控制后坐力较强的武器\n,即使射手自身力量较低。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器修正了射手运用反作用力制退后坐力的精确\n度。\n \n如果武器缺少点射和连发功能,则此修正无效。\n \n高修正值能帮助射手维持枪口始终朝向目标,哪怕\n目标较远,也能提升精度。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器修正了射手频繁估量制退力大小的能力。\n \n如果点射和连发功能都没有,则此修正无效。\n \n高修正值能够提高子弹的总体精度,在射手能\n正确制退后坐力的前提下,远距离的连发也更\n能加准确。\n \n该数值越高越好。", + L"\n \n持有这件武器将修正佣兵每回合的初\n始AP量。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的举枪AP得到了修正。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的单发AP得到了修正。\n \n请注意对于可以点射或连发的武器来说,点射和\n连发AP也会被修正。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的点射AP得到了修正。\n \n如果武器没有点射功能,此修正自然无效。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的连发AP得到了修正。\n \n如果武器没有连发功能,此修正自然无效。\n \n注意,增加连发子弹时的AP消耗并不会改变,只\n影响连发时AP的初始消耗。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的上弹AP得到了修正。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,此武器\n的弹匣容量得到了修正。\n \n现在这件武器可以接受相同口径的更大(或更小)容量的\n弹匣。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器在点射时发射的子弹数得到了修正。\n \n如果此武器本不能点射而此修正值为正,将赋予武器\n点射能力。\n \n反之,如果此武器原本能够点射,而此修正值\n为负,则将使其失去点射能力。\n \n该数值一般越高越好。当然连发时也需要注意\n节省弹药。", + L"\n \n由于所装的附件,弹药或其固有特性,此武器\n发射时没有枪焰。\n \n当射手在隐蔽的地方开枪,将不会被敌人发现,这在夜战中十分重要。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器发出的噪音得到了修正。因而敌人和佣兵能\n发觉枪响的距离也就修正了。\n \n如果该修正值将武器的噪音数值削减至0,那\n么该武器就被完全消音了。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的尺寸大小得到了修正。\n \n物品大小在新携行系统中很重要,因为口袋只\n能装下特定大小和形状的物品。\n \n增加尺寸会使物品太大而不能放入某些口袋。\n \n反之,减少尺寸意味着该物品可以被放入更多\n的口袋中,并且一个口袋可以装更多。\n \n该数值一般越低越好。", + L"\n \n由于所装的附件,弹药或其固有特性,这件武\n器的可靠性得到了修正。\n \n如果该修正值为正,该武器在使用过程中的磨\n损会更慢,反之磨损会更快。\n \n该数值越高越好。", + L"\n \n当手持这件武器时,使用者\n在丛林环境中的伪装值改变了。\n \n该伪装需靠近树木或草丛才能发挥最大功效。\n \n该伪装数值越高越好。", + L"\n \n当手持这件武器时,使用者\n在城市环境中的伪装值改变了。\n \n该伪装需靠近沥青或水泥才能发挥最大功效。\n \n该伪装数值越高越好。", + L"\n \n当手持这件武器时,使用者\n在沙漠环境中的伪装值改变了。\n \n该伪装需靠近沙砾或沙漠植被才能发挥最大功\n效。\n \n该伪装数值越高越好。", + L"\n \n当手持这件武器时,使用者\n在雪地环境中的伪装值改变了。\n \n该伪装需靠近雪地才能发挥最大功效。\n \n该伪装数值越高越好。", + L"\n \n当手持这件武器时,将修正士兵的潜行能力,使潜行\n者更难或更容易被听到。\n \n注意该物品并不修正潜行者的可视特征,而\n只是改变潜行中动静的大小。\n \n该数值越高越好。", + L"\n \n当手持这件武器时,将按照所列\n百分比修正使用者的听觉感知范围。\n \n该值为正时可以从更远的距离听到噪音。\n \n若该值为负,则会削减使用者的听力。\n \n该数值越高越好。", + L"\n \n当完成该武器的举枪动作时,由于\n附件或武器的本身特点,使用者的\n视觉范围将依照所列比例得到修正\n \n这一一般修正适用于所有情形。\n \n该数值越高越好。", + L"\n \n当完成该武器的举枪动作时,由于\n附件或武器的本身特点,使用者的\n视觉范围将依照所列比例得到修正\n \n这一夜视修正只在光线明显不足时有效。\n \n该数值越高越好。", + L"\n \n当完成该武器的举枪动作时,由于\n附件或武器的本身特点,使用者的\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该数值越高越好。", + L"\n \n当完成该武器的举枪动作时,将\n改变使用者的视野范围,视野\n范围减少会导致可视角度变窄。\n \n该数值越高越好。", + L"\n \n这是射手在点射和连发时,制退后坐力的能力。\n \n该数值越高越好。", + L"\n \n这是射手频繁估量制退力大小以应对后坐力的能力。\n \n如果武器缺乏点射和连发功能,则此能力无\n效。\n \n低修正值能提高连发的总体精度,此外,由于射手能\n正确制退后坐力,其长点射也更\n加准确。\n \n该数值越低越好。", + L"\n \n由于所装的附件,弹药或其内置特性,这件武\n器的命中率得到了修正。\n \n命中率的提高使该武器在精瞄时\n更容易命中目标。\n \n该数值越高越好。", + L"\n \n由于所装的附件,弹药或其内置特性,这件武\n器的精瞄加成得到了修正。\n \n精瞄加成的提高能够使该武器在精瞄时更容易命\n中远距离的目标。\n \n该数值越高越好。", + L"\n \n单发射击所造成的温度。\n所使用的子弹类型对本值有影响。", + L"\n \n每回合自动冷却所降低的温度值。", + L"\n \n当武器温度超过卡壳阈值时,卡壳\n将更容易发生。", + L"\n \n当武器温度超过损坏阈值时,武器\n将更容易损坏。", + L"\n \n这个武器的后座力大小因为所使用的弹药,附\n件,或内部构造而获得该比例大小的修正。如\n果没有点射或自动模式,这个值无效。\n后座力越小,枪口在瞄准目标扫射时越稳定。\n该值越低越好。",//L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"单发", + L"AP", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"已完成 所有弹药的分类并装箱 在区域%c%d。", + L"已完成 所有物品上的附件移除 在区域%c%d。", + L"已完成 所有武器里的子弹退出 在区域%c%d。", + L"已完成 所有物品的合并和堆叠 在区域%c%d。", + // Bob: new strings for emptying LBE items + L"已清空分区%c%d携行具里面的物品。", //L"Finished emptying LBE items in sector %c%d.", + L"从携行具%s清空了%i个物品。", //L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"%s内没有可清空的物品!", //L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s现在已经清空了。", //L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"无法清空%s!", //L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s内的物品找不到!", //L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"全部显示", + L"枪械", + L"弹药", + L"炸药", + L"格斗武器", + L"护甲", + L"携行器", + L"工具", + L"杂物", + L"全部隐藏", +}; + +// MercCompare (MeLoDy) + +STR16 gzMercCompare[] = +{ + L"???", + L"基本态度",//L"Base opinion:", + + L"不喜欢 %s %s",//L"Dislikes %s %s", + L"喜欢 %s %s",//L"Likes %s %s", + + L"强烈讨厌 %s",//L"Strongly hates %s", + L"讨厌 %s",// L"Hates %s", // 5 + + L"强烈的种族主义 %s",// L"Deep racism against %s", + L"种族主义 %s",//L"Racism against %s", + + L"高度在乎外表",//L"Cares deeply about looks", + L"在乎外表",//L"Cares about looks", + + L"高度性别歧视",//L"Very sexist", // 10 + L"性别歧视",//L"Sexist", + + L"不喜欢其他背景",//L"Dislikes other background", + L"不喜欢其他背景",//L"Dislikes other backgrounds", + + L"过去受过委屈",// L"Past grievances", + L"____", // 15 + L"/", + L"* 态度总是在 [%d;%d]",//L"* Opinion is always in [%d; %d]", +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = +{ + L"当前温度为: ", + L"很低", + L"低", + L"中等", + L"高", + L"很高", + L"危险", + L"很危险", + L"致命", + L"未知", + L"." +}; + +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"这食物 ",// Food is + L"非常新鲜啊",// fresh + L"看着还行吧",// good + L"挺一般的哎",// ok + L"有点难闻了",// stale + L"都变味了啊",// shabby + L"快要腐烂了",// rotting + L"!", //L".", +}; + +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"列兵 ", //L"Pvt. ", //ExpLevel 1 + L"下士 ", //L"Pfc. ", //ExpLevel 2 + L"中士 ", //L"Cpl. " //ExpLevel 3 + L"上士 ", //L"Sgt. ", //ExpLevel 4 + L"少尉 ", //L"Lt. ", //ExpLevel 5 + L"中尉 ", //L"Cpt. ", //ExpLevel 6 + L"上尉 ", //L"Maj. ", //ExpLevel 7 + L"少校 ", //L"Lt.Col. ", //ExpLevel 8 + L"上校 ", //L"Col. ", //ExpLevel 9 + L"将军 ", //L"Gen. ", //ExpLevel 10 +}; + + +STR16 gzNewLaptopMessages[]= +{ + L"敬请垂询我们的最新特惠信息!", //L"Ask about our special offer!", + L"暂时没货", //L"Temporarily Unavailable", + L"这份预览版资料片仅提供最初6个区域的地图。最终版将提供完整支持,请阅读帮助文档获取更多信息。", //L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"目标的距离: %d格, 亮度: %d/%d", + L"将发报机装到笔记本电脑上。", + L"你无法支付或雇佣%s的费用。", + L"在限定时间内,以上的费用包括了整个行动和下列装备的花费。", + L"现在就雇请%s吧。您可以享受我们提供的空前的“一次付费,全部服务”的优惠价格。在这个难以置信的出价里,佣兵的随身装备是免费的哦。", + L"费用", + L"在本分区发现有人……", + //L"枪的射程: %d格,命中率: %d%", + L"显示覆盖物", + L"视距", + L"新雇请的佣兵无法到达那里。", + L"由于你的笔记本电脑没有发报机,你无法雇请新的队员。也许你得读取存档或者重新开始游戏!", + L"%s听到了Jerry的身体下面传来金属的破碎的声音。听起来令人不安,似乎你的笔记本电脑的天线被压断了。", + L"看完副指挥官Morris留下的备忘录后,%s觉得有机会了。备忘录里有向Arulco各个城镇发射导弹的基地的坐标。它还给出了这个罪恶计划的发源地的坐标 —— 导弹工厂。", + L"看到了控制面板后,%s发现它正在倒计时,因此导弹会把这个工厂炸毁。%s得找出个脱逃的路线。使用电梯看起来是最快的办法...", + L"现在您在铁人模式进行游戏,周围有敌人的时候不能存档。", + L"(不能在战斗时存盘)", + L"当前的战役名称超过了30个字符。", + L"无法找到当前的战役。", // @@@ new text + L"战役: 默认 ( %S )", // @@@ new text + L"战役: %S", // @@@ new text + L"你选择了%S战役。该战役是原版UB战役的玩家自定义游戏版本。你确认你要在%S战役下进行游戏吗?", + L"如果你要使用编辑器的话,请选择一个战役,不要用默认战役。", + // anv: extra iron man modes + L"这是假铁人模式在这模式下你不能在回合制模式下存档。", //L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", + L"这是真铁人模式在这模式下你只能在每天的%02d:00下存档。", //L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", +}; + +// The_bob : pocket popup text defs +STR16 gszPocketPopupText[]= +{ + L"榴弹发射器", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"火箭发射器", // POCKET_POPUP_ROCKET_LAUNCHERS + L"格斗&投掷武器", // POCKET_POPUP_MEELE_AND_THROWN + L"- 没有合适的弹药 -", //POCKET_POPUP_NO_AMMO + L"- 区域存货没有武器 -", //POCKET_POPUP_NO_GUNS + L"更多...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features +STR16 szCovertTextStr[]= +{ + L"%s有迷彩油(血)的痕迹!", //L"%s has camo!", + L"%s有不合身份的背包!", //L"%s has a backpack!", + L"%s被发现携带尸体!", //L"%s is seen carrying a corpse!", + L"%s的%s很可疑!", // L"%s's %s is suspicious!", + L"%s的%s属于军用装备!", // L"%s's %s is considered military hardware!", + L"%s携带了太多的枪支!", //L"%s carries too many guns!", + L"%s的%s对于%s士兵来说太先进了!", //L"%s's %s is too advanced for an %s soldier!", + L"%s的%s有太多附件!", // L"%s's %s has too many attachments!", + L"%s有可疑的举动!", //L"%s was seen performing suspicious activities!", + L"%s看起来不像平民!", //L"%s does not look like a civilian!", + L"%s受伤流血不止被发现了!", //L"%s bleeding was discovered!", + L"%s醉醺醺的完全不像个士兵!", //L"%s is drunk and doesn't behave like a soldier!", + L"%s的伪装在近距离观察下暴露了!", //L"On closer inspection, %s's disguise does not hold!", + L"%s不应该出现在这里!", //L"%s isn't supposed to be here!", + L"%s不应该在这个时候出现在这里!", //L"%s isn't supposed to be here at this time!", + L"%s被发现在尸体旁边行踪诡秘!", //L"%s was seen near a fresh corpse!", + L"%s的装备暴露了伪装!", //L"%s equipment raises a few eyebrows!", + L"%s被发现正在攻击%s!", //L"%s is seen targetting %s!", + L"%s识破了%s的伪装!", //L"%s has seen through %s's disguise!", + L"无法找到对应的衣服信息在Items.xml中!", //L"No clothes item found in Items.xml!", + L"这在传统特性(旧)系统下无法工作!", //L"This does not work with the old trait system!", + L"行动点数(AP)不足!", //L"Not enough Aps!", + L"色板无效!", //L"Bad palette found!", + L"你得有伪装技能才能做这个!", //L"You need the covert skill to do this!", + L"未发现制服!", //L"No uniform found!", + L"%s已伪装成平民。", //L"%s is now disguised as a civilian.", + L"%s已伪装成士兵。", //L"%s is now disguised as a soldier.", + L"%s穿着件破破烂烂的制服!(按 Ctrl + . 去除伪装)", // L"%s wears a disorderly uniform!", + L"事后看来,穿着伪装去劝降不是什么好主意…", // L"In retrospect, asking for surrender in disguise wasn't the best idea...", + L"%s被发现了!", // L"%s was uncovered!", + L"%s的伪装看起来还可以…", // L"%s's disguise seems to be ok...", + L"%s的伪装要被识破了。", // L"%s's disguise will not hold.", + L"%s在偷窃的时候被发现了!", // L"%s was caught stealing!", + L"%s在试图调整%s的装备物品。", //L"%s tried to manipulate %s's inventory.", + L"敌军精英士兵不认识%s!", //L"An elite soldier did not recognize %s!", + L"敌军所知的%s不是军队里的!", //L"A officer knew %s was unfamiliar!", +}; + +STR16 szCorpseTextStr[]= +{ + L"无法找到对应的头颅信息在Items.xml中!", //L"No head item found in Items.xml!", + L"这尸体无法被斩首!", //L"Corpse cannot be decapitated!", + L"无法找到对应的肉类信息在Items.xml中!", //L"No meat item found in Items.xml!", + L"这不可能!你这个恶心、变态的家伙!", //L"Not possible, you sick, twisted individual!", + L"这尸体已无衣可脱!", //L"No clothes to take!", + L"%s无法脱掉这尸体的衣服!", //L"%s cannot take clothes off of this corpse!", + L"这尸体无法被带走!", //L"This corpse cannot be taken!", + L"没有第三只手携带尸体了!", //L"No free hand to carry corpse!", + L"无法找到对应的尸体信息在Items.xml中!", //L"No corpse item found in Items.xml!", + L"无效的尸体 ID!", //L"Invalid corpse ID!", +}; + +STR16 szFoodTextStr[]= +{ + L"%s 不想吃 %s",//L"%s does not want to eat %s", + L"%s 不想喝 %s",//L"%s does not want to drink %s", + L"%s 吃了 %s",//L"%s ate %s", + L"%s 喝了 %s",//L"%s drank %s", + L"%s的力量受损,因为吃得太饱,撑得四肢无力!",//L"%s's strength was damaged due to being overfed!", + L"%s的力量受损,因为没有吃的,饿得头晕眼花!",//L"%s's strength was damaged due to lack of nutrition!", + L"%s的生命受损,因为吃得太饱,撑得肠胃欲裂!",//L"%s's health was damaged due to being overfed!", + L"%s的生命受损,因为没有吃的,饿得精神恍惚!",//L"%s's health was damaged due to lack of nutrition!", + L"%s的力量受损,因为喝太多水,他水中毒了!",//L"%s's strength was damaged due to excessive drinking!", + L"%s的力量受损,因为没有水喝,渴疯了!",//L"%s's strength was damaged due to lack of water!", + L"%s的生命受损,因为喝太多水,他水中毒了!",//L"%s's health was damaged due to excessive drinking!", + L"%s的生命受损,因为没有水喝,渴疯了!",//L"%s's health was damaged due to lack of water!", + L"区域供水不可行,食物和生存系统已被关闭!",//L"Sectorwide canteen filling not possible, Food System is off!", +}; + +STR16 szPrisonerTextStr[]= +{ + L"%d名军官,%d名精英士兵,%d名普通士兵,%d名行政人员,%d名上将和%d名平民都被审问了。", //L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", + L"得到了$%d赎金。", //L"Gained $%d as ransom money.", + L"%d名俘虏已供出同伙位置。", //L"%d prisoners revealed enemy positions.", + L"%d名军官,%d名精英士兵,%d名普通士兵,%d名行政人员加入了我方。", //L"%d officers, %d elites, %d regulars and %d admins joined our cause.", + L"俘虏掀起大规模暴动!在%s监狱!", //L"Prisoners start a massive riot in %s!", + L"%d名俘虏被押送到%s监狱!", //L"%d prisoners were sent to %s!", + L"俘虏已被释放!", //L"Prisoners have been released!", + L"军队已占领%s监狱,俘虏已被释放!", //L"The army now occupies the prison in %s, the prisoners were freed!", + L"敌人宁死不降!", //L"The enemy refuses to surrender!", + L"敌人不肯拿你当囚犯 - 他们宁愿你死!", //L"The enemy refuses to take you as prisoners - they prefer you dead!", + L"此功能在INI设置里未开启。", // L"This behaviour is set OFF in your ini settings.", + L"%s 释放了 %s!", //L"%s has freed %s!", + L"一个高阶军官%s被发现!", //L"A high-ranking army officer in %s has been revealed!", + L"敌方领袖拒绝考虑投降!", //L"The enemy leader refuses to even consider surrender!", + L"%d名囚犯自愿加入我军。", //L"%d prisoners volunteered to join our forces.", + L"你的佣兵成功逃脱了敌人的追捕。", //L"Some of your mercs managed to escape the enemy capture!", + L"没有逃跑与投降,只有死战到底!", //L"No possible escape is seen, it's a fight to the death!", +}; + +STR16 szMTATextStr[]= +{ + L"空无一物", + L"建造掩体", //L"building a fortification", + L"拆除掩体", //L"removing a fortification", + L"开垦",//L"hacking", + L"%s必须停止%s。", //L"%s had to stop %s.", + L"所选的路障无法再该分区建造", +}; + +STR16 szInventoryArmTextStr[]= +{ + L"炸毁 (%d AP)", //L"Blow up (%d AP)", + L"炸毁", //L"Blow up", + L"装备 (%d AP)", //L"Arm (%d AP)", + L"装备", //L"Arm", + L"解除 (%d AP)", //L"Disarm (%d AP)", + L"解除", //L"Disarm", +}; + +STR16 szBackgroundText_Flags[]= +{ + L" 会消耗掉背包中的药品 \n", //L" might consume drugs in inventory\n", + L" 蔑视其他背景的角色 \n", //L" disregard for other backgrounds\n", + L" +1 角色等级在地下分区时 \n", //L" +1 level in underground sectors\n", + L" 有时候会偷窃平民的钱 \n", //L" steals money from the locals sometimes\n", + + L" +1 埋设炸弹等级 \n", //L" +1 traplevel to planted bombs\n", + L" 会导致附近的佣兵腐败 \n", //L" spreads corruption to nearby mercs\n", + L" female only", //L" female only", won't show up, text exists for compatibility reasons + L" male only", //L" male only", won't show up, text exists for compatibility reasons + + L"如果我们死了所有城镇都会受到巨大的忠诚惩罚\n", //L" huge loyality penalty in all towns if we die\n", + + L" 拒绝伤害动物\n", //L" refuses to attack animals\n", + L" 拒绝伤害在同一小队的成员\n", //L" refuses to attack members of the same group\n", +}; + +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% 行动点在极地地区 \n", //L" %s%d%% APs in polar sectors\n", + L" %s%d%% 行动点在沙漠地区 \n", //L" %s%d%% APs in desert sectors\n", + L" %s%d%% 行动点在沼泽地区 \n", //L" %s%d%% APs in swamp sectors\n", + L" %s%d%% 行动点在城镇地区 \n", //L" %s%d%% APs in urban sectors\n", + L" %s%d%% 行动点在森林地区 \n", //L" %s%d%% APs in forest sectors\n", + L" %s%d%% 行动点在平原地区 \n", //L" %s%d%% APs in plain sectors\n", + L" %s%d%% 行动点在河流地区 \n", // L" %s%d%% APs in river sectors\n", + L" %s%d%% 行动点在热带地区 \n", //L" %s%d%% APs in tropical sectors\n", + L" %s%d%% 行动点在海岸地区 \n", //L" %s%d%% APs in coastal sectors\n", + L" %s%d%% 行动点在山地地区 \n", //L" %s%d%% APs in mountainous sectors\n", + + L" %s%d%% 敏捷值 \n", //L" %s%d%% agility stat\n", + L" %s%d%% 灵巧值 \n", //L" %s%d%% dexterity stat\n", + L" %s%d%% 力量值 \n", //L" %s%d%% strength stat\n", + L" %s%d%% 领导值 \n", //L" %s%d%% leadership stat\n", + L" %s%d%% 枪法值 \n", //L" %s%d%% marksmanship stat\n", + L" %s%d%% 机械值 \n", //L" %s%d%% mechanical stat\n", + L" %s%d%% 爆破值 \n", //L" %s%d%% explosives stat\n", + L" %s%d%% 医疗值 \n", //L" %s%d%% medical stat\n", + L" %s%d%% 智慧值 \n", //L" %s%d%% wisdom stat\n", + + L" %s%d%% 行动点在房顶时 \n", //L" %s%d%% APs on rooftops\n", + L" %s%d%% 行动点在游泳时 \n", //L" %s%d%% APs needed to swim\n", + L" %s%d%% 行动点在筑垒时 \n", //L" %s%d%% APs needed for fortification actions\n", + L" %s%d%% 行动点在发射迫击炮时 \n", //L" %s%d%% APs needed for mortars\n", + L" %s%d%% 行动点在操作背包时 \n", //L" %s%d%% APs needed to access inventory\n", + L" 空降时观望其它方向\n %s%d%% 行动点在空降后 \n", //L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", + L" %s%d%% 行动点在进入战区的第一回合 \n", //L" %s%d%% APs on first turn when assaulting a sector\n", + + L" %s%d%% 步行速度 \n", //L" %s%d%% travel speed on foot\n", + L" %s%d%% 开车速度 \n", //L" %s%d%% travel speed on land vehicles\n", + L" %s%d%% 坐飞机速度 \n", //L" %s%d%% travel speed on air vehicles\n", + L" %s%d%% 坐船速度 \n", //L" %s%d%% travel speed on water vehicles\n", + + L" %s%d%% 畏惧抵制 \n", //L" %s%d%% fear resistance\n", + L" %s%d%% 压制忍耐 \n", //L" %s%d%% suppression resistance\n", + L" %s%d%% 近战抗性 \n", //L" %s%d%% physical resistance\n", + L" %s%d%% 酒精耐性 \n", //L" %s%d%% alcohol resistance\n", + L" %s%d%% 疾病抗性 \n", //L" %s%d%% disease resistance\n", + + L" %s%d%% 审问效率 \n", //L" %s%d%% interrogation effectiveness\n", + L" %s%d%% 监狱守卫强度 \n", //L" %s%d%% prison guard strength\n", + L" %s%d%% 买卖弹药武器优惠 \n", //L" %s%d%% better prices when trading guns and ammo\n", + L" %s%d%% 买卖护甲,携行具,刀具,工具箱等优惠 \n", //L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", + L" %s%d%% 队伍劝降能力 \n", //L" %s%d%% team capitulation strength if we lead negotiations\n", + L" %s%d%% 跑步速度 \n", //L" %s%d%% faster running\n", + L" %s%d%% 包扎速度 \n", //L" %s%d%% bandaging speed\n", + L" %s%d%% 精力恢复 \n", //L" %s%d%% breath regeneration\n", + L" %s%d%% 负重能力 \n", //L" %s%d%% strength to carry items\n", + L" %s%d%% 食物需求 \n", //L" %s%d%% food consumption\n", + L" %s%d%% 饮水需求 \n", //L" %s%d%% water consumption\n", + L" %s%d 睡眠需求 \n", //L" %s%d need for sleep\n", + L" %s%d%% 近战伤害 \n", //L" %s%d%% melee damage\n", + L" %s%d%% 刺刀准确度(CTH) \n", //L" %s%d%% cth with blades\n", + L" %s%d%% 迷彩效果 \n", //L" %s%d%% camo effectiveness\n", + L" %s%d%% 潜行效果 \n", //L" %s%d%% stealth\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 day\n", + L" %s%d 解除陷阱效率 \n", + L" %s%d%% 防空导弹的命中率 \n", //L" %s%d%% CTH with SAMs\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 threaten approach\n", + L" %s%d%% 招募对话效果 \n", //L" %s%d%% effectiveness to recruit approach\n", + + L" %s%d%% 暴力开门成功率 \n", //L" %s%d%% chance of success with door breaching charges\n", + L" %s%d%% 射击生物准确率(CTH) \n", //L" %s%d%% cth with firearms against creatures\n", + L" %s%d%% 医疗保证金 \n", //L" %s%d%% insurance cost\n", + L" %s%d%% 发现狙击手的成功率 \n", + L" %s%d%% 疾病诊断的效率 \n", //L" %s%d%% effectiveness at diagnosing diseases\n", + L" %s%d%% 对人员治疗疾病的效率 \n", //L" %s%d%% effectiveness at treating population against diseases\n", + L" 能够发现%d格之内的脚印 \n", //L"Can spot tracks up to %d tiles away\n", + L" %s%d%% 被伏击时的初始距离 \n", //L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% 几率回避攻击 \n", //L" %s%d%% chance to evade snake attacks\n", + + L" 对某些其他背景的厌恶 \n", //L" dislikes some other backgrounds\n", + L" 吸烟者", //L"Smoker", + L" 非吸烟者", //L"Nonsmoker", + L" %s%d%% 敌军对蹲伏在掩体后佣兵的命中率 \n", //L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% 建设速度 \n",//L" %s%d%% building speed\n", + L" 黑客技能:%s%d ",//L" hacking skill: %s%d ", + L" %s%d%% 掩埋尸体速度 \n", //L" %s%d%% burial speed\n", + L" %s%d%% 管理效率 \n", //L" %s%d%% administration effectiveness\n", + L" %s%d%% 探索效率\n", //L" %s%d%% exploration effectiveness\n", +}; + +STR16 szBackgroundTitleText[] = +{ + L"I.M.P 佣兵背景", //L"I.M.P. Background", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = +{ + L"I.M.P 佣兵偏见", //L"I.M.P. Prejudices", +}; + +STR16 szPersonalityDisplayText[]= +{ + L"你看上去", //L"You look", + L"而且长相对你而言", //L"and appearance is", + L"重要。", //L"important to you.", + L"你举止", //L"You have", + L"而且", //L"and care", + L"在乎这些。", //L"about that.", + L"你是", //L"You are", + L"并且讨厌", //L"and hate everyone", + L"。", + L"种族主义者,讨厌非 ", //L"racist against non-", + L"人。", //L"people.", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"你长得怎样?", //L"How do you look?", + L"别人的长相对你而言是否重要?", //L"How important are the looks of others to you?", + L"你行为举止如何?", //L"What are your manners?", + L"别人的行为举止对你而言是否重要?", //L"How important are the manners of other people to you?", + L"你是哪个国家的?", //L"What is your nationality?", + L"你讨厌哪个国家?", //L"What nation o you dislike?", + L"你有多讨厌那个国家?", //L"How much do you dislike that nation?", + L"你的种族主义情结如何?", //L"How racist are you?", + L"你是哪个种族?你讨厌所有非本族人。", //L"What is your race? You will be\nracist against all other races.", + L"你的性别歧视程度如何?", //L"How sexist are you against the other gender?", +}; + + +STR16 szRaceText[]= +{ + L"白种", + L"黑种", + L"亚洲", + L"爱斯基摩", + L"拉美裔", +}; + +STR16 szAppearanceText[]= +{ + L"很普通", + L"很丑", + L"是大众脸", + L"很吸引人", + L"像个孩子", +}; + +STR16 szRefinementText[]= +{ + L"正常", //L"average manners", + L"邋遢", //L"manners of a slob", + L"讲究", //L"manners of a snob", +}; + +STR16 szRefinementTextTypes[] = +{ + L"普通的人", //L"normal people", + L"懒虫", //L"slobs", + L"努力的人", //L"snobs", +}; + +STR16 szNationalityText[]= +{ + L"美国人", // 0 + L"阿拉伯人", + L"澳大利亚人", + L"英国人", + L"加拿大人", + L"古巴人", // 5 + L"丹麦人", + L"法国人", + L"俄国人", + L"Tracona人", // (UB takes place in Tracona) + L"瑞士人", // 10 + L"牙买加人", + L"波兰人", + L"中国人", + L"爱尔兰人", + L"南非人", // 15 + L"匈牙利人", + L"苏格兰人", + L"Arulco人", + L"德国人", + L"非洲人", // 20 + L"意大利人", + L"荷兰人", + L"罗马利亚人", + L"Metavira人", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"白俄罗斯人", + L"比利时人", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"巴西人", + L"保加利亚人", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"爱沙尼亚人", + L"Ethiopian", + L"Filipino", // 50 + L"芬兰人", + L"Georgian", + L"希腊人", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"印度人", + L"Indonesian", + L"伊朗人", + L"伊拉克人", // 60 + L"Islandic", + L"以色列人", + L"日本人", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"墨西哥人", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"尼日利亚人", + L"Nigerien", + L"挪威人", + L"Pakistani", // 85 + L"Panamanian", + L"葡萄牙人", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"塞尔维亚人", + L"Slovakian", + L"Slovenian", + L"Somali", + L"西班牙人", // 95 + L"Sudanese", + L"瑞典人", + L"叙利亚人", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"土耳其人", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"委内瑞拉人", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +STR16 szNationalityTextAdjective[] = +{ + L"美国人", // 0 + L"阿拉伯人", + L"澳大利亚人", + L"英国人", + L"加拿大人", + L"古巴人", // 5 + L"丹麦人", + L"法国人", + L"俄国人", + L"traconia人" // UB takes place in Tracona + L"瑞士人", // 10 + L"牙买加人", + L"波兰人", + L"中国人", + L"爱尔兰人", + L"南非人", // 15 + L"匈牙利人", + L"苏格兰人", + L"Arulco人", + L"德国人", + L"非洲人", // 20 + L"意大利人", + L"荷兰人", + L"罗马利亚人", + L"Metavira人", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"白俄罗斯人", + L"比利时人", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"巴西人", + L"保加利亚人", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"爱沙尼亚人", + L"ethiopians", + L"filipinos", // 50 + L"芬兰人", + L"georgians", + L"希腊人", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"印度人", + L"indonesians", + L"伊朗人", + L"伊拉克人", // 60 + L"islandics", + L"以色列人", + L"日本人", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"墨西哥人", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"尼日利亚人", + L"nigeriens", + L"挪威人", + L"巴基斯坦人", // 85 + L"panamanians", + L"葡萄牙人", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"塞尔维亚人", + L"slovakians", + L"slovenians", + L"somali", + L"西班牙人", // 95 + L"sudanese", + L"瑞典人", + L"叙利亚人", + L"thais", + L"togolese", // 100 + L"tunisians", + L"土耳其人", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"委内瑞拉人", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"不讨厌其它国籍的人。", // used in personnel.cpp //L"do not hate any other nationality.", + L"无国籍", // used in IMP generation //L"of no origin", +}; + +STR16 szCareLevelText[]= +{ + L"不", + L"有点", + L"非常", +}; + +STR16 szRacistText[]= +{ + L"非", + L"正常", + L"极端", +}; + +STR16 szSexistText[]= +{ + L"非性别歧视者", + L"有些性别歧视者", + L"极端性别歧视者", + L"尊重异性者", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"电池", //L"Batteries are ", + L"是满的", //L"full", + L"正常", //L"good", + L"剩余一半", //L"at half", + L"电量低", //L"low", + L"耗尽了", //L"depleted", + L"。", +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= +{ + L"佣兵", + L"新手民兵", + L"常规民兵", + L"精英民兵", + + L"市民", + + L"行政人员", + L"军队士兵", + L"精英士兵", + L"坦克", + + L"生物", + L"僵尸", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"%s 新闻议会", + L"%s 情报配送部门", + L"%s 革命运动", + L"时代国际版", + L"国际时代", + L"R.I.S(情报侦察服务)", + + L"%s 媒体资源集", + L"我们是中立情报部门。我们从%s搜集各种新闻报道。我们不会对这些资料进行评估——我们仅仅将它们发表出来供你自己评估。我们从各类资源中发布文章。", + + L"战斗总结", + L"战役报告", + L"最新新闻", + L"关于我们", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s,%s %s %s 于 %s。", + + L"反抗军", + L"女王部队", + + L"进攻了", + L"袭击了", + L"空袭了", + + L"敌人从%s攻入。", + L"%s获得了来自%s的支援。", + L"敌人从%s攻入,%s获得了来自%s的支援。", + L"北方", + L"东方", + L"南方", + L"西方", + L"和", + L"未知地区", + + L"该分区的建筑遭到了破坏。", + L"在战斗中,该地区建筑物被损坏,计有%d位平民遭到杀害,%d位负伤。", //In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded. + L"在战斗中,%s和%s呼叫了支援。", + L"在战斗中,%s呼叫了支援。", + L"目击者报道交战双方都使用了化学武器。", + L"%s使用了化学武器。", + L"在交战大规模升级过程中,双方都部署了坦克。", + L"%s部署了%d辆坦克,%d辆坦克在激烈的交火中被摧毁。", + L"据称双方都部署了狙击手。", + L"未经证实的消息称有%s名狙击手参与了交火。", + L"这一分区战略意义十分重大,它拥有%s军队的大量地对空导弹设备。空中侦察摄影给指挥中心带来严重的伤害。这将导致从此途径%s的航班无法受到保护。", + L"地面情况更加不明朗,看起来反抗军混战达到了新的高度。我们已经确认了反抗军民兵部队同国外佣兵一起组织了主动进攻。", + L"保皇党在当地的地位比之前预期的更加糟糕。报告显示出现了内部分歧,军方人员互相火并。", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"深夜", // 23 - 3 + L"黎明", // 3 - 6 + L"早晨", // 6 - 8 + L"上午", // 8 - 11 + L"正午", // 11 - 14 + L"下午", // 14 - 18 + L"傍晚", // 18 - 21 + L"晚上", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"初始资金", + L"矿场收入", + L"贸易", + L"其它来源", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"弹药", + L"炸药", + L"食物", + L"医疗器械", + L"物品维护", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"在这场实力悬殊的战役中,女王部队毫无抵抗地被完全歼灭了。", + + L"反抗军轻易地击败了女王部队,使其遭到巨大损失。", + L"反抗军毫不费力地沉重打击了女王部队,并且俘虏了一些敌人。", + + L"在这场血战中,反抗军最终战胜了对手。女王部队损失巨大。", + L"反抗军略有损失,最终击败了精英部队。未证实消息称一些士兵可能被俘虏。", + + L"在一场皮洛士式胜利中,反抗军击退了精英部队,但是自己也损失惨重。很难肯定他们在这样的连续攻势下能否坚持得住。", + + L"女王部队占尽天时地利人和。反抗军没有任何机会,如果不撤退,要么被杀死或者被俘虏。", + L"尽管反抗军在人数上占用优势,女王部队还是轻易地击退了他们。", + + L"反抗军显然对装备精良且为数众多的女王部队毫无准备,他们被轻易地击败了。", + L"虽然反抗军在人数上占有优势,但是女王部队装备精良。反抗军显然落败了。", + + L"在激烈的战斗中双方都遭到了巨大损失,不过最终,女王部队以人数上的优势决定了战役的胜利。反抗军被击溃。至于有没有幸存者,我们目前还无法核实。", + L"在激烈的交火中,女王部队的优秀训练起到了关键性作用。反抗军被迫撤退。", + + L"双方都不愿轻易认输。虽然女王部队最终扫除了当地的反抗军威胁,但是巨大的损失使得女王军队本身名存实亡。不过很显然,如果女王军队能够耗得起的话,反抗军很快就会消失得一干二净了。", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"无关的", + L"不重要的", + L"著名的", + L"值得注意的", + L"重大的", + L"有趣的", + L"重要的", + L"相当重要的", + L"十分重要的", + L"极为重要的", + L"意义重大的", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"杀死", + L"受伤", + L"俘虏", + L"射击次数", + + L"获益", + L"消费", + L"损失", + L"参与者", + + L"晋升", + L"总结", + L"细节", + L"上一个", + + L"下一个", + L"事件", + L"天", +}; + +STR16 szCampaignStatsOperationPrefix[] = +{ + L"荣耀之%s", //"Glorious %s" + L"强势之%s", //"Mighty %s" + L"威严之%s", //"Awesome %s" + L"无畏之%s", //"Intimidating %s" + + L"强力之%s", //"Powerful %s" + L"彻地之%s", //"Earth-Shattering %s" + L"诡诈之%s", //"Insidious %s" + L"疾速之%s", //"Swift %s" + + L"狂暴之%s", //"Violent %s" + L"残暴之%s", //"Brutal %s" + L"无情之%", //"Relentless %s" + L"冷酷之%s", //"Merciless %s" + + L"食人之%s", //"Cannibalistic %s" + L"华丽之%s", //"Gorgeous %s", + L"凶猛之%s", //"Rogue %s", + L"可疑之%s", //"Dubious %s", + + L"中性之%s", //"Sexually Ambigious %s" + L"燃烧之%s", //"Burning %s" + L"狂怒之%s", //"Enraged %s" + L"幻想之%s", //"Visonary %s" + + // 20 + L"阴森之%s", //L"Gruesome %s", + L"非人道之%s", //L"International-law-ignoring %s", + L"挑衅之%s", //L"Provoked %s", + L"无尽之%s", //L"Ceaseless %s", + + L"执着之%s", //L"Inflexible %s", + L"不屈之%s", //L"Unyielding %s", + L"无悔之%s", //L"Regretless %s", + L"残酷的%s", //L"Remorseless %s", + + L"易怒之%s", //L"Choleric %s", + L"意外之%s", //L"Unexpected %s", + L"民众之%s", //L"Democratic %s", + L"渴望之%s", //L"Bursting %s", + + L"多党之%s", //L"Bipartisan %s", + L"浴血之%s", //L"Bloodstained %s", + L"红装之%s", //L"Rouge-wearing %s", + L"无辜之%s", //L"Innocent %s", + + L"可恶的%s", //L"Hateful %s", + L"阴险的%s", //L"Underwear-staining %s", + L"杀戮的%s", //L"Civilian-devouring %s", + L"无畏的%s", //L"Unflinching %s", + + // 40 + L"毫不留情的%s", //L"Expect No Mercy From Our %s", + L"疯狂的%s", //L"Very Mad %s", + L"终极的%s", //L"Ultimate %s", + L"愤怒的%s", //L"Furious %s", + + L"避让%s", //L"Its best to Avoid Our %s", + L"敬畏%s", //L"Fear the %s", + L"%s万岁!", //L"All Hail the %s!", + L"保护%s", //L"Protect the %s", + + L"小心%s", //"Beware the %s" + L"碾碎%s", //"Crush the %s" + L"两面三刀的%s", //"Backstabbing %s" + L"狠毒的%s", //"Vicious %s" + + L"虐待狂的%s", //L"Sadistic %s", + L"燃烧的%s", //L"Burning %s", + L"愤怒的%s", //L"Wrathful %s", + L"无敌的%s", //L"Invincible %s", + + L"负罪的%s", //L"Guilt-ridden %s", + L"腐烂的%s", //L"Rotting %s", + L"无垢的%s", //L"Sanitized %s", + L"自我怀疑的%s", //L"Self-doubting %s", + + // 60 + L"远古的%s", //L"Ancient %s", + L"饥饿的%s", //L"Very Hungry %s", + L"乏力的%s", //L"Sleepy %s", + L"消极的%s", //L"Demotivated %s", + + L"严酷的%s", //"Cruel %s" + L"恼人的%s", //"Annoying %s" + L"发怒的%s", //"Huffy %s" + L"双性的%s", //"Bisexual %s" + + L"尖叫的%s", //L"Screaming %s", + L"丑恶的%s", //L"Hideous %s", + L"信仰的%s", //L"Praying %s", + L"阴魂不散的%s", //L"Stalking %s", + + L"冷血的%s", // L"Cold-blooded %s", + L"可怕的%s", // L"Fearsome %s", + L"大惊小怪的%s", // L"Trippin' %s", + L"该死的%s", // L"Damned %s", + + L"食素的%s", // L"Vegetarian %s", + L"古怪的%s", // L"Grotesque %s", + L"落后的%s", // L"Backward %s", + L"优越的%s", // L"Superior %s", + + // 80 + L"低劣的%s", //L"Inferior %s", + L"不好不坏的%s", //L"Okay-ish %s", + L"色欲旺盛的%s", //L"Porn-consuming %s", + L"中毒的%s", //L"Poisoned %s", + + L"自觉的%s", //L"Spontaneous %s", + L"懒惰的%s", //L"Lethargic %s", + L"靠不住的%s", //L"Tickled %s", + L"脑残的%s", //L"The %s is a dupe!", + + L"%s是瘾君子", //L"%s on Steroids", + L"%s大战铁血战士", //L"%s vs. Predator", + L"耍花招的%s", //L"A %s with a twist", + L"自娱自乐的%s", //L"Self-Pleasuring %s", + + L"半人半%s", //L"Man-%s hybrid", + L"愚蠢的%s", //L"Inane %s", // + L"昂贵的%s", //L"Overpriced %s", + L"午夜%s", //L"Midnight %s", + + L"资本家的%s", //L"Capitalist %s", + L"共产党的%s", //L"Communist %s", + L"热烈的%s", //L"Intense %s", + L"坚定的%s", //L"Steadfast %s", + + // 100 + L"嗜睡的%s",//L"Narcoleptic %s", + L"晒白的%s",// L"Bleached %s", + L"咬指甲的%s",//L"Nail-biting %s", + L"猛击%s",//L"Smite the %s", + + L"嗜血的%s",//L"Bloodthirsty %s", + L"肥胖的%s",// L"Obese %s", + L"诡计多端的%s",// L"Scheming %s", + L"驼背的%s",//L"Tree-Humping %s", + + L"便宜的%s",//L"Cheaply made %s", + L"圣洁的%s",//L"Sanctified %s", + L"被诬告的%s",//L"Falsely accused %s", + L"%s被救援",//L"%s to the rescue", + + L"螃蟹人大战%s",//L"Crab-people vs. %s", + L"%s上天了!!!",//L"%s in Space!!!", + L"%s大战哥斯拉",//L"%s vs. Godzilla", + L"野性%s",// L"Untamed %s", + + L"耐用的%s",//L"Durable %s", + L"厚颜无耻的%s",// L"Brazen %s", + L"贪婪的%s",//L"Greedy %s", + L"午夜%s",// L"Midnight %s", + + // 120 + L"困惑的%s",//L"Confused %s", + L"恼怒的%s",//L"Irritated %s", + L"可恶的%s",//L"Loathsome %s", + L"躁狂的%s",//L"Manic %s", + + L"古老的%s",//L"Ancient %s", + L"鬼鬼祟祟的%s",//L"Sneaking %s", + L"%s之末日",//L"%s of Doom", + L"%s之复仇",//L"%s's revenge", + + L"%s上演中",//L"A %s on the run", + L"来不及%s了",//L"A %s out of time", + L"带着%s",//L"One with %s", + L"%s来自地狱",//L"%s from hell", + + L"超级-%s",//L"Super-%s", + L"终极-%s",//L"Ultra-%s", + L"巨型-%s",//L"Mega-%s", + L"超级巨型-%s",// L"Giga-%s", + + L"一些%s",//L"A quantum of %s", + L"%s陛下",//L"Her Majesties' %s", + L"颤抖的%s",//L"Shivering %s", + L"可怕的%s",// L"Fearful %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"龙", //L"Dragon", + L"狮", //L"Mountain Lion", + L"蛇", //L"Copperhead Snake", + L"狗", //L"Jack Russell Terrier", + + L"敌", //L"Arch-Nemesis", + L"怪", //L"Basilisk", + L"锋", //L"Blade", + L"盾", //L"Shield", + + L"锤", //L"Hammer", + L"灵", //L"Spectre", + L"府", //L"Congress", + L"田", //L"Oilfield", + + L"男友", //L"Boyfriend", + L"女友", //L"Girlfriend", + L"丈夫", //L"Husband", + L"后妈", //L"Stepmother", + + L"蜥", //"Sand Lizard" + L"吏", //"Bankers" + L"蟒", //"Anaconda" + L"猫", //"Kitten" + + // 20 + L"国会", //"Congress" + L"议院", //"Senate" + L"牧师", //"Cleric" + L"混蛋", //"Badass" + + L"刺刀", //L"Bayonet", + L"狼獾", //L"Wolverine", + L"战士", //L"Soldier", + L"树蛙", //L"Tree Frog", + + L"黄鼠狼", //L"Weasel", + L"灌木丛", //L"Shrubbery", + L"油坑", //L"Tar pit", + L"日落", //L"Sunset", + + L"台风", //L"Hurricane", + L"山猫", //L"Ocelot", + L"老虎", //L"Tiger", + L"国防", //L"Defense Industry", + + L"雪豹", //L"Snow Leopard", + L"巨魔", //L"Megademon", + L"蜻蜓", //L"Dragonfly", + L"猎犬", //L"Rottweiler", + + // 40 + L"表哥", //L"Cousin", + L"奶奶", //L"Grandma", + L"婴儿", //L"Newborn", + L"异教徒", //L"Cultist", + + L"大清洗", //L"Disinfectant", + L"民主", //L"Democracy", + L"军阀", //L"Warlord", + L"末日杀器", //L"Doomsday Device", + + L"部长", //L"Minister", + L"小人", //L"Beaver", + L"刺客", //L"Assassin", + L"死亡之雨", //L"Rain of Burning Death", + + L"先知", //L"Prophet", + L"入侵者", //L"Interloper", + L"十字军", //L"Crusader", + L"政府", //L"Administration", + + L"超新星", //L"Supernova", + L"解放", //L"Liberty", + L"爆炸", //L"Explosion", + L"鹰隼", //L"Bird of Prey", + + // 60 + L"蝎狮", //L"Manticore", + L"寒霜巨人", //L"Frost Giant", + L"名流", //L"Celebrity", + L"有钱人", //L"Middle Class", + + L"大嗓门", //L"Loudmouth", + L"替罪羊", //L"Scape Goat", + L"军犬", //L"Warhound", + L"复仇", //L"Vengeance", + + L"要塞", //L"Fortress", + L"小丑", //L"Mime", + L"指挥家", //L"Conductor", + L"领头人", //L"Job-Creator", + + L"糊涂蛋", //L"Frenchman", + L"强力胶", //L"Superglue", + L"蝾螈", //L"Newt", + L"无能者", //L"Incompetency", + + L"荒原狼", //L"Steppenwolf", + L"铁砧", //L"Iron Anvil", + L"大领主", //L"Grand Lord", + L"统治者", //L"Supreme Ruler", + + // 80 + L"独裁者", //L"Dictator", + L"离世", //L"Old Man Death", + L"碎纸机", //L"Shredder", + L"吸尘器", //L"Vacuum Cleaner", + + L"仓鼠", //L"Hamster", + L"癞蛤蟆", //L"Hypno-Toad", + L"DJ", //L"Discjockey", + L"送葬者", //L"Undertaker", + + L"蛇发女妖", //L"Gorgon", + L"小孩", //L"Child", + L"黑帮", //L"Mob", + L"猛禽", //L"Raptor", + + L"女神", //L"Goddess", + L"性别歧视", //L"Gender Inequality", + L"二五仔", //L"Mole", + L"口活", //L"Baby Jesus", + + L"武装直升机", //L"Gunship", + L"公民", //L"Citizen", + L"情人", //L"Lover", + L"基金", //L"Mutual Fund", + + // 100 + L"制服",//L"Uniform", + L"军刀",//L"Saber", + L"雪豹",//L"Snow Leopard", + L"黑豹",//L"Panther", + + L"半人马",//L"Centaur", + L"蝎子",//L"Scorpion", + L"毒蛇",//L"Serpent", + L"黑寡妇",// L"Black Widow", + + L"狼蛛",// L"Tarantula", + L"秃鹫",//L"Vulture", + L"异教徒",//L"Heretic", + L"僵尸",//L"Zombie", + + L"劳模",//L"Role-Model", + L"恶鬼",//L"Hellhound", + L"猫鼬",//L"Mongoose", + L"护士",//L"Nurse", + + L"修女",//L"Nun", + L"太空鬼魂",//L"Space Ghost", + L"毒蛇",//L"Viper", + L"黑曼巴",//L"Mamba", + + // 120 + L"罪人",//L"Sinner", + L"圣人",//L"Saint", + L"彗星",//L"Comet", + L"流星",//L"Meteor", + + L"虫罐头",//L"Can of worms", + L"鱼油",//L"Fish oil pills", + L"母乳",//L"Breastmilk", + L"触手",//L"Tentacle", + + L"疯狂",//L"Insanity", + L"发疯",//L"Madness", + L"咳嗽",//L"Cough reflex", + L"结肠",//L"Colon", + + L"国王",//L"King", + L"女皇",//L"Queen", + L"主教",//L"Bishop", + L"农民",//L"Peasant", + + L"高塔",//L"Tower", + L"大厦",//L"Mansion", + L"战马",//L"Warhorse", + L"裁判",//L"Referee", + + // 140 +}; + +STR16 szMercCompareWebSite[] = +{ + // main page + L"佣兵之家", //L"Mercs Love or Dislike You", + L"互联网上最好的团队分析专家", //L"Your #1 teambuilding experts on the web", + + L"关于我们", //L"About us", + L"团队分析", //L"Analyse a team", + L"成对分析", //L"Pairwise comparison", + L"客户意见", //L"Personalities", + L"客户意见", //L"Customer voices", + + L"如果您的业务是为有实时性要求的项目提供创新的解决方案,也许您会经常观察到如下现象:", //L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"您的团队效率低下。", //L"Your team struggles with itself.", + L"您的员工经常内斗。", //L"Your employees waste time working against each other.", + L"您的员工离职率很高。", //L"Your workforce experiences a high fluctuation rate.", + L"您的多数员工都不喜欢这份工作。", //L"You constantly receive low marks on workplace satisfaction ratings.", + L"如果您经常观察到以上一项或多项情况,那么您的员工的工作效率并不高,您的生意也就可能会出现问题。幸好我们有易学易操作的专利系统MeLoDY,立马就能让您的单位工作效率翻番,让您的员工喜上眉梢!", //L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"客户感谢信:", //L"A few citations from our satisfied customers:", + L"我最近一次恋爱是一场灾难。我很自责...但是现在我开窍了。所有男人全都该死!MeLoDY,谢谢你启发了我!", //L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G,小说家-", //L"-Louisa G., Novelist-", + L"我和我兄弟们关系一直不好,最近变得更糟糕了。MeLoDY告诉我一切都是我们不信任父亲的错。谢谢你!我要找机会和父亲好好谈谈这个事情。", //L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C,典狱官-", //L"-Konrad C., Corrective law enforcement-", + L"我一直都独来独往,所以很难和别人组队。您让我见识到了如何组队。MeLoDY真是帮大忙了啊!", //L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W,耍蛇人-", //L"-Grant W., Snake charmer-", + L"干我们这一行的,必须得百分百信任你的所有组员,所以我们来求助砖家 - 求助MeLoDY系统", //L"In my line of work, you need to trust every member of your team 100%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L,社会主义精神病患集团-", //L"-Halle L., SPK-", + L"我是局里唯一一个发声的。由于我们的组员大都自命不凡,所以工作中遇到了很多问题。不过现在我们已经学会了互相尊重,能完美的协作了。", //L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C,美国国家航空航天局-", //L"-Michael C., NASA-", + L"我强力推荐这个网站!", //L"I fully recommend this site!", + L"-Kasper H,H&C物流公司-", //L"-Kasper H., H&C logistic Inc-", + L"我们的培训流程时间很短,所以我们得知道每个员工的个性。使用MeLoDY系统是明智的选择", //L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke,Kerberus安保公司-", //L"-Stan Duke, Kerberus Inc-", + + // analyze + L"选择您的员工", //L"Choose your employee", + L"选择您的小队", //L"Choose your squad", + + // error messages + L"目前您还没有员工在岗。士气低落往往会导致员工较高的脱岗率。", //L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s枪毙了我!", //L"%s shot me!", + L"%s背着我耍阴招", //L"%s is scheming behind my back", + L"%s干扰我的工作", //L"%s interfered in my business", + L"%s和敌人是一伙的", //L"%s is friends with my enemy", + + L"%s抢我的单子", //L"%s got a contract before I did", + L"%s命令我们夹着尾巴逃跑", //L"%s ordered a shameful retreat", + L"%s滥杀无辜", //L"%s massacred the innocent", + L"%s拖我们后腿", //L"%s slows us down", + + L"%s从不分享食物", //L"%s doesn't share food", + L"%s会让任务失败", //L"%s jeopardizes the mission", + L"%s是个瘾君子", //L"%s is a drug addict", + L"%s是个偷东西的贼", //L"%s is thieving scum", + + L"%s是个不称职的指挥官", //L"%s is an incompetent commander", + L"%s不值那么多薪水", //L"%s is overpaid", + L"%s抢走了所有好东西", //L"%s gets all the good stuff", + L"%s拿枪指着我", //L"%s mounted a gun on me", + + L"%s为我疗伤", //L"%s treated my wounds", + L"我和%s喝酒喝得挺高兴", //L"Had a good drink with %s", + L"%s挺有趣", //L"L"%s is fun to get wasted with", + L"%s喝多了会撒酒疯", //L"%s is annoying when drunk", + + L"%s喝多了会变白痴", //L"%s is an idiot when drunk", + L"%s的观点与我们相左", //L"%s opposed our view in an argument", + L"%s的观点在我们这边", //L"%s supported our position", + L"%s同意我们的论断", //L"%s agrees to our reasoning", + + L"%s是个异教徒", //L"%s's beliefs are contrary to ours", + L"%s知道如何安抚别人", //L"%s knows how to calm down people", + L"%s太迟钝", //L"%s is insensitive", + L"%s能做到人尽其才", //L"%s puts people in their places", + + L"%s过于冲动", //L"%s is way too impulsive", + L"%s是个病秧子", //L"%s is disease-ridden", + L"%s治好了我的病", //L"%s treated my diseases", + L"%s在战斗中从不退缩", //L"%s does not hold back in combat", + + L"%s就是个武术疯子", //L"%s enjoys combat a bit too much", + L"%s是个好老师", //L"%s is a good teacher", + L"%s带领我们走向胜利", //L"%s led us to victory", + L"%s救过我的命", //L"%s saved my life", + + L"%s跟我抢人头", //L"%s stole my kill", + L"%s跟我一起扛过枪", //L"%s and me fought well together", + L"%s劝降了敌军", //L"%s made the enemy surrender", + L"%s打伤了平民", //L"%s injured civilians", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"世界卫生组织", //L"World Health Organization", + L"为生活带来健康", //L"Bringing health to life", + + // links to other pages + L"关于世界卫生组织", //L"About WHO", + L"关于Arulco的传染病", //L"Disease in Arulco", + L"关于传染病", //L"About diseases", + + // text on the main page + L"世界卫生组织是联合国系统内卫生问题的指导和协调机构。", //L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"它负责对全球卫生事务提供领导,拟定卫生研究议程,制订规范和标准,制定实事求是的政策方案,向各国提供技术支持,以及监测和评估卫生趋势。", //L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"在二十一世纪,各国要通力协作,重视卫生问题,特别是全民医保和协作防御跨国传染病。", //L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"现在致命的Arulcan瘟疫正在小国Arulco肆虐。", //L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"由于国家卫生系统的混乱状态,只有军队的医护兵团在与致命瘟疫奋战。", //L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"由于Arulco限制联合国机构在当地展开行动,目前我们唯一能做的就是在地图上标出现阶段Arulco各地的疫情。但是由于与Arulco政府打交道十分困难,我们十分遗憾的通告该地图的使用者,必须缴纳每天$%d的地图使用费用。", //L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"您希望获得Arulco现阶段疫情的详细资料吗?一旦获得,这些数据会在战略地图上标出。", //L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", + L"您目前没有访问权限,不能获得世卫组织关于Arulcan瘟疫的数据。", //L"You currently do not have access to WHO data on the arulcan plague.", + L"疫情的详细资料已在您的地图上标出。", //L"You have acquired detailed maps on the status of the disease.", + L"订阅地图更新", //L"Subscribe to map updates", + L"注销地图更新", //L"Unsubscribe map updates", + + // helpful tips page + L"Arulcan瘟疫这种致命的瘟疫一般不会在Arulco这种小国爆发。其典型的爆发过程是,首批感染者在沼泽地区或者热带地区被蚊子叮到后感染,然后首批感染者会在不知不觉中传染其他邻近城市的人。", //L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"如果被感染,症状不会立刻出现,可能要在几天以后才能发现早期症状。", //"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"在战术地图上,使用鼠标移动到你的佣兵肖像上来查看你的佣兵感染已知疾病的状况。", //"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"多数疾病会随着时间流逝越发严重,必须尽早分配一个医生到你的队伍。", //"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"某些疾病可以用特定药物治愈,你可以从大药品店中找到这些药。", //"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"医生可以被指派去检查所有的同行的同伴是否染病,你可以及时在症状爆发之前发现它!", //"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"当医生治疗被感染的病患的时候他会有较高的几率感染疾病,所以此时防护服就显得很有用!", //"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"一把刀砍伤了一个被感染的人以后这把刀就被感染了,可以将该传染源带到其他地方以扩散瘟疫。", //"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus安保公司", + L"经验丰富的安保公司", //"Experience In Security", + + // links to other pages + L"Kerberus安保公司", //"What is Kerberus?", + L"团队合约", //"Team Contracts", + L"个人合约", //"Individual Contracts", + + // text on the main page + L"Kerberus安保公司是一个著名的国际私人军事承包商。成立于1983,我们在全球范围提供安保服务和武装力量培训。", //"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"我公司培训出的出色的员工为全世界超过30个政府提供安保工作,包括若干冲突区的政府。", //"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", + L"我们在全球有多个训练中心,包括印度尼西亚,哥伦比亚,卡塔尔,南非,罗马尼亚,因此我们基本可以在24小时内提供满足我们合同要求的人员。", //"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"在'个人合约'的页面下, 我们将提供有丰富安保经验的资深老兵去履行合同。", //"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"同时您可以选择雇佣一个安保团队。在'团队合约'的页面下,你可以选择你想要雇佣的人员数量和行动目的地点。由于之前发生过令人遗憾的意外,所以我们要求登陆地点必须在您的实际占领区。", //"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"我们的团队可以通过空中部署,当然,在这种情况下机场是必需的。根据目的地国家的具体情况,我们的团队也可以通过港口或边境哨所渗透进入。", //Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", + L"我们要求客户先支付一定的保证金,然后我们佣兵的每日收费会在你的账户中扣取。", //"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"你可以在这选择你想要雇佣的人员类型和数目:", //"You can select the type and number of personnel you want to hire here:", + L"初始部署", //"Initial deployment", + L"常规佣兵", //"Regular personnel", + L"资深佣兵", //"Veteran personnel", + + L"%d名可招雇,每个$%d", //"%d available, %d$ each", + L"雇佣: %d", //"Hire: %d", + L"费用: %d美金", //"Cost: %d$", + + L"选择初始登陆区域:", //"Select the initial operational area:", + L"总费用: %d美金", //"Total Cost: %d$", + L"到达时间: %02d:%02d", + L"签署合同", //"Close Contract", + + L"谢谢!我们的人员会在明天%02d:%02d登陆。", //"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus安保公司的部队已经到达 %s。", //"Kerberus reinforcements have arrived in %s.", + L"下一轮部署:%d名常规佣兵和%d名资深佣兵在%s的%02d:%02d到达,第%d天。", //"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"你并没有实际控制至少一个我们可以部署佣兵的地区!", //"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"操作背包和仓库整理", + + L"眼部切换", //L"NVG", + L"全体装弹", + L"物品集合", + L"", + + L"分类物品", + L"合并物品", + L"分离", + L"整理物品", + + L"子弹装箱", + L"子弹装盒", + L"放下背包", + L"捡起背包", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"显示掩护模式", + + L"关闭", + L"敌人", + L"佣兵", + L"", + + L"角色", //L"Roles", + L"筑防", //L"Fortification", + L"跟踪者",// L"Tracker", + L"瞄准模式",//L"CTH mode", + + L"陷阱", + L"绊线网", + L"检测器", + L"", + + L"A网", + L"B网", + L"C网", + L"D网", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"关闭掩护/陷阱显示模式", + L"显示危险区域", + L"显示佣兵视野", + L"", + + L"显示敌人称号",//L"Display enemy role symbols", + L"显示计划的防御工事",//L"Display planned fortifications", + L"显示敌军路线",//L"Display enemy tracks", + L"", + + L"显示绊线网络", + L"显示绊线网络颜色", + L"显示附近的陷阱", + L"", + + L"显示绊线网络A", + L"显示绊线网络B", + L"显示绊线网络C", + L"显示绊线网络D", +}; + + +STR16 szDynamicDialogueText[40][17] = +{ + // OPINIONEVENT_FRIENDLYFIRE + L"见鬼!$CAUSE$ 攻击我!", //"What the hell! $CAUSE$ attacked me!" + L"", + L"", + L"什么?我?那不可能,我正跟敌人打的起劲呢!", //"What? Me? No way, I'm engaging at the enemy!" + L"唉哟。", //"Oops." + L"", + L"", + L"$CAUSE$ 攻击了 $VICTIM$。你怎么看?", //"$CAUSE$ has attacked $VICTIM$. What do you do?" + L"不,那绝对是敌人开的枪!", //"Nah, that must have been enemy fire!" + L"对,我也看见了!", //"Yeah, I saw it too!" + L"少在这儿装傻!$CAUSE$。你的视野很清晰!你到底是哪边的?", //"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?" + L"我看见了,很明显是敌人开的枪!", //"I saw it, it was clearly enemy fire!" + L"在激战中,这是很有可能发生的。下回一定小心点,$CAUSE$。", //"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$." + L"现在是在打仗!人们随时都会被击中的!还是说说... 怎么开枪打的准一些吧,打敌人!", //"This is war! People get shot all the time! Speaking of... shoot more people, people!" + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"嘿!闭嘴,$CAUSE$! 该死的内奸!", //L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"如果你不是傻瓜,我就是。", //L"I would if you weren't such a wussy!", + L"你听到了吗?该死的。", //L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ 冲 $CAUSE$ 生气,就是因为 $CAUSE_GENDER$ 和你打小报告。你怎么看?", //L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"不不,$CAUSE$,说吧... $VICTIM$ 做了啥?", //L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"嘿,少管闲事,$CAUSE$!", //L"Yeah, mind your own business, $CAUSE$!", + L"这儿又不是女子学校,偷着乐吧,$CAUSE$。", //L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"对,像个爷们儿!", //L"Yeah. Man up!", + L"我不确定那是正确的方法,但是 $CAUSE_GENDER$ 做这种事情应该有原因的...", //L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"又来?把小报告藏在心里吧,我们可没这时间!", //L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ 又在欺负我!", //L"$CAUSE$ is bullying me again!", + L"", + L"", + L"你搞砸了整个任务,我受够了!", //L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"嘿,这对你个人有好处。过后你会感谢我。", //L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ 阻止了 $VICTIM$ 的不端行为,$VICTIM_GENDER$ 就报复。你怎么看?", //L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"别再为那事儿找借口了!", //L"Then stop giving reasons for that!", + L"算了吧,$CAUSE$, 以为你是谁啊,能对我们指手画脚?!", //L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"你不想那样?伙计,谁让你发号施令的?", //L"You won't let that stand? Cute. Who ever made you the boss?", + L"同意。我们片刻不能放松警惕!", //L"Agreed. We can't let our guard down for a single moment!", + L"你俩就不能把这事摆平吗?", //L"Can't you two sort this out?", + L"呶呶呶。你们这些失败了的家伙有谁丢了围嘴儿吗?可怜虫!", //L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"哼。典型的 $CAUSE$,估计 $CAUSE_GENDER$ 想找同伴出去喝酒找错了人!", //L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"我找谁做朋友和你没关系!", //L"My friends are none of your business!", + L"你俩相处的不好吗?$VICTIM$。", //L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ 不喜欢 $CAUSE$ 的朋友。你怎么看?", //L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"$CAUSE_GENDER$ 当然可以和他自己想找的人一起喝酒。", //L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"嘿,你们这群丑鬼!", //L"Yeah, you guys are ugly!", + L"你该换工作了,因为它很糟。", //L"Then you should change your business. 'Cause its bad.", + L"$VICTIM$,感觉如何?", //L"What's that to you, $VICTIM$?", + L"是啊,是啊,那个烂事儿。你确定它是现在最要紧的事儿?", //L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"没人愿意听这些废话...", //L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"是的,当然。我的合同即将到期,不过,先谈谈 $CAUSE$ 吧。", //L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"哦,是吗?我真的很有用,或许这就是为什么你没给我延期的原因。", //L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"我保证你会很快获得延期。你知道网上银行有多奇葩。", //L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ 嫉妒我们提前延期 $CAUSE$ 的合同。你说咋整?", //L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"你不是还领着报酬吗?既然你拿到了钱,管别的干嘛?", //L"You are still getting paid, no? What does it matter as long as you get the money?", + L"你的合同就快到期了,$CAUSE$ ... 真希望你能延期。", //L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"是的。全部的价值都还没发挥出来。", //L"Yeah. All that worth hasn't shown yet though.", + L"哦,戳到痛处了,是吧?$VICTIM$。", //L"Aww, that burns, doesn't it, $VICTIM$?", + L"我们的资金有限。有些人的付出值得先拿到钱,对吧?", //L"We have limited funds. Someone needs to get paid first, right?", + L"每人都会及时得到报酬,除非你们继续吵下去。我也能找到其他不讨人烦的雇佣兵。", //L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"好命令,$CAUSE$!你为什么命令撤退?", //L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"我只是把大家带出了地狱,你该感谢我救你一命。", //L"I just got us out of that hellhole, you should thank me for saving your life.", + L"他们包围了侧翼,我们没退路了!", //L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ 讨厌 $CAUSE$ 的撤退命令,你呢?", //L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"只要愿意,你可以自己回去...没人阻止你。", //L"You know you can go back if you want... nobody's stopping you.", + L"优势一直在我们这边,直到刚才。", //L"We were rockin' it until that point.", + L"哦?你一边第一个撤退,一边救了我们一命?你真高尚!", //L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"我确实救了你们,$CAUSE$。哥们儿,我再也不想回到那儿了。", //L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"最重要的,我们都还活着。", //L"We're still alive, this is what counts.", + L"更要紧的是,我们啥时候打回去,搞定这任务?", //L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"$CAUSE$,你脑子进水了吗?你刚刚杀了一个无辜的人!", //L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"他有枪,我看到了!", //L"He had a gun, I saw it!", + L"哦不!上帝啊!我做了什么?", //L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ 暴怒:$CAUSE$ 杀了个平民。你都干了些什么?", //"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"我们能安全些比我说对不起更有价值...", //"Better safe than sorry I say...", + L"喔。这可怜的家伙没希望了。该死。", //"Yeah. The poor sod never had a chance. Damn.", + L"别废话。那是个手无寸铁的平民。我们来这儿是为了保护这些人们的!", //"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"你干净利索的干掉了他,干得好!", //"And you took him down nice and clean, good job!", + L"现在是在打仗,随时都有人会死....虽然我更喜欢咱们低调点。",//"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"谁在乎?舍不得孩子套不住狼。", //"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"拜托,能让 $CAUSE$ 滚蛋吗?这个慢吞吞的家伙拖了我们的后腿。", //"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"要不是我替你背了本应你背的东西,我怎么会这么慢,$VICTIM$!", //"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"因为我背的东西太多了,太重了!", //"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ 觉得是 $CAUSE$ 拖累了队伍。你觉得呢?", //"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"我们绝不抛弃任何人,特别是 $CAUSE$!", //"We leave nobody behind, not even $CAUSE$!", + L"我们得赶快行军,敌人追上来了!", //"We have to move fast, the enemy isn't far behind!", + L"所有人都背着自己的装备啊。要是不拿着枪你可怎么打仗啊?", //"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"是,停止抱怨。要么咱们一起撑过去要么一起死了拉倒。", //"Aye, stop complaining. We go through this together or we don't do it at all.", + L"你要是那么恼火 $CAUSE$ 拖拖拉拉,$VICTIM$,不如你去帮他一把。", //"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"$VICTIM$,要是你还有闲功夫在这里抱怨个没完,你该去帮 $CAUSE_GENDER$ 一把。", //"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"该死的 $CAUSE$,$CAUSE_GENDER$ 把好吃的自个全吃了......", //"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"怪我咯,你怎么不说你自己先吃完了自己的那份儿。", //"Not my problem if you already ate all your rations.", + L"哎 $VICTIM$,我刚才吃的时候你怎么不说话啊?", //"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ 想要 $CAUSE$'的食物。你怎么看?", //"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"大伙都一样多。你用光了自己那份,那是你自个儿的事。", //"We all get the same. If you used up yours already that's your problem.", + L"要是 $CAUSE$ 能分到的话,我也要!", //"If $CAUSE$ shares, I want some too!", + L"凭啥你有那么多东西吃?我怎么闻着你有额外的口粮呢?", //"Why do you have so much food anyway? Do I smell extra rations there?.", + L"那好,回到基地人人都管够....", //"Right, everyone got enough back at the base...", + L"基地里有足够的食物,别找事,明白么?", //"There's enough food left at the base, so no need to fight, ok?", + L"我觉得那东西根本不能叫美味,不过要是你们这些鸡婆想争食儿,我没意见。", //"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"哦,活见鬼,$CAUSE$。这可不是个好时候!", //"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"说得好,我选择死亡。好建议。谢谢,$VICTIM$,你帮了我大忙,还要我说别的吗?", //"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"这是我唯一的弱点,我无能为力啊!", //"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' 的举动让 $VICTIM$ 心烦意乱。你怎么看?", //"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"这关你什么事?你没事可干了?", //"What does it even matter to you? Don't you have something to do?", + L"确实啊,$CAUSE$。这里是军事组织不是病房。", //"Really $CAUSE$. This is a military organization and not a ward.", + L"呃,我们是专业人士,你可不是,$CAUSE$。", //"Well, we are pros, an you're not, $CAUSE$.", + L"别这么势利眼, $VICTIM$。", //"Don't be such a snob, $VICTIM$.", + L"嗯。$CAUSE_GENDER$ 还好吧?", //"Uhm. Is $CAUSE_GENDER$ okay?", + L"瞎逼逼,一群疯子的典型时刻。", //"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ 嗨得飞起了!我怎么能跟一个瘾君子共事?", //"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"把你的肠子从屁眼里拉出来我才能飞,我的天啊....", //"Taking the stick out of your butt would be a starter, jeez...", + L"我看到了未来,伙计。还有...其它的东西!", //"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ 吸毒的时候被 $VICTIM$ 看见了。你怎么看?", //"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"喂,$CAUSE$ 得减减压,好吧?", //"Hey, $CAUSE$ needs to ease the stress, ok?", + L"太没职业道德了。", //"How unprofessional.", + L"这是打仗不是贵族舞会。赶紧住手,$CAUSE$!", //"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"呵呵,太对了。", //"Hehe. So true.", + L"我相信你吸毒有一个很好的理由,是吧,$CAUSE$?", //"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"战斗结束之后,你想注射什么随你的便。", //"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"见鬼...喂!$CAUSE$!你给我拿回来,你这个该死的小偷!", //"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"你喝多了吧?有病啊你!", //"Have you been drinking? What the hell is your problem?", + L"你都看见了?倒霉....要不一人一半?", //"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ 看见 $CAUSE$ 偷了件东西。你怎么看?", //"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"捉贼捉赃,如果没证据你就别瞎指责,$VICTIM$.", //"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"我们一起共事的就是这样的人了,$VICIM$? 大家都看好自己的钱包为妙。", //"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"喂你!你把那个立刻还回去!", //"HEY! You put that back right now!", + L"我什么都没看见啊。怎么突然间 $VICTIM$ 就抽风了?", //"No idea. All of a sudden $VICTIM$ is all drama.", + L"也许我们可以多分点战利品来解决这个...小问题?", //"Perhaps we could get a raise to resolve this... issue?", + L"闭嘴!这些战利品对我们所有人来说足够多了!", //"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"这简直是个灾难啊。从没有这么差劲的指挥, $CAUSE$!", //"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"我不会接受你这样的大头兵来指挥我!", //"I don't have to take that from a grunt like you!", + L"做你的白日梦,$VICTIM$。我对得起这价钱,你心里清楚!", //"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ 不相信 $VICTIM$ 的命令。你怎么看?", //"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"总得有人当头儿啊,除了 $CAUSE$ 你有更好的人选?", //"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"好啊,这样的话我们肯定是赢不了这场战争了....", //"Well, we sure aren't going to win the war at this rate...", + L"我向你保证...那并不是像打手势一样的指挥", //"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"我们有清晰的指挥层级,而你并不是发号施令的那个,$VICTIM$!", //"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"我们不会忘记他们的牺牲。正是他们的牺牲使得我们能够继续战斗下去。", //"We will not forget their sacrifice. They died so we could fight on.", + L"什么?生意就是这样。搞砸了你就玩儿完了。他们知道这里头的风险。继续干活。", //"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"$CAUSE$ 怎么能挣这么多钱?这不公平!", //"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"做你的白日梦,$VICTIM$。我对得起这价钱,你心里清楚!", //"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"你觉得我不会往心里去的,是吧?", //"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ 正在嫉妒 $VICTIM$ 的时薪。你怎么看?", //"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"别在钱上斤斤计较,你自己挣得够多的了!", //"Quit whining about the money, you get more than enough yourself!", + L"说实在的,$VICTIM$, 我觉得你应该调整下报价!", //"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"你值那个价?你的所作所为根本就是在装腔作势!", //"Worth it? All you do is pose!", + L"放松点,至少我们明白你付出了多少,$CAUSE$。", //"Relax. At least some of us appreciate your service, $CAUSE$.", + L"也许 $CAUSE_GENDER$ 刚好擅长薪资谈判?", //"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"每个人都会得到自己应得的那一份儿。你越是抱怨,得到的越少。", //"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ 把好装备自个儿都囤起来了。不公平!", //"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"跟你不一样,实际上我才懂得怎么用这些玩意儿。", //"Contrary to you, I actually know how to use them.", + L"是啊,东西在那里总得用人用它,对吧?祝你下回好运!", //"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ 眼红 $VICTIM$ 的装备。你怎么看?", //"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"你不过是在给你糟糕的枪法编个借口而已。", //"You're just making up an excuse for your poor marksmanship.", + L"是的,对我来说这分明是任人唯亲。", //"Yeah, this smells of cronyism to me.", + L"如果你的词典里'使用'是'浪费弹药'的意思,那好吧,你真特么专业啊。", //"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"我举双手赞成!", //"I'll second that!", + L"真是那样?那好,从现在起我对 $CAUSE_GENDER$ 高超的枪法拭目以待。", //"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"你就没想到过我们的补给是有限的么?我们根本连一把好枪也搞不到。", //"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"你拿我当双脚架吗?别拿我架枪,$CAUSE$!",//L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"别怂!咱这是在打仗!",//L"Don't be such a wuss. This is war!", + L"哎呀,你怎么倒在那里,我压根没看见。",//L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ 用 $VICTIM$ 的胸膛架枪。好怪异。你怎么看?",//L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"别怂!咱这是在打仗!",//L"Don't be such a wuss. This is war!", + L"哟,$CAUSE$,你是想变成一个混球呢,还是你本来就是个混球?",//L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"$CAUSE$ 你就一迟钝的混球,迟钝到死。",//L"You are and always will be an insensitive jerk, $CAUSE$.", + L"有时你确实得利用一下你周围的环境!",//L"Sometimes you just have to use your surroundings!", + L"诶...你俩在搅基吗?",//L"Ehm... what are you two DOING?", + L"卧槽,这会儿不是做那事儿的时候",//L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"谢谢你,$CAUSE$。我还以为我会流血致死。",//L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"我干完了我的活,现在你得回去干你的活了!",//L"I'm doing my job. Get back to yours!", + L"我们得互相照顾对方,换成你你也一定会帮我包扎,$VICTIM$。",//L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ 给 $VICTIM$ 做了包扎。你怎么看?",//L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"邦迪贴好了?好,开始干活!",//L"Patched together again? Good, now move!", + L"不客气。",//L"You're welcome.", + L"老天,今天咋这么点背?",//L"Jeez. Woken up on the wrong foot today?", + L"找个靠谱点的法子...",//L"Talk about a no-nonsense approach...", + L"你咋受伤的呢?子弹从哪边飞来的啊?",//L"How did you even get wounded? Where did the attack come from?", + L"你得小心点。现在,攻击来自哪边?",//L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"哦耶,$CAUSE$!你成功了!开始下一轮吧?",//L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"呸。我看你已经喝大了。",//L"Pah. I think you've had enough.", + L"好的。放马过来吧!",//L"Sure. Bring it on!", + L"", + L"", + L"喝醉了的 $VICTIM$ 和 $CAUSE$ 玩嗨了。你怎么看?",//L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"没错,你俩今天酒喝的够多了。",//L"Yeah, enough booze for you today.", + L"哈哈,开干!",//L"Hoho, party!", + L"真是扫兴!",//L"Party pooper!", + L"$CAUSE$,你一定要保持冷静的头脑。",//L"You sure like to keep a cool head, $CAUSE$.", + L"好了,女士们,派对结束了,继续前进!",//L"Alright, ladies, party's over, move on!", + L"谁让你们放松了?干活去!",//L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... 你是... 你是... 呃... 你是最棒的!",//L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"额呵呵呵。$VICTIM$, 你失态了。你..嗝,你得控制住你自己。自律,知道不?像我一样!",//L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"嗝...是啊,你也是,$VICTIM$。你也.嗝...是!",//L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"叮咛大醉的 $VICTIM$ 和 $CAUSE$ 英雄相惜了。你怎么看?",//L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"无所谓。我们得继续干活,所以 $VICTIM$,对你来说游戏已经结束了。",//L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"嘿~~~ 这事在往好的方向发展。",//L"Heeeey... this is actually kinda nice for a change.", + L"和煞笔酒鬼谈自律?你在逗我...",//L"'I know discipline', said the clueless drunk...", + L"是啊。自... 咕噜!能自律的人,就像... 呃... 咱们!",//L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"也为我干一杯!不过现在不行,咱们正打仗呢。",//L"Drink one for me too! But not now, because war.", + L"你已经在庆祝啦?这仗还没结束呢,不可能这么快结束。",//L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"可恶,$CAUSE$!你...你耍诈...你这酒根本没下去。",//L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"打住,$VICTIM$!你一喝就喝个没够!",//L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"额呵呵呵。你说的真特么的对啊。呵呵,你一直都对是吧,嗝!",//L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ 喝大发了,想把 $VICTIM$ 爆菊了。你怎么看?",//L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"放松,这只是一点小酒。",//L"Relax, it's just a bit of booze.", + L"你们小声点,行不?",//L"Hey keep it down over there, okay?", + L"$CAUSE$,你也喝醉了,振作点!",//L"You're just as drunk. Beat it, $CAUSE$!", + L"喝不下就把酒留给能喝的,好呗?",//L"Leave alcohol to the big ones, okay?", + L"等会儿,行不?",//L"Later, ok?", + L"也许我们赢了这一仗,但是还没特么的打赢战争。所以动起来,大兵!",//L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"卧槽,$CAUSE$!嗝... 我再也不跟你喝酒了,你个神经病。",//L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"$VICTIM$,闭嘴!你根本不懂怎么...啥来着?呃...你这人一点都不讲道理。哎,你这人真是没意思。",//L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"你这人真是没意...意...意?意思!你没意思。嗝!..没意思。",//L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ 喝大发了,想在 $VICTIM$ 身上开窟窿。你怎么看?",//L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"哎呀 $VICTIM$, 咋突然这紧张了呢?咋回事?",//L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"咱这派对超好玩,直到 $CAUSE$ 来扫兴。",//L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$!闭嘴!你是我们小队的耻辱。滚出去醒醒酒!",//L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"都讲人话!",//L"Word!", + L"你们俩醒醒酒,你们俩废物...",//L"Why don't you two sober up? You're pretty wasted...", + L"你们俩都给我闭嘴!你们就是我们小队的耻辱!",//L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"我就知道我不能指望你的,$CAUSE$!",//L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"指望我?这明明是你的错!",//L"Depend? It was all your fault!", + L"我戳到你的痛处了,是不是啊?",//L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ 不太喜欢 $CAUSE$ 所说的。你怎么看?",//L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"你就指望别人来帮你工作?那你这废物有啥用?",//L"So you depend on others to do your job? Then what good are you?!", + L"说真的,$VICTIM$ 应该滚蛋了!",//L"Indeed. Way to let $VICTIM$ hang!", + L"这不是校园里对小孩同情的废话,这是你的错!",//L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"哼,干嘛用这种态度?",//L"Yeah, what's with the attitude?", + L"都算了吧,你们两个!",//L"Zip it, both of you!", + L"安静,马上!",//L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"哈!看到吧?甚至连 $CAUSE$ 也赞同我。",//L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'甚至'?你为啥用这个词?",//L"'Even'? What does that mean?", + L"是的。在这件事上我100%% 赞同 $VICTIM$。",//L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ 同意 $CAUSE$ 对 $VICTIM_GENDER$ 所说的。你怎么看?",//L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"你俩说说就行了啊,不用太往心里去。",//L"Don't let it go to your head.", + L"嘿,我也赞同啊!",//L"Hey, don't forget about me!", + L"看起来,有时即便是 $CAUSE$ 说的话也掷地有声啊...",//L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"我好像闻到了这里有麻烦了??",//L"Do I smell trouble here??", + L"这些是无关紧要的!私下再讨论,不过不是现在。",//L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$!$CAUSE$!少说话,多干活,拜托了!",//L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"就是。$CAUSE$ 看到你干了!",//L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"不,我没做!",//L"No I did not!", + L"我们是不会对这保持沉默的,绝不会的,长官!",//L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ 赞同 $CAUSE$ 对其他人的意见。你怎么看?",//L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"我不这么认为...",//L"I don't think so...", + L"是的,我也赞同!",//L"Yeah, totally!", + L"啥?你说你干了?",//L"Hu? You said you did.", + L"是呀,不要歪曲事实!",//L"Yeah, don't twist what happened!", + L"谁介意?我们都有自己的工作要做。",//L"Who cares? We have a job to do.", + L"如果你们这些鸡婆坚持要继续吵下去,我们很快就会有真正的大麻烦。",//L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"我不能相信你居然在这事上不同意我,$CAUSE$。",//L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"这就是因为你是错的,这就是为什么。",//L"It's because you're wrong, that's why.", + L"我也很意外,但事实就是如此。",//L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ 不喜欢 $CAUSE$ 和其他人站在一边。你该怎么办?",//L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"呃,又怎么了...",//L"Ugh. What now...", + L"什么,我也不敢相信。",//L"Hum. Never saw that coming.", + L"嘿,别站在道德制高点上居高临下了,$CAUSE$。",//L"Oh come down from your high horse, $CAUSE$.", + L"是啊,你是错的,$VICTIM$!",//L"Yeah, you are wrong, $VICTIM$!", + L"我能不能把对讲机关了,这样我就不用听你俩瞎逼逼了?",//L"Can I shut down squad radio, so I don't have to listen to you?", + L"嗯是的,非常戏剧性的一幕,但这关我屁事?",//L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"好。。。你是对的,$CAUSE$。开心了吧?",//L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"不,我不会让你这么敷衍过去。",//L"No. I won't let this go.", + L"嗯。。。好吧!",//L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ 看起来很欣赏 $CAUSE$ 对这次冲突的解决办法。你怎么看?",//L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"虽然花了点时间,但是至少这事情过去了。",//L"You're not getting away this easy.", + L"很高兴你们不再生气了。",//L"Glad you guys are not angry anymore.", + L"噢我日。$VICTIM$ 都已经不再追究了,你还有啥意见?",//L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"不满意就要大声说出来 $CAUSE$!",//L"You tell 'em, $CAUSE$!", + L"*唉* 来握个手什么的,然后给我回去干正事儿。",//L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"好,请吧,和我们详细说说你那小伤心事儿,我们都特么的认真听呢。",//L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"不,这是原则的问题。",//L"No. This is a matter of principle.", + L"", + L"", + L"搞到好像你自己有什么原则似的。",//L"As if you had any to start with.", + L"收起你的架子...",//L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ 不太喜欢 $CAUSE$'的反驳。你怎么看?",//L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"你特么的就是来搞事的,是吗?",//L"You're just asking for trouble, right?", + L"就猜到你不会被那么容易的糊弄过去,$CAUSE$。",//L"Guess you're not getting away that easy, $CAUSE$.", + L"不要那么冒失。",//L"Don't be so flippant.", + L"这年头谁还需要原则?",//L"Who needs principles anyway?", + L"既然你俩没法互相理解,那你俩是不是该干嘛干嘛去?",//L"Now that this is out of the way, perhaps we could continue?", + L"闭嘴,你们两个!",//L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"好啦好啦,上帝。我不追究了,行不?",//L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"到此为止,别演了。",//L"Cut it, drama queen.", + L"再一再二不再三。",//L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ 和 $CAUSE$ 停止了争论。你怎么看?",//L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"不需要那么纠结它。",//L"No reason to be so stiff about it.", + L"是,你俩自己解决,好吧?",//L"Yeah, keep it down, will ya?", + L"嘿,你TM别总是什么都大惊小怪的...",//L"Pah. You're the one making all the fuss about it...", + L"是的,摆正你的态度,$VICTIM$。",//L"Yeah, drop that attitude, $VICTIM$.", + L"*唉* 这事就这样了吧?",//L"*Sigh* More of this?", + L"我为啥还要听你们这些人瞎逼逼...",//L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"你以为你是谁,$CAUSE$?操,我真的没法忍了这次!",//L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"我就是要来叫你闭嘴的!我是你的头儿,$VICTIM$!",//L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"我们中的一个要有大麻烦了,$VICTIM$。",//L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ 不太乐意听 $CAUSE$'的话。你怎么办?",//L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"啧,不要大惊小怪。",//L"Pfft. Don't make a fuss out of it.", + L"滚,你不再是我们的头儿了!",//L"Yeah, you won't boss us around anymore!", + L"你们就是菜鸡中的菜鸡!",//L"You are certainly nobodies superior!", + L"不太确定这啊,但就那样吧!",//L"Not sure about that, but yep!", + L"嘿。嘿!你们两个,停手!你们两个这是干什么?",//L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"如果这边有一个人是头儿,那就是我...我命令你们闭嘴!",//L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"额呀!$CAUSE$ 病了!离我远点,你的脸色看起来很恶心~~~!",//L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"噢,真的?退后,我要感觉要咳嗽!",//L"Oh yeah? Back off, before I cough on you!", + L"确实是啊。我...*咳咳* 感觉不太好...",//L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ 害怕被 $CAUSE$ 的病传染了。你怎么看?",//L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"不要像个小学生一样,我们需要给 $CAUSE$ 找个医生!",//L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"脸色看起来是不好,希望不是传染病!",//L"This does look unhealthy. That better not be contagious!", + L"别吵了!别在病以外给我添其它烦心的事情了!",//L"Stop it! We don't need more of whatever it is you have!", + L"是啊,你除了瞎逼逼外也没别的办法对抗病魔了吗,是吧?",//L"Yeah, there's nothing you can do against this stuff, right?", + L"重要的是把 $CAUSE$ 送到医生那里,再确保 $CAUSE_GENDER$ 不再传染其他人。",//L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"不要吵了!$CAUSE$, 把病治好要紧,其他人都该干嘛干嘛去!",//L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"谢谢, $CAUSE$。我已经感觉好多了。",//L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"你是怎么被传染上的?你是不是又忘了洗手啊?",//L"How did you get that in the first place? Did you forget to wash your hands again?", + L"没问题,我们可不能让你一边咳血一边打仗,对吧?",//L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ 治好了 $CAUSE$ 的病。你怎么看?", //"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"你怎么染上这个病的啊?", //"Where did you get that stuff from in the first place?", + L"太好了。我的病完全好了...是吧?", //"Great. Are you sure it's fully treated now?", + L"重要的是你的病现在好了...对吧?", //"The important thing is that it's gone now... It is, right?", + L"我早就警告过你们了...这个国家哪里都是病源,所以别乱摸乱碰!", //"I told you people before... this country a dirty place, so beware of what you touch.", + L"我们得小心点,我们不仅仅要对抗那些想让我们死的人。", //"We have to be careful. The army isn't the only thing that wants us dead.", + L"很好。该治的病都治好了,我们得找些敌人来治治了。", //"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"干得漂亮,$CAUSE$!", // L"Nice one, $CAUSE$!", + L"", + L"", + L"哇塞,你看到这个很兴奋吧?", //L"Whoa. Are you really getting off on that?", + L"这才叫军事行动!", // L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ 给 $CAUSE$ 的暴力美学点赞了。你怎么看?", // L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"小朋友,这可不是打游戏机。", // L"This isn't a video game, kid...", + L"那可真够恶心的,但是我喜欢!", // L"That was so wicked!", + L"没啥好道歉的,那简直太棒了!", // L"What are you apologizing for? That was awesome!", + L"$VICTIM$,你可真够狠的。", //L"You are sick, $VICTIM$.", + L"杀了他们就行了,你还非得玩些花样。", // L"Killing them is enough. No need to make a show out of it.", + L"这就是和我们对抗的下场,来,把剩下的全一锅端了。", //L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"我去,$CAUSE$,你只要杀了他们就行了,不需要人间蒸发了他们!", //L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"感觉到有什么不同吗?", //L"Is there a difference?", + L"哎呦,这玩意威力很大啊!", //L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ 被 $CAUSE$ 的暴行吓到了。你怎么看?", //L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"别告诉我你晕血。", //L"Don't tell me you've never seen blood before...", + L"那有点过激了。", //L"That was a bit excessive...", + L"这是不是说明你都没怎么用过这把枪?", //L"Does that mean you aren't even remotely familiar with your gun?", + L"往好里说,这货至少不会抱怨了", //L"On the plus side, I doubt this guy is going to complain.", + L"别浪费子弹,$CAUSE$。", //L"Don't waste ammunition, $CAUSE$.", + L"既然他们挑事,那我们就把他们扔到裹尸袋里。就这么简单。", //L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"多谢指点,$CAUSE$。我从你那里学到不少知识。", //L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"你还有很多东西要学呢,$VICTIM$。", //L"About that... you still have a lot to learn, $VICTIM$.", + L"你是个好学生!", //L"You're welcome!", + L"", + L"", + L"$CAUSE$ 不满 $VICTIM$ 的学习进度缓慢。你怎么看?", //L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"师父领进门,修行在个人。", //L"At some point you'll have to do on your own though.", + L"是的,你最好继续向 $CAUSE$ 学习。", //L"Yeah, you better stick to $CAUSE$.", + L"不,$VICTIM_GENDER$ 保持这样就挺好。", //L"Nah, $VICTIM_GENDER$ is doing fine.", + L"是的,$VICTIM_GENDER$ 还需要更多提高。", //L"Yes, $VICTIM_GENDER$ still needs training.", + L"这次训练很有成效,就这个气势,继续保持下去。", //L"This training is a good preparation, keep up the good work.", + L"想赢得最终胜利的话所有人都要继续努力,一鼓作气吧!", //L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"干得好!卢瑟们都下地狱吧!$CAUSE$ 是战术大师!", //L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"大家也都劳苦功高。", //L"I couldn't have done it without you people.", + L"嘿嘿,今天是我的幸运日。", // L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ 肯定了 $VICTIM$ 的领导能力。你怎么看?", //L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"嗯...当然这也不完全是 $CAUSE_GENDER$ 一个人的功劳...", //L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"同意。 $CAUSE$ 是优秀的团队领导者。", //L"Agreed. $CAUSE$ is a fine squadleader.", + L"一点也不夸张,你应该得到称赞。", //L"It's alright. You deserve this.", + L"你做的很好,$CAUSE$。干得漂亮!", //L"You did everything right, $CAUSE$. Good work!", + L"很好,我们靠战术扭转了装备的劣势,对吧?", //L"Yeah. We're turning into quite the outfit, aren't we?", + L"这场仗胜利了,但是要取得最终的胜利,我们还要继续打更多的胜仗。", //L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"好险。谢谢你,$CAUSE$,我欠你条命!", //L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"小事一桩。", //L"Don't mention it.", + L"换成你你也会这样做的。", //L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ 救了 $VICTIM$ 一命。你怎么看?", //L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"唉,他还是死了。", //L"Pff, that guy was dead anyway.", + L"很严重吗,$VICTIM$?还能坚持战斗吗?", //L"How bad is it, $VICTIM$? Can you still fight?", + L"没问题,你干得漂亮。", //L"Then I will. Good job!", + L"还是可以的,我刚才以为是真不行了。", //L"Yeah, I was worried there for a moment.", + L"干得好,但是我们先得把这场战斗打完,是吧?", //L"Good job, but let's focus on ending this first, okay?", + L"你们拥抱完了没,我们得先解决手头上的活儿,我的意思是解决这些向我们开枪的人。", //L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"卧槽,我先看到他的,这个人头应该是我的!", //L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"哈?你疯了吗?我们都在热火朝天的战斗,你却在数人头数?", //L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"啥?那我的靶子呢?", //L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ 对于 $CAUSE$ 抢了他的人头非常生气,后果很严重。你怎么想?", //L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"这可不是网游,弱智,没人会去注意你那该死的人头数!", //L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"真是的,我最讨厌别人杀我弹道上的敌人了。", //L"Yeah, I hate it when people don't stick to their firing lane.", + L"$CAUSE$,你只能杀你应该杀的人。", //L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"操,怎么跟打网游似的,$VICTIM_GENDER$ 是不是要指责敌人打蹲点战术了?", //L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"这种问题以后私下解决,但是现在,所有人先确保没有视线的死角。", //L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"只要所有人把自己火力范围内的敌人都杀光,所有人都会有足够的人头数了。", //L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"隆隆! 那个人解决掉了。", //L"Boom! We sure took care of that guy.", + L"", + L"", + L"好吧,虽然大部分是我的功劳,你也确实帮了点忙。", //L"Well, it was mostly me, but you did help too.", + L"没问题。接下来搞谁?", //L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ 和 $VICTIM$ 一起搞定了敌人。怎么样?", //L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"如果你能射得再准点,$CAUSE$ 就不用给他最后一击了。", //L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"几个人联手才干掉他?上帝啊,他穿的什么牌子的防弹衣?", //L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"瞧一瞧看一看了啊,$VICTIM$ 太得意忘形了啊", //L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"嘿嘿,他们一点办法都没有。", //L"Hehe, they've got no chance.", + L"嗯...我们或许需要更强大的火力才能单挑他们,不过刚才大家都干得不错。", //L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"我觉得我们应该平分战利品,不过 $CAUSE$ 可以先选他喜欢的。", //L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"思路对了。我们已经赢了,没必要屠杀他们。", //L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"我们走一步看一步吧,如果他们不放弃抵抗,也没有好果子吃。", //L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"对。或许从这些人嘴里能撬出什么敌情。", //L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"剩下的敌军对 $CAUSE$ 投降了。请指示。", //L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"没有冒犯的意思,但是如果 $CAUSE$ 你惧怕死亡,你可能并不能胜任这个工作。", //L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"很好,$CAUSE$。我们的工作一下轻松了很多。", //L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"嘿!把枪收起来吧,他们都投降了。", //L"Hey! Cut the crap. They already surrendered.", + L"对,你不应该相信他们,他们都是些六亲不认的人。", //L"Yeah, you can't trust these guys, they're totally reckless.", + L"我们应该赶紧把这些人扔进监狱里面去严加审讯,他们肯定知道女王军的下一步动向。", //L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"啧。我觉得应该把这些卢瑟们全枪毙了,这些人只会拖我们的后腿。", //L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"$CAUSE$,注意点,他们是站在我们这边的。", //L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"只是擦伤而已,没什么大不了的。", //L"That's just a scratch, they'll live.", + L"我不是故意的。", //L"Oops.", + L"", + L"", + L"$VICTIM$ 对 $CAUSE$ 误伤了平民非常生气。你怎么看?", //L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"唉,误伤是没法避免的,他们不会死的。", //L"Well, this can happen. As long as they live it's okay.", + L"在事后报告中添上这一笔可不太好看。", //L"This won't look good in the after-action report.", + L"你在干嘛啊?睁大眼睛看清楚,$CAUSE$!", //L"What are you doing? Watch it, $CAUSE$!", + L"别大惊小怪。我也经常被误伤。", //L"Don't worry. Happens to me too all the time.", + L"不要乱开枪!战斗结束以后 $VICTIM$ 和 $CAUSE$ 负责医护被误伤的人员", //L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"如果 $CAUSE$ 真的是故意的,他们早就死了,不用过于担心。", //L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"你说啥?", //L"What?!", + L"胡说!", //L"No!", + L"你说的是假话!", //L"That is false!", + L"那不是真的!", //L"That is not true!", + + L"说谎!说谎!说谎!一派胡言!", //L"Lies, lies, lies. Nothing but lies!", + L"骗子!", //L"Liar!", + L"叛徒!", //L"Traitor!", + L"你说话注意点!", //L"You watch your mouth!", + + L"不关你的事。", //L"This is none of your business.", + L"别插嘴!", //L"Who ever invited you?", + L"没人问你的意见,$INTERJECTOR$。", //L"Nobody asked for your opinion, $INTERJECTOR$.", + L"哪凉快哪呆着去。", //L"You stay away from me.", + + L"为什么你们都要和我对着干?", //L"Why are you all against me?", + L"为什么你要和我对着干,$INTERJECTOR$?", //L"Why are you against me, $INTERJECTOR$?", + L"我就知道 $VICTIM$ 和 $INTERJECTOR$ 是一根绳上的蚂蚱。", //L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"听而不闻!", //L"Not listening...!", + + L"我受够这种变态马戏表演了", //L"I hate this psycho circus.", + L"我受够这种恶心的秀了", //L"I hate this freak show.", + L"一边玩儿去!", //L"Back off!", + L"说谎!说谎!说谎...", // L"Lies, lies, lies...", + + L"不可能的!", // L"No way!", + L"那不是真的!", // L"So not true.", + L"那不可能是真的。", //L"That is so not true.", + L"眼见为实,耳听为虚。", //L"I know what I saw.", + + L"我压根儿不知道 $INTERJECTOR_GENDER$ 在讲什么。", //L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"别听 $INTERJECTOR_PRONOUN$ 瞎掰!", //L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"不是那么回事儿。", // L"Nope.", + L"你弄错了。", // L"You are mistaken.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"我知道你会支持我的,$INTERJECTOR$。", //L"I knew you'd back me, $INTERJECTOR$", + L"我知道 $INTERJECTOR$ 会支持我的。", //L"I knew $INTERJECTOR$ would back me.", + L"$INTERJECTOR$ 说得对。", // L"What $INTERJECTOR$ said.", + L"$INTERJECTOR_GENDER$ 说得对。", // L"What $INTERJECTOR_GENDER$ said.", + + L"太感谢了,$INTERJECTOR$!", //L"Thanks, $INTERJECTOR$!", + L"相信我,没错的!", //L"Once again I'm right!", + L"看见了吧,$CAUSE$?我是对的!", //L"See, $CAUSE$? I am right!", + L"$SPEAKER$ 又说对了!", //L"Once again $SPEAKER$ is right!", + + L"好。", //L"Aye.", + L"是。", //L"Yup.", + L"是的。", // L"Yep", + L"对的。", //L"Yes.", + + L"确实。", // L"Indeed.", + L"没错。", // L"True.", + L"哈!", // L"Ha!", + L"看吧?", // L"See?", + + L"一点没错!", //L"Exactly!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"说得对!", //L"That's right!", + L"确实!", //L"Indeed!", + L"非常准确。", //L"Exactly that.", + L"$CAUSE$ 每次都是对的。", //L"$CAUSE$ does that all the time.", + + L"$VICTIM$ 是对的!", //L"$VICTIM$ is right!", + L"我也想指出这个呢。", //L"I was gonna' point that out, too!", + L"$VICTIM$ 说得对。", //L"What $VICTIM$ said.", + L"我支持 $CAUSE$!", //L"That's our $CAUSE$!", + + L"对!", //L"Yeah!", + L"事情越来越有趣了...", //L"Now THIS is going to be interesting...", + L"你和他们说说,$VICTIM$!", //L"You tell'em, $VICTIM$!", + L"我同意 $VICTIM$ 在这里...", //L"Agreeing with $VICTIM$ here...", + + L"精彩啊,$CAUSE$。", //L"Classic $CAUSE$.", + L"我就没这么伶牙俐齿。", //L"I couldn't have said it better myself.", + L"事情就是这样的。", //L"That is exactly what happened.", + L"我同意!", //L"Agreed!", + + L"是。", //L"Yup.", + L"对的。", //L"True.", + L"完全正确。", //L"Bingo.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"我得打断一下...", //L"Now wait a minute...", + L"等等,那不是事实...", //L"Wait a sec, that's not what right...", + L"你说啥?当然不是。", //L"What? No.", + L"事实不是那样的。", //L"That is not what happened.", + + L"哎,别这么说 $CAUSE$!", //L"Hey, stop blaming $CAUSE$!", + L"闭嘴,$VICTIM$!", //L"Oh shut up, $VICTIM$!", + L"不不不,你弄错了。", //L"Nonono, you got that wrong.", + L"靠,能不能不要这么死板啊,$VICTIM$?", //L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"你就从来没这么干过,$VICTIM$?", //L"And I suppose you never did, $VICTIM$?", + L"嗯...不。", //L"Hmmmm... no.", + L"很好。让我们吵一架吧,反正也没其它事情可做...", //L"Great. Let's have an argument. It's not like we have other things to do...", + L"你错了!", //L"You are mistaken!", + + L"你错了!", //L"You are wrong!", + L"我和 $CAUSE$ 绝不会这么做。", //L"Me and $CAUSE$ would never do such a thing.", + L"不,不可能的。", //L"Nah, can't be.", + L"我可不这么认为。", //L"I don't think so.", + + L"怎么想起现在说这个事情?", //L"Why bring that up now?", + L"干嘛啊,$VICTIM$?有必要这样吗?", //L"Really, $VICTIM$? Is this necessary?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"什么也不说", //L"Keep silent", + L"支持 $VICTIM$", //L"Support $VICTIM$", + L"支持 $CAUSE$", //L"Support $CAUSE$", + L"呼吁理智解决问题", //L"Appeal to reason", + L"让两边都闭嘴", //L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"他", //L"he", + L"她", //L"she", + L"他", //L"him", + L"她", //L"her", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% 敏捷\n", // L" %s%d%% agility stat\n", + L" %s%d%% 灵巧\n", // L" %s%d%% dexterity stat\n", + L" %s%d%% 力量\n", // L" %s%d%% strength stat\n", + L" %s%d%% 智慧\n", // L" %s%d%% wisdom stat\n", + L" %s%d%% 有效等级\n", //L" %s%d%% effective level\n", + + L" %s%d%% APs\n", //L" %s%d%% APs\n", + L" %s%d 最大的呼吸次数\n", //L" %s%d maximum breath\n", + L" %s%d%% 负重能力\n", //L" %s%d%% strength to carry items\n", + L" %s%2.2f 生命值回复/小时\n", //L" %s%2.2f life regeneration/hour\n", + L" %s%d 睡眠所需时间\n", //L" %s%d need for sleep\n", + L" %s%d%% 水量耗费\n", //L" %s%d%% water consumption\n", + L" %s%d%% 食物耗费\n", //L" %s%d%% food consumption\n", + + L"%s被诊断出%s了!", //L"%s was diagnosed with %s!", + L"%s的%s被治愈了!", //L"%s is cured of %s!", + + L"诊断", // L"Diagnosis", + L"治疗", //L"Treatment", + L"掩埋尸体", //L"Burial", + L"取消", //L"Cancel",  + + L"\n\n%s (未诊断的) - %d / %d\n", //L"\n\n%s (undiagnosed) - %d / %d\n", + + L"高度的痛苦会导致人格分裂\n", //L"High amount of distress can cause a personality split\n", + L"在%s'库存中发现污染物品。\n", //L"Contaminated items found in %s' inventory.\n", + L"每当我们遇到这种情况的时候, 会增加一个新的伤残属性。\n", //L"Whenever we get this, a new disability is added.\n", + + L"只有一只手还能用。\n", //L"Only one hand can be used.\n", + L"只有一只手还能用。\n已使用医用夹板来加快治疗进程。\n", //L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"腿部机能严重受限。\n", //L"Leg functionality severely limited.\n", + L"腿部机能严重受限。\n已使用医用夹板来加快治疗进程。\n", //L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"潜伏", //L"Hide", + L"侦查", //L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|水: %d%%\n", //L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|食|物: %d%%\n", //L"\n\n|F|o|o|d: %d%%\n", + + L"最大士气被改变 %s%d\n", //L"max morale altered by %s%d\n", + L" %s%d 需要睡眠\n", //L" %s%d need for sleep\n", + L" %s%d%% 精力回复\n", // L" %s%d%% breath regeneration\n", + L" %s%d%% 任务效率\n", //L" %s%d%% assignment efficiency\n", + L" %s%d%% 失去能力点的几率\n", //L" %s%d%% chance to lose stats\n", +}; + +STR16 szIMPGearWebSiteText[] = +{ + // IMP Gear Entrance + L"如何选择装备?", //L"How should gear be selected?", + L"旧系统:根据技能和能力随机选择装备", //L"Old method: Random gear according to your choices", + L"新系统:自由选购装备", //L"New method: Free selection of gear", + L"旧系统", //L"Old method", + L"新系统", //L"New method", + + // IMP Gear Entrance + L"I.M.P 装备", // L"I.M.P. Equipment", + L"额外花费: %d$ (%d$ 预付款)", //L"Additional Cost: %d$ (%d$ prepaid)", +}; + +STR16 szIMPGearPocketText[] = +{ + L"选择头盔", //L"Select helmet", + L"选择背心", // L"Select vest", + L"选择裤子", //L"Select pants", + L"选择头部装备", //L"Select face gear", + L"选择头部装备", //L"Select face gear", + + L"选择主武器", //L"Select main gun", + L"选择副武器", //L"Select sidearm", + + L"选择LBE背心", //L"Select LBE vest", + L"选择左LBE枪套", //L"Select left LBE holster", + L"选择右LBE枪套", //L"Select right LBE holster", + L"选择LBE战斗包", //L"Select LBE combat pack", + L"选择LBE背包", //L"Select LBE backpack", + + L"选择发射器/步枪", //L"Select launcher / rifle", + L"选择近战武器", //L"Select melee weapon", + + L"选择附加物品", //L"Select additional items", //BIGPOCK1POS + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择医疗套件", //L"Select medkit",MEDPOCK1POS + L"选择医疗套件", //L"Select medkit", + L"选择医疗套件", //L"Select medkit", + L"选择医疗套件", //L"Select medkit", + L"选择主武器弹药", //L"Select main gun ammo",SMALLPOCK1POS + L"选择主武器弹药", //L"Select main gun ammo", + L"选择主武器弹药", //L"Select main gun ammo", + L"选择主武器弹药", //L"Select main gun ammo", + L"选择主武器弹药", //L"Select main gun ammo", + L"选择发射器/枪弹药", //L"Select launcher / rifle ammo",SMALLPOCK6POS + L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", + L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", + L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", + L"选择发射器/枪弹药", //L"Select launcher / rifle ammo", + L"选择配枪弹药", //L"Select sidearm ammo",SMALLPOCK11POS + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择配枪弹药", //L"Select sidearm ammo", + L"选择附加物品", //L"Select additional items", //SMALLPOCK19POS + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", + L"选择附加物品", //L"Select additional items", //SMALLPOCK30POS + L"左键单击选择项目/右键单击关闭窗口", //L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"无法对该地区下达命令,民兵的命令不可用。", // L"We cannot relay orders to this sector, militia command not possible.", + L"未被分配", //L"Unassigned", + L"小队编号", //L"Group No.", + L"下一站 ", //L"Next", + + L"_时间", //L"ETA", + L"第%d小队(新)", //L"Group %d (new)", + L"第%d小队", //L"Group %d", + L"_目的地", //L"Final", + + L"志愿者: %d (+%5.3f)", //L"Volunteers: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = +{ + L"敌人的直升机在%s被打下了!",//L"Enemy helicopter shot down in %s!", + L"我们。。。嗯。。目前没有控制那个基地,指挥官。。。",//L"We... uhm... currently don't control that site, commander...", + L"SAM导弹现在不需要保养。",//L"The SAM does not need maintenance at the moment.", + L"我们已经订购了维修零件,这需要时间。",//L"We've already ordered the repair, this will take time.", + + L"我们没有足够的资源来做这件事。",//L"We do not have enough resources to do that.", + L"修理SAM基地?这将花费%d美金和%d小时。",//L"Repair SAM site? This will cost %d$ and take %d hours.", + L"敌人的直升机在%s被击中了。",//L"Enemy helicopter hit in %s.", + L"%s用%s对敌军直升机开火了,地点在%s。",//L"%s fires %s at enemy helicopter in %s.", + + L"%s的SAM对位于%s的敌军直升机开火了。",//L"SAM in %s fires at enemy helicopter in %s.", +}; + +STR16 szFortificationText[] = +{ + L"没有有效的建筑被选中,因而建造计划中没有增加任何内容。",//L"No valid structure selected, nothing added to build plan.", + L"没有找到网格编号来创建物品%s ---创建的物品丢失。",//L"No grid no found to create items in %s - created items are lost.", + L"无法在%s建造建筑---人们还在路上。",//L"Structures could not be built in %s - people are in the way.", + L"无法在%s建造建筑---需要下列物品:",//L"Structures could not be built in %s - the following items are required:", + + L"没有找到合适的防御公事来进行网格设置 %d: %s",//L"No fitting fortifications found for tileset %d: %s", + L"网格设置 %d: %s",//L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"民兵",//L"Militia", + L"民兵力量总览",//L"Militia Forces Overview", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"参与行动 %s",//L"Took part in Operation %s", + L"招募日期 %d, %d:%02d 在 %s",//L"Recruited on Day %d, %d:%02d in %s", + L"加薪日期 %d, %d:%02d",//L"Promoted on Day %d, %d:%02d", + L"KIA,行动 %s",//L"KIA, Operation %s", + + L"在行动中受了轻伤 %s",//L"Lightly wounded during Operation %s", + L"在行动中受了重伤 %s",//L"Heavily wounded during Operation %s", + L"在行动中受了致命伤 %s",//L"Critically wounded during Operation %s", + L"在行动中勇敢地战斗 %s",//L"Valiantly fought in Operation %s", + + L"从Kerberus安保公司雇佣的时间:%d, %d:%02d 在 %s",//L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"反叛的时间:%d, %d:%02d 在 %s",//L"Defected to us on Day %d, %d:%02d in %s", + L"合同终止的时间:%d, %d:%02d",//L"Contract terminated on Day %d, %d:%02d", + L"在%d天投奔我们,%d:%02d在%s", //L"Defected to us on Day %d, %d:%02d in %s", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"生命",//L"HP", + L"敏捷",//L"AGI", + L"灵巧",//L"DEX", + L"力量",//L"STR", + + L"领导",//L"LDR", + L"枪法",//L"MRK", + L"机械",//L"MEC", + L"爆炸",//L"EXP", + + L"医疗",//L"MED", + L"智慧",//L"WIS", + L"\n必须有老手或者精英等级",//L"\nMust have regular or elite rank", + L"\n必须有精英的等级",//L"\nMust have elite rank", + + L"\n\n|满|足|要|求",//L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|不|满|足|要|求",//L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\n基本版本的特性",//L"\nBasic version of trait", + + L"(专家)",//L" (Expert)", +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"行动",//L"Operations", + L"你确定要从你的服务中发布%s?",//L"Are you sure you want to release %s from your service?", + L"生命率: %3.0f %% 每日薪水: %3d$ 年龄: %d年",//L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"每日薪水: %3d$ 年龄: %d年",//L"Daily Wage: %3d$ Age: %d years", + + L"歼敌数:%d 助攻数:%d",//L"Kills: %d Assists: %d", + L"状态:减少",//L"Status: Deceased", + L"状态:开火",//L"Status: Fired", + L"状态:激活",//L"Status: Active", + + L"终止合同",//L"Terminate Contract", + L"个人数据",//L"Personal Data", + L"服役记录",//L"Service Record", + L"清单",//L"Inventory", + + L"民兵名字",//L"Militia name", + L"区域名字",//L"Sector name", + L"武器",//L"Weapon", + L"生命比率: %3.1f%%%%%%%",//L"HP ratio: %3.1f%%%%%%%", + + L"%s 当前载入的区域尚未激活。",//L"%s is not active in the currently loaded sector.", + L"%s 已经被提升为熟练民兵",//L"%s has been promoted to regular militia", + L"%s 已经被提升为精英民兵",//L"%s has been promoted to elite militia", + L"状态: 逃兵", //L"Status: Deserted", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"所有状态",//L"All statuses", + L"减少",//L"Deceased", + L"激活",//L"Active", + L"开火",//L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"所有等级",//L"All ranks", + L"新手",//L"Green", + L"熟练",//L"Regular", + L"精英",//L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"所有原住民",//L"All origins", + L"反抗军",//L"Rebel", + L"PMC",//L"PMC", + L"逃兵",//L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"所有区域",//L"All sectors", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"商人处于敌意状态,不愿意进行交易。",//L"Merchant is hostile and does not want to trade.", + L"商人暂时不做生意。",//L"Merchant is in no state to do business.", + L"商人不在交战中进行交易。",//L"Merchant won't trade during combat.", + L"商人拒绝和你交易。",//L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = +{ + L"晴天",//L"normal", + L"下雨",//L"rain", + L"雷暴",//L"thunderstorm", + L"沙尘暴",//L"sandstorm", + + L"下雪",//L"snow", +}; + +STR16 szSnakeText[] = +{ + L"%s遇到蛇的袭击!",//L"%s evaded a snake attack!", + L"%s被蛇攻击了!",//L"%s was attacked by a snake!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"把%s转变成资源",//L"Converted %s into resources", + L"枪械:",//L"Guns: ", + L"护具:",//L"Armour: ", + L"杂项:",//L"Misc: ", + + L"没有足够的志愿者参加民兵!",//L"There are no volunteers left for militia!", + L"没有足够的资源来训练民兵!",//L"Not enough resources to train militia!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s开始侵入。",//L"%s starts hacking.", + L"%s进入电脑,但没找到感兴趣的内容。",//L"%s accesses the computer, but finds nothing of interest.", + L"%s的技能不够,不足以攻入电脑。",//L"%s is not skilled enough to hack the computer.", + L"%s阅读了文件,但没找到新的内容。",//L"%s reads the file, but learns nothing new.", + + L"%s离开了这个,没有意义。",//L"%s can't make sense out of this.", + L"%s不能使用水龙头。",//L"%s couldn't use the watertap.", + L"%s买了一个%s。",//L"%s has bought a %s.", + L"%s没有足够的钱。那真让人难为情。",//L"%s doesn't have enough money. That's just embarassing.", + + L"%s使用水龙头喝水。",//L"%s drank from water tap", + L"这台机器看起来无法工作。", //L"This machine doesn't seem to be working.", +}; + +STR16 szLaptopStatText[] = +{ + L"威胁效率 %d\n", //L"threaten effectiveness %d\n", + L"领导能力 %d\n", //L"leadership %d\n", + L"对话修正 %.2f\n", //L"approach modifier %.2f\n", + L"背景修正 %.2f\n", //L"background modifier %.2f\n", + + L"+50 来源于自信 (其它) \n", //L"+50 (other) for assertive\n", + L"-50 来源于恶毒 (其它) \n", //L"-50 (other) for malicious\n", + L"好人", //L"Good Guy", + L"%s不愿过度使用暴力,并且拒绝攻击非敌对目标。", //L"%s eschews excessive violence and will refuse to attack non - hostiles.", + + L"友好对话", //L"Friendly approach", + L"直接对话", //L"Direct approach", + L"威胁对话", //L"Threaten approach", + L"招募对话", //L"Recruit approach", + + L"统计倒退数据。", //L"Stats will regress.", + L"快速", //L"Fast", + L"平均", //L"Average", + L"慢速", //L"Slow", + L"生命成长", //L"Health growth", + L"力量成长", //L"Strength growth", + L"敏捷成长", //L"Agility growth", + L"灵巧成长", //L"Dexterity growth", + L"智慧成长", //L"Wisdom growth", + L"枪法成长", //L"Marksmanship growth", + L"爆破成长", //L"Explosives growth", + L"领导成长", //L"Leadership growth", + L"医疗成长", //L"Medical growth", + L"机械成长", //L"Mechanical growth", + L"等级成长", //L"Experience growth", +}; + +STR16 szGearTemplateText[] = +{ + L"输入模版名称", //L"Enter Template Name", + L"无法在战斗中进行。", //L"Not possible during combat.", + L"所选佣兵不在这个区域。", //L"Selected mercenary is not in this sector.", + L"%s不在这个区域。", //L"%s is not in that sector.", + L"%s无法装备%s。", //L"%s could not equip %s.", + L"由于会损坏物品,无法安装%s(物品%d)。", //L"We cannot attach %s (item %d) as that might damage items.", +}; + +STR16 szIntelWebsiteText[] = +{ + L"侦察情报局", //L"Recon Intelligence Services", + L"你想要知道的情报", //L"Your need to know base", + L"情报需求", //L"Information Requests", + L"情报验证", //L"Information Verification", + + L"关于我们", //L"About us", + L"你拥有情报点数:%d点。", //L"You have %d Intel.", + L"我们现有下列情报信息,可使用情报点数交换:", //L"We currently have information on the following items, available in exchange for intel as usual:", + L"目前我们没有其他情报。", //L"There is currently no other information available.", + + L"%d点 - %s", //L"%d Intel - %s", + L"我们可以提供某一区域范围的空中侦察,持续到 %02d:00。", //L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"购买情报 50点", //L"Buy data - 50 intel", + L"购买详细情报 70点", //L"Buy detailed data - 70 Intel", + + L"选择你需要的区域范围:", //L"Select map region on which you want info on:", + + L"西北", //L"North-west", + L"西北偏北", //L"North-north-west", + L"东北偏北", //L"North-north-east", + L"东北", //L"North-east", + + L"西北偏西", //L"West-north-west", + L"中西北", //L"Center-north-west", + L"中东北", //L"Center-north-east", + L"东北偏东", //L"East-north-east", + + L"西南偏西", //L"West-south-west", + L"中西南", //L"Center-south-west", + L"中东南", //L"Center-south-east", + L"东南偏东", //L"East-south-east", + + L"西南", //L"South-west", + L"西南偏南", //L"South-south-west", + L"东南偏南", //L"South-south-east", + L"东南", //L"South-east", + + // about us + L"在“情报需求”页面,你可以购买敌占区情报。", //L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"情报内容包括:敌军巡逻队和兵营,特殊人员,敌军飞行器等。", //L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"某些情报具有时效性。", //L"Some of that information may be of temporary nature.", + L"在“情报验证”页面,你可以上传你搜集到的重要情报。", //L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"我们会验证该情报(这个过程通常需要几个小时)并给您相应的报酬。", //L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"请注意,如果情报受外部条件变化(如收集情报的人员死亡了),那么您收到的情报点数将会变少。", //L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"你可以上传以下情报:", //L"You can upload the following facts:", + L"上一个", //L"Previous", + L"下一个", //L"Next", + L"上传", //L"Upload", + + L"您已经收到以下情报的报酬:", //L"You have already received compensation for the following:", + L"没有情报可以上传。", //L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"没有敌军,%s不用继续潜伏!", //L"No more enemies present, %s is no longer in hiding!", + L"%s已经被敌军发现,还能躲藏%d小时。", //L"%s has been discovered and goes into hiding for %d hours.", + L"%s已经被敌军发现,请立刻前往该区域营救。", //L"%s has been discovered, going to sector!", + L"发现敌军将领\n", //L"Enemy general present\n", + + L"发现恐怖分子\n", //L"Terrorist present\n", + L"%s于%02d:%02d\n", //L"%s on %02d:%02d\n", + L"没有相关情报", //L"No data found", + L"情报已经失效。", //L"Data no longer eligible.", + + L"关于女王军的高级军官所在位置。", //L"Whereabouts of a high-ranking officer of the royal army.", + L"关于直升机的飞行计划。", //L"Flight plans of an airforce helicopter.", + L"关于最近友军被囚禁的所在地。", //L"Coordinates of a recently imprisoned member of your force.", + L"关于赏金逃犯的地点。", //L"Location of a high-value fugitive.", + + L"关于血猫可能会进攻哪个城镇的情报。", //L"Information on possible bloodcat attacks against settlements.", + L"关于僵尸可能会进攻哪个城镇的情报。", //L"Time and place of possible zombie attacks against settlements.", + L"关于土匪可能会袭击哪个城镇的情报。", //L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... 想象一下我突然出现的惊喜吧...", //L"... so imagine my surprise when suddenly...", + L"... 我有没有给你讲过这个故事...", //L"... and did I ever tell you the story of that one time...", + L"... 所以,最后,上校还是决定...", //L"... so, in conclusion, the colonel decided...", + L"... 告诉你,他们压根没看见...", //L"... tell you, they did not see that coming...", + + L"... 所以,不用想了...", //L"... so, without further consideration...", + L"... 但这时她说了...", //L"... but then SHE said...", + L"... 对了,说到美洲驼...", //L"... and, speaking of llamas...", + L"... 沙尘暴来袭时我正好在那里,当时...", //L"... there I was, in the middle of the dustbowl, when...", + + L"... 让我告诉你,这些事情很烦人...", //L"... and let me tell, those things chafe...", + L"... 他当时那脸色别提多难看了...", //L"... you should have seen his face...", + L"... 这不是我们最后看到的...", //L"... which wasn't the last of what we saw of them...", + L"... 这让我想到,我祖母总是说过...", //L"... which reminds me, my grandmother used to say...", + + L"... 顺便说一下,他是一个彻头彻尾的白痴...", //L"... who, by the way, is a total berk...", + L"... 并且,从源头上就大错特错了...", //L"... also, the roots were off by a margin...", + L"... 当时我就说,“滚开,异教徒!”...", //L"... and I was like, 'Back off, heathen!'...", + L"... 当时,主教们都开始公开叛教了...", //L"... at that point the vicars were in oben rebellion...", + + L"... 不是我介意,你知道,但是...", //L"... not that I would've minded, you know, but...", + L"... 如果不是因为那顶可笑的帽子...", //L"... if not for that ridiculous hat...", + L"... 再说,反正他也不怎么喜欢这条腿...", //L"... besides, it wasn't his favourite leg anyway...", + L"... 尽管这些船仍然是防水的...", //L"... even though the ships were still watertight...", + + L"... 尽管事实上长颈鹿无法做到这一点...", //L"... aside from the fact that giraffes can't do that...", + L"... 这叉子不是这么用的,注意...", //L"... totally wasted that fork, mind you...", + L"... 而且周围没有面包店。在那之后...", //L"... and no bakery in sight. After that...", + L"... 尽管在这方面有明确的规定...", //L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"哇。我不知道!", //L"Whoa. I had no idea!", + L"真的吗?", //L"Really?", + L"嗯...", //L"Uhhhh....", + L"嗯...你看,喔...", //L"Well... you see, uhh...", + + L"我不完全确定…", //L"I am not entirely sure that...", + L"我...嗯...", //L"I... well...", + L"我要是...", //L"If I could just...", + L"但是...", //L"But...", + + L"我无意打扰,但是...", //L"I don't mean to intrude, but...", + L"真的吗?我不清楚!", //L"Really? I had no idea!", + L"什么?全都是吗?", //L"What? All of it?", + L"不会吧!", //L"No way!", + + L"哈哈!", //L"Haha!", + L"哇,这些家伙不会相信我的!", //L"Whoa, the guys are not going to believe me!", + L"... 对,只要...", //L"... yeah, just...", + L"就跟那个算命的说的一样!", //L"That's just like the gypsy woman said!", + + L"... 是的,这就是为什么...", //L"... yeah, is that why...", + L"... 呵呵,说到翻新...", //L"... hehe, talk about refurbishing...", + L"... 是吧,我猜...", //L"... yeah, I guess...", + L"等等,啥?", //L"Wait. What?", + + L"... 不会介意看到...", //L"... wouldn't have minded seeing that...", + L"... 你这么一说我才想到...", //L"... now that you mention it...", + L"... 但是粉笔在哪呢...", //L"... but where did all the chalk go...", + L"... 从来没有考虑过...", //L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"训练新民兵", //L"Train new militia", + L"训练民兵", //L"Drill militia", + L"医疗民兵", //L"Doctor militia", + L"取消", //L"Cancel", +}; + +STR16 szFactoryText[] = +{ + L"%s: 的生产进程 %s 已因为忠诚度太低而被关闭。", //L"%s: Production of %s switched off as loyalty is too low.", + L"%s: 的生产进程 %s 已因为资金短缺而被关闭。", //L"%s: Production of %s switched off due to insufficient funds.", + L"%s: 的生产进程 %s 已因为缺少一个佣兵作为工作人员而被关闭。", //L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: 的生产进程 %s 已因为缺少必要的物品而被关闭。", //L"%s: Production of %s switched off due to required items missing.", + L" 制造列表 ", //(前空5格,后空10格) //L"Item to build", + + L"生产筹备 ", //(后空25格) //L"Preproducts", 5 + L"h/物品", //L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s 现在秘密的为我们工作!", //L"%s now secretly works for us!", + L"%s 不为我们的提议所动摇。对我们的怀疑度上升了...", //L"%s is not swayed by our offer. Suspicion against us rises...", + L"对我们的怀疑度很高。我们应该停止尝试转化更多的敌兵到我们的阵营,并在一段时间内保持低调。", //L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"直接招募 (%d)", //L"Recruit approach (%d)", + L"魅力引诱 (%d)", //L"Use seduction (%d)", + + L"行贿 ($%d) (%d)", //L"Bribe ($%d) (%d)", 5 + L"提供 %d 情报 (%d)", //L"Offer %d intel (%d)", + L"用什么方式来说服敌兵加入你的部队?", //L"How to convince the soldier to join your forces?", + L"执行", //L"Do it", + L"%d 变节者出现了", //L"%d turncoats present", +}; + +// rftr: better lbe tooltips +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE可用空间:", //L"MOLLE Space Available:", + L"MOLLE所需空间:", //L"MOLLE Space Required:", + L"MOLLE小包数量:", //L"MOLLE Small Slot Count:", + L"MOLLE中包数量:", //L"MOLLE Medium Slot Count:", + L"MOLLE包容量:小型", //L"MOLLE Pouch Size: Small", + L"MOLLE包容量:中型", //L"MOLLE Pouch Size: Medium", + L"MOLLE包容量:中型(液体)", //L"MOLLE Pouch Size: Medium (Hydration)", + L"腿包", //L"Thigh Rig", + L"背心", //L"Vest", + L"战斗包", //L"Combat Pack", + L"背包", //L"Backpack", + L"MOLLE包", //L"MOLLE Pouch", + L"兼容背包:", //L"Compatible backpacks:", + L"兼容战斗包:", //L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = +{ + L"国家总览", //L"National Overview", + L"地区总览", //L"Regional Overview", + L"任务总览", //L"Mission Overview", + L"选择区域:", //L"Select View:", + L"地区总览 (2)", //L"Regional (2)", + L"国家总览 (1)", //L"National (1)", + L"任务(3)", //L"Mission (3)", + L"物资:", //L"Supplies:", + L"后勤物资", //L"Incoming Supplies", + L"情报:", //L"Intel:", + L" /天", //L"/day", + L"当前项目", //L"Current Directive", + L"升级项目($%d)", //L"Improve Directive ($%d)", + L"升级所选项目将花费$%d。确认支付?", //L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"后勤物资或资金供应不足", //L"Insufficient funds.", + L"新项目将于00:00开始生效", //L"New directive will take effect at 00:00.", + L"民兵总览", //L"Militia Overview", + L"新兵:", //L"Green:", + L"正规军:", //L"Regular:", + L"精英:", //L"Elite:", + L"预计每日总数:", //L"Projected Daily Total:", + L"志愿者总数:", //L"Volunteer Pool:", + L"可用资源:", //L"Resources Available:", + L"枪支:", //L"Guns:", + L"防弹衣:", //L"Armour:", + L"杂物:", //L"Misc:", + L"训练费用:", //L"Training Cost:", + L"士兵每人每天维持费用:", //L"Upkeep Cost Per Soldier Per Day:", + L"训练速度加成:", //L"Training Speed Bonus:", + L"战斗加成:", //L"Combat Bonuses:", + L"装备加成:", //L"Physical Stats Bonus:", + L"枪法加成:", //L"Marksmanship Bonus:", + L"提升等级($%d)", //L"Upgrade Stats ($%d)", + L"提升民兵等级需要$%d。确认支付?", //L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"地区:", //L"Region:", + L"下一个", //L"Next", + L"上一个", //L"Previous", + L"指挥部:", //L"Administration Team:", + L"无", //L"None", + L"激活", //L"Active", + L"闲置", //L"Inactive", + L"忠诚度:", //L"Loyalty:", + L"最高忠诚度:", //L"Maximum Loyalty:", + L"部署指挥部(%d后勤物资)", //L"Deploy Administration Team (%d supplies)", + L"重新激活指挥部(%d后勤物资)", //L"Reactivate Administration Team (%d supplies)", + L"目前该地区部署指挥部不安全,你必须先打下至少一个城镇区域来扩展基地。", //L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"目前在Omerta不能进行区域行动。", //L"No regional actions available in Omerta.", + L"一旦你占领了至少一个城镇区域,指挥部就可以部署到其区域。一旦活跃起来,它们将能够扩大你在该地区的影响力和军事力量。然而,他们需要后勤物资来运作和制定政策。", //L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"请注意你选择的地区,制定区域政策将增加同一区域和全国(在较小程度上)其他政策的物资成本。", //L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"指挥部指令:", //L"Administrative Actions:", + L"建立 %s", //L"Establish %s", + L"升级 %s", //L"Improve %s", + L"当前:%d", //L"Current Tier: %d", + L"在该地区采取任何指挥部指令都会消耗%d后勤物资。", //L"Taking any administrative action in this region will cost %d supplies.", + L"情报传递站收益:%d", //L"Dead drop intel gain: %d", + L"走私贩提供收益:%d", //L"Smuggler supply gain: %d", + L"一小队民兵从附近的秘密基地加入了战斗! ", //L"A small group of militia from a nearby safehouse have joined the battle!", + L"通过给Omerta运送食物和物资,你已经得到反抗军的信任。并授权你访问他们的指挥系统,通过你的笔记本电脑访问A.R.C反抗军司令部网站。", //L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"目前恢复这里的指挥部并不安全。必须先夺回一个城镇区域。", //L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"突袭矿井成功。获取$%d。", //L"Mine raid successful. Stole $%d.", + L"没有足够的情报点数来策反敌人!", //L"Insufficient Intel to create turncoats!", + L"更改指令操作", //L"Change Admin Action", + L"取消", //L"Cancel", + L"确认", //L"Confirm", + L"<", //L"<", + L">", //L">", + L"更改此指令操作将花费$%d并重置。确认支出?", //L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"补给不足!管理操作已禁用。", //L"Insufficient supplies! Admin Actions have been DISABLED.", + L"每过%d小时可获得新任务。", //L"New missions will be available every %d hours.", + L"A.R.C网站上已有新任务可以获取。", //L"New missions are available at the A.R.C. website.", + L"任务准备工作进行中。", //L"Mission preparations in progress.", + L"任务持续时间:%d天", //L"Mission duration: %d days", + L"成功率:%d%s", //L"Chance of success: %d%s", + L"[编辑]", //L"[REDACTED]", + L"姓名:%s", //L"Name: %s", + L"地址:%s", //L"Location: %s", + L"分配任务:%s", //L"Assignment: %s", + L"合同:%d天", //L"Contract: %d days", + L"合同:%d小时", //L"Contract: %d hours", + L"合同:---", //L"Contract: ---", + L"代理奖金:", //L"Agent bonus:", + L"成功率+%d%s (%s)", //L"Chance of success +%d%s (%s)", + L"部署范围+%d (%s)", //L"Deployment range +%d (%s)", + L"ASD收入-%2.0f%s (%s)", //L"ASD Income -%2.0f%s (%s)", + L"偷窃燃料;发送至%s (%s)", //L"Steal fuel; send to %s (%s)", + L"销毁储存单位(%s)", //L"Destroy reserve units (%s)", + L"时间+%2.0f%s (%s)", //L"Time +%2.0f%s (%s)", + L"视野-%2.0f%s (%s)", //L"Vision -%2.0f%s (%s)", + L"装备质量-%d (%s)", //L"Gear quality -%d (%s)", + L"总体统计-%d (%s)", //L"Overall stats -%d (%s)", + L"训练人数上限:%d (%s)", //L"Max trainers: %d (%s)", + L"支付+%2.0f%s (%s)", //L"Payout +%2.0f%s (%s)", + L"支付限额增加到$%d (%s)", //L"Payout limit increased to $%d (%s)", + L"军官奖励(%s)", //L"Bonus for officers (%s)", + L"车辆奖励(%s)", //L"Bonus for vehicles (%s)", + L"持续时间+%d小时(%s)", //L"Duration +%d hours (%s)", + L"特工不在城镇", //L"Agent not in town", + L"城镇忠诚度太低", //L"Town loyalty too low", + L"特工不可用", //L"Agent unavailable", + L"特工合同到期", //L"Agent contract expiring", + L"无法使用反抗军特工", //L"Can't use rebel agent", + L"战斗进行中", //L"Battle in progress", + L"准备任务(%d补给)", //L"Prepare Mission (%d supplies)", + L"查看当前任务结果", //L"View active mission effects", + L"查看可用任务列表", //L"View available mission list", + L"你可以做准备展示的两个任务之一,一旦派遣特工成功,他们将在大约%d小时内不可用,然后再次可用。任务准备完成时,会有弹窗提醒,任务效果将变为有效。", //L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"一名抵抗军特工可以前去准备这个任务,但是使用佣兵的话效果会更好。他们的等级和技能可以带来额外的任务奖励。", //L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"任务准备的花销将根据同时准备或激活的其它任务数量有所增加。", //L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"新的任务将在%d日00:00可用。", //L"New missions will be available on Day %d at 00:00.", + L"激活的任务:", //L"Active missions:", + L"%s - 准备中 - 就绪时间:%d日,%02d:%02d", //L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - 生效 - 过期时间:%d日,%02d:%02d", //L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d补给)]", //L"[%s (%d supplies)]", + L"%s派遣一名反抗军特工去准备这个任务?", //L"%s Send a rebel agent to prepare this mission?", + L"%s派遣%s去准备这个任务?他将会在大致%d小时后返回。", //L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s派遣%s去准备这个任务?她将会在大致%d小时后返回。", //L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"任务\"%s\"生效中。", //L"Mission \"%s\" is now in effect.", + L"任务\"%s\"准备失败。", //L"Preparations for mission \"%s\" failed.", + L"任务\"%s\"已经过期,不再生效。", //L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = +{ + L"|物|资\n \n食物、水、医疗用品、武器以及任何\n反抗军认为有用的物资。反抗军会自动收集。", //L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|后|勤|物|资\n \n反抗军每天都会自动收集物资。当你\n占领更多的城镇时,他们每天能够\n找到的物资补给量将会增加。\n \n+%d (基础收入)", //L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|当|前|项|目\n \n你可以选择反抗军优先进行的战略目标。\n当你选定好战略目标时,新的项目指令将生效。", //L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|指|挥|部\n \n指挥部一旦部署,就会负责处理\n该区域内的日常事务。包括支持当地人,制造\n反抗宣传,制定地区政策等等。", //L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|忠|诚|度\n \n许多行政命令的有效性取决于\n该地区的忠诚度,提高忠诚度\n能得到最大利益化。", //L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|最|高|忠|诚|度\n \n你需要说服当地人完全信任你。这可以\n通过为他们建立物资供应来实现,表明\n你打算改善他们的生活质量。", //L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"该管理行动只会作用到城镇区域。", //L"This Admin Action applies its bonus to town sectors only.", + L"该管理行动会作用到城镇区域。\n和直接相邻的区域。", //L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"该管理行动会作用到城镇区域。\n1级覆盖周边1个区域。\n2级覆盖周边2个区域。", //L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"该管理行动会作用到城镇区域。\n1级覆盖周边2个区域。\n2级覆盖周边3个区域。", //L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = +{ + L"补给线", //L"Supply Line", + L"向当地人分发生活必需品。增加最大地区忠诚度。", //L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"反抗军电台", //L"Rebel Radio", + L"开始在该地区播放反抗军公共广播。城镇每天都会获得忠诚度。", //L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"秘密基地", //L"Safehouses", + L"在乡下建造反抗军的秘密基地,远离窥探者的目光。当你在这个地区作战时,会有额外的民兵加入战斗。", //L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"后勤干扰", //L"Supply Disruption", + L"反抗军将以敌方的后勤线路为目标,干扰敌人在该地区的活动。在这个地区的敌人会被削弱。", //L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"侦察巡逻队", //L"Scout Patrols", + L"开始定期侦察巡逻,监视该地区的敌对活动。敌人会在离城镇更远的地方被发现。", //L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"情报传递站", //L"Dead Drops", + L"为反抗军侦察员和渗透者设立情报站,以传递情报。提供日常情报工作。", //L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"走私团队", //L"Smugglers", + L"争取走私贩的帮助,为反抗军提供物资。可使每日物资得到增加。", //L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"民兵武器库", //L"Militia Warehouses", + L"在偏远地区建造仓库,让反抗军为民兵储备武器。提供每日民兵资源。", //L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"税务局", //L"Regional Taxes", + L"从当地人那里筹集资金来帮助你。增加每日收入,但地区忠诚度会逐日下降。", //L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"民间援助", //L"Civilian Aid", + L"指派一些反抗军直接协助和支持该地区的平民。增加每天志愿者的总数。", //L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"私人佣兵团", //L"Merc Support", + L"建立直接支持你的雇佣兵设施。增加雇佣兵工作的效率(医疗,修理,民兵训练等)", //L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"矿产管理", //L"Mining Policy", + L"进口更好的设备,与镇上的矿工合作,作出更平衡、更有效的排班表。增加城镇矿产的收入。", //L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"探路者", //L"Pathfinders", + L"当地人会引导您的队伍通过该地区。大大减少徒步行军时间。", //L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"鹞式战机", //L"Harriers", + L"反抗军骚扰附近的敌军,大大增加他们在该地区的行军时间。", // + L"防御工事", //L"Fortifications", + L"建立杀伤区和防御阵地。友军在这个城镇战斗时更有效。仅限于自动战斗。", //L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = +{ + L"收集物资", //L"Gather Supplies", + L"每日额外获得%.0f后勤物资。", //L"Gain an additional %.0f supplies per day.", + L"从有同情心的当地人那里积累物资,并向\n国际救援组织寻求援助,以增加每日后勤供应。", //L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"升级此项将增加反抗军每日收集物资的数量。", //L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"支援民兵", //L"Support Militia", + L"减少民兵每日维护费用。 民兵每日维护费用调整:%.2f。", //L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"反抗军会帮你解决训练民兵\n后勤问题,减轻你的钱包负担。", //L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"升级此项将会减少民兵的日常维护成本。", //L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"训练民兵", //L"Train Militia", + L"降低民兵训练成本,提高民兵训练速度。 民兵训练费用调整:%.2f。 民兵训练速度调整:%.2f。", //L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"当你训练民兵时,反抗军会协助你,提高训练效率。", //L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"升级此项将进一步降低训练成本和提高训练速度。", //L"Improving this directive will further reduce training cost and increase training speed.", + L"宣传活动", //L"Propaganda Campaign", + L"城镇的忠诚度上升得更快。 忠诚加值修正值:%.2f。", //L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"对当地人美化你的胜利和功绩。", //L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"升级此项将提高城镇忠诚度的上升速度。", //L"Improving this directive will increase how quickly town loyalty rises.", + L"部署精兵", //L"Deploy Elites", + L"Omerta每天出现%.0f精锐民兵。", //L"%.0f elite militia appear in Omerta each day.", + L"反抗军将一小部分训练有素的部队交给你指挥。", //L"The rebels release a small number of their highly-trained forces to your command.", + L"升级此项将会增加每天训练的民兵数量。", //L"Improving this directive will increase the number of militia that appear each day.", + L"打击重点目标", //L"High Value Target Strikes", + L"敌军不太可能有重点目标,除了女王。", //L"Enemy groups are less likely to have specialised soldiers.", + L"对敌军进行外科手术式打击。\n军官、医务人员、无线电操作员和其他专家\n都是重点打击目标。", //L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"升级此项将使打击目标更加成功和有效。", //L"Improving this directive will make strikes more successful and effective.", + L"侦查小队", //L"Spotter Teams", + L"在战斗中,敌人的大致位置会显示在战术地图上(在战术界面中按INSERT键)", //L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"每支部队都有一个侦查小队,在战斗中\n提供敌人的大致位置。", //L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"升级此项将会使敌人的位置更精确。", //L"Improving this directive will make the locations of unspotted enemies more precise.", + L"突袭矿井", //L"Raid Mines", + L"从不受你控制的矿井获取一些收入。当你占领该矿井时,这个指令就没多大用处了。", //L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"突袭敌方矿井。虽然不是次次成功,一旦\n成功了,多多少少会为你增加少量的收入。", //L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"升级此项将会增加突袭矿井收入的最大值。", //L"Improving this directive will increase the maximum value of stolen income.", + L"策反敌军", //L"Create Turncoats", + L"每天随机在敌人队伍中策反%.0f名士兵。 每天消耗%.1f情报点数。", //L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"通过贿赂、威胁和勒索,说服敌军士兵\n背叛他们的军队并为你工作。", //L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"升级此项将会增加每天士兵人数。", //L"Improving this directive will increase the number of soldiers turned daily.", + L"征召平民", //L"Draft Civilians", + L"每天获得%.0f名志愿者。所有城镇每天都会失去一些忠诚度。", //L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"征召平民作为民兵新兵。不过民众\n可能不会对此感到高兴。随着您\n占领更多城镇,效率会提高。", //L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"升级此项将会增加每天志愿者人数。", //L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"深入部署", //L"Deep Deployment", + L"协同行动,悄悄地抵进敌军,但是要小心:这可能会让你部署在劣势区域。当进攻敌军部队时,部署区会更大。", //L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"扰乱ASD", //L"Disrupt ASD", + L"破坏Arulco特种部门(ASD)的日常行动。临时阻止ASD部署更多的机械化单位,并且大幅度降低他们的每日收入。", //L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"伪造运输订单", //L"Forge Transport Orders", + L"创建一个虚假的运输请求,敌方的运输队就会在这个地点位置集合。", //L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"战略情报", //L"Strategic Intel", + L"侦听敌人,发现敌军的攻击目标。当在战略地图上观察队伍时,敌军优先进攻的目标区域会被标红。", //L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"强化本地商店", //L"Improve Local Shops", + L"为商人们建立横跨国家的渠道,让他们更方便进到好货。商店将会出售更好的物资。", //L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"减缓战略决策", //L"Slow Strategic Decisions", + L"在敌人的高级指挥层中散布迷惑性和误导性消息。使得敌人会花更长时间进行战略层面的决策。", //L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"降低战备程度", //L"Lower Readiness", + L"戏弄敌军士兵,让他们的警惕性下降。在因为佣兵行动进入警戒前,敌军士兵的视距下降。", //L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"破坏装备", //L"Sabotage Equipment", + L"袭扰敌军的补给线,阻止敌军维护他们的装备。敌军士兵将会使用比平时更糟的装备。", //L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"破坏载具", //L"Sabotage Vehicles", + L"破坏敌军的载具维护中心,削弱他们的战斗效能和战备度。遭遇到的敌军载具状态下降。", //L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"输送补给", //L"Send Supplies", + L"临时增加对这个城镇的直接援助。城镇忠诚度会在任务期间被动提升。", //L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"士兵悬赏(Kingpin)", //L"Soldier Bounties (Kingpin)", + L"杀敌以获得资金奖励。和Kingpin谈谈,他感觉可以利用你的存在来削弱女王的权威。奖金会在午夜存入你的账户,每天最多$%d。", //L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"在城镇外任意地区训练民兵", //L"Train Militia Anywhere", + L"野外训练区是可以快速设立和拆毁的。民兵可以在城镇外的非交战区接受训练。", //L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = +{ + L"已经安装在机器人身上的武器不能替换。", //L"The robot's installed weapon cannot be changed.", + L"机器人的武器不能安装附件。", //L"It is not possible to add attachments to the robot's weapon.", + L"武器已安装", //L"Installed Weapon", + L"装填弹药", //L"Reserve Ammo", + L"瞄准更新", //L"Targeting Upgrade", + L"底座更新", //L"Chassis Upgrade", + L"功能更新", //L"Utility Upgrade", + L"存储仓", //L"Storage", + L"没有效果", //L"No Bonus", + L"激光附件效果应用到机器人。", //L"The laser bonuses of this item are applied to the robot.", + L"夜视仪效果应用到机器人。", //L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"配套工具应用于机器人的武器。", //L"This kit degrades instead of the robot's weapon.", + L"机器人的配套工具耐久耗尽!", //L"The robot's cleaning kit was depleted!", + L"机器人相邻的地雷会自动插旗。", //L"Mines adjacent to the robot are automatically flagged.", + L"战斗过程定期使用金属探测器。不需要电池。", //L"Periodic X-Ray scans during combat. No batteries required.", + L"机器人已经激活金属探测器!", //L"The robot has activated an x-ray scan!", + L"机器人可以使用无线电通信设备。", //L"The robot can use the radio set.", + L"机器人的底座加强,将带来更好的战斗表现。", //L"The robot's chassis is strengthened, giving it better combat performance.", + L"伪装效果应用到机器人。", //L"The camouflage bonuses of this item are applied to the robot.", + L"机器人更加坚固,降低伤害。", //L"The robot is tougher and takes less damage.", + L"机器人的额外装甲破坏了!", //L"The robot's extra armour plating was destroyed!", + L"机器人附加%s技能效果。", //L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //CHINESE diff --git a/i18n/_DutchText.cpp b/i18n/_DutchText.cpp index 123fe21d..e3f64069 100644 --- a/i18n/_DutchText.cpp +++ b/i18n/_DutchText.cpp @@ -1,12247 +1,12327 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("DUTCH") - - #if defined( DUTCH ) - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_DutchText_public_symbol(void){;} - -#ifdef DUTCH - - - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Locations", // 0 - L"Characters", - L"Items", - L"Quests", - L"Menu 5", - L"Menu 6", //5 - L"Menu 7", - L"Menu 8", - L"Menu 9", - L"Menu 10", - L"Menu 11", //10 - L"Menu 12", - L"Menu 13", - L"Menu 14", - L"Menu 15", - L"Menu 15", // 15 - - //Briefing Room - L"Enter", -}; - -STR16 pOtherButtonsText[] = -{ - L"Briefing", - L"Accept", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Briefing", - L"Accept missions", -}; - - -STR16 pLocationPageText[] = -{ - L"Prev page", - L"Photo", - L"Next page", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"Main page", - L">>", - L"Type: ", - L"Empty data", - L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", - L"Briefing Room. Please click the 'Enter' button.", // TODO.Translate -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Unknown",// 0 - unknown - L"City", //1 - cities - L"SAM Site", //2 - SAM Site - L"Other location", //3 - other location - L"Mines", //4 - mines - L"Military complex", //5 - military complex - L"Laboratory complex", //6 - laboratory complex - L"Factory complex", //7 - factory complex - L"Hospital", //8 - hospital - L"Prison", //9 - prison - L"Airport", //10 - air port -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Show all", - L"Show AIM", - L"Show MERC", - L"Show RPC", - L"Show NPC", - L"Show Pojazd", - L"Show IMP", - L"Show EPC", - L"Filter", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"All", - L"AIM", - L"MERC", - L"RPC", - L"NPC", - L"Veh.", - L"IMP", - L"EPC", - L"Filter", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Show all", - L"Show cities", - L"Show SAM Sites", - L"Show other location", - L"Show mines", - L"Show military complex", - L"Show laboratory complex", - L"Show Factory complex", - L"Show hospital", - L"Show prison", - L"Show air port", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"All", - L"City", - L"SAM", - L"Other", - L"Mine", - L"Mil.", - L"Lab.", - L"Fact.", - L"Hosp.", - L"Prison", - L"Air.", -}; - -// TODO.Translate -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"All",//0 - L"City", - L"SAM", - L"Mine", - L"Airport", - L"Wilder.", - L"Underg.", - L"Facil.", - L"Other", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//facility index + 1 - L"Show Cities", - L"Show SAM sites", - L"Show mines", - L"Show airports", - L"Show sectors in wilderness", - L"Show underground sectors", - L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", - L"Show Other sectors", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; -// TODO.Translate -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"All",//0 - L"A.I.M.", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"Other",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//Other index + 1 - L"Show A.I.M. members", - L"Show M.E.R.C staff", - L"Show Rebels", - L"Show Non-hirable Characters", - L"Show Player created Characters", - L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", -}; -// TODO.Translate -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Vehic.", - L"EPC", - L"",//reserved. Insert new Other filters above! -}; -// TODO.Translate -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"All",//0 - L"Gun", - L"Ammo", - L"Armor", - L"LBE", - L"Attach.", - L"Misc",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", -}; -// TODO.Translate -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Helmet", - L"Vest", - L"Pant", - L"Plate", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Tight", - L"Vest", - L"Combat", - L"Backp.", - L"Pocket", - L"Other", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Optic", - L"Side", - L"Muzzle", - L"Extern.", - L"Intern.", - L"Other", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"Blade", - L"T.Knife", - L"Punch", - L"Grenade", - L"Bomb", - L"Medikit", - L"Kit", - L"Face", - L"Other", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; -// TODO.Translate -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"All", - L"Active", - L"Compl.", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Active Quests", - L"Show Completed Quests", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"All", //0 - L"Gun", - L"Ammo", - L"LBE", - L"Misc", - - L"All", //5 - L"Gun", - L"Ammo", - L"LBE Gear", - L"Misc", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"Heavy", - L"Pistol", - L"M. Pist.", - L"SMG", - L"Rifle", - L"S. Rifle", - L"A. Rifle", - L"MG", - L"Shotgun", - - // Ammo - L"Pistol", - L"M. Pist.", //10 - L"SMG", - L"Rifle", - L"S. Rifle", - L"A. Rifle", - L"MG", - L"Shotgun", - - // Used - L"Guns", - L"Armor", - L"LBE Gear", - L"Misc", //20 - - // Armour - L"Helmets", - L"Vests", - L"Leggings", - L"Plates", - - // Misc - L"Blades", - L"Th. Knife", - L"Melee", - L"Grenades", - L"Bombs", - L"Med.", //30 - L"Kits", - L"Face", - L"LBE", - L"Misc.", //34 -}; - -// TODO.Translate -STR16 QuestDescText[] = -{ - L"Deliver Letter", - L"Food Route", - L"Terrorists", - L"Kingpin Chalice", - L"Kingpin Money", - L"Runaway Joey", - L"Rescue Maria", - L"Chitzena Chalice", - L"Held in Alma", - L"Interogation", - - L"Hillbilly Problem", //10 - L"Find Scientist", - L"Deliver Video Camera", - L"Blood Cats", - L"Find Hermit", - L"Creatures", - L"Find Chopper Pilot", - L"Escort SkyRider", - L"Free Dynamo", - L"Escort Tourists", - - - L"Doreen", //20 - L"Leather Shop Dream", - L"Escort Shank", - L"No 23 Yet", - L"No 24 Yet", - L"Kill Deidranna", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", - -}; - -// TODO.Translate -STR16 FactDescText[] = -{ - L"Omerta Liberated", - L"Drassen Liberated", - L"Sanmona Liberated", - L"Cambria Liberated", - L"Alma Liberated", - L"Grumm Liberated", - L"Tixa Liberated", - L"Chitzena Liberated", - L"Estoni Liberated", - L"Balime Liberated", - - L"Orta Liberated", //10 - L"Meduna Liberated", - L"Pacos approched", - L"Fatima Read note", - L"Fatima Walked away from player", - L"Dimitri (#60) is dead", - L"Fatima responded to Dimitri's supprise", - L"Carlo's exclaimed 'no one moves'", - L"Fatima described note", - L"Fatima arrives at final dest", - - L"Dimitri said Fatima has proof", //20 - L"Miguel overheard conversation", - L"Miguel asked for letter", - L"Miguel read note", - L"Ira comment on Miguel reading note", - L"Rebels are enemies", - L"Fatima spoken to before given note", - L"Start Drassen quest", - L"Miguel offered Ira", - L"Pacos hurt/Killed", - - L"Pacos is in A10", //30 - L"Current Sector is safe", - L"Bobby R Shpmnt in transit", - L"Bobby R Shpmnt in Drassen", - L"33 is TRUE and it arrived within 2 hours", - L"33 is TRUE 34 is false more then 2 hours", - L"Player has realized part of shipment is missing", - L"36 is TRUE and Pablo was injured by player", - L"Pablo admitted theft", - L"Pablo returned goods, set 37 false", - - L"Miguel will join team", //40 - L"Gave some cash to Pablo", - L"Skyrider is currently under escort", - L"Skyrider is close to his chopper in Drassen", - L"Skyrider explained deal", - L"Player has clicked on Heli in Mapscreen at least once", - L"NPC is owed money", - L"Npc is wounded", - L"Npc was wounded by Player", - L"Father J.Walker was told of food shortage", - - L"Ira is not in sector", //50 - L"Ira is doing the talking", - L"Food quest over", - L"Pablo stole something from last shpmnt", - L"Last shipment crashed", - L"Last shipment went to wrong airport", - L"24 hours elapsed since notified that shpment went to wrong airport", - L"Lost package arrived with damaged goods. 56 to False", - L"Lost package is lost permanently. Turn 56 False", - L"Next package can (random) be lost", - - L"Next package can(random) be delayed", //60 - L"Package is medium sized", - L"Package is largesized", - L"Doreen has conscience", - L"Player Spoke to Gordon", - L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo asked for first aid", - L"Dynamo can be recruited", - L"Npc is bleeding", - L"Shank wnts to join", - - L"NPC is bleeding", //70 - L"Player Team has head & Carmen in San Mona", - L"Player Team has head & Carmen in Cambria", - L"Player Team has head & Carmen in Drassen", - L"Father is drunk", - L"Player has wounded mercs within 8 tiles of NPC", - L"1 & only 1 merc wounded within 8 tiles of NPC", - L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda is in the store ", - L"Brenda is Dead", - - L"Brenda is at home", //80 - L"NPC is an enemy", - L"Speaker Strength >= 84 and < 3 males present", - L"Speaker Strength >= 84 and at least 3 males present", - L"Hans lets ou see Tony", - L"Hans is standing on 13523", - L"Tony isnt available Today", - L"Female is speaking to NPC", - L"Player has enjoyed the Brothel", - L"Carla is available", - - L"Cindy is available", //90 - L"Bambi is available", - L"No girls is available", - L"Player waited for girls", - L"Player paid right amount of money", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping expectingh visit from player", - L"Darren expecting money from player", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Delete", - L"Delete item (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"north", - L"northeast", - L"east", - L"southeast", - L"south", - L"southwest", - L"west", - L"northwest" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Toggle viewing of players", //0 - L"Toggle viewing of enemies", - L"Toggle viewing of creatures", - L"Toggle viewing of rebels", - L"Toggle viewing of civilians", - - L"Player", - L"Enemy", - L"Creature", - L"Rebels", - L"Civilian", - - L"DETAILED PLACEMENT", //10 - L"General information mode", - L"Physical appearance mode", - L"Attributes mode", - L"Inventory mode", - L"Profile ID mode", - L"Schedule mode", - L"Schedule mode", - L"DELETE", - L"Delete currently selected merc (|D|e|l)", - L"NEXT", //20 - L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", - L"Toggle priority existance", - L"Toggle whether or not placement\nhas access to all doors", - - //Orders - L"STATIONARY", - L"ON GUARD", - L"ON CALL", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", //30 - L"RND PT PATROL", - - //Attitudes - L"DEFENSIVE", - L"BRAVE SOLO", - L"BRAVE AID", - L"AGGRESSIVE", - L"CUNNING SOLO", - L"CUNNING AID", - - L"Set merc to face %s", - - L"Find", - L"BAD", //40 - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"BAD", - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"Previous color set", //50 - L"Next color set", - - L"Previous body type", - L"Next body type", - - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - - L"No action", - L"No action", - L"No action", //60 - L"No action", - - L"Clear Schedule", - - L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"ROOFS", //0 - L"WALLS", - L"ROOM INFO", - - L"Place walls using selection method", - L"Place doors using selection method", - L"Place roofs using selection method", - L"Place windows using selection method", - L"Place damaged walls using selection method.", - L"Place furniture using selection method", - L"Place wall decals using selection method", - L"Place floors using selection method", //10 - L"Place generic furniture using selection method", - L"Place walls using smart method", - L"Place doors using smart method", - L"Place windows using smart method", - L"Place damaged walls using smart method", - L"Lock or trap existing doors", - - L"Add a new room", - L"Edit cave walls.", - L"Remove an area from existing building.", - L"Remove a building", //20 - L"Add/replace building's roof with new flat roof.", - L"Copy a building", - L"Move a building", - L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", - L"Erase room numbers", - - L"Toggle |Erase mode", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Cycle brush size (|A/|Z)", - L"Roofs (|H)", - L"|Walls", //30 - L"Room Info (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Wpns", //0 - L"Ammo", - L"Armour", - L"LBE", - L"Exp", - L"E1", - L"E2", - L"E3", - L"Triggers", - L"Keys", - L"Rnd", //10 - L"Previous (|,)", // previous page - L"Next (|.)", // next page -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Add ambient light source", //0 - L"Toggle fake ambient lights.", - L"Add exit grids (r-clk to query existing).", - L"Cycle brush size (|A/|Z)", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", - L"Specify north point for validation purposes.", - L"Specify west point for validation purposes.", - L"Specify east point for validation purposes.", - L"Specify south point for validation purposes.", - L"Specify center point for validation purposes.", //10 - L"Specify isolated point for validation purposes.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"New outdoor level", //0 - L"New basement", - L"New cave level", - L"Save map (|C|t|r|l+|S)", - L"Load map (|C|t|r|l+|L)", - L"Select tileset", - L"Leave Editor mode", - L"Exit game (|A|l|t+|X)", - L"Create radar map", - L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", - L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Draw |Ground textures", //0 - L"Set map ground textures", - L"Place banks and |Cliffs", - L"Draw roads (|P)", - L"Draw |Debris", - L"Place |Trees & bushes", - L"Place |Rocks", - L"Place barrels & |Other junk", - L"Fill area", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", //10 - L"Cycle brush size (|A/|Z)", - L"Raise brush density (|])", - L"Lower brush density (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Terrain", //0 - L"Buildings", - L"Items", - L"Mercs", - L"Map Info", - L"Options", - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text - L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text - L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text - L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text - L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"North Entry Point", //0 - L"West Entry Point", - L"East Entry Point", - L"South Entry Point", - L"Center Entry Point", - L"Isolated Entry Point", - - L"Prime", - L"Night", - L"24Hour", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Panic Trigger1", //0 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", - - L"Pressure Action", - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"No Lock ID", //0 - L"Explosion Trap", - L"Electric Trap", - L"Siren Trap", - L"Silent Alarm", - L"Super Electric Trap", //5 - L"Brothel Siren Trap", - L"Trap Level %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 - L"No map currently loaded.", - L"File: %S, Current Tileset: %s", - L"Enlarge map on loading", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"TOGGLE", //0 - L"VIEWS", - L"SELECTION METHOD", - L"SMART METHOD", - L"BUILDING METHOD", - L"Room#", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Editing lock attributes at map index %d.", - L"Lock ID", - L"Trap Type", - L"Trap Level", - L"Locked", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Pressure Action", //0 - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", - - L"Panic Trigger1", //5 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Status Info Line 1", - L"Status Info Line 2", - L"Status Info Line 3", - L"Status Info Line 4", - L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Prime", - L"Night", - L"24Hrs", //5 - - L"Radius", - - L"Underground", - L"Light Level", - - L"Outdoors", - L"Basement", //10 - L"Caves", - - L"Restricted", - L"Scroll ID", - - L"Destination", - L"Sector", //15 - L"Destination", - L"Bsmt. Level", - L"Dest.", - L"GridNo", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"No action", - L"Lock door", - L"Unlock door", - L"Open door", - L"Close door", - L"Move to gridno", - L"Leave sector", - L"Enter sector", - L"Stay in sector", - L"Sleep", - L"Ignore this!" -}; - -STR16 zDiffNames[5] = -{ - L"Wimp", - L"Easy", - L"Average", - L"Tough", - L"Steroid Users Only" -}; - -STR16 EditMercStat[12] = -{ - L"Max Health", - L"Cur Health", - L"Strength", - L"Agility", - L"Dexterity", - L"Charisma", - L"Wisdom", - L"Marksmanship", - L"Explosives", - L"Medical", - L"Scientific", - L"Exp Level", -}; - - -STR16 EditMercOrders[8] = -{ - L"Stationary", - L"On Guard", - L"Close Patrol", - L"Far Patrol", - L"Point Patrol", - L"On Call", - L"Seek Enemy", - L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Defensive", - L"Brave Loner", - L"Brave Buddy", - L"Cunning Loner", - L"Cunning Buddy", - L"Aggressive", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Merc Name:", //0 - L"Orders:", - L"Combat Attitude:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Merc Colors", //0 - L"Done", - - L"Previous merc standing orders", - L"Next merc standing orders", - - L"Previous merc combat attitude", - L"Next merc combat attitude", //5 - - L"Decrease merc stat", - L"Increase merc stat", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Random", //0 - L"Reg Male", - L"Big Male", - L"Stocky Male", - L"Reg Female", - L"NE Tank", //5 - L"NW Tank", - L"Fat Civilian", - L"M Civilian", - L"Miniskirt", - L"F Civilian", //10 - L"Kid w/ Hat", - L"Humvee", - L"Eldorado", - L"Icecream Truck", - L"Jeep", //15 - L"Kid Civilian", - L"Domestic Cow", - L"Cripple", - L"Unarmed Robot", - L"Larvae", //20 - L"Infant", - L"Yng F Monster", - L"Yng M Monster", - L"Adt F Monster", - L"Adt M Monster", //25 - L"Queen Monster", - L"Bloodcat", - L"Humvee", // TODO.Translate -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=ORDERS=-- ", //0 - L"--=ATTITUDE=--", - - L"RELATIVE", - L"ATTRIBUTES", - - L"RELATIVE", - L"EQUIPMENT", - - L"RELATIVE", - L"ATTRIBUTES", - - L"Army", - L"Admin", - L"Elite", //10 - - L"Exp. Level", - L"Life", - L"LifeMax", - L"Marksmanship", - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Leadership", - L"Explosives", //20 - L"Medical", - L"Mechanical", - L"Morale", - - L"Hair color:", - L"Skin color:", - L"Vest color:", - L"Pant color:", - - L"RANDOM", - L"RANDOM", - L"RANDOM", //30 - L"RANDOM", - - L"By specifying a profile index, all of the information will be extracted from the profile ", - L"and override any values that you have edited. It will also disable the editing features ", - L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", - L"extract the number you have typed. A blank field will clear the profile. The current ", - L"number of profiles range from 0 to ", - - L"Current Profile: n/a ", - L"Current Profile: %s", - - L"STATIONARY", - L"ON CALL", //40 - L"ON GUARD", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", - L"RND PT PATROL", - - L"Action", - L"Time", - L"V", - L"GridNo 1", //50 - L"GridNo 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"lock", - L"unlock", - L"open", - L"close", - - L"Click on the gridno adjacent to the door that you wish to %s.", //60 - L"Click on the gridno where you wish to move after you %s the door.", - L"Click on the gridno where you wish to move to.", - L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", - L" Hit ESC to abort entering this line in the schedule.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"Slot #%d", - L"Patrol orders with no waypoints", - L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"No action", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Placement not copied because no placement selected.", - L"Placement copied.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Placement not pasted as no placement is saved in buffer.", - L"Placement pasted.", - L"Placement not pasted as the maximum number of placements for this team has been reached.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Exit editor?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Are you sure you wish to remove all lights?", //0 - L"Are you sure you wish to reverse the schedules?", - L"Are you sure you wish to clear all of the schedules?", - - L"Clicked Placement Enabled", - L"Clicked Placement Disabled", - - L"Draw High Ground Enabled", //5 - L"Draw High Ground Disabled", - - L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"Random Placement Enabled", - L"Random Placement Disabled", - - L"Removing Treetops", //10 - L"Showing Treetops", - - L"World Raise Reset", - - L"World Raise Set Old", - L"World Raise Set", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"Creating radar map for %S", //0 - - L"Delete current map and start a new basement level?", - L"Delete current map and start a new cave level?", - L"Delete current map and start a new outdoor level?", - - L" Wipe out ground textures? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 - L"Toggle fake editor lighting ON/OFF", - - L"INSERT", - L"Toggle fill mode ON/OFF", - - L"BKSPC", - L"Undo last change", - - L"DEL", - L"Quick erase object under mouse cursor", - - L"ESC", - L"Exit editor", - - L"PGUP/PGDN", //10 - L"Change object to be pasted", - - L"F1", - L"This help screen", - - L"F10", - L"Save current map", - - L"F11", - L"Load map as current", - - L"+/-", - L"Change shadow darkness by .01", - - L"SHFT +/-", //20 - L"Change shadow darkness by .05", - - L"0 - 9", - L"Change map/tileset filename", - - L"b", - L"Change brush size", - - L"d", - L"Draw debris", - - L"o", - L"Draw obstacle", - - L"r", //30 - L"Draw rocks", - - L"t", - L"Toggle trees display ON/OFF", - - L"g", - L"Draw ground textures", - - L"w", - L"Draw building walls", - - L"e", - L"Toggle erase mode ON/OFF", - - L"h", //40 - L"Toggle roofs ON/OFF", -}; - -STR16 pAutoLoadMapText[] = -{ - L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -STR16 pShowHighGroundText[] = -{ - L"Showing High Ground Markers", - L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/* -CHAR16 gszActionItemDesc[ 34 ][ 30 ] = // NUM_ACTIONITEMS = 34 -{ - L"Klaxon Mine", - L"Flare Mine", - L"Teargas Explosion", - L"Stun Explosion", - L"Smoke Explosion", - L"Mustard Gas", - L"Land Mine", - L"Open Door", - L"Close Door", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Small Explosion", - L"Medium Explosion", - L"Large Explosion", - L"Toggle Door", - L"Toggle Action1s", - L"Toggle Action2s", - L"Toggle Action3s", - L"Toggle Action4s", - L"Enter Brothel", - L"Exit Brothel", - L"Kingpin Alarm", - L"Sex with Prostitute", - L"Reveal Room", - L"Local Alarm", - L"Global Alarm", - L"Klaxon Sound", - L"Unlock door", - L"Toggle lock", - L"Untrap door", - L"Tog pressure items", - L"Museum alarm", - L"Bloodcat alarm", - L"Big teargas", -}; -*/ -STR16 pUpdateItemStatsPanelText[] = -{ - L"Toggle hide flag", //0 - L"No item selected.", - L"Slot available for", - L"random generation.", - L"Keys not editable.", - L"ProfileID of owner", - L"Item class not implemented.", - L"Slot locked as empty.", - L"Status", - L"Rounds", - L"Trap Level", //10 - L"Quantity", - L"Trap Level", - L"Status", - L"Trap Level", - L"Status", - L"Quantity", - L"Trap Level", - L"Dollars", - L"Status", - L"Trap Level", //20 - L"Trap Level", - L"Tolerance", - L"Alarm Trigger", - L"Exist Chance", - L"B", - L"R", - L"S", -}; - -STR16 pSetupGameTypeFlagsText[] = -{ - L"Item appears in both Sci-Fi and Realistic modes", //0 - L"Item appears in Realistic mode only", - L"Item appears in Sci-Fi mode only", -}; - -STR16 pSetupGunGUIText[] = -{ - L"SILENCER", //0 - L"SNIPERSCOPE", - L"LASERSCOPE", - L"BIPOD", - L"DUCKBILL", - L"G-LAUNCHER", //5 -}; - -STR16 pSetupArmourGUIText[] = -{ - L"CERAMIC PLATES", //0 -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"DETONATOR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"Okay", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"LOAD", - L"SAVE", - L"Update", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"Tileset: %s", //0 - L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", - L"Number of items: %d", - L"Number of lights: %d", - L"Number of entry points: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"Number of rooms: %d", - L"Total map population: %d", - L"Enemies: %d", - L"Admins: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Troops: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Elites: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Civilians: %d", //20 - - L"(%d detailed, %d profile -- %d have priority existance)", - - L"Humans: %d", - L"Cows: %d", - L"Bloodcats: %d", - - L"Creatures: %d", - - L"Monsters: %d", - L"Bloodcats: %d", - - L"Number of locked and/or trapped doors: %d", - L"Locked: %d", - L"Trapped: %d", //30 - L"Locked & Trapped: %d", - - L"Civilians with schedules: %d", - - L"Too many exit grid destinations (more than 4)...", - L"ExitGrids: %d (%d with a long distance destination)", - L"ExitGrids: none", - L"ExitGrids: 1 destination using %d exitgrids", - L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 - L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"%d placements have patrol orders without any waypoints defined.", - L"%d placements have waypoints, but without any patrol orders.", - L"%d gridnos have questionable room numbers. Please validate.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Enemy", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"Panic1", - L"Panic2", - L"Panic3", - L"Norm1", - L"Norm2", - L"Norm3", - L"Norm4", //10 - L"Pressure Actions", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"PRIORITY ENEMY DROPPED ITEMS", - L"None", - - L"TOO MANY ITEMS TO DISPLAY!", - L"NORMAL ENEMY DROPPED ITEMS", - L"TOO MANY ITEMS TO DISPLAY!", - L"None", - L"TOO MANY ITEMS TO DISPLAY!", - L"ERROR: Can't load the items for this map. Reason unknown.", //20 -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 - L"(NO MAP LOADED).", - L"You currently have %d outdated maps.", - L"The more maps that need to be updated, the longer it takes. It'll take ", - L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"depending on your computer, it may vary.", - L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"There is no sector currently selected.", - - L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"You need to either load an existing map or create a new map before being", - L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 - - L", ground level", - L", underground level 1", - L", underground level 2", - L", underground level 3", - L", alternate G level", - L", alternate B1 level", - L", alternate B2 level", - L", alternate B3 level", - - L"ITEM DETAILS -- sector %s", - L"Summary Information for sector %s:", //20 - - L"Summary Information for sector %s", - L"does not exist.", - - L"Summary Information for sector %s", - L"does not exist.", - - L"No information exists for sector %s.", - - L"No information exists for sector %s.", - - L"FILE: %s", - - L"FILE: %s", - - L"Override READONLY", - L"Overwrite File", //30 - - L"You currently have no summary data. By creating one, you will be able to keep track", - L"of information pertaining to all of the sectors you edit and save. The creation process", - L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"Do you wish to do this now (y/n)?", - - L"No summary info. Creation denied.", - - L"Grid", - L"Progress", //40 - L"Use Alternate Maps", - - L"Summary", - L"Items", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"Analyzing map: %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Loading map: %s", -}; - -STR16 pReportErrorText[] = -{ - L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Generating map information", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"Generating map summary", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MAJOR VERSION UPDATE", - L"There are %d maps requiring a major version update.", - L"Updating all outdated maps", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] from default tileset %s (%d, %S)", - L"File: %S, subindex: %d (%d, %S)", - L"Tileset: %s", -}; - -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Accept selections (|E|n|t|e|r)", - L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", - L"Scroll window up (|U|p)", - L"Scroll window down (|D|o|w|n)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Small", - L"Medium", - L"Large", - L"XLarge", - L"Width: xx", - L"Area" - }; - -//--- - -// TODO.Translate -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Page 1/2", //0 - L"Page 2/2", - - L"Page 1/3", - L"Page 2/3", - L"Page 3/3", - - L"Page 1/1", //5 -}; - -// by Jazz: TODO.Translate -CHAR16 zGrod[][500] = -{ - L"Robot", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 Development Team", - L"@T,C144,R134,{;Coding", - L"@T,C144,R134,{;Graphics and Sounds", - L"@};(Various other mods!)", - L"@T,C144,R134,{;Items", - L"@T,C144,R134,{;Other Contributors", - L"@};(All other community members who contributed input and feedback!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L".38 kal", -// L"9mm", -// L".45 kal", -// L".357 kal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm NAVO", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Raket", -// L"", // dart -// L"", // flame -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L".38 kal", -// L"9mm", -// L".45 kal", -// L".357 kal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm N.", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Raket", -// L"", // dart -//}; - - -CHAR16 WeaponType[][30] = -{ - L"Other", - L"Pistol", - L"Machine pistol", - L"Machine Gun", - L"Rifle", - L"Sniper Rifle", - L"Attack weapon", - L"Light machine gun", - L"Shotgun", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Beurt speler", - L"Beurt opponent", - L"Beurt beest", - L"Beurt militie", - L"Beurt burgers", - L"Player_Plan",// planning turn - L"Client #1",//hayden - L"Client #2",//hayden - L"Client #3",//hayden - L"Client #4",//hayden -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s geraakt in hoofd en verliest een intelligentiepunt!", - L"%s geraakt in de schouder en verliest een handigheidspunt!", - L"%s geraakt in de borst en verliest een krachtspunt!", - L"%s geraakt in het benen en verliest een beweeglijkspunt!", - L"%s geraakt in het hoofd en verliest %d wijsheidspunten!", - L"%s geraakt in de schouder en verliest %d handigheidspunten!", - L"%s geraakt in de borst en verliest %d krachtspunten!", - L"%s geraakt in de benen en verliest %d beweeglijkheidspunten!", - L"Storing!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"Je versterkingen zijn gearriveerd!", - - // In the following four lines, all %s's are merc names - - L"%s herlaad.", - L"%s heeft niet genoeg actiepunten!", - L"%s verricht eerste hulp. (Druk een toets om te stoppen.)", - L"%s en %s verrichten eerste hulp. (Druk een toets om te stoppen.)", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"reliable", - L"unreliable", - L"easy to repair", - L"hard to repair", - L"much damage", - L"low damage", - L"quick fire", - L"slow fire", - L"long range", - L"short range", - L"light", - L"heavy", - L"small", - L"quick salvo", - L"no salvo", - L"large magazine", - L"small magazine", - - // In the following two lines, all %s's are merc names - - L"%s's camouflage is verdwenen.", - L"%s's camouflage is afgespoelt.", - - // The first %s is a merc name and the second %s is an item name - - L"Tweede wapen is leeg!", - L"%s heeft %s gestolen.", - - // The %s is a merc name - - L"%s's wapen vuurt geen salvo.", - - L"Je hebt er al één van die vastgemaakt.", - L"Samen voegen?", - - // Both %s's are item names - - L"Je verbindt %s niet met %s.", - L"Geen", - L"Eject ammo", - L"Toebehoren", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and you gas mask at the same time. - L"%s en %s zijn niet tegelijk te gebruiken.", - - L"Het item dat je aanwijst, kan vastgemaakt worden aan een bepaald item door het in een van de vier uitbreidingssloten te plaatsen.", - L"Het item dat je aanwijst, kan vastgemaakt worden aan een bepaald item door het in een van de vier uitbreidingssloten te plaatsen. (Echter, het item is niet compatibel.)", - L"Er zijn nog vijanden in de sector!", - L"Je moet %s %s nog geven", - L"kogel doorboorde %s in zijn hoofd!", - L"Gevecht verlaten?", - L"Dit samenvoegen is permanent. Verdergaan?", - L"%s heeft meer energie!", - L"%s is uitgegleden!", - L"%s heeft %s niet gepakt!", - L"%s repareert de %s", - L"Stoppen voor ", - L"Overgeven?", - L"Deze persoon weigert je hulp.", - L"Ik denk het NIET!", - L"Chopper van Skyrider gebruiken? Eerst huurlingen TOEWIJZEN aan VOERTUIG/HELIKOPTER.", - L"%s had tijd maar EEN geweer te herladen", - L"Beurt bloodcats", - L"automatic", - L"no full auto", - L"accurate", - L"inaccurate", - L"no semi auto", - L"The enemy has no more items to steal!", - L"The enemy has no item in its hand!", -// TODO.Translate - L"%s's desert camouflage has worn off.", - L"%s's desert camouflage has washed off.", - - L"%s's wood camouflage has worn off.", - L"%s's wood camouflage has washed off.", - - L"%s's urban camouflage has worn off.", - L"%s's urban camouflage has washed off.", - - L"%s's snow camouflage snow has worn off.", - L"%s's snow camouflage has washed off.", - - L"You cannot attach %s to this slot.", - L"The %s will not fit in any open slots.", - L"There's not enough space for this pocket.", //TODO.Translate - - L"%s has repaired the %s as much as possible.", // TODO.Translate - L"%s has repaired %s's %s as much as possible.", - - L"%s has cleaned the %s.", // TODO.Translate - L"%s has cleaned %s's %s.", - - L"Assignment not possible at the moment", // TODO.Translate - L"No militia that can be drilled present.", - - L"%s has fully explored %s.", // TODO.Translate -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracona", - L"Traconian", -#else - L"Arulco", - L"Arulcan", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"Pause", - L"Normal", - L"5 min", - L"30 min", - L"60 min", - L"6 uur", -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"Team 1", - L"Team 2", - L"Team 3", - L"Team 4", - L"Team 5", - L"Team 6", - L"Team 7", - L"Team 8", - L"Team 9", - L"Team 10", - L"Team 11", - L"Team 12", - L"Team 13", - L"Team 14", - L"Team 15", - L"Team 16", - L"Team 17", - L"Team 18", - L"Team 19", - L"Team 20", - L"Dienst", // on active duty - L"Dokter", // administering medical aid - L"Patiënt", // getting medical aid - L"Voertuig", // in a vehicle - L"Onderweg", // in transit - abbreviated form - L"Repareer", // repairing - L"Radio Scan", // scanning for nearby patrols // TODO.Translate - L"Oefenen", // training themselves - L"Militie", // training a town to revolt - L"M.Militia", //training moving militia units // TODO.Translate - L"Trainer", // training a teammate - L"Student", // being trained by someone else - L"Get Item", // get items // TODO.Translate - L"Staff", // operating a strategic facility // TODO.Translate - L"Eat", // eating at a facility (cantina etc.) // TODO.Translate - L"Rest", // Resting at a facility // TODO.Translate - L"Prison", // Flugente: interrogate prisoners - L"Dood", // dead - L"Uitgesc.", // abbreviation for incapacitated - L"POW", // Prisoner of war - captured - L"Kliniek", // patient in a hospital - L"Leeg", // Vehicle is empty - L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate - L"Propag.", // facility: spread propaganda - L"Propag.", // facility: spread propaganda (globally) - L"Rumours", // facility: gather information - L"Propag.", // spread propaganda - L"Rumours", // gather information - L"Command", // militia movement orders - L"Diagnose", // disease diagnosis //TODO.Translate - L"Treat D.", // treat disease among the population - L"Dokter", // administering medical aid - L"Patiënt", // getting medical aid - L"Repareer", // repairing - L"Fortify", // build structures according to external layout // TODO.Translate - L"Train W.", - L"Hide", // TODO.Translate - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", // TODO.Translate - L"Explore", // TODO.Translate - L"Event",// rftr: merc is on a mini event // TODO: translate - L"Mission", // rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"Militie", // the title of the militia box - L"Unassigned", //the number of unassigned militia troops - L"Milities kunnen niet herplaatst worden als er nog vijanden in de buurt zijn!", - L"Some militia were not assigned to a sector. Would you like to disband them?", // TODO.Translate -}; - - -STR16 pMilitiaButtonString[] = -{ - L"Auto", // auto place the militia troops for the player - L"OK", // done placing militia troops - L"Disband", // HEADROCK HAM 3.6: Disband militia // TODO.Translate - L"Unassign All", // move all milita troops to unassigned pool // TODO.Translate -}; - -STR16 pConditionStrings[] = -{ - L"Excellent", //the state of a soldier .. excellent health - L"Good", // good health - L"Fair", // fair health - L"Wounded", // wounded health - L"Tired", // tired - L"Bleeding", // bleeding to death - L"Knocked out", // knocked out - L"Dying", // near death - L"Dead", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"On duty", // set merc on active duty - L"Patient", // set as a patient to receive medical aid - L"Vehicle", // tell merc to enter vehicle - L"Alone", // let the escorted character go off on their own - L"Close", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"Team 1", - L"Team 2", - L"Team 3", - L"Team 4", - L"Team 5", - L"Team 6", - L"Team 7", - L"Team 8", - L"Team 9", - L"Team 10", - L"Team 11", - L"Team 12", - L"Team 13", - L"Team 14", - L"Team 15", - L"Team 16", - L"Team 17", - L"Team 18", - L"Team 19", - L"Team 20", - L"Dienst", // on active duty - L"Dokter", // administering medical aid - L"Patiënt", // getting medical aid - L"Voertuig", // in a vehicle - L"Onderweg", // in transit - abbreviated form - L"Repareer", // repairing - L"Radio Scan", // radio scan // TODO.Translate - L"Oefenen", // training themselves - L"Militie", // training a town to revolt - L"Training Mobile Militia", // TODO.Translate - L"Trainer", // training a teammate - L"Student", // being trained by someone else - L"Get Item", // get items // TODO.Translate - L"Facility Staff", // TODO.Translate - L"Eat", // eating at a facility (cantina etc.) // TODO.Translate - L"Resting at Facility", // TODO.Translate - L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate - L"Dood", // dead - L"Uitgesc.", // abbreviation for incapacitated - L"POW", // Prisoner of war - captured - L"Kliniek", // patient in a hospital - L"Leeg", // Vehicle is empty - L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) - L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda - L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda (globally) - L"Gathering Rumours",// TODO.Translate // facility: gather rumours - L"Spreading Propaganda",// TODO.Translate // spread propaganda - L"Gathering Rumours",// TODO.Translate // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Dokter", // administering medical aid - L"Patiënt", // getting medical aid - L"Repareer", // repairing - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"Team 1", - L"Team 2", - L"Team 3", - L"Team 4", - L"Team 5", - L"Team 6", - L"Team 7", - L"Team 8", - L"Team 9", - L"Team 10", - L"Team 11", - L"Team 12", - L"Team 13", - L"Team 14", - L"Team 15", - L"Team 16", - L"Team 17", - L"Team 18", - L"Team 19", - L"Team 20", - L"Dienst", // on active duty - L"Dokter", // administering medical aid - L"Patiënt", // getting medical aid - L"Voertuig", // in a vehicle - L"Onderweg", // in transit - abbreviated form - L"Repareer", // repairing - L"Radio Scan", // radio scan // TODO.Translate - L"Oefenen", // training themselves - L"Militie", // training a town to revolt - L"Train Mobiles", // TODO.Translate - L"Trainer", // training a teammate - L"Student", // being trained by someone else - L"Get Item", // get items // TODO.Translate - L"Staff Facility", // TODO.Translate - L"Rest at Facility", // TODO.Translate - L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate - L"Dood", // dead - L"Uitgesc.", // abbreviation for incapacitated - L"POW", // Prisoner of war - captured - L"Kliniek", // patient in a hospital - L"Leeg", // Vehicle is empty - L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) - L"Spread Propaganda",// TODO.Translate // facility: spread propaganda - L"Spread Propaganda",// TODO.Translate // facility: spread propaganda (globally) - L"Gather Rumours",// TODO.Translate // facility: gather rumours - L"Spread Propaganda",// TODO.Translate // spread propaganda - L"Gather Rumours",// TODO.Translate // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Dokter", // administering medical aid - L"Patiënt", // getting medical aid - L"Repareer", // repairing - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"Contract Opties:", - L"", // a blank line, required - L"Voor een dag", // offer merc a one day contract extension - L"Voor een week", // 1 week - L"Voor twee weken", // 2 week - L"Ontslag", // end merc's contract - L"Stop", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"POW", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"KRACHT", - L"HANDIGHEID", - L"BEWEEGLIJKHEID", - L"WIJSHEID", - L"TREFZEKERHEID", - L"MEDISCH", - L"TECHNISCH", - L"LEIDERSCHAP", - L"EXPLOSIEVEN", - L"NIVEAU", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Wapen", // the armor rating of the merc - L"Gew.", // the weight the merc is carrying - L"Camo", // the merc's camouflage rating - L"Camouflage:", - L"Protection:", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Bew", // the abbreviated version of : agility - L"Han", // dexterity - L"Kra", // strength - L"Ldr", // leadership - L"Wij", // wisdom - L"Niv", // experience level - L"Tre", // marksmanship skill - L"Tec", // mechanical skill - L"Exp", // explosive skill - L"Med", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Opdracht", // the mercs current assignment - L"Contract", // the contract info about the merc - L"Gezond", // the health level of the current merc - L"Moraal", // the morale of the current merc - L"Cond.", // the condition of the current vehicle - L"Tank", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Oefen", // tell merc to train self - L"Militie", // tell merc to train town - L"Trainer", // tell merc to act as trainer - L"Student", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Schietniveau:", // the allowable rate of fire for a merc who is guarding - L" Agressief vuren", // the merc can be aggressive in their choice of fire rates - L" Spaar Munitie", // conserve ammo - L" Afzien van Vuren", // fire only when the merc needs to - L"Andere Opties:", // other options available to merc - L" Kan Vluchten", // merc can retreat - L" Kan Dekking Zoeken", // merc is allowed to seek cover - L" Kan Team Helpen", // merc can assist teammates - L"OK", // done with this menu - L"Stop", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"Schietniveau:", - L" *Agressief vuren*", - L" *Spaar Munitie*", - L" *Afzien van Vuren*", - L"Andere Opties:", - L" *Kan Vluchten*", - L" *Kan Dekking Zoeken*", - L" *Kan Team Helpen*", - L"OK", - L"Stop", -}; - -STR16 pAssignMenuStrings[] = -{ - L"On duty", // merc is on active duty - L"Doctor", // the merc is acting as a doctor - L"Disease", // merc is a doctor doing diagnosis TODO.Translate - L"Patient", // the merc is receiving medical attention - L"Vehicle", // the merc is in a vehicle - L"Repair", // the merc is repairing items - L"Radio Scan", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"Snitch", // TODO.Translate // anv: snitch actions - L"Train", // the merc is training - L"Militia", // all things militia - L"Get Item", // get items // TODO.Translate - L"Fortify", // fortify sector // TODO.Translate - L"Intel", // covert assignments // TODO.Translate - L"Administer", // TODO.Translate - L"Explore", // TODO.Translate - L"Facility", // the merc is using/staffing a facility // TODO.Translate - L"Stop", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"Attack", // set militia to aggresive - L"Hold Position", // set militia to stationary - L"Retreat", // retreat militia - L"Come to me", // retreat militia - L"Get down", // retreat militia - L"Crouch", // TODO.Translate - L"Take cover", - L"Move to", // TODO.Translate - L"All: Attack", - L"All: Hold Position", - L"All: Retreat", - L"All: Come to me", - L"All: Spread out", - L"All: Get down", - L"All: Crouch", // TODO.Translate - L"All: Take cover", - //L"All: Find items", - L"Cancel", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = // TODO.Translate -{ - // radio operator - L"Artillery Strike", - L"Jam communications", - L"Scan frequencies", - L"Eavesdrop", - L"Call reinforcements", - L"Switch off radio set", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", // TODO.Translate - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Spotter", // TODO.Translate - L"Focus", - L"Drag", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Order an artillery strike from sector...", - L"Fill all radio frequencies with white noise, making communications impossible.", - L"Scan for jamming signals.", - L"Use your radio equipment to continously listen for enemy movement.", - L"Call in reinforcements from neighbouring sectors.", - L"Turn off radio set.", // TODO.Translate - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", // TODO.Translate - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Observe an area, granting allied snipers a bonus to cth on anything you see.", // TODO.Translate - L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Requires:\n", - L" - %d AP\n", - L" - %s\n", - L" - %s or higher\n", - L" - %s or higher or\n", - L" - %d minutes to be ready\n", - L" - mortar positions in neighbouring sectors\n", - L" - %s |o|r %s |a|n|d %s or %s or higher\n", - L" - possession by a demon", - L" - a gun-related trait\n", // TODO.Translate - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = // TODO.Translate -{ - L"Militia", - L"Other Squads", - L"Cancel", - L"%d Militia", - L"All Militia", - - L"More", - L"Corpse: %s", // TODO.Translate -}; - -// TODO.Translate -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Team Informant", - L"Town Assignment", - L"Cancel", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Discuss snitch's behaviour towards his teammates.", - L"Take an assignment in this sector.", - L"Cancel", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Report complaints", - L"Don't report", - L"Prevent misbehaviour", - L"Ignore misbehaviour", - L"Cancel", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Report any complaints you hear from other mercs to your commander.", - L"Don't report anything.", - L"Try to stop other mercs from getting wasted and scrounging.", - L"Don't care what other mercs do.", - L"Cancel", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Spread propaganda", - L"Gather rumours", - L"Cancel", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", - L"Keep an ear to the ground on any rumours about enemy forces activity.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = // TODO.Translate -{ - L"Interrogate admins", - L"Interrogate troops", - L"Interrogate elites", - L"Interrogate officers", - L"Interrogate generals", - L"Interrogate civilians", - L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s was exposed as a snitch but managed to notice it and get out alive.", - L"%s was exposed as a snitch but managed to defuse situation and get out alive.", - L"%s was exposed as a snitch but managed to avoid assassination attempt.", - L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", - - L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", - L"%s was exposed as a snitch and almost beaten to death before guards saved him.", - L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", - L"%s was exposed as a snitch and strangled to death before guards saved him.", - - L"%s was exposed as a snitch and drowned in toilet by other inmates.", - L"%s was exposed as a snitch and beaten to death by other inmates.", - L"%s was exposed as a snitch and shanked to death by other inmates.", - L"%s was exposed as a snitch and strangled to death by other inmates.", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s heard rumours about enemy activity in %d sectors.", - -}; -// /TODO.Translate - -STR16 pRemoveMercStrings[] = -{ - L"Verw.Huurl.", // remove dead merc from current team - L"Stop", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Gezondheid", - L"Lenigheid", - L"Behendigheid", - L"Kracht", - L"Leiderschap", - L"Scherpschutterskunst", - L"Mechanisch", - L"Explosief", - L"Medisch", - L"Annuleren", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Oefenen", // train yourself - L"Train workers", // TODO.Translate - L"Trainer", // train your teammates - L"Student", // be trained by an instructor - L"Stop", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"Team 1", - L"Team 2", - L"Team 3", - L"Team 4", - L"Team 5", - L"Team 6", - L"Team 7", - L"Team 8", - L"Team 9", - L"Team 10", - L"Team 11", - L"Team 12", - L"Team 13", - L"Team 14", - L"Team 15", - L"Team 16", - L"Team 17", - L"Team 18", - L"Team 19", - L"Team 20", - L"Stop", -}; - -STR16 pPersonnelTitle[] = -{ - L"Dossiers", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Gezondheid: ", // health of merc - L"Beweeglijkheid: ", - L"Handigheid: ", - L"Kracht: ", - L"Leiderschap; ", - L"Wijsheid: ", - L"Erv. Niv.: ", // experience level - L"Trefzekerheid: ", - L"Techniek: ", - L"Explosieven: ", - L"Medisch: ", - L"Med. Kosten: ", // amount of medical deposit put down on the merc - L"Rest Contract: ", // cost of current contract - L"Doden: ", // number of kills by merc - L"Hulp: ", // number of assists on kills by merc - L"Dag. Kosten:", // daily cost of merc - L"Huidige Tot. Kosten:", // total cost of merc - L"Huidige Tot. Service:", // total service rendered by merc - L"Salaris Tegoed:", // amount left on MERC merc to be paid - L"Trefzekerheid:", // percentage of shots that hit target - L"Gevechten:", // number of battles fought - L"Keren Gewond:", // number of times merc has been wounded - L"Vaardigheden:", - L"Vaardigheden:", - L"Achievements:", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"Elite soldiers: %d\n", - L"Regular soldiers: %d\n", - L"Admin soldiers: %d\n", - L"Hostile groups: %d\n", - L"Creatures: %d\n", - L"Tanks: %d\n", - L"Others: %d\n", - - L"Mercs: %d\n", - L"Militia: %d\n", - L"Others: %d\n", - - L"Shots fired: %d\n", - L"Missiles fired: %d\n", - L"Grenades thrown: %d\n", - L"Knives thrown: %d\n", - L"Blade attacks: %d\n", - L"Hand to hand attacks: %d\n", - L"Successful hits: %d\n", - - L"Locks picked: %d\n", - L"Locks breached: %d\n", - L"Traps removed: %d\n", - L"Explosives detonated: %d\n", - L"Items repaired: %d\n", - L"Items combined: %d\n", - L"Items stolen: %d\n", - L"Militia trained: %d\n", - L"Mercs bandaged: %d\n", - L"Surgeries made: %d\n", - L"Persons met: %d\n", - L"Sectors discovered: %d\n", - L"Ambushes prevented: %d\n", - L"Quests handled: %d\n", - - L"Tactical battles: %d\n", - L"Autoresolve battles: %d\n", - L"Times retreated: %d\n", - L"Ambushes experienced: %d\n", - L"Hardest battle: %d Enemies\n", - - L"Shot: %d\n", - L"Stabbed: %d\n", - L"Punched: %d\n", - L"Blasted: %d\n", - L"Suffered damages in facilities: %d\n", - L"Surgeries undergone: %d\n", - L"Facility accidents: %d\n", - - L"Character:", - L"Weakness:", - - L"Attitudes:", // WANNE: For old traits display instead of "Character:"! - - L"Zombies: %d\n", // TODO.Translate - - L"Background:", // TODO.Translate - L"Personality:", // TODO.Translate - - L"Prisoners interrogated: %d\n", // TODO.Translate - L"Diseases caught: %d\n", - L"Total damage received: %d\n", - L"Total damage caused: %d\n", - L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - L"No Skill", - L"Forceer slot", - L"Man-tot-man", - L"Elektronica", - L"Nachtops", - L"Werpen", - L"Lesgeven", - L"Zware Wapens", - L"Auto Wapens", - L"Sluipen", - L"Handig", - L"Dief", - L"Vechtkunsten", - L"Mesworp", - L"Sniper", - L"Camouflaged", - L"(Expert)", -}; - -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"No Skill", // 0 - L"Auto Weapons", // 1 - L"Heavy Weapons", - L"Marksman", - L"Hunter", - L"Gunslinger", // 5 - L"Hand to Hand", - L"Deputy", - L"Technician", - L"Paramedic", // 9 - // Minor traits - L"Ambidextrous", // 10 - L"Melee", - L"Throwing", - L"Night Ops", - L"Stealthy", - L"Athletics", // 15 - L"Bodybuilding", - L"Demolitions", - L"Teaching", - L"Scouting", // 19 - // covert ops is a major trait that was added later - L"Covert Ops", // 20 - // new minor traits - L"Radio Operator", // 21 - L"Snitch", // 22 - L"Survival", - - // second names for major skills - L"Machinegunner", // 24 - L"Bombardier", - L"Sniper", - L"Ranger", - L"Gunfighter", - L"Martial Arts", - L"Squadleader", - L"Engineer", - L"Doctor", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 38 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"Spy", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch (minor trait) - L"Placeholder", // for survival (minor trait) - L"More...", // 47 - L"Intel", // for INTEL // TODO.Translate - L"Disguise", // for DISGUISE - L"various", // for VARIOUSSKILLS - L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate -}; -////////////////////////////////////////////////////////// - - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"|Staan/Lopen", - L"Hurken/Gehurkt lopen (|C)", - L"Staan/|Rennen", - L"Liggen/Kruipen (|P)", - L"Kijk (|L)", - L"Actie", - L"Praat", - L"Bekijk (|C|t|r|l)", - - // Pop up door menu - L"Handm. openen", - L"Zoek boobytraps", - L"Forceer", - L"Met geweld", - L"Verwijder boobytrap", - L"Sluiten", - L"Maak open", - L"Gebruik explosief", - L"Gebruik breekijzer", - L"Stoppen (|E|s|c)", - L"Stop", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"geen val", - L"een explosie", - L"een elektrische val", - L"alarm", - L"stil alarm", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"dag", - L"week", - L"twee weken", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Selecteer Karakter", - L"Contracteer huurling", - L"Plan Route", - L"Huurling |Contract", - L"Verwijder Huurling", - L"Slaap", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"VAAG", - L"ZEKER", - L"HARD", - L"ERG HARD", -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"ONBEKEND", - L"geluid van BEWEGING", - L"GEKRAAK", - L"PLONZEN", - L"INSLAG", - L"SCHOT", - L"EXPLOSIE", - L"GEGIL", - L"INSLAG", - L"INSLAG", - L"BARSTEN", - L"DREUN", -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"het NOORDOOSTEN", - L"het OOSTEN", - L"het ZUIDOOSTEN", - L"het ZUIDEN", - L"het ZUIDWESTEN", - L"het WESTEN", - L"het NOORDWESTEN", - L"het NOORDEN", -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"Stad", - L"Weg", - L"Vlaktes", - L"Woestijn", - L"Bossen", - L"Woud", - L"Moeras", - L"Water", - L"Heuvels", - L"Onbegaanbaar", - L"Rivier", //river from north to south - L"Rivier", //river from east to west - L"Buitenland", - //NONE of the following are used for directional travel, just for the sector description. - L"Tropisch", - L"Landbouwgrond", - L"Vlaktes, weg", - L"Bossen, weg", - L"Boerderij, weg", - L"Tropisch, weg", - L"Woud, weg", - L"Kustlijn", - L"Bergen, weg", - L"Kust-, weg", - L"Woestijn, weg", - L"Moeras, weg", - L"Bossen, SAM-stelling", - L"Woestijn, SAM-stelling", - L"Tropisch, SAM-stelling", - L"Meduna, SAM-stelling", - - //These are descriptions for special sectors - L"Cambria Ziekenhuis", - L"Drassen Vliegveld", - L"Meduna Vliegveld", - L"SAM-stelling", - L"Refuel site", // TODO.Translate - L"Schuilplaats Rebellen", //The rebel base underground in sector A10 - L"Tixa Kerker", //The basement of the Tixa Prison (J9) - L"Hol Beest", //Any mine sector with creatures in it - L"Orta Basis", //The basement of Orta (K4) - L"Tunnel", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Schuilplaats", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s zijn ontdekt in sector %c%d en een ander team arriveert binnenkort.", //STR_DETECTED_SINGULAR - L"%s zijn ontdekt in sector %c%d en andere teams arriveren binnenkort.", //STR_DETECTED_PLURAL - L"Wil je een gezamenlijke aankomst coördineren?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"De vijand geeft je de kans om je over te geven.", //STR_ENEMY_SURRENDER_OFFER - L"De vijand heeft je overgebleven bewusteloze huurlingen gevangen.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Vluchten", //The retreat button //STR_AR_RETREAT_BUTTON - L"OK", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"VERDEDIGEN", //STR_AR_DEFEND_HEADER - L"AANVALLEN", //STR_AR_ATTACK_HEADER - L"ONTDEKKEN", //STR_AR_ENCOUNTER_HEADER - L"Sector", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"VICTORIE!", //STR_AR_OVER_VICTORY - L"NEDERLAAG!", //STR_AR_OVER_DEFEAT - L"OVERGEGEVEN!", //STR_AR_OVER_SURRENDERED - L"GEVANGEN!", //STR_AR_OVER_CAPTURED - L"GEVLUCHT!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Militie", //STR_AR_MILITIA_NAME, - L"Elite", //STR_AR_ELITE_NAME, - L"Troep", //STR_AR_TROOP_NAME, - L"Admin", //STR_AR_ADMINISTRATOR_NAME, - L"Wezen", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Tijd verstreken", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"GEVLUCHT", //STR_AR_MERC_RETREATED, - L"VLUCHTEN", //STR_AR_MERC_RETREATING, - L"VLUCHT", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Autom. Opl.", //!!! 1 //STR_PB_AUTORESOLVE_BTN, - L"Naar Sector", //STR_PB_GOTOSECTOR_BTN, - L"Terug- trekken", //!!! 2 //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"VIJAND ONTDEKT", //STR_PB_ENEMYENCOUNTER_HEADER, - L"INVASIE VIJAND", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"HINDERLAAG VIJAND", //STR_PB_ENEMYAMBUSH_HEADER - L"BINNENGAAN VIJANDIGE SECTOR", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"AANVAL BEEST", //STR_PB_CREATUREATTACK_HEADER - L"BLOODCAT VAL", //STR_PB_BLOODCATAMBUSH_HEADER - L"BINNENGAAN HOL BLOODCAT", //STR_PB_ENTERINGBLOODCATLAIR_HEADER - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Locatie", - L"Vijanden", - L"Huurlingen", - L"Milities", - L"Beesten", - L"Bloodcats", - L"Sector", - L"Geen", //If there are no uninvolved mercs in this fight. - L"NVT", //Acronym of Not Applicable - L"d", //One letter abbreviation of day - L"u", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Weggaan", - L"Verspreid", - L"Groeperen", - L"OK", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"Maakt posities van huurlingen vrij en\nmaakt handmatig herinvoer mogelijk. (|C)", - L"Ver|spreidt willekeurig je huurlingen\nelke keer als je de toets indrukt.", - L"Hiermee is het mogelijk de huurlingen te |groeperen.", - L"Druk op deze toets als je klaar bent met\nhet positioneren van je huurlingen. (|E|n|t|e|r)", - L"Je moet al je huurlingen positioneren\nvoor je het gevecht kunt starten.", - - //Various strings (translate word for word) - - L"Sector", - L"Kies posities binnenkomst", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"Ziet er hier niet goed uit. Het is onbegaanbaar. Probeer een andere locatie.", - L"Plaats je huurlingen in de gemarkeerde sectie van de kaart.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"is gearriveerd in sector", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"Lost het gevecht |Automatisch\nop zonder de kaart te laden.", - L"Automatisch oplossen niet\nmogelijk als de speler aanvalt.", - L"Ga sector binnen om tegen\nde vijand te strijden. (|E)", - L"T|rek groep terug en ga naar de vorige sector.", //singular version - L"T|rek alle groepen terug en\nga naar hun vorige sectors.", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"Vijanden vallen je militie aan in sector %c%d.", - //%c%d is the sector -- ex: A9 - L"Beesten vallen je militie aan in sector %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Beesten vallen aan en doden %d burgers in sector %s.", - //%s is the sector location -- ex: A9: Omerta - L"Vijand valt je huurlingen aan in sector %s. Geen enkele huurling kan vechten!", - //%s is the sector location -- ex: A9: Omerta - L"Beesten vallen je huurlingen aan in sector %s. Geen enkele huurling kan vechten!", - - // Flugente: militia movement forbidden due to limited roaming // TODO.Translate - L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", - L"War room isn't staffed - militia move aborted!", - - L"Robot", //STR_AR_ROBOT_NAME, TODO: translate - L"Tank", //STR_AR_TANK_NAME, - L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate - - L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", // TODO.Translate - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"Dag", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"Sector gevonden:", - L"Dag gevonden:", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"Status:", - L"Gewicht:", - L"AP Costs", - L"Afst:", // Range - L"Sch:", // Damage - L"Munitie:", // Number of bullets left in a magazine - L"AP:", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Accuracy:", //9 - L"Range:", //10 - L"Damage:", //11 - L"Weight:", //12 - L"Stun Damage:",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - L"Attachments:", //14 // TODO.Translate - L"AUTO/5:", //15 - L"Remaining ammo:", //16 // TODO.Translate - - // TODO.Translate - L"Default:", //17 //WarmSteel - So we can also display default attachments - L"Dirt:", // 18 //added by Flugente // TODO.Translate - L"Space:", // 19 //space left on Molle items // TODO.Translate - L"Spread Pattern:", // 20 // TODO.Translate - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - // TODO.Translate - L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", - L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", - L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", - L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", - L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", - L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", - L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", - L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", - L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"", //12 - L"APs to ready", - L"APs to fire Single", - L"APs to fire Burst", - L"APs to fire Auto", - L"APs to Reload", - L"APs to Reload Manually", - L"Burst Penalty (Lower is better)", //19 - L"Bipod Modifier", - L"Autofire shots per 5 AP", - L"Autofire Penalty (Lower is better)", - L"Burst/Auto Penalty (Lower is better)", //23 - L"APs to Throw", - L"APs to Launch", - L"APs to Stab", - L"No Single Shot!", - L"No Burst Mode!", - L"No Auto Mode!", - L"APs to Bash", - L"", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Item Size Modifier (Lower is better)", // 0 - L"Reliability Modifier", - L"Loudness Modifier (Lower is better)", - L"Hides Muzzle Flash", - L"Bipod Modifier", - L"Range Modifier", // 5 - L"To-Hit Modifier", - L"Best Laser Range", - L"Aiming Bonus Modifier", - L"Burst Size Modifier", - L"Burst Penalty Modifier (Higher is better)", // 10 - L"Auto-Fire Penalty Modifier (Higher is better)", - L"AP Modifier", - L"AP to Burst Modifier (Lower is better)", - L"AP to Auto-Fire Modifier (Lower is better)", - L"AP to Ready Modifier (Lower is better)", // 15 - L"AP to Reload Modifier (Lower is better)", - L"Magazine Size Modifier", - L"AP to Attack Modifier (Lower is better)", - L"Damage Modifier", - L"Melee Damage Modifier", // 20 - L"Woodland Camo", - L"Urban Camo", - L"Desert Camo", - L"Snow Camo", - L"Stealth Modifier", // 25 - L"Hearing Range Modifier", - L"Vision Range Modifier", - L"Day Vision Range Modifier", - L"Night Vision Range Modifier", - L"Bright Light Vision Range Modifier", //30 - L"Cave Vision Range Modifier", - L"Tunnel Vision Percentage (Lower is better)", - L"Minimum Range for Aiming Bonus", - L"Hold |C|t|r|l to compare items", // item compare help text - L"Equipment weight: %4.1f kg", // 35 // TODO.Translate -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"In ", - L"PERFECT", - L"EXCELLENT", - L"GOOD", - L"FAIR", - L"POOR", - L"BAD", - L"TERRIBLE", - L" condition." -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Bedrag", - L"Restbedrag:", //this is the overall balance - L"Bedrag", - L"Splitsen:", // the amount he wants to separate from the overall balance to get two piles of money - - L"Huidig", - L"Saldo:", - L"Bedrag", - L"naar Opnemen:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"STERVEND", // >= 0 - L"KRITIEK", // >= 15 - L"SLECHT", // >= 30 - L"GEWOND", // >= 45 - L"GEZOND", // >= 60 - L"STERK", // >= 75 - L"EXCELLENT", // >= 90 - L"CAPTURED", // added by Flugente TODO.Translate -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"$1000", - L"$100", - L"$10", - L"OK", - L"Splitsen", - L"Opnemen", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"Voor:", -}; - -CHAR16 gzConsLabel[10] = -{ - L"Tegen:", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Wat?", //meaning "Repeat yourself" - L"Aardig", //approach in a friendly - L"Direct", //approach directly - let's get down to business - L"Dreigen", //approach threateningly - talk now, or I'll blow your face off - L"Geef", - L"Rekruut", //recruit -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Koop/Verkoop", //Buy/Sell - L"Koop", //Buy - L"Verkoop", //Sell - L"Repareer", //Repair -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"OK", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"Eldorado", - L"Hummer", // a hummer jeep/truck -- military vehicle - L"Koeltruck", // Icecream Truck - L"Jeep", - L"Tank", - L"Helikopter", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Eldor.", - L"Hummer", // the HMVV - L"Truck", - L"Jeep", - L"Tank", - L"Heli", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Eldorado", - L"Hummer", //a military jeep. This is a brand name. - L"Truck", // Ice cream truck - L"Jeep", - L"Tank", - L"Heli", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"You cannot shoot from this seat.", // TODO.Translate - L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Luchtaanval", - L"Automatisch EHBO toepassen?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s ziet dat er items missen van de lading.", - - // The %s is a string from pDoorTrapStrings - - L"Het slot heeft %s.", - L"Er is geen slot.", - L"Gelukt!", - L"Mislukt.", - L"Gelukt!", - L"Mislukt.", - L"Geen boobytrap op het slot.", - L"Gelukt!", - // The %s is a merc name - L"%s heeft niet de juiste sleutel.", - L"Val weggehaald van slot.", - L"Slot heeft geen boobytrap.", - L"Op slot.", - L"DEUR", - L"VAL", - L"OP SLOT", - L"OPEN", - L"KAPOT", - L"Hier zit een schakelaar. Activeren?", - L"Boobytrap ontmantelen?", - L"Vorige...", - L"Volgende...", - L"Meer...", - - // In the next 2 strings, %s is an item name - - L"%s is op de grond geplaatst.", - L"%s is gegeven aan %s.", - - // In the next 2 strings, %s is a name - - L"%s is helemaal betaald.", - L"%s heeft tegoed nog %d.", - L"Kies detonatie frequentie:", //in this case, frequency refers to a radio signal - L"Aantal beurten tot ontploffing:", //how much time, in turns, until the bomb blows - L"Stel frequentie in van ontsteking:", //in this case, frequency refers to a radio signal - L"Boobytrap ontmantelen?", - L"Blauwe vlag weghalen?", - L"Blauwe vlag hier neerzetten?", - L"Laatste beurt", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"Zeker weten dat je %s wil aanvallen?", - L"Ah, voertuigen kunnen plaats niet veranderen.", - L"De robot kan niet van plaats veranderen.", - - // In the next 3 strings, %s is a name - - L"%s kan niet naar die plaats gaan.", - L"%s kan hier geen EHBO krijgen.", - L"%s heeft geen EHBO nodig.", - L"Kan daar niet heen.", - L"Je team is vol. Geen ruimte voor rekruut.", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s is gerekruteerd.", - - // Here %s is a name and %d is a number - - L"%s ontvangt $%d.", - - // In the next string, %s is a name - - L"%s begeleiden?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"%s inhuren voor %s per dag?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"Wil je vechten?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"%s kopen voor %s?", - - // In the next string, %s is a name - - L"%s wordt begeleid door team %d.", - - // These messages are displayed during play to alert the player to a particular situation - - L"GEBLOKKEERD", //weapon is jammed. - L"Robot heeft %s kal. munitie nodig.", //Robot is out of ammo - L"Hier gooien? Kan niet.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Sluipmodus (|Z)", // L"Stealth Mode (|Z)", - L"Landkaart (|M)", // L"|Map Screen", - L"OK (Ein|de)", // L"|Done (End Turn)", - L"Praat", // L"Talk", - L"Stil", // L"Mute", - L"Omhoog (|P|g|U|p)", // L"Stance Up (|P|g|U|p)", - L"Cursor Niveau (|T|a|b)", // L"Cursor Level (|T|a|b)", - L"Klim / Spring", // L"Climb / Jump", - L"Omlaag (|P|g|D|n)", // L"Stance Down (|P|g|D|n)", - L"Bekijk (|C|t|r|l)", // L"Examine (|C|t|r|l)", - L"Vorige huurling", // L"Previous Merc", - L"Volgende huurling (|S|p|a|c|e)", // L"Next Merc (|S|p|a|c|e)", - L"|Opties", // L"|Options", - L"Salvo's (|B)", // L"|Burst Mode", - L"Kijk/draai (|L)", // L"|Look/Turn", - L"Gezond: %d/%d\nKracht: %d/%d\nMoraal: %s", // L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s", - L"Hé?", //this means "what?" - L"Door", //an abbrieviation for "Continued" - L"%s is praat weer.", // L"Mute off for %s.", - L"%s is stil.", // L"Mute on for %s.", - L"Gezond: %d/%d\nBrandst: %d/%d", // L"Health: %d/%d\nFuel: %d/%d", - L"Stap uit voertuig", // L"Exit Vehicle" , - L"Wissel Team ( |S|h|i|f|t |S|p|a|c|e )", // L"Change Squad ( |S|h|i|f|t |S|p|a|c|e )", - L"Rijden", // L"Drive", - L"Nvt", //this is an acronym for "Not Applicable." - L"Actie ( Man-tot-man )", // L"Use ( Hand To Hand )", - L"Actie ( Firearm )", // L"Use ( Firearm )", - L"Actie ( Mes )", // L"Use ( Blade )", - L"Actie ( Explosieven )", // L"Use ( Explosive )", - L"Actie ( EHBO )", // L"Use ( Medkit )", - L"(Vang)", // L"(Catch)", - L"(Herlaad)", // L"(Reload)", - L"(Geef)", // L"(Give)", - L"%s is afgezet.", // L"%s has been set off.", - L"%s is gearriveerd.", // L"%s has arrived.", - L"%s heeft geen Actie Punten.", // L"%s ran out of Action Points.", - L"%s is niet beschikbaar.", // L"%s isn't available.", - L"%s zit onder het verband.", // L"%s is all bandaged.", - L"Verband van %s is op.", // L"%s is out of bandages.", - L"Vijand in de sector!", // L"Enemy in sector!", - L"Geen vijanden in zicht.", // L"No enemies in sight.", - L"Niet genoeg Actie Punten.", // L"Not enough Action Points.", - L"Niemand gebruikt afstandb.", // L"Nobody's using the remote.", - L"Magazijn leeg door salvovuur!", // L"Burst fire emptied the clip!", - L"SOLDAAT", // L"SOLDIER", - L"CREPITUS", // L"CREPITUS", - L"MILITIE", // L"MILITIA", - L"BURGER", // L"CIVILIAN", - L"ZOMBIE", // TODO.Translate - L"PRISONER",// TODO.Translate - L"Verlaten Sector", // L"Exiting Sector", - L"OK", - L"Stoppen", // L"Cancel", - L"Huurling gesel.", // L"Selected Merc", - L"Alle huurl. in team", // L"All Mercs in Squad", - L"Naar Sector", // L"Go to Sector", - L"Naar Landk.", // L"Go to Map", - L"Vanaf deze kant kun je de sector niet verlaten.", // L"You can't leave the sector from this side.", - L"You can't leave in turn based mode.", // TODO.Translate - L"%s is te ver weg.", // L"%s is too far away.", - L"Verwijder Boomtoppen", // L"Removing Treetops", - L"Tonen Boomtoppen", // L"Showing Treetops", - L"KRAAI", //Crow, as in the large black bird - L"NEK", - L"HOOFD", - L"TORSO", - L"BENEN", - L"De Koningin vertellen wat ze wil weten?", // L"Tell the Queen what she wants to know?", - L"Vingerafdruk-ID nodig", // L"Fingerprint ID aquired", - L"Vingerafdruk-ID ongeldig. Wapen funct. niet", // L"Invalid fingerprint ID. Weapon non-functional", - L"Doelwit nodig", // L"Target aquired", - L"Pad geblokkeerd", // L"Path Blocked", - L"Geld Storten/Opnemen", //Help text over the $ button on the Single Merc Panel ("Deposit/Withdraw Money") - L"Niemand heeft EHBO nodig.", // L"No one needs first aid.", - L"Vast.", // Short form of JAMMED, for small inv slots - L"Kan daar niet heen.", // used ( now ) for when we click on a cliff - L"Pad is geblokkeerd. Wil je met deze persoon van plaats wisselen?", - L"Persoon weigert weg te gaan.", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Ben je het eens met %s?", // L"Do you agree to pay %s?", - L"Wil je kostenloze medische hulp?", // L"Accept free medical treatment?", - L"Wil je trouwen met %s?", // L"Agree to marry %s?", Daryl - L"Slot Ring Paneel", // L"Key Ring Panel", - L"Dat kan niet met een EPC.", // L"You cannot do that with an EPC.", - L"%s sparen?", // L"Spare Krott?", Krott - L"Buiten wapenbereik", // L"Out of weapon range", - L"Mijnwerker", // L"Miner", - L"Voertuig kan alleen tussen sectors reizen", // L"Vehicle can only travel between sectors", - L"Nu geen Auto-EHBO mogelijk", // L"Can't autobandage right now", - L"Pad Geblokkeerd voor %s", // L"Path Blocked for %s", - L"Je huurlingen, gevangen door %s's leger, zitten hier opgesloten!", //Deidranna - L"Slot geraakt", // L"Lock hit", - L"Slot vernielt", // L"Lock destroyed", - L"Iemand anders probeert deze deur te gebruiken.", // L"Somebody else is trying to use this door.", - L"Gezondheid: %d/%d\nBrandstof: %d/%d", //L"Health: %d/%d\nFuel: %d/%d", - L"%s kan %s niet zien.", // Cannot see person trying to talk to - L"Attachment removed", - L"Kan niet een ander voertuig bereiken aangezien u reeds 2 hebt", - - // added by Flugente for defusing/setting up trap networks // TODO.Translate - L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", - L"Set defusing frequency:", - L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", - L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", - L"Select tripwire hierarchy (1 - 4) and network (A - D):", - - // added by Flugente to display food status - L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"What do you want to do?", - L"Fill canteens", - L"Clean guns (Merc)", - L"Clean guns (Team)", - L"Take off clothes", - L"Lose disguise", - L"Militia inspection", - L"Militia restock", - L"Test disguise", - L"unused", - - // added by Flugente: decide what to do with the corpses - L"What do you want to do with the body?", - L"Decapitate", - L"Gut", - L"Take Clothes", - L"Take Body", - - // Flugente: weapon cleaning - L"%s cleaned %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", // TODO.Translate - L"Field interrogation", - L"Where do you want to send the %d prisoners?", // TODO.Translate - L"Let them go", - L"What do you want to do?", - L"Demand surrender", - L"Offer surrender", - L"Distract", // TODO.Translate - L"Talk", - L"Recruit Turncoat", // TODO: translate - - // TODO.Translate - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Disarm trap", - L"Inspect trap", - L"Remove blue flag", - L"Blow up!", - L"Activate tripwire", - L"Deactivate tripwire", - L"Reveal tripwire", - L"No detonator or remote detonator found!", - L"This bomb is already armed!", - L"Safe", - L"Mostly safe", - L"Risky", - L"Dangerous", - L"High danger!", - - L"Mask", // TODO.Translate - L"NVG", - L"Item", - - L"This feature works only with New Inventory System", - L"No item in your main hand", - L"Nowhere to place item from main hand", - L"No defined item for this quick slot", - L"No free hand for new item", - L"Item not found", - L"Cannot take item to main hand", - - L"Attempting to bandage travelling mercs...", //TODO.Translate - - L"Improve gear", - L"%s changed %s for superior version", - L"%s picked up %s", // TODO.Translate - - L"%s has stopped chatting with %s", // TODO.Translate -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"Als aangekruist, dan wordt de aanliggende sector meteen geladen.", - L"Als aangekruist, dan worden de huurlingen automatisch op de\nkaart geplaatst rekening houdend met reistijden.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"Deze sector is door de vijand bezet en huurlingen kun je niet achterlaten.\nJe moet deze situatie oplossen voor het laden van andere sectors.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"Als de overgebleven huurlingen uit deze sector trekken,\nwordt de aanliggende sector onmiddellijk geladen.", - L"Als de overgebleven huurlingen uit deze sector trekken,\nwordt je automatisch in het landkaartscherm geplaatst,\nrekening houdend met de reistijd van je huurlingen.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s moet geëscorteerd worden door jouw huurlingen\nen kan de sector niet alleen verlaten.", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s kan de sector niet alleen verlaten omdat hij %s escorteert.", //male singular - L"%s kan de sector niet alleen verlaten omdat zij %s escorteert.", //female singular - L"%s kan de sector niet alleen verlaten omdat hij meerdere karakters escorteert.", //male plural - L"%s kan de sector niet alleen verlaten omdat zij meerdere karakters escorteert.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"Al je huurlingen moeten in de buurt zijn om het team te laten reizen.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"Als aangekruist, dan zal %s alleen verder reizen\nen automatisch bij een uniek team gevoegd worden.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"Als aangekruist, dan zal je geselecteerde\nteam verder reizen, de sector verlatend.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s wordt geëscorteerd door jouw huurlingen en kan de sector niet alleen verlaten. Je huurlingen moeten eerst in de buurt zijn.", -}; - - - -STR16 pRepairStrings[] = -{ - L"Items", // tell merc to repair items in inventory - L"SAM-Stelling", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Stop", // cancel this menu - L"Robot", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"verliest", // the merc has lost a statistic - L"krijgt", // the merc has gained a statistic - L"punt voor", // singular - L"punten voor", // plural - L"niveau voor", // singular - L"niveaus voor", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"gezondheid.", - L"beweeglijkheid.", - L"handigheid.", - L"wijsheid.", - L"medisch kunnen.", - L"explosieven.", - L"technisch kunnen.", - L"trefzekerheid.", - L"ervaring.", - L"kracht.", - L"leiderschap.", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"Totale Afstand: ", // total distance for helicopter to travel - L" Veilig: ", // distance to travel to destination - L" Onveilig:", // distance to return from destination to airport - L"Totale Kosten: ", // total cost of trip by helicopter - L"Aank: ", // ETA is an acronym for "estimated time of arrival" - L"Helikopter heeft weinig brandstof en moet landen in vijandelijk gebied!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Passagiers: ", - L"Selecteer Skyrider of Aanvoer Drop-plaats?", // L"Select Skyrider or the Arrivals Drop-off?", - L"Skyrider", - L"Aanvoer", // L"Arrivals", - L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> // TODO.Translate - L"Helicopter will now return straight to base, do you want to drop down passengers before?", // TODO.Translate - L"Remaining Fuel:", // TODO.Translate - L"Dist. To Refuel Site:", // TODO.Translate -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", - L"Helicopter is currently disassembled. Wait until repairs are finished.", - L"Repairs completed. Helicopter is available again.", - L"Helicopter is fully refueled.", - - L"Helicopter has exceeded maximum range!", // TODO.Translate -}; - -STR16 sMapLevelString[] = -{ - L"Subniv.:", // what level below the ground is the player viewing in mapscreen ("Sublevel:") -}; - -STR16 gsLoyalString[] = -{ - L"Loyaal", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"kan geen reisorders ondergronds ontvangen.", // L"can't get travel orders underground.", -}; - -STR16 gsTimeStrings[] = -{ - L"u", // hours abbreviation - L"m", // minutes abbreviation - L"s", // seconds abbreviation - L"d", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"Geen", - L"Ziekenhuis", - L"Factory", // TODO.Translate - L"Gevangenis", - L"Krijgsmacht", - L"Vliegveld", - L"Schietterrein", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"Inventaris", - L"OK", - L"Repair", // TODO.Translate - L"Factories", // TODO.Translate -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"Grootte", // 0 // size of the town in sectors - L"", // blank line, required - L"Gezag", // how much of town is controlled - L"Geen", // none of this town - L"Verboden Mijn", // mine associated with this town - L"Loyaliteit", // 5 // the loyalty level of this town - L"Getraind", // the forces in the town trained by the player - L"", - L"Voorzieningen", // main facilities in this town - L"Niveau", // the training level of civilians in this town - L"Training Burgers", // 10 // state of civilian training in town - L"Militie", // the state of the trained civilians in the town - - // Flugente: prisoner texts - L"Prisoners", - L"%d (capacity %d)", - L"%d Admins", - L"%d Regulars", - L"%d Elites", - L"%d Officers", - L"%d Generals", - L"%d Civilians", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"Mijn", // 0 - L"Zilver", - L"Goud", - L"Dagelijkse prod.", - L"Mogelijke prod.", - L"Verlaten", // 5 - L"Gesloten", - L"Raakt Op", - L"Produceert", - L"Status", - L"Prod. Tempo", - L"Resource", // 10 L"Ertstype", // TODO.Translate - L"Gezag Dorp", - L"Loyaliteit Dorp", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"Vijandelijke troepen", - L"Sector", - L"# Items", - L"Onbekend", - - L"Gecontrolleerd", - L"Ja", - L"Nee", - L"Status/Software status:", // TODO.Translate - - L"Additional Intel", // TODO:Translate -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s is niet dichtbij genoeg.", //Merc is in sector with item but not close enough - L"Kan huurling niet selecteren.", //MARK CARTER - L"%s is niet in de sector om dat item te pakken.", - L"Tijdens gevechten moet je items handmatig oppakken.", - L"Tijdens gevechten moet je items handmatig neerleggen.", - L"%s is niet in de sector om dat item neer te leggen.", - L"Tijdens gevecht, kunt u met een munitiekrat herladen niet.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Locatie", // sector these items are in - L"Aantal Items", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"Om de taken van een huurling te veranderen, zoals team, dokter of repareren, klik dan in de 'Toewijzen'-kolom", - L"Om een huurling een ander doel te geven, klik dan in de 'Doel'-kolom", - L"Op het moment dat een huurling een reis-order gekregen heeft, kan deze met de tijd-versneller in beweging worden gezet.", - L"Links-klikken selecteert de sector. Nogmaals links-klikken geeft de huurling een reisorder. Rechts-klikken geeft sector-informatie.", - L"Druk op een willekeurig moment op 'h'om deze helptekst te krijgen.", - L"Test Tekst", - L"Test Tekst", - L"Test Tekst", - L"Test Tekst", - L"Totdat je arriveert in Arulco is er niet veel te doen bij dit scherm. Als je klaar bent met het samenstellen van je team, klik dan op de Tijd-Versnel-knop rechtsonder. Zo verstrijkt de tijd totdat je team in Arulco aankomt.", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"Huurlingen in Sector", // title for movement box - L"Teken Reisroute", // done with movement menu, start plotting movement - L"Stop", // cancel this menu - L"Anders", // title for group of mercs not on squads nor in vehicles - L"Select all", // Select all squads TODO: Translate -}; - - -STR16 pUpdateMercStrings[] = -{ - L"Oeps:", // an error has occured - L"Contract Huurling verlopen:", // this pop up came up due to a merc contract ending - L"Huurling Taak Volbracht:", // this pop up....due to more than one merc finishing assignments - L"Huurling weer aan het Werk:", // this pop up ....due to more than one merc waking up and returing to work - L"Huurling zegt Zzzzzzz:", // this pop up ....due to more than one merc being tired and going to sleep - L"Contract Loopt Bijna Af:", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Toon Dorpen (|W)", - L"Toon |Mijnen", - L"Toon |Teams & Vijanden", - L"Toon Luchtruim (|A)", - L"Toon |Items", - L"Toon Milities & Vijanden (|Z)", - L"Show |Disease Data", // TODO.Translate - L"Show Weathe|r", - L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Next (|.)", // next page // TODO.Translate - L"Previous (|,)", // previous page // TODO.Translate - L"Exit Sector Inventory (|E|s|c)", // exit sector inventory // TODO.Translate - - // TODO.Translate - L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button - L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge - L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items - L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo - L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button - L"Toggle Get Item Display", // Flugente: move item display // TODO.Translate - L"Save Gear Template", // TODO.Translate - L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"|Laptop", - L"Tactisch (|E|s|c)", - L"|Opties", - L"TijdVersneller (|+)", // time compress more - L"TijdVersneller (|-)", // time compress less - L"Vorig Bericht (|U|p)\nVorige Pagina (|P|g|U|p)", // previous message in scrollable list - L"Volgend Bericht (|D|o|w|n)\nVolgende pagina (|P|g|D|n)", // next message in the scrollable list - L"Start/Stop Tijd (|S|p|a|c|e)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Huidig Saldo", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s is dood.", -}; - - -STR16 pDayStrings[] = -{ - L"Dag", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Enrico", - L"Psych Pro Inc", - L"Help Desk", - L"Psych Pro Inc", - L"Speck", - L"R.I.S.", //5 - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", //10 - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", //15 - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", //20 - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", //25 - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", //30 - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephan", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"M.I.S. Verzekeringen", - L"Bobby Rays", - L"Kingpin", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"Vorige", - L"Volgende", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"Je hebt nieuwe berichten...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"Bericht verwijderen?", - L"ONGELEZEN bericht(en) verwijderen?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"Van:", - L"Subject:", - L"Dag:", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"Postvak", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Account Plus", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Credit:", // credit (subtract from) to player's account - L"Debet:", // debit (add to) to player's account - L"Saldo Gisteren:", - L"Stortingen Gisteren:", - L"Uitgaven Gisteren:", - L"Saldo Eind van de Dag:", - L"Saldo Vandaag:", - L"Stortingen Vandaag:", - L"Uitgaven Vandaag:", - L"Huidig Saldo:", - L"Voorspelde Inkomen:", - L"Geschat Saldo:", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"Dag", // the day column - L"Credit", // the credits column (to ADD money to your account) - L"Debet", // the debits column (to SUBTRACT money from your account) - L"Transactie", // transaction type - see TransactionText below - L"Saldo", // balance at this point in time - L"Pag.", // page number - L"Dag(en)", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"Toegenomen Interest", // interest the player has accumulated so far - L"Anonieme Storting", - L"Transactiekosten", - L"Gehuurd", // Merc was hired - L"Bobby Ray's Wapenhandel", // Bobby Ray is the name of an arms dealer - L"Rekeningen Voldaan bij M.E.R.C.", - L"Medische Storting voor %s", // medical deposit for merc - L"IMP Profiel Analyse", // IMP is the acronym for International Mercenary Profiling - L"Verzekering Afgesloten voor %s", - L"Verzekering Verminderd voor %s", - L"Verzekering Verlengd voor %s", // johnny contract extended - L"Verzekering Afgebroken voor %s", - L"Verzekeringsclaim voor %s", // insurance claim for merc - L"een dag", // merc's contract extended for a day - L"1 week", // merc's contract extended for a week - L"2 weken", // ... for 2 weeks - L"Inkomen Mijn", - L"", //String nuked - L"Gekochte Bloemen", - L"Volledige Medische Vergoeding voor %s", - L"Gedeeltelijke Medische Vergoeding voor %s", - L"Geen Medische Vergoeding voor %s", - L"Betaling aan %s", // %s is the name of the npc being paid - L"Maak Geld over aan %s", // transfer funds to a merc - L"Maak Geld over van %s", // transfer funds from a merc - L"Rust militie uit in %s", // initial cost to equip a town's militia - L"Items gekocht van %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s heeft geld gestort.", - L"Sold Item(s) to the Locals", - L"Facility Use", // HEADROCK HAM 3.6 // TODO.Translate - L"Militia upkeep", // HEADROCK HAM 3.6 // TODO.Translate - L"Ransom for released prisoners", // Flugente: prisoner system TODO.Translate - L"WHO data subscription", // Flugente: disease TODO.Translate - L"Payment to Kerberus", // Flugente: PMC - L"SAM site repair", // Flugente: SAM repair // TODO.Translate - L"Trained workers", // Flugente: train workers - L"Drill militia in %s", // Flugente: drill militia // TODO.Translate - L"Mini event", // rftr: mini events // TODO: translate - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Verzekering voor", // insurance for a merc - L"Contract %s verl. met 1 dag.", // entend mercs contract by a day - L"Contract %s verl. met 1 week.", - L"Contract %s verl. met 2 weken.", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"Skyrider is $%d betaald.", // skyrider was paid an amount of money - L"Skyrider heeft $%d tegoed.", // skyrider is still owed an amount of money - L"Skyrider is klaar met tanken", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider is klaar om weer te vliegen.", // Skyrider was grounded but has been freed - L"Skyrider heeft geen passagiers. Als je huurlingen in deze sector wil vervoeren, wijs ze dan eerst toe aan Voertuig/Helikopter.", -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"Super", - L"Goed", - L"Stabiel", - L"Mager", - L"Paniek", - L"Slecht", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"%s's uitrusting is nu beschikbaar in Omerta (A9).", - L"%s's uitrusting is nu beschikbaar in Drassen (B13).", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"Gezondheid", - L"Energie", - L"Moraal", - L"Conditie", // the condition of the current vehicle (its "health") - L"Brandstof", // the fuel level of the current vehicle (its "energy") - L"Posion", // TODO.Translate - L"Water", // drink level - L"Food", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Vorige Huurling (|L|e|f|t)", // previous merc in the list - L"Volgende Huurling (|R|i|g|h|t)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"aank:", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"Je bent het voor altijd kwijt. Zeker weten?", // do you want to continue and lose the item forever - L"Dit item ziet er HEEL belangrijk uit. Weet je HEEL, HEEL zeker dat je het wil weggooien?", // does the user REALLY want to trash this item - -}; - - -STR16 pMapErrorString[] = -{ - L"Team kan niet verder reizen met een slapende huurling.", - -//1-5 - L"Verplaats het team eerst bovengronds.", - L"Reisorders? Het is vijandig gebied!", - L"Om te verplaatsen moeten huurlingen eerst toegewezen worden aan een team of voertuig.", - L"Je hebt nog geen team-leden.", // you have no members, can't do anything - L"Huurling kan order niet opvolgen.", // merc can't comply with your order -//6-10 - L"heeft een escorte nodig. Plaats hem in een team.", // merc can't move unescorted .. for a male - L"heeft een escorte nodig. Plaats haar in een team.", // for a female - L"Huurling is nog niet in %s aangekomen!", - L"Het lijkt erop dat er eerst nog contractbesprekingen gehouden moeten worden.", - L"Cannot give a movement order. Air raid is going on.", -//11-15 - L"Reisorders? Er is daar een gevecht gaande!", - L"Je bent in een hinderlaag gelokt van Bloodcats in sector %s!", - L"Je bent in sector %s iets binnengelopen dat lijkt op het hol van een bloodcat!", - L"", - L"De SAM-stelling in %s is overgenomen.", -//16-20 - L"De mijn in %s is overgenomen. Je dagelijkse inkomen is gereduceerd tot %s per dag.", - L"De vijand heeft sector %s onbetwist overgenomen.", - L"Tenminste een van je huurlingen kan niet meedoen met deze opdracht.", - L"%s kon niet meedoen met %s omdat het al vol is", - L"%s kon niet meedoen met %s omdat het te ver weg is.", -//21-25 - L"De mijn in %s is buitgemaakt door Deidranna's troepen!", - L"Deidranna's troepen zijn net de SAM-stelling in %s binnengevallen", - L"Deidranna's troepen zijn net %s binnengevallen", - L"Deidranna's troepen zijn gezien in %s.", - L"Deidranna's troepen hebben zojuist %s overgenomen.", -//26-30 - L"Tenminste één huurling kon niet tot slapen gebracht worden.", - L"Tenminste één huurling kon niet wakker gemaakt worden.", - L"De Militie verschijnt niet totdat hun training voorbij is.", - L"%s kan geen reisorders gegeven worden op dit moment.", - L"Milities niet binnen de stadsgrenzen kunnen niet verplaatst worden naar een andere sector.", -//31-35 - L"Je kunt geen militie in %s hebben.", - L"Een voertuig kan niet leeg rijden!", - L"%s is te gewond om te reizen!", - L"Je moet het museum eerst verlaten!", - L"%s is dood!", -//36-40 - L"%s kan niet wisselen naar %s omdat het onderweg is", - L"%s kan het voertuig op die manier niet in", - L"%s kan zich niet aansluiten bij %s", - L"Totdat je nieuwe huurlingen in dienst neemt, kan de tijd niet versneld worden!", - L"Dit voertuig kan alleen over wegen rijden!", -//41-45 - L"Je kunt geen reizende huurlingen opnieuw toewijzen", - L"Voertuig zit zonder brandstof!", - L"%s is te moe om te reizen.", - L"Niemand aan boord is in staat om het voertuig te besturen.", - L"Eén of meer teamleden kunnen zich op dit moment niet verplaatsen.", -//46-50 - L"Eén of meer leden van de ANDERE huurlingen kunnen zich op dit moment niet verplaatsen.", - L"Voertuig is te beschadigd!", - L"Let op dat maar twee huurlingen milities in een sector mogen trainen.", - L"De robot kan zich zonder bediening niet verplaatsen. Plaats ze in hetzelfde team.", - L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate -// 51-55 - L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Klik nogmaals op de bestemming om de route te bevestigen, of klik op een andere sector om meer routepunten te plaatsen.", - L"Route bevestigd.", - L"Bestemming onveranderd.", - L"Reis afgebroken.", - L"Reis verkort.", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Klik op de sector waar de huurlingen in plaats daarvan moeten arriveren.", - L"OK. Arriverende huurlingen worden afgezet in %s", - L"Huurlingen kunnen hier niet ingevlogen worden, het luchtruim is onveilig!", - L"Afgebroken. Aankomst-sector onveranderd", - L"Luchtruim boven %s is niet langer veilig! Aankomst-sector is verplaatst naar %s.", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Naar Inventaris (|E|n|t|e|r)", - L"Gooi Item Weg", - L"Verlaat Inventaris (|E|n|t|e|r)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"Laat %s zijn uitrusting achterlaten waar hij nu is (%s) of in (%s) bij het nemen van de vlucht?", - L"%s gaat binnenkort weg en laat zijn uitrusting achter in %s.", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"Laat %s haar uitrusting achterlaten waar ze nu is (%s) of in (%s) bij het nemen van de vlucht?", - L"%s gaat binnenkort weg en laat haar uitrusting achter in %s.", -}; - - -STR16 pMercContractOverStrings[] = -{ - L"'s contract is geëindigd, hij is dus naar huis.", // merc's contract is over and has departed - L"'s contract is geëindigd, ze is dus naar huis.", // merc's contract is over and has departed - L"'s contract is opgezegd, hij is dus weg.", // merc's contract has been terminated - L"'s contract is opgezegd, ze is dus weg.", // merc's contract has been terminated - L"M.E.R.C. krijgt nog teveel geld van je, %s is dus weggegaan.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages - -STR16 pImpPopUpStrings[] = -{ - L"Ongeldige Autorisatiecode", - L"Je wil het gehele persoonlijkheidsonderzoek te herstarten. Zeker weten?", - L"Vul alsjeblieft de volledige naam en geslacht in", - L"Voortijdig onderzoek van je financiële status wijst uit dat je een persoonlijksheidsonderzoek niet kunt betalen.", - L"Geen geldige optie op dit moment.", - L"Om een nauwkeurig profiel te maken, moet je ruimte hebben voor tenminste één teamlid.", - L"Profiel is al gemaakt.", - L"Cannot load I.M.P. character from disk.", - L"You have already reached the maximum number of I.M.P. characters.", - L"You have already three I.M.P characters with the same gender on your team.", - L"You cannot afford the I.M.P character.", // 10 - L"The new I.M.P character has joined your team.", - L"You have already selected the maximum number of traits.", // TODO.Translate - L"No voicesets found.", // TODO.Translate -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"Info", // about the IMP site ("About Us") - L"BEGIN", // begin profiling ("BEGIN") - L"Persoonlijkheid", // personality section ("Personality") - L"Eigenschappen", // personal stats/attributes section ("Attributes") - L"Appearance", // changed from portrait - L"Stem %d", // the voice selection ("Voice %d") - L"OK", // done profiling ("Done") - L"Opnieuw", // start over profiling ("Start Over") - L"Ja, ik kies het geselecteerde antwoord.", // ("Yes, I choose the highlighted answer.") - L"Ja", - L"Nee", - L"OK", // finished answering questions - L"Vor.", // previous question..abbreviated form - L"Vol.", // next question - L"JA ZEKER.", // yes, I am certain ("YES, I AM.") - L"NEE, IK WIL OPNIEUW BEGINNEN.", // no, I want to start over the profiling process ("NO, I WANT TO START OVER.") - L"JA, ZEKER.", // ("YES, I DO.") - L"NEE", - L"Terug", // back one page - L"Stop", // cancel selection - L"Ja, zeker weten.", // ("Yes, I am certain.") - L"Nee, laat me nog eens kijken.", // ("No, let me have another look.") - L"Registratie", // the IMP site registry..when name and gender is selected - L"Analyseren", // analyzing your profile results - L"OK", - L"Character", // Change from "Voice" - L"None", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"With your character traits chosen, it is time to select your skills.", - L"To complete the process, select your attributes.", - L"To commence actual profiling, select portrait, voice and colors.", - L"Now that you have completed your appearence choice, proceed to character analysis.", -}; - -STR16 pFilesTitle[] = -{ - L"Bestanden Bekijken", // ("File Viewer") -}; - -STR16 pFilesSenderList[] = -{ -#ifdef JA2UB - L"Int. Verslag", // the recon report sent to the player. Recon is an abbreviation for reconissance -#else - L"Int. Verslag", // the recon report sent to the player. Recon is an abbreviation for reconissance -#endif - L"Intercept.#1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"Intercept.#2", // second intercept file - L"Intercept.#3", // third intercept file - L"Intercept.#4", // fourth intercept file ("Intercept #4") - L"Intercept.#5", // fifth intercept file - L"Intercept.#6", // sixth intercept file -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"Geschiedenis", -}; - -STR16 pHistoryHeaders[] = -{ - L"Dag", // the day the history event occurred - L"Pag.", // the current page in the history report we are in - L"Dag", // the days the history report occurs over - L"Locatie", // location (in sector) the event occurred - L"Geb.", // the event label -}; - -/* -// Externalized to "TableData\History.xml" -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"%s ingehuurd via A.I.M.", // merc was hired from the aim site - L"%s ingehuurd via M.E.R.C.", // merc was hired from the merc site - L"%s gedood.", // merc was killed - L"Facturen betaald bij M.E.R.C.", // paid outstanding bills at MERC - L"Opdracht van Enrico Chivaldori geaccepteerd.", // ("Accepted Assignment From Enrico Chivaldori") - //6-10 - L"IMP Profiel Klaar", // ("IMP Profile Generated") - L"Verzekeringspolis gekocht voor %s.", // insurance contract purchased - L"Verzekeringspolis afgebroken van %s.", // insurance contract canceled - L"Uitbetaling Verzekeringspolis %s.", // insurance claim payout for merc - L"%s's contract verlengd met 1 dag.", // Extented "mercs name"'s for a day - //11-15 - L"%s's contract verlengd met 1 week.", // Extented "mercs name"'s for a week - L"%s's contract verlengd met 2 weken.", // Extented "mercs name"'s 2 weeks - L"%s is ontslagen.", // "merc's name" was dismissed. - L"%s gestopt.", // "merc's name" quit. - L"zoektocht gestart.", // a particular quest started - //16-20 - L"zoektocht afgesloten.", // ("quest completed.") - L"Gepraat met hoofdmijnwerker van %s", // talked to head miner of town - L"%s bevrijd", // ("Liberated %s") - L"Vals gespeeld", // ("Cheat Used") - L"Voedsel zou morgen in Omerta moeten zijn", // ("Food should be in Omerta by tomorrow") - //21-25 - L"%s weggegaan, wordt Daryl Hick's vrouw", // ("%s left team to become Daryl Hick's wife") - L"%s's contract afgelopen.", // ("%s's contract expired.") - L"%s aangenomen.", // ("%s was recruited.") - L"Enrico klaagde over de voortgang", // ("Enrico complained about lack of progress") - L"Strijd gewonnen", // ("Battle won") - //26-30 - L"%s mijn raakt uitgeput", // ("%s mine started running out of ore") - L"%s mijn is uitgeput", // ("%s mine ran out of ore") - L"%s mijn is gesloten", // ("%s mine was shut down") - L"%s mijn heropend", // ("%s mine was reopened") - L"Info verkregen over gevangenis Tixa.", // ("Found out about a prison called Tixa.") - //31-35 - L"Van geheime wapenfabriek gehoord, Orta genaamd.", // ("Heard about a secret weapons plant called Orta.") - L"Onderzoeker in Orta geeft wat raketwerpers.", // ("Scientist in Orta donated a slew of rocket rifles.") - L"Koningin Deidranna kickt op lijken.", // ("Queen Deidranna has a use for dead bodies.") - L"Frank vertelde over knokwedstrijden in San Mona.", // ("Frank talked about fighting matches in San Mona.") - L"Een patiënt dacht dat ie iets in de mijnen zag.", // ("A patient thinks he saw something in the mines.") - //36-40 - L"Pers. ontmoet; Devin - verkoopt explosieven.", // ("Met someone named Devin - he sells explosives.") - L"Beroemde ex-AIM huurling Mike ontmoet!", // ("Ran into the famous ex-AIM merc Mike!") - L"Tony ontmoet - handelt in wapens.", // ("Met Tony - he deals in arms.") - L"Raketwerper gekregen van Serg. Krott.", // ("Got a rocket rifle from Sergeant Krott.") - L"Kyle akte gegeven van Angel's leerwinkel.", // ("Gave Kyle the deed to Angel's leather shop.") - //41-45 - L"Madlab bood aan robot te bouwen.", // ("Madlab offered to build a robot.") - L"Gabby maakt superbrouwsel tegen beesten.", // ("Gabby can make stealth concoction for bugs.") - L"Keith is er mee opgehouden.", // ("Keith is out of business.") - L"Howard geeft Koningin Deidranna cyanide.", // ("Howard provided cyanide to Queen Deidranna.") - L"Keith ontmoet - handelaar in Cambria.", // ("Met Keith - all purpose dealer in Cambria.") - //46-50 - L"Howard ontmoet - medicijnendealer in Balime", // ("Met Howard - deals pharmaceuticals in Balime") - L"Perko ontmoet - heeft reparatiebedrijfje.", // ("Met Perko - runs a small repair business.") - L"Sam van Balime ontmoet - verkoopt ijzerwaren.", // ("Met Sam of Balime - runs a hardware shop.") - L"Franz verkoopt elektronica en andere dingen.", // ("Franz deals in electronics and other goods.") - L"Arnold runt reparatiezaak in Grumm.", // ("Arnold runs a repair shop in Grumm.") - //51-55 - L"Fredo repareert elektronica in Grumm.", // ("Fredo repairs electronics in Grumm.") - L"Van rijke vent in Balime donatie gekregen.", // ("Received donation from rich guy in Balime.") - L"Schroothandelaar Jake ontmoet.", // ("Met a junkyard dealer named Jake.") - L"Vaag iemand gaf ons elektronische sleutelkaart.", // ("Some bum gave us an electronic keycard.") - L"Walter omgekocht om kelderdeur open te maken.", // ("Bribed Walter to unlock the door to the basement.") - //56-60 - L"Als Dave gas heeft, geeft hij deze weg.", // ("If Dave has gas, he'll provide free fillups.") - L"Geslijmd met Pablo.", // ("Greased Pablo's palms.") - L"Kingpin bewaard geld in San Mona mine.", // ("Kingpin keeps money in San Mona mine.") - L"%s heeft Extreme Fighting gewonnen", // ("%s won Extreme Fighting match") - L"%s heeft Extreme Fighting verloren", // ("%s lost Extreme Fighting match") - //61-65 - L"%s gediskwalificeerd v. Extreme Fighting", // ("%s was disqualified in Extreme Fighting") - L"Veel geld gevonden in een verlaten mijn.", // ("Found a lot of money stashed in the abandoned mine.") - L"Huurmoordenaar van Kingpin ontdekt.", // ("Encountered assassin sent by Kingpin.") - L"Controle over sector verloren", //ENEMY_INVASION_CODE ("Lost control of sector") - L"Sector verdedigd", // ("Defended sector") - //66-70 - L"Strijd verloren", //ENEMY_ENCOUNTER_CODE ("Lost battle") - L"Fatale val", //ENEMY_AMBUSH_CODE ("Fatal ambush") - L"Vijandige val weggevaagd", // ("Wiped out enemy ambush") - L"Aanval niet gelukt", //ENTERING_ENEMY_SECTOR_CODE ("Unsuccessful attack") - L"Aanval gelukt!", // ("Successful attack!") - //71-75 - L"Beesten vielen aan", //CREATURE_ATTACK_CODE ("Creatures attacked") - L"Gedood door bloodcats", //BLOODCAT_AMBUSH_CODE ("Killed by bloodcats") - L"Afgeslacht door bloodcats", // ("Slaughtered bloodcats") - L"%s was gedood", // ("%s was killed") - L"Carmen kop v.e. terrorist gegeven", // ("Gave Carmen a terrorist's head") - //76-80 - L"Slay vertrok", // ("Slay left") - L"%s vermoord", // ("Killed %s") - L"Met Waldo - aircraft mechanic.", - L"Helicopter repairs started. Estimated time: %d hour(s).", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"Nvt", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"E-mail", - L"Web", - L"Financieel", - L"Dossiers", - L"Historie", - L"Bestanden", - L"Afsluiten", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"A.I.M.", - L"Bobby Ray's", - L"I.M.P", - L"M.E.R.C.", - L"Mortuarium", - L"Bloemist", - L"Verzekering", - L"Stop", - L"Encyclopedia", - L"Briefing Room", - L"Campaign History", // TODO.Translate - L"MeLoDY", - L"WHO", - L"Kerberus", - L"Militia Overview", // TODO.Translate - L"R.I.S.", - L"Factories", // TODO.Translate -}; - -STR16 pBookmarkTitle[] = -{ - L"Bladwijzer", - L"Rechter muisklik om dit menu op te roepen.", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"Laden", - L"Herladen", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Neem", // take money from merc - L"Geef", // give money to merc - L"Stop", // cancel transaction - L"Leeg", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Maak over $", // transfer money to merc -- short form - L"Info", // view stats of the merc - L"Inventaris", // view the inventory of the merc - L"Werk", -}; - -STR16 sATMText[ ]= -{ - L"Overmaken geld?", // transfer funds to merc? - L"Ok?", // are we certain? - L"Geef bedrag", // enter the amount you want to transfer to merc - L"Geef type", // select the type of transfer to merc - L"Onvoldoende saldo", // not enough money to transfer to merc - L"Bedrag moet veelvoud zijn van $10", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"Fout", - L"Server heeft geen DNS ingang.", - L"Controleer URL adres en probeer opnieuw.", - L"OK", - L"Periodieke verbinding met host. Houdt rekening met lange wachttijden.", -}; - - -STR16 pPersonnelString[] = -{ - L"Huurlingen:", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"A.I.M.", - L"A.I.M. Leden", - L"A.I.M. Portretten", // a mug shot is another name for a portrait - L"A.I.M. Sorteer", - L"A.I.M.", - L"A.I.M. Veteranen", - L"A.I.M. Regelement", - L"A.I.M. Geschiedenis", - L"A.I.M. Links", - L"M.E.R.C.", - L"M.E.R.C. Rekeningen", - L"M.E.R.C. Registratie", - L"M.E.R.C. Index", - L"Bobby Ray's", - L"Bobby Ray's - Wapens", - L"Bobby Ray's - Munitie", - L"Bobby Ray's - Pantsering", - L"Bobby Ray's - Diversen", //misc is an abbreviation for miscellaneous - L"Bobby Ray's - Gebruikt", - L"Bobby Ray's - Mail Order", - L"I.M.P.", - L"I.M.P.", - L"United Floral Service", - L"United Floral Service - Etalage", - L"United Floral Service - Bestelformulier", - L"United Floral Service - Kaart Etalage", - L"Malleus, Incus & Stapes Verzekeringen", - L"Informatie", - L"Contract", - L"Opmerkingen", - L"McGillicutty's Mortuarium", - L"", - L"URL niet gevonden.", - L"%s Press Council - Conflict Summary", // TODO.Translate - L"%s Press Council - Battle Reports", - L"%s Press Council - Latest News", - L"%s Press Council - About us", - L"Mercs Love or Dislike You - About us", - L"Mercs Love or Dislike You - Analyze a team", - L"Mercs Love or Dislike You - Pairwise comparison", - L"Mercs Love or Dislike You - Personality", - L"WHO - About WHO", - L"WHO - Disease in Arulco", - L"WHO - Helpful Tips", - L"Kerberus - About Us", - L"Kerberus - Hire a Team", - L"Kerberus - Individual Contracts", - L"Militia Overview", - L"Recon Intelligence Services - Information Requests", // TODO.Translate - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Factory Overview", // TODO.Translate - L"Bobby Ray's - Recent Shipments", - L"Encyclopedia", - L"Encyclopedia - Data", - L"Briefing Room", - L"Briefing Room - Data", -}; - -STR16 pShowBookmarkString[] = -{ - L"Sir-Help", - L"Klik opnieuw voor Bookmarks.", -}; - -STR16 pLaptopTitles[] = -{ - L"E-Mail", - L"Bestanden bekijken", - L"Persoonlijk", - L"Boekhouder Plus", - L"Geschiedenis", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"Omgekomen tijdens gevechten", - L"Weggestuurd", - L"Anders", - L"Getrouwd", - L"Contract Afgelopen", - L"Gestopt", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"Huidig Team", - L"Vertrekken", - L"Dag. Kosten:", - L"Hoogste Kosten:", - L"Laagste Kosten:", - L"Omgekomen tijdens gevechten:", - L"Weggestuurd:", - L"Anders:", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Laagste", - L"Gemiddeld", - L"Hoogste", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"GZND", - L"BEW", - L"HAN", - L"KRA", - L"LDR", - L"WIJ", - L"NIV", - L"TREF", - L"MECH", - L"EXPL", - L"MED", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"Contract", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"Doorgaan", - L"Stop", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"Je bent verslagen in deze sector!", - L"De vijand, geen genade kennende, slacht ieder teamlid af!", - L"Je bewusteloze teamleden zijn gevangen genomen!", - L"Je teamleden zijn gevangen genomen door de vijand.", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"Vorige", - L"Volgende", - L"OK", - L"Leeg", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"Vorige", - L"Volgende", -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Autoriseer", - L"Thuis", - L"Rekening#:", - L"Huurl.", - L"Dagen", - L"Tarief", //5 - L"Prijs", - L"Totaal:", - L"Weet je zeker de betaling van %s te autoriseren?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+gear)", // TODO.Translate -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Previous", - L"Next", -}; - - - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"Gezondheid", - L"Beweeglijkheid", - L"Handigheid", - L"Kracht", - L"Leiderschap", - L"Wijsheid", - L"Ervaringsniveau", - L"Trefzekerheid", - L"Technisch", - L"Explosieven", - L"Medisch", - - L"Vorige", - L"Huur", - L"Volgende", - L"Extra Info", - L"Thuis", - L"Ingehuurd", - L"Salaris:", - L"Per Dag", - L"Gear:", // TODO.Translate - L"Totaal:", - L"Overleden", - - L"Je team bestaat al uit huurlingen.", - L"Koop Uitrusting?", - L"Niet beschikbaar", - L"Unsettled Bills", // TODO.Translate - L"Bio", // TODO.Translate - L"Inv", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Open Rekening", - L"Afbreken", - L"Je hebt geen rekening. Wil je er één openen?", -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Speck T. Kline, oprichter en bezitter", - L"Om een rekening te open, klik hier", - L"Klik hier om rekening te bekijken", - L"Klik hier om bestanden in te zien", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Transfer failed. No funds available.", // TODO.Translate -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"McGillicutty's Mortuarium: Helpt families rouwen sinds 1983.", - L"Begrafenisondernemer en voormalig A.I.M. huurling Murray \"Pops\" McGillicutty is een kundig en ervaren begrafenisondernemer.", - L"Pops weet hoe moeilijk de dood kan zijn, in heel zijn leven heeft hij te maken gehad met de dood en sterfgevallen.", - L"McGillicutty's Mortuarium biedt een breed scala aan stervensbegeleiding, van een schouder om uit te huilen tot recontructie van misvormde overblijfselen.", - L"Laat McGillicutty's Mortuarium u helpen en laat uw dierbaren zacht rusten.", - - // Text for the various links available at the bottom of the page - L"STUUR BLOEMEN", - L"DOODSKIST & URN COLLECTIE", - L"CREMATIE SERVICE", - L"SERVICES", - L"ETIQUETTE", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"Helaas is deze pagina nog niet voltooid door een sterfgeval in de familie. Afhankelijk van de laatste wil en uitbetaling van de beschikbare activa wordt de pagina zo snel mogelijk voltooid.", - L"Ons medeleven gaat uit naar jou, tijdens deze probeerperiode. Kom nog eens langs.", -}; - -// Text for the florist Home page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Etalage", - - //Address of United Florist - - L"\"We brengen overal langs\"", - L"1-555-SCENT-ME", - L"333 NoseGay Dr, Seedy City, CA USA 90210", - L"http://www.scent-me.com", - - // detail of the florist page - - L"We zijn snel en efficiënt!", - L"Volgende dag gebracht, wereldwijd, gegarandeerd. Enkele beperkingen zijn van toepassing.", - L"Laagste prijs in de wereld, gegarandeerd!", - L"Toon ons een lagere geadverteerde prijs voor een regeling en ontvang gratis een dozijn rozen.", - L"Flora, Fauna & Bloemen sinds 1981.", - L"Onze onderscheiden ex-bommenwerperpiloten droppen je boeket binnen een tien kilometer radius van de gevraagde locatie. Altijd!", - L"Laat ons al je bloemenfantasieën waarmaken.", - L"Laat Bruce, onze wereldberoemde bloemist, de verste bloemen met de hoogste kwaliteit uit onze eigen kassen uitzoeken.", - L"En onthoudt, als we het niet hebben, kunnen we het kweken - Snel!", -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"Terug", - L"Verstuur", - L"Leeg", - L"Etalage", - - L"Naam vh Boeket:", - L"Prijs:", //5 - L"Ordernummer:", - L"Bezorgingsdatum", - L"volgende dag", - L"komt wanneer het komt", - L"Locatie Bezorging", //10 - L"Extra Service", - L"Geplet Boeket($10)", - L"Zwarte Rozen ($20)", - L"Verlept Boeket($10)", - L"Fruitcake (indien beschikbaar)($10)", //15 - L"Persoonlijk Bericht:", - L"Wegens de grootte kaarten, mogen je berichten niet langer zijn dan 75 karakters.", - L"...of selecteer er één van de onze", - - L"STANDAARDKAARTEN", - L"Factuurinformatie", //20 - - //The text that goes beside the area where the user can enter their name - - L"Naam:", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"Back", //abbreviation for previous - L"Next", //abbreviation for next - - L"Klik op de selectie die je wil bestellen.", - L"Let op: er geldt een extra tarief van $10 voor geplette en verlepte boeketten.", - - //text on the button - - L"Home", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"Klik op je selectie", - L"Terug", -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"Bestelformulier", //Title of the page - L"Hvl", // The number of items ordered - L"Gewicht(%s)", // The weight of the item - L"Itemnaam", // The name of the item - L"Prijs unit", // the item's weight - L"Totaal", //5 // The total price of all of items of the same type - L"Sub-Totaal", // The sub total of all the item totals added - L"Porto (Zie Bezorgloc.)", // S&H is an acronym for Shipping and Handling - L"Eindtotaal", // The grand total of all item totals + the shipping and handling - L"Bezorglocatie", - L"Verzendingssnelheid", //10 // See below - L"Kosten (per %s.)", // The cost to ship the items - L"Nacht-Express", // Gets deliverd the next day - L"2 Werkdagen", // Gets delivered in 2 days - L"Standaard Service", // Gets delivered in 3 days - L"Order Leegmaken",//15 // Clears the order page - L"Accept. Order", // Accept the order - L"Terug", // text on the button that returns to the previous page - L"Home", // Text on the button that returns to the home page - L"* Duidt op Gebruikte Items", // Disclaimer stating that the item is used - L"Je kunt dit niet betalen.", //20 // A popup message that to warn of not enough money - L"", // Gets displayed when there is no valid city selected - L"Weet je zeker dat je de bestelling wil sturen naar %s?", // A popup that asks if the city selected is the correct one - L"Gewicht Pakket**", // Displays the weight of the package - L"** Min. Gew.", // Disclaimer states that there is a minimum weight for the package - L"Zendingen", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"Pistol", - L"M. Pistol", - L"SMG", - L"Rifle", - L"SN Rifle", - L"AS Rifle", - L"MG", - L"Shotgun", - L"Heavy W.", - - // Ammo - L"Pistol", - L"M. Pistol", - L"SMG", - L"Rifle", - L"SN Rifle", - L"AS Rifle", - L"MG", - L"Shotgun", - - // Used - L"Guns", - L"Armor", - L"LBE Gear", - L"Misc", - - // Armour - L"Helmets", - L"Vests", - L"Leggings", - L"Plates", - - // Misc - L"Blades", - L"Th. Knives", - L"Blunt W.", - L"Grenades", - L"Bombs", - L"Med. Kits", - L"Kits", - L"Face Items", - L"LBE Gear", - L"Optics", // Madd: new BR filters // TODO.Translate - L"Grip/LAM", - L"Muzzle", - L"Stock", - L"Mag/Trig.", - L"Other Att.", - L"Misc.", -}; - - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"Bestelling", // Title - // instructions on how to order - L"Klik op de item(s). Voor meer dan één, blijf dan klikken. Rechtsklikken voor minder. Als je alles geselecteerd hebt, dat je wil bestellen, ga dan naar het bestelformulier.", - - //Text on the buttons to go the various links - - L"Vorige Items", // - L"Wapens", //3 - L"Munitie", //4 - L"Pantser", //5 - L"Diversen", //6 //misc is an abbreviation for miscellaneous - L"Gebruikt", //7 - L"Meer Items", - L"BESTELFORMULIER", - L"Home", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"Je team heeft", //11 - L"wapen(s) gebruik makende van deze munitie", //12 - - //The following lines provide information on the items - - L"Gewicht:", // Weight of all the items of the same type - L"Kal:", // the caliber of the gun - L"Mag:", // number of rounds of ammo the Magazine can hold - L"Afs:", // The range of the gun - L"Sch:", // Damage of the weapon - L"ROF:", // Weapon's Rate Of Fire, acronym ROF - L"AP:", // Weapon's Action Points, acronym AP - L"Stun:", // Weapon's Stun Damage - L"Protect:", // Armour's Protection - L"Camo:", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Kost:", // Cost of the item - L"Aanwezig:", // The number of items still in the store's inventory - L"# Besteld:", // The number of items on order - L"Beschadigd", // If the item is damaged - L"Gewicht:", // the Weight of the item - L"SubTotaal:", // The total cost of all items on order - L"* %% Functioneel", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"Verdraaid! Dit on-line bestelformulier accepteert maar " ,//First part - L" items per keer. Als je meer wil bestellen (en dat hopen we), plaats dan afzonderlijke orders en accepteer onze excuses.", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Sorry. We hebben niet meer van die zaken in het magazijn. Probeer het later nog eens.", - - //A popup that tells the user that the store is temporarily sold out - - L"Sorry, alle items van dat type zijn nu uitverkocht.", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"Hier moet je zijn voor de nieuwste en beste wapens en militaire goederen", - L"We kunnen de perfecte oplossing vinden voor elke explosiebehoefte", - L"Gebruikte en opgeknapte items", - - //Text for the various links to the sub pages - - L"Diversen", - L"WAPENS", - L"MUNITIE", //5 - L"PANTSER", - - //Details on the web site - - L"Als wij het niet verkopen, dan kun je het nergens krijgen!", - L"Under construction", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"A.I.M. Leden", // Title - // Title for the way to sort - L"Sort. op:", - - // sort by... - - L"Prijs", - L"Ervaring", - L"Trefzekerheid", - L"Technisch", - L"Explosieven", - L"Medisch", - L"Gezondheid", - L"Beweeglijkheid", - L"Handigheid", - L"Kracht", - L"Leiderschap", - L"Wijsheid", - L"Naam", - - //Text of the links to other AIM pages - - L"Bekijk portretfotoindex van huurlingen", - L"Bekijk het huurlingendossier", - L"Bekijk de A.I.M. Veteranen", - - // text to display how the entries will be sorted - - L"Oplopend", - L"Aflopend", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Previous", - L"AIM HomePage", - L"Index Regels", - L"Next", - L"Oneens", - L"Mee eens", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"Klik Links", - L"voor Verbinding met Huurl.", - L"Klik Rechts", - L"voor Portretfotoindex.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Gezondheid", - L"Beweeglijkheid", - L"Handigheid", - L"Kracht", - L"Leiderschap", - L"Wijsheid", - L"Ervaringsniveau", - L"Trefzekerheid", - L"Technisch", - L"Explosieven", - L"Medisch", //10 - - // the contract expenses' area - - L"Tarief", - L"Contract", - L"een dag", - L"een week", - L"twee weken", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"Previous", - L"Contact", - L"Next", - - L"Extra Info", // Title for the additional info for the merc's bio - L"Actieve Leden", //20 // Title of the page - L"Aanv. Uitrusting:", // Displays the optional gear cost - L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's // TODO.Translate - L"MEDISCHE aanbetaling nodig", // If the merc required a medical deposit, this is displayed - L"Uitrusting 1", // Text on Starting Gear Selection Button 1 // TODO.Translate - L"Uitrusting 2", // Text on Starting Gear Selection Button 2 - L"Uitrusting 3", // Text on Starting Gear Selection Button 3 - L"Uitrusting 4", // Text on Starting Gear Selection Button 4 - L"Uitrusting 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"Contractkosten:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"Een Dag", - L"Een Week", - L"Twee Weken", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"Geen Uitrusting", - L"Koop Uitrusting", - - // Text on the Buttons - - L"HUUR IN", // to actually hire the merc - L"STOP", // go back to the previous menu - L"VOORWAARDEN", // go to menu in which you can hire the merc - L"OPHANGEN", // stops talking with the merc - L"OK", - L"STUUR BERICHT", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Video Conference met", - L"Verbinding maken. . .", - - L"+ med. depo", // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"BEDRAG OVERGEBOEKT", // You hired the merc - L"OVERMAKEN NIET MOGELIJK", // Player doesn't have enough money, message 1 - L"ONVOLDOENDE GELD", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"Op missie", - L"Laat a.u.b. bericht achter", - L"Overleden", - - //If you try to hire more mercs than game can support - - L"Je team bestaat al uit huurlingen.", - - L"Opgenomen bericht", - L"Bericht opgenomen", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"A.I.M. Links", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"A.I.M. Geschiedenis", //Title - - // Text on the buttons at the bottom of the page - - L"Previous", - L"Home", - L"A.I.M. Veteranen", - L"Next", -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Prijs", - L"Ervaring", - L"Trefzekerheid", - L"Technisch", - L"Explosieven", - L"Medisch", - L"Gezondheid", - L"Beweeglijkheid", - L"Handigheid", - L"Kracht", - L"Leiderschap", - L"Wijsheid", - L"Naam", - - // The title of the page, the above text gets added at the end of this text - - L"A.I.M. Leden Oplopend Gesorteerd op %s", - L"A.I.M. Leden Aflopend Gesorteerd op %s", - - // Instructions to the players on what to do - - L"Klik Links", - L"om Huurling te Selecteren", //10 - L"Klik Rechts", - L"voor Sorteeropties", - - // Gets displayed on top of the merc's portrait if they are... - - L"Afwezig", - L"Overleden", //14 - L"Op missie", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"PAG. 1", - L"PAG. 2", - L"PAG. 3", - - L"A.I.M. Veteranen", // Title of the page - - L"OK", // Stops displaying information on selected merc - L"Next page", // TODO.Translate -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"A.I.M. en A.I.M.-logo zijn geregistreerde handelsmerken in de meeste landen.", - L"Dus denk er niet aan om ons te kopiëren.", - L"Copyright 1998-1999 A.I.M., Ltd. All rights reserved.", - - //Text for an advertisement that gets displayed on the AIM page - - L"United Floral Service", - L"\"We droppen overal\"", //10 - L"Doe het goed", - L"... de eerste keer", - L"Wapens en zo, als we het niet hebben, dan heb je het ook niet nodig.", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"Home", - L"Leden", - L"Veteranen", - L"Regels", - L"Geschiedenis", - L"Links", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"HANDELSWAAR OP VOORRAAD", //Header for the merchandise available - L"PAG.", //The current store inventory page being displayed - L"TOTALE KOSTEN", //The total cost of the the items in the Dealer inventory area - L"TOTALE WAARDE", //The total value of items player wishes to sell - L"EVALUEER", //Button text for dealer to evaluate items the player wants to sell - L"TRANSACTIE", //Button text which completes the deal. Makes the transaction. - L"OK", //Text for the button which will leave the shopkeeper interface. - L"REP. KOSTEN", //The amount the dealer will charge to repair the merc's goods - L"1 UUR", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d UREN", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"GEREPAREERD", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"Er is geen ruimte meer.", //Message box that tells the user there is no more room to put there stuff - L"%d MINUTEN", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Drop Item op Grond.", - L"BUDGET", // TODO.Translate -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Neem", // Take money from the player - L"Geef", // Give money to the player - L"Stop", // Cancel the transfer - L"Leeg", // Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"Selecteer Type", // tells the user to select either to give or take from the merc - L"Voer Bedrag In", // Enter the amount to transfer - L"Maak Geld over naar Huurl.", // Giving money to the merc - L"Maak Geld over van Huurl.", // Taking money from the merc - L"Onvoldoende geld", // Not enough money to transfer - L"Saldo", // Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"Wil je %s aftrekken van je hoofdrekening om het verschil op te vangen?", - L"Niet genoeg geld. Je komt %s tekort", - L"Wil je %s aftrekken van je hoofdrekening om de kosten te dekken?", - L"Vraag de dealer om de transactie te starten", - L"Vraag de dealer om de gesel. items te repareren", - L"Einde conversatie", - L"Huidige Saldo", - - L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate - L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"Spel Bewaren", - L"Spel Laden", - L"Stop", - L"Next", - L"Prev", - L"OK", - L"1.13 Features", - L"New in 1.13", - L"Options", - - //Text above the slider bars - L"Effecten", - L"Spraak", - L"Muziek", - - //Confirmation pop when the user selects.. - L"Spel verlaten en terugkeren naar hoofdmenu?", - - L"Je hebt of de Spraakoptie nodig of de ondertiteling.", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Spel Bewaren", - L"Spel Laden", - L"Stop", - L"Bewaren Gesel.", - L"Laden Gesel.", - - L"Spel Bewaren voltooid", - L"FOUT bij bewaren spel!", - L"Spel laden succesvol", - L"FOUT bij laden spel!", - - L"De spelversie van het bewaarde spel verschilt van de huidige versie. Waarschijnlijk is het veilig om door te gaan. Doorgaan?", - L"De bewaarde spelen zijn waarschijnlijk ongeldig. Deze verwijderen?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Save version has changed. Please report if there any problems. Continue?", -#else - L"Attempting to load an older version save. Automatically update and load the save?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Save version and game version have changed. Please report if there are any problems. Continue?", -#else - L"Attempting to load an older version save. Automatically update and load the save?", -#endif - - L"Weet je zeker dat je het spel in slot #%d wil overschrijven?", - L"Wil je het spel laden van slot #", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"Er is te weinig ruimte op de harde schijf. Er is maar %d MB vrij en Jagged heeft tenminste %d MB nodig.", - - L"Bewaren", //When saving a game, a message box with this string appears on the screen - - L"Normale Wapens", - L"Stapels Wapens", - L"Realistische stijl", - L"SF stijl", - - L"Moeilijkheid", - L"Platinum Mode", //Placeholder English - - L"Bobby Ray Quality", - L"Good", - L"Great", - L"Excellent", - L"Awesome", - - L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", - L"New Inventory does not work from the default 'Data' folder.", - - L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", - L"Bobby Ray Quantity",// TODO.Translate -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Kaartniveau", - L"Je hebt geen militie. Je moet stadsburgers trainen om een stadsmilitie te krijgen.", - L"Dagelijks Inkomen", - L"Huurling heeft levensverzekering", - L"%s is niet moe.", - L"%s is bezig en kan niet slapen", - L"%s is te moe, probeer het later nog eens.", - L"%s is aan het rijden.", - L"Team kan niet reizen met een slapende huurling.", - - // stuff for contracts - L"Je kunt wel het contract betalen, maar je hebt geen geld meer om de levensverzekering van de huurling te betalen.", - L"%s verzekeringspremie kost %s voor %d extra dag(en). Wil je betalen?", - L"Inventaris Sector", - L"Huurling heeft medische kosten.", - - // other items - L"Medici", // people acting a field medics and bandaging wounded mercs - L"Patiënten", // people who are being bandaged by a medic - L"OK", // Continue on with the game after autobandage is complete - L"Stop", // Stop autobandaging of patients by medics now - L"Sorry. Optie niet mogelijk in deze demo.", // informs player this option/button has been disabled in the demo - L"%s heeft geen reparatie-kit.", - L"%s heeft geen medische kit.", - L"Er zijn nu niet genoeg mensen die getraind willen worden.", - L"%s is vol met milities.", - L"Huurling heeft eindig contract.", - L"Contract Huurling is niet verzekerd", - L"Map Overview", // 24 - - // Flugente: disease texts describing what a map view does TODO.Translate - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate - - // Flugente: weather texts describing what a map view does - L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"Team %d is heeft iemand ontdekt in sector %s", - L"Team %s is heeft iemand ontdekt in sector %s", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"Een stadsmilitie trainen kost $", // telling player how much it will cost - L"Uitgave goedkeuren?", // asking player if they wish to pay the amount requested - L"je kunt dit niet betalen.", // telling the player they can't afford to train this town - L"Doorgaan met militie trainen %s (%s %d)?", // continue training this town? - - L"Kosten $", // the cost in dollars to train militia - L"( J/N )", // abbreviated yes/no - L"", // unused - L"Stadsmilities trainen in %d sectors kost $ %d. %s", // cost to train sveral sectors at once - - L"Je kunt de $%d niet betalen om de stadsmilitie hier te trainen.", - L"%s heeft een loyaliteit nodig van %d procent om door te gaan met milities trainen.", - L"Je kunt de militie in %s niet meer trainen.", - L"liberate more town sectors", // TODO.Translate - - L"liberate new town sectors", // TODO.Translate - L"liberate more towns", // TODO.Translate - L"regain your lost progress", // TODO.Translate - L"progress further", // TODO.Translate - - L"recruit more rebels", // TODO.Translate -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"Je kunt maximaal $20.000 in één keer opnemen.", - L"Weet je zeker dat je %s wil storten op je rekening?", -}; - -STR16 gzCopyrightText[] = -{ - L"Copyright (C) 1999 Sir-tech Canada Ltd. All rights reserved.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Spraak", - L"Bevestigingen uit", - L"Ondertitels", - L"Wacht bij tekst-dialogen", - L"Rook Animeren", - L"Bloedsporen Tonen", - L"Cursor Niet Bewegen", - L"Oude Selectiemethode", - L"Toon reisroute", - L"Toon Missers", - L"Bevestiging Real-Time", - L"Slaap/wakker-berichten", - L"Metrieke Stelsel", - L"Licht Huurlingen Op", - L"Auto-Cursor naar Huurling", - L"Auto-Cursor naar Deuren", - L"Items Oplichten", - L"Toon Boomtoppen", - L"Smart Tree Tops", // TODO. Translate - L"Toon Draadmodellen", - L"Toon 3D Cursor", - L"Show Chance to Hit on cursor", - L"GL Burst uses Burst cursor", - L"Allow Enemy Taunts", // Changed from "Enemies Drop all Items" - SANDRO - L"High angle Grenade launching", - L"Allow Real Time Sneaking", // Changed from "Restrict extra Aim Levels" - SANDRO - L"Space selects next Squad", - L"Show Item Shadow", - L"Show Weapon Ranges in Tiles", - L"Tracer effect for single shot", - L"Rain noises", - L"Allow crows", - L"Show Soldier Tooltips", - L"Auto save", - L"Silent Skyrider", - L"Enhanced Description Box", - L"Forced Turn Mode", // add forced turn mode - L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map - L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate - L"Logical Bodytypes", - L"Show Merc Ranks", // shows mercs ranks // TODO.Translate - L"Show Face gear graphics", // TODO.Translate - L"Show Face gear icons", - L"Uit te schakelen Cursor Swap", // Disable Cursor Swap - L"Quiet Training", // Madd: mercs don't say quotes while training // TODO.Translate - L"Quiet Repairing", // Madd: mercs don't say quotes while repairing // 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"Allow Zombies", // TODO.Translate - L"Enable inventory popups", // the_bob : enable popups for picking items from sector inv // TODO.Translate - L"Mark Remaining Hostiles", // TODO.Translate - L"Show LBE Content", // TODO.Translate - L"Invert mouse wheel", // TODO.Translate - L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances // TODO.Translate - L"Show enemy location", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--DEBUG OPTIONS--", // an example options screen options header (pure text) - L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. // TODO.Translate - L"Reset ALL game options", // failsafe show/hide option to reset all options - L"Do you really want to reset?", // a do once and reset self option (button like effect) - L"Debug Options in other builds", // allow debugging in release or mapeditor - L"DEBUG Render Option group", // an example option that will show/hide other options - L"Render Mouse Regions", // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Schakel deze optie IN als je de karakter-dialogen wil horen.", - - //Mute Confirmation - L"Schakelt verbale bevestigingen v.d. karakters in of uit.", - - //Subtitles - L"Stelt in of dialoogteksten op het scherm worden getoond.", - - //Key to advance speech - L"Als ondertitels AANstaan, schakel dit ook in om tijd te hebben de NPC-dialogen te lezen.", - - //Toggle smoke animation - L"Schakel deze optie uit als rookanimaties het spel vertragen.", - - //Blood n Gore - L"Schakel deze optie UIT als je bloed aanstootgevend vindt.", - - //Never move my mouse - L"Schakel deze optie UIT als je wil dat de muis automatisch gepositioneerd wordt bij bevestigingsdialogen.", - - //Old selection method - L"Schakel deze optie IN als je karakters wil selecteren zoals in de vorige JAGGED ALLIANCE (methode is tegengesteld dus).", - - //Show movement path - L"Schakel deze optie IN om bewegingspaden te tonen in real-time (schakel het uit en gebruik dan de |S|h|i|f|t-toets om paden te tonen).", - - //show misses - L"Schakel IN om het spel de plaats van inslag van je kogels te tonen wanneer je \"mist\".", - - //Real Time Confirmation - L"Als INGESCHAKELD, een extra \"veiligheids\"-klik is nodig om in real-time te bewegen.", - - //Sleep/Wake notification - L"INGESCHAKELD zorgt voor berichten of huurlingen op een \"missie\" slapen of werken.", - - //Use the metric system - L"Wanneer INGESCHAKELD wordt het metrieke stelsel gebruikt, anders het Imperiale stelsel.", - - //Highlight Mercs - L"Wanneer INGESCHAKELD, wordt de huurling gemarkeerd (niet zichtbaar voor vijanden).\nSchakel in het spel met (|G)", - - //Smart cursor - L"Wanneer INGESCHAKELD zullen huurlingen dichtbij de cursor automatisch oplichten.", - - //snap cursor to the door - L"Wanneer INGESCHAKELD zal de cursor dichtbij een deur automatisch boven de deur gepositioneerd worden.", - - //glow items - L"Wanneer INGESCHAKELD lichten items altijd op. (|C|t|r|l+|A|l|t+|I)", - - //toggle tree tops - L"Wanneer INGESCHAKELD worden Boom|toppen getoond.", - - //smart tree tops - L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate - - //toggle wireframe - L"Wanneer INGESCHAKELD worden Draadmodellen van niet-zichtbare muren getoond. (|C|t|r|l+|A|l|t+|W)", - - L"Wanneer INGESCHAKELD wordt de cursor in 3D getoond. (|H|o|m|e)", - - // Options for 1.13 - L"When ON, the chance to hit is shown on the cursor.", - L"When ON, GL burst uses burst cursor.", - L"When ON, enemies will occasionally comment certain actions.", // Changed from Enemies Drop All Items - SANDRO - L"When ON, grenade launchers fire grenades at higher angles. (|A|l|t+|Q)", - L"When ON, the turn based mode will not be entered when sneaking unnoticed and seeing an enemy unless pressing |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO - L"When ON, |S|p|a|c|e selects next squad automatically.", - L"When ON, item shadows will be shown.", - L"When ON, weapon ranges will be shown in tiles.", - L"When ON, tracer effect will be shown for single shots.", - L"When ON, you will hear rain noises when it is raining.", - L"When ON, the crows are present in game.", - 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, Skyrider will not talk anymore.", - 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+|T).", // add forced turn mode - 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, mercenary body graphic can change along with equipped gear.", // 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 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"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, zombies will spawn. Beware!", // allow zombies // TODO.Translate - L"When ON, enables popup boxes that appear when you left click on empty merc inventory slots while viewing sector inventory in mapscreen.", // TODO.Translate - L"When ON, approximate locations of the last enemies in the sector are highlighted.", // TODO.Translate - L"When ON, show the contents of an LBE item, otherwise show the regular NAS interface.", // TODO.Translate - L"When ON, inverts mouse wheel directions.", // TODO.Translate - L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate - L"When ON, shows last known enemy location.", //TODO.Translate - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Force all pending Bobby Ray shipments", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", - L"Click me to fix corrupt game settings", // failsafe show/hide option to reset all options - L"Click me to fix corrupt game settings", // a do once and reset self option (button like effect) - L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor - L"Toggle to display debugging render options", // an example option that will show/hide other options - L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - - -STR16 gzGIOScreenText[] = -{ - L"SPEL-INSTELLINGEN", -#ifdef JA2UB - L"Random Manuel texts ", - L"Off", - L"On", -#else - L"Speelstijl", - L"Realistisch", - L"SF", -#endif - L"Platinum", //Placeholder English - L"Wapenopties", - L"Extra wapens", - L"Normaal", - L"Moeilijksheidsgraad", - L"Beginneling", - L"Ervaren", - L"Expert", - L"INSANE", - L"Start", // TODO.Translate - L"Stop", - L"Extra Moeilijk", - L"Save Anytime", - L"Iron Man", - L"Niet mogelijk bij Demo", - L"Bobby Ray Quality", - L"Good", - L"Great", - L"Excellent", - L"Awesome", - L"Inventory / Attachments", // TODO.Translate - L"NOT USED", - L"NOT USED", - L"Load MP Game", - L"INITIAL GAME SETTINGS (Only the server settings take effect)", - // Added by SANDRO - L"Skill Traits", - L"Old", - L"New", - L"Max IMP Characters", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Enemies Drop All Items", - L"Off", - L"On", -#ifdef JA2UB - L"Tex and John", - L"Random", - L"All", -#else - L"Number of Terrorists", - L"Random", - L"All", -#endif - L"Secret Weapon Caches", - L"Random", - L"All", - L"Progress Speed of Item Choices", - L"Very Slow", - L"Slow", - L"Normal", - L"Fast", - L"Very Fast", - - // TODO.Translate - L"Old / Old", - L"New / Old", - L"New / New", - - // TODO.Translate - // Squad Size - L"Max. Squad Size", - L"6", - L"8", - L"10", - //L"Faster Bobby Ray Shipments", - L"Inventory Manipulation Costs AP", - - L"New Chance to Hit System", - L"Improved Interrupt System", - L"Merc Story Backgrounds", // TODO.Translate - L"Food System",// TODO.Translate - L"Bobby Ray Quantity",// TODO.Translate - - // anv: extra iron man modes - L"Soft Iron Man", // TODO.Translate - L"Extreme Iron Man", // TODO.Translate -}; - -STR16 gzMPJScreenText[] = -{ - L"MULTIPLAYER", - L"Join", - L"Host", - L"Cancel", - L"Refresh", - L"Player Name", - L"Server IP", - L"Port", - L"Server Name", - L"# Plrs", - L"Version", - L"Game Type", - L"Ping", - L"You must enter a player name.", - L"You must enter a valid server IP address. For example: 84.114.195.239", - L"You must enter a valid Server Port between 1 and 65535.", -}; - -// TODO.Translate -STR16 gzMPJHelpText[] = -{ - L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", - L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", // TODO.Translate - - L"HOST", - L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", - L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", - L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", - L"Click on 'Host' to host a new Multiplayer Game.", - - L"JOIN", - L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", - L"Enter the external IP and the Port number from the host.", - L"Click on 'Join' to join an already hosted Multiplayer Game.", -}; - -// TODO.Translate -STR16 gzMPHScreenText[] = -{ - L"HOST GAME", - L"Start", - L"Cancel", - L"Server Name", - L"Game Type", - L"Deathmatch", - L"Team-Deathmatch", - L"Co-Operative", - L"Maximum Players", - L"Maximum Mercs", - L"Merc Selection", - L"Merc Hiring", - L"Hired by Player", - L"Starting Cash", - L"Allow Hiring Same Merc", - L"Report Hired Mercs", - L"Bobby Rays", - L"Sector Starting Edge", - L"You must enter a server name", - L"", - L"", - L"Starting Time", - L"", - L"", - L"Weapon Damage", - L"", - L"Timed Turns", - L"", - L"Enable Civilians in CO-OP", - L"", - L"Maximum Enemies in CO-OP", - L"Synchronize Game Directory", - L"MP Sync. Directory", - L"You must enter a file transfer directory.", - L"(Use '/' instead of '\\' for directory delimiters.)", - L"The specified synchronisation directory does not exist.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Yes", - L"No", - // Starting Time - L"Morning", - L"Afternoon", - L"Night", - // Starting Cash - L"Low", - L"Medium", - L"Heigh", - L"Unlimited", - // Time Turns - L"Never", - L"Slow", - L"Medium", - L"Fast", - // Weapon Damage - L"Very low", - L"Low", - L"Normal", - // Merc Hire - L"Random", - L"Normal", - // Sector Edge - L"Random", - L"Selectable", - // Bobby Ray / Hire same merc - L"Disable", - L"Allow", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Austin", //Austin, Texas, USA - L"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"Hong Kong", //Hong Kong, Hong Kong - L"Beirut", //Beirut, Lebanon (Middle East) - L"London", //London, England - L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Metavira", //The island of Metavira was the fictional location used by JA1 - L"Miami", //Miami, Florida, USA (SE corner of USA) - L"Moscow", //Moscow, USSR - L"New York", //New York, New York, USA - L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Paris", //Paris, France - L"Tripoli", //Tripoli, Libya (eastern Mediterranean) - L"Tokyo", //Tokyo, Japan - L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Are you sure? A value of zero means NO ability in this skill.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"( 8 Karakters Max )", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"Analiseren", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"Bedankt, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Stem", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"Gedood tijdens gevecht", - L"Ontslagen", - L"Anders", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Personeelsmanager", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Spel Gepauzeerd", - L"Doorgaan (|P|a|u|s|e)", - L"Pauze Spel (|P|a|u|s|e)", -}; - - -STR16 pMessageStrings[] = -{ - L"Spel verlaten?", - L"OK", - L"JA", - L"NEE", - L"STOPPEN", - L"WEER AANNEMEN", - L"LEUGEN", - L"Geen beschrijving", //Save slots that don't have a description. - L"Spel opgeslagen.", - L"Spel opgeslagen.", - L"SnelBewaren", //The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"Dag", - L"Huurl", - L"Leeg Slot", //An empty save game slot - L"Demo", //Demo of JA2 - L"Debug", //State of development of a project (JA2) that is a debug build - L"Release", //Release build for JA2 - L"rpm", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"min", //Abbreviation for minute. - L"m", //One character abbreviation for meter (metric distance measurement unit). - L"rnds", //Abbreviation for rounds (# of bullets) - L"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"lb", //Abbreviation for pounds (Imperial weight measurement unit) - L"Home", //Home as in homepage on the internet. - L"USD", //Abbreviation to US dollars - L"nvt", //Lowercase acronym for not applicable. - L"Intussen", //Meanwhile - L"%s is gearriveerd in sector %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying - //SirTech - L"Versie", - L"Leeg SnelBewaarSlot", - L"Dit slot is gereserveerd voor SnelBewaren tijdens tactische en kaartoverzichten m.b.v. ALT+S.", - L"Geopend", - L"Gesloten", - L"Schijfruimte raakt op. Er is slects %s MB vrij en Jagged Alliance 2 v1.13 heeft %s MB nodig.", - L"%s ingehuurd van AIM", - L"%s heeft %s gevangen.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s heeft %s genomen.", //'Merc name' has taken the drug - L"%s heeft geen medische kennis", //'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"De integriteit van het spel is aangetast.", - L"FOUT: CD-ROM geopend", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"Er is geen plaats om vanaf hier te schieten.", - - //Can't change stance due to objects in the way... - L"Kan op dit moment geen standpunt wisselen.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Drop", - L"Gooi", - L"Geef", - - L"%s gegeven aan %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"Geen plaats om %s aan %s te geven.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" eraan vastgemaakt )", - - //Cheat modes - L"Vals spel niveau EEN", - L"Vals spel niveau TWEE", - - //Toggling various stealth modes - L"Team op sluipmodus.", - L"Team niet op sluipmodus.", - L"%s op sluipmodus.", - L"%s niet op sluipmodus.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Extra Draadmodellen Aan", - L"Extra Draadmodellen Uit", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Kan niet naar boven vanaf dit niveau...", - L"Er zijn geen lagere niveaus...", - L"Betreden basisniveau %d...", - L"Verlaten basisniveau...", - - L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Volgmodus UIT.", - L"Volgmodus AAN.", - L"3D Cursor UIT.", - L"3D Cursor AAN.", - L"Team %d actief.", - L"Je kunt %s's dagelijkse salaris van %s niet betalen", //first %s is the mercs name, the seconds is a string containing the salary - L"Overslaan", - L"%s kan niet alleen weggaan.", - L"Een spel is bewaard onder de naam SaveGame249.sav. Indien nodig, hernoem het naar SaveGame10 zodat je het kan aanroepen in het Laden-scherm.", - L"%s dronk wat %s", - L"Een pakket is in Drassen gearriveerd.", - L"%s zou moeten arriveren op het aangewezen punt (sector %s) op dag %d, om ongeveer %s.", - L"Geschiedenisverslag bijgewerkt.", - L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", - L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", - L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO - L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO - L"Granade Launchers fire at standard angles", - L"Grenade Launchers fire at higher angles", - // forced turn mode strings - L"Forced Turn Mode", - L"Normal turn mode", - L"Exit combat mode", - L"Forced Turn Mode Active, Entering Combat", - L"Spel succesvol bewaard in de Einde Beurt Auto Bewaar Slot.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. - L"Client", - - // TODO.Translate - L"You cannot use the Old Inventory and the New Attachment System at the same time.", - - // TODO.Translate - L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID - L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save - L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"End-Turn Save #", // 95 // The text for the tactical end turn auto save - L"Saving Auto Save #", // 96 // The message box, when doing auto save - L"Saving", // 97 // The message box, when doing end turn auto save - L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save - L"This Slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) // TODO.Translate - L"Lock mouse cursor within game window boundary.", // 104 - L"Release mouse cursor from game window boundary.", // 105 - L"Move in Formation ON", // TODO.Translate - L"Move in Formation OFF", - L"Artificial Merc Light ON", // TODO.Translate - L"Artificial Merc Light OFF", - L"Squad %s active.", //TODO.Translate - L"%s smoked %s.", - L"Activate cheats?", - L"Deactivate cheats?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"OK", - L"Scroll Omhoog", - L"Selecteer Alles", - L"Scroll Omlaag", - L"Stop", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s is niet dichtbij genoeg om te worden genezen.", - L"Je medici waren niet in staat om iedereen te verbinden.", -}; - -// TODO.Translate -STR16 pMilitiaButtonsHelpText[] = -{ - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", - L"Distribute available militia equally among all sectors", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Ga naar AIM en huur wat huurlingen in ( *Hint* dat kan bij Laptop )", -#ifdef JA2UB - L"Als je klaar bent om naar Tracona te gaan, klik dan op TijdVersneller onder rechts op het scherm.", // to inform the player to hit time compression to get the game underway -#else - L"Als je klaar bent om naar Arulco te gaan, klik dan op TijdVersneller onder rechts op het scherm.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Fout. Bestanden missen of zijn beschadigd. Spel wordt beëindigd.", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"Lees E-mail", - L"Bekijk web-pagina's", - L"Bekijk bestanden en e-mail attachments", - L"Lees verslag van gebeurtenissen", - L"Bekijk team-info", - L"Bekijk financieel overzicht", - L"Sluit laptop", - - //Bottom task bar icons (if they exist): - L"Je hebt nieuwe berichten", - L"Je hebt nieuwe bestanden", - - //Bookmarks: - L"Association of International Mercenaries", - L"Bobby Ray's online weapon mail order", - L"Institute of Mercenary Profiling", - L"More Economic Recruiting Center", - L"McGillicutty's Mortuarium", - L"United Floral Service", - L"Verzekeringsagenten voor A.I.M. contracten", - //New Bookmarks - L"", - L"Encyclopedia", - L"Briefing Room", - L"Campaign History", // TODO.Translate - L"Mercenaries Love or Dislike You", // TODO.Translate - L"World Health Organization", - L"Kerberus - Excellence In Security", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services", // TODO.Translate - L"Controlled factories", // TODO.Translate -}; - - -STR16 gzHelpScreenText[] = -{ - L"Verlaat help-scherm", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"Er is een gevecht gaande. Je kan alleen terugtrekken m.b.v. het tactische scherm.", - L"B|etreedt sector om door te gaan met het huidige gevecht.", - L"Los huidige gevecht |automatisch op.", - L"Gevecht kan niet automatisch opgelost worden als je de aanvaller bent.", - L"Gevecht kan niet automatisch opgelost worden als je in een hinderlaag ligt.", - L"Gevecht kan niet automatisch opgelost worden als je vecht met beesten in de mijnen.", - L"Gevecht kan niet automatisch opgelost worden als er vijandige burgers zijn.", - L"Gevecht kan niet automatisch opgelost worden als er nog bloodcats zijn.", - L"GEVECHT GAANDE", - L"je kan je op dit moment niet terugtrekken.", -}; - -STR16 gzMiscString[] = -{ - L"Je militie vecht door zonder hulp van je huurlingen...", - L"Het voertuig heeft geen brandstof meer nodig.", - L"De brandstoftank is voor %d%% gevuld.", - L"Het leger van Deidranna heeft totale controle verkregen over %s.", - L"Je hebt een tankplaats verloren.", -}; - -STR16 gzIntroScreen[] = -{ - L"Kan intro video niet vinden", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s hoort een %s geluid uit %s.", - L"%s hoort een %s geluid van BEWEGING uit %s.", - L"%s hoort een %s KRAKEND geluid uit %s.", - L"%s hoort een %s SPETTEREND geluid uit %s.", - L"%s hoort een %s INSLAG uit %s.", - L"%s hears a %s GUNFIRE coming from %s.", // anv: without this, all further noise notifications were off by 1! // TODO.Translate - L"%s hoort een %s EXPLOSIE naar %s.", - L"%s hoort een %s SCHREEUW naar %s.", - L"%s hoort een %s INSLAG naar %s.", - L"%s hoort een %s INSLAG naar %s.", - L"%s hoort een %s VERSPLINTEREN uit %s.", - L"%s hoort een %s KLAP uit %s.", - L"", // anv: placeholder for silent alarm // TODO.Translate - L"%s hears someone's %s VOICE coming from %s.", // anv: report enemy taunt to player // TODO.Translate -}; - -// TODO.Translate -STR16 pTauntUnknownVoice[] = -{ - L"Unknown Voice", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Sorteer op Naam (|F|1)", - L"Sorteer op Taak (|F|2)", - L"Sorteer op Slaapstatus (|F|3)", - L"Sorteer op locatie (|F|4)", - L"Sorteer op Bestemming (|F|5)", - L"Sorteer op Vertrektijd (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"Fout 404", - L"Site niet gevonden.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"Recentelijke ladingen", - L"Order #", - L"Aantal Items", - L"Besteld op", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"Spel Programmeur", // Chris Camfield "Game Internals Programmer" - L"Co-ontwerper/Schrijver", // Shaun Lyng "Co-designer/Writer" - L"Strategische Systemen & Programmeur", //Kris Marnes "Strategic Systems & Editor Programmer" - L"Producer/Co-ontwerper", // Ian Currie "Producer/Co-designer" - L"Co-ontwerper/Kaartontwerp", // Linda Currie "Co-designer/Map Designer" - L"Artiest", // Eric \"WTF\" Cheng "Artist" - L"Beta Coördinator, Ondersteuning", // Lynn Holowka - L"Artiest Extraordinaire", // Norman \"NRG\" Olsen - L"Geluidsgoeroe", // George Brooks - L"Schermontwerp/Artiest", // Andrew Stacey - L"Hoofd-Artiest/Animator", // Scot Loving - L"Hoofd-Programmeur", // Andrew \"Big Cheese Doddle\" Emmons - L"Programmeur", // Dave French - L"Strategische Systemen & Spelbalans Programmeur", // Alex Meduna - L"Portret-Artiest", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(leert nog steeds interpunctie)", // Shaun Lyng - L"(\"Het is klaar. Ben er mee bezig\")", //Kris \"The Cow Rape Man\" Marnes - L"(wordt veel te oud voor dit)", // Ian Currie - L"(en werkt aan Wizardry 8)", // Linda Currie - L"(moets onder bedreiging ook QA doen)", // Eric \"WTF\" Cheng - L"(Verliet ons voor CFSA - dus...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(Dead Head en jazz liefhebber)", // Andrew Stacey - L"(in het echt heet hij Robert)", // Scot Loving - L"(de enige verantwoordelijke persoon)", // Andrew \"Big Cheese Doddle\" Emmons - L"(kan nu weer motorcrossen)", // Dave French - L"(gestolen van Wizardry 8)", // Alex Meduna - L"(deed items en schermen-laden ook!)", // Joey \"Joeker\" Whelan", -}; - -STR16 sRepairsDoneString[] = -{ - L"%s is klaar met reparatie van eigen items.", - L"%s is klaar met reparatie van ieders wapens en bepantering.", - L"%s is klaar met reparatie van ieders uitrusting.", - L"%s finished repairing everyone's large carried items.", - L"%s finished repairing everyone's medium carried items.", - L"%s finished repairing everyone's small carried items.", - L"%s finished repairing everyone's LBE gear.", - L"%s finished cleaning everyone's guns.", // TODO.Translate -}; - -STR16 zGioDifConfirmText[]= -{ - L"Je hebt de NOVICE-modus geselecteerd. Deze instelling is geschikt voor diegenen die Jagged Alliance voor de eerste keer spelen, voor diegenen die nog niet zo bekend zijn met strategy games, of voor diegenen die kortere gevechten in de game willen hebben.", //Je keuze beïnvloedt dingen in het hele verloop van de game, dus weet wat je doet. Weet je zeker dat je in de Novice-modus wilt spelen?", - L"Je hebt de EXPERIENCED-modus geselecteerd. Deze instelling is geschikt voor diegenen die al bekend zijn met Jagged Alliance of dergelijke games. Je keuze beïnvloedt dingen in het hele verloop van de game, dus weet wat je doet. Weet je zeker dat je in de Experienced-modus wilt spelen ?", - L"Je hebt de EXPERT-modus geselecteerd. We hebben je gewaarschuwd. Geef ons niet de schuld als je in een kist terugkomt. Je keuze beïnvloedt dingen in het hele verloop van de game, dus weet wat je doet. Weet je zeker dat je in de Expert-modus wilt spelen?", - L"You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"%S laadscherm-data niet gevonden...", - - //1-5 - L"De robot kan de sector niet verlaten als niemand de besturing gebruikt.", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"Je kan de tijd niet versnellen, Wacht op het vuurwerk!", - - //'Name' refuses to move. - L"%s weigert zich te verplaatsen.", - - //%s a merc name - L"%s heeft niet genoeg energie om standpunt te wisselen.", - - //A message that pops up when a vehicle runs out of gas. - L"%s heeft geen brandstof en is gestrand in %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"boven", - L"onder", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"Niemand van je huurlingen heeft medische kennis.", - L"Er zijn geen medische hulpmiddelen om mensen te verbinden.", - L"Er waren niet genoeg medische hulpmiddelen om iedereen te verbinden.", - L"Geen enkele huurling heeft medische hulp nodig.", - L"Verbindt huurlingen automatisch.", - L"Al je huurlingen zijn verbonden.", - - //14 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - L"(dak)", - - L"Gezondheid: %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d vs. %d", - - L"%s is vol!", //(ex "The ice cream truck is full") - - L"%s heeft geen eerste hulp nodig, maar échte medische hulp of iets dergelijks.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s is geraakt in het been en valt om!", - //Name can't speak right now. - L"%s kan nu niet praten.", - - //22-24 plural versions - L"%d groene milities zijn gepromoveerd tot veteranenmilitie.", - L"%d groene milities zijn gepromoveerd tot reguliere militie.", - L"%d reguliere milities zijn gepromoveerd tot veteranenmilitie.", - - //25 - L"Schakelaar", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s wordt gek!", - - //27-28 - //Messages why a player can't time compress. - L"Het is nu onveilig om de tijd te versnellen omdat je huurlingen hebt in sector %s.", - L"Het is nu onveilig om de tijd te versnellen als er huurlingen zijn in de mijnen met beesten.", - - //29-31 singular versions - L"1 groene militie is gepromoveerd tot veteranenmilitie.", - L"1 groene militie is gepromoveerd tot reguliere militie.", - L"1 reguliere militie is gepromoveerd tot veteranenmilitie.", - - //32-34 - L"%s zegt helemaal niets.", - L"Naar oppervlakte reizen?", - L"(Team %d)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s heeft %s's %s gerepareerd", - - //36 - L"BLOODCAT", - - //37-38 "Name trips and falls" - L"%s ups en downs", - L"Dit item kan vanaf hier niet opgepakt worden.", - - //39 - L"Geen enkele huurling van je is in staat om te vechten. De militie zal zelf tegen de beesten vechten.", - - //40-43 - //%s is the name of merc. - L"%s heeft geen medische kits meer!", - L"%s heeft geen medische kennis om iemand te verzorgen!", - L"%s heeft geen gereedschapkits meer!", - L"%s heeft geen technische kennis om iets te repareren!", - - //44-45 - L"Reparatietijd", - L"%s kan deze persoon niet zien.", - - //46-48 - L"%s's pistoolloopverlenger valt eraf!", - L"No more than %d militia trainers are permitted in this sector.", // TODO.Translate - L"Zeker weten?", - - //49-50 - L"Tijdversneller", - L"De tank van het voertuig is nu vol.", - - //51-52 Fast help text in mapscreen. - L"Doorgaan met Tijdversnelling (|S|p|a|c|e)", - L"Stop Tijdversnelling (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s heeft de %s gedeblokkeerd", - L"%s heeft %s's %s gedeblokkeerd", - - //55 - L"Kan tijd niet versneller tijdens bekijken van sector inventaris.", - - L"Kan de Jagged Alliance 2 v1.13 SPEL CD niet vinden. Programma wordt afgesloten.", - - L"Items succesvol gecombineerd.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Huidig/Max Voortgang: %d%%/%d%%", - - L"John en Mary escorteren?", - - //60 - L"Schakelaar geactiveerd.", - - L"%s's armour attachment has been smashed!", - L"%s fires %d more rounds than intended!", - L"%s fires one more round than intended!", - - L"You need to close the item description box first!", // TODO.Translate - - L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 // TODO.Translate -}; - -STR16 gzCWStrings[] = -{ - L"Call reinforcements to %s from adjacent sectors?", // TODO.Translate -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Location: %d\n", - L"%s|Brightness: %d / %d\n", - L"%s|Range to |Target: %d\n", - L"%s|I|D: %d\n", - L"%s|Orders: %d\n", - L"%s|Attitude: %d\n", - L"%s|Current |A|Ps: %d\n", - L"%s|Current |Health: %d\n", - L"%s|Current |Breath: %d\n", // TODO.Translate - L"%s|Current |Morale: %d\n", - L"%s|Current |S|hock: %d\n",// TODO.Translate - L"%s|Current |S|uppression Points: %d\n",// TODO.Translate - // Full info - L"%s|Helmet: %s\n", - L"%s|Vest: %s\n", - L"%s|Leggings: %s\n", - // Limited, Basic - L"|Armor: ", - L"Helmet", - L"Vest", - L"Leggings", - L"worn", - L"no Armor", - L"%s|N|V|G: %s\n", - L"no NVG", - L"%s|Gas |Mask: %s\n", - L"no Gas Mask", - L"%s|Head |Position |1: %s\n", - L"%s|Head |Position |2: %s\n", - L"\n(in Backpack) ", - L"%s|Weapon: %s ", - L"no Weapon", - L"Handgun", - L"SMG", - L"Rifle", - L"MG", - L"Shotgun", - L"Knife", - L"Heavy Weapon", - L"no Helmet", - L"no Vest", - L"no Leggings", - L"|Armor: %s\n", - // Added - SANDRO - L"%s|Skill 1: %s\n", - L"%s|Skill 2: %s\n", - L"%s|Skill 3: %s\n", - // Additional suppression effects - sevenfm // TODO.Translate - L"%s|A|Ps lost due to |S|uppression: %d\n", - L"%s|Suppression |Tolerance: %d\n", - L"%s|Effective |S|hock |Level: %d\n", - L"%s|A|I |Morale: %d\n", -}; - -STR16 New113Message[] = -{ - L"Storm started.", - L"Storm ended.", - L"Rain started.", - L"Rain ended.", - L"Watch out for snipers...", - L"Suppression fire!", - L"BRST", - L"AUTO", - L"GL", - L"GL BRST", - L"GL AUTO", - L"UB", - L"UBRST", - L"UAUTO", - L"BAYONET", - L"Sniper!", - L"Unable to split money due to having an item on your cursor.", - L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.", - L"Geschrapt punt", - L"Schrapte alle punten van dit type", - L"Verkocht punt", - L"Verkocht alle punten van dit type", - L"You should check your goggles", - // Real Time Mode messages - L"In combat already", - L"No enemies in sight", - L"Real-time sneaking OFF", - L"Real-time sneaking ON", - L"Enemy spotted!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s was successful on stealing!", - L"%s had not enough action points to steal all selected items.", - L"Do you want to make surgery on %s before bandaging? (You can heal about %i Health.)", - L"Do you want to make surgery on %s? (You can heal about %i Health.)", - L"Do you wish to make surgeries first? (%i patient(s))", - L"Do you wish to make the surgery on this patient first?", - L"Apply first aid automatically with surgeries or without them?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Surgery on %s finished.", - L"%s is hit in the chest and loses a point of maximum health!", - L"%s is hit in the chest and loses %d points of maximum health!", - L"%s is blinded by the blast!", - L"%s has regained one point of lost %s", - L"%s has regained %d points of lost %s", - L"Your scouting skills prevented you to be ambushed by the enemy!", - L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", - L"%s is hit to groin and falls down in pain!", - ////////////////////////////////////////////////////////////////////////////////////// - L"Warning: enemy corpse found!!!", - L"%s [%d rnds]\n%s %1.1f %s", - L"Insufficient AP Points! Cost %d, you have %d.", // TODO.Translate - L"Hint: %s", // TODO.Translate - L"Player strength: %d - Enemy strength: %6.0f", // TODO.Translate Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"Cannot use skill!", // TODO.Translate - L"Cannot build while enemies are in this sector!", - L"Cannot spot that location!", - L"Incorrect GridNo for firing artillery!", - L"Radio frequencies are jammed. No communication possible!", - L"Radio action failed!", - L"Not enough mortar shells in sector to start a barrage!", - L"No signal shell item found in Items.xml!", - L"No High-Explosive shell item found in Items.xml!", - L"No mortars found, cannot commence barrage!", - L"Already jamming signal, no need to do so again!", - L"Already listening for nearby sounds, no need to do so again!", - L"Already trying to spot, no need to do so again!", - L"Already scanning for jam signals, no need to do so again!", - L"%s could not apply %s to %s.", - L"%s orders reinforcements from %s.", - L"%s radio set is out of energy.", - L"a working radio set", - L"a binocular", - L"patience", - L"%s's shield has been destroyed!", // TODO.Translate - L" DELAY", // TODO.Translate - L"Yes*", - L"Yes", - L"No", - L"%s applied %s to %s.", // TODO.Translate -}; - -// TODO.Translate -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s cowers in fear!", - L"%s is pinned down!", - L"%s fires more rounds than intended!", - L"You cannot train militia in this sector.", - L"Militia picks up %s.", - L"Cannot train militia with enemies present!", - // 6 - 10 - L"%s lacks sufficient Leadership score to train militia.", - L"No more than %d Mobile Militia trainers are permitted in this sector.", - L"No room in %s or around it for new Mobile Militia!", - L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", - L"Can't staff a facility while enemies are present!", - // 11 - 15 - L"%s lacks sufficient Wisdom to staff this facility.", - L"The %s is already fully-staffed.", - L"It will cost $%d per hour to staff this facility. Do you wish to continue?", - L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", - L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", - // 16 - 20 - L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", - L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", - L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", - L"N/A in this sector", - L"Daily Expenses", - // 21 - 25 - L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", - L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 - L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 - L"To merge two items during combat, you must pick them both up first.", // HAM 5 -}; - -// TODO.Translate -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"No available adjustments", - L"%s was split into several parts.", - L"%s was split into several parts. Check %s's inventory for the resulting items.", - L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", - L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", - L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", - // 6 - 10 - L"Split Crate into Inventory", - L"Split into %d-rd Mags", - L"%s was split into %d Magazines containing %d rounds each.", - L"%s was split into %s's inventory.", - L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", - L"Instant mode", // TODO.Translate - L"Delayed mode", - L"Instant mode (%d AP)", - L"Delayed mode (%d AP)", -}; - -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Hereby be informed that due to Gastons's past performance his fees for services rendered have undergone an increase. Personally, I'm not surprised. ± ± Speck T. Kline ± ", - // Stogie: Text from Line 43 in Email.edt - L"Please be advised that, as of this moment, Stogies's fees for services rendered have increased to coincide with the increase in his abilities. ± ± Speck T. Kline ± ", - // Tex: Text from Line 45 in Email.edt - L"Please be advised that Tex's experience entitles him to more equitable compensation. He's fees have therefore been increased to more accurately reflect his worth. ± ± Speck T. Kline ± ", - // Biggens: Text from Line 49 in Email.edt - L"Please take note. Due to the improved performance of Biggens his fees for services rendered have undergone an increase. ± ± Speck T. Kline ± ", -}; - -// TODO.Translate -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk: Text from Line 58 - L"FW from AIM Server: Message from Victor Kolesnikov", - L"Hello. Monk here. Message received. I'm back if you want to see me. ± ± Waiting for your call. ±", - - // Brain: Text from Line 60 - L"FW from AIM Server: Message from Janno Allik", - L"Am now ready to consider tasks. There is a time and place for everything. ± ± Janno Allik ±", - - // Scream: Text from Line 62 - L"FW from AIM Server: Message from Lennart Vilde", - L"Lennart Vilde now available! ±", - - // Henning: Text from Line 64 - L"FW from AIM Server: Message from Henning von Branitz", - L"Have received your message, thanks. To discuss employment, contact me at the AIM Website. ± ± Till then! ± ± Henning von Branitz ±", - - // Luc: Text from Line 66 - L"FW from AIM Server: Message from Luc Fabre", - L"Mesage received, merci! Am happy to consider your proposals. You know where to find me. ± ± Looking forward to hearing from you. ±", - - // Laura: Text from Line 68 - L"FW from AIM Server: Message from Dr. Laura Colin", - L"Greetings! Good of you to leave a message It sounds interesting. ± ± Visit AIM again I would be happy to hear more. ± ± Best regards! ± ± Dr. Laura Colin ±", - - // Grace: Text from Line 70 - L"FW from AIM Server: Message from Graziella Girelli", - L"You wanted to contact me, but were not successful.± ± A family gathering. I am sure you understand? I've now had enough of family and would be very happy if you would contact me again over the AIM Site. ± ± Ciao! ±", - - // Rudolf: Text from Line 72 - L"FW from AIM Server: Message from Rudolf Steiger", - L"Do you know how many calls I get every day? Every tosser thinks he can call me. ± ± But I'm back, if you have something of interest for me. ±", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"FW from AIM Server: Message about merc availability", - L"I got your message. Waiting for your call. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Sniper: De ogen van een havik, u kunnen de vleugels van een vlieg bij honderd werven ontspruiten! ± ", - // Camouflage - L"Camouflage: Naast u ringt synthetische zelfs blik! ± ", - // SANDRO - new strings for new traits added - // Ranger - L"Ranger: You are the one from Texas deserts, aren't you! ± ", - // Gunslinger - L"Gunslinger: With a handgun or two, you can be as lethal as the Billy Kid! ± ", - // Squadleader - L"Squadleader: Natural leader and boss, you are the big shot no kidding! ± ", - // Technician - L"Technician: Fixing stuff, removing traps, planting bombs, that's your bussiness! ± ", - // Doctor - L"Doctor: You can make a quick surgery with pocket-knife and chewing gum anywhere! ± ", - // Athletics - L"Athletics: Your speed and vitality is on top of possibilities! ± ", - // Bodybuilding - L"Bodybuilding: That big muscular figure which cannot be overlooked is you actually! ± ", - // Demolitions - L"Demolitions: You can blow up a whole city just by common home stuff! ± ", - // Scouting - L"Scouting: Nothing can escape your notice! ± ", - // Covert ops - L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate - // Radio Operator - L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate - // Survival - L"Survival: Nature is a second home to you. ± ", // TODO.Translate -}; - -STR16 NewInvMessage[] = -{ - L"Kan op dit moment niet bestelwagenrugzak", - L"Geen plaats om rugzak te zetten", - L"Gevonden niet rugzak", - L"De ritssluiting werkt slechts in gevecht", - L"Kan niet me bewegen terwijl actieve rugzakritssluiting", - L"Bent zeker u u wilt alle sectorpunten verkopen?", - L"Bent zeker u u wilt alle sectorpunten schr?", - L"Kan beklimmen niet terwijl het dragen van een rugzak", - L"All backpacks dropped", // TODO.Translate - L"All owned backpacks picked up", - L"%s drops backpack", - L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Initiating RakNet server...", - L"Server started, waiting for connections...", - L"You must now connect with your client to the server by pressing '2'.", - L"Server is already running.", - L"Server failed to start. Terminating.", - // 5 - L"%d/%d clients are ready for realtime-mode.", - L"Server disconnected and shutdown.", - L"Server is not running.", - L"Clients are still loading, please wait...", - L"You cannot change dropzone after the server has started.", - // 10 - L"Sent file '%S' - 100/100", - L"Finished sending files to '%S'.", - L"Started sending files to '%S'.", - L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", // TODO.Translate -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Initiating RakNet client...", - L"Connecting to IP: %S ...", - L"Received game settings:", - L"You are already connected.", - L"You are already connecting...", - // 5 - L"Client #%d - '%S' has hired '%s'.", - L"Client #%d - '%S' has hired another merc.", - L"You are ready - Total ready = %d/%d.", - L"You are no longer ready - Total ready = %d/%d.", - L"Starting battle...", - // 10 - L"Client #%d - '%S' is ready - Total ready = %d/%d.", - L"Client #%d - '%S' is no longer ready - Total ready = %d/%d", - L"You are ready. Awaiting other clients... Press 'OK' if you are not ready anymore.", - L"Let us the battle begin!", - L"A client must be running for starting the game.", - // 15 - L"Game cannot start. No mercs are hired...", - L"Awaiting 'OK' from server to unlock the laptop...", - L"Interrupted", - L"Finish from interrupt", - L"Mouse Grid Coordinates:", - // 20 - L"X: %d, Y: %d", - L"Grid Number: %d", - L"Server only feature", - L"Choose server manual override stage: ('1' - Enable laptop/hiring) ('2' - Launch/load level) ('3' - Unlock UI) ('4' - Finish placement)", - L"Sector=%s, Max Clients=%d, Max Mercs=%d, Game_Mode=%d, Same Merc=%d, Damage Multiplier=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Equip=%d, Dis Morale=%d, Testing=%d", - // 25 - L"", - L"New connection: Client #%d - '%S'.", - L"Team: %d.",//not used any more - L"'%s' (client %d - '%S') was killed by '%s' (client %d - '%S')", - L"Kicked client #%d - '%S'", - // 30 - L"Start a new turn for the selected client. #1: , #2: %S, #3: %S, #4: %S", - L"Starting turn for client #%d", - L"Requesting for realtime...", - L"Switched back to realtime.", - L"Error: Something went wrong switching back.", - // 35 - L"Unlock laptop for hiring? (Are all clients connected?)", - L"The server has unlocked the laptop. Begin hiring!", - L"Interruptor.", - L"You cannot change dropzone if you are only the client and not the server.", - L"You declined the offer to surrender, because you are in a multiplayer game.", - // 40 - L"All your mercs are wiped dead!", - L"Spectator mode enabled.", - L"You have been defeated!", - L"Sorry, climbing is disable in MP", - L"You Hired '%s'", - // 45 - L"You cant change the map once purchasing has commenced", - L"Map changed to '%s'", - L"Client '%s' disconnected, removing from game", - L"You were disconnected from the game, returning to the Main Menu", - L"Connection failed, Retrying in 5 seconds, %i retries left...", - //50 - L"Connection failed, giving up...", - L"You cannot start the game until another player has connected", - L"%s : %s", - L"Send to All", - L"Allies only", - // 55 - L"Cannot join game. This game has already started.", - L"%s (team): %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"Received all files from server.", - L"'%S' finished downloading from server.", - L"'%S' started downloading from server.", - L"Cannot start the game until all clients have finished receiving files", - L"This server requires that you download modified files to play, do you wish to continue?", - // 65 - L"Press 'Ready' to enter tactical screen.", - L"Cannot connect because your version %S is different from the server version %S.", - L"You killed an enemy soldier.", - L"Cannot start the game, because all teams are the same.", - L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", - // 70 // TODO.Translate - L"Could not save received file '%S'", - L"%s's bomb was disarmed by %s", - L"You loose, what a shame", // All over red rover - L"Spectator mode disabled", - L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", - // 75 - L"Team %s is wiped out.", - L"Client failed to start. Terminating.", - L"Client disconnected and shutdown.", - L"Client is not running.", - L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", // TODO.Translate - // 80 - L"AI's turn - %d left", // TODO.Translate -}; - -STR16 gszMPEdgesText[] = -{ - L"N", - L"E", - L"S", - L"W", - L"C", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"Foxtrot", - L"Bravo", - L"Delta", - L"Charlie", - L"Nvt", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Game Type: ", - L"Players: ", - L"Mercs each: ", - L"You cannot change starting edge once Laptop is unlocked.", - L"You cannot change teams once the Laptop is unlocked.", - L"Random Mercs: ", - L"Y", - L"Difficulty:", - L"Server Version:", -}; - -STR16 gzMPSScreenText[] = -{ - L"Scoreboard", - L"Continue", - L"Cancel", - L"Player", - L"Kills", - L"Deaths", - L"Queen's Army", - L"Hits", - L"Misses", - L"Accuracy", - L"Damage Dealt", - L"Damage Taken", - L"Please wait for the server to press 'Continue'." -}; - -STR16 gzMPCScreenText[] = -{ - L"Cancel", - L"Connecting to Server", - L"Getting Server Settings", - L"Downloading custom files", - L"Press 'ESC' to cancel or 'Y' to chat", - L"Press 'ESC' to cancel", - L"Ready" -}; - -STR16 gzMPChatToggleText[] = -{ - L"Send to All", - L"Send to Allies only", -}; - -STR16 gzMPChatboxText[] = -{ - L"Multiplayer Chat", - L"'ENTER' to send, 'ESC' to cancel", -}; - -// Following strings added - SANDRO -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits - L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected.", - L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", - // For new major/minor traits - L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", - L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"Please adjust your physical attributes according to your true abilities. You cannot raise any score above", - L"I.M.P. Attributes and skills review.", - L"Bonus Pts.:", - L"Starting Level", - // New strings for new traits - L"On the next page you are going to specify your physical attributes and skills. As 'attributes' are called: health, dexterity, agility, strength and wisdom. Attributes cannot go lower than %d.", - L"The rest are called 'skills' and unlike attributes skills can be set to zero, meaning you have absolutely no proficiency in it.", - L"All scores are set to a minimum at the beginning. Note that certain attributes are set to specific values according to skill traits you have selected. You cannot set those attributes lower than that.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"I.M.P. Character Analysis", - L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", - L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Normal", - L"Friendly", - L"Loner", - L"Optimist", - L"Pessimist", - L"Aggressive", - L"Arrogant", - L"Big Shot", - L"Asshole", - L"Coward", - L"I.M.P. Attitudes", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Normal", - L"Sociable", - L"Loner", - L"Optimist", - L"Assertive", - L"Intellectual", - L"Primitive", - L"Aggressive", - L"Phlegmatic", - L"Dauntless", - L"Pacifist", - L"Malicious", - L"Show-off", - L"Coward", // TODO.Translate - L"I.M.P. Character Traits", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"I.M.P. Colors and Body Type", - L"I.M.P. Colors", - L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", - L"Please select the respective colors of your skin, hair and clothing.", - L"Toggle this to use alternative rifle holding.", - L"\n(Caution: you will need a big strength for this.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Hair Color", - L"Skin Color", - L"Shirt Color", - L"Pants Color", - L"Normal Body", - L"Big Body", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"No Disability", - L"Heat Intolerant", - L"Nervous", - L"Claustrophobic", - L"Nonswimmer", - L"Fear of Insects", - L"Forgetful", - L"Psychotic", - L"Deaf", - L"Shortsighted", - L"Hemophiliac", // TODO.Translate - L"Fear of Heights", - L"Self-Harming", - L"I.M.P. Disabilities", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] =// TODO.Translate -{ - L"We bet you're glad this isn't voicemail.", - L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"You'll be screwed if you ever lose your glasses.", - L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate -{ - L"Are you SURE this is the right job for you?", - L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate -{ - L"Let's just say you are a grounded person.", - L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Might want to make sure your knives are always clean.", - L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// TODO.Translate -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s lacks sufficient Strength to perform this task.", - L"%s lacks sufficient Dexterity to perform this task.", - L"%s lacks sufficient Agility to perform this task.", - L"%s is not Healthy enough to perform this task.", - L"%s lacks sufficient Wisdom to perform this task.", - L"%s lacks sufficient Marksmanship to perform this task.", - // 6 - 10 - L"%s lacks sufficient Medical Skill to perform this task.", - L"%s lacks sufficient Mechanical Skill to perform this task.", - L"%s lacks sufficient Leadership to perform this task.", - L"%s lacks sufficient Explosives Skill to perform this task.", - L"%s lacks sufficient Experience to perform this task.", - // 11 - 15 - L"%s lacks sufficient Morale to perform this task.", - L"%s is too exhausted to perform this task.", - L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.", - L"Too many people are already working at the %s.", - L"Too many people are already performing this task at the %s.", - // 16 - 20 - L"%s can find no items to repair.", - L"%s has lost some %s while working in sector %s!", - L"%s has lost some %s while working at the %s in %s!", - L"%s was injured while working in sector %s, and requires immediate medical attention!", - L"%s was injured while working at the %s in %s, and requires immediate medical attention!", - // 21 - 25 - L"%s was injured while working in sector %s. It doesn't seem too bad though.", - L"%s was injured while working at the %s in %s. It doesn't seem too bad though.", - L"The residents of %s seem upset about %s's presence.", - L"The residents of %s seem upset about %s's work at the %s.", - L"%s's actions in sector %s have caused loyalty loss throughout the region!", - // 26 - 30 - L"%s's actions at the %s in %s have caused loyalty loss throughout the region!", - L"%s is drunk.", // <--- This is a log message string. - L"%s has become severely ill in sector %s, and has been taken off duty.", - L"%s has become severely ill and cannot continue his work at the %s in %s.", - L"%s was injured in sector %s.", // <--- This is a log message string. - // 31 - 35 - L"%s was severely injured in sector %s.", //<--- This is a log message string. - L"There are currently prisoners here who are aware of %s's identity.", // TODO.Translate - L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", // TODO.Translate - - -}; - -// TODO.Translate -STR16 gzFacilityRiskResultStrings[]= -{ - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Health", - L"Marksmanship", - // 5-10 - L"Leadership", - L"Mechanical skill", - L"Medical skill", - L"Explosives skill", -}; - -// TODO.Translate -STR16 gzFacilityAssignmentStrings[]= -{ - L"AMBIENT", - L"Staff", - L"Eat",// TODO.Translate - L"Rest", - L"Repair Items", - L"Repair %s", // Vehicle name inserted here - L"Repair Robot", - // 6-10 - L"Doctor", - L"Patient", - L"Practice Strength", - L"Practice Dexterity", - L"Practice Agility", - L"Practice Health", - // 11-15 - L"Practice Marksmanship", - L"Practice Medical", - L"Practice Mechanical", - L"Practice Leadership", - L"Practice Explosives", - // 16-20 - L"Student Strength", - L"Student Dexterity", - L"Student Agility", - L"Student Health", - L"Student Marksmanship", - // 21-25 - L"Student Medical", - L"Student Mechanical", - L"Student Leadership", - L"Student Explosives", - L"Trainer Strength", - // 26-30 - L"Trainer Dexterity", - L"Trainer Agility", - L"Trainer Health", - L"Trainer Marksmanship", - L"Trainer Medical", - // 30-35 - L"Trainer Mechanical", - L"Trainer Leadership", - L"Trainer Explosives", - L"Interrogate Prisoners", // added by Flugente TODO.Translate - L"Undercover Snitch", // TODO.Translate - // 36-40 - L"Spread Propaganda", - L"Spread Propaganda", // spread propaganda (globally) - L"Gather Rumours", - L"Command Militia", // militia movement orders -}; - -STR16 Additional113Text[]= -{ - L"Jagged Alliance 2 v1.13 windowed modus vereist een kleurdiepte van 16 bits per pixel.", - L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate - L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", - // TODO.Translate - // WANNE: Savegame slots validation against INI file - L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", - L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -STR16 sEnemyTauntsFireGun[]= -{ - L"Suck this!", - L"Touch this!", - L"Come get some!", - L"You're mine!", - L"Die!", - L"You scared, motherfucker?", - L"This will hurt!", - L"Come on you bastard!", - L"Come on! I don't got all day!", - L"Come to daddy!", - L"You'll be six feet under in no time!", - L"Will send ya home in a pinebox, loser!", - L"Hey, wanna play?", - L"You should have stayed home, bitch.", - L"Sucker!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"We have a barbecue here.", - L"I got a present for ya.", - L"Bam!", - L"Smile!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Catch!", - L"Here ya go!", - L"Pop goes the weasel.", - L"This one's for you.", - L"Muhehe.", - L"Catch this, swine!", - L"I like this.", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"I'll get your scalp.", - L"Come to papa.", - L"Show me your guts!", - L"I'll rip you to pieces!", - L"Motherfucker!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"We're in some real shit...", - L"They said join the army. Not for this shit!", - L"I have enough.", - L"Oh my God.", - L"They ain't paying us enough for this.", - L"It's just too much for me.", - L"I'll bring some friends.", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"I heard that!", - L"Who's there?", - L"What was that?", - L"Hey! What the...", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"They are here!", - L"Now the fun can start.", - L"I hoped this will never happen.", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"Ouch!", - L"Ugh!", - L"This.. hurts!", - L"You fuck!", - L"You will regret.. uhh.. this.", - L"What the..!", - L"Now you have.. pissed me off.", - -}; - -// TODO.Translate -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Da'ffff...!", - L"Oh my God!", - L"Holy crap!", - L"Enemy!!!", - L"Alert! Alert!", - L"There is one!", - L"Attack!", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Description", - L"General", - L"Advanced", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Desc", - L"Gen", - L"Adv", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Primary", - L"Secondary", - L"AP Costs", - L"Burst / Autofire", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Prop.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", - L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", - L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", - L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", - L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", - L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", - L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", - L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", - L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Property icon (mouse-over to reveal name).", - L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", - L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", - L"Bonus/penalty given while |p|r|o|n|e.", - L"Bonus/penalty given", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y", - L"|D|a|m|a|g|e", - L"|R|a|n|g|e", - L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", // TODO.Translate - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s", - L"|R|e|l|i|a|b|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", - L"|A|P|s |t|o |R|e|a|d|y", - L"|A|P|s |t|o |A|t|t|a|c|k", - L"|A|P|s |t|o |B|u|r|s|t", - L"|A|P|s |t|o |A|u|t|o|f|i|r|e", - L"|A|P|s |t|o |R|e|l|o|a|d", - L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", - L"", // No longer used! - L"|T|o|t|a|l |R|e|c|o|i|l", // TODO.Translate - L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", - L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", - L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", - L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", // TODO.Translate - L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", - L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", - L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", - L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", - L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", - L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nThe minimum range at which a scope can provide it's aimBonus.", - L"\n \nTo hit modifier granted by laser sights.", - L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", - L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", - L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", - L"", // No longer used! - L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. // TODO.Translate - L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", - L"|C|o|v|e|r|a|g|e", - L"|D|e|g|r|a|d|e |R|a|t|e", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", - L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", - L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|A|r|m|o|r |P|i|e|r|c|i|n|g", - L"|B|u|l|l|e|t |T|u|m|b|l|e", - L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate - L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", // TODO.Translate - L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", - L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", - L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", // TODO.Translate - L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", // TODO.Translate - L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", // TODO.Translate -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|D|a|m|a|g|e", - L"|S|t|u|n |D|a|m|a|g|e", - L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 // TODO.Translate - L"|B|l|a|s|t |R|a|d|i|u|s", - L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", - L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", - L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", - L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", - L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", - L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", - // HEADROCK HAM 5: Fragmentation // TODO.Translate - L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", - L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", - L"|F|r|a|g|m|e|n|t |R|a|n|g|e", - // HEADROCK HAM 5: End Fragmentations - L"|L|o|u|d|n|e|s|s", - L"|V|o|l|a|t|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", - L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", - L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 // TODO.Translate - L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", - L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", - L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", - L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", - L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", - L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", - // HEADROCK HAM 5: Fragmentation // TODO.Translate - L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", - L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", - L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", - L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", - L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|R|e|p|a|i|r |E|a|s|e", - L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", - L"|V|o|l|u|m|e", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", - L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|T|r|a|c|e|r |A|m|m|o", - L"|A|n|t|i|-|T|a|n|k |A|m|m|o", - L"|I|g|n|o|r|e|s |A|r|m|o|r", - L"|A|c|i|d|i|c |A|m|m|o", - L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", - L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", - L"|W|a|t|e|r|p|r|o|o|f", - L"|E|l|e|c|t|r|o|n|i|c", - L"|G|a|s |M|a|s|k", - L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", - L"|C|a|n |P|i|c|k |L|o|c|k|s", - L"|C|a|n |C|u|t |W|i|r|e|s", - L"|C|a|n |S|m|a|s|h |L|o|c|k|s", - L"|M|e|t|a|l |D|e|t|e|c|t|o|r", - L"|R|e|m|o|t|e |T|r|i|g|g|e|r", - L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", - L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", - L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", - L"|T|o|o|l |K|i|t", - L"|T|h|e|r|m|a|l |O|p|t|i|c|s", - L"|X|-|R|a|y |D|e|v|i|c|e", - L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", - L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", - L"|F|i|r|s|t |A|i|d |K|i|t", - L"|M|e|d|i|c|a|l |K|i|t", - L"|L|o|c|k |B|o|m|b", - L"|D|r|i|n|k",// TODO.Translate - L"|M|e|a|l", - L"|A|m|m|o |B|e|l|t", - L"|A|m|m|o |V|e|s|t", - L"|D|e|f|u|s|a|l |K|i|t", // TODO.Translate - L"|C|o|v|e|r|t |I|t|e|m", // TODO.Translate - L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", - L"|M|a|d|e |o|f |M|e|t|a|l", - L"|S|i|n|k|s", - L"|T|w|o|-|H|a|n|d|e|d", - L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", - L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate - L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|S|h|i|e|l|d", // TODO.Translate - L"|C|a|m|e|r|a", // TODO.Translate - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate - L"|B|l|o|o|d |B|a|g", // 44 - L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", - L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", - L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", - L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", - L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", - L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", - L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", - L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", - L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", - L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", - L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", //JMich_SkillsModifiers: needs to be followed by a number", // TODO.Translate - L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", - L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate - L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", - L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", - L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", - L"\n \nThis item contains various tools that can\nbe used to repair other items.\n \nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", //JMich_SkillsModifiers: need to be followed by a number // TODO.Translate - L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", - L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", - L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", - L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", - L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", - L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", - L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", - L"\n \nThis item will still your thirst\nif you drink it.",// TODO.Translate - L"\n \nThis item will still your hunger\nif you eat it.", - L"\n \nWith this ammo belt you can\nfeed someone else's MG.", - L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", - L"\n \nThis item improves your trap disarm chance by ", // TODO.Translate - L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", // TODO.Translate - L"\n \nThis item cannot be damaged.", - L"\n \nThis item is made of metal.\nIt takes less damage than other items.", - L"\n \nThis item sinks when put in water.", - L"\n \nThis item requires both hands to be used.", - L"\n \nThis item will block your iron sights\nso you cannot use them.", - L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate - L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", - L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", - L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate - L"\n \nYou can take photos with this.", // TODO.Translate - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate - L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", - L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", - L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", - L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", - L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", - L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", - L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", - L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", - L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", - L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", - L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", - L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", - L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", - L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", - L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", - L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", - L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", - L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|T|u|n|n|e|l |V|i|s|i|o|n", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", - L"|T|o|-|H|i|t |B|o|n|u|s", - L"|A|i|m |B|o|n|u|s", - L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", // TODO.Translate - L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", - L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate - L"|D|i|r|t |M|o|d|i|f|i|e|r", // TODO.Translate - L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r",// TODO.Translate - L"|F|o|o|d| |P|o|i|n|t|s",// TODO.Translate - L"|D|r|i|n|k |P|o|i|n|t|s",// TODO.Translate - L"|P|o|r|t|i|o|n |S|i|z|e",// TODO.Translate - L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r",// TODO.Translate - 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 - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", - L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", - L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", - L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", - L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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 \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate - L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", - L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", - L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", // TODO.Translate - L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate - L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", // TODO.Translate - L"\n \nAmount of energy in kcal.\n \nHigher is better.", // TODO.Translate - L"\n \nAmount of water in liter.\n \nHigher is better.", // TODO.Translate - 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"", - 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 - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", - L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", - L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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 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 \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 be damaged more easily.", - L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"SINGLE", - L"AP", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// TODO.Translate -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"Finished sorting ammo into crates in sector %c%d.", - L"Finished removing attachments from items in sector %c%d.", - L"Finished ejecting ammo from weapons in sector %c%d.", - L"Finished stacking and merging all items in sector %c%d.", - // Bob: new strings for emptying LBE items - L"Finished emptying LBE items in sector %c%d.", - L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Show all", - L"Guns", - L"Ammo", - L"Explosives", - L"Melee Weapons", - L"Armor", - L"LBE", - L"Kits", - L"Misc. Items", - L"Hide all", -}; - -STR16 gzMercCompare[] = -{ - L"???", - L"Base opinion:", - - L"Dislikes %s %s", - L"Likes %s %s", - - L"Strongly hates %s", - L"Hates %s", // 5 - - L"Deep racism against %s", - L"Racism against %s", - - L"Cares deeply about looks", - L"Cares about looks", - - L"Very sexist", // 10 - L"Sexist", - - L"Dislikes other background", - L"Dislikes other backgrounds", - - L"Past grievances", - L"____", // 15 - L"/", - L"* Opinion is always in [%d; %d]", // TODO.Translate -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = // TODO.Translate -{ - L"Temperature is ", - L"very low", - L"low", - L"medium", - L"high", - L"very high", - L"dangerous", - L"CRITICAL", - L"DRAMATIC", - L"unknown", - L"." -}; - -// TODO.Translate -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"Food is ", - L"fresh", - L"good", - L"ok", - L"stale", - L"shabby", - L"rotting", - L"." -}; - -// TODO.Translate -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Pvt. ", //ExpLevel 1 - L"Pfc. ", //ExpLevel 2 - L"Cpl. ", //ExpLevel 3 - L"Sgt. ", //ExpLevel 4 - L"Lt. ", //ExpLevel 5 - L"Cpt. ", //ExpLevel 6 - L"Maj. ", //ExpLevel 7 - L"Lt.Col. ", //ExpLevel 8 - L"Col. ", //ExpLevel 9 - L"Gen. " //ExpLevel 10 -}; - -STR16 gzNewLaptopMessages[]= -{ - L"Ask about our special offer!", - L"Temporarily Unavailable", - L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Range to target: %d tiles, Brightness: %d/%d", - L"Attaching the transmitter to your laptop computer.", - L"You cannot afford to hire %s", - L"For a limited time, the above fee covers the cost of the entire mission and includes the equipment listed below.", - L"Hire %s now and take advantage of our unprecedented 'one fee covers all' pricing. Also included in this unbelievable offer is the mercenary's personal equipment at no charge.", - L"Fee", - L"There is someone else in the sector...", - //L"Gun Range: %d tiles, Chance to hit: %d percent", - L"Display Cover", - L"Line of Sight", - L"New Recruits cannot arrive there.", - L"Since your laptop has no transmitter, you won't be able to hire new team members. Perhaps this would be a good time to load a saved game or start over!", - L"%s hears the sound of crumpling metal coming from underneath Jerry's body. It sounds disturbingly like your laptop antenna being crushed.", //the %s is the name of a merc. @@@ Modified - L"After scanning the note left behind by Deputy Commander Morris, %s senses an oppurtinity. The note contains the coordinates for launching missiles against different towns in Arulco. It also gives the coodinates of the origin - the missile facility.", - L"Noticing the control panel, %s figures the numbers can be reversed, so that the missile might destroy this very facility. %s needs to find an escape route. The elevator appears to offer the fastest solution...", - L"This is an IRON MAN game and you cannot save when enemies are around.", // @@@ new text - L"(Cannot save during combat)", //@@@@ new text - L"The current campaign name is greater than 30 characters.", // @@@ new text - L"The current campaign cannot be found.", // @@@ new text - L"Campaign: Default ( %S )", // @@@ new text - L"Campaign: %S", // @@@ new text - L"You have selected the campaign %S. This campaign is a player-modified version of the original Unfinished Business campaign. Are you sure you wish to play the %S campaign?", // @@@ new text - L"In order to use the editor, please select a campaign other than the default.", ///@@new - // anv: extra iron man modes - L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", // TODO.Translate - L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", // TODO.Translate -}; - -// The_bob : pocket popup text defs // TODO.Translate -STR16 gszPocketPopupText[]= -{ - L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN - L"- no matching ammo -", //POCKET_POPUP_NO_AMMO - L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS - L"more...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features // TODO.Translate -STR16 szCovertTextStr[]= -{ - L"%s has camo!", - L"%s has a backpack!", - L"%s is seen carrying a corpse!", - L"%s's %s is suspicious!", - L"%s's %s is considered military hardware!", - L"%s carries too many guns!", - L"%s's %s is too advanced for an %s soldier!", - L"%s's %s has too many attachments!", - L"%s was seen performing suspicious activities!", - L"%s does not look like a civilian!", - L"%s bleeding was discovered!", - L"%s is drunk and doesn't behave like a soldier!", - L"On closer inspection, %s's disguise does not hold!", - L"%s isn't supposed to be here!", - L"%s isn't supposed to be here at this time!", - L"%s was seen near a fresh corpse!", - L"%s equipment raises a few eyebrows!", - L"%s is seen targetting %s!", - L"%s has seen through %s's disguise!", - L"No clothes item found in Items.xml!", - L"This does not work with the old trait system!", - L"Not enough APs!", - L"Bad palette found!", - L"You need the covert skill to do this!", - L"No uniform found!", - L"%s is now disguised as a civilian.", - L"%s is now disguised as a soldier.", - L"%s wears a disorderly uniform!", - L"In retrospect, asking for surrender in disguise wasn't the best idea...", - L"%s was uncovered!", - L"%s's disguise seems to be ok...", - L"%s's disguise will not hold.", - L"%s was caught stealing!", - L"%s tried to manipulate %s's inventory.", - L"An elite soldier did not recognize %s!", // TODO.Translate - L"A officer knew %s was unfamiliar!", -}; - -STR16 szCorpseTextStr[]= -{ - L"No head item found in Items.xml!", - L"Corpse cannot be decapitated!", - L"No meat item found in Items.xml!", - L"Not possible, you sick, twisted individual!", - L"No clothes to take!", - L"%s cannot take clothes off of this corpse!", - L"This corpse cannot be taken!", - L"No free hand to carry corpse!", - L"No corpse item found in Items.xml!", - L"Invalid corpse ID!", -}; - -STR16 szFoodTextStr[]= -{ - L"%s does not want to eat %s", - L"%s does not want to drink %s", - L"%s ate %s", - L"%s drank %s", - L"%s's strength was damaged due to being overfed!", - L"%s's strength was damaged due to lack of nutrition!", - L"%s's health was damaged due to being overfed!", - L"%s's health was damaged due to lack of nutrition!", - L"%s's strength was damaged due to excessive drinking!", - L"%s's strength was damaged due to lack of water!", - L"%s's health was damaged due to excessive drinking!", - L"%s's health was damaged due to lack of water!", - L"Sectorwide canteen filling not possible, Food System is off!" -}; - -// TODO.Translate -STR16 szPrisonerTextStr[]= -{ - L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate - L"Gained $%d as ransom money.", // TODO.Translate - L"%d prisoners revealed enemy positions.", - L"%d officers, %d elites, %d regulars and %d admins joined our cause.", - L"Prisoners start a massive riot in %s!", - L"%d prisoners were sent to %s!", - L"Prisoners have been released!", - L"The army now occupies the prison in %s, the prisoners were freed!", - L"The enemy refuses to surrender!", - L"The enemy refuses to take you as prisoners - they prefer you dead!", - L"This behaviour is set OFF in your ini settings.", - L"%s has freed %s!", - L"A high-ranking army officer in %s has been revealed!", // TODO.Translate - L"The enemy leader refuses to even consider surrender!", - L"%d prisoners volunteered to join our forces.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= // TODO.Translate -{ - L"nothing", - L"building a fortification", - L"removing a fortification", - L"hacking", // TODO.Translate - L"%s had to stop %s.", - L"The selected barricade cannot be built in this sector", // TODO.Translate -}; - -STR16 szInventoryArmTextStr[]= // TODO.Translate -{ - L"Blow up (%d AP)", - L"Blow up", - L"Arm (%d AP)", - L"Arm", - L"Disarm (%d AP)", - L"Disarm", -}; - -// TODO.Translate -STR16 szBackgroundText_Flags[]= -{ - L" might consume drugs in inventory\n", - L" disregard for all other backgrounds\n", - L" +1 level in underground sectors\n", - L" steals money from the locals sometimes\n", // TODO.Translate - - 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 - - L" huge loyality penalty in all towns if we die\n", // TODO.Translate - - L" refuses to attack animals\n", // TODO.Translate - L" refuses to attack members of the same group\n", // TODO.Translate -}; - -// TODO.Translate -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% APs in polar sectors\n", - L" %s%d%% APs in desert sectors\n", - L" %s%d%% APs in swamp sectors\n", - L" %s%d%% APs in urban sectors\n", - L" %s%d%% APs in forest sectors\n", // TODO.Translate - L" %s%d%% APs in plain sectors\n", - L" %s%d%% APs in river sectors\n", - L" %s%d%% APs in tropical sectors\n", - L" %s%d%% APs in coastal sectors\n", - L" %s%d%% APs in mountainous sectors\n", - - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% leadership stat\n", - L" %s%d%% marksmanship stat\n", - 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", - L" %s%d%% APs needed for fortification actions\n", - L" %s%d%% APs needed for mortars\n", - L" %s%d%% APs needed to access inventory\n", - L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", - L" %s%d%% APs on first turn when assaulting a sector\n", - - L" %s%d%% travel speed on foot\n", - L" %s%d%% travel speed on land vehicles\n", - L" %s%d%% travel speed on air vehicles\n", - L" %s%d%% travel speed on water vehicles\n", - - L" %s%d%% fear resistance\n", - L" %s%d%% suppression resistance\n", - L" %s%d%% physical resistance\n", - L" %s%d%% alcohol resistance\n", - L" %s%d%% disease resistance\n", // TODO.Translate - - L" %s%d%% interrogation effectiveness\n", - L" %s%d%% prison guard strength\n", - L" %s%d%% better prices when trading guns and ammo\n", - L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", - L" %s%d%% team capitulation strength if we lead negotiations\n", - L" %s%d%% faster running\n", - L" %s%d%% bandaging speed\n", - L" %s%d%% breath regeneration\n", // TODO.Translate - L" %s%d%% strength to carry items\n", - L" %s%d%% food consumption\n", - L" %s%d%% water consumption\n", - L" %s%d need for sleep\n", - L" %s%d%% melee damage\n", - L" %s%d%% cth with blades\n", - L" %s%d%% camo effectiveness\n", - L" %s%d%% stealth\n", - L" %s%d%% max CTH\n", - L" %s%d hearing range during the night\n", - L" %s%d hearing range during the day\n", - L" %s%d effectivity at disarming traps\n", // TODO.Translate - L" %s%d%% CTH with SAMs\n", // TODO.Translate - - L" %s%d%% effectiveness to friendly approach\n", - L" %s%d%% effectiveness to direct approach\n", - L" %s%d%% effectiveness to threaten approach\n", - 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", - L" %s%d%% insurance cost\n", - L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate - L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate - L" %s%d%% effectiveness at treating population against diseases\n", - L"Can spot tracks up to %d tiles away\n", - L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% chance to evade snake attacks\n", // TODO.Translate - - L" dislikes some other backgrounds\n", // TODO.Translate - L"Smoker", - L"Nonsmoker", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% building speed\n", - L" hacking skill: %s%d ", // TODO.Translate - L" %s%d%% burial speed\n", // TODO.Translate - L" %s%d%% administration effectiveness\n", // TODO.Translate - L" %s%d%% exploration effectiveness\n", // TODO.Translate -}; - -STR16 szBackgroundTitleText[] = // TODO.Translate -{ - L"I.M.P. Background", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = // TODO.Translate -{ - L"I.M.P. Prejudices", -}; - -STR16 szPersonalityDisplayText[]= // TODO.Translate -{ - L"You look", - L"and appearance is", - L"important to you.", - L"You have", - L"and care", - L"about that.", - L"You are", - L"and hate everyone", - L".", - L"racist against non-", - L"people.", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"How do you look?", - L"How important are the looks of others to you?", - L"What are your manners?", - L"How important are the manners of other people to you?", - L"What is your nationality?", - L"What nation o you dislike?", - L"How much do you dislike that nation?", - L"How racist are you?", - L"What is your race? You will be\nracist against all other races.", - L"How sexist are you against the other gender?", -}; - -STR16 szRaceText[]= -{ - L"white", - L"black", - L"asian", - L"eskimo", - L"hispanic", -}; - -STR16 szAppearanceText[]= -{ - L"average", - L"ugly", - L"homely", - L"attractive", - L"like a babe", -}; - -STR16 szRefinementText[]= -{ - L"average manners", - L"manners of a slob", - L"manners of a snob", -}; - -STR16 szRefinementTextTypes[] = // TODO.Translate -{ - L"normal people", - L"slobs", - L"snobs", -}; - -STR16 szNationalityText[]= -{ - L"American", // 0 - L"Arab", - L"Australian", - L"British", - L"Canadian", - L"Cuban", // 5 - L"Danish", - L"French", - L"Russian", - L"Traconian", - L"Swiss", // 10 - L"Jamaican", - L"Polish", - L"Chinese", - L"Irish", - L"South African", // 15 - L"Hungarian", - L"Scottish", - L"Arulcan", - L"German", - L"African", // 20 - L"Italian", - L"Dutch", - L"Romanian", - L"Metaviran", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"Belarusian", - L"Belgian", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"Brasilian", - L"Bulgarian", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"Estonian", - L"Ethiopian", - L"Filipino", // 50 - L"Finnish", - L"Georgian", - L"Greek", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Indian", - L"Indonesian", - L"Iranian", - L"Iraqi", // 60 - L"Islandic", - L"Israeli", - L"Japanese", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Mexican", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Nigerian", - L"Nigerien", - L"Norwegian", - L"Pakistani", // 85 - L"Panamanian", - L"Portoguese", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"Serbian", - L"Slovakian", - L"Slovenian", - L"Somali", - L"Spanish", // 95 - L"Sudanese", - L"Swedish", - L"Syrian", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"Turkish", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"Venezuelan", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -STR16 szNationalityTextAdjective[] = // TODO.Translate -{ - L"americans", // 0 - L"arabs", - L"australians", - L"britains", - L"canadians", - L"cubans", // 5 - L"danes", - L"frenchmen", - L"russians", - L"traconians", - L"swiss", // 10 - L"jamaicans", - L"poles", - L"chinese", - L"irishmen", - L"south africans", // 15 - L"hungarians", - L"scotsmen", - L"arulcans", - L"germans", - L"africans", // 20 - L"italians", - L"dutchmen", - L"romanians", - L"metavirans", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"belarusians", - L"belgians", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"brasilians", - L"bulgarians", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"estonians", - L"ethiopians", - L"filipinos", // 50 - L"finns", - L"georgians", - L"greek", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"indians", - L"indonesians", - L"iranians", - L"iraqis", // 60 - L"islandics", - L"israelis", - L"japanese", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"mexicans", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"nigerians", - L"nigeriens", - L"norwegians", - L"pakistanis", // 85 - L"panamanians", - L"portoguese", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"serbians", - L"slovakians", - L"slovenians", - L"somali", - L"spaniards", // 95 - L"sudanese", - L"swedes", - L"syrians", - L"thais", - L"togolese", // 100 - L"tunisians", - L"turks", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"venezuelans", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"and do not hate any other nationality.", // used in personnel.cpp - L"of no origin", // used in IMP generation -}; - -STR16 szCareLevelText[]= -{ - L"not", - L"somewhat", - L"extremely", -}; - -STR16 szRacistText[]= -{ - L"not", - L"somewhat", - L"very", -}; - -STR16 szSexistText[]= -{ - L"no sexist", - L"somewhat sexist", - L"very sexist", - L"a Gentleman", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"Batteries are ", - L"full", - L"good", - L"at half", - L"low", - L"depleted", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= // TODO.Translate -{ - L"Mercenary", - L"Green militia", - L"Regular militia", - L"Elite militia", - - L"Civilian", - - L"Administrator", - L"Army Soldier", - L"Elite Soldier", - L"Tank", - - L"Creature", - L"Zombie", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"%s Press Council", - L"Ministry for %s Information Distribution", - L"%s Revolutionary Movement", - L"The Times International", - L"International Times", - L"R.I.S. (Recon Intelligence Service)", - - L"A collection of press sources from %s", - L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", - - L"Conflict Summary", - L"Battle reports", - L"News", - L"About us", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s in %s.", - - L"rebel forces", - L"the army", - - L"attacked", - L"ambushed", - L"airdropped", - - L"The attack came from %s.", - L"%s were reinforced from %s.", - L"The attack came from %s, %s were reinforced from %s.", - L"north", - L"east", - L"south", - L"west", - L"and", - L"an unknown location", // TODO.Translate - - L"Buildings in the sector were damaged.", // TODO.Translate - L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", - L"During the attack, %s and %s called reinforcements.", - L"During the attack, %s called reinforcements.", - L"Eyewitnesses report the use of chemical weapons from both sides.", - L"Chemical weapons were used by %s.", - L"In a serious escalation of the conflict, both sides deployed tanks.", - L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", - L"Both sides are said to have used snipers.", - L"Unverified reports indicate %s snipers were involved in the firefight.", - L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", - L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", - L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"Deep in the night", // 23 - 3 - L"At dawn", // 3 - 6 - L"Early in the morning", // 6 - 8 - L"In the morning hours", // 8 - 11 - L"At noon", // 11 - 14 - L"On the afternoon", // 14 - 18 - L"On the evening", // 18 - 21 - L"During the night", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Initial funding", - L"Mine income", - L"Trade", - L"Other sources", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Ammunition", - L"Explosives", - L"Food", - L"Medical gear", - L"Item maintenance", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"In an extremely one-sided battle, the army force was wiped out without much resistance.", - - L"The rebels easily defeated the army, inflicting heavy losses.", - L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", - - L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", - L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", - - L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", - - L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", - L"Despite the high number of rebels in this sector, the army easily dispatched them.", - - L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", - L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", - - L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", - L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", - - L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"Irrelevant", - L"Insignificant", - L"Notable", - L"Noteworthy", - L"Significant", - L"Interesting", - L"Important", - L"Very important", - L"Grave", - L"Major", - L"Momentous", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"Killed", - L"Wounded", - L"Prisoners", - L"Shots fired", - - L"Money earned", - L"Consumption", - L"Losses", - L"Participants", - - L"Promotions", - L"Summary", - L"Detail", - L"Previous", - - L"Next", - L"Incident", - L"Day", -}; - -STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate -{ - L"Glorious %s", - L"Mighty %s", - L"Awesome %s", - L"Intimidating %s", - - L"Powerful %s", - L"Earth-Shattering %s", - L"Insidious %s", - L"Swift %s", - - L"Violent %s", - L"Brutal %s", - L"Relentless %s", - L"Merciless %s", - - L"Cannibalistic %s", - L"Gorgeous %s", - L"Rogue %s", - L"Dubious %s", - - L"Sexually Ambigious %s", - L"Burning %s", - L"Enraged %s", - L"Visonary %s", - - // 20 - L"Gruesome %s", - L"International-law-ignoring %s", - L"Provoked %s", - L"Ceaseless %s", - - L"Inflexible %s", - L"Unyielding %s", - L"Regretless %s", - L"Remorseless %s", - - L"Choleric %s", - L"Unexpected %s", - L"Democratic %s", - L"Bursting %s", - - L"Bipartisan %s", - L"Bloodstained %s", - L"Rouge-wearing %s", - L"Innocent %s", - - L"Hateful %s", - L"Underwear-staining %s", - L"Civilian-devouring %s", - L"Unflinching %s", - - // 40 - L"Expect No Mercy From Our %s", - L"Very Mad %s", - L"Ultimate %s", - L"Furious %s", - - L"Its best to Avoid Our %s", - L"Fear the %s", - L"All Hail the %s!", - L"Protect the %s", - - L"Beware the %s", - L"Crush the %s", - L"Backstabbing %s", - L"Vicious %s", - - L"Sadistic %s", - L"Burning %s", - L"Wrathful %s", - L"Invincible %s", - - L"Guilt-ridden %s", - L"Rotting %s", - L"Sanitized %s", - L"Self-doubting %s", - - // 60 - L"Ancient %s", - L"Very Hungry %s", - L"Sleepy %s", - L"Demotivated %s", - - L"Cruel %s", - L"Annoying %s", - L"Huffy %s", - L"Bisexual %s", - - L"Screaming %s", - L"Hideous %s", - L"Praying %s", - L"Stalking %s", - - L"Cold-blooded %s", - L"Fearsome %s", - L"Trippin' %s", - L"Damned %s", - - L"Vegetarian %s", - L"Grotesque %s", - L"Backward %s", - L"Superior %s", - - // 80 - L"Inferior %s", - L"Okay-ish %s", - L"Porn-consuming %s", - L"Poisoned %s", - - L"Spontaneous %s", - L"Lethargic %s", - L"Tickled %s", - L"The %s is a dupe!", - - L"%s on Steroids", - L"%s vs. Predator", - L"A %s with a twist", - L"Self-Pleasuring %s", - - L"Man-%s hybrid", - L"Inane %s", - L"Overpriced %s", - L"Midnight %s", - - L"Capitalist %s", - L"Communist %s", - L"Intense %s", - L"Steadfast %s", - - // 100 - L"Narcoleptic %s", // TODO.Translate - L"Bleached %s", - L"Nail-biting %s", - L"Smite the %s", - - L"Bloodthirsty %s", - L"Obese %s", - L"Scheming %s", - L"Tree-Humping %s", - - L"Cheaply made %s", - L"Sanctified %s", - L"Falsely accused %s", - L"%s to the rescue", - - L"Crab-people vs. %s", - L"%s in Space!!!", - L"%s vs. Godzilla", - L"Untamed %s", - - L"Durable %s", - L"Brazen %s", - L"Greedy %s", - L"Midnight %s", - - // 120 - L"Confused %s", - L"Irritated %s", - L"Loathsome %s", - L"Manic %s", - - L"Ancient %s", - L"Sneaking %s", - L"%s of Doom", - L"%s's revenge", - - L"A %s on the run", - L"A %s out of time", - L"One with %s", - L"%s from hell", - - L"Super-%s", - L"Ultra-%s", - L"Mega-%s", - L"Giga-%s", - - L"A quantum of %s", - L"Her Majesties' %s", - L"Shivering %s", - L"Fearful %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Dragon", - L"Mountain Lion", - L"Copperhead Snake", - L"Jack Russell Terrier", - - L"Arch-Nemesis", - L"Basilisk", - L"Blade", - L"Shield", - - L"Hammer", - L"Spectre", - L"Congress", - L"Oilfield", - - L"Boyfriend", - L"Girlfriend", - L"Husband", - L"Stepmother", - - L"Sand Lizard", - L"Bankers", - L"Anaconda", - L"Kitten", - - // 20 - L"Congress", - L"Senate", - L"Cleric", - L"Badass", - - L"Bayonet", - L"Wolverine", - L"Soldier", - L"Tree Frog", - - L"Weasel", - L"Shrubbery", - L"Tar pit", - L"Sunset", - - L"Hurricane", - L"Ocelot", - L"Tiger", - L"Defense Industry", - - L"Snow Leopard", - L"Megademon", - L"Dragonfly", - L"Rottweiler", - - // 40 - L"Cousin", - L"Grandma", - L"Newborn", - L"Cultist", - - L"Disinfectant", - L"Democracy", - L"Warlord", - L"Doomsday Device", - - L"Minister", - L"Beaver", - L"Assassin", - L"Rain of Burning Death", - - L"Prophet", - L"Interloper", - L"Crusader", - L"Administration", - - L"Supernova", - L"Liberty", - L"Explosion", - L"Bird of Prey", - - // 60 - L"Manticore", - L"Frost Giant", - L"Celebrity", - L"Middle Class", - - L"Loudmouth", - L"Scape Goat", - L"Warhound", - L"Vengeance", - - L"Fortress", - L"Mime", - L"Conductor", - L"Job-Creator", - - L"Frenchman", - L"Superglue", - L"Newt", - L"Incompetency", - - L"Steppenwolf", - L"Iron Anvil", - L"Grand Lord", - L"Supreme Ruler", - - // 80 - L"Dictator", - L"Old Man Death", - L"Shredder", - L"Vacuum Cleaner", - - L"Hamster", - L"Hypno-Toad", - L"Discjockey", - L"Undertaker", - - L"Gorgon", - L"Child", - L"Mob", - L"Raptor", - - L"Goddess", - L"Gender Inequality", - L"Mole", - L"Baby Jesus", - - L"Gunship", - L"Citizen", - L"Lover", - L"Mutual Fund", - - // 100 - L"Uniform", // TODO.Translate - L"Saber", - L"Snow Leopard", - L"Panther", - - L"Centaur", - L"Scorpion", - L"Serpent", - L"Black Widow", - - L"Tarantula", - L"Vulture", - L"Heretic", - L"Zombie", - - L"Role-Model", - L"Hellhound", - L"Mongoose", - L"Nurse", - - L"Nun", - L"Space Ghost", - L"Viper", - L"Mamba", - - // 120 - L"Sinner", - L"Saint", - L"Comet", - L"Meteor", - - L"Can of worms", - L"Fish oil pills", - L"Breastmilk", - L"Tentacle", - - L"Insanity", - L"Madness", - L"Cough reflex", - L"Colon", - - L"King", - L"Queen", - L"Bishop", - L"Peasant", - - L"Tower", - L"Mansion", - L"Warhorse", - L"Referee", - - // 140 -}; - -STR16 szMercCompareWebSite[] = // TODO.Translate -{ - // main page - L"Mercs Love or Dislike You", - L"Your #1 teambuilding experts on the web", - - L"About us", - L"Analyse a team", - L"Pairwise comparison", - L"Customer voices", - - L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"Your team struggles with itself.", - L"Your employees waste time working against each other.", - L"Your workforce experiences a high fluctuation rate.", - L"You constantly receive low marks on workplace satisfaction ratings.", - L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"A few citations from our satisfied customers:", - L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G., Novelist-", - L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C., Corrective law enforcement-", - L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W., Snake charmer-", - L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L., SPK-", - L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C., NASA-", - L"I fully recommend this site!", - L"-Kasper H., H&C logistic Inc-", - L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke, Kerberus Inc-", - - // analyze - L"Choose your employee", - L"Choose your squad", - - // error messages - L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s shot me!", - L"%s is scheming behind my back", - L"%s interfered in my business", - L"%s is friends with my enemy", - - L"%s got a contract before I did", - L"%s ordered a shameful retreat", - L"%s massacred the innocent", - L"%s slows us down", - - L"%s doesn't share food", - L"%s jeopardizes the mission", - L"%s is a drug addict", - L"%s is thieving scum", - - L"%s is an incompetent commander", - L"%s is overpaid", - L"%s gets all the good stuff", - L"%s mounted a gun on me", - - L"%s treated my wounds", - L"Had a good drink with %s", - L"%s is fun to get wasted with", - L"%s is annoying when drunk", - - L"%s is an idiot when drunk", - L"%s opposed our view in an argument", - L"%s supported our position", - L"%s agrees to our reasoning", - - L"%s's beliefs are contrary to ours", - L"%s knows how to calm down people", - L"%s is insensitive", - L"%s puts people in their places", - - L"%s is way too impulsive", - L"%s is disease-ridden", - L"%s treated my diseases", - L"%s does not hold back in combat", - - L"%s enjoys combat a bit too much", - L"%s is a good teacher", - L"%s led us to victory", - L"%s saved my life", - - L"%s stole my kill", - L"%s and me fought well together", - L"%s made the enemy surrender", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"World Health Organization", - L"Bringing health to life", - - // links to other pages - L"About WHO", - L"Disease in Arulco", - L"About diseases", - - // text on the main page - L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", - L"You currently do not have access to WHO data on the arulcan plague.", - L"You have acquired detailed maps on the status of the disease.", - L"Subscribe to map updates", - L"Unsubscribe map updates", - - // helpful tips page - L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus", - L"Experience In Security", - - // links to other pages - L"What is Kerberus?", - L"Team Contracts", - L"Individual Contracts", - - // text on the main page - L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", - L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", - L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"You can select the type and number of personnel you want to hire here:", - L"Initial deployment", - L"Regular personnel", - L"Veteran personnel", - - L"%d available, %d$ each", - L"Hire: %d", - L"Cost: %d$", - - L"Select the initial operational area:", - L"Total Cost: %d$", - L"ETA: %02d:%02d", - L"Close Contract", - - L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus reinforcements have arrived in %s.", - L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"Inventory Manipulations", - - L"NVG", - L"Reload All", - L"Move", // TODO.Translate - L"", - - L"Sort", - L"Merge", - L"Separate", - L"Organize", - - L"Crates", - L"Boxes", - L"Drop B/P", - L"Pickup B/P", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"Cover Display Mode", - - L"Off", - L"Enemy", - L"Merc", - L"", - - L"Roles", // TODO.Translate - L"Fortification", // TODO.Translate - L"Tracker", - L"CTH mode", - - L"Traps", - L"Network", - L"Detector", - L"", - - L"Net A", - L"Net B", - L"Net C", - L"Net D", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Turning off cover/traps display", - L"Showing danger zones", - L"Showing merc view", - L"", - - L"Display enemy role symbols", // TODO.Translate - L"Display planned fortifications", - L"Display enemy tracks", - L"", - - L"Display trap network", - L"Display trap network colouring", - L"Display nearby traps", - L"", - - L"Display trap network A", - L"Display trap network B", - L"Display trap network C", - L"Display trap network D", -}; - -// TODO.Translate -STR16 szDynamicDialogueText[40][17] = // TODO.Translate -{ - // OPINIONEVENT_FRIENDLYFIRE - L"What the hell! $CAUSE$ attacked me!", - L"", - L"", - L"What? Me? No way, I'm engaging at the enemy!", - L"Oops.", - L"", - L"", - L"$CAUSE$ has attacked $VICTIM$. What do you do?", - L"Nah, that must have been enemy fire!", - L"Yeah, I saw it too!", - L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", - L"I saw it, it was clearly enemy fire!", - L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", - L"This is war! People get shot all the time! Speaking of... shoot more people, people!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"I would if you weren't such a wussy!", - L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"I'm doing my job. Get back to yours!", - L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"Patched together again? Good, now move!", - L"You're welcome.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'Even'? What does that mean?", - L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Nice one, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"Is there a difference?", - L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"What?!", - L"No!", - L"That is false!", - L"That is not true!", - - L"Lies, lies, lies. Nothing but lies!", - L"Liar!", - L"Traitor!", - L"You watch your mouth!", - - L"This is none of your business.", - L"Who ever invited you?", - L"Nobody asked for your opinion, $INTERJECTOR$.", - L"You stay away from me.", - - L"Why are you all against me?", - L"Why are you against me, $INTERJECTOR$?", - L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"Not listening...!", - - L"I hate this psycho circus.", - L"I hate this freak show.", - L"Back off!", - L"Lies, lies, lies...", - - L"No way!", - L"So not true.", - L"That is so not true.", - L"I know what I saw.", - - L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"Nope.", - L"You are mistaken.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"What $INTERJECTOR_GENDER$ said.", - - L"Thanks, $INTERJECTOR$!", - L"Once again I'm right!", - L"See, $CAUSE$? I am right!", - L"Once again $SPEAKER$ is right!", - - L"Aye.", - L"Yup.", - L"Yep", - L"Yes.", - - L"Indeed.", - L"True.", - L"Ha!", - L"See?", - - L"Exactly!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"That's right!", - L"Indeed!", - L"Exactly that.", - L"$CAUSE$ does that all the time.", - - L"$VICTIM$ is right!", - L"I was gonna' point that out, too!", - L"What $VICTIM$ said.", - L"That's our $CAUSE$!", - - L"Yeah!", - L"Now THIS is going to be interesting...", - L"You tell'em, $VICTIM$!", - L"Agreeing with $VICTIM$ here...", - - L"Classic $CAUSE$.", - L"I couldn't have said it better myself.", - L"That is exactly what happened.", - L"Agreed!", - - L"Yup.", - L"True.", - L"Bingo.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"Now wait a minute...", - L"Wait a sec, that's not what right...", - L"What? No.", - L"That is not what happened.", - - L"Hey, stop blaming $CAUSE$!", - L"Oh shut up, $VICTIM$!", - L"Nonono, you got that wrong.", - L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"And I suppose you never did, $VICTIM$?", - L"Hmmmm... no.", - L"Great. Let's have an argument. It's not like we have other things to do...", - L"You are mistaken!", - - L"You are wrong!", - L"Me and $CAUSE$ would never do such a thing.", - L"Nah, can't be.", - L"I don't think so.", - - L"Why bring that up now?", - L"Really, $VICTIM$? Is this necessary?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Keep silent", - L"Support $VICTIM$", - L"Support $CAUSE$", - L"Appeal to reason", - L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"he", - L"she", - L"him", - L"her", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% wisdom stat\n", - L" %s%d%% effective level\n", - - L" %s%d%% APs\n", - L" %s%d maximum breath\n", - L" %s%d%% strength to carry items\n", - L" %s%2.2f life regeneration/hour\n", - L" %s%d need for sleep\n", - L" %s%d%% water consumption\n", - L" %s%d%% food consumption\n", - - L"%s was diagnosed with %s!", - L"%s is cured of %s!", - - L"Diagnosis", - L"Treatment", - L"Burial", // TODO.Translate - L"Cancel", - - L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate - - L"High amount of distress can cause a personality split\n", // TODO.Translate - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", // TODO.Translate - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"Hide", // TODO.Translate - L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|F|o|o|d: %d%%\n", - - L"max morale altered by %s%d\n", - L" %s%d need for sleep\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% assignment efficiency\n", - L" %s%d%% chance to lose stats\n", -}; - -STR16 szIMPGearWebSiteText[] = // TODO.Translate -{ - // IMP Gear Entrance - L"How should gear be selected?", - L"Old method: Random gear according to your choices", - L"New method: Free selection of gear", - L"Old method", - L"New method", - - // IMP Gear Entrance - L"I.M.P. Equipment", - L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate -}; - -STR16 szIMPGearPocketText[] = -{ - L"Select helmet", - L"Select vest", - L"Select pants", - L"Select face gear", - L"Select face gear", - - L"Select main gun", - L"Select sidearm", - - L"Select LBE vest", - L"Select left LBE holster", - L"Select right LBE holster", - L"Select LBE combat pack", - L"Select LBE backpack", - - L"Select launcher / rifle", - L"Select melee weapon", - - L"Select additional items", //BIGPOCK1POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select medkit", //MEDPOCK1POS - L"Select medkit", - L"Select medkit", - L"Select medkit", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select additional items", //SMALLPOCK19POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"We cannot relay orders to this sector, militia command not possible.", - L"Unassigned", - L"Group No.", - L"Next", - - L"ETA", - L"Group %d (new)", - L"Group %d", - L"Final", - - L"Volunteers: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = // TODO.Translate -{ - L"Enemy helicopter shot down in %s!", - L"We... uhm... currently don't control that site, commander...", - L"The SAM does not need maintenance at the moment.", - L"We've already ordered the repair, this will take time.", - - L"We do not have enough resources to do that.", - L"Repair SAM site? This will cost %d$ and take %d hours.", - L"Enemy helicopter hit in %s.", - L"%s fires %s at enemy helicopter in %s.", - - L"SAM in %s fires at enemy helicopter in %s.", -}; - -STR16 szFortificationText[] = -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"Militia", - L"Militia Forces Overview", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Took part in Operation %s", - L"Recruited on Day %d, %d:%02d in %s", - L"Promoted on Day %d, %d:%02d", - L"KIA, Operation %s", - - L"Lightly wounded during Operation %s", - L"Heavily wounded during Operation %s", - L"Critically wounded during Operation %s", - L"Valiantly fought in Operation %s", - - L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", // TODO:Translate -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"All sectors", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"Merchant is hostile and does not want to trade.", - L"Merchant is in no state to do business.", - L"Merchant won't trade during combat.", - L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = // TODO.Translate -{ - L"normal", - L"rain", - L"thunderstorm", - L"sandstorm", - - L"snow", -}; - -STR16 szSnakeText[] = -{ - L"%s evaded a snake attack!", - L"%s was attacked by a snake!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"Converted %s into resources", - L"Guns: ", - L"Armour: ", - L"Misc: ", - - L"There are no volunteers left for militia!", - L"Not enough resources to train militia!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s starts hacking.", - L"%s accesses the computer, but finds nothing of interest.", - L"%s is not skilled enough to hack the computer.", - L"%s reads the file, but learns nothing new.", - - L"%s can't make sense out of this.", - L"%s couldn't use the watertap.", - L"%s has bought a %s.", - L"%s doesn't have enough money. That's just embarassing.", - - L"%s drank from water tap", - L"This machine doesn't seem to be working.", // TODO.Translate -}; - -STR16 szLaptopStatText[] = // TODO.Translate -{ - L"threaten effectiveness %d\n", - L"leadership %d\n", - L"approach modifier %.2f\n", - L"background modifier %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Good Guy", - L"%s eschews excessive violence and will refuse to attack non-hostiles.", - - L"Friendly approach", - L"Direct approach", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -STR16 szGearTemplateText[] = // TODO.Translate -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate -}; - -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -STR16 szFactoryText[] = // TODO.Translate -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -// TODO.Translate -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Space Available:", - L"MOLLE Space Required:", - L"MOLLE Small Slot Count:", - L"MOLLE Medium Slot Count:", - L"MOLLE Pouch Size: Small", - L"MOLLE Pouch Size: Medium", - L"MOLLE Pouch Size: Medium (Hydration)", - L"Thigh Rig", - L"Vest", - L"Combat Pack", - L"Backpack", // 10 - L"MOLLE Pouch", - L"Compatible backpacks:", - L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = // TODO.Translate -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = // TODO.Translate -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = // TODO.Translate -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = // TODO.Translate -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia\nthat appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = // TODO: Translate -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //DUTCH +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("DUTCH") + + #if defined( DUTCH ) + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_DutchText_public_symbol(void){;} + +#ifdef DUTCH + + + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Locations", // 0 + L"Characters", + L"Items", + L"Quests", + L"Menu 5", + L"Menu 6", //5 + L"Menu 7", + L"Menu 8", + L"Menu 9", + L"Menu 10", + L"Menu 11", //10 + L"Menu 12", + L"Menu 13", + L"Menu 14", + L"Menu 15", + L"Menu 15", // 15 + + //Briefing Room + L"Enter", +}; + +STR16 pOtherButtonsText[] = +{ + L"Briefing", + L"Accept", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Briefing", + L"Accept missions", +}; + + +STR16 pLocationPageText[] = +{ + L"Prev page", + L"Photo", + L"Next page", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"Main page", + L">>", + L"Type: ", + L"Empty data", + L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", + L"Briefing Room. Please click the 'Enter' button.", // TODO.Translate +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Unknown",// 0 - unknown + L"City", //1 - cities + L"SAM Site", //2 - SAM Site + L"Other location", //3 - other location + L"Mines", //4 - mines + L"Military complex", //5 - military complex + L"Laboratory complex", //6 - laboratory complex + L"Factory complex", //7 - factory complex + L"Hospital", //8 - hospital + L"Prison", //9 - prison + L"Airport", //10 - air port +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Show all", + L"Show AIM", + L"Show MERC", + L"Show RPC", + L"Show NPC", + L"Show Pojazd", + L"Show IMP", + L"Show EPC", + L"Filter", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"All", + L"AIM", + L"MERC", + L"RPC", + L"NPC", + L"Veh.", + L"IMP", + L"EPC", + L"Filter", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Show all", + L"Show cities", + L"Show SAM Sites", + L"Show other location", + L"Show mines", + L"Show military complex", + L"Show laboratory complex", + L"Show Factory complex", + L"Show hospital", + L"Show prison", + L"Show air port", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"All", + L"City", + L"SAM", + L"Other", + L"Mine", + L"Mil.", + L"Lab.", + L"Fact.", + L"Hosp.", + L"Prison", + L"Air.", +}; + +// TODO.Translate +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"All",//0 + L"City", + L"SAM", + L"Mine", + L"Airport", + L"Wilder.", + L"Underg.", + L"Facil.", + L"Other", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//facility index + 1 + L"Show Cities", + L"Show SAM sites", + L"Show mines", + L"Show airports", + L"Show sectors in wilderness", + L"Show underground sectors", + L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", + L"Show Other sectors", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; +// TODO.Translate +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"All",//0 + L"A.I.M.", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"Other",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//Other index + 1 + L"Show A.I.M. members", + L"Show M.E.R.C staff", + L"Show Rebels", + L"Show Non-hirable Characters", + L"Show Player created Characters", + L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", +}; +// TODO.Translate +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Vehic.", + L"EPC", + L"",//reserved. Insert new Other filters above! +}; +// TODO.Translate +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"All",//0 + L"Gun", + L"Ammo", + L"Armor", + L"LBE", + L"Attach.", + L"Misc",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", +}; +// TODO.Translate +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Helmet", + L"Vest", + L"Pant", + L"Plate", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Tight", + L"Vest", + L"Combat", + L"Backp.", + L"Pocket", + L"Other", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Optic", + L"Side", + L"Muzzle", + L"Extern.", + L"Intern.", + L"Other", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"Blade", + L"T.Knife", + L"Punch", + L"Grenade", + L"Bomb", + L"Medikit", + L"Kit", + L"Face", + L"Other", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; +// TODO.Translate +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"All", + L"Active", + L"Compl.", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Active Quests", + L"Show Completed Quests", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"All", //0 + L"Gun", + L"Ammo", + L"LBE", + L"Misc", + + L"All", //5 + L"Gun", + L"Ammo", + L"LBE Gear", + L"Misc", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"Heavy", + L"Pistol", + L"M. Pist.", + L"SMG", + L"Rifle", + L"S. Rifle", + L"A. Rifle", + L"MG", + L"Shotgun", + + // Ammo + L"Pistol", + L"M. Pist.", //10 + L"SMG", + L"Rifle", + L"S. Rifle", + L"A. Rifle", + L"MG", + L"Shotgun", + + // Used + L"Guns", + L"Armor", + L"LBE Gear", + L"Misc", //20 + + // Armour + L"Helmets", + L"Vests", + L"Leggings", + L"Plates", + + // Misc + L"Blades", + L"Th. Knife", + L"Melee", + L"Grenades", + L"Bombs", + L"Med.", //30 + L"Kits", + L"Face", + L"LBE", + L"Misc.", //34 +}; + +// TODO.Translate +STR16 QuestDescText[] = +{ + L"Deliver Letter", + L"Food Route", + L"Terrorists", + L"Kingpin Chalice", + L"Kingpin Money", + L"Runaway Joey", + L"Rescue Maria", + L"Chitzena Chalice", + L"Held in Alma", + L"Interogation", + + L"Hillbilly Problem", //10 + L"Find Scientist", + L"Deliver Video Camera", + L"Blood Cats", + L"Find Hermit", + L"Creatures", + L"Find Chopper Pilot", + L"Escort SkyRider", + L"Free Dynamo", + L"Escort Tourists", + + + L"Doreen", //20 + L"Leather Shop Dream", + L"Escort Shank", + L"No 23 Yet", + L"No 24 Yet", + L"Kill Deidranna", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", + +}; + +// TODO.Translate +STR16 FactDescText[] = +{ + L"Omerta Liberated", + L"Drassen Liberated", + L"Sanmona Liberated", + L"Cambria Liberated", + L"Alma Liberated", + L"Grumm Liberated", + L"Tixa Liberated", + L"Chitzena Liberated", + L"Estoni Liberated", + L"Balime Liberated", + + L"Orta Liberated", //10 + L"Meduna Liberated", + L"Pacos approched", + L"Fatima Read note", + L"Fatima Walked away from player", + L"Dimitri (#60) is dead", + L"Fatima responded to Dimitri's supprise", + L"Carlo's exclaimed 'no one moves'", + L"Fatima described note", + L"Fatima arrives at final dest", + + L"Dimitri said Fatima has proof", //20 + L"Miguel overheard conversation", + L"Miguel asked for letter", + L"Miguel read note", + L"Ira comment on Miguel reading note", + L"Rebels are enemies", + L"Fatima spoken to before given note", + L"Start Drassen quest", + L"Miguel offered Ira", + L"Pacos hurt/Killed", + + L"Pacos is in A10", //30 + L"Current Sector is safe", + L"Bobby R Shpmnt in transit", + L"Bobby R Shpmnt in Drassen", + L"33 is TRUE and it arrived within 2 hours", + L"33 is TRUE 34 is false more then 2 hours", + L"Player has realized part of shipment is missing", + L"36 is TRUE and Pablo was injured by player", + L"Pablo admitted theft", + L"Pablo returned goods, set 37 false", + + L"Miguel will join team", //40 + L"Gave some cash to Pablo", + L"Skyrider is currently under escort", + L"Skyrider is close to his chopper in Drassen", + L"Skyrider explained deal", + L"Player has clicked on Heli in Mapscreen at least once", + L"NPC is owed money", + L"Npc is wounded", + L"Npc was wounded by Player", + L"Father J.Walker was told of food shortage", + + L"Ira is not in sector", //50 + L"Ira is doing the talking", + L"Food quest over", + L"Pablo stole something from last shpmnt", + L"Last shipment crashed", + L"Last shipment went to wrong airport", + L"24 hours elapsed since notified that shpment went to wrong airport", + L"Lost package arrived with damaged goods. 56 to False", + L"Lost package is lost permanently. Turn 56 False", + L"Next package can (random) be lost", + + L"Next package can(random) be delayed", //60 + L"Package is medium sized", + L"Package is largesized", + L"Doreen has conscience", + L"Player Spoke to Gordon", + L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo asked for first aid", + L"Dynamo can be recruited", + L"Npc is bleeding", + L"Shank wnts to join", + + L"NPC is bleeding", //70 + L"Player Team has head & Carmen in San Mona", + L"Player Team has head & Carmen in Cambria", + L"Player Team has head & Carmen in Drassen", + L"Father is drunk", + L"Player has wounded mercs within 8 tiles of NPC", + L"1 & only 1 merc wounded within 8 tiles of NPC", + L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda is in the store ", + L"Brenda is Dead", + + L"Brenda is at home", //80 + L"NPC is an enemy", + L"Speaker Strength >= 84 and < 3 males present", + L"Speaker Strength >= 84 and at least 3 males present", + L"Hans lets ou see Tony", + L"Hans is standing on 13523", + L"Tony isnt available Today", + L"Female is speaking to NPC", + L"Player has enjoyed the Brothel", + L"Carla is available", + + L"Cindy is available", //90 + L"Bambi is available", + L"No girls is available", + L"Player waited for girls", + L"Player paid right amount of money", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping expectingh visit from player", + L"Darren expecting money from player", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Delete", + L"Delete item (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"north", + L"northeast", + L"east", + L"southeast", + L"south", + L"southwest", + L"west", + L"northwest" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Toggle viewing of players", //0 + L"Toggle viewing of enemies", + L"Toggle viewing of creatures", + L"Toggle viewing of rebels", + L"Toggle viewing of civilians", + + L"Player", + L"Enemy", + L"Creature", + L"Rebels", + L"Civilian", + + L"DETAILED PLACEMENT", //10 + L"General information mode", + L"Physical appearance mode", + L"Attributes mode", + L"Inventory mode", + L"Profile ID mode", + L"Schedule mode", + L"Schedule mode", + L"DELETE", + L"Delete currently selected merc (|D|e|l)", + L"NEXT", //20 + L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", + L"Toggle priority existance", + L"Toggle whether or not placement\nhas access to all doors", + + //Orders + L"STATIONARY", + L"ON GUARD", + L"ON CALL", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", //30 + L"RND PT PATROL", + + //Attitudes + L"DEFENSIVE", + L"BRAVE SOLO", + L"BRAVE AID", + L"AGGRESSIVE", + L"CUNNING SOLO", + L"CUNNING AID", + + L"Set merc to face %s", + + L"Find", + L"BAD", //40 + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"BAD", + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"Previous color set", //50 + L"Next color set", + + L"Previous body type", + L"Next body type", + + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + + L"No action", + L"No action", + L"No action", //60 + L"No action", + + L"Clear Schedule", + + L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"ROOFS", //0 + L"WALLS", + L"ROOM INFO", + + L"Place walls using selection method", + L"Place doors using selection method", + L"Place roofs using selection method", + L"Place windows using selection method", + L"Place damaged walls using selection method.", + L"Place furniture using selection method", + L"Place wall decals using selection method", + L"Place floors using selection method", //10 + L"Place generic furniture using selection method", + L"Place walls using smart method", + L"Place doors using smart method", + L"Place windows using smart method", + L"Place damaged walls using smart method", + L"Lock or trap existing doors", + + L"Add a new room", + L"Edit cave walls.", + L"Remove an area from existing building.", + L"Remove a building", //20 + L"Add/replace building's roof with new flat roof.", + L"Copy a building", + L"Move a building", + L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", + L"Erase room numbers", + + L"Toggle |Erase mode", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Cycle brush size (|A/|Z)", + L"Roofs (|H)", + L"|Walls", //30 + L"Room Info (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Wpns", //0 + L"Ammo", + L"Armour", + L"LBE", + L"Exp", + L"E1", + L"E2", + L"E3", + L"Triggers", + L"Keys", + L"Rnd", //10 + L"Previous (|,)", // previous page + L"Next (|.)", // next page +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Add ambient light source", //0 + L"Toggle fake ambient lights.", + L"Add exit grids (r-clk to query existing).", + L"Cycle brush size (|A/|Z)", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", + L"Specify north point for validation purposes.", + L"Specify west point for validation purposes.", + L"Specify east point for validation purposes.", + L"Specify south point for validation purposes.", + L"Specify center point for validation purposes.", //10 + L"Specify isolated point for validation purposes.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"New outdoor level", //0 + L"New basement", + L"New cave level", + L"Save map (|C|t|r|l+|S)", + L"Load map (|C|t|r|l+|L)", + L"Select tileset", + L"Leave Editor mode", + L"Exit game (|A|l|t+|X)", + L"Create radar map", + L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", + L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Draw |Ground textures", //0 + L"Set map ground textures", + L"Place banks and |Cliffs", + L"Draw roads (|P)", + L"Draw |Debris", + L"Place |Trees & bushes", + L"Place |Rocks", + L"Place barrels & |Other junk", + L"Fill area", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", //10 + L"Cycle brush size (|A/|Z)", + L"Raise brush density (|])", + L"Lower brush density (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Terrain", //0 + L"Buildings", + L"Items", + L"Mercs", + L"Map Info", + L"Options", + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text + L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text + L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text + L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text + L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"North Entry Point", //0 + L"West Entry Point", + L"East Entry Point", + L"South Entry Point", + L"Center Entry Point", + L"Isolated Entry Point", + + L"Prime", + L"Night", + L"24Hour", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Panic Trigger1", //0 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", + + L"Pressure Action", + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"No Lock ID", //0 + L"Explosion Trap", + L"Electric Trap", + L"Siren Trap", + L"Silent Alarm", + L"Super Electric Trap", //5 + L"Brothel Siren Trap", + L"Trap Level %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 + L"No map currently loaded.", + L"File: %S, Current Tileset: %s", + L"Enlarge map on loading", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"TOGGLE", //0 + L"VIEWS", + L"SELECTION METHOD", + L"SMART METHOD", + L"BUILDING METHOD", + L"Room#", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Editing lock attributes at map index %d.", + L"Lock ID", + L"Trap Type", + L"Trap Level", + L"Locked", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Pressure Action", //0 + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", + + L"Panic Trigger1", //5 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Status Info Line 1", + L"Status Info Line 2", + L"Status Info Line 3", + L"Status Info Line 4", + L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Prime", + L"Night", + L"24Hrs", //5 + + L"Radius", + + L"Underground", + L"Light Level", + + L"Outdoors", + L"Basement", //10 + L"Caves", + + L"Restricted", + L"Scroll ID", + + L"Destination", + L"Sector", //15 + L"Destination", + L"Bsmt. Level", + L"Dest.", + L"GridNo", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"No action", + L"Lock door", + L"Unlock door", + L"Open door", + L"Close door", + L"Move to gridno", + L"Leave sector", + L"Enter sector", + L"Stay in sector", + L"Sleep", + L"Ignore this!" +}; + +STR16 zDiffNames[5] = +{ + L"Wimp", + L"Easy", + L"Average", + L"Tough", + L"Steroid Users Only" +}; + +STR16 EditMercStat[12] = +{ + L"Max Health", + L"Cur Health", + L"Strength", + L"Agility", + L"Dexterity", + L"Charisma", + L"Wisdom", + L"Marksmanship", + L"Explosives", + L"Medical", + L"Scientific", + L"Exp Level", +}; + + +STR16 EditMercOrders[8] = +{ + L"Stationary", + L"On Guard", + L"Close Patrol", + L"Far Patrol", + L"Point Patrol", + L"On Call", + L"Seek Enemy", + L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Defensive", + L"Brave Loner", + L"Brave Buddy", + L"Cunning Loner", + L"Cunning Buddy", + L"Aggressive", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Merc Name:", //0 + L"Orders:", + L"Combat Attitude:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Merc Colors", //0 + L"Done", + + L"Previous merc standing orders", + L"Next merc standing orders", + + L"Previous merc combat attitude", + L"Next merc combat attitude", //5 + + L"Decrease merc stat", + L"Increase merc stat", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Random", //0 + L"Reg Male", + L"Big Male", + L"Stocky Male", + L"Reg Female", + L"NE Tank", //5 + L"NW Tank", + L"Fat Civilian", + L"M Civilian", + L"Miniskirt", + L"F Civilian", //10 + L"Kid w/ Hat", + L"Humvee", + L"Eldorado", + L"Icecream Truck", + L"Jeep", //15 + L"Kid Civilian", + L"Domestic Cow", + L"Cripple", + L"Unarmed Robot", + L"Larvae", //20 + L"Infant", + L"Yng F Monster", + L"Yng M Monster", + L"Adt F Monster", + L"Adt M Monster", //25 + L"Queen Monster", + L"Bloodcat", + L"Humvee", // TODO.Translate +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=ORDERS=-- ", //0 + L"--=ATTITUDE=--", + + L"RELATIVE", + L"ATTRIBUTES", + + L"RELATIVE", + L"EQUIPMENT", + + L"RELATIVE", + L"ATTRIBUTES", + + L"Army", + L"Admin", + L"Elite", //10 + + L"Exp. Level", + L"Life", + L"LifeMax", + L"Marksmanship", + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Leadership", + L"Explosives", //20 + L"Medical", + L"Mechanical", + L"Morale", + + L"Hair color:", + L"Skin color:", + L"Vest color:", + L"Pant color:", + + L"RANDOM", + L"RANDOM", + L"RANDOM", //30 + L"RANDOM", + + L"By specifying a profile index, all of the information will be extracted from the profile ", + L"and override any values that you have edited. It will also disable the editing features ", + L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", + L"extract the number you have typed. A blank field will clear the profile. The current ", + L"number of profiles range from 0 to ", + + L"Current Profile: n/a ", + L"Current Profile: %s", + + L"STATIONARY", + L"ON CALL", //40 + L"ON GUARD", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", + L"RND PT PATROL", + + L"Action", + L"Time", + L"V", + L"GridNo 1", //50 + L"GridNo 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"lock", + L"unlock", + L"open", + L"close", + + L"Click on the gridno adjacent to the door that you wish to %s.", //60 + L"Click on the gridno where you wish to move after you %s the door.", + L"Click on the gridno where you wish to move to.", + L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", + L" Hit ESC to abort entering this line in the schedule.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"Slot #%d", + L"Patrol orders with no waypoints", + L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"No action", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Placement not copied because no placement selected.", + L"Placement copied.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Placement not pasted as no placement is saved in buffer.", + L"Placement pasted.", + L"Placement not pasted as the maximum number of placements for this team has been reached.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Exit editor?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Are you sure you wish to remove all lights?", //0 + L"Are you sure you wish to reverse the schedules?", + L"Are you sure you wish to clear all of the schedules?", + + L"Clicked Placement Enabled", + L"Clicked Placement Disabled", + + L"Draw High Ground Enabled", //5 + L"Draw High Ground Disabled", + + L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"Random Placement Enabled", + L"Random Placement Disabled", + + L"Removing Treetops", //10 + L"Showing Treetops", + + L"World Raise Reset", + + L"World Raise Set Old", + L"World Raise Set", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"Creating radar map for %S", //0 + + L"Delete current map and start a new basement level?", + L"Delete current map and start a new cave level?", + L"Delete current map and start a new outdoor level?", + + L" Wipe out ground textures? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 + L"Toggle fake editor lighting ON/OFF", + + L"INSERT", + L"Toggle fill mode ON/OFF", + + L"BKSPC", + L"Undo last change", + + L"DEL", + L"Quick erase object under mouse cursor", + + L"ESC", + L"Exit editor", + + L"PGUP/PGDN", //10 + L"Change object to be pasted", + + L"F1", + L"This help screen", + + L"F10", + L"Save current map", + + L"F11", + L"Load map as current", + + L"+/-", + L"Change shadow darkness by .01", + + L"SHFT +/-", //20 + L"Change shadow darkness by .05", + + L"0 - 9", + L"Change map/tileset filename", + + L"b", + L"Change brush size", + + L"d", + L"Draw debris", + + L"o", + L"Draw obstacle", + + L"r", //30 + L"Draw rocks", + + L"t", + L"Toggle trees display ON/OFF", + + L"g", + L"Draw ground textures", + + L"w", + L"Draw building walls", + + L"e", + L"Toggle erase mode ON/OFF", + + L"h", //40 + L"Toggle roofs ON/OFF", +}; + +STR16 pAutoLoadMapText[] = +{ + L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +STR16 pShowHighGroundText[] = +{ + L"Showing High Ground Markers", + L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/* +CHAR16 gszActionItemDesc[ 34 ][ 30 ] = // NUM_ACTIONITEMS = 34 +{ + L"Klaxon Mine", + L"Flare Mine", + L"Teargas Explosion", + L"Stun Explosion", + L"Smoke Explosion", + L"Mustard Gas", + L"Land Mine", + L"Open Door", + L"Close Door", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Small Explosion", + L"Medium Explosion", + L"Large Explosion", + L"Toggle Door", + L"Toggle Action1s", + L"Toggle Action2s", + L"Toggle Action3s", + L"Toggle Action4s", + L"Enter Brothel", + L"Exit Brothel", + L"Kingpin Alarm", + L"Sex with Prostitute", + L"Reveal Room", + L"Local Alarm", + L"Global Alarm", + L"Klaxon Sound", + L"Unlock door", + L"Toggle lock", + L"Untrap door", + L"Tog pressure items", + L"Museum alarm", + L"Bloodcat alarm", + L"Big teargas", +}; +*/ +STR16 pUpdateItemStatsPanelText[] = +{ + L"Toggle hide flag", //0 + L"No item selected.", + L"Slot available for", + L"random generation.", + L"Keys not editable.", + L"ProfileID of owner", + L"Item class not implemented.", + L"Slot locked as empty.", + L"Status", + L"Rounds", + L"Trap Level", //10 + L"Quantity", + L"Trap Level", + L"Status", + L"Trap Level", + L"Status", + L"Quantity", + L"Trap Level", + L"Dollars", + L"Status", + L"Trap Level", //20 + L"Trap Level", + L"Tolerance", + L"Alarm Trigger", + L"Exist Chance", + L"B", + L"R", + L"S", +}; + +STR16 pSetupGameTypeFlagsText[] = +{ + L"Item appears in both Sci-Fi and Realistic modes", //0 + L"Item appears in Realistic mode only", + L"Item appears in Sci-Fi mode only", +}; + +STR16 pSetupGunGUIText[] = +{ + L"SILENCER", //0 + L"SNIPERSCOPE", + L"LASERSCOPE", + L"BIPOD", + L"DUCKBILL", + L"G-LAUNCHER", //5 +}; + +STR16 pSetupArmourGUIText[] = +{ + L"CERAMIC PLATES", //0 +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"DETONATOR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"Okay", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"LOAD", + L"SAVE", + L"Update", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"Tileset: %s", //0 + L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", + L"Number of items: %d", + L"Number of lights: %d", + L"Number of entry points: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"Number of rooms: %d", + L"Total map population: %d", + L"Enemies: %d", + L"Admins: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Troops: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Elites: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Civilians: %d", //20 + + L"(%d detailed, %d profile -- %d have priority existance)", + + L"Humans: %d", + L"Cows: %d", + L"Bloodcats: %d", + + L"Creatures: %d", + + L"Monsters: %d", + L"Bloodcats: %d", + + L"Number of locked and/or trapped doors: %d", + L"Locked: %d", + L"Trapped: %d", //30 + L"Locked & Trapped: %d", + + L"Civilians with schedules: %d", + + L"Too many exit grid destinations (more than 4)...", + L"ExitGrids: %d (%d with a long distance destination)", + L"ExitGrids: none", + L"ExitGrids: 1 destination using %d exitgrids", + L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 + L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"%d placements have patrol orders without any waypoints defined.", + L"%d placements have waypoints, but without any patrol orders.", + L"%d gridnos have questionable room numbers. Please validate.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Enemy", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"Panic1", + L"Panic2", + L"Panic3", + L"Norm1", + L"Norm2", + L"Norm3", + L"Norm4", //10 + L"Pressure Actions", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"PRIORITY ENEMY DROPPED ITEMS", + L"None", + + L"TOO MANY ITEMS TO DISPLAY!", + L"NORMAL ENEMY DROPPED ITEMS", + L"TOO MANY ITEMS TO DISPLAY!", + L"None", + L"TOO MANY ITEMS TO DISPLAY!", + L"ERROR: Can't load the items for this map. Reason unknown.", //20 +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 + L"(NO MAP LOADED).", + L"You currently have %d outdated maps.", + L"The more maps that need to be updated, the longer it takes. It'll take ", + L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"depending on your computer, it may vary.", + L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"There is no sector currently selected.", + + L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"You need to either load an existing map or create a new map before being", + L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 + + L", ground level", + L", underground level 1", + L", underground level 2", + L", underground level 3", + L", alternate G level", + L", alternate B1 level", + L", alternate B2 level", + L", alternate B3 level", + + L"ITEM DETAILS -- sector %s", + L"Summary Information for sector %s:", //20 + + L"Summary Information for sector %s", + L"does not exist.", + + L"Summary Information for sector %s", + L"does not exist.", + + L"No information exists for sector %s.", + + L"No information exists for sector %s.", + + L"FILE: %s", + + L"FILE: %s", + + L"Override READONLY", + L"Overwrite File", //30 + + L"You currently have no summary data. By creating one, you will be able to keep track", + L"of information pertaining to all of the sectors you edit and save. The creation process", + L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"Do you wish to do this now (y/n)?", + + L"No summary info. Creation denied.", + + L"Grid", + L"Progress", //40 + L"Use Alternate Maps", + + L"Summary", + L"Items", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"Analyzing map: %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Loading map: %s", +}; + +STR16 pReportErrorText[] = +{ + L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Generating map information", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"Generating map summary", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MAJOR VERSION UPDATE", + L"There are %d maps requiring a major version update.", + L"Updating all outdated maps", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] from default tileset %s (%d, %S)", + L"File: %S, subindex: %d (%d, %S)", + L"Tileset: %s", +}; + +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Accept selections (|E|n|t|e|r)", + L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", + L"Scroll window up (|U|p)", + L"Scroll window down (|D|o|w|n)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Small", + L"Medium", + L"Large", + L"XLarge", + L"Width: xx", + L"Area" + }; + +//--- + +// TODO.Translate +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Page 1/2", //0 + L"Page 2/2", + + L"Page 1/3", + L"Page 2/3", + L"Page 3/3", + + L"Page 1/1", //5 +}; + +// by Jazz: TODO.Translate +CHAR16 zGrod[][500] = +{ + L"Robot", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 Development Team", + L"@T,C144,R134,{;Coding", + L"@T,C144,R134,{;Graphics and Sounds", + L"@};(Various other mods!)", + L"@T,C144,R134,{;Items", + L"@T,C144,R134,{;Other Contributors", + L"@};(All other community members who contributed input and feedback!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L".38 kal", +// L"9mm", +// L".45 kal", +// L".357 kal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm NAVO", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Raket", +// L"", // dart +// L"", // flame +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L".38 kal", +// L"9mm", +// L".45 kal", +// L".357 kal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm N.", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Raket", +// L"", // dart +//}; + + +CHAR16 WeaponType[][30] = +{ + L"Other", + L"Pistol", + L"Machine pistol", + L"Machine Gun", + L"Rifle", + L"Sniper Rifle", + L"Attack weapon", + L"Light machine gun", + L"Shotgun", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Beurt speler", + L"Beurt opponent", + L"Beurt beest", + L"Beurt militie", + L"Beurt burgers", + L"Player_Plan",// planning turn + L"Client #1",//hayden + L"Client #2",//hayden + L"Client #3",//hayden + L"Client #4",//hayden +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s geraakt in hoofd en verliest een intelligentiepunt!", + L"%s geraakt in de schouder en verliest een handigheidspunt!", + L"%s geraakt in de borst en verliest een krachtspunt!", + L"%s geraakt in het benen en verliest een beweeglijkspunt!", + L"%s geraakt in het hoofd en verliest %d wijsheidspunten!", + L"%s geraakt in de schouder en verliest %d handigheidspunten!", + L"%s geraakt in de borst en verliest %d krachtspunten!", + L"%s geraakt in de benen en verliest %d beweeglijkheidspunten!", + L"Storing!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"Je versterkingen zijn gearriveerd!", + + // In the following four lines, all %s's are merc names + + L"%s herlaad.", + L"%s heeft niet genoeg actiepunten!", + L"%s verricht eerste hulp. (Druk een toets om te stoppen.)", + L"%s en %s verrichten eerste hulp. (Druk een toets om te stoppen.)", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"reliable", + L"unreliable", + L"easy to repair", + L"hard to repair", + L"much damage", + L"low damage", + L"quick fire", + L"slow fire", + L"long range", + L"short range", + L"light", + L"heavy", + L"small", + L"quick salvo", + L"no salvo", + L"large magazine", + L"small magazine", + + // In the following two lines, all %s's are merc names + + L"%s's camouflage is verdwenen.", + L"%s's camouflage is afgespoelt.", + + // The first %s is a merc name and the second %s is an item name + + L"Tweede wapen is leeg!", + L"%s heeft %s gestolen.", + + // The %s is a merc name + + L"%s's wapen vuurt geen salvo.", + + L"Je hebt er al één van die vastgemaakt.", + L"Samen voegen?", + + // Both %s's are item names + + L"Je verbindt %s niet met %s.", + L"Geen", + L"Eject ammo", + L"Toebehoren", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and you gas mask at the same time. + L"%s en %s zijn niet tegelijk te gebruiken.", + + L"Het item dat je aanwijst, kan vastgemaakt worden aan een bepaald item door het in een van de vier uitbreidingssloten te plaatsen.", + L"Het item dat je aanwijst, kan vastgemaakt worden aan een bepaald item door het in een van de vier uitbreidingssloten te plaatsen. (Echter, het item is niet compatibel.)", + L"Er zijn nog vijanden in de sector!", + L"Je moet %s %s nog geven", + L"kogel doorboorde %s in zijn hoofd!", + L"Gevecht verlaten?", + L"Dit samenvoegen is permanent. Verdergaan?", + L"%s heeft meer energie!", + L"%s is uitgegleden!", + L"%s heeft %s niet gepakt!", + L"%s repareert de %s", + L"Stoppen voor ", + L"Overgeven?", + L"Deze persoon weigert je hulp.", + L"Ik denk het NIET!", + L"Chopper van Skyrider gebruiken? Eerst huurlingen TOEWIJZEN aan VOERTUIG/HELIKOPTER.", + L"%s had tijd maar EEN geweer te herladen", + L"Beurt bloodcats", + L"automatic", + L"no full auto", + L"accurate", + L"inaccurate", + L"no semi auto", + L"The enemy has no more items to steal!", + L"The enemy has no item in its hand!", +// TODO.Translate + L"%s's desert camouflage has worn off.", + L"%s's desert camouflage has washed off.", + + L"%s's wood camouflage has worn off.", + L"%s's wood camouflage has washed off.", + + L"%s's urban camouflage has worn off.", + L"%s's urban camouflage has washed off.", + + L"%s's snow camouflage snow has worn off.", + L"%s's snow camouflage has washed off.", + + L"You cannot attach %s to this slot.", + L"The %s will not fit in any open slots.", + L"There's not enough space for this pocket.", //TODO.Translate + + L"%s has repaired the %s as much as possible.", // TODO.Translate + L"%s has repaired %s's %s as much as possible.", + + L"%s has cleaned the %s.", // TODO.Translate + L"%s has cleaned %s's %s.", + + L"Assignment not possible at the moment", // TODO.Translate + L"No militia that can be drilled present.", + + L"%s has fully explored %s.", // TODO.Translate +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracona", + L"Traconian", +#else + L"Arulco", + L"Arulcan", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"Pause", + L"Normal", + L"5 min", + L"30 min", + L"60 min", + L"6 uur", +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"Team 1", + L"Team 2", + L"Team 3", + L"Team 4", + L"Team 5", + L"Team 6", + L"Team 7", + L"Team 8", + L"Team 9", + L"Team 10", + L"Team 11", + L"Team 12", + L"Team 13", + L"Team 14", + L"Team 15", + L"Team 16", + L"Team 17", + L"Team 18", + L"Team 19", + L"Team 20", + L"Team 21", + L"Team 22", + L"Team 23", + L"Team 24", + L"Team 25", + L"Team 26", + L"Team 27", + L"Team 28", + L"Team 29", + L"Team 30", + L"Team 31", + L"Team 32", + L"Team 33", + L"Team 34", + L"Team 35", + L"Team 36", + L"Team 37", + L"Team 38", + L"Team 39", + L"Team 40", + L"Dienst", // on active duty + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Voertuig", // in a vehicle + L"Onderweg", // in transit - abbreviated form + L"Repareer", // repairing + L"Radio Scan", // scanning for nearby patrols // TODO.Translate + L"Oefenen", // training themselves + L"Militie", // training a town to revolt + L"M.Militia", //training moving militia units // TODO.Translate + L"Trainer", // training a teammate + L"Student", // being trained by someone else + L"Get Item", // get items // TODO.Translate + L"Staff", // operating a strategic facility // TODO.Translate + L"Eat", // eating at a facility (cantina etc.) // TODO.Translate + L"Rest", // Resting at a facility // TODO.Translate + L"Prison", // Flugente: interrogate prisoners + L"Dood", // dead + L"Uitgesc.", // abbreviation for incapacitated + L"POW", // Prisoner of war - captured + L"Kliniek", // patient in a hospital + L"Leeg", // Vehicle is empty + L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate + L"Propag.", // facility: spread propaganda + L"Propag.", // facility: spread propaganda (globally) + L"Rumours", // facility: gather information + L"Propag.", // spread propaganda + L"Rumours", // gather information + L"Command", // militia movement orders + L"Diagnose", // disease diagnosis //TODO.Translate + L"Treat D.", // treat disease among the population + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Repareer", // repairing + L"Fortify", // build structures according to external layout // TODO.Translate + L"Train W.", + L"Hide", // TODO.Translate + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", // TODO.Translate + L"Explore", // TODO.Translate + L"Event",// rftr: merc is on a mini event // TODO: translate + L"Mission", // rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"Militie", // the title of the militia box + L"Unassigned", //the number of unassigned militia troops + L"Milities kunnen niet herplaatst worden als er nog vijanden in de buurt zijn!", + L"Some militia were not assigned to a sector. Would you like to disband them?", // TODO.Translate +}; + + +STR16 pMilitiaButtonString[] = +{ + L"Auto", // auto place the militia troops for the player + L"OK", // done placing militia troops + L"Disband", // HEADROCK HAM 3.6: Disband militia // TODO.Translate + L"Unassign All", // move all milita troops to unassigned pool // TODO.Translate +}; + +STR16 pConditionStrings[] = +{ + L"Excellent", //the state of a soldier .. excellent health + L"Good", // good health + L"Fair", // fair health + L"Wounded", // wounded health + L"Tired", // tired + L"Bleeding", // bleeding to death + L"Knocked out", // knocked out + L"Dying", // near death + L"Dead", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"On duty", // set merc on active duty + L"Patient", // set as a patient to receive medical aid + L"Vehicle", // tell merc to enter vehicle + L"Alone", // let the escorted character go off on their own + L"Close", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"Team 1", + L"Team 2", + L"Team 3", + L"Team 4", + L"Team 5", + L"Team 6", + L"Team 7", + L"Team 8", + L"Team 9", + L"Team 10", + L"Team 11", + L"Team 12", + L"Team 13", + L"Team 14", + L"Team 15", + L"Team 16", + L"Team 17", + L"Team 18", + L"Team 19", + L"Team 20", + L"Team 21", + L"Team 22", + L"Team 23", + L"Team 24", + L"Team 25", + L"Team 26", + L"Team 27", + L"Team 28", + L"Team 29", + L"Team 30", + L"Team 31", + L"Team 32", + L"Team 33", + L"Team 34", + L"Team 35", + L"Team 36", + L"Team 37", + L"Team 38", + L"Team 39", + L"Team 40", + L"Dienst", // on active duty + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Voertuig", // in a vehicle + L"Onderweg", // in transit - abbreviated form + L"Repareer", // repairing + L"Radio Scan", // radio scan // TODO.Translate + L"Oefenen", // training themselves + L"Militie", // training a town to revolt + L"Training Mobile Militia", // TODO.Translate + L"Trainer", // training a teammate + L"Student", // being trained by someone else + L"Get Item", // get items // TODO.Translate + L"Facility Staff", // TODO.Translate + L"Eat", // eating at a facility (cantina etc.) // TODO.Translate + L"Resting at Facility", // TODO.Translate + L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate + L"Dood", // dead + L"Uitgesc.", // abbreviation for incapacitated + L"POW", // Prisoner of war - captured + L"Kliniek", // patient in a hospital + L"Leeg", // Vehicle is empty + L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) + L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda + L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda (globally) + L"Gathering Rumours",// TODO.Translate // facility: gather rumours + L"Spreading Propaganda",// TODO.Translate // spread propaganda + L"Gathering Rumours",// TODO.Translate // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Repareer", // repairing + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"Team 1", + L"Team 2", + L"Team 3", + L"Team 4", + L"Team 5", + L"Team 6", + L"Team 7", + L"Team 8", + L"Team 9", + L"Team 10", + L"Team 11", + L"Team 12", + L"Team 13", + L"Team 14", + L"Team 15", + L"Team 16", + L"Team 17", + L"Team 18", + L"Team 19", + L"Team 20", + L"Team 21", + L"Team 22", + L"Team 23", + L"Team 24", + L"Team 25", + L"Team 26", + L"Team 27", + L"Team 28", + L"Team 29", + L"Team 30", + L"Team 31", + L"Team 32", + L"Team 33", + L"Team 34", + L"Team 35", + L"Team 36", + L"Team 37", + L"Team 38", + L"Team 39", + L"Team 40", + L"Dienst", // on active duty + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Voertuig", // in a vehicle + L"Onderweg", // in transit - abbreviated form + L"Repareer", // repairing + L"Radio Scan", // radio scan // TODO.Translate + L"Oefenen", // training themselves + L"Militie", // training a town to revolt + L"Train Mobiles", // TODO.Translate + L"Trainer", // training a teammate + L"Student", // being trained by someone else + L"Get Item", // get items // TODO.Translate + L"Staff Facility", // TODO.Translate + L"Rest at Facility", // TODO.Translate + L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate + L"Dood", // dead + L"Uitgesc.", // abbreviation for incapacitated + L"POW", // Prisoner of war - captured + L"Kliniek", // patient in a hospital + L"Leeg", // Vehicle is empty + L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) + L"Spread Propaganda",// TODO.Translate // facility: spread propaganda + L"Spread Propaganda",// TODO.Translate // facility: spread propaganda (globally) + L"Gather Rumours",// TODO.Translate // facility: gather rumours + L"Spread Propaganda",// TODO.Translate // spread propaganda + L"Gather Rumours",// TODO.Translate // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Repareer", // repairing + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"Contract Opties:", + L"", // a blank line, required + L"Voor een dag", // offer merc a one day contract extension + L"Voor een week", // 1 week + L"Voor twee weken", // 2 week + L"Ontslag", // end merc's contract + L"Stop", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"POW", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"KRACHT", + L"HANDIGHEID", + L"BEWEEGLIJKHEID", + L"WIJSHEID", + L"TREFZEKERHEID", + L"MEDISCH", + L"TECHNISCH", + L"LEIDERSCHAP", + L"EXPLOSIEVEN", + L"NIVEAU", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Wapen", // the armor rating of the merc + L"Gew.", // the weight the merc is carrying + L"Camo", // the merc's camouflage rating + L"Camouflage:", + L"Protection:", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Bew", // the abbreviated version of : agility + L"Han", // dexterity + L"Kra", // strength + L"Ldr", // leadership + L"Wij", // wisdom + L"Niv", // experience level + L"Tre", // marksmanship skill + L"Tec", // mechanical skill + L"Exp", // explosive skill + L"Med", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Opdracht", // the mercs current assignment + L"Contract", // the contract info about the merc + L"Gezond", // the health level of the current merc + L"Moraal", // the morale of the current merc + L"Cond.", // the condition of the current vehicle + L"Tank", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Oefen", // tell merc to train self + L"Militie", // tell merc to train town + L"Trainer", // tell merc to act as trainer + L"Student", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Schietniveau:", // the allowable rate of fire for a merc who is guarding + L" Agressief vuren", // the merc can be aggressive in their choice of fire rates + L" Spaar Munitie", // conserve ammo + L" Afzien van Vuren", // fire only when the merc needs to + L"Andere Opties:", // other options available to merc + L" Kan Vluchten", // merc can retreat + L" Kan Dekking Zoeken", // merc is allowed to seek cover + L" Kan Team Helpen", // merc can assist teammates + L"OK", // done with this menu + L"Stop", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"Schietniveau:", + L" *Agressief vuren*", + L" *Spaar Munitie*", + L" *Afzien van Vuren*", + L"Andere Opties:", + L" *Kan Vluchten*", + L" *Kan Dekking Zoeken*", + L" *Kan Team Helpen*", + L"OK", + L"Stop", +}; + +STR16 pAssignMenuStrings[] = +{ + L"On duty", // merc is on active duty + L"Doctor", // the merc is acting as a doctor + L"Disease", // merc is a doctor doing diagnosis TODO.Translate + L"Patient", // the merc is receiving medical attention + L"Vehicle", // the merc is in a vehicle + L"Repair", // the merc is repairing items + L"Radio Scan", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"Snitch", // TODO.Translate // anv: snitch actions + L"Train", // the merc is training + L"Militia", // all things militia + L"Get Item", // get items // TODO.Translate + L"Fortify", // fortify sector // TODO.Translate + L"Intel", // covert assignments // TODO.Translate + L"Administer", // TODO.Translate + L"Explore", // TODO.Translate + L"Facility", // the merc is using/staffing a facility // TODO.Translate + L"Stop", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"Attack", // set militia to aggresive + L"Hold Position", // set militia to stationary + L"Retreat", // retreat militia + L"Come to me", // retreat militia + L"Get down", // retreat militia + L"Crouch", // TODO.Translate + L"Take cover", + L"Move to", // TODO.Translate + L"All: Attack", + L"All: Hold Position", + L"All: Retreat", + L"All: Come to me", + L"All: Spread out", + L"All: Get down", + L"All: Crouch", // TODO.Translate + L"All: Take cover", + //L"All: Find items", + L"Cancel", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = // TODO.Translate +{ + // radio operator + L"Artillery Strike", + L"Jam communications", + L"Scan frequencies", + L"Eavesdrop", + L"Call reinforcements", + L"Switch off radio set", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", // TODO.Translate + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Spotter", // TODO.Translate + L"Focus", + L"Drag", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Order an artillery strike from sector...", + L"Fill all radio frequencies with white noise, making communications impossible.", + L"Scan for jamming signals.", + L"Use your radio equipment to continously listen for enemy movement.", + L"Call in reinforcements from neighbouring sectors.", + L"Turn off radio set.", // TODO.Translate + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", // TODO.Translate + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Observe an area, granting allied snipers a bonus to cth on anything you see.", // TODO.Translate + L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Requires:\n", + L" - %d AP\n", + L" - %s\n", + L" - %s or higher\n", + L" - %s or higher or\n", + L" - %d minutes to be ready\n", + L" - mortar positions in neighbouring sectors\n", + L" - %s |o|r %s |a|n|d %s or %s or higher\n", + L" - possession by a demon", + L" - a gun-related trait\n", // TODO.Translate + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = // TODO.Translate +{ + L"Militia", + L"Other Squads", + L"Cancel", + L"%d Militia", + L"All Militia", + + L"More", + L"Corpse: %s", // TODO.Translate +}; + +// TODO.Translate +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Team Informant", + L"Town Assignment", + L"Cancel", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Discuss snitch's behaviour towards his teammates.", + L"Take an assignment in this sector.", + L"Cancel", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Report complaints", + L"Don't report", + L"Prevent misbehaviour", + L"Ignore misbehaviour", + L"Cancel", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Report any complaints you hear from other mercs to your commander.", + L"Don't report anything.", + L"Try to stop other mercs from getting wasted and scrounging.", + L"Don't care what other mercs do.", + L"Cancel", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Spread propaganda", + L"Gather rumours", + L"Cancel", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", + L"Keep an ear to the ground on any rumours about enemy forces activity.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = // TODO.Translate +{ + L"Interrogate admins", + L"Interrogate troops", + L"Interrogate elites", + L"Interrogate officers", + L"Interrogate generals", + L"Interrogate civilians", + L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s was exposed as a snitch but managed to notice it and get out alive.", + L"%s was exposed as a snitch but managed to defuse situation and get out alive.", + L"%s was exposed as a snitch but managed to avoid assassination attempt.", + L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", + + L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", + L"%s was exposed as a snitch and almost beaten to death before guards saved him.", + L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", + L"%s was exposed as a snitch and strangled to death before guards saved him.", + + L"%s was exposed as a snitch and drowned in toilet by other inmates.", + L"%s was exposed as a snitch and beaten to death by other inmates.", + L"%s was exposed as a snitch and shanked to death by other inmates.", + L"%s was exposed as a snitch and strangled to death by other inmates.", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s heard rumours about enemy activity in %d sectors.", + +}; +// /TODO.Translate + +STR16 pRemoveMercStrings[] = +{ + L"Verw.Huurl.", // remove dead merc from current team + L"Stop", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Gezondheid", + L"Lenigheid", + L"Behendigheid", + L"Kracht", + L"Leiderschap", + L"Scherpschutterskunst", + L"Mechanisch", + L"Explosief", + L"Medisch", + L"Annuleren", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Oefenen", // train yourself + L"Train workers", // TODO.Translate + L"Trainer", // train your teammates + L"Student", // be trained by an instructor + L"Stop", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"Team 1", + L"Team 2", + L"Team 3", + L"Team 4", + L"Team 5", + L"Team 6", + L"Team 7", + L"Team 8", + L"Team 9", + L"Team 10", + L"Team 11", + L"Team 12", + L"Team 13", + L"Team 14", + L"Team 15", + L"Team 16", + L"Team 17", + L"Team 18", + L"Team 19", + L"Team 20", + L"Team 21", + L"Team 22", + L"Team 23", + L"Team 24", + L"Team 25", + L"Team 26", + L"Team 27", + L"Team 28", + L"Team 29", + L"Team 30", + L"Team 31", + L"Team 32", + L"Team 33", + L"Team 34", + L"Team 35", + L"Team 36", + L"Team 37", + L"Team 38", + L"Team 39", + L"Team 40", + L"Stop", +}; + +STR16 pPersonnelTitle[] = +{ + L"Dossiers", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Gezondheid: ", // health of merc + L"Beweeglijkheid: ", + L"Handigheid: ", + L"Kracht: ", + L"Leiderschap; ", + L"Wijsheid: ", + L"Erv. Niv.: ", // experience level + L"Trefzekerheid: ", + L"Techniek: ", + L"Explosieven: ", + L"Medisch: ", + L"Med. Kosten: ", // amount of medical deposit put down on the merc + L"Rest Contract: ", // cost of current contract + L"Doden: ", // number of kills by merc + L"Hulp: ", // number of assists on kills by merc + L"Dag. Kosten:", // daily cost of merc + L"Huidige Tot. Kosten:", // total cost of merc + L"Huidige Tot. Service:", // total service rendered by merc + L"Salaris Tegoed:", // amount left on MERC merc to be paid + L"Trefzekerheid:", // percentage of shots that hit target + L"Gevechten:", // number of battles fought + L"Keren Gewond:", // number of times merc has been wounded + L"Vaardigheden:", + L"Vaardigheden:", + L"Achievements:", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"Elite soldiers: %d\n", + L"Regular soldiers: %d\n", + L"Admin soldiers: %d\n", + L"Hostile groups: %d\n", + L"Creatures: %d\n", + L"Tanks: %d\n", + L"Others: %d\n", + + L"Mercs: %d\n", + L"Militia: %d\n", + L"Others: %d\n", + + L"Shots fired: %d\n", + L"Missiles fired: %d\n", + L"Grenades thrown: %d\n", + L"Knives thrown: %d\n", + L"Blade attacks: %d\n", + L"Hand to hand attacks: %d\n", + L"Successful hits: %d\n", + + L"Locks picked: %d\n", + L"Locks breached: %d\n", + L"Traps removed: %d\n", + L"Explosives detonated: %d\n", + L"Items repaired: %d\n", + L"Items combined: %d\n", + L"Items stolen: %d\n", + L"Militia trained: %d\n", + L"Mercs bandaged: %d\n", + L"Surgeries made: %d\n", + L"Persons met: %d\n", + L"Sectors discovered: %d\n", + L"Ambushes prevented: %d\n", + L"Quests handled: %d\n", + + L"Tactical battles: %d\n", + L"Autoresolve battles: %d\n", + L"Times retreated: %d\n", + L"Ambushes experienced: %d\n", + L"Hardest battle: %d Enemies\n", + + L"Shot: %d\n", + L"Stabbed: %d\n", + L"Punched: %d\n", + L"Blasted: %d\n", + L"Suffered damages in facilities: %d\n", + L"Surgeries undergone: %d\n", + L"Facility accidents: %d\n", + + L"Character:", + L"Weakness:", + + L"Attitudes:", // WANNE: For old traits display instead of "Character:"! + + L"Zombies: %d\n", // TODO.Translate + + L"Background:", // TODO.Translate + L"Personality:", // TODO.Translate + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", + L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + L"No Skill", + L"Forceer slot", + L"Man-tot-man", + L"Elektronica", + L"Nachtops", + L"Werpen", + L"Lesgeven", + L"Zware Wapens", + L"Auto Wapens", + L"Sluipen", + L"Handig", + L"Dief", + L"Vechtkunsten", + L"Mesworp", + L"Sniper", + L"Camouflaged", + L"(Expert)", +}; + +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"No Skill", // 0 + L"Auto Weapons", // 1 + L"Heavy Weapons", + L"Marksman", + L"Hunter", + L"Gunslinger", // 5 + L"Hand to Hand", + L"Deputy", + L"Technician", + L"Paramedic", // 9 + // Minor traits + L"Ambidextrous", // 10 + L"Melee", + L"Throwing", + L"Night Ops", + L"Stealthy", + L"Athletics", // 15 + L"Bodybuilding", + L"Demolitions", + L"Teaching", + L"Scouting", // 19 + // covert ops is a major trait that was added later + L"Covert Ops", // 20 + // new minor traits + L"Radio Operator", // 21 + L"Snitch", // 22 + L"Survival", + + // second names for major skills + L"Machinegunner", // 24 + L"Bombardier", + L"Sniper", + L"Ranger", + L"Gunfighter", + L"Martial Arts", + L"Squadleader", + L"Engineer", + L"Doctor", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 38 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"Spy", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch (minor trait) + L"Placeholder", // for survival (minor trait) + L"More...", // 47 + L"Intel", // for INTEL // TODO.Translate + L"Disguise", // for DISGUISE + L"various", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate +}; +////////////////////////////////////////////////////////// + + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"|Staan/Lopen", + L"Hurken/Gehurkt lopen (|C)", + L"Staan/|Rennen", + L"Liggen/Kruipen (|P)", + L"Kijk (|L)", + L"Actie", + L"Praat", + L"Bekijk (|C|t|r|l)", + + // Pop up door menu + L"Handm. openen", + L"Zoek boobytraps", + L"Forceer", + L"Met geweld", + L"Verwijder boobytrap", + L"Sluiten", + L"Maak open", + L"Gebruik explosief", + L"Gebruik breekijzer", + L"Stoppen (|E|s|c)", + L"Stop", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"geen val", + L"een explosie", + L"een elektrische val", + L"alarm", + L"stil alarm", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"dag", + L"week", + L"twee weken", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Selecteer Karakter", + L"Contracteer huurling", + L"Plan Route", + L"Huurling |Contract", + L"Verwijder Huurling", + L"Slaap", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"VAAG", + L"ZEKER", + L"HARD", + L"ERG HARD", +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"ONBEKEND", + L"geluid van BEWEGING", + L"GEKRAAK", + L"PLONZEN", + L"INSLAG", + L"SCHOT", + L"EXPLOSIE", + L"GEGIL", + L"INSLAG", + L"INSLAG", + L"BARSTEN", + L"DREUN", +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"het NOORDOOSTEN", + L"het OOSTEN", + L"het ZUIDOOSTEN", + L"het ZUIDEN", + L"het ZUIDWESTEN", + L"het WESTEN", + L"het NOORDWESTEN", + L"het NOORDEN", +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"Stad", + L"Weg", + L"Vlaktes", + L"Woestijn", + L"Bossen", + L"Woud", + L"Moeras", + L"Water", + L"Heuvels", + L"Onbegaanbaar", + L"Rivier", //river from north to south + L"Rivier", //river from east to west + L"Buitenland", + //NONE of the following are used for directional travel, just for the sector description. + L"Tropisch", + L"Landbouwgrond", + L"Vlaktes, weg", + L"Bossen, weg", + L"Boerderij, weg", + L"Tropisch, weg", + L"Woud, weg", + L"Kustlijn", + L"Bergen, weg", + L"Kust-, weg", + L"Woestijn, weg", + L"Moeras, weg", + L"Bossen, SAM-stelling", + L"Woestijn, SAM-stelling", + L"Tropisch, SAM-stelling", + L"Meduna, SAM-stelling", + + //These are descriptions for special sectors + L"Cambria Ziekenhuis", + L"Drassen Vliegveld", + L"Meduna Vliegveld", + L"SAM-stelling", + L"Refuel site", // TODO.Translate + L"Schuilplaats Rebellen", //The rebel base underground in sector A10 + L"Tixa Kerker", //The basement of the Tixa Prison (J9) + L"Hol Beest", //Any mine sector with creatures in it + L"Orta Basis", //The basement of Orta (K4) + L"Tunnel", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Schuilplaats", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s zijn ontdekt in sector %c%d en een ander team arriveert binnenkort.", //STR_DETECTED_SINGULAR + L"%s zijn ontdekt in sector %c%d en andere teams arriveren binnenkort.", //STR_DETECTED_PLURAL + L"Wil je een gezamenlijke aankomst coördineren?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"De vijand geeft je de kans om je over te geven.", //STR_ENEMY_SURRENDER_OFFER + L"De vijand heeft je overgebleven bewusteloze huurlingen gevangen.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Vluchten", //The retreat button //STR_AR_RETREAT_BUTTON + L"OK", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"VERDEDIGEN", //STR_AR_DEFEND_HEADER + L"AANVALLEN", //STR_AR_ATTACK_HEADER + L"ONTDEKKEN", //STR_AR_ENCOUNTER_HEADER + L"Sector", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"VICTORIE!", //STR_AR_OVER_VICTORY + L"NEDERLAAG!", //STR_AR_OVER_DEFEAT + L"OVERGEGEVEN!", //STR_AR_OVER_SURRENDERED + L"GEVANGEN!", //STR_AR_OVER_CAPTURED + L"GEVLUCHT!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Militie", //STR_AR_MILITIA_NAME, + L"Elite", //STR_AR_ELITE_NAME, + L"Troep", //STR_AR_TROOP_NAME, + L"Admin", //STR_AR_ADMINISTRATOR_NAME, + L"Wezen", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Tijd verstreken", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"GEVLUCHT", //STR_AR_MERC_RETREATED, + L"VLUCHTEN", //STR_AR_MERC_RETREATING, + L"VLUCHT", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Autom. Opl.", //!!! 1 //STR_PB_AUTORESOLVE_BTN, + L"Naar Sector", //STR_PB_GOTOSECTOR_BTN, + L"Terug- trekken", //!!! 2 //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"VIJAND ONTDEKT", //STR_PB_ENEMYENCOUNTER_HEADER, + L"INVASIE VIJAND", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"HINDERLAAG VIJAND", //STR_PB_ENEMYAMBUSH_HEADER + L"BINNENGAAN VIJANDIGE SECTOR", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"AANVAL BEEST", //STR_PB_CREATUREATTACK_HEADER + L"BLOODCAT VAL", //STR_PB_BLOODCATAMBUSH_HEADER + L"BINNENGAAN HOL BLOODCAT", //STR_PB_ENTERINGBLOODCATLAIR_HEADER + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Locatie", + L"Vijanden", + L"Huurlingen", + L"Milities", + L"Beesten", + L"Bloodcats", + L"Sector", + L"Geen", //If there are no uninvolved mercs in this fight. + L"NVT", //Acronym of Not Applicable + L"d", //One letter abbreviation of day + L"u", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Weggaan", + L"Verspreid", + L"Groeperen", + L"OK", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"Maakt posities van huurlingen vrij en\nmaakt handmatig herinvoer mogelijk. (|C)", + L"Ver|spreidt willekeurig je huurlingen\nelke keer als je de toets indrukt.", + L"Hiermee is het mogelijk de huurlingen te |groeperen.", + L"Druk op deze toets als je klaar bent met\nhet positioneren van je huurlingen. (|E|n|t|e|r)", + L"Je moet al je huurlingen positioneren\nvoor je het gevecht kunt starten.", + + //Various strings (translate word for word) + + L"Sector", + L"Kies posities binnenkomst", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"Ziet er hier niet goed uit. Het is onbegaanbaar. Probeer een andere locatie.", + L"Plaats je huurlingen in de gemarkeerde sectie van de kaart.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"is gearriveerd in sector", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"Lost het gevecht |Automatisch\nop zonder de kaart te laden.", + L"Automatisch oplossen niet\nmogelijk als de speler aanvalt.", + L"Ga sector binnen om tegen\nde vijand te strijden. (|E)", + L"T|rek groep terug en ga naar de vorige sector.", //singular version + L"T|rek alle groepen terug en\nga naar hun vorige sectors.", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"Vijanden vallen je militie aan in sector %c%d.", + //%c%d is the sector -- ex: A9 + L"Beesten vallen je militie aan in sector %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Beesten vallen aan en doden %d burgers in sector %s.", + //%s is the sector location -- ex: A9: Omerta + L"Vijand valt je huurlingen aan in sector %s. Geen enkele huurling kan vechten!", + //%s is the sector location -- ex: A9: Omerta + L"Beesten vallen je huurlingen aan in sector %s. Geen enkele huurling kan vechten!", + + // Flugente: militia movement forbidden due to limited roaming // TODO.Translate + L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", + L"War room isn't staffed - militia move aborted!", + + L"Robot", //STR_AR_ROBOT_NAME, TODO: translate + L"Tank", //STR_AR_TANK_NAME, + L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate + + L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", // TODO.Translate + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"Dag", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"Sector gevonden:", + L"Dag gevonden:", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"Status:", + L"Gewicht:", + L"AP Costs", + L"Afst:", // Range + L"Sch:", // Damage + L"Munitie:", // Number of bullets left in a magazine + L"AP:", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Accuracy:", //9 + L"Range:", //10 + L"Damage:", //11 + L"Weight:", //12 + L"Stun Damage:",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + L"Attachments:", //14 // TODO.Translate + L"AUTO/5:", //15 + L"Remaining ammo:", //16 // TODO.Translate + + // TODO.Translate + L"Default:", //17 //WarmSteel - So we can also display default attachments + L"Dirt:", // 18 //added by Flugente // TODO.Translate + L"Space:", // 19 //space left on Molle items // TODO.Translate + L"Spread Pattern:", // 20 // TODO.Translate + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + // TODO.Translate + L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", + L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", + L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", + L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", + L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", + L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", + L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", + L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", + L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"", //12 + L"APs to ready", + L"APs to fire Single", + L"APs to fire Burst", + L"APs to fire Auto", + L"APs to Reload", + L"APs to Reload Manually", + L"Burst Penalty (Lower is better)", //19 + L"Bipod Modifier", + L"Autofire shots per 5 AP", + L"Autofire Penalty (Lower is better)", + L"Burst/Auto Penalty (Lower is better)", //23 + L"APs to Throw", + L"APs to Launch", + L"APs to Stab", + L"No Single Shot!", + L"No Burst Mode!", + L"No Auto Mode!", + L"APs to Bash", + L"", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Item Size Modifier (Lower is better)", // 0 + L"Reliability Modifier", + L"Loudness Modifier (Lower is better)", + L"Hides Muzzle Flash", + L"Bipod Modifier", + L"Range Modifier", // 5 + L"To-Hit Modifier", + L"Best Laser Range", + L"Aiming Bonus Modifier", + L"Burst Size Modifier", + L"Burst Penalty Modifier (Higher is better)", // 10 + L"Auto-Fire Penalty Modifier (Higher is better)", + L"AP Modifier", + L"AP to Burst Modifier (Lower is better)", + L"AP to Auto-Fire Modifier (Lower is better)", + L"AP to Ready Modifier (Lower is better)", // 15 + L"AP to Reload Modifier (Lower is better)", + L"Magazine Size Modifier", + L"AP to Attack Modifier (Lower is better)", + L"Damage Modifier", + L"Melee Damage Modifier", // 20 + L"Woodland Camo", + L"Urban Camo", + L"Desert Camo", + L"Snow Camo", + L"Stealth Modifier", // 25 + L"Hearing Range Modifier", + L"Vision Range Modifier", + L"Day Vision Range Modifier", + L"Night Vision Range Modifier", + L"Bright Light Vision Range Modifier", //30 + L"Cave Vision Range Modifier", + L"Tunnel Vision Percentage (Lower is better)", + L"Minimum Range for Aiming Bonus", + L"Hold |C|t|r|l to compare items", // item compare help text + L"Equipment weight: %4.1f kg", // 35 // TODO.Translate +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"In ", + L"PERFECT", + L"EXCELLENT", + L"GOOD", + L"FAIR", + L"POOR", + L"BAD", + L"TERRIBLE", + L" condition." +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Bedrag", + L"Restbedrag:", //this is the overall balance + L"Bedrag", + L"Splitsen:", // the amount he wants to separate from the overall balance to get two piles of money + + L"Huidig", + L"Saldo:", + L"Bedrag", + L"naar Opnemen:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"STERVEND", // >= 0 + L"KRITIEK", // >= 15 + L"SLECHT", // >= 30 + L"GEWOND", // >= 45 + L"GEZOND", // >= 60 + L"STERK", // >= 75 + L"EXCELLENT", // >= 90 + L"CAPTURED", // added by Flugente TODO.Translate +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"$1000", + L"$100", + L"$10", + L"OK", + L"Splitsen", + L"Opnemen", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"Voor:", +}; + +CHAR16 gzConsLabel[10] = +{ + L"Tegen:", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Wat?", //meaning "Repeat yourself" + L"Aardig", //approach in a friendly + L"Direct", //approach directly - let's get down to business + L"Dreigen", //approach threateningly - talk now, or I'll blow your face off + L"Geef", + L"Rekruut", //recruit +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Koop/Verkoop", //Buy/Sell + L"Koop", //Buy + L"Verkoop", //Sell + L"Repareer", //Repair +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"OK", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"Eldorado", + L"Hummer", // a hummer jeep/truck -- military vehicle + L"Koeltruck", // Icecream Truck + L"Jeep", + L"Tank", + L"Helikopter", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Eldor.", + L"Hummer", // the HMVV + L"Truck", + L"Jeep", + L"Tank", + L"Heli", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Eldorado", + L"Hummer", //a military jeep. This is a brand name. + L"Truck", // Ice cream truck + L"Jeep", + L"Tank", + L"Heli", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"You cannot shoot from this seat.", // TODO.Translate + L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Luchtaanval", + L"Automatisch EHBO toepassen?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s ziet dat er items missen van de lading.", + + // The %s is a string from pDoorTrapStrings + + L"Het slot heeft %s.", + L"Er is geen slot.", + L"Gelukt!", + L"Mislukt.", + L"Gelukt!", + L"Mislukt.", + L"Geen boobytrap op het slot.", + L"Gelukt!", + // The %s is a merc name + L"%s heeft niet de juiste sleutel.", + L"Val weggehaald van slot.", + L"Slot heeft geen boobytrap.", + L"Op slot.", + L"DEUR", + L"VAL", + L"OP SLOT", + L"OPEN", + L"KAPOT", + L"Hier zit een schakelaar. Activeren?", + L"Boobytrap ontmantelen?", + L"Vorige...", + L"Volgende...", + L"Meer...", + + // In the next 2 strings, %s is an item name + + L"%s is op de grond geplaatst.", + L"%s is gegeven aan %s.", + + // In the next 2 strings, %s is a name + + L"%s is helemaal betaald.", + L"%s heeft tegoed nog %d.", + L"Kies detonatie frequentie:", //in this case, frequency refers to a radio signal + L"Aantal beurten tot ontploffing:", //how much time, in turns, until the bomb blows + L"Stel frequentie in van ontsteking:", //in this case, frequency refers to a radio signal + L"Boobytrap ontmantelen?", + L"Blauwe vlag weghalen?", + L"Blauwe vlag hier neerzetten?", + L"Laatste beurt", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"Zeker weten dat je %s wil aanvallen?", + L"Ah, voertuigen kunnen plaats niet veranderen.", + L"De robot kan niet van plaats veranderen.", + + // In the next 3 strings, %s is a name + + L"%s kan niet naar die plaats gaan.", + L"%s kan hier geen EHBO krijgen.", + L"%s heeft geen EHBO nodig.", + L"Kan daar niet heen.", + L"Je team is vol. Geen ruimte voor rekruut.", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s is gerekruteerd.", + + // Here %s is a name and %d is a number + + L"%s ontvangt $%d.", + + // In the next string, %s is a name + + L"%s begeleiden?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"%s inhuren voor %s per dag?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"Wil je vechten?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"%s kopen voor %s?", + + // In the next string, %s is a name + + L"%s wordt begeleid door team %d.", + + // These messages are displayed during play to alert the player to a particular situation + + L"GEBLOKKEERD", //weapon is jammed. + L"Robot heeft %s kal. munitie nodig.", //Robot is out of ammo + L"Hier gooien? Kan niet.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Sluipmodus (|Z)", // L"Stealth Mode (|Z)", + L"Landkaart (|M)", // L"|Map Screen", + L"OK (Ein|de)", // L"|Done (End Turn)", + L"Praat", // L"Talk", + L"Stil", // L"Mute", + L"Omhoog (|P|g|U|p)", // L"Stance Up (|P|g|U|p)", + L"Cursor Niveau (|T|a|b)", // L"Cursor Level (|T|a|b)", + L"Klim / Spring", // L"Climb / Jump", + L"Omlaag (|P|g|D|n)", // L"Stance Down (|P|g|D|n)", + L"Bekijk (|C|t|r|l)", // L"Examine (|C|t|r|l)", + L"Vorige huurling", // L"Previous Merc", + L"Volgende huurling (|S|p|a|c|e)", // L"Next Merc (|S|p|a|c|e)", + L"|Opties", // L"|Options", + L"Salvo's (|B)", // L"|Burst Mode", + L"Kijk/draai (|L)", // L"|Look/Turn", + L"Gezond: %d/%d\nKracht: %d/%d\nMoraal: %s", // L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s", + L"Hé?", //this means "what?" + L"Door", //an abbrieviation for "Continued" + L"%s is praat weer.", // L"Mute off for %s.", + L"%s is stil.", // L"Mute on for %s.", + L"Gezond: %d/%d\nBrandst: %d/%d", // L"Health: %d/%d\nFuel: %d/%d", + L"Stap uit voertuig", // L"Exit Vehicle" , + L"Wissel Team ( |S|h|i|f|t |S|p|a|c|e )", // L"Change Squad ( |S|h|i|f|t |S|p|a|c|e )", + L"Rijden", // L"Drive", + L"Nvt", //this is an acronym for "Not Applicable." + L"Actie ( Man-tot-man )", // L"Use ( Hand To Hand )", + L"Actie ( Firearm )", // L"Use ( Firearm )", + L"Actie ( Mes )", // L"Use ( Blade )", + L"Actie ( Explosieven )", // L"Use ( Explosive )", + L"Actie ( EHBO )", // L"Use ( Medkit )", + L"(Vang)", // L"(Catch)", + L"(Herlaad)", // L"(Reload)", + L"(Geef)", // L"(Give)", + L"%s is afgezet.", // L"%s has been set off.", + L"%s is gearriveerd.", // L"%s has arrived.", + L"%s heeft geen Actie Punten.", // L"%s ran out of Action Points.", + L"%s is niet beschikbaar.", // L"%s isn't available.", + L"%s zit onder het verband.", // L"%s is all bandaged.", + L"Verband van %s is op.", // L"%s is out of bandages.", + L"Vijand in de sector!", // L"Enemy in sector!", + L"Geen vijanden in zicht.", // L"No enemies in sight.", + L"Niet genoeg Actie Punten.", // L"Not enough Action Points.", + L"Niemand gebruikt afstandb.", // L"Nobody's using the remote.", + L"Magazijn leeg door salvovuur!", // L"Burst fire emptied the clip!", + L"SOLDAAT", // L"SOLDIER", + L"CREPITUS", // L"CREPITUS", + L"MILITIE", // L"MILITIA", + L"BURGER", // L"CIVILIAN", + L"ZOMBIE", // TODO.Translate + L"PRISONER",// TODO.Translate + L"Verlaten Sector", // L"Exiting Sector", + L"OK", + L"Stoppen", // L"Cancel", + L"Huurling gesel.", // L"Selected Merc", + L"Alle huurl. in team", // L"All Mercs in Squad", + L"Naar Sector", // L"Go to Sector", + L"Naar Landk.", // L"Go to Map", + L"Vanaf deze kant kun je de sector niet verlaten.", // L"You can't leave the sector from this side.", + L"You can't leave in turn based mode.", // TODO.Translate + L"%s is te ver weg.", // L"%s is too far away.", + L"Verwijder Boomtoppen", // L"Removing Treetops", + L"Tonen Boomtoppen", // L"Showing Treetops", + L"KRAAI", //Crow, as in the large black bird + L"NEK", + L"HOOFD", + L"TORSO", + L"BENEN", + L"De Koningin vertellen wat ze wil weten?", // L"Tell the Queen what she wants to know?", + L"Vingerafdruk-ID nodig", // L"Fingerprint ID aquired", + L"Vingerafdruk-ID ongeldig. Wapen funct. niet", // L"Invalid fingerprint ID. Weapon non-functional", + L"Doelwit nodig", // L"Target aquired", + L"Pad geblokkeerd", // L"Path Blocked", + L"Geld Storten/Opnemen", //Help text over the $ button on the Single Merc Panel ("Deposit/Withdraw Money") + L"Niemand heeft EHBO nodig.", // L"No one needs first aid.", + L"Vast.", // Short form of JAMMED, for small inv slots + L"Kan daar niet heen.", // used ( now ) for when we click on a cliff + L"Pad is geblokkeerd. Wil je met deze persoon van plaats wisselen?", + L"Persoon weigert weg te gaan.", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Ben je het eens met %s?", // L"Do you agree to pay %s?", + L"Wil je kostenloze medische hulp?", // L"Accept free medical treatment?", + L"Wil je trouwen met %s?", // L"Agree to marry %s?", Daryl + L"Slot Ring Paneel", // L"Key Ring Panel", + L"Dat kan niet met een EPC.", // L"You cannot do that with an EPC.", + L"%s sparen?", // L"Spare Krott?", Krott + L"Buiten wapenbereik", // L"Out of weapon range", + L"Mijnwerker", // L"Miner", + L"Voertuig kan alleen tussen sectors reizen", // L"Vehicle can only travel between sectors", + L"Nu geen Auto-EHBO mogelijk", // L"Can't autobandage right now", + L"Pad Geblokkeerd voor %s", // L"Path Blocked for %s", + L"Je huurlingen, gevangen door %s's leger, zitten hier opgesloten!", //Deidranna + L"Slot geraakt", // L"Lock hit", + L"Slot vernielt", // L"Lock destroyed", + L"Iemand anders probeert deze deur te gebruiken.", // L"Somebody else is trying to use this door.", + L"Gezondheid: %d/%d\nBrandstof: %d/%d", //L"Health: %d/%d\nFuel: %d/%d", + L"%s kan %s niet zien.", // Cannot see person trying to talk to + L"Attachment removed", + L"Kan niet een ander voertuig bereiken aangezien u reeds 2 hebt", + + // added by Flugente for defusing/setting up trap networks // TODO.Translate + L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", + L"Set defusing frequency:", + L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", + L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", + L"Select tripwire hierarchy (1 - 4) and network (A - D):", + + // added by Flugente to display food status + L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"What do you want to do?", + L"Fill canteens", + L"Clean guns (Merc)", + L"Clean guns (Team)", + L"Take off clothes", + L"Lose disguise", + L"Militia inspection", + L"Militia restock", + L"Test disguise", + L"unused", + + // added by Flugente: decide what to do with the corpses + L"What do you want to do with the body?", + L"Decapitate", + L"Gut", + L"Take Clothes", + L"Take Body", + + // Flugente: weapon cleaning + L"%s cleaned %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", // TODO.Translate + L"Field interrogation", + L"Where do you want to send the %d prisoners?", // TODO.Translate + L"Let them go", + L"What do you want to do?", + L"Demand surrender", + L"Offer surrender", + L"Distract", // TODO.Translate + L"Talk", + L"Recruit Turncoat", // TODO: translate + + // TODO.Translate + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Disarm trap", + L"Inspect trap", + L"Remove blue flag", + L"Blow up!", + L"Activate tripwire", + L"Deactivate tripwire", + L"Reveal tripwire", + L"No detonator or remote detonator found!", + L"This bomb is already armed!", + L"Safe", + L"Mostly safe", + L"Risky", + L"Dangerous", + L"High danger!", + + L"Mask", // TODO.Translate + L"NVG", + L"Item", + + L"This feature works only with New Inventory System", + L"No item in your main hand", + L"Nowhere to place item from main hand", + L"No defined item for this quick slot", + L"No free hand for new item", + L"Item not found", + L"Cannot take item to main hand", + + L"Attempting to bandage travelling mercs...", //TODO.Translate + + L"Improve gear", + L"%s changed %s for superior version", + L"%s picked up %s", // TODO.Translate + + L"%s has stopped chatting with %s", // TODO.Translate +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"Als aangekruist, dan wordt de aanliggende sector meteen geladen.", + L"Als aangekruist, dan worden de huurlingen automatisch op de\nkaart geplaatst rekening houdend met reistijden.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"Deze sector is door de vijand bezet en huurlingen kun je niet achterlaten.\nJe moet deze situatie oplossen voor het laden van andere sectors.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"Als de overgebleven huurlingen uit deze sector trekken,\nwordt de aanliggende sector onmiddellijk geladen.", + L"Als de overgebleven huurlingen uit deze sector trekken,\nwordt je automatisch in het landkaartscherm geplaatst,\nrekening houdend met de reistijd van je huurlingen.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s moet geëscorteerd worden door jouw huurlingen\nen kan de sector niet alleen verlaten.", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s kan de sector niet alleen verlaten omdat hij %s escorteert.", //male singular + L"%s kan de sector niet alleen verlaten omdat zij %s escorteert.", //female singular + L"%s kan de sector niet alleen verlaten omdat hij meerdere karakters escorteert.", //male plural + L"%s kan de sector niet alleen verlaten omdat zij meerdere karakters escorteert.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"Al je huurlingen moeten in de buurt zijn om het team te laten reizen.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"Als aangekruist, dan zal %s alleen verder reizen\nen automatisch bij een uniek team gevoegd worden.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"Als aangekruist, dan zal je geselecteerde\nteam verder reizen, de sector verlatend.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s wordt geëscorteerd door jouw huurlingen en kan de sector niet alleen verlaten. Je huurlingen moeten eerst in de buurt zijn.", +}; + + + +STR16 pRepairStrings[] = +{ + L"Items", // tell merc to repair items in inventory + L"SAM-Stelling", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Stop", // cancel this menu + L"Robot", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"verliest", // the merc has lost a statistic + L"krijgt", // the merc has gained a statistic + L"punt voor", // singular + L"punten voor", // plural + L"niveau voor", // singular + L"niveaus voor", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"gezondheid.", + L"beweeglijkheid.", + L"handigheid.", + L"wijsheid.", + L"medisch kunnen.", + L"explosieven.", + L"technisch kunnen.", + L"trefzekerheid.", + L"ervaring.", + L"kracht.", + L"leiderschap.", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"Totale Afstand: ", // total distance for helicopter to travel + L" Veilig: ", // distance to travel to destination + L" Onveilig:", // distance to return from destination to airport + L"Totale Kosten: ", // total cost of trip by helicopter + L"Aank: ", // ETA is an acronym for "estimated time of arrival" + L"Helikopter heeft weinig brandstof en moet landen in vijandelijk gebied!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Passagiers: ", + L"Selecteer Skyrider of Aanvoer Drop-plaats?", // L"Select Skyrider or the Arrivals Drop-off?", + L"Skyrider", + L"Aanvoer", // L"Arrivals", + L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> // TODO.Translate + L"Helicopter will now return straight to base, do you want to drop down passengers before?", // TODO.Translate + L"Remaining Fuel:", // TODO.Translate + L"Dist. To Refuel Site:", // TODO.Translate +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", + L"Helicopter is currently disassembled. Wait until repairs are finished.", + L"Repairs completed. Helicopter is available again.", + L"Helicopter is fully refueled.", + + L"Helicopter has exceeded maximum range!", // TODO.Translate +}; + +STR16 sMapLevelString[] = +{ + L"Subniv.:", // what level below the ground is the player viewing in mapscreen ("Sublevel:") +}; + +STR16 gsLoyalString[] = +{ + L"Loyaal", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"kan geen reisorders ondergronds ontvangen.", // L"can't get travel orders underground.", +}; + +STR16 gsTimeStrings[] = +{ + L"u", // hours abbreviation + L"m", // minutes abbreviation + L"s", // seconds abbreviation + L"d", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"Geen", + L"Ziekenhuis", + L"Factory", // TODO.Translate + L"Gevangenis", + L"Krijgsmacht", + L"Vliegveld", + L"Schietterrein", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"Inventaris", + L"OK", + L"Repair", // TODO.Translate + L"Factories", // TODO.Translate +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"Grootte", // 0 // size of the town in sectors + L"", // blank line, required + L"Gezag", // how much of town is controlled + L"Geen", // none of this town + L"Verboden Mijn", // mine associated with this town + L"Loyaliteit", // 5 // the loyalty level of this town + L"Getraind", // the forces in the town trained by the player + L"", + L"Voorzieningen", // main facilities in this town + L"Niveau", // the training level of civilians in this town + L"Training Burgers", // 10 // state of civilian training in town + L"Militie", // the state of the trained civilians in the town + + // Flugente: prisoner texts + L"Prisoners", + L"%d (capacity %d)", + L"%d Admins", + L"%d Regulars", + L"%d Elites", + L"%d Officers", + L"%d Generals", + L"%d Civilians", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"Mijn", // 0 + L"Zilver", + L"Goud", + L"Dagelijkse prod.", + L"Mogelijke prod.", + L"Verlaten", // 5 + L"Gesloten", + L"Raakt Op", + L"Produceert", + L"Status", + L"Prod. Tempo", + L"Resource", // 10 L"Ertstype", // TODO.Translate + L"Gezag Dorp", + L"Loyaliteit Dorp", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"Vijandelijke troepen", + L"Sector", + L"# Items", + L"Onbekend", + + L"Gecontrolleerd", + L"Ja", + L"Nee", + L"Status/Software status:", // TODO.Translate + + L"Additional Intel", // TODO:Translate +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s is niet dichtbij genoeg.", //Merc is in sector with item but not close enough + L"Kan huurling niet selecteren.", //MARK CARTER + L"%s is niet in de sector om dat item te pakken.", + L"Tijdens gevechten moet je items handmatig oppakken.", + L"Tijdens gevechten moet je items handmatig neerleggen.", + L"%s is niet in de sector om dat item neer te leggen.", + L"Tijdens gevecht, kunt u met een munitiekrat herladen niet.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Locatie", // sector these items are in + L"Aantal Items", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"Om de taken van een huurling te veranderen, zoals team, dokter of repareren, klik dan in de 'Toewijzen'-kolom", + L"Om een huurling een ander doel te geven, klik dan in de 'Doel'-kolom", + L"Op het moment dat een huurling een reis-order gekregen heeft, kan deze met de tijd-versneller in beweging worden gezet.", + L"Links-klikken selecteert de sector. Nogmaals links-klikken geeft de huurling een reisorder. Rechts-klikken geeft sector-informatie.", + L"Druk op een willekeurig moment op 'h'om deze helptekst te krijgen.", + L"Test Tekst", + L"Test Tekst", + L"Test Tekst", + L"Test Tekst", + L"Totdat je arriveert in Arulco is er niet veel te doen bij dit scherm. Als je klaar bent met het samenstellen van je team, klik dan op de Tijd-Versnel-knop rechtsonder. Zo verstrijkt de tijd totdat je team in Arulco aankomt.", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"Huurlingen in Sector", // title for movement box + L"Teken Reisroute", // done with movement menu, start plotting movement + L"Stop", // cancel this menu + L"Anders", // title for group of mercs not on squads nor in vehicles + L"Select all", // Select all squads TODO: Translate +}; + + +STR16 pUpdateMercStrings[] = +{ + L"Oeps:", // an error has occured + L"Contract Huurling verlopen:", // this pop up came up due to a merc contract ending + L"Huurling Taak Volbracht:", // this pop up....due to more than one merc finishing assignments + L"Huurling weer aan het Werk:", // this pop up ....due to more than one merc waking up and returing to work + L"Huurling zegt Zzzzzzz:", // this pop up ....due to more than one merc being tired and going to sleep + L"Contract Loopt Bijna Af:", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Toon Dorpen (|W)", + L"Toon |Mijnen", + L"Toon |Teams & Vijanden", + L"Toon Luchtruim (|A)", + L"Toon |Items", + L"Toon Milities & Vijanden (|Z)", + L"Show |Disease Data", // TODO.Translate + L"Show Weathe|r", + L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Next (|.)", // next page // TODO.Translate + L"Previous (|,)", // previous page // TODO.Translate + L"Exit Sector Inventory (|E|s|c)", // exit sector inventory // TODO.Translate + + // TODO.Translate + L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button + L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge + L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items + L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo + L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button + L"Toggle Get Item Display", // Flugente: move item display // TODO.Translate + L"Save Gear Template", // TODO.Translate + L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"|Laptop", + L"Tactisch (|E|s|c)", + L"|Opties", + L"TijdVersneller (|+)", // time compress more + L"TijdVersneller (|-)", // time compress less + L"Vorig Bericht (|U|p)\nVorige Pagina (|P|g|U|p)", // previous message in scrollable list + L"Volgend Bericht (|D|o|w|n)\nVolgende pagina (|P|g|D|n)", // next message in the scrollable list + L"Start/Stop Tijd (|S|p|a|c|e)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Huidig Saldo", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s is dood.", +}; + + +STR16 pDayStrings[] = +{ + L"Dag", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Enrico", + L"Psych Pro Inc", + L"Help Desk", + L"Psych Pro Inc", + L"Speck", + L"R.I.S.", //5 + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", //10 + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", //15 + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", //20 + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", //25 + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", //30 + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephan", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"M.I.S. Verzekeringen", + L"Bobby Rays", + L"Kingpin", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"Vorige", + L"Volgende", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"Je hebt nieuwe berichten...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"Bericht verwijderen?", + L"ONGELEZEN bericht(en) verwijderen?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"Van:", + L"Subject:", + L"Dag:", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"Postvak", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Account Plus", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Credit:", // credit (subtract from) to player's account + L"Debet:", // debit (add to) to player's account + L"Saldo Gisteren:", + L"Stortingen Gisteren:", + L"Uitgaven Gisteren:", + L"Saldo Eind van de Dag:", + L"Saldo Vandaag:", + L"Stortingen Vandaag:", + L"Uitgaven Vandaag:", + L"Huidig Saldo:", + L"Voorspelde Inkomen:", + L"Geschat Saldo:", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"Dag", // the day column + L"Credit", // the credits column (to ADD money to your account) + L"Debet", // the debits column (to SUBTRACT money from your account) + L"Transactie", // transaction type - see TransactionText below + L"Saldo", // balance at this point in time + L"Pag.", // page number + L"Dag(en)", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"Toegenomen Interest", // interest the player has accumulated so far + L"Anonieme Storting", + L"Transactiekosten", + L"Gehuurd", // Merc was hired + L"Bobby Ray's Wapenhandel", // Bobby Ray is the name of an arms dealer + L"Rekeningen Voldaan bij M.E.R.C.", + L"Medische Storting voor %s", // medical deposit for merc + L"IMP Profiel Analyse", // IMP is the acronym for International Mercenary Profiling + L"Verzekering Afgesloten voor %s", + L"Verzekering Verminderd voor %s", + L"Verzekering Verlengd voor %s", // johnny contract extended + L"Verzekering Afgebroken voor %s", + L"Verzekeringsclaim voor %s", // insurance claim for merc + L"een dag", // merc's contract extended for a day + L"1 week", // merc's contract extended for a week + L"2 weken", // ... for 2 weeks + L"Inkomen Mijn", + L"", //String nuked + L"Gekochte Bloemen", + L"Volledige Medische Vergoeding voor %s", + L"Gedeeltelijke Medische Vergoeding voor %s", + L"Geen Medische Vergoeding voor %s", + L"Betaling aan %s", // %s is the name of the npc being paid + L"Maak Geld over aan %s", // transfer funds to a merc + L"Maak Geld over van %s", // transfer funds from a merc + L"Rust militie uit in %s", // initial cost to equip a town's militia + L"Items gekocht van %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s heeft geld gestort.", + L"Sold Item(s) to the Locals", + L"Facility Use", // HEADROCK HAM 3.6 // TODO.Translate + L"Militia upkeep", // HEADROCK HAM 3.6 // TODO.Translate + L"Ransom for released prisoners", // Flugente: prisoner system TODO.Translate + L"WHO data subscription", // Flugente: disease TODO.Translate + L"Payment to Kerberus", // Flugente: PMC + L"SAM site repair", // Flugente: SAM repair // TODO.Translate + L"Trained workers", // Flugente: train workers + L"Drill militia in %s", // Flugente: drill militia // TODO.Translate + L"Mini event", // rftr: mini events // TODO: translate + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Verzekering voor", // insurance for a merc + L"Contract %s verl. met 1 dag.", // entend mercs contract by a day + L"Contract %s verl. met 1 week.", + L"Contract %s verl. met 2 weken.", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"Skyrider is $%d betaald.", // skyrider was paid an amount of money + L"Skyrider heeft $%d tegoed.", // skyrider is still owed an amount of money + L"Skyrider is klaar met tanken", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider is klaar om weer te vliegen.", // Skyrider was grounded but has been freed + L"Skyrider heeft geen passagiers. Als je huurlingen in deze sector wil vervoeren, wijs ze dan eerst toe aan Voertuig/Helikopter.", +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"Super", + L"Goed", + L"Stabiel", + L"Mager", + L"Paniek", + L"Slecht", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"%s's uitrusting is nu beschikbaar in Omerta (A9).", + L"%s's uitrusting is nu beschikbaar in Drassen (B13).", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"Gezondheid", + L"Energie", + L"Moraal", + L"Conditie", // the condition of the current vehicle (its "health") + L"Brandstof", // the fuel level of the current vehicle (its "energy") + L"Posion", // TODO.Translate + L"Water", // drink level + L"Food", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Vorige Huurling (|L|e|f|t)", // previous merc in the list + L"Volgende Huurling (|R|i|g|h|t)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"aank:", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"Je bent het voor altijd kwijt. Zeker weten?", // do you want to continue and lose the item forever + L"Dit item ziet er HEEL belangrijk uit. Weet je HEEL, HEEL zeker dat je het wil weggooien?", // does the user REALLY want to trash this item + +}; + + +STR16 pMapErrorString[] = +{ + L"Team kan niet verder reizen met een slapende huurling.", + +//1-5 + L"Verplaats het team eerst bovengronds.", + L"Reisorders? Het is vijandig gebied!", + L"Om te verplaatsen moeten huurlingen eerst toegewezen worden aan een team of voertuig.", + L"Je hebt nog geen team-leden.", // you have no members, can't do anything + L"Huurling kan order niet opvolgen.", // merc can't comply with your order +//6-10 + L"heeft een escorte nodig. Plaats hem in een team.", // merc can't move unescorted .. for a male + L"heeft een escorte nodig. Plaats haar in een team.", // for a female + L"Huurling is nog niet in %s aangekomen!", + L"Het lijkt erop dat er eerst nog contractbesprekingen gehouden moeten worden.", + L"Cannot give a movement order. Air raid is going on.", +//11-15 + L"Reisorders? Er is daar een gevecht gaande!", + L"Je bent in een hinderlaag gelokt van Bloodcats in sector %s!", + L"Je bent in sector %s iets binnengelopen dat lijkt op het hol van een bloodcat!", + L"", + L"De SAM-stelling in %s is overgenomen.", +//16-20 + L"De mijn in %s is overgenomen. Je dagelijkse inkomen is gereduceerd tot %s per dag.", + L"De vijand heeft sector %s onbetwist overgenomen.", + L"Tenminste een van je huurlingen kan niet meedoen met deze opdracht.", + L"%s kon niet meedoen met %s omdat het al vol is", + L"%s kon niet meedoen met %s omdat het te ver weg is.", +//21-25 + L"De mijn in %s is buitgemaakt door Deidranna's troepen!", + L"Deidranna's troepen zijn net de SAM-stelling in %s binnengevallen", + L"Deidranna's troepen zijn net %s binnengevallen", + L"Deidranna's troepen zijn gezien in %s.", + L"Deidranna's troepen hebben zojuist %s overgenomen.", +//26-30 + L"Tenminste één huurling kon niet tot slapen gebracht worden.", + L"Tenminste één huurling kon niet wakker gemaakt worden.", + L"De Militie verschijnt niet totdat hun training voorbij is.", + L"%s kan geen reisorders gegeven worden op dit moment.", + L"Milities niet binnen de stadsgrenzen kunnen niet verplaatst worden naar een andere sector.", +//31-35 + L"Je kunt geen militie in %s hebben.", + L"Een voertuig kan niet leeg rijden!", + L"%s is te gewond om te reizen!", + L"Je moet het museum eerst verlaten!", + L"%s is dood!", +//36-40 + L"%s kan niet wisselen naar %s omdat het onderweg is", + L"%s kan het voertuig op die manier niet in", + L"%s kan zich niet aansluiten bij %s", + L"Totdat je nieuwe huurlingen in dienst neemt, kan de tijd niet versneld worden!", + L"Dit voertuig kan alleen over wegen rijden!", +//41-45 + L"Je kunt geen reizende huurlingen opnieuw toewijzen", + L"Voertuig zit zonder brandstof!", + L"%s is te moe om te reizen.", + L"Niemand aan boord is in staat om het voertuig te besturen.", + L"Eén of meer teamleden kunnen zich op dit moment niet verplaatsen.", +//46-50 + L"Eén of meer leden van de ANDERE huurlingen kunnen zich op dit moment niet verplaatsen.", + L"Voertuig is te beschadigd!", + L"Let op dat maar twee huurlingen milities in een sector mogen trainen.", + L"De robot kan zich zonder bediening niet verplaatsen. Plaats ze in hetzelfde team.", + L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate +// 51-55 + L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Klik nogmaals op de bestemming om de route te bevestigen, of klik op een andere sector om meer routepunten te plaatsen.", + L"Route bevestigd.", + L"Bestemming onveranderd.", + L"Reis afgebroken.", + L"Reis verkort.", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Klik op de sector waar de huurlingen in plaats daarvan moeten arriveren.", + L"OK. Arriverende huurlingen worden afgezet in %s", + L"Huurlingen kunnen hier niet ingevlogen worden, het luchtruim is onveilig!", + L"Afgebroken. Aankomst-sector onveranderd", + L"Luchtruim boven %s is niet langer veilig! Aankomst-sector is verplaatst naar %s.", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Naar Inventaris (|E|n|t|e|r)", + L"Gooi Item Weg", + L"Verlaat Inventaris (|E|n|t|e|r)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"Laat %s zijn uitrusting achterlaten waar hij nu is (%s) of in (%s) bij het nemen van de vlucht?", + L"%s gaat binnenkort weg en laat zijn uitrusting achter in %s.", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"Laat %s haar uitrusting achterlaten waar ze nu is (%s) of in (%s) bij het nemen van de vlucht?", + L"%s gaat binnenkort weg en laat haar uitrusting achter in %s.", +}; + + +STR16 pMercContractOverStrings[] = +{ + L"'s contract is geëindigd, hij is dus naar huis.", // merc's contract is over and has departed + L"'s contract is geëindigd, ze is dus naar huis.", // merc's contract is over and has departed + L"'s contract is opgezegd, hij is dus weg.", // merc's contract has been terminated + L"'s contract is opgezegd, ze is dus weg.", // merc's contract has been terminated + L"M.E.R.C. krijgt nog teveel geld van je, %s is dus weggegaan.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages + +STR16 pImpPopUpStrings[] = +{ + L"Ongeldige Autorisatiecode", + L"Je wil het gehele persoonlijkheidsonderzoek te herstarten. Zeker weten?", + L"Vul alsjeblieft de volledige naam en geslacht in", + L"Voortijdig onderzoek van je financiële status wijst uit dat je een persoonlijksheidsonderzoek niet kunt betalen.", + L"Geen geldige optie op dit moment.", + L"Om een nauwkeurig profiel te maken, moet je ruimte hebben voor tenminste één teamlid.", + L"Profiel is al gemaakt.", + L"Cannot load I.M.P. character from disk.", + L"You have already reached the maximum number of I.M.P. characters.", + L"You have already three I.M.P characters with the same gender on your team.", + L"You cannot afford the I.M.P character.", // 10 + L"The new I.M.P character has joined your team.", + L"You have already selected the maximum number of traits.", // TODO.Translate + L"No voicesets found.", // TODO.Translate +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"Info", // about the IMP site ("About Us") + L"BEGIN", // begin profiling ("BEGIN") + L"Persoonlijkheid", // personality section ("Personality") + L"Eigenschappen", // personal stats/attributes section ("Attributes") + L"Appearance", // changed from portrait + L"Stem %d", // the voice selection ("Voice %d") + L"OK", // done profiling ("Done") + L"Opnieuw", // start over profiling ("Start Over") + L"Ja, ik kies het geselecteerde antwoord.", // ("Yes, I choose the highlighted answer.") + L"Ja", + L"Nee", + L"OK", // finished answering questions + L"Vor.", // previous question..abbreviated form + L"Vol.", // next question + L"JA ZEKER.", // yes, I am certain ("YES, I AM.") + L"NEE, IK WIL OPNIEUW BEGINNEN.", // no, I want to start over the profiling process ("NO, I WANT TO START OVER.") + L"JA, ZEKER.", // ("YES, I DO.") + L"NEE", + L"Terug", // back one page + L"Stop", // cancel selection + L"Ja, zeker weten.", // ("Yes, I am certain.") + L"Nee, laat me nog eens kijken.", // ("No, let me have another look.") + L"Registratie", // the IMP site registry..when name and gender is selected + L"Analyseren", // analyzing your profile results + L"OK", + L"Character", // Change from "Voice" + L"None", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, proceed to character analysis.", +}; + +STR16 pFilesTitle[] = +{ + L"Bestanden Bekijken", // ("File Viewer") +}; + +STR16 pFilesSenderList[] = +{ +#ifdef JA2UB + L"Int. Verslag", // the recon report sent to the player. Recon is an abbreviation for reconissance +#else + L"Int. Verslag", // the recon report sent to the player. Recon is an abbreviation for reconissance +#endif + L"Intercept.#1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"Intercept.#2", // second intercept file + L"Intercept.#3", // third intercept file + L"Intercept.#4", // fourth intercept file ("Intercept #4") + L"Intercept.#5", // fifth intercept file + L"Intercept.#6", // sixth intercept file +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"Geschiedenis", +}; + +STR16 pHistoryHeaders[] = +{ + L"Dag", // the day the history event occurred + L"Pag.", // the current page in the history report we are in + L"Dag", // the days the history report occurs over + L"Locatie", // location (in sector) the event occurred + L"Geb.", // the event label +}; + +/* +// Externalized to "TableData\History.xml" +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"%s ingehuurd via A.I.M.", // merc was hired from the aim site + L"%s ingehuurd via M.E.R.C.", // merc was hired from the merc site + L"%s gedood.", // merc was killed + L"Facturen betaald bij M.E.R.C.", // paid outstanding bills at MERC + L"Opdracht van Enrico Chivaldori geaccepteerd.", // ("Accepted Assignment From Enrico Chivaldori") + //6-10 + L"IMP Profiel Klaar", // ("IMP Profile Generated") + L"Verzekeringspolis gekocht voor %s.", // insurance contract purchased + L"Verzekeringspolis afgebroken van %s.", // insurance contract canceled + L"Uitbetaling Verzekeringspolis %s.", // insurance claim payout for merc + L"%s's contract verlengd met 1 dag.", // Extented "mercs name"'s for a day + //11-15 + L"%s's contract verlengd met 1 week.", // Extented "mercs name"'s for a week + L"%s's contract verlengd met 2 weken.", // Extented "mercs name"'s 2 weeks + L"%s is ontslagen.", // "merc's name" was dismissed. + L"%s gestopt.", // "merc's name" quit. + L"zoektocht gestart.", // a particular quest started + //16-20 + L"zoektocht afgesloten.", // ("quest completed.") + L"Gepraat met hoofdmijnwerker van %s", // talked to head miner of town + L"%s bevrijd", // ("Liberated %s") + L"Vals gespeeld", // ("Cheat Used") + L"Voedsel zou morgen in Omerta moeten zijn", // ("Food should be in Omerta by tomorrow") + //21-25 + L"%s weggegaan, wordt Daryl Hick's vrouw", // ("%s left team to become Daryl Hick's wife") + L"%s's contract afgelopen.", // ("%s's contract expired.") + L"%s aangenomen.", // ("%s was recruited.") + L"Enrico klaagde over de voortgang", // ("Enrico complained about lack of progress") + L"Strijd gewonnen", // ("Battle won") + //26-30 + L"%s mijn raakt uitgeput", // ("%s mine started running out of ore") + L"%s mijn is uitgeput", // ("%s mine ran out of ore") + L"%s mijn is gesloten", // ("%s mine was shut down") + L"%s mijn heropend", // ("%s mine was reopened") + L"Info verkregen over gevangenis Tixa.", // ("Found out about a prison called Tixa.") + //31-35 + L"Van geheime wapenfabriek gehoord, Orta genaamd.", // ("Heard about a secret weapons plant called Orta.") + L"Onderzoeker in Orta geeft wat raketwerpers.", // ("Scientist in Orta donated a slew of rocket rifles.") + L"Koningin Deidranna kickt op lijken.", // ("Queen Deidranna has a use for dead bodies.") + L"Frank vertelde over knokwedstrijden in San Mona.", // ("Frank talked about fighting matches in San Mona.") + L"Een patiënt dacht dat ie iets in de mijnen zag.", // ("A patient thinks he saw something in the mines.") + //36-40 + L"Pers. ontmoet; Devin - verkoopt explosieven.", // ("Met someone named Devin - he sells explosives.") + L"Beroemde ex-AIM huurling Mike ontmoet!", // ("Ran into the famous ex-AIM merc Mike!") + L"Tony ontmoet - handelt in wapens.", // ("Met Tony - he deals in arms.") + L"Raketwerper gekregen van Serg. Krott.", // ("Got a rocket rifle from Sergeant Krott.") + L"Kyle akte gegeven van Angel's leerwinkel.", // ("Gave Kyle the deed to Angel's leather shop.") + //41-45 + L"Madlab bood aan robot te bouwen.", // ("Madlab offered to build a robot.") + L"Gabby maakt superbrouwsel tegen beesten.", // ("Gabby can make stealth concoction for bugs.") + L"Keith is er mee opgehouden.", // ("Keith is out of business.") + L"Howard geeft Koningin Deidranna cyanide.", // ("Howard provided cyanide to Queen Deidranna.") + L"Keith ontmoet - handelaar in Cambria.", // ("Met Keith - all purpose dealer in Cambria.") + //46-50 + L"Howard ontmoet - medicijnendealer in Balime", // ("Met Howard - deals pharmaceuticals in Balime") + L"Perko ontmoet - heeft reparatiebedrijfje.", // ("Met Perko - runs a small repair business.") + L"Sam van Balime ontmoet - verkoopt ijzerwaren.", // ("Met Sam of Balime - runs a hardware shop.") + L"Franz verkoopt elektronica en andere dingen.", // ("Franz deals in electronics and other goods.") + L"Arnold runt reparatiezaak in Grumm.", // ("Arnold runs a repair shop in Grumm.") + //51-55 + L"Fredo repareert elektronica in Grumm.", // ("Fredo repairs electronics in Grumm.") + L"Van rijke vent in Balime donatie gekregen.", // ("Received donation from rich guy in Balime.") + L"Schroothandelaar Jake ontmoet.", // ("Met a junkyard dealer named Jake.") + L"Vaag iemand gaf ons elektronische sleutelkaart.", // ("Some bum gave us an electronic keycard.") + L"Walter omgekocht om kelderdeur open te maken.", // ("Bribed Walter to unlock the door to the basement.") + //56-60 + L"Als Dave gas heeft, geeft hij deze weg.", // ("If Dave has gas, he'll provide free fillups.") + L"Geslijmd met Pablo.", // ("Greased Pablo's palms.") + L"Kingpin bewaard geld in San Mona mine.", // ("Kingpin keeps money in San Mona mine.") + L"%s heeft Extreme Fighting gewonnen", // ("%s won Extreme Fighting match") + L"%s heeft Extreme Fighting verloren", // ("%s lost Extreme Fighting match") + //61-65 + L"%s gediskwalificeerd v. Extreme Fighting", // ("%s was disqualified in Extreme Fighting") + L"Veel geld gevonden in een verlaten mijn.", // ("Found a lot of money stashed in the abandoned mine.") + L"Huurmoordenaar van Kingpin ontdekt.", // ("Encountered assassin sent by Kingpin.") + L"Controle over sector verloren", //ENEMY_INVASION_CODE ("Lost control of sector") + L"Sector verdedigd", // ("Defended sector") + //66-70 + L"Strijd verloren", //ENEMY_ENCOUNTER_CODE ("Lost battle") + L"Fatale val", //ENEMY_AMBUSH_CODE ("Fatal ambush") + L"Vijandige val weggevaagd", // ("Wiped out enemy ambush") + L"Aanval niet gelukt", //ENTERING_ENEMY_SECTOR_CODE ("Unsuccessful attack") + L"Aanval gelukt!", // ("Successful attack!") + //71-75 + L"Beesten vielen aan", //CREATURE_ATTACK_CODE ("Creatures attacked") + L"Gedood door bloodcats", //BLOODCAT_AMBUSH_CODE ("Killed by bloodcats") + L"Afgeslacht door bloodcats", // ("Slaughtered bloodcats") + L"%s was gedood", // ("%s was killed") + L"Carmen kop v.e. terrorist gegeven", // ("Gave Carmen a terrorist's head") + //76-80 + L"Slay vertrok", // ("Slay left") + L"%s vermoord", // ("Killed %s") + L"Met Waldo - aircraft mechanic.", + L"Helicopter repairs started. Estimated time: %d hour(s).", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"Nvt", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"E-mail", + L"Web", + L"Financieel", + L"Dossiers", + L"Historie", + L"Bestanden", + L"Afsluiten", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"A.I.M.", + L"Bobby Ray's", + L"I.M.P", + L"M.E.R.C.", + L"Mortuarium", + L"Bloemist", + L"Verzekering", + L"Stop", + L"Encyclopedia", + L"Briefing Room", + L"Campaign History", // TODO.Translate + L"MeLoDY", + L"WHO", + L"Kerberus", + L"Militia Overview", // TODO.Translate + L"R.I.S.", + L"Factories", // TODO.Translate +}; + +STR16 pBookmarkTitle[] = +{ + L"Bladwijzer", + L"Rechter muisklik om dit menu op te roepen.", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"Laden", + L"Herladen", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Neem", // take money from merc + L"Geef", // give money to merc + L"Stop", // cancel transaction + L"Leeg", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Maak over $", // transfer money to merc -- short form + L"Info", // view stats of the merc + L"Inventaris", // view the inventory of the merc + L"Werk", +}; + +STR16 sATMText[ ]= +{ + L"Overmaken geld?", // transfer funds to merc? + L"Ok?", // are we certain? + L"Geef bedrag", // enter the amount you want to transfer to merc + L"Geef type", // select the type of transfer to merc + L"Onvoldoende saldo", // not enough money to transfer to merc + L"Bedrag moet veelvoud zijn van $10", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"Fout", + L"Server heeft geen DNS ingang.", + L"Controleer URL adres en probeer opnieuw.", + L"OK", + L"Periodieke verbinding met host. Houdt rekening met lange wachttijden.", +}; + + +STR16 pPersonnelString[] = +{ + L"Huurlingen:", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"A.I.M.", + L"A.I.M. Leden", + L"A.I.M. Portretten", // a mug shot is another name for a portrait + L"A.I.M. Sorteer", + L"A.I.M.", + L"A.I.M. Veteranen", + L"A.I.M. Regelement", + L"A.I.M. Geschiedenis", + L"A.I.M. Links", + L"M.E.R.C.", + L"M.E.R.C. Rekeningen", + L"M.E.R.C. Registratie", + L"M.E.R.C. Index", + L"Bobby Ray's", + L"Bobby Ray's - Wapens", + L"Bobby Ray's - Munitie", + L"Bobby Ray's - Pantsering", + L"Bobby Ray's - Diversen", //misc is an abbreviation for miscellaneous + L"Bobby Ray's - Gebruikt", + L"Bobby Ray's - Mail Order", + L"I.M.P.", + L"I.M.P.", + L"United Floral Service", + L"United Floral Service - Etalage", + L"United Floral Service - Bestelformulier", + L"United Floral Service - Kaart Etalage", + L"Malleus, Incus & Stapes Verzekeringen", + L"Informatie", + L"Contract", + L"Opmerkingen", + L"McGillicutty's Mortuarium", + L"", + L"URL niet gevonden.", + L"%s Press Council - Conflict Summary", // TODO.Translate + L"%s Press Council - Battle Reports", + L"%s Press Council - Latest News", + L"%s Press Council - About us", + L"Mercs Love or Dislike You - About us", + L"Mercs Love or Dislike You - Analyze a team", + L"Mercs Love or Dislike You - Pairwise comparison", + L"Mercs Love or Dislike You - Personality", + L"WHO - About WHO", + L"WHO - Disease in Arulco", + L"WHO - Helpful Tips", + L"Kerberus - About Us", + L"Kerberus - Hire a Team", + L"Kerberus - Individual Contracts", + L"Militia Overview", + L"Recon Intelligence Services - Information Requests", // TODO.Translate + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Factory Overview", // TODO.Translate + L"Bobby Ray's - Recent Shipments", + L"Encyclopedia", + L"Encyclopedia - Data", + L"Briefing Room", + L"Briefing Room - Data", +}; + +STR16 pShowBookmarkString[] = +{ + L"Sir-Help", + L"Klik opnieuw voor Bookmarks.", +}; + +STR16 pLaptopTitles[] = +{ + L"E-Mail", + L"Bestanden bekijken", + L"Persoonlijk", + L"Boekhouder Plus", + L"Geschiedenis", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"Omgekomen tijdens gevechten", + L"Weggestuurd", + L"Anders", + L"Getrouwd", + L"Contract Afgelopen", + L"Gestopt", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"Huidig Team", + L"Vertrekken", + L"Dag. Kosten:", + L"Hoogste Kosten:", + L"Laagste Kosten:", + L"Omgekomen tijdens gevechten:", + L"Weggestuurd:", + L"Anders:", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Laagste", + L"Gemiddeld", + L"Hoogste", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"GZND", + L"BEW", + L"HAN", + L"KRA", + L"LDR", + L"WIJ", + L"NIV", + L"TREF", + L"MECH", + L"EXPL", + L"MED", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"Contract", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"Doorgaan", + L"Stop", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"Je bent verslagen in deze sector!", + L"De vijand, geen genade kennende, slacht ieder teamlid af!", + L"Je bewusteloze teamleden zijn gevangen genomen!", + L"Je teamleden zijn gevangen genomen door de vijand.", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"Vorige", + L"Volgende", + L"OK", + L"Leeg", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"Vorige", + L"Volgende", +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Autoriseer", + L"Thuis", + L"Rekening#:", + L"Huurl.", + L"Dagen", + L"Tarief", //5 + L"Prijs", + L"Totaal:", + L"Weet je zeker de betaling van %s te autoriseren?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+gear)", // TODO.Translate +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Previous", + L"Next", +}; + + + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"Gezondheid", + L"Beweeglijkheid", + L"Handigheid", + L"Kracht", + L"Leiderschap", + L"Wijsheid", + L"Ervaringsniveau", + L"Trefzekerheid", + L"Technisch", + L"Explosieven", + L"Medisch", + + L"Vorige", + L"Huur", + L"Volgende", + L"Extra Info", + L"Thuis", + L"Ingehuurd", + L"Salaris:", + L"Per Dag", + L"Gear:", // TODO.Translate + L"Totaal:", + L"Overleden", + + L"Je team bestaat al uit huurlingen.", + L"Koop Uitrusting?", + L"Niet beschikbaar", + L"Unsettled Bills", // TODO.Translate + L"Bio", // TODO.Translate + L"Inv", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Open Rekening", + L"Afbreken", + L"Je hebt geen rekening. Wil je er één openen?", +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Speck T. Kline, oprichter en bezitter", + L"Om een rekening te open, klik hier", + L"Klik hier om rekening te bekijken", + L"Klik hier om bestanden in te zien", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Transfer failed. No funds available.", // TODO.Translate +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"McGillicutty's Mortuarium: Helpt families rouwen sinds 1983.", + L"Begrafenisondernemer en voormalig A.I.M. huurling Murray \"Pops\" McGillicutty is een kundig en ervaren begrafenisondernemer.", + L"Pops weet hoe moeilijk de dood kan zijn, in heel zijn leven heeft hij te maken gehad met de dood en sterfgevallen.", + L"McGillicutty's Mortuarium biedt een breed scala aan stervensbegeleiding, van een schouder om uit te huilen tot recontructie van misvormde overblijfselen.", + L"Laat McGillicutty's Mortuarium u helpen en laat uw dierbaren zacht rusten.", + + // Text for the various links available at the bottom of the page + L"STUUR BLOEMEN", + L"DOODSKIST & URN COLLECTIE", + L"CREMATIE SERVICE", + L"SERVICES", + L"ETIQUETTE", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"Helaas is deze pagina nog niet voltooid door een sterfgeval in de familie. Afhankelijk van de laatste wil en uitbetaling van de beschikbare activa wordt de pagina zo snel mogelijk voltooid.", + L"Ons medeleven gaat uit naar jou, tijdens deze probeerperiode. Kom nog eens langs.", +}; + +// Text for the florist Home page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Etalage", + + //Address of United Florist + + L"\"We brengen overal langs\"", + L"1-555-SCENT-ME", + L"333 NoseGay Dr, Seedy City, CA USA 90210", + L"http://www.scent-me.com", + + // detail of the florist page + + L"We zijn snel en efficiënt!", + L"Volgende dag gebracht, wereldwijd, gegarandeerd. Enkele beperkingen zijn van toepassing.", + L"Laagste prijs in de wereld, gegarandeerd!", + L"Toon ons een lagere geadverteerde prijs voor een regeling en ontvang gratis een dozijn rozen.", + L"Flora, Fauna & Bloemen sinds 1981.", + L"Onze onderscheiden ex-bommenwerperpiloten droppen je boeket binnen een tien kilometer radius van de gevraagde locatie. Altijd!", + L"Laat ons al je bloemenfantasieën waarmaken.", + L"Laat Bruce, onze wereldberoemde bloemist, de verste bloemen met de hoogste kwaliteit uit onze eigen kassen uitzoeken.", + L"En onthoudt, als we het niet hebben, kunnen we het kweken - Snel!", +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"Terug", + L"Verstuur", + L"Leeg", + L"Etalage", + + L"Naam vh Boeket:", + L"Prijs:", //5 + L"Ordernummer:", + L"Bezorgingsdatum", + L"volgende dag", + L"komt wanneer het komt", + L"Locatie Bezorging", //10 + L"Extra Service", + L"Geplet Boeket($10)", + L"Zwarte Rozen ($20)", + L"Verlept Boeket($10)", + L"Fruitcake (indien beschikbaar)($10)", //15 + L"Persoonlijk Bericht:", + L"Wegens de grootte kaarten, mogen je berichten niet langer zijn dan 75 karakters.", + L"...of selecteer er één van de onze", + + L"STANDAARDKAARTEN", + L"Factuurinformatie", //20 + + //The text that goes beside the area where the user can enter their name + + L"Naam:", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"Back", //abbreviation for previous + L"Next", //abbreviation for next + + L"Klik op de selectie die je wil bestellen.", + L"Let op: er geldt een extra tarief van $10 voor geplette en verlepte boeketten.", + + //text on the button + + L"Home", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"Klik op je selectie", + L"Terug", +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"Bestelformulier", //Title of the page + L"Hvl", // The number of items ordered + L"Gewicht(%s)", // The weight of the item + L"Itemnaam", // The name of the item + L"Prijs unit", // the item's weight + L"Totaal", //5 // The total price of all of items of the same type + L"Sub-Totaal", // The sub total of all the item totals added + L"Porto (Zie Bezorgloc.)", // S&H is an acronym for Shipping and Handling + L"Eindtotaal", // The grand total of all item totals + the shipping and handling + L"Bezorglocatie", + L"Verzendingssnelheid", //10 // See below + L"Kosten (per %s.)", // The cost to ship the items + L"Nacht-Express", // Gets deliverd the next day + L"2 Werkdagen", // Gets delivered in 2 days + L"Standaard Service", // Gets delivered in 3 days + L"Order Leegmaken",//15 // Clears the order page + L"Accept. Order", // Accept the order + L"Terug", // text on the button that returns to the previous page + L"Home", // Text on the button that returns to the home page + L"* Duidt op Gebruikte Items", // Disclaimer stating that the item is used + L"Je kunt dit niet betalen.", //20 // A popup message that to warn of not enough money + L"", // Gets displayed when there is no valid city selected + L"Weet je zeker dat je de bestelling wil sturen naar %s?", // A popup that asks if the city selected is the correct one + L"Gewicht Pakket**", // Displays the weight of the package + L"** Min. Gew.", // Disclaimer states that there is a minimum weight for the package + L"Zendingen", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"Pistol", + L"M. Pistol", + L"SMG", + L"Rifle", + L"SN Rifle", + L"AS Rifle", + L"MG", + L"Shotgun", + L"Heavy W.", + + // Ammo + L"Pistol", + L"M. Pistol", + L"SMG", + L"Rifle", + L"SN Rifle", + L"AS Rifle", + L"MG", + L"Shotgun", + + // Used + L"Guns", + L"Armor", + L"LBE Gear", + L"Misc", + + // Armour + L"Helmets", + L"Vests", + L"Leggings", + L"Plates", + + // Misc + L"Blades", + L"Th. Knives", + L"Blunt W.", + L"Grenades", + L"Bombs", + L"Med. Kits", + L"Kits", + L"Face Items", + L"LBE Gear", + L"Optics", // Madd: new BR filters // TODO.Translate + L"Grip/LAM", + L"Muzzle", + L"Stock", + L"Mag/Trig.", + L"Other Att.", + L"Misc.", +}; + + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"Bestelling", // Title + // instructions on how to order + L"Klik op de item(s). Voor meer dan één, blijf dan klikken. Rechtsklikken voor minder. Als je alles geselecteerd hebt, dat je wil bestellen, ga dan naar het bestelformulier.", + + //Text on the buttons to go the various links + + L"Vorige Items", // + L"Wapens", //3 + L"Munitie", //4 + L"Pantser", //5 + L"Diversen", //6 //misc is an abbreviation for miscellaneous + L"Gebruikt", //7 + L"Meer Items", + L"BESTELFORMULIER", + L"Home", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"Je team heeft", //11 + L"wapen(s) gebruik makende van deze munitie", //12 + + //The following lines provide information on the items + + L"Gewicht:", // Weight of all the items of the same type + L"Kal:", // the caliber of the gun + L"Mag:", // number of rounds of ammo the Magazine can hold + L"Afs:", // The range of the gun + L"Sch:", // Damage of the weapon + L"ROF:", // Weapon's Rate Of Fire, acronym ROF + L"AP:", // Weapon's Action Points, acronym AP + L"Stun:", // Weapon's Stun Damage + L"Protect:", // Armour's Protection + L"Camo:", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Kost:", // Cost of the item + L"Aanwezig:", // The number of items still in the store's inventory + L"# Besteld:", // The number of items on order + L"Beschadigd", // If the item is damaged + L"Gewicht:", // the Weight of the item + L"SubTotaal:", // The total cost of all items on order + L"* %% Functioneel", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"Verdraaid! Dit on-line bestelformulier accepteert maar " ,//First part + L" items per keer. Als je meer wil bestellen (en dat hopen we), plaats dan afzonderlijke orders en accepteer onze excuses.", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Sorry. We hebben niet meer van die zaken in het magazijn. Probeer het later nog eens.", + + //A popup that tells the user that the store is temporarily sold out + + L"Sorry, alle items van dat type zijn nu uitverkocht.", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"Hier moet je zijn voor de nieuwste en beste wapens en militaire goederen", + L"We kunnen de perfecte oplossing vinden voor elke explosiebehoefte", + L"Gebruikte en opgeknapte items", + + //Text for the various links to the sub pages + + L"Diversen", + L"WAPENS", + L"MUNITIE", //5 + L"PANTSER", + + //Details on the web site + + L"Als wij het niet verkopen, dan kun je het nergens krijgen!", + L"Under construction", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"A.I.M. Leden", // Title + // Title for the way to sort + L"Sort. op:", + + // sort by... + + L"Prijs", + L"Ervaring", + L"Trefzekerheid", + L"Technisch", + L"Explosieven", + L"Medisch", + L"Gezondheid", + L"Beweeglijkheid", + L"Handigheid", + L"Kracht", + L"Leiderschap", + L"Wijsheid", + L"Naam", + + //Text of the links to other AIM pages + + L"Bekijk portretfotoindex van huurlingen", + L"Bekijk het huurlingendossier", + L"Bekijk de A.I.M. Veteranen", + + // text to display how the entries will be sorted + + L"Oplopend", + L"Aflopend", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Previous", + L"AIM HomePage", + L"Index Regels", + L"Next", + L"Oneens", + L"Mee eens", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"Klik Links", + L"voor Verbinding met Huurl.", + L"Klik Rechts", + L"voor Portretfotoindex.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Gezondheid", + L"Beweeglijkheid", + L"Handigheid", + L"Kracht", + L"Leiderschap", + L"Wijsheid", + L"Ervaringsniveau", + L"Trefzekerheid", + L"Technisch", + L"Explosieven", + L"Medisch", //10 + + // the contract expenses' area + + L"Tarief", + L"Contract", + L"een dag", + L"een week", + L"twee weken", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"Previous", + L"Contact", + L"Next", + + L"Extra Info", // Title for the additional info for the merc's bio + L"Actieve Leden", //20 // Title of the page + L"Aanv. Uitrusting:", // Displays the optional gear cost + L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's // TODO.Translate + L"MEDISCHE aanbetaling nodig", // If the merc required a medical deposit, this is displayed + L"Uitrusting 1", // Text on Starting Gear Selection Button 1 // TODO.Translate + L"Uitrusting 2", // Text on Starting Gear Selection Button 2 + L"Uitrusting 3", // Text on Starting Gear Selection Button 3 + L"Uitrusting 4", // Text on Starting Gear Selection Button 4 + L"Uitrusting 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"Contractkosten:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"Een Dag", + L"Een Week", + L"Twee Weken", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"Geen Uitrusting", + L"Koop Uitrusting", + + // Text on the Buttons + + L"HUUR IN", // to actually hire the merc + L"STOP", // go back to the previous menu + L"VOORWAARDEN", // go to menu in which you can hire the merc + L"OPHANGEN", // stops talking with the merc + L"OK", + L"STUUR BERICHT", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Video Conference met", + L"Verbinding maken. . .", + + L"+ med. depo", // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"BEDRAG OVERGEBOEKT", // You hired the merc + L"OVERMAKEN NIET MOGELIJK", // Player doesn't have enough money, message 1 + L"ONVOLDOENDE GELD", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"Op missie", + L"Laat a.u.b. bericht achter", + L"Overleden", + + //If you try to hire more mercs than game can support + + L"Je team bestaat al uit huurlingen.", + + L"Opgenomen bericht", + L"Bericht opgenomen", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"A.I.M. Links", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"A.I.M. Geschiedenis", //Title + + // Text on the buttons at the bottom of the page + + L"Previous", + L"Home", + L"A.I.M. Veteranen", + L"Next", +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Prijs", + L"Ervaring", + L"Trefzekerheid", + L"Technisch", + L"Explosieven", + L"Medisch", + L"Gezondheid", + L"Beweeglijkheid", + L"Handigheid", + L"Kracht", + L"Leiderschap", + L"Wijsheid", + L"Naam", + + // The title of the page, the above text gets added at the end of this text + + L"A.I.M. Leden Oplopend Gesorteerd op %s", + L"A.I.M. Leden Aflopend Gesorteerd op %s", + + // Instructions to the players on what to do + + L"Klik Links", + L"om Huurling te Selecteren", //10 + L"Klik Rechts", + L"voor Sorteeropties", + + // Gets displayed on top of the merc's portrait if they are... + + L"Afwezig", + L"Overleden", //14 + L"Op missie", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"PAG. 1", + L"PAG. 2", + L"PAG. 3", + + L"A.I.M. Veteranen", // Title of the page + + L"OK", // Stops displaying information on selected merc + L"Next page", // TODO.Translate +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"A.I.M. en A.I.M.-logo zijn geregistreerde handelsmerken in de meeste landen.", + L"Dus denk er niet aan om ons te kopiëren.", + L"Copyright 1998-1999 A.I.M., Ltd. All rights reserved.", + + //Text for an advertisement that gets displayed on the AIM page + + L"United Floral Service", + L"\"We droppen overal\"", //10 + L"Doe het goed", + L"... de eerste keer", + L"Wapens en zo, als we het niet hebben, dan heb je het ook niet nodig.", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"Home", + L"Leden", + L"Veteranen", + L"Regels", + L"Geschiedenis", + L"Links", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"HANDELSWAAR OP VOORRAAD", //Header for the merchandise available + L"PAG.", //The current store inventory page being displayed + L"TOTALE KOSTEN", //The total cost of the the items in the Dealer inventory area + L"TOTALE WAARDE", //The total value of items player wishes to sell + L"EVALUEER", //Button text for dealer to evaluate items the player wants to sell + L"TRANSACTIE", //Button text which completes the deal. Makes the transaction. + L"OK", //Text for the button which will leave the shopkeeper interface. + L"REP. KOSTEN", //The amount the dealer will charge to repair the merc's goods + L"1 UUR", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d UREN", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"GEREPAREERD", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"Er is geen ruimte meer.", //Message box that tells the user there is no more room to put there stuff + L"%d MINUTEN", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Drop Item op Grond.", + L"BUDGET", // TODO.Translate +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Neem", // Take money from the player + L"Geef", // Give money to the player + L"Stop", // Cancel the transfer + L"Leeg", // Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"Selecteer Type", // tells the user to select either to give or take from the merc + L"Voer Bedrag In", // Enter the amount to transfer + L"Maak Geld over naar Huurl.", // Giving money to the merc + L"Maak Geld over van Huurl.", // Taking money from the merc + L"Onvoldoende geld", // Not enough money to transfer + L"Saldo", // Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"Wil je %s aftrekken van je hoofdrekening om het verschil op te vangen?", + L"Niet genoeg geld. Je komt %s tekort", + L"Wil je %s aftrekken van je hoofdrekening om de kosten te dekken?", + L"Vraag de dealer om de transactie te starten", + L"Vraag de dealer om de gesel. items te repareren", + L"Einde conversatie", + L"Huidige Saldo", + + L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate + L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"Spel Bewaren", + L"Spel Laden", + L"Stop", + L"Next", + L"Prev", + L"OK", + L"1.13 Features", + L"New in 1.13", + L"Options", + + //Text above the slider bars + L"Effecten", + L"Spraak", + L"Muziek", + + //Confirmation pop when the user selects.. + L"Spel verlaten en terugkeren naar hoofdmenu?", + + L"Je hebt of de Spraakoptie nodig of de ondertiteling.", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Spel Bewaren", + L"Spel Laden", + L"Stop", + L"Bewaren Gesel.", + L"Laden Gesel.", + + L"Spel Bewaren voltooid", + L"FOUT bij bewaren spel!", + L"Spel laden succesvol", + L"FOUT bij laden spel!", + + L"De spelversie van het bewaarde spel verschilt van de huidige versie. Waarschijnlijk is het veilig om door te gaan. Doorgaan?", + L"De bewaarde spelen zijn waarschijnlijk ongeldig. Deze verwijderen?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Save version has changed. Please report if there any problems. Continue?", +#else + L"Attempting to load an older version save. Automatically update and load the save?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Save version and game version have changed. Please report if there are any problems. Continue?", +#else + L"Attempting to load an older version save. Automatically update and load the save?", +#endif + + L"Weet je zeker dat je het spel in slot #%d wil overschrijven?", + L"Wil je het spel laden van slot #", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"Er is te weinig ruimte op de harde schijf. Er is maar %d MB vrij en Jagged heeft tenminste %d MB nodig.", + + L"Bewaren", //When saving a game, a message box with this string appears on the screen + + L"Normale Wapens", + L"Stapels Wapens", + L"Realistische stijl", + L"SF stijl", + + L"Moeilijkheid", + L"Platinum Mode", //Placeholder English + + L"Bobby Ray Quality", + L"Good", + L"Great", + L"Excellent", + L"Awesome", + + L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", + L"New Inventory does not work from the default 'Data' folder.", + + L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity",// TODO.Translate +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Kaartniveau", + L"Je hebt geen militie. Je moet stadsburgers trainen om een stadsmilitie te krijgen.", + L"Dagelijks Inkomen", + L"Huurling heeft levensverzekering", + L"%s is niet moe.", + L"%s is bezig en kan niet slapen", + L"%s is te moe, probeer het later nog eens.", + L"%s is aan het rijden.", + L"Team kan niet reizen met een slapende huurling.", + + // stuff for contracts + L"Je kunt wel het contract betalen, maar je hebt geen geld meer om de levensverzekering van de huurling te betalen.", + L"%s verzekeringspremie kost %s voor %d extra dag(en). Wil je betalen?", + L"Inventaris Sector", + L"Huurling heeft medische kosten.", + + // other items + L"Medici", // people acting a field medics and bandaging wounded mercs + L"Patiënten", // people who are being bandaged by a medic + L"OK", // Continue on with the game after autobandage is complete + L"Stop", // Stop autobandaging of patients by medics now + L"Sorry. Optie niet mogelijk in deze demo.", // informs player this option/button has been disabled in the demo + L"%s heeft geen reparatie-kit.", + L"%s heeft geen medische kit.", + L"Er zijn nu niet genoeg mensen die getraind willen worden.", + L"%s is vol met milities.", + L"Huurling heeft eindig contract.", + L"Contract Huurling is niet verzekerd", + L"Map Overview", // 24 + + // Flugente: disease texts describing what a map view does TODO.Translate + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate + + // Flugente: weather texts describing what a map view does + L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"Team %d is heeft iemand ontdekt in sector %s", + L"Team %s is heeft iemand ontdekt in sector %s", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"Een stadsmilitie trainen kost $", // telling player how much it will cost + L"Uitgave goedkeuren?", // asking player if they wish to pay the amount requested + L"je kunt dit niet betalen.", // telling the player they can't afford to train this town + L"Doorgaan met militie trainen %s (%s %d)?", // continue training this town? + + L"Kosten $", // the cost in dollars to train militia + L"( J/N )", // abbreviated yes/no + L"", // unused + L"Stadsmilities trainen in %d sectors kost $ %d. %s", // cost to train sveral sectors at once + + L"Je kunt de $%d niet betalen om de stadsmilitie hier te trainen.", + L"%s heeft een loyaliteit nodig van %d procent om door te gaan met milities trainen.", + L"Je kunt de militie in %s niet meer trainen.", + L"liberate more town sectors", // TODO.Translate + + L"liberate new town sectors", // TODO.Translate + L"liberate more towns", // TODO.Translate + L"regain your lost progress", // TODO.Translate + L"progress further", // TODO.Translate + + L"recruit more rebels", // TODO.Translate +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"Je kunt maximaal $20.000 in één keer opnemen.", + L"Weet je zeker dat je %s wil storten op je rekening?", +}; + +STR16 gzCopyrightText[] = +{ + L"Copyright (C) 1999 Sir-tech Canada Ltd. All rights reserved.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Spraak", + L"Bevestigingen uit", + L"Ondertitels", + L"Wacht bij tekst-dialogen", + L"Rook Animeren", + L"Bloedsporen Tonen", + L"Cursor Niet Bewegen", + L"Oude Selectiemethode", + L"Toon reisroute", + L"Toon Missers", + L"Bevestiging Real-Time", + L"Slaap/wakker-berichten", + L"Metrieke Stelsel", + L"Licht Huurlingen Op", + L"Auto-Cursor naar Huurling", + L"Auto-Cursor naar Deuren", + L"Items Oplichten", + L"Toon Boomtoppen", + L"Smart Tree Tops", // TODO. Translate + L"Toon Draadmodellen", + L"Toon 3D Cursor", + L"Show Chance to Hit on cursor", + L"GL Burst uses Burst cursor", + L"Allow Enemy Taunts", // Changed from "Enemies Drop all Items" - SANDRO + L"High angle Grenade launching", + L"Allow Real Time Sneaking", // Changed from "Restrict extra Aim Levels" - SANDRO + L"Space selects next Squad", + L"Show Item Shadow", + L"Show Weapon Ranges in Tiles", + L"Tracer effect for single shot", + L"Rain noises", + L"Allow crows", + L"Show Soldier Tooltips", + L"Auto save", + L"Silent Skyrider", + L"Enhanced Description Box", + L"Forced Turn Mode", // add forced turn mode + L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map + L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate + L"Logical Bodytypes", + L"Show Merc Ranks", // shows mercs ranks // TODO.Translate + L"Show Face gear graphics", // TODO.Translate + L"Show Face gear icons", + L"Uit te schakelen Cursor Swap", // Disable Cursor Swap + L"Quiet Training", // Madd: mercs don't say quotes while training // TODO.Translate + L"Quiet Repairing", // Madd: mercs don't say quotes while repairing // 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"Allow Zombies", // TODO.Translate + L"Enable inventory popups", // the_bob : enable popups for picking items from sector inv // TODO.Translate + L"Mark Remaining Hostiles", // TODO.Translate + L"Show LBE Content", // TODO.Translate + L"Invert mouse wheel", // TODO.Translate + L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances // TODO.Translate + L"Show enemy location", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--DEBUG OPTIONS--", // an example options screen options header (pure text) + L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. // TODO.Translate + L"Reset ALL game options", // failsafe show/hide option to reset all options + L"Do you really want to reset?", // a do once and reset self option (button like effect) + L"Debug Options in other builds", // allow debugging in release or mapeditor + L"DEBUG Render Option group", // an example option that will show/hide other options + L"Render Mouse Regions", // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Schakel deze optie IN als je de karakter-dialogen wil horen.", + + //Mute Confirmation + L"Schakelt verbale bevestigingen v.d. karakters in of uit.", + + //Subtitles + L"Stelt in of dialoogteksten op het scherm worden getoond.", + + //Key to advance speech + L"Als ondertitels AANstaan, schakel dit ook in om tijd te hebben de NPC-dialogen te lezen.", + + //Toggle smoke animation + L"Schakel deze optie uit als rookanimaties het spel vertragen.", + + //Blood n Gore + L"Schakel deze optie UIT als je bloed aanstootgevend vindt.", + + //Never move my mouse + L"Schakel deze optie UIT als je wil dat de muis automatisch gepositioneerd wordt bij bevestigingsdialogen.", + + //Old selection method + L"Schakel deze optie IN als je karakters wil selecteren zoals in de vorige JAGGED ALLIANCE (methode is tegengesteld dus).", + + //Show movement path + L"Schakel deze optie IN om bewegingspaden te tonen in real-time (schakel het uit en gebruik dan de |S|h|i|f|t-toets om paden te tonen).", + + //show misses + L"Schakel IN om het spel de plaats van inslag van je kogels te tonen wanneer je \"mist\".", + + //Real Time Confirmation + L"Als INGESCHAKELD, een extra \"veiligheids\"-klik is nodig om in real-time te bewegen.", + + //Sleep/Wake notification + L"INGESCHAKELD zorgt voor berichten of huurlingen op een \"missie\" slapen of werken.", + + //Use the metric system + L"Wanneer INGESCHAKELD wordt het metrieke stelsel gebruikt, anders het Imperiale stelsel.", + + //Highlight Mercs + L"Wanneer INGESCHAKELD, wordt de huurling gemarkeerd (niet zichtbaar voor vijanden).\nSchakel in het spel met (|G)", + + //Smart cursor + L"Wanneer INGESCHAKELD zullen huurlingen dichtbij de cursor automatisch oplichten.", + + //snap cursor to the door + L"Wanneer INGESCHAKELD zal de cursor dichtbij een deur automatisch boven de deur gepositioneerd worden.", + + //glow items + L"Wanneer INGESCHAKELD lichten items altijd op. (|C|t|r|l+|A|l|t+|I)", + + //toggle tree tops + L"Wanneer INGESCHAKELD worden Boom|toppen getoond.", + + //smart tree tops + L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate + + //toggle wireframe + L"Wanneer INGESCHAKELD worden Draadmodellen van niet-zichtbare muren getoond. (|C|t|r|l+|A|l|t+|W)", + + L"Wanneer INGESCHAKELD wordt de cursor in 3D getoond. (|H|o|m|e)", + + // Options for 1.13 + L"When ON, the chance to hit is shown on the cursor.", + L"When ON, GL burst uses burst cursor.", + L"When ON, enemies will occasionally comment certain actions.", // Changed from Enemies Drop All Items - SANDRO + L"When ON, grenade launchers fire grenades at higher angles. (|A|l|t+|Q)", + L"When ON, the turn based mode will not be entered when sneaking unnoticed and seeing an enemy unless pressing |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO + L"When ON, |S|p|a|c|e selects next squad automatically.", + L"When ON, item shadows will be shown.", + L"When ON, weapon ranges will be shown in tiles.", + L"When ON, tracer effect will be shown for single shots.", + L"When ON, you will hear rain noises when it is raining.", + L"When ON, the crows are present in game.", + 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, Skyrider will not talk anymore.", + 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+|T).", // add forced turn mode + 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, mercenary body graphic can change along with equipped gear.", // 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 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"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, zombies will spawn. Beware!", // allow zombies // TODO.Translate + L"When ON, enables popup boxes that appear when you left click on empty merc inventory slots while viewing sector inventory in mapscreen.", // TODO.Translate + L"When ON, approximate locations of the last enemies in the sector are highlighted.", // TODO.Translate + L"When ON, show the contents of an LBE item, otherwise show the regular NAS interface.", // TODO.Translate + L"When ON, inverts mouse wheel directions.", // TODO.Translate + L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate + L"When ON, shows last known enemy location.", //TODO.Translate + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Force all pending Bobby Ray shipments", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", + L"Click me to fix corrupt game settings", // failsafe show/hide option to reset all options + L"Click me to fix corrupt game settings", // a do once and reset self option (button like effect) + L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor + L"Toggle to display debugging render options", // an example option that will show/hide other options + L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + + +STR16 gzGIOScreenText[] = +{ + L"SPEL-INSTELLINGEN", +#ifdef JA2UB + L"Random Manuel texts ", + L"Off", + L"On", +#else + L"Speelstijl", + L"Realistisch", + L"SF", +#endif + L"Platinum", //Placeholder English + L"Wapenopties", + L"Extra wapens", + L"Normaal", + L"Moeilijksheidsgraad", + L"Beginneling", + L"Ervaren", + L"Expert", + L"INSANE", + L"Start", // TODO.Translate + L"Stop", + L"Extra Moeilijk", + L"Save Anytime", + L"Iron Man", + L"Niet mogelijk bij Demo", + L"Bobby Ray Quality", + L"Good", + L"Great", + L"Excellent", + L"Awesome", + L"Inventory / Attachments", // TODO.Translate + L"NOT USED", + L"NOT USED", + L"Load MP Game", + L"INITIAL GAME SETTINGS (Only the server settings take effect)", + // Added by SANDRO + L"Skill Traits", + L"Old", + L"New", + L"Max IMP Characters", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Enemies Drop All Items", + L"Off", + L"On", +#ifdef JA2UB + L"Tex and John", + L"Random", + L"All", +#else + L"Number of Terrorists", + L"Random", + L"All", +#endif + L"Secret Weapon Caches", + L"Random", + L"All", + L"Progress Speed of Item Choices", + L"Very Slow", + L"Slow", + L"Normal", + L"Fast", + L"Very Fast", + + // TODO.Translate + L"Old / Old", + L"New / Old", + L"New / New", + + // TODO.Translate + // Squad Size + L"Max. Squad Size", + L"6", + L"8", + L"10", + //L"Faster Bobby Ray Shipments", + L"Inventory Manipulation Costs AP", + + L"New Chance to Hit System", + L"Improved Interrupt System", + L"Merc Story Backgrounds", // TODO.Translate + L"Food System",// TODO.Translate + L"Bobby Ray Quantity",// TODO.Translate + + // anv: extra iron man modes + L"Soft Iron Man", // TODO.Translate + L"Extreme Iron Man", // TODO.Translate +}; + +STR16 gzMPJScreenText[] = +{ + L"MULTIPLAYER", + L"Join", + L"Host", + L"Cancel", + L"Refresh", + L"Player Name", + L"Server IP", + L"Port", + L"Server Name", + L"# Plrs", + L"Version", + L"Game Type", + L"Ping", + L"You must enter a player name.", + L"You must enter a valid server IP address. For example: 84.114.195.239", + L"You must enter a valid Server Port between 1 and 65535.", +}; + +// TODO.Translate +STR16 gzMPJHelpText[] = +{ + L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", + L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", // TODO.Translate + + L"HOST", + L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", + L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", + L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", + L"Click on 'Host' to host a new Multiplayer Game.", + + L"JOIN", + L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", + L"Enter the external IP and the Port number from the host.", + L"Click on 'Join' to join an already hosted Multiplayer Game.", +}; + +// TODO.Translate +STR16 gzMPHScreenText[] = +{ + L"HOST GAME", + L"Start", + L"Cancel", + L"Server Name", + L"Game Type", + L"Deathmatch", + L"Team-Deathmatch", + L"Co-Operative", + L"Maximum Players", + L"Maximum Mercs", + L"Merc Selection", + L"Merc Hiring", + L"Hired by Player", + L"Starting Cash", + L"Allow Hiring Same Merc", + L"Report Hired Mercs", + L"Bobby Rays", + L"Sector Starting Edge", + L"You must enter a server name", + L"", + L"", + L"Starting Time", + L"", + L"", + L"Weapon Damage", + L"", + L"Timed Turns", + L"", + L"Enable Civilians in CO-OP", + L"", + L"Maximum Enemies in CO-OP", + L"Synchronize Game Directory", + L"MP Sync. Directory", + L"You must enter a file transfer directory.", + L"(Use '/' instead of '\\' for directory delimiters.)", + L"The specified synchronisation directory does not exist.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Yes", + L"No", + // Starting Time + L"Morning", + L"Afternoon", + L"Night", + // Starting Cash + L"Low", + L"Medium", + L"Heigh", + L"Unlimited", + // Time Turns + L"Never", + L"Slow", + L"Medium", + L"Fast", + // Weapon Damage + L"Very low", + L"Low", + L"Normal", + // Merc Hire + L"Random", + L"Normal", + // Sector Edge + L"Random", + L"Selectable", + // Bobby Ray / Hire same merc + L"Disable", + L"Allow", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Austin", //Austin, Texas, USA + L"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"Hong Kong", //Hong Kong, Hong Kong + L"Beirut", //Beirut, Lebanon (Middle East) + L"London", //London, England + L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Metavira", //The island of Metavira was the fictional location used by JA1 + L"Miami", //Miami, Florida, USA (SE corner of USA) + L"Moscow", //Moscow, USSR + L"New York", //New York, New York, USA + L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Paris", //Paris, France + L"Tripoli", //Tripoli, Libya (eastern Mediterranean) + L"Tokyo", //Tokyo, Japan + L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Are you sure? A value of zero means NO ability in this skill.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"( 8 Karakters Max )", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"Analiseren", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"Bedankt, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Stem", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"Gedood tijdens gevecht", + L"Ontslagen", + L"Anders", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Personeelsmanager", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Spel Gepauzeerd", + L"Doorgaan (|P|a|u|s|e)", + L"Pauze Spel (|P|a|u|s|e)", +}; + + +STR16 pMessageStrings[] = +{ + L"Spel verlaten?", + L"OK", + L"JA", + L"NEE", + L"STOPPEN", + L"WEER AANNEMEN", + L"LEUGEN", + L"Geen beschrijving", //Save slots that don't have a description. + L"Spel opgeslagen.", + L"Spel opgeslagen.", + L"SnelBewaren", //The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"Dag", + L"Huurl", + L"Leeg Slot", //An empty save game slot + L"Demo", //Demo of JA2 + L"Debug", //State of development of a project (JA2) that is a debug build + L"Release", //Release build for JA2 + L"rpm", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"min", //Abbreviation for minute. + L"m", //One character abbreviation for meter (metric distance measurement unit). + L"rnds", //Abbreviation for rounds (# of bullets) + L"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"lb", //Abbreviation for pounds (Imperial weight measurement unit) + L"Home", //Home as in homepage on the internet. + L"USD", //Abbreviation to US dollars + L"nvt", //Lowercase acronym for not applicable. + L"Intussen", //Meanwhile + L"%s is gearriveerd in sector %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying + //SirTech + L"Versie", + L"Leeg SnelBewaarSlot", + L"Dit slot is gereserveerd voor SnelBewaren tijdens tactische en kaartoverzichten m.b.v. ALT+S.", + L"Geopend", + L"Gesloten", + L"Schijfruimte raakt op. Er is slects %s MB vrij en Jagged Alliance 2 v1.13 heeft %s MB nodig.", + L"%s ingehuurd van AIM", + L"%s heeft %s gevangen.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s heeft %s genomen.", //'Merc name' has taken the drug + L"%s heeft geen medische kennis", //'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"De integriteit van het spel is aangetast.", + L"FOUT: CD-ROM geopend", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"Er is geen plaats om vanaf hier te schieten.", + + //Can't change stance due to objects in the way... + L"Kan op dit moment geen standpunt wisselen.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Drop", + L"Gooi", + L"Geef", + + L"%s gegeven aan %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"Geen plaats om %s aan %s te geven.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" eraan vastgemaakt )", + + //Cheat modes + L"Vals spel niveau EEN", + L"Vals spel niveau TWEE", + + //Toggling various stealth modes + L"Team op sluipmodus.", + L"Team niet op sluipmodus.", + L"%s op sluipmodus.", + L"%s niet op sluipmodus.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Extra Draadmodellen Aan", + L"Extra Draadmodellen Uit", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Kan niet naar boven vanaf dit niveau...", + L"Er zijn geen lagere niveaus...", + L"Betreden basisniveau %d...", + L"Verlaten basisniveau...", + + L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Volgmodus UIT.", + L"Volgmodus AAN.", + L"3D Cursor UIT.", + L"3D Cursor AAN.", + L"Team %d actief.", + L"Je kunt %s's dagelijkse salaris van %s niet betalen", //first %s is the mercs name, the seconds is a string containing the salary + L"Overslaan", + L"%s kan niet alleen weggaan.", + L"Een spel is bewaard onder de naam SaveGame249.sav. Indien nodig, hernoem het naar SaveGame10 zodat je het kan aanroepen in het Laden-scherm.", + L"%s dronk wat %s", + L"Een pakket is in Drassen gearriveerd.", + L"%s zou moeten arriveren op het aangewezen punt (sector %s) op dag %d, om ongeveer %s.", + L"Geschiedenisverslag bijgewerkt.", + L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", + L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", + L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO + L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO + L"Granade Launchers fire at standard angles", + L"Grenade Launchers fire at higher angles", + // forced turn mode strings + L"Forced Turn Mode", + L"Normal turn mode", + L"Exit combat mode", + L"Forced Turn Mode Active, Entering Combat", + L"Spel succesvol bewaard in de Einde Beurt Auto Bewaar Slot.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. + L"Client", + + // TODO.Translate + L"You cannot use the Old Inventory and the New Attachment System at the same time.", + + // TODO.Translate + L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID + L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save + L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"End-Turn Save #", // 95 // The text for the tactical end turn auto save + L"Saving Auto Save #", // 96 // The message box, when doing auto save + L"Saving", // 97 // The message box, when doing end turn auto save + L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save + L"This Slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) // TODO.Translate + L"Lock mouse cursor within game window boundary.", // 104 + L"Release mouse cursor from game window boundary.", // 105 + L"Move in Formation ON", // TODO.Translate + L"Move in Formation OFF", + L"Artificial Merc Light ON", // TODO.Translate + L"Artificial Merc Light OFF", + L"Squad %s active.", //TODO.Translate + L"%s smoked %s.", + L"Activate cheats?", + L"Deactivate cheats?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"OK", + L"Scroll Omhoog", + L"Selecteer Alles", + L"Scroll Omlaag", + L"Stop", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s is niet dichtbij genoeg om te worden genezen.", + L"Je medici waren niet in staat om iedereen te verbinden.", +}; + +// TODO.Translate +STR16 pMilitiaButtonsHelpText[] = +{ + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", + L"Distribute available militia equally among all sectors", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Ga naar AIM en huur wat huurlingen in ( *Hint* dat kan bij Laptop )", +#ifdef JA2UB + L"Als je klaar bent om naar Tracona te gaan, klik dan op TijdVersneller onder rechts op het scherm.", // to inform the player to hit time compression to get the game underway +#else + L"Als je klaar bent om naar Arulco te gaan, klik dan op TijdVersneller onder rechts op het scherm.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Fout. Bestanden missen of zijn beschadigd. Spel wordt beëindigd.", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"Lees E-mail", + L"Bekijk web-pagina's", + L"Bekijk bestanden en e-mail attachments", + L"Lees verslag van gebeurtenissen", + L"Bekijk team-info", + L"Bekijk financieel overzicht", + L"Sluit laptop", + + //Bottom task bar icons (if they exist): + L"Je hebt nieuwe berichten", + L"Je hebt nieuwe bestanden", + + //Bookmarks: + L"Association of International Mercenaries", + L"Bobby Ray's online weapon mail order", + L"Institute of Mercenary Profiling", + L"More Economic Recruiting Center", + L"McGillicutty's Mortuarium", + L"United Floral Service", + L"Verzekeringsagenten voor A.I.M. contracten", + //New Bookmarks + L"", + L"Encyclopedia", + L"Briefing Room", + L"Campaign History", // TODO.Translate + L"Mercenaries Love or Dislike You", // TODO.Translate + L"World Health Organization", + L"Kerberus - Excellence In Security", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services", // TODO.Translate + L"Controlled factories", // TODO.Translate +}; + + +STR16 gzHelpScreenText[] = +{ + L"Verlaat help-scherm", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"Er is een gevecht gaande. Je kan alleen terugtrekken m.b.v. het tactische scherm.", + L"B|etreedt sector om door te gaan met het huidige gevecht.", + L"Los huidige gevecht |automatisch op.", + L"Gevecht kan niet automatisch opgelost worden als je de aanvaller bent.", + L"Gevecht kan niet automatisch opgelost worden als je in een hinderlaag ligt.", + L"Gevecht kan niet automatisch opgelost worden als je vecht met beesten in de mijnen.", + L"Gevecht kan niet automatisch opgelost worden als er vijandige burgers zijn.", + L"Gevecht kan niet automatisch opgelost worden als er nog bloodcats zijn.", + L"GEVECHT GAANDE", + L"je kan je op dit moment niet terugtrekken.", +}; + +STR16 gzMiscString[] = +{ + L"Je militie vecht door zonder hulp van je huurlingen...", + L"Het voertuig heeft geen brandstof meer nodig.", + L"De brandstoftank is voor %d%% gevuld.", + L"Het leger van Deidranna heeft totale controle verkregen over %s.", + L"Je hebt een tankplaats verloren.", +}; + +STR16 gzIntroScreen[] = +{ + L"Kan intro video niet vinden", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s hoort een %s geluid uit %s.", + L"%s hoort een %s geluid van BEWEGING uit %s.", + L"%s hoort een %s KRAKEND geluid uit %s.", + L"%s hoort een %s SPETTEREND geluid uit %s.", + L"%s hoort een %s INSLAG uit %s.", + L"%s hears a %s GUNFIRE coming from %s.", // anv: without this, all further noise notifications were off by 1! // TODO.Translate + L"%s hoort een %s EXPLOSIE naar %s.", + L"%s hoort een %s SCHREEUW naar %s.", + L"%s hoort een %s INSLAG naar %s.", + L"%s hoort een %s INSLAG naar %s.", + L"%s hoort een %s VERSPLINTEREN uit %s.", + L"%s hoort een %s KLAP uit %s.", + L"", // anv: placeholder for silent alarm // TODO.Translate + L"%s hears someone's %s VOICE coming from %s.", // anv: report enemy taunt to player // TODO.Translate +}; + +// TODO.Translate +STR16 pTauntUnknownVoice[] = +{ + L"Unknown Voice", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Sorteer op Naam (|F|1)", + L"Sorteer op Taak (|F|2)", + L"Sorteer op Slaapstatus (|F|3)", + L"Sorteer op locatie (|F|4)", + L"Sorteer op Bestemming (|F|5)", + L"Sorteer op Vertrektijd (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"Fout 404", + L"Site niet gevonden.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"Recentelijke ladingen", + L"Order #", + L"Aantal Items", + L"Besteld op", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"Spel Programmeur", // Chris Camfield "Game Internals Programmer" + L"Co-ontwerper/Schrijver", // Shaun Lyng "Co-designer/Writer" + L"Strategische Systemen & Programmeur", //Kris Marnes "Strategic Systems & Editor Programmer" + L"Producer/Co-ontwerper", // Ian Currie "Producer/Co-designer" + L"Co-ontwerper/Kaartontwerp", // Linda Currie "Co-designer/Map Designer" + L"Artiest", // Eric \"WTF\" Cheng "Artist" + L"Beta Coördinator, Ondersteuning", // Lynn Holowka + L"Artiest Extraordinaire", // Norman \"NRG\" Olsen + L"Geluidsgoeroe", // George Brooks + L"Schermontwerp/Artiest", // Andrew Stacey + L"Hoofd-Artiest/Animator", // Scot Loving + L"Hoofd-Programmeur", // Andrew \"Big Cheese Doddle\" Emmons + L"Programmeur", // Dave French + L"Strategische Systemen & Spelbalans Programmeur", // Alex Meduna + L"Portret-Artiest", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(leert nog steeds interpunctie)", // Shaun Lyng + L"(\"Het is klaar. Ben er mee bezig\")", //Kris \"The Cow Rape Man\" Marnes + L"(wordt veel te oud voor dit)", // Ian Currie + L"(en werkt aan Wizardry 8)", // Linda Currie + L"(moets onder bedreiging ook QA doen)", // Eric \"WTF\" Cheng + L"(Verliet ons voor CFSA - dus...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(Dead Head en jazz liefhebber)", // Andrew Stacey + L"(in het echt heet hij Robert)", // Scot Loving + L"(de enige verantwoordelijke persoon)", // Andrew \"Big Cheese Doddle\" Emmons + L"(kan nu weer motorcrossen)", // Dave French + L"(gestolen van Wizardry 8)", // Alex Meduna + L"(deed items en schermen-laden ook!)", // Joey \"Joeker\" Whelan", +}; + +STR16 sRepairsDoneString[] = +{ + L"%s is klaar met reparatie van eigen items.", + L"%s is klaar met reparatie van ieders wapens en bepantering.", + L"%s is klaar met reparatie van ieders uitrusting.", + L"%s finished repairing everyone's large carried items.", + L"%s finished repairing everyone's medium carried items.", + L"%s finished repairing everyone's small carried items.", + L"%s finished repairing everyone's LBE gear.", + L"%s finished cleaning everyone's guns.", // TODO.Translate +}; + +STR16 zGioDifConfirmText[]= +{ + L"Je hebt de NOVICE-modus geselecteerd. Deze instelling is geschikt voor diegenen die Jagged Alliance voor de eerste keer spelen, voor diegenen die nog niet zo bekend zijn met strategy games, of voor diegenen die kortere gevechten in de game willen hebben.", //Je keuze beïnvloedt dingen in het hele verloop van de game, dus weet wat je doet. Weet je zeker dat je in de Novice-modus wilt spelen?", + L"Je hebt de EXPERIENCED-modus geselecteerd. Deze instelling is geschikt voor diegenen die al bekend zijn met Jagged Alliance of dergelijke games. Je keuze beïnvloedt dingen in het hele verloop van de game, dus weet wat je doet. Weet je zeker dat je in de Experienced-modus wilt spelen ?", + L"Je hebt de EXPERT-modus geselecteerd. We hebben je gewaarschuwd. Geef ons niet de schuld als je in een kist terugkomt. Je keuze beïnvloedt dingen in het hele verloop van de game, dus weet wat je doet. Weet je zeker dat je in de Expert-modus wilt spelen?", + L"You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"%S laadscherm-data niet gevonden...", + + //1-5 + L"De robot kan de sector niet verlaten als niemand de besturing gebruikt.", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"Je kan de tijd niet versnellen, Wacht op het vuurwerk!", + + //'Name' refuses to move. + L"%s weigert zich te verplaatsen.", + + //%s a merc name + L"%s heeft niet genoeg energie om standpunt te wisselen.", + + //A message that pops up when a vehicle runs out of gas. + L"%s heeft geen brandstof en is gestrand in %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"boven", + L"onder", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"Niemand van je huurlingen heeft medische kennis.", + L"Er zijn geen medische hulpmiddelen om mensen te verbinden.", + L"Er waren niet genoeg medische hulpmiddelen om iedereen te verbinden.", + L"Geen enkele huurling heeft medische hulp nodig.", + L"Verbindt huurlingen automatisch.", + L"Al je huurlingen zijn verbonden.", + + //14 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + L"(dak)", + + L"Gezondheid: %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d vs. %d", + + L"%s is vol!", //(ex "The ice cream truck is full") + + L"%s heeft geen eerste hulp nodig, maar échte medische hulp of iets dergelijks.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s is geraakt in het been en valt om!", + //Name can't speak right now. + L"%s kan nu niet praten.", + + //22-24 plural versions + L"%d groene milities zijn gepromoveerd tot veteranenmilitie.", + L"%d groene milities zijn gepromoveerd tot reguliere militie.", + L"%d reguliere milities zijn gepromoveerd tot veteranenmilitie.", + + //25 + L"Schakelaar", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s wordt gek!", + + //27-28 + //Messages why a player can't time compress. + L"Het is nu onveilig om de tijd te versnellen omdat je huurlingen hebt in sector %s.", + L"Het is nu onveilig om de tijd te versnellen als er huurlingen zijn in de mijnen met beesten.", + + //29-31 singular versions + L"1 groene militie is gepromoveerd tot veteranenmilitie.", + L"1 groene militie is gepromoveerd tot reguliere militie.", + L"1 reguliere militie is gepromoveerd tot veteranenmilitie.", + + //32-34 + L"%s zegt helemaal niets.", + L"Naar oppervlakte reizen?", + L"(Team %d)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s heeft %s's %s gerepareerd", + + //36 + L"BLOODCAT", + + //37-38 "Name trips and falls" + L"%s ups en downs", + L"Dit item kan vanaf hier niet opgepakt worden.", + + //39 + L"Geen enkele huurling van je is in staat om te vechten. De militie zal zelf tegen de beesten vechten.", + + //40-43 + //%s is the name of merc. + L"%s heeft geen medische kits meer!", + L"%s heeft geen medische kennis om iemand te verzorgen!", + L"%s heeft geen gereedschapkits meer!", + L"%s heeft geen technische kennis om iets te repareren!", + + //44-45 + L"Reparatietijd", + L"%s kan deze persoon niet zien.", + + //46-48 + L"%s's pistoolloopverlenger valt eraf!", + L"No more than %d militia trainers are permitted in this sector.", // TODO.Translate + L"Zeker weten?", + + //49-50 + L"Tijdversneller", + L"De tank van het voertuig is nu vol.", + + //51-52 Fast help text in mapscreen. + L"Doorgaan met Tijdversnelling (|S|p|a|c|e)", + L"Stop Tijdversnelling (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s heeft de %s gedeblokkeerd", + L"%s heeft %s's %s gedeblokkeerd", + + //55 + L"Kan tijd niet versneller tijdens bekijken van sector inventaris.", + + L"Kan de Jagged Alliance 2 v1.13 SPEL CD niet vinden. Programma wordt afgesloten.", + + L"Items succesvol gecombineerd.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Huidig/Max Voortgang: %d%%/%d%%", + + L"John en Mary escorteren?", + + //60 + L"Schakelaar geactiveerd.", + + L"%s's armour attachment has been smashed!", + L"%s fires %d more rounds than intended!", + L"%s fires one more round than intended!", + + L"You need to close the item description box first!", // TODO.Translate + + L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 // TODO.Translate +}; + +STR16 gzCWStrings[] = +{ + L"Call reinforcements to %s from adjacent sectors?", // TODO.Translate +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Location: %d\n", + L"%s|Brightness: %d / %d\n", + L"%s|Range to |Target: %d\n", + L"%s|I|D: %d\n", + L"%s|Orders: %d\n", + L"%s|Attitude: %d\n", + L"%s|Current |A|Ps: %d\n", + L"%s|Current |Health: %d\n", + L"%s|Current |Breath: %d\n", // TODO.Translate + L"%s|Current |Morale: %d\n", + L"%s|Current |S|hock: %d\n",// TODO.Translate + L"%s|Current |S|uppression Points: %d\n",// TODO.Translate + // Full info + L"%s|Helmet: %s\n", + L"%s|Vest: %s\n", + L"%s|Leggings: %s\n", + // Limited, Basic + L"|Armor: ", + L"Helmet", + L"Vest", + L"Leggings", + L"worn", + L"no Armor", + L"%s|N|V|G: %s\n", + L"no NVG", + L"%s|Gas |Mask: %s\n", + L"no Gas Mask", + L"%s|Head |Position |1: %s\n", + L"%s|Head |Position |2: %s\n", + L"\n(in Backpack) ", + L"%s|Weapon: %s ", + L"no Weapon", + L"Handgun", + L"SMG", + L"Rifle", + L"MG", + L"Shotgun", + L"Knife", + L"Heavy Weapon", + L"no Helmet", + L"no Vest", + L"no Leggings", + L"|Armor: %s\n", + // Added - SANDRO + L"%s|Skill 1: %s\n", + L"%s|Skill 2: %s\n", + L"%s|Skill 3: %s\n", + // Additional suppression effects - sevenfm // TODO.Translate + L"%s|A|Ps lost due to |S|uppression: %d\n", + L"%s|Suppression |Tolerance: %d\n", + L"%s|Effective |S|hock |Level: %d\n", + L"%s|A|I |Morale: %d\n", +}; + +STR16 New113Message[] = +{ + L"Storm started.", + L"Storm ended.", + L"Rain started.", + L"Rain ended.", + L"Watch out for snipers...", + L"Suppression fire!", + L"BRST", + L"AUTO", + L"GL", + L"GL BRST", + L"GL AUTO", + L"UB", + L"UBRST", + L"UAUTO", + L"BAYONET", + L"Sniper!", + L"Unable to split money due to having an item on your cursor.", + L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.", + L"Geschrapt punt", + L"Schrapte alle punten van dit type", + L"Verkocht punt", + L"Verkocht alle punten van dit type", + L"You should check your goggles", + // Real Time Mode messages + L"In combat already", + L"No enemies in sight", + L"Real-time sneaking OFF", + L"Real-time sneaking ON", + L"Enemy spotted!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s was successful on stealing!", + L"%s had not enough action points to steal all selected items.", + L"Do you want to make surgery on %s before bandaging? (You can heal about %i Health.)", + L"Do you want to make surgery on %s? (You can heal about %i Health.)", + L"Do you wish to make surgeries first? (%i patient(s))", + L"Do you wish to make the surgery on this patient first?", + L"Apply first aid automatically with surgeries or without them?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Surgery on %s finished.", + L"%s is hit in the chest and loses a point of maximum health!", + L"%s is hit in the chest and loses %d points of maximum health!", + L"%s is blinded by the blast!", + L"%s has regained one point of lost %s", + L"%s has regained %d points of lost %s", + L"Your scouting skills prevented you to be ambushed by the enemy!", + L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", + L"%s is hit to groin and falls down in pain!", + ////////////////////////////////////////////////////////////////////////////////////// + L"Warning: enemy corpse found!!!", + L"%s [%d rnds]\n%s %1.1f %s", + L"Insufficient AP Points! Cost %d, you have %d.", // TODO.Translate + L"Hint: %s", // TODO.Translate + L"Player strength: %d - Enemy strength: %6.0f", // TODO.Translate Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"Cannot use skill!", // TODO.Translate + L"Cannot build while enemies are in this sector!", + L"Cannot spot that location!", + L"Incorrect GridNo for firing artillery!", + L"Radio frequencies are jammed. No communication possible!", + L"Radio action failed!", + L"Not enough mortar shells in sector to start a barrage!", + L"No signal shell item found in Items.xml!", + L"No High-Explosive shell item found in Items.xml!", + L"No mortars found, cannot commence barrage!", + L"Already jamming signal, no need to do so again!", + L"Already listening for nearby sounds, no need to do so again!", + L"Already trying to spot, no need to do so again!", + L"Already scanning for jam signals, no need to do so again!", + L"%s could not apply %s to %s.", + L"%s orders reinforcements from %s.", + L"%s radio set is out of energy.", + L"a working radio set", + L"a binocular", + L"patience", + L"%s's shield has been destroyed!", // TODO.Translate + L" DELAY", // TODO.Translate + L"Yes*", + L"Yes", + L"No", + L"%s applied %s to %s.", // TODO.Translate +}; + +// TODO.Translate +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s cowers in fear!", + L"%s is pinned down!", + L"%s fires more rounds than intended!", + L"You cannot train militia in this sector.", + L"Militia picks up %s.", + L"Cannot train militia with enemies present!", + // 6 - 10 + L"%s lacks sufficient Leadership score to train militia.", + L"No more than %d Mobile Militia trainers are permitted in this sector.", + L"No room in %s or around it for new Mobile Militia!", + L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", + L"Can't staff a facility while enemies are present!", + // 11 - 15 + L"%s lacks sufficient Wisdom to staff this facility.", + L"The %s is already fully-staffed.", + L"It will cost $%d per hour to staff this facility. Do you wish to continue?", + L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", + L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", + // 16 - 20 + L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", + L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", + L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", + L"N/A in this sector", + L"Daily Expenses", + // 21 - 25 + L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", + L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 + L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 + L"To merge two items during combat, you must pick them both up first.", // HAM 5 +}; + +// TODO.Translate +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"No available adjustments", + L"%s was split into several parts.", + L"%s was split into several parts. Check %s's inventory for the resulting items.", + L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", + L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", + L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", + // 6 - 10 + L"Split Crate into Inventory", + L"Split into %d-rd Mags", + L"%s was split into %d Magazines containing %d rounds each.", + L"%s was split into %s's inventory.", + L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", + L"Instant mode", // TODO.Translate + L"Delayed mode", + L"Instant mode (%d AP)", + L"Delayed mode (%d AP)", +}; + +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Hereby be informed that due to Gastons's past performance his fees for services rendered have undergone an increase. Personally, I'm not surprised. ± ± Speck T. Kline ± ", + // Stogie: Text from Line 43 in Email.edt + L"Please be advised that, as of this moment, Stogies's fees for services rendered have increased to coincide with the increase in his abilities. ± ± Speck T. Kline ± ", + // Tex: Text from Line 45 in Email.edt + L"Please be advised that Tex's experience entitles him to more equitable compensation. He's fees have therefore been increased to more accurately reflect his worth. ± ± Speck T. Kline ± ", + // Biggens: Text from Line 49 in Email.edt + L"Please take note. Due to the improved performance of Biggens his fees for services rendered have undergone an increase. ± ± Speck T. Kline ± ", +}; + +// TODO.Translate +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk: Text from Line 58 + L"FW from AIM Server: Message from Victor Kolesnikov", + L"Hello. Monk here. Message received. I'm back if you want to see me. ± ± Waiting for your call. ±", + + // Brain: Text from Line 60 + L"FW from AIM Server: Message from Janno Allik", + L"Am now ready to consider tasks. There is a time and place for everything. ± ± Janno Allik ±", + + // Scream: Text from Line 62 + L"FW from AIM Server: Message from Lennart Vilde", + L"Lennart Vilde now available! ±", + + // Henning: Text from Line 64 + L"FW from AIM Server: Message from Henning von Branitz", + L"Have received your message, thanks. To discuss employment, contact me at the AIM Website. ± ± Till then! ± ± Henning von Branitz ±", + + // Luc: Text from Line 66 + L"FW from AIM Server: Message from Luc Fabre", + L"Mesage received, merci! Am happy to consider your proposals. You know where to find me. ± ± Looking forward to hearing from you. ±", + + // Laura: Text from Line 68 + L"FW from AIM Server: Message from Dr. Laura Colin", + L"Greetings! Good of you to leave a message It sounds interesting. ± ± Visit AIM again I would be happy to hear more. ± ± Best regards! ± ± Dr. Laura Colin ±", + + // Grace: Text from Line 70 + L"FW from AIM Server: Message from Graziella Girelli", + L"You wanted to contact me, but were not successful.± ± A family gathering. I am sure you understand? I've now had enough of family and would be very happy if you would contact me again over the AIM Site. ± ± Ciao! ±", + + // Rudolf: Text from Line 72 + L"FW from AIM Server: Message from Rudolf Steiger", + L"Do you know how many calls I get every day? Every tosser thinks he can call me. ± ± But I'm back, if you have something of interest for me. ±", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"FW from AIM Server: Message about merc availability", + L"I got your message. Waiting for your call. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Sniper: De ogen van een havik, u kunnen de vleugels van een vlieg bij honderd werven ontspruiten! ± ", + // Camouflage + L"Camouflage: Naast u ringt synthetische zelfs blik! ± ", + // SANDRO - new strings for new traits added + // Ranger + L"Ranger: You are the one from Texas deserts, aren't you! ± ", + // Gunslinger + L"Gunslinger: With a handgun or two, you can be as lethal as the Billy Kid! ± ", + // Squadleader + L"Squadleader: Natural leader and boss, you are the big shot no kidding! ± ", + // Technician + L"Technician: Fixing stuff, removing traps, planting bombs, that's your bussiness! ± ", + // Doctor + L"Doctor: You can make a quick surgery with pocket-knife and chewing gum anywhere! ± ", + // Athletics + L"Athletics: Your speed and vitality is on top of possibilities! ± ", + // Bodybuilding + L"Bodybuilding: That big muscular figure which cannot be overlooked is you actually! ± ", + // Demolitions + L"Demolitions: You can blow up a whole city just by common home stuff! ± ", + // Scouting + L"Scouting: Nothing can escape your notice! ± ", + // Covert ops + L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate + // Radio Operator + L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate + // Survival + L"Survival: Nature is a second home to you. ± ", // TODO.Translate +}; + +STR16 NewInvMessage[] = +{ + L"Kan op dit moment niet bestelwagenrugzak", + L"Geen plaats om rugzak te zetten", + L"Gevonden niet rugzak", + L"De ritssluiting werkt slechts in gevecht", + L"Kan niet me bewegen terwijl actieve rugzakritssluiting", + L"Bent zeker u u wilt alle sectorpunten verkopen?", + L"Bent zeker u u wilt alle sectorpunten schr?", + L"Kan beklimmen niet terwijl het dragen van een rugzak", + L"All backpacks dropped", // TODO.Translate + L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Initiating RakNet server...", + L"Server started, waiting for connections...", + L"You must now connect with your client to the server by pressing '2'.", + L"Server is already running.", + L"Server failed to start. Terminating.", + // 5 + L"%d/%d clients are ready for realtime-mode.", + L"Server disconnected and shutdown.", + L"Server is not running.", + L"Clients are still loading, please wait...", + L"You cannot change dropzone after the server has started.", + // 10 + L"Sent file '%S' - 100/100", + L"Finished sending files to '%S'.", + L"Started sending files to '%S'.", + L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", // TODO.Translate +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Initiating RakNet client...", + L"Connecting to IP: %S ...", + L"Received game settings:", + L"You are already connected.", + L"You are already connecting...", + // 5 + L"Client #%d - '%S' has hired '%s'.", + L"Client #%d - '%S' has hired another merc.", + L"You are ready - Total ready = %d/%d.", + L"You are no longer ready - Total ready = %d/%d.", + L"Starting battle...", + // 10 + L"Client #%d - '%S' is ready - Total ready = %d/%d.", + L"Client #%d - '%S' is no longer ready - Total ready = %d/%d", + L"You are ready. Awaiting other clients... Press 'OK' if you are not ready anymore.", + L"Let us the battle begin!", + L"A client must be running for starting the game.", + // 15 + L"Game cannot start. No mercs are hired...", + L"Awaiting 'OK' from server to unlock the laptop...", + L"Interrupted", + L"Finish from interrupt", + L"Mouse Grid Coordinates:", + // 20 + L"X: %d, Y: %d", + L"Grid Number: %d", + L"Server only feature", + L"Choose server manual override stage: ('1' - Enable laptop/hiring) ('2' - Launch/load level) ('3' - Unlock UI) ('4' - Finish placement)", + L"Sector=%s, Max Clients=%d, Max Mercs=%d, Game_Mode=%d, Same Merc=%d, Damage Multiplier=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Equip=%d, Dis Morale=%d, Testing=%d", + // 25 + L"", + L"New connection: Client #%d - '%S'.", + L"Team: %d.",//not used any more + L"'%s' (client %d - '%S') was killed by '%s' (client %d - '%S')", + L"Kicked client #%d - '%S'", + // 30 + L"Start a new turn for the selected client. #1: , #2: %S, #3: %S, #4: %S", + L"Starting turn for client #%d", + L"Requesting for realtime...", + L"Switched back to realtime.", + L"Error: Something went wrong switching back.", + // 35 + L"Unlock laptop for hiring? (Are all clients connected?)", + L"The server has unlocked the laptop. Begin hiring!", + L"Interruptor.", + L"You cannot change dropzone if you are only the client and not the server.", + L"You declined the offer to surrender, because you are in a multiplayer game.", + // 40 + L"All your mercs are wiped dead!", + L"Spectator mode enabled.", + L"You have been defeated!", + L"Sorry, climbing is disable in MP", + L"You Hired '%s'", + // 45 + L"You cant change the map once purchasing has commenced", + L"Map changed to '%s'", + L"Client '%s' disconnected, removing from game", + L"You were disconnected from the game, returning to the Main Menu", + L"Connection failed, Retrying in 5 seconds, %i retries left...", + //50 + L"Connection failed, giving up...", + L"You cannot start the game until another player has connected", + L"%s : %s", + L"Send to All", + L"Allies only", + // 55 + L"Cannot join game. This game has already started.", + L"%s (team): %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"Received all files from server.", + L"'%S' finished downloading from server.", + L"'%S' started downloading from server.", + L"Cannot start the game until all clients have finished receiving files", + L"This server requires that you download modified files to play, do you wish to continue?", + // 65 + L"Press 'Ready' to enter tactical screen.", + L"Cannot connect because your version %S is different from the server version %S.", + L"You killed an enemy soldier.", + L"Cannot start the game, because all teams are the same.", + L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", + // 70 // TODO.Translate + L"Could not save received file '%S'", + L"%s's bomb was disarmed by %s", + L"You loose, what a shame", // All over red rover + L"Spectator mode disabled", + L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", + // 75 + L"Team %s is wiped out.", + L"Client failed to start. Terminating.", + L"Client disconnected and shutdown.", + L"Client is not running.", + L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", // TODO.Translate + // 80 + L"AI's turn - %d left", // TODO.Translate +}; + +STR16 gszMPEdgesText[] = +{ + L"N", + L"E", + L"S", + L"W", + L"C", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"Foxtrot", + L"Bravo", + L"Delta", + L"Charlie", + L"Nvt", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Game Type: ", + L"Players: ", + L"Mercs each: ", + L"You cannot change starting edge once Laptop is unlocked.", + L"You cannot change teams once the Laptop is unlocked.", + L"Random Mercs: ", + L"Y", + L"Difficulty:", + L"Server Version:", +}; + +STR16 gzMPSScreenText[] = +{ + L"Scoreboard", + L"Continue", + L"Cancel", + L"Player", + L"Kills", + L"Deaths", + L"Queen's Army", + L"Hits", + L"Misses", + L"Accuracy", + L"Damage Dealt", + L"Damage Taken", + L"Please wait for the server to press 'Continue'." +}; + +STR16 gzMPCScreenText[] = +{ + L"Cancel", + L"Connecting to Server", + L"Getting Server Settings", + L"Downloading custom files", + L"Press 'ESC' to cancel or 'Y' to chat", + L"Press 'ESC' to cancel", + L"Ready" +}; + +STR16 gzMPChatToggleText[] = +{ + L"Send to All", + L"Send to Allies only", +}; + +STR16 gzMPChatboxText[] = +{ + L"Multiplayer Chat", + L"'ENTER' to send, 'ESC' to cancel", +}; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", + // For new major/minor traits + L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", + L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes according to your true abilities. You cannot raise any score above", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", + // New strings for new traits + L"On the next page you are going to specify your physical attributes and skills. As 'attributes' are called: health, dexterity, agility, strength and wisdom. Attributes cannot go lower than %d.", + L"The rest are called 'skills' and unlike attributes skills can be set to zero, meaning you have absolutely no proficiency in it.", + L"All scores are set to a minimum at the beginning. Note that certain attributes are set to specific values according to skill traits you have selected. You cannot set those attributes lower than that.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Attitudes", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Sociable", + L"Loner", + L"Optimist", + L"Assertive", + L"Intellectual", + L"Primitive", + L"Aggressive", + L"Phlegmatic", + L"Dauntless", + L"Pacifist", + L"Malicious", + L"Show-off", + L"Coward", // TODO.Translate + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", + L"\n(Caution: you will need a big strength for this.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"Deaf", + L"Shortsighted", + L"Hemophiliac", // TODO.Translate + L"Fear of Heights", + L"Self-Harming", + L"I.M.P. Disabilities", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] =// TODO.Translate +{ + L"We bet you're glad this isn't voicemail.", + L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"You'll be screwed if you ever lose your glasses.", + L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate +{ + L"Are you SURE this is the right job for you?", + L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate +{ + L"Let's just say you are a grounded person.", + L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Might want to make sure your knives are always clean.", + L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// TODO.Translate +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s lacks sufficient Strength to perform this task.", + L"%s lacks sufficient Dexterity to perform this task.", + L"%s lacks sufficient Agility to perform this task.", + L"%s is not Healthy enough to perform this task.", + L"%s lacks sufficient Wisdom to perform this task.", + L"%s lacks sufficient Marksmanship to perform this task.", + // 6 - 10 + L"%s lacks sufficient Medical Skill to perform this task.", + L"%s lacks sufficient Mechanical Skill to perform this task.", + L"%s lacks sufficient Leadership to perform this task.", + L"%s lacks sufficient Explosives Skill to perform this task.", + L"%s lacks sufficient Experience to perform this task.", + // 11 - 15 + L"%s lacks sufficient Morale to perform this task.", + L"%s is too exhausted to perform this task.", + L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.", + L"Too many people are already working at the %s.", + L"Too many people are already performing this task at the %s.", + // 16 - 20 + L"%s can find no items to repair.", + L"%s has lost some %s while working in sector %s!", + L"%s has lost some %s while working at the %s in %s!", + L"%s was injured while working in sector %s, and requires immediate medical attention!", + L"%s was injured while working at the %s in %s, and requires immediate medical attention!", + // 21 - 25 + L"%s was injured while working in sector %s. It doesn't seem too bad though.", + L"%s was injured while working at the %s in %s. It doesn't seem too bad though.", + L"The residents of %s seem upset about %s's presence.", + L"The residents of %s seem upset about %s's work at the %s.", + L"%s's actions in sector %s have caused loyalty loss throughout the region!", + // 26 - 30 + L"%s's actions at the %s in %s have caused loyalty loss throughout the region!", + L"%s is drunk.", // <--- This is a log message string. + L"%s has become severely ill in sector %s, and has been taken off duty.", + L"%s has become severely ill and cannot continue his work at the %s in %s.", + L"%s was injured in sector %s.", // <--- This is a log message string. + // 31 - 35 + L"%s was severely injured in sector %s.", //<--- This is a log message string. + L"There are currently prisoners here who are aware of %s's identity.", // TODO.Translate + L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", // TODO.Translate + + +}; + +// TODO.Translate +STR16 gzFacilityRiskResultStrings[]= +{ + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Health", + L"Marksmanship", + // 5-10 + L"Leadership", + L"Mechanical skill", + L"Medical skill", + L"Explosives skill", +}; + +// TODO.Translate +STR16 gzFacilityAssignmentStrings[]= +{ + L"AMBIENT", + L"Staff", + L"Eat",// TODO.Translate + L"Rest", + L"Repair Items", + L"Repair %s", // Vehicle name inserted here + L"Repair Robot", + // 6-10 + L"Doctor", + L"Patient", + L"Practice Strength", + L"Practice Dexterity", + L"Practice Agility", + L"Practice Health", + // 11-15 + L"Practice Marksmanship", + L"Practice Medical", + L"Practice Mechanical", + L"Practice Leadership", + L"Practice Explosives", + // 16-20 + L"Student Strength", + L"Student Dexterity", + L"Student Agility", + L"Student Health", + L"Student Marksmanship", + // 21-25 + L"Student Medical", + L"Student Mechanical", + L"Student Leadership", + L"Student Explosives", + L"Trainer Strength", + // 26-30 + L"Trainer Dexterity", + L"Trainer Agility", + L"Trainer Health", + L"Trainer Marksmanship", + L"Trainer Medical", + // 30-35 + L"Trainer Mechanical", + L"Trainer Leadership", + L"Trainer Explosives", + L"Interrogate Prisoners", // added by Flugente TODO.Translate + L"Undercover Snitch", // TODO.Translate + // 36-40 + L"Spread Propaganda", + L"Spread Propaganda", // spread propaganda (globally) + L"Gather Rumours", + L"Command Militia", // militia movement orders +}; + +STR16 Additional113Text[]= +{ + L"Jagged Alliance 2 v1.13 windowed modus vereist een kleurdiepte van 16 bits per pixel.", + L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate + L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", + // TODO.Translate + // WANNE: Savegame slots validation against INI file + L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", + L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +STR16 sEnemyTauntsFireGun[]= +{ + L"Suck this!", + L"Touch this!", + L"Come get some!", + L"You're mine!", + L"Die!", + L"You scared, motherfucker?", + L"This will hurt!", + L"Come on you bastard!", + L"Come on! I don't got all day!", + L"Come to daddy!", + L"You'll be six feet under in no time!", + L"Will send ya home in a pinebox, loser!", + L"Hey, wanna play?", + L"You should have stayed home, bitch.", + L"Sucker!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"We have a barbecue here.", + L"I got a present for ya.", + L"Bam!", + L"Smile!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Catch!", + L"Here ya go!", + L"Pop goes the weasel.", + L"This one's for you.", + L"Muhehe.", + L"Catch this, swine!", + L"I like this.", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"I'll get your scalp.", + L"Come to papa.", + L"Show me your guts!", + L"I'll rip you to pieces!", + L"Motherfucker!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"We're in some real shit...", + L"They said join the army. Not for this shit!", + L"I have enough.", + L"Oh my God.", + L"They ain't paying us enough for this.", + L"It's just too much for me.", + L"I'll bring some friends.", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"I heard that!", + L"Who's there?", + L"What was that?", + L"Hey! What the...", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"They are here!", + L"Now the fun can start.", + L"I hoped this will never happen.", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"Ouch!", + L"Ugh!", + L"This.. hurts!", + L"You fuck!", + L"You will regret.. uhh.. this.", + L"What the..!", + L"Now you have.. pissed me off.", + +}; + +// TODO.Translate +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Da'ffff...!", + L"Oh my God!", + L"Holy crap!", + L"Enemy!!!", + L"Alert! Alert!", + L"There is one!", + L"Attack!", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Description", + L"General", + L"Advanced", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Desc", + L"Gen", + L"Adv", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Primary", + L"Secondary", + L"AP Costs", + L"Burst / Autofire", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Prop.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", + L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", + L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", + L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", + L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", + L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", + L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", + L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", + L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Property icon (mouse-over to reveal name).", + L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", + L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", + L"Bonus/penalty given while |p|r|o|n|e.", + L"Bonus/penalty given", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y", + L"|D|a|m|a|g|e", + L"|R|a|n|g|e", + L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", // TODO.Translate + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s", + L"|R|e|l|i|a|b|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", + L"|A|P|s |t|o |R|e|a|d|y", + L"|A|P|s |t|o |A|t|t|a|c|k", + L"|A|P|s |t|o |B|u|r|s|t", + L"|A|P|s |t|o |A|u|t|o|f|i|r|e", + L"|A|P|s |t|o |R|e|l|o|a|d", + L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", + L"", // No longer used! + L"|T|o|t|a|l |R|e|c|o|i|l", // TODO.Translate + L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", + L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", + L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", + L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", // TODO.Translate + L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", + L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", + L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", + L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", + L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", + L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nThe minimum range at which a scope can provide it's aimBonus.", + L"\n \nTo hit modifier granted by laser sights.", + L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", + L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", + L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", + L"", // No longer used! + L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. // TODO.Translate + L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", + L"|C|o|v|e|r|a|g|e", + L"|D|e|g|r|a|d|e |R|a|t|e", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", + L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", + L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|A|r|m|o|r |P|i|e|r|c|i|n|g", + L"|B|u|l|l|e|t |T|u|m|b|l|e", + L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate + L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", // TODO.Translate + L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", + L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", + L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", // TODO.Translate + L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", // TODO.Translate + L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", // TODO.Translate +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|D|a|m|a|g|e", + L"|S|t|u|n |D|a|m|a|g|e", + L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 // TODO.Translate + L"|B|l|a|s|t |R|a|d|i|u|s", + L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", + L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", + L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", + L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", + L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", + L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", + // HEADROCK HAM 5: Fragmentation // TODO.Translate + L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", + L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", + L"|F|r|a|g|m|e|n|t |R|a|n|g|e", + // HEADROCK HAM 5: End Fragmentations + L"|L|o|u|d|n|e|s|s", + L"|V|o|l|a|t|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", + L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", + L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 // TODO.Translate + L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", + L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", + L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", + L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", + L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", + L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", + // HEADROCK HAM 5: Fragmentation // TODO.Translate + L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", + L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", + L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", + L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", + L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|R|e|p|a|i|r |E|a|s|e", + L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", + L"|V|o|l|u|m|e", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", + L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|T|r|a|c|e|r |A|m|m|o", + L"|A|n|t|i|-|T|a|n|k |A|m|m|o", + L"|I|g|n|o|r|e|s |A|r|m|o|r", + L"|A|c|i|d|i|c |A|m|m|o", + L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", + L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", + L"|W|a|t|e|r|p|r|o|o|f", + L"|E|l|e|c|t|r|o|n|i|c", + L"|G|a|s |M|a|s|k", + L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", + L"|C|a|n |P|i|c|k |L|o|c|k|s", + L"|C|a|n |C|u|t |W|i|r|e|s", + L"|C|a|n |S|m|a|s|h |L|o|c|k|s", + L"|M|e|t|a|l |D|e|t|e|c|t|o|r", + L"|R|e|m|o|t|e |T|r|i|g|g|e|r", + L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", + L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", + L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", + L"|T|o|o|l |K|i|t", + L"|T|h|e|r|m|a|l |O|p|t|i|c|s", + L"|X|-|R|a|y |D|e|v|i|c|e", + L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", + L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", + L"|F|i|r|s|t |A|i|d |K|i|t", + L"|M|e|d|i|c|a|l |K|i|t", + L"|L|o|c|k |B|o|m|b", + L"|D|r|i|n|k",// TODO.Translate + L"|M|e|a|l", + L"|A|m|m|o |B|e|l|t", + L"|A|m|m|o |V|e|s|t", + L"|D|e|f|u|s|a|l |K|i|t", // TODO.Translate + L"|C|o|v|e|r|t |I|t|e|m", // TODO.Translate + L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", + L"|M|a|d|e |o|f |M|e|t|a|l", + L"|S|i|n|k|s", + L"|T|w|o|-|H|a|n|d|e|d", + L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", + L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate + L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|S|h|i|e|l|d", // TODO.Translate + L"|C|a|m|e|r|a", // TODO.Translate + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate + L"|B|l|o|o|d |B|a|g", // 44 + L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", + L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", + L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", + L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", + L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", + L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", + L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", + L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", + L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", + L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", + L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", //JMich_SkillsModifiers: needs to be followed by a number", // TODO.Translate + L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", + L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate + L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", + L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", + L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", + L"\n \nThis item contains various tools that can\nbe used to repair other items.\n \nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", //JMich_SkillsModifiers: need to be followed by a number // TODO.Translate + L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", + L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", + L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", + L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", + L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", + L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", + L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", + L"\n \nThis item will still your thirst\nif you drink it.",// TODO.Translate + L"\n \nThis item will still your hunger\nif you eat it.", + L"\n \nWith this ammo belt you can\nfeed someone else's MG.", + L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", + L"\n \nThis item improves your trap disarm chance by ", // TODO.Translate + L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", // TODO.Translate + L"\n \nThis item cannot be damaged.", + L"\n \nThis item is made of metal.\nIt takes less damage than other items.", + L"\n \nThis item sinks when put in water.", + L"\n \nThis item requires both hands to be used.", + L"\n \nThis item will block your iron sights\nso you cannot use them.", + L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate + L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", + L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", + L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate + L"\n \nYou can take photos with this.", // TODO.Translate + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate + L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", + L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", + L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", + L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", + L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", + L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", + L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", + L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", + L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", + L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", + L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", + L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", + L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", + L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", + L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", + L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", + L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", + L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|T|u|n|n|e|l |V|i|s|i|o|n", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", + L"|T|o|-|H|i|t |B|o|n|u|s", + L"|A|i|m |B|o|n|u|s", + L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", // TODO.Translate + L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", + L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate + L"|D|i|r|t |M|o|d|i|f|i|e|r", // TODO.Translate + L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r",// TODO.Translate + L"|F|o|o|d| |P|o|i|n|t|s",// TODO.Translate + L"|D|r|i|n|k |P|o|i|n|t|s",// TODO.Translate + L"|P|o|r|t|i|o|n |S|i|z|e",// TODO.Translate + L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r",// TODO.Translate + 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 + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", + L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", + L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", + L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", + L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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 \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate + L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", + L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", + L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", // TODO.Translate + L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate + L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", // TODO.Translate + L"\n \nAmount of energy in kcal.\n \nHigher is better.", // TODO.Translate + L"\n \nAmount of water in liter.\n \nHigher is better.", // TODO.Translate + 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"", + 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 + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", + L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", + L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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 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 \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 be damaged more easily.", + L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"SINGLE", + L"AP", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// TODO.Translate +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"Finished sorting ammo into crates in sector %c%d.", + L"Finished removing attachments from items in sector %c%d.", + L"Finished ejecting ammo from weapons in sector %c%d.", + L"Finished stacking and merging all items in sector %c%d.", + // Bob: new strings for emptying LBE items + L"Finished emptying LBE items in sector %c%d.", + L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Show all", + L"Guns", + L"Ammo", + L"Explosives", + L"Melee Weapons", + L"Armor", + L"LBE", + L"Kits", + L"Misc. Items", + L"Hide all", +}; + +STR16 gzMercCompare[] = +{ + L"???", + L"Base opinion:", + + L"Dislikes %s %s", + L"Likes %s %s", + + L"Strongly hates %s", + L"Hates %s", // 5 + + L"Deep racism against %s", + L"Racism against %s", + + L"Cares deeply about looks", + L"Cares about looks", + + L"Very sexist", // 10 + L"Sexist", + + L"Dislikes other background", + L"Dislikes other backgrounds", + + L"Past grievances", + L"____", // 15 + L"/", + L"* Opinion is always in [%d; %d]", // TODO.Translate +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = // TODO.Translate +{ + L"Temperature is ", + L"very low", + L"low", + L"medium", + L"high", + L"very high", + L"dangerous", + L"CRITICAL", + L"DRAMATIC", + L"unknown", + L"." +}; + +// TODO.Translate +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"Food is ", + L"fresh", + L"good", + L"ok", + L"stale", + L"shabby", + L"rotting", + L"." +}; + +// TODO.Translate +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Pvt. ", //ExpLevel 1 + L"Pfc. ", //ExpLevel 2 + L"Cpl. ", //ExpLevel 3 + L"Sgt. ", //ExpLevel 4 + L"Lt. ", //ExpLevel 5 + L"Cpt. ", //ExpLevel 6 + L"Maj. ", //ExpLevel 7 + L"Lt.Col. ", //ExpLevel 8 + L"Col. ", //ExpLevel 9 + L"Gen. " //ExpLevel 10 +}; + +STR16 gzNewLaptopMessages[]= +{ + L"Ask about our special offer!", + L"Temporarily Unavailable", + L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Range to target: %d tiles, Brightness: %d/%d", + L"Attaching the transmitter to your laptop computer.", + L"You cannot afford to hire %s", + L"For a limited time, the above fee covers the cost of the entire mission and includes the equipment listed below.", + L"Hire %s now and take advantage of our unprecedented 'one fee covers all' pricing. Also included in this unbelievable offer is the mercenary's personal equipment at no charge.", + L"Fee", + L"There is someone else in the sector...", + //L"Gun Range: %d tiles, Chance to hit: %d percent", + L"Display Cover", + L"Line of Sight", + L"New Recruits cannot arrive there.", + L"Since your laptop has no transmitter, you won't be able to hire new team members. Perhaps this would be a good time to load a saved game or start over!", + L"%s hears the sound of crumpling metal coming from underneath Jerry's body. It sounds disturbingly like your laptop antenna being crushed.", //the %s is the name of a merc. @@@ Modified + L"After scanning the note left behind by Deputy Commander Morris, %s senses an oppurtinity. The note contains the coordinates for launching missiles against different towns in Arulco. It also gives the coodinates of the origin - the missile facility.", + L"Noticing the control panel, %s figures the numbers can be reversed, so that the missile might destroy this very facility. %s needs to find an escape route. The elevator appears to offer the fastest solution...", + L"This is an IRON MAN game and you cannot save when enemies are around.", // @@@ new text + L"(Cannot save during combat)", //@@@@ new text + L"The current campaign name is greater than 30 characters.", // @@@ new text + L"The current campaign cannot be found.", // @@@ new text + L"Campaign: Default ( %S )", // @@@ new text + L"Campaign: %S", // @@@ new text + L"You have selected the campaign %S. This campaign is a player-modified version of the original Unfinished Business campaign. Are you sure you wish to play the %S campaign?", // @@@ new text + L"In order to use the editor, please select a campaign other than the default.", ///@@new + // anv: extra iron man modes + L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", // TODO.Translate + L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", // TODO.Translate +}; + +// The_bob : pocket popup text defs // TODO.Translate +STR16 gszPocketPopupText[]= +{ + L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN + L"- no matching ammo -", //POCKET_POPUP_NO_AMMO + L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS + L"more...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features // TODO.Translate +STR16 szCovertTextStr[]= +{ + L"%s has camo!", + L"%s has a backpack!", + L"%s is seen carrying a corpse!", + L"%s's %s is suspicious!", + L"%s's %s is considered military hardware!", + L"%s carries too many guns!", + L"%s's %s is too advanced for an %s soldier!", + L"%s's %s has too many attachments!", + L"%s was seen performing suspicious activities!", + L"%s does not look like a civilian!", + L"%s bleeding was discovered!", + L"%s is drunk and doesn't behave like a soldier!", + L"On closer inspection, %s's disguise does not hold!", + L"%s isn't supposed to be here!", + L"%s isn't supposed to be here at this time!", + L"%s was seen near a fresh corpse!", + L"%s equipment raises a few eyebrows!", + L"%s is seen targetting %s!", + L"%s has seen through %s's disguise!", + L"No clothes item found in Items.xml!", + L"This does not work with the old trait system!", + L"Not enough APs!", + L"Bad palette found!", + L"You need the covert skill to do this!", + L"No uniform found!", + L"%s is now disguised as a civilian.", + L"%s is now disguised as a soldier.", + L"%s wears a disorderly uniform!", + L"In retrospect, asking for surrender in disguise wasn't the best idea...", + L"%s was uncovered!", + L"%s's disguise seems to be ok...", + L"%s's disguise will not hold.", + L"%s was caught stealing!", + L"%s tried to manipulate %s's inventory.", + L"An elite soldier did not recognize %s!", // TODO.Translate + L"A officer knew %s was unfamiliar!", +}; + +STR16 szCorpseTextStr[]= +{ + L"No head item found in Items.xml!", + L"Corpse cannot be decapitated!", + L"No meat item found in Items.xml!", + L"Not possible, you sick, twisted individual!", + L"No clothes to take!", + L"%s cannot take clothes off of this corpse!", + L"This corpse cannot be taken!", + L"No free hand to carry corpse!", + L"No corpse item found in Items.xml!", + L"Invalid corpse ID!", +}; + +STR16 szFoodTextStr[]= +{ + L"%s does not want to eat %s", + L"%s does not want to drink %s", + L"%s ate %s", + L"%s drank %s", + L"%s's strength was damaged due to being overfed!", + L"%s's strength was damaged due to lack of nutrition!", + L"%s's health was damaged due to being overfed!", + L"%s's health was damaged due to lack of nutrition!", + L"%s's strength was damaged due to excessive drinking!", + L"%s's strength was damaged due to lack of water!", + L"%s's health was damaged due to excessive drinking!", + L"%s's health was damaged due to lack of water!", + L"Sectorwide canteen filling not possible, Food System is off!" +}; + +// TODO.Translate +STR16 szPrisonerTextStr[]= +{ + L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate + L"Gained $%d as ransom money.", // TODO.Translate + L"%d prisoners revealed enemy positions.", + L"%d officers, %d elites, %d regulars and %d admins joined our cause.", + L"Prisoners start a massive riot in %s!", + L"%d prisoners were sent to %s!", + L"Prisoners have been released!", + L"The army now occupies the prison in %s, the prisoners were freed!", + L"The enemy refuses to surrender!", + L"The enemy refuses to take you as prisoners - they prefer you dead!", + L"This behaviour is set OFF in your ini settings.", + L"%s has freed %s!", + L"A high-ranking army officer in %s has been revealed!", // TODO.Translate + L"The enemy leader refuses to even consider surrender!", + L"%d prisoners volunteered to join our forces.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= // TODO.Translate +{ + L"nothing", + L"building a fortification", + L"removing a fortification", + L"hacking", // TODO.Translate + L"%s had to stop %s.", + L"The selected barricade cannot be built in this sector", // TODO.Translate +}; + +STR16 szInventoryArmTextStr[]= // TODO.Translate +{ + L"Blow up (%d AP)", + L"Blow up", + L"Arm (%d AP)", + L"Arm", + L"Disarm (%d AP)", + L"Disarm", +}; + +// TODO.Translate +STR16 szBackgroundText_Flags[]= +{ + L" might consume drugs in inventory\n", + L" disregard for all other backgrounds\n", + L" +1 level in underground sectors\n", + L" steals money from the locals sometimes\n", // TODO.Translate + + 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 + + L" huge loyality penalty in all towns if we die\n", // TODO.Translate + + L" refuses to attack animals\n", // TODO.Translate + L" refuses to attack members of the same group\n", // TODO.Translate +}; + +// TODO.Translate +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% APs in polar sectors\n", + L" %s%d%% APs in desert sectors\n", + L" %s%d%% APs in swamp sectors\n", + L" %s%d%% APs in urban sectors\n", + L" %s%d%% APs in forest sectors\n", // TODO.Translate + L" %s%d%% APs in plain sectors\n", + L" %s%d%% APs in river sectors\n", + L" %s%d%% APs in tropical sectors\n", + L" %s%d%% APs in coastal sectors\n", + L" %s%d%% APs in mountainous sectors\n", + + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% leadership stat\n", + L" %s%d%% marksmanship stat\n", + 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", + L" %s%d%% APs needed for fortification actions\n", + L" %s%d%% APs needed for mortars\n", + L" %s%d%% APs needed to access inventory\n", + L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", + L" %s%d%% APs on first turn when assaulting a sector\n", + + L" %s%d%% travel speed on foot\n", + L" %s%d%% travel speed on land vehicles\n", + L" %s%d%% travel speed on air vehicles\n", + L" %s%d%% travel speed on water vehicles\n", + + L" %s%d%% fear resistance\n", + L" %s%d%% suppression resistance\n", + L" %s%d%% physical resistance\n", + L" %s%d%% alcohol resistance\n", + L" %s%d%% disease resistance\n", // TODO.Translate + + L" %s%d%% interrogation effectiveness\n", + L" %s%d%% prison guard strength\n", + L" %s%d%% better prices when trading guns and ammo\n", + L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", + L" %s%d%% team capitulation strength if we lead negotiations\n", + L" %s%d%% faster running\n", + L" %s%d%% bandaging speed\n", + L" %s%d%% breath regeneration\n", // TODO.Translate + L" %s%d%% strength to carry items\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", + L" %s%d need for sleep\n", + L" %s%d%% melee damage\n", + L" %s%d%% cth with blades\n", + L" %s%d%% camo effectiveness\n", + L" %s%d%% stealth\n", + L" %s%d%% max CTH\n", + L" %s%d hearing range during the night\n", + L" %s%d hearing range during the day\n", + L" %s%d effectivity at disarming traps\n", // TODO.Translate + L" %s%d%% CTH with SAMs\n", // TODO.Translate + + L" %s%d%% effectiveness to friendly approach\n", + L" %s%d%% effectiveness to direct approach\n", + L" %s%d%% effectiveness to threaten approach\n", + 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", + L" %s%d%% insurance cost\n", + L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate + L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate + L" %s%d%% effectiveness at treating population against diseases\n", + L"Can spot tracks up to %d tiles away\n", + L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% chance to evade snake attacks\n", // TODO.Translate + + L" dislikes some other backgrounds\n", // TODO.Translate + L"Smoker", + L"Nonsmoker", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% building speed\n", + L" hacking skill: %s%d ", // TODO.Translate + L" %s%d%% burial speed\n", // TODO.Translate + L" %s%d%% administration effectiveness\n", // TODO.Translate + L" %s%d%% exploration effectiveness\n", // TODO.Translate +}; + +STR16 szBackgroundTitleText[] = // TODO.Translate +{ + L"I.M.P. Background", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = // TODO.Translate +{ + L"I.M.P. Prejudices", +}; + +STR16 szPersonalityDisplayText[]= // TODO.Translate +{ + L"You look", + L"and appearance is", + L"important to you.", + L"You have", + L"and care", + L"about that.", + L"You are", + L"and hate everyone", + L".", + L"racist against non-", + L"people.", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"How do you look?", + L"How important are the looks of others to you?", + L"What are your manners?", + L"How important are the manners of other people to you?", + L"What is your nationality?", + L"What nation o you dislike?", + L"How much do you dislike that nation?", + L"How racist are you?", + L"What is your race? You will be\nracist against all other races.", + L"How sexist are you against the other gender?", +}; + +STR16 szRaceText[]= +{ + L"white", + L"black", + L"asian", + L"eskimo", + L"hispanic", +}; + +STR16 szAppearanceText[]= +{ + L"average", + L"ugly", + L"homely", + L"attractive", + L"like a babe", +}; + +STR16 szRefinementText[]= +{ + L"average manners", + L"manners of a slob", + L"manners of a snob", +}; + +STR16 szRefinementTextTypes[] = // TODO.Translate +{ + L"normal people", + L"slobs", + L"snobs", +}; + +STR16 szNationalityText[]= +{ + L"American", // 0 + L"Arab", + L"Australian", + L"British", + L"Canadian", + L"Cuban", // 5 + L"Danish", + L"French", + L"Russian", + L"Traconian", + L"Swiss", // 10 + L"Jamaican", + L"Polish", + L"Chinese", + L"Irish", + L"South African", // 15 + L"Hungarian", + L"Scottish", + L"Arulcan", + L"German", + L"African", // 20 + L"Italian", + L"Dutch", + L"Romanian", + L"Metaviran", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"Belarusian", + L"Belgian", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"Brasilian", + L"Bulgarian", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"Estonian", + L"Ethiopian", + L"Filipino", // 50 + L"Finnish", + L"Georgian", + L"Greek", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Indian", + L"Indonesian", + L"Iranian", + L"Iraqi", // 60 + L"Islandic", + L"Israeli", + L"Japanese", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Mexican", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Nigerian", + L"Nigerien", + L"Norwegian", + L"Pakistani", // 85 + L"Panamanian", + L"Portoguese", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"Serbian", + L"Slovakian", + L"Slovenian", + L"Somali", + L"Spanish", // 95 + L"Sudanese", + L"Swedish", + L"Syrian", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"Turkish", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"Venezuelan", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +STR16 szNationalityTextAdjective[] = // TODO.Translate +{ + L"americans", // 0 + L"arabs", + L"australians", + L"britains", + L"canadians", + L"cubans", // 5 + L"danes", + L"frenchmen", + L"russians", + L"traconians", + L"swiss", // 10 + L"jamaicans", + L"poles", + L"chinese", + L"irishmen", + L"south africans", // 15 + L"hungarians", + L"scotsmen", + L"arulcans", + L"germans", + L"africans", // 20 + L"italians", + L"dutchmen", + L"romanians", + L"metavirans", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"belarusians", + L"belgians", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"brasilians", + L"bulgarians", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"estonians", + L"ethiopians", + L"filipinos", // 50 + L"finns", + L"georgians", + L"greek", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"indians", + L"indonesians", + L"iranians", + L"iraqis", // 60 + L"islandics", + L"israelis", + L"japanese", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"mexicans", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"nigerians", + L"nigeriens", + L"norwegians", + L"pakistanis", // 85 + L"panamanians", + L"portoguese", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"serbians", + L"slovakians", + L"slovenians", + L"somali", + L"spaniards", // 95 + L"sudanese", + L"swedes", + L"syrians", + L"thais", + L"togolese", // 100 + L"tunisians", + L"turks", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"venezuelans", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"and do not hate any other nationality.", // used in personnel.cpp + L"of no origin", // used in IMP generation +}; + +STR16 szCareLevelText[]= +{ + L"not", + L"somewhat", + L"extremely", +}; + +STR16 szRacistText[]= +{ + L"not", + L"somewhat", + L"very", +}; + +STR16 szSexistText[]= +{ + L"no sexist", + L"somewhat sexist", + L"very sexist", + L"a Gentleman", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"Batteries are ", + L"full", + L"good", + L"at half", + L"low", + L"depleted", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= // TODO.Translate +{ + L"Mercenary", + L"Green militia", + L"Regular militia", + L"Elite militia", + + L"Civilian", + + L"Administrator", + L"Army Soldier", + L"Elite Soldier", + L"Tank", + + L"Creature", + L"Zombie", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"%s Press Council", + L"Ministry for %s Information Distribution", + L"%s Revolutionary Movement", + L"The Times International", + L"International Times", + L"R.I.S. (Recon Intelligence Service)", + + L"A collection of press sources from %s", + L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", + + L"Conflict Summary", + L"Battle reports", + L"News", + L"About us", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s in %s.", + + L"rebel forces", + L"the army", + + L"attacked", + L"ambushed", + L"airdropped", + + L"The attack came from %s.", + L"%s were reinforced from %s.", + L"The attack came from %s, %s were reinforced from %s.", + L"north", + L"east", + L"south", + L"west", + L"and", + L"an unknown location", // TODO.Translate + + L"Buildings in the sector were damaged.", // TODO.Translate + L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", + L"During the attack, %s and %s called reinforcements.", + L"During the attack, %s called reinforcements.", + L"Eyewitnesses report the use of chemical weapons from both sides.", + L"Chemical weapons were used by %s.", + L"In a serious escalation of the conflict, both sides deployed tanks.", + L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", + L"Both sides are said to have used snipers.", + L"Unverified reports indicate %s snipers were involved in the firefight.", + L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", + L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", + L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"Deep in the night", // 23 - 3 + L"At dawn", // 3 - 6 + L"Early in the morning", // 6 - 8 + L"In the morning hours", // 8 - 11 + L"At noon", // 11 - 14 + L"On the afternoon", // 14 - 18 + L"On the evening", // 18 - 21 + L"During the night", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Initial funding", + L"Mine income", + L"Trade", + L"Other sources", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Ammunition", + L"Explosives", + L"Food", + L"Medical gear", + L"Item maintenance", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"In an extremely one-sided battle, the army force was wiped out without much resistance.", + + L"The rebels easily defeated the army, inflicting heavy losses.", + L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", + + L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", + L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", + + L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", + + L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", + L"Despite the high number of rebels in this sector, the army easily dispatched them.", + + L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", + L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", + + L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", + L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", + + L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"Irrelevant", + L"Insignificant", + L"Notable", + L"Noteworthy", + L"Significant", + L"Interesting", + L"Important", + L"Very important", + L"Grave", + L"Major", + L"Momentous", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"Killed", + L"Wounded", + L"Prisoners", + L"Shots fired", + + L"Money earned", + L"Consumption", + L"Losses", + L"Participants", + + L"Promotions", + L"Summary", + L"Detail", + L"Previous", + + L"Next", + L"Incident", + L"Day", +}; + +STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate +{ + L"Glorious %s", + L"Mighty %s", + L"Awesome %s", + L"Intimidating %s", + + L"Powerful %s", + L"Earth-Shattering %s", + L"Insidious %s", + L"Swift %s", + + L"Violent %s", + L"Brutal %s", + L"Relentless %s", + L"Merciless %s", + + L"Cannibalistic %s", + L"Gorgeous %s", + L"Rogue %s", + L"Dubious %s", + + L"Sexually Ambigious %s", + L"Burning %s", + L"Enraged %s", + L"Visonary %s", + + // 20 + L"Gruesome %s", + L"International-law-ignoring %s", + L"Provoked %s", + L"Ceaseless %s", + + L"Inflexible %s", + L"Unyielding %s", + L"Regretless %s", + L"Remorseless %s", + + L"Choleric %s", + L"Unexpected %s", + L"Democratic %s", + L"Bursting %s", + + L"Bipartisan %s", + L"Bloodstained %s", + L"Rouge-wearing %s", + L"Innocent %s", + + L"Hateful %s", + L"Underwear-staining %s", + L"Civilian-devouring %s", + L"Unflinching %s", + + // 40 + L"Expect No Mercy From Our %s", + L"Very Mad %s", + L"Ultimate %s", + L"Furious %s", + + L"Its best to Avoid Our %s", + L"Fear the %s", + L"All Hail the %s!", + L"Protect the %s", + + L"Beware the %s", + L"Crush the %s", + L"Backstabbing %s", + L"Vicious %s", + + L"Sadistic %s", + L"Burning %s", + L"Wrathful %s", + L"Invincible %s", + + L"Guilt-ridden %s", + L"Rotting %s", + L"Sanitized %s", + L"Self-doubting %s", + + // 60 + L"Ancient %s", + L"Very Hungry %s", + L"Sleepy %s", + L"Demotivated %s", + + L"Cruel %s", + L"Annoying %s", + L"Huffy %s", + L"Bisexual %s", + + L"Screaming %s", + L"Hideous %s", + L"Praying %s", + L"Stalking %s", + + L"Cold-blooded %s", + L"Fearsome %s", + L"Trippin' %s", + L"Damned %s", + + L"Vegetarian %s", + L"Grotesque %s", + L"Backward %s", + L"Superior %s", + + // 80 + L"Inferior %s", + L"Okay-ish %s", + L"Porn-consuming %s", + L"Poisoned %s", + + L"Spontaneous %s", + L"Lethargic %s", + L"Tickled %s", + L"The %s is a dupe!", + + L"%s on Steroids", + L"%s vs. Predator", + L"A %s with a twist", + L"Self-Pleasuring %s", + + L"Man-%s hybrid", + L"Inane %s", + L"Overpriced %s", + L"Midnight %s", + + L"Capitalist %s", + L"Communist %s", + L"Intense %s", + L"Steadfast %s", + + // 100 + L"Narcoleptic %s", // TODO.Translate + L"Bleached %s", + L"Nail-biting %s", + L"Smite the %s", + + L"Bloodthirsty %s", + L"Obese %s", + L"Scheming %s", + L"Tree-Humping %s", + + L"Cheaply made %s", + L"Sanctified %s", + L"Falsely accused %s", + L"%s to the rescue", + + L"Crab-people vs. %s", + L"%s in Space!!!", + L"%s vs. Godzilla", + L"Untamed %s", + + L"Durable %s", + L"Brazen %s", + L"Greedy %s", + L"Midnight %s", + + // 120 + L"Confused %s", + L"Irritated %s", + L"Loathsome %s", + L"Manic %s", + + L"Ancient %s", + L"Sneaking %s", + L"%s of Doom", + L"%s's revenge", + + L"A %s on the run", + L"A %s out of time", + L"One with %s", + L"%s from hell", + + L"Super-%s", + L"Ultra-%s", + L"Mega-%s", + L"Giga-%s", + + L"A quantum of %s", + L"Her Majesties' %s", + L"Shivering %s", + L"Fearful %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Dragon", + L"Mountain Lion", + L"Copperhead Snake", + L"Jack Russell Terrier", + + L"Arch-Nemesis", + L"Basilisk", + L"Blade", + L"Shield", + + L"Hammer", + L"Spectre", + L"Congress", + L"Oilfield", + + L"Boyfriend", + L"Girlfriend", + L"Husband", + L"Stepmother", + + L"Sand Lizard", + L"Bankers", + L"Anaconda", + L"Kitten", + + // 20 + L"Congress", + L"Senate", + L"Cleric", + L"Badass", + + L"Bayonet", + L"Wolverine", + L"Soldier", + L"Tree Frog", + + L"Weasel", + L"Shrubbery", + L"Tar pit", + L"Sunset", + + L"Hurricane", + L"Ocelot", + L"Tiger", + L"Defense Industry", + + L"Snow Leopard", + L"Megademon", + L"Dragonfly", + L"Rottweiler", + + // 40 + L"Cousin", + L"Grandma", + L"Newborn", + L"Cultist", + + L"Disinfectant", + L"Democracy", + L"Warlord", + L"Doomsday Device", + + L"Minister", + L"Beaver", + L"Assassin", + L"Rain of Burning Death", + + L"Prophet", + L"Interloper", + L"Crusader", + L"Administration", + + L"Supernova", + L"Liberty", + L"Explosion", + L"Bird of Prey", + + // 60 + L"Manticore", + L"Frost Giant", + L"Celebrity", + L"Middle Class", + + L"Loudmouth", + L"Scape Goat", + L"Warhound", + L"Vengeance", + + L"Fortress", + L"Mime", + L"Conductor", + L"Job-Creator", + + L"Frenchman", + L"Superglue", + L"Newt", + L"Incompetency", + + L"Steppenwolf", + L"Iron Anvil", + L"Grand Lord", + L"Supreme Ruler", + + // 80 + L"Dictator", + L"Old Man Death", + L"Shredder", + L"Vacuum Cleaner", + + L"Hamster", + L"Hypno-Toad", + L"Discjockey", + L"Undertaker", + + L"Gorgon", + L"Child", + L"Mob", + L"Raptor", + + L"Goddess", + L"Gender Inequality", + L"Mole", + L"Baby Jesus", + + L"Gunship", + L"Citizen", + L"Lover", + L"Mutual Fund", + + // 100 + L"Uniform", // TODO.Translate + L"Saber", + L"Snow Leopard", + L"Panther", + + L"Centaur", + L"Scorpion", + L"Serpent", + L"Black Widow", + + L"Tarantula", + L"Vulture", + L"Heretic", + L"Zombie", + + L"Role-Model", + L"Hellhound", + L"Mongoose", + L"Nurse", + + L"Nun", + L"Space Ghost", + L"Viper", + L"Mamba", + + // 120 + L"Sinner", + L"Saint", + L"Comet", + L"Meteor", + + L"Can of worms", + L"Fish oil pills", + L"Breastmilk", + L"Tentacle", + + L"Insanity", + L"Madness", + L"Cough reflex", + L"Colon", + + L"King", + L"Queen", + L"Bishop", + L"Peasant", + + L"Tower", + L"Mansion", + L"Warhorse", + L"Referee", + + // 140 +}; + +STR16 szMercCompareWebSite[] = // TODO.Translate +{ + // main page + L"Mercs Love or Dislike You", + L"Your #1 teambuilding experts on the web", + + L"About us", + L"Analyse a team", + L"Pairwise comparison", + L"Customer voices", + + L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"Your team struggles with itself.", + L"Your employees waste time working against each other.", + L"Your workforce experiences a high fluctuation rate.", + L"You constantly receive low marks on workplace satisfaction ratings.", + L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"A few citations from our satisfied customers:", + L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G., Novelist-", + L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C., Corrective law enforcement-", + L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W., Snake charmer-", + L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L., SPK-", + L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C., NASA-", + L"I fully recommend this site!", + L"-Kasper H., H&C logistic Inc-", + L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke, Kerberus Inc-", + + // analyze + L"Choose your employee", + L"Choose your squad", + + // error messages + L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s shot me!", + L"%s is scheming behind my back", + L"%s interfered in my business", + L"%s is friends with my enemy", + + L"%s got a contract before I did", + L"%s ordered a shameful retreat", + L"%s massacred the innocent", + L"%s slows us down", + + L"%s doesn't share food", + L"%s jeopardizes the mission", + L"%s is a drug addict", + L"%s is thieving scum", + + L"%s is an incompetent commander", + L"%s is overpaid", + L"%s gets all the good stuff", + L"%s mounted a gun on me", + + L"%s treated my wounds", + L"Had a good drink with %s", + L"%s is fun to get wasted with", + L"%s is annoying when drunk", + + L"%s is an idiot when drunk", + L"%s opposed our view in an argument", + L"%s supported our position", + L"%s agrees to our reasoning", + + L"%s's beliefs are contrary to ours", + L"%s knows how to calm down people", + L"%s is insensitive", + L"%s puts people in their places", + + L"%s is way too impulsive", + L"%s is disease-ridden", + L"%s treated my diseases", + L"%s does not hold back in combat", + + L"%s enjoys combat a bit too much", + L"%s is a good teacher", + L"%s led us to victory", + L"%s saved my life", + + L"%s stole my kill", + L"%s and me fought well together", + L"%s made the enemy surrender", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"World Health Organization", + L"Bringing health to life", + + // links to other pages + L"About WHO", + L"Disease in Arulco", + L"About diseases", + + // text on the main page + L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", + L"You currently do not have access to WHO data on the arulcan plague.", + L"You have acquired detailed maps on the status of the disease.", + L"Subscribe to map updates", + L"Unsubscribe map updates", + + // helpful tips page + L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus", + L"Experience In Security", + + // links to other pages + L"What is Kerberus?", + L"Team Contracts", + L"Individual Contracts", + + // text on the main page + L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", + L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", + L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"You can select the type and number of personnel you want to hire here:", + L"Initial deployment", + L"Regular personnel", + L"Veteran personnel", + + L"%d available, %d$ each", + L"Hire: %d", + L"Cost: %d$", + + L"Select the initial operational area:", + L"Total Cost: %d$", + L"ETA: %02d:%02d", + L"Close Contract", + + L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus reinforcements have arrived in %s.", + L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"Move", // TODO.Translate + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"Roles", // TODO.Translate + L"Fortification", // TODO.Translate + L"Tracker", + L"CTH mode", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"Display enemy role symbols", // TODO.Translate + L"Display planned fortifications", + L"Display enemy tracks", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + +// TODO.Translate +STR16 szDynamicDialogueText[40][17] = // TODO.Translate +{ + // OPINIONEVENT_FRIENDLYFIRE + L"What the hell! $CAUSE$ attacked me!", + L"", + L"", + L"What? Me? No way, I'm engaging at the enemy!", + L"Oops.", + L"", + L"", + L"$CAUSE$ has attacked $VICTIM$. What do you do?", + L"Nah, that must have been enemy fire!", + L"Yeah, I saw it too!", + L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", + L"I saw it, it was clearly enemy fire!", + L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", + L"This is war! People get shot all the time! Speaking of... shoot more people, people!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"I would if you weren't such a wussy!", + L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"I'm doing my job. Get back to yours!", + L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"Patched together again? Good, now move!", + L"You're welcome.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'Even'? What does that mean?", + L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Nice one, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"Is there a difference?", + L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"What?!", + L"No!", + L"That is false!", + L"That is not true!", + + L"Lies, lies, lies. Nothing but lies!", + L"Liar!", + L"Traitor!", + L"You watch your mouth!", + + L"This is none of your business.", + L"Who ever invited you?", + L"Nobody asked for your opinion, $INTERJECTOR$.", + L"You stay away from me.", + + L"Why are you all against me?", + L"Why are you against me, $INTERJECTOR$?", + L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"Not listening...!", + + L"I hate this psycho circus.", + L"I hate this freak show.", + L"Back off!", + L"Lies, lies, lies...", + + L"No way!", + L"So not true.", + L"That is so not true.", + L"I know what I saw.", + + L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"Nope.", + L"You are mistaken.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"What $INTERJECTOR_GENDER$ said.", + + L"Thanks, $INTERJECTOR$!", + L"Once again I'm right!", + L"See, $CAUSE$? I am right!", + L"Once again $SPEAKER$ is right!", + + L"Aye.", + L"Yup.", + L"Yep", + L"Yes.", + + L"Indeed.", + L"True.", + L"Ha!", + L"See?", + + L"Exactly!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"That's right!", + L"Indeed!", + L"Exactly that.", + L"$CAUSE$ does that all the time.", + + L"$VICTIM$ is right!", + L"I was gonna' point that out, too!", + L"What $VICTIM$ said.", + L"That's our $CAUSE$!", + + L"Yeah!", + L"Now THIS is going to be interesting...", + L"You tell'em, $VICTIM$!", + L"Agreeing with $VICTIM$ here...", + + L"Classic $CAUSE$.", + L"I couldn't have said it better myself.", + L"That is exactly what happened.", + L"Agreed!", + + L"Yup.", + L"True.", + L"Bingo.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"Now wait a minute...", + L"Wait a sec, that's not what right...", + L"What? No.", + L"That is not what happened.", + + L"Hey, stop blaming $CAUSE$!", + L"Oh shut up, $VICTIM$!", + L"Nonono, you got that wrong.", + L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"And I suppose you never did, $VICTIM$?", + L"Hmmmm... no.", + L"Great. Let's have an argument. It's not like we have other things to do...", + L"You are mistaken!", + + L"You are wrong!", + L"Me and $CAUSE$ would never do such a thing.", + L"Nah, can't be.", + L"I don't think so.", + + L"Why bring that up now?", + L"Really, $VICTIM$? Is this necessary?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Keep silent", + L"Support $VICTIM$", + L"Support $CAUSE$", + L"Appeal to reason", + L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"he", + L"she", + L"him", + L"her", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% wisdom stat\n", + L" %s%d%% effective level\n", + + L" %s%d%% APs\n", + L" %s%d maximum breath\n", + L" %s%d%% strength to carry items\n", + L" %s%2.2f life regeneration/hour\n", + L" %s%d need for sleep\n", + L" %s%d%% water consumption\n", + L" %s%d%% food consumption\n", + + L"%s was diagnosed with %s!", + L"%s is cured of %s!", + + L"Diagnosis", + L"Treatment", + L"Burial", // TODO.Translate + L"Cancel", + + L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate + + L"High amount of distress can cause a personality split\n", // TODO.Translate + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", // TODO.Translate + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"Hide", // TODO.Translate + L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|F|o|o|d: %d%%\n", + + L"max morale altered by %s%d\n", + L" %s%d need for sleep\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% assignment efficiency\n", + L" %s%d%% chance to lose stats\n", +}; + +STR16 szIMPGearWebSiteText[] = // TODO.Translate +{ + // IMP Gear Entrance + L"How should gear be selected?", + L"Old method: Random gear according to your choices", + L"New method: Free selection of gear", + L"Old method", + L"New method", + + // IMP Gear Entrance + L"I.M.P. Equipment", + L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate +}; + +STR16 szIMPGearPocketText[] = +{ + L"Select helmet", + L"Select vest", + L"Select pants", + L"Select face gear", + L"Select face gear", + + L"Select main gun", + L"Select sidearm", + + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", + + L"Select launcher / rifle", + L"Select melee weapon", + + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"We cannot relay orders to this sector, militia command not possible.", + L"Unassigned", + L"Group No.", + L"Next", + + L"ETA", + L"Group %d (new)", + L"Group %d", + L"Final", + + L"Volunteers: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = // TODO.Translate +{ + L"Enemy helicopter shot down in %s!", + L"We... uhm... currently don't control that site, commander...", + L"The SAM does not need maintenance at the moment.", + L"We've already ordered the repair, this will take time.", + + L"We do not have enough resources to do that.", + L"Repair SAM site? This will cost %d$ and take %d hours.", + L"Enemy helicopter hit in %s.", + L"%s fires %s at enemy helicopter in %s.", + + L"SAM in %s fires at enemy helicopter in %s.", +}; + +STR16 szFortificationText[] = +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"Militia", + L"Militia Forces Overview", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Took part in Operation %s", + L"Recruited on Day %d, %d:%02d in %s", + L"Promoted on Day %d, %d:%02d", + L"KIA, Operation %s", + + L"Lightly wounded during Operation %s", + L"Heavily wounded during Operation %s", + L"Critically wounded during Operation %s", + L"Valiantly fought in Operation %s", + + L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", // TODO:Translate +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"All sectors", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"Merchant is hostile and does not want to trade.", + L"Merchant is in no state to do business.", + L"Merchant won't trade during combat.", + L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = // TODO.Translate +{ + L"normal", + L"rain", + L"thunderstorm", + L"sandstorm", + + L"snow", +}; + +STR16 szSnakeText[] = +{ + L"%s evaded a snake attack!", + L"%s was attacked by a snake!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"Converted %s into resources", + L"Guns: ", + L"Armour: ", + L"Misc: ", + + L"There are no volunteers left for militia!", + L"Not enough resources to train militia!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s starts hacking.", + L"%s accesses the computer, but finds nothing of interest.", + L"%s is not skilled enough to hack the computer.", + L"%s reads the file, but learns nothing new.", + + L"%s can't make sense out of this.", + L"%s couldn't use the watertap.", + L"%s has bought a %s.", + L"%s doesn't have enough money. That's just embarassing.", + + L"%s drank from water tap", + L"This machine doesn't seem to be working.", // TODO.Translate +}; + +STR16 szLaptopStatText[] = // TODO.Translate +{ + L"threaten effectiveness %d\n", + L"leadership %d\n", + L"approach modifier %.2f\n", + L"background modifier %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Good Guy", + L"%s eschews excessive violence and will refuse to attack non-hostiles.", + + L"Friendly approach", + L"Direct approach", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +STR16 szGearTemplateText[] = // TODO.Translate +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate +}; + +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +STR16 szFactoryText[] = // TODO.Translate +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +// TODO.Translate +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Space Available:", + L"MOLLE Space Required:", + L"MOLLE Small Slot Count:", + L"MOLLE Medium Slot Count:", + L"MOLLE Pouch Size: Small", + L"MOLLE Pouch Size: Medium", + L"MOLLE Pouch Size: Medium (Hydration)", + L"Thigh Rig", + L"Vest", + L"Combat Pack", + L"Backpack", // 10 + L"MOLLE Pouch", + L"Compatible backpacks:", + L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = // TODO.Translate +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = // TODO.Translate +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = // TODO.Translate +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = // TODO.Translate +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia\nthat appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = // TODO: Translate +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //DUTCH diff --git a/i18n/_EnglishText.cpp b/i18n/_EnglishText.cpp index f567783d..a285f03f 100644 --- a/i18n/_EnglishText.cpp +++ b/i18n/_EnglishText.cpp @@ -1,12237 +1,12317 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("ENGLISH") - - #if defined( ENGLISH ) - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_EnglishText_public_symbol(void); - -#if defined( ENGLISH ) - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; - -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Locations", // 0 - L"Characters", - L"Items", - L"Quests", - L"Menu 5", - L"Menu 6", //5 - L"Menu 7", - L"Menu 8", - L"Menu 9", - L"Menu 10", - L"Menu 11", //10 - L"Menu 12", - L"Menu 13", - L"Menu 14", - L"Menu 15", - L"Menu 15", // 15 - - //Briefing Room - L"Enter", -}; - -STR16 pOtherButtonsText[] = -{ - L"Briefing", - L"Accept", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Briefing", - L"Accept missions", -}; - - -STR16 pLocationPageText[] = -{ - L"Prev page", - L"Photo", - L"Next page", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"Main page", - L">>", - L"Type: ", - L"Empty data", - L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", - L"Briefing Room. Please click the 'Enter' button.", -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Unknown",// 0 - unknown - L"City", //1 - city - L"SAM Site", //2 - SAM Site - L"Other Location", //3 - other location - L"Mine", //4 - mines - L"Military Complex", //5 - military complex - L"Laboratory Complex", //6 - laboratory complex - L"Factory Complex", //7 - factory complex - L"Hospital", //8 - hospital - L"Prison", //9 - prison - L"Airport", //10 - airport -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Show All", - L"Show AIM", - L"Show MERC", - L"Show RPC", - L"Show NPC", - L"Show Vehicle", - L"Show IMP", - L"Show EPC", - L"Filter", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"All", - L"AIM", - L"MERC", - L"RPC", - L"NPC", - L"Veh.", - L"IMP", - L"EPC", - L"Filter", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Show All", - L"Show City", - L"Show SAM Site", - L"Show Other Location", - L"Show Mine", - L"Show Military Complex", - L"Show Laboratory Complex", - L"Show Factory Complex", - L"Show Hospital", - L"Show Prison", - L"Show Airport", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"All", - L"City", - L"SAM", - L"Other", - L"Mine", - L"Mil.", - L"Lab.", - L"Fact.", - L"Hosp.", - L"Prison", - L"Air.", -}; - -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"All",//0 - L"City", - L"SAM", - L"Mine", - L"Airport", - L"Wilder.", - L"Underg.", - L"Facil.", - L"Other", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//facility index + 1 - L"Show Cities", - L"Show SAM sites", - L"Show mines", - L"Show airports", - L"Show sectors in wilderness", - L"Show underground sectors", - L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", - L"Show Other sectors", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; - -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"All",//0 - L"A.I.M.", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"Other",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//Other index + 1 - L"Show A.I.M. members", - L"Show M.E.R.C staff", - L"Show Rebels", - L"Show Non-hirable Characters", - L"Show Player created Characters", - L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", -}; - -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Vehic.", - L"EPC", - L"",//reserved. Insert new Other filters above! -}; - -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"All",//0 - L"Gun", - L"Ammo", - L"Armor", - L"LBE", - L"Attach.", - L"Misc",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", -}; - -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Helmet", - L"Vest", - L"Pant", - L"Plate", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Tight", - L"Vest", - L"Combat", - L"Backp.", - L"Pocket", - L"Other", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Optic", - L"Side", - L"Muzzle", - L"Extern.", - L"Intern.", - L"Other", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"Blade", - L"T.Knife", - L"Punch", - L"Grenade", - L"Bomb", - L"Medikit", - L"Kit", - L"Face", - L"Other", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; - -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"All", - L"Active", - L"Compl.", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Active Quests", - L"Show Completed Quests", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"All", //0 - L"Gun", - L"Ammo", - L"LBE", - L"Misc", - - L"Show All", //5 - L"Show Gun", - L"Show Ammo", - L"Show LBE Gear", - L"Show Misc", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"Heavy", - L"Pistol", - L"M. Pist.", - L"SMG", - L"Rifle", - L"S. Rifle", - L"A. Rifle", - L"MG", - L"Shotg.", - - // Ammo - L"Pistol", - L"M. Pist.", //10 - L"SMG", - L"Rifle", - L"S. Rifle", - L"A. Rifle", - L"MG", - L"Shotg.", - - // Used - L"Gun", - L"Armor", - L"LBE Gear", - L"Misc", //20 - - // Armour - L"Helmet", - L"Vest", - L"Legging", - L"Plate", - - // Misc - L"Blade", - L"Th. Kn.", - L"Blunt", - L"Grena.", - L"Bomb", - L"Med.", //30 - L"Kit", - L"Face", - L"LBE", - L"Misc", //34 -}; - -STR16 QuestDescText[] = -{ - L"Deliver Letter", - L"Food Route", - L"Terrorists", - L"Kingpin Chalice", - L"Kingpin Money", - L"Runaway Joey", - L"Rescue Maria", - L"Chitzena Chalice", - L"Held in Alma", - L"Interrogation", - - L"Hillbilly Problem", //10 - L"Find Scientist", - L"Deliver Video Camera", - L"Blood Cats", - L"Find Hermit", - L"Creatures", - L"Find Chopper Pilot", - L"Escort SkyRider", - L"Free Dynamo", - L"Escort Tourists", - - - L"Doreen", //20 - L"Leather Shop Dream", - L"Escort Shank", - L"No 23 Yet", - L"No 24 Yet", - L"Kill Deidranna", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", -}; - -STR16 FactDescText[] = -{ - L"Omerta Liberated", - L"Drassen Liberated", - L"Sanmona Liberated", - L"Cambria Liberated", - L"Alma Liberated", - L"Grumm Liberated", - L"Tixa Liberated", - L"Chitzena Liberated", - L"Estoni Liberated", - L"Balime Liberated", - - L"Orta Liberated", //10 - L"Meduna Liberated", - L"Pacos approached", - L"Fatima Read note", - L"Fatima Walked away from player", - L"Dimitri (#60) is dead", - L"Fatima responded to Dimitri's surprise", - L"Carlo's exclaimed 'no one moves'", - L"Fatima described note", - L"Fatima arrives at final dest", - - L"Dimitri said Fatima has proof", //20 - L"Miguel overheard conversation", - L"Miguel asked for letter", - L"Miguel read note", - L"Ira comment on Miguel reading note", - L"Rebels are enemies", - L"Fatima spoken to before given note", - L"Start Drassen quest", - L"Miguel offered Ira", - L"Pacos hurt/Killed", - - L"Pacos is in A10", //30 - L"Current Sector is safe", - L"Bobby R Shpmnt in transit", - L"Bobby R Shpmnt in Drassen", - L"33 is TRUE and it arrived within 2 hours", - L"33 is TRUE 34 is false more then 2 hours", - L"Player has realized part of shipment is missing", - L"36 is TRUE and Pablo was injured by player", - L"Pablo admitted theft", - L"Pablo returned goods, set 37 false", - - L"Miguel will join team", //40 - L"Gave some cash to Pablo", - L"Skyrider is currently under escort", - L"Skyrider is close to his chopper in Drassen", - L"Skyrider explained deal", - L"Player has clicked on Heli in Mapscreen at least once", - L"NPC is owed money", - L"Npc is wounded", - L"Npc was wounded by Player", - L"Father J.Walker was told of food shortage", - - L"Ira is not in sector", //50 - L"Ira is doing the talking", - L"Food quest over", - L"Pablo stole something from last shpmnt", - L"Last shipment crashed", - L"Last shipment went to wrong airport", - L"24 hours elapsed since notified that shpment went to wrong airport", - L"Lost package arrived with damaged goods. 56 to False", - L"Lost package is lost permanently. Turn 56 False", - L"Next package can (random) be lost", - - L"Next package can(random) be delayed", //60 - L"Package is medium sized", - L"Package is largesized", - L"Doreen has conscience", - L"Player Spoke to Gordon", - L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo asked for first aid", - L"Dynamo can be recruited", - L"Npc is bleeding", - L"Shank wants to join", - - L"NPC is bleeding", //70 - L"Player Team has head & Carmen in San Mona", - L"Player Team has head & Carmen in Cambria", - L"Player Team has head & Carmen in Drassen", - L"Father is drunk", - L"Player has wounded mercs within 8 tiles of NPC", - L"1 & only 1 merc wounded within 8 tiles of NPC", - L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda is in the store ", - L"Brenda is Dead", - - L"Brenda is at home", //80 - L"NPC is an enemy", - L"Speaker Strength >= 84 and < 3 males present", - L"Speaker Strength >= 84 and at least 3 males present", - L"Hans lets ou see Tony", - L"Hans is standing on 13523", - L"Tony isnt available Today", - L"Female is speaking to NPC", - L"Player has enjoyed the Brothel", - L"Carla is available", - - L"Cindy is available", //90 - L"Bambi is available", - L"No girls is available", - L"Player waited for girls", - L"Player paid right amount of money", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping expectingh visit from player", - L"Darren expecting money from player", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; - -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Delete", - L"Delete item (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"north", - L"northeast", - L"east", - L"southeast", - L"south", - L"southwest", - L"west", - L"northwest" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Toggle viewing of players", //0 - L"Toggle viewing of enemies", - L"Toggle viewing of creatures", - L"Toggle viewing of rebels", - L"Toggle viewing of civilians", - - L"Player", - L"Enemy", - L"Creature", - L"Rebels", - L"Civilian", - - L"DETAILED PLACEMENT", //10 - L"General information mode", - L"Physical appearance mode", - L"Attributes mode", - L"Inventory mode", - L"Profile ID mode", - L"Schedule mode", - L"Schedule mode", - L"DELETE", - L"Delete currently selected merc (|D|e|l)", - L"NEXT", //20 - L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", - L"Toggle priority existance", - L"Toggle whether or not placement\nhas access to all doors", - - //Orders - L"STATIONARY", - L"ON GUARD", - L"ON CALL", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", //30 - L"RND PT PATROL", - - //Attitudes - L"DEFENSIVE", - L"BRAVE SOLO", - L"BRAVE AID", - L"AGGRESSIVE", - L"CUNNING SOLO", - L"CUNNING AID", - - L"Set merc to face %s", - - L"Find", - L"BAD", //40 - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"BAD", - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"Previous color set", //50 - L"Next color set", - - L"Previous body type", - L"Next body type", - - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - - L"No action", - L"No action", - L"No action", //60 - L"No action", - - L"Clear Schedule", - - L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"ROOFS", //0 - L"WALLS", - L"ROOM INFO", - - L"Place walls using selection method", - L"Place doors using selection method", - L"Place roofs using selection method", - L"Place windows using selection method", - L"Place damaged walls using selection method.", - L"Place furniture using selection method", - L"Place wall decals using selection method", - L"Place floors using selection method", //10 - L"Place generic furniture using selection method", - L"Place walls using smart method", - L"Place doors using smart method", - L"Place windows using smart method", - L"Place damaged walls using smart method", - L"Lock or trap existing doors", - - L"Add a new room", - L"Edit cave walls.", - L"Remove an area from existing building.", - L"Remove a building", //20 - L"Add/replace building's roof with new flat roof.", - L"Copy a building", - L"Move a building", - L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", - L"Erase room numbers", - - L"Toggle |Erase mode", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Cycle brush size (|A/|Z)", - L"Roofs (|H)", - L"|Walls", //30 - L"Room Info (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Wpns", //0 - L"Ammo", - L"Armour", - L"LBE", - L"Exp", - L"E1", - L"E2", - L"E3", - L"Triggers", - L"Keys", - L"Rnd", //10 - L"Previous (|,)", // previous page - L"Next (|.)", // next page -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Add ambient light source", //0 - L"Toggle fake ambient lights.", - L"Add exit grids (r-clk to query existing).", - L"Cycle brush size (|A/|Z)", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", - L"Specify north point for validation purposes.", - L"Specify west point for validation purposes.", - L"Specify east point for validation purposes.", - L"Specify south point for validation purposes.", - L"Specify center point for validation purposes.", //10 - L"Specify isolated point for validation purposes.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"New outdoor level", //0 - L"New basement", - L"New cave level", - L"Save map (|C|t|r|l+|S)", - L"Load map (|C|t|r|l+|L)", - L"Select tileset", - L"Leave Editor mode", - L"Exit game (|A|l|t+|X)", - L"Create radar map", - L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", - L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Draw |Ground textures", //0 - L"Set map ground textures", - L"Place banks and |Cliffs", - L"Draw roads (|P)", - L"Draw |Debris", - L"Place |Trees & bushes", - L"Place |Rocks", - L"Place barrels & |Other junk", - L"Fill area", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", //10 - L"Cycle brush size (|A/|Z)", - L"Raise brush density (|])", - L"Lower brush density (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Terrain", //0 - L"Buildings", - L"Items", - L"Mercs", - L"Map Info", - L"Options", - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text - L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text - L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text - L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text - L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"North Entry Point", //0 - L"West Entry Point", - L"East Entry Point", - L"South Entry Point", - L"Center Entry Point", - L"Isolated Entry Point", - - L"Prime", - L"Night", - L"24Hour", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Panic Trigger1", //0 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", - - L"Pressure Action", - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"No Lock ID", //0 - L"Explosion Trap", - L"Electric Trap", - L"Siren Trap", - L"Silent Alarm", - L"Super Electric Trap", //5 - L"Brothel Siren Trap", - L"Trap Level %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 - L"No map currently loaded.", - L"File: %S, Current Tileset: %s", - L"Enlarge map on loading", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"TOGGLE", //0 - L"VIEWS", - L"SELECTION METHOD", - L"SMART METHOD", - L"BUILDING METHOD", - L"Room#", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Editing lock attributes at map index %d.", - L"Lock ID", - L"Trap Type", - L"Trap Level", - L"Locked", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Pressure Action", //0 - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", - - L"Panic Trigger1", //5 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Status Info Line 1", - L"Status Info Line 2", - L"Status Info Line 3", - L"Status Info Line 4", - L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Prime", - L"Night", - L"24Hrs", //5 - - L"Radius", - - L"Underground", - L"Light Level", - - L"Outdoors", - L"Basement", //10 - L"Caves", - - L"Restricted", - L"Scroll ID", - - L"Destination", - L"Sector", //15 - L"Destination", - L"Bsmt. Level", - L"Dest.", - L"GridNo", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"No action", - L"Lock door", - L"Unlock door", - L"Open door", - L"Close door", - L"Move to gridno", - L"Leave sector", - L"Enter sector", - L"Stay in sector", - L"Sleep", - L"Ignore this!" -}; - -STR16 zDiffNames[5] = // NUM_DIFF_LVLS = 5 -{ - L"Wimp", - L"Easy", - L"Average", - L"Tough", - L"Steroid Users Only" -}; - -STR16 EditMercStat[12] = -{ - L"Max Health", - L"Cur Health", - L"Strength", - L"Agility", - L"Dexterity", - L"Charisma", - L"Wisdom", - L"Marksmanship", - L"Explosives", - L"Medical", - L"Scientific", - L"Exp Level", -}; - - -STR16 EditMercOrders[8] = -{ - L"Stationary", - L"On Guard", - L"Close Patrol", - L"Far Patrol", - L"Point Patrol", - L"On Call", - L"Seek Enemy", - L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Defensive", - L"Brave Loner", - L"Brave Buddy", - L"Cunning Loner", - L"Cunning Buddy", - L"Aggressive", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Merc Name:", //0 - L"Orders:", - L"Combat Attitude:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Merc Colors", //0 - L"Done", - - L"Previous merc standing orders", - L"Next merc standing orders", - - L"Previous merc combat attitude", - L"Next merc combat attitude", //5 - - L"Decrease merc stat", - L"Increase merc stat", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Random", //0 - L"Reg Male", - L"Big Male", - L"Stocky Male", - L"Reg Female", - L"NE Tank", //5 - L"NW Tank", - L"Fat Civilian", - L"M Civilian", - L"Miniskirt", - L"F Civilian", //10 - L"Kid w/ Hat", - L"Humvee", - L"Eldorado", - L"Icecream Truck", - L"Jeep", //15 - L"Kid Civilian", - L"Domestic Cow", - L"Cripple", - L"Unarmed Robot", - L"Larvae", //20 - L"Infant", - L"Yng F Monster", - L"Yng M Monster", - L"Adt F Monster", - L"Adt M Monster", //25 - L"Queen Monster", - L"Bloodcat", - L"Humvee", -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=ORDERS=-- ", //0 - L"--=ATTITUDE=--", - - L"RELATIVE", - L"ATTRIBUTES", - - L"RELATIVE", - L"EQUIPMENT", - - L"RELATIVE", - L"ATTRIBUTES", - - L"Army", - L"Admin", - L"Elite", //10 - - L"Exp. Level", - L"Life", - L"LifeMax", - L"Marksmanship", - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Leadership", - L"Explosives", //20 - L"Medical", - L"Mechanical", - L"Morale", - - L"Hair color:", - L"Skin color:", - L"Vest color:", - L"Pant color:", - - L"RANDOM", - L"RANDOM", - L"RANDOM", //30 - L"RANDOM", - - L"By specifying a profile index, all of the information will be extracted from the profile ", - L"and override any values that you have edited. It will also disable the editing features ", - L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", - L"extract the number you have typed. A blank field will clear the profile. The current ", - L"number of profiles range from 0 to ", - - L"Current Profile: n/a ", - L"Current Profile: %s", - - L"STATIONARY", - L"ON CALL", //40 - L"ON GUARD", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", - L"RND PT PATROL", - - L"Action", - L"Time", - L"V", - L"GridNo 1", //50 - L"GridNo 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"lock", - L"unlock", - L"open", - L"close", - - L"Click on the gridno adjacent to the door that you wish to %s.", //60 - L"Click on the gridno where you wish to move after you %s the door.", - L"Click on the gridno where you wish to move to.", - L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", - L" Hit ESC to abort entering this line in the schedule.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"Slot #%d", - L"Patrol orders with no waypoints", - L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"No action", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Placement not copied because no placement selected.", - L"Placement copied.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Placement not pasted as no placement is saved in buffer.", - L"Placement pasted.", - L"Placement not pasted as the maximum number of placements for this team has been reached.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Exit editor?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Are you sure you wish to remove all lights?", //0 - L"Are you sure you wish to reverse the schedules?", - L"Are you sure you wish to clear all of the schedules?", - - L"Clicked Placement Enabled", - L"Clicked Placement Disabled", - - L"Draw High Ground Enabled", //5 - L"Draw High Ground Disabled", - - L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"Random Placement Enabled", - L"Random Placement Disabled", - - L"Removing Treetops", //10 - L"Showing Treetops", - - L"World Raise Reset", - - L"World Raise Set Old", - L"World Raise Set", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"Creating radar map for %S", //0 - - L"Delete current map and start a new basement level?", - L"Delete current map and start a new cave level?", - L"Delete current map and start a new outdoor level?", - - L" Wipe out ground textures? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 - L"Toggle fake editor lighting ON/OFF", - - L"INSERT", - L"Toggle fill mode ON/OFF", - - L"BKSPC", - L"Undo last change", - - L"DEL", - L"Quick erase object under mouse cursor", - - L"ESC", - L"Exit editor", - - L"PGUP/PGDN", //10 - L"Change object to be pasted", - - L"F1", - L"This help screen", - - L"F10", - L"Save current map", - - L"F11", - L"Load map as current", - - L"+/-", - L"Change shadow darkness by .01", - - L"SHFT +/-", //20 - L"Change shadow darkness by .05", - - L"0 - 9", - L"Change map/tileset filename", - - L"b", - L"Change brush size", - - L"d", - L"Draw debris", - - L"o", - L"Draw obstacle", - - L"r", //30 - L"Draw rocks", - - L"t", - L"Toggle trees display ON/OFF", - - L"g", - L"Draw ground textures", - - L"w", - L"Draw building walls", - - L"e", - L"Toggle erase mode ON/OFF", - - L"h", //40 - L"Toggle roofs ON/OFF", -}; - -STR16 pAutoLoadMapText[] = -{ - L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -STR16 pShowHighGroundText[] = -{ - L"Showing High Ground Markers", - L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = -{ - L"Klaxon Mine", - L"Flare Mine", - L"Teargas Explosion", - L"Stun Explosion", - L"Smoke Explosion", - L"Mustard Gas", - L"Land Mine", - L"Open Door", - L"Close Door", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Small Explosion", - L"Medium Explosion", - L"Large Explosion", - L"Toggle Door", - L"Toggle Action1s", - L"Toggle Action2s", - L"Toggle Action3s", - L"Toggle Action4s", - L"Enter Brothel", - L"Exit Brothel", - L"Kingpin Alarm", - L"Sex with Prostitute", - L"Reveal Room", - L"Local Alarm", - L"Global Alarm", - L"Klaxon Sound", - L"Unlock door", - L"Toggle lock", - L"Untrap door", - L"Tog pressure items", - L"Museum alarm", - L"Bloodcat alarm", - L"Big teargas", -}; -*/ -STR16 pUpdateItemStatsPanelText[] = -{ - L"Toggle hide flag", //0 - L"No item selected.", - L"Slot available for", - L"Random generation.", - L"Keys not editable.", - L"ProfileID of owner", - L"Item class not implemented.", - L"Slot locked as empty.", - L"Status", - L"Rounds", - L"Trap Level", //10 - L"Quantity", - L"Trap Level", - L"Status", - L"Trap Level", - L"Status", - L"Quantity", - L"Trap Level", - L"Dollars", - L"Status", - L"Trap Level", //20 - L"Trap Level", - L"Tolerance", - L"Alarm Trigger", - L"Exist Chance", - L"B", - L"R", - L"S", -}; - -STR16 pSetupGameTypeFlagsText[] = -{ - L"Item appears in both Sci-Fi and Realistic modes", //0 - L"Item appears in Realistic mode only", - L"Item appears in Sci-Fi mode only", -}; - -STR16 pSetupGunGUIText[] = -{ - L"SILENCER", //0 - L"SNIPERSCOPE", - L"LASERSCOPE", - L"BIPOD", - L"DUCKBILL", - L"G-LAUNCHER", //5 -}; - -STR16 pSetupArmourGUIText[] = -{ - L"CERAMIC PLATES", //0 -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"DETONATOR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"Okay", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"LOAD", - L"SAVE", - L"Update", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"Tileset: %s", //0 - L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", - L"Number of items: %d", - L"Number of lights: %d", - L"Number of entry points: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"Number of rooms: %d", - L"Total map population: %d", - L"Enemies: %d", - L"Admins: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Troops: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Elites: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Civilians: %d", //20 - - L"(%d detailed, %d profile -- %d have priority existance)", - - L"Humans: %d", - L"Cows: %d", - L"Bloodcats: %d", - - L"Creatures: %d", - - L"Monsters: %d", - L"Bloodcats: %d", - - L"Number of locked and/or trapped doors: %d", - L"Locked: %d", - L"Trapped: %d", //30 - L"Locked & Trapped: %d", - - L"Civilians with schedules: %d", - - L"Too many exit grid destinations (more than 4)...", - L"ExitGrids: %d (%d with a long distance destination)", - L"ExitGrids: none", - L"ExitGrids: 1 destination using %d exitgrids", - L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 - L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"%d placements have patrol orders without any waypoints defined.", - L"%d placements have waypoints, but without any patrol orders.", - L"%d gridnos have questionable room numbers. Please validate.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Enemy", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"Panic1", - L"Panic2", - L"Panic3", - L"Norm1", - L"Norm2", - L"Norm3", - L"Norm4", //10 - L"Pressure Actions", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"PRIORITY ENEMY DROPPED ITEMS", - L"None", - - L"TOO MANY ITEMS TO DISPLAY!", - L"NORMAL ENEMY DROPPED ITEMS", - L"TOO MANY ITEMS TO DISPLAY!", - L"None", - L"TOO MANY ITEMS TO DISPLAY!", - L"ERROR: Can't load the items for this map. Reason unknown.", //20 -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 - L"(NO MAP LOADED).", - L"You currently have %d outdated maps.", - L"The more maps that need to be updated, the longer it takes. It'll take ", - L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"depending on your computer, it may vary.", - L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"There is no sector currently selected.", - - L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"You need to either load an existing map or create a new map before being", - L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 - - L", ground level", - L", underground level 1", - L", underground level 2", - L", underground level 3", - L", alternate G level", - L", alternate B1 level", - L", alternate B2 level", - L", alternate B3 level", - - L"ITEM DETAILS -- sector %s", - L"Summary Information for sector %s:",//20 - - L"Summary Information for sector %s", - L"does not exist.", - - L"Summary Information for sector %s", - L"does not exist.", - - L"No information exists for sector %s.", - - L"No information exists for sector %s.", - - L"FILE: %s", - - L"FILE: %s", - - L"Override READONLY", - L"Overwrite File", //30 - - L"You currently have no summary data. By creating one, you will be able to keep track", - L"of information pertaining to all of the sectors you edit and save. The creation process", - L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"Do you wish to do this now (y/n)?", - - L"No summary info. Creation denied.", - - L"Grid", - L"Progress", //40 - L"Use Alternate Maps", - - L"Summary", - L"Items", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"Analyzing map: %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Loading map: %s", -}; - -STR16 pReportErrorText[] = -{ - L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Generating map information", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"Generating map summary", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MAJOR VERSION UPDATE", - L"There are %d maps requiring a major version update.", - L"Updating all outdated maps", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] from default tileset %s (%d, %S)", - L"File: %S, subindex: %d (%d, %S)", - L"Tileset: %s", -}; - -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Accept selections (|E|n|t|e|r)", - L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", - L"Scroll window up (|U|p)", - L"Scroll window down (|D|o|w|n)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Small", - L"Medium", - L"Large", - L"XLarge", - L"Width: xx", - L"Area" - }; - -//--- - -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Page 1/2", //0 - L"Page 2/2", - - L"Page 1/3", - L"Page 2/3", - L"Page 3/3", - - L"Page 1/1", //5 -}; - -// by Jazz: -CHAR16 zGrod[][500] = -{ - L"Robot", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 Development Team", - L"@T,C144,R134,{;Coding", - L"@T,C144,R134,{;Graphics and Sounds", - L"@};(Various other mods!)", - L"@T,C144,R134,{;Items", - L"@T,C144,R134,{;Other Contributors", - L"@};(All other community members who contributed input and feedback!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L".38 cal", -// L"9mm", -// L".45 cal", -// L".357 cal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm NATO", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Rocket", -// L"", // dart -// L"", // flame -// L".50 cal", // barrett -// L"9mm Hvy", // Val silent -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L".38 cal", -// L"9mm", -// L".45 cal", -// L".357 cal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm N.", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Rocket", -// L"dart", // dart -// L"", // flamethrower -// L".50 cal", // barrett -// L"9mm Hvy", // Val silent -//}; - - -CHAR16 WeaponType[MAXITEMS][30] = -{ - L"Other", - L"Pistol", - L"MP", - L"SMG", - L"Rifle", - L"Sniper rifle", - L"Assault rifle", - L"LMG", - L"Shotgun", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Player's Turn", // player's turn - L"Opponents' Turn", - L"Creatures' Turn", - L"Militia's Turn", - L"Civilians' Turn", - L"Player_Plan",// planning turn - L"Client #1",//hayden - L"Client #2",//hayden - L"Client #3",//hayden - L"Client #4",//hayden - -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s is hit in the head and loses a point of wisdom!", - L"%s is hit in the shoulder and loses a point of dexterity!", - L"%s is hit in the chest and loses a point of strength!", - L"%s is hit in the legs and loses a point of agility!", - L"%s is hit in the head and loses %d points of wisdom!", - L"%s is hit in the shoulder and loses %d points of dexterity!", - L"%s is hit in the chest and loses %d points of strength!", - L"%s is hit in the legs and loses %d points of agility!", - L"Interrupt!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"Your reinforcements have arrived!", - - // In the following four lines, all %s's are merc names - - L"%s reloads.", - L"%s doesn't have enough Action Points!", - L"%s is applying first aid. (Press any key to cancel.)", - L"%s and %s are applying first aid. (Press any key to cancel.)", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"reliable", - L"unreliable", - L"easy to repair", - L"hard to repair", - L"high damage", - L"low damage", - L"quick firing", - L"slow firing", - L"long range", - L"short range", - L"light", - L"heavy", - L"small", - L"fast burst fire", - L"no burst fire", - L"large magazine", - L"small magazine", - - // In the following two lines, all %s's are merc names - - L"%s's camouflage has worn off.", - L"%s's camouflage has washed off.", - - // The first %s is a merc name and the second %s is an item name - - L"Second weapon is out of ammo!", - L"%s has stolen the %s.", - - // The %s is a merc name - - L"%s's weapon can't burst fire.", - - L"You've already got one of those attached.", - L"Merge items?", - - // Both %s's are item names - - L"You can't attach a %s to a %s.", - - L"None", - L"Eject ammo", - L"Attachments", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and you gas mask at the same time. - L"You cannot use your %s and your %s at the same time.", - - L"The item you have in your cursor can be attached to certain items by placing it in one of the four attachment slots.", - L"The item you have in your cursor can be attached to certain items by placing it in one of the four attachment slots. (However in this case, the item is not compatible.)", - L"The sector isn't cleared of enemies!", - L"You still need to give %s %s", - L"%s is hit in the head!", - L"Abandon the fight?", - L"This attachment will be permanent. Go ahead with it?", - L"%s feels more energetic!", - L"%s slipped on some marbles!", - L"%s failed to grab the %s from enemy's hand!", - L"%s has repaired the %s", - L"Interrupt for ", - L"Surrender?", - L"This person refuses your aid.", - L"I DON'T think so!", - L"To travel in Skyrider's chopper, you'll have to ASSIGN mercs to VEHICLE/HELICOPTER first.", - L"%s only had enough time to reload ONE gun", - L"Bloodcats' turn", - L"full auto", - L"no full auto", - L"accurate", - L"inaccurate", - L"no semi auto", - L"The enemy has no more items to steal!", - L"The enemy has no item in its hand!", - - L"%s's desert camouflage has worn off.", - L"%s's desert camouflage has washed off.", - - L"%s's wood camouflage has worn off.", - L"%s's wood camouflage has washed off.", - - L"%s's urban camouflage has worn off.", - L"%s's urban camouflage has washed off.", - - L"%s's snow camouflage snow has worn off.", - L"%s's snow camouflage has washed off.", - - L"You cannot attach %s to this slot.", - L"The %s will not fit in any open slots.", - L"There's not enough space for this pocket.", - - L"%s has repaired the %s as much as possible.", - L"%s has repaired %s's %s as much as possible.", - - L"%s has cleaned the %s.", - L"%s has cleaned %s's %s.", - - L"Assignment not possible at the moment", - L"No militia that can be drilled present.", - - L"%s has fully explored %s.", -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracona", - L"Traconian", -#else - L"Arulco", - L"Arulcan", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"Paused", - L"Normal", - L"5 min", - L"30 min", - L"60 min", - L"6 hrs", -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"Squad 1", - L"Squad 2", - L"Squad 3", - L"Squad 4", - L"Squad 5", - L"Squad 6", - L"Squad 7", - L"Squad 8", - L"Squad 9", - L"Squad 10", - L"Squad 11", - L"Squad 12", - L"Squad 13", - L"Squad 14", - L"Squad 15", - L"Squad 16", - L"Squad 17", - L"Squad 18", - L"Squad 19", - L"Squad 20", - L"On Duty", // on active duty - L"Doctor", // administering medical aid - L"Patient", // getting medical aid - L"Vehicle", // in a vehicle - L"In Trans", // in transit - abbreviated form - L"Repair", // repairing - L"Radio Scan", // scanning for nearby patrols - L"Practice", // training themselves - L"Militia", // training a town to revolt - L"M.Militia", //training moving militia units - L"Trainer", // training a teammate - L"Student", // being trained by someone else - L"GetItem", // move items - L"Staff", // operating a strategic facility - L"Eat", // eating at a facility (cantina etc.) - L"Rest", // Resting at a facility - L"Prison", // interrogate prisoners - L"Dead", // dead - L"Incap.", // abbreviation for incapacitated - L"POW", // Prisoner of war - captured - L"Hospital", // patient in a hospital - L"Empty", // Vehicle is empty - L"Snitch", // facility: undercover prisoner (snitch) - L"Propag.", // facility: spread propaganda - L"Propag.", // facility: spread propaganda (globally) - L"Rumours", // facility: gather information - L"Propag.", // spread propaganda - L"Rumours", // gather information - L"Command", // militia movement orders - L"Diagnose", // disease diagnosis - L"Treat D.", // treat disease among the population - L"Doctor", // administering medical aid - L"Patient", // getting medical aid - L"Repair", // repairing - L"Fortify", // build structures according to external layout - L"Train W.", - L"Hide", - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", - L"Explore", - L"Event", // rftr: merc is on a mini event - L"Mission", // rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"Militia", // the title of the militia box - L"Unassigned", //the number of unassigned militia troops - L"You can't redistribute militia while there are hostilities in the area!", - L"Some militia were not assigned to a sector. Would you like to disband them?", // HEADROCK HAM 3.6 -}; - - -STR16 pMilitiaButtonString[] = -{ - L"Auto", // auto place the militia troops for the player - L"Done", // done placing militia troops - L"Disband", // HEADROCK HAM 3.6: Disband militia - L"Unassign All", // move all milita troops to unassigned pool -}; - -STR16 pConditionStrings[] = -{ - L"Excellent", //the state of a soldier .. excellent health - L"Good", // good health - L"Fair", // fair health - L"Wounded", // wounded health - L"Fatigued", // tired - L"Bleeding", // bleeding to death - L"Unconscious", // knocked out - L"Dying", // near death - L"Dead", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"On Duty", // set merc on active duty - L"Patient", // set as a patient to receive medical aid - L"Vehicle", // tell merc to enter vehicle - L"Unescort", // let the escorted character go off on their own - L"Cancel", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"Squad 1", - L"Squad 2", - L"Squad 3", - L"Squad 4", - L"Squad 5", - L"Squad 6", - L"Squad 7", - L"Squad 8", - L"Squad 9", - L"Squad 10", - L"Squad 11", - L"Squad 12", - L"Squad 13", - L"Squad 14", - L"Squad 15", - L"Squad 16", - L"Squad 17", - L"Squad 18", - L"Squad 19", - L"Squad 20", - L"On Duty", - L"Doctor", - L"Patient", - L"Vehicle", - L"In Transit", - L"Repair", - L"Radio Scan", - L"Practice", - L"Training Militia", - L"Training Mobile Militia", // Missing - L"Trainer", - L"Student", - L"Get item", // move items - L"Facility Staff", // Missing - L"Eat", // eating at a facility (cantina etc.) - L"Resting at Facility", // Missing - L"Interrogate prisoners", // Flugente: interrogate prisoners - L"Dead", - L"Incap.", - L"POW", - L"Hospital", - L"Empty", // Vehicle is empty - L"Undercover Snitch", // facility: undercover prisoner (snitch) - L"Spreading Propaganda", // facility: spread propaganda - L"Spreading Propaganda", // facility: spread propaganda (globally) - L"Gathering Rumours", // facility: gather rumours - L"Spreading Propaganda", // spread propaganda - L"Gathering Rumours", // gather information - L"Commanding Militia", // militia movement orders - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Doctor", - L"Patient", - L"Repair", - L"Fortify sector", // build structures according to external layout - L"Train workers", - L"Hide while disguised", - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", - L"Exploration", -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"Squad 1", - L"Squad 2", - L"Squad 3", - L"Squad 4", - L"Squad 5", - L"Squad 6", - L"Squad 7", - L"Squad 8", - L"Squad 9", - L"Squad 10", - L"Squad 11", - L"Squad 12", - L"Squad 13", - L"Squad 14", - L"Squad 15", - L"Squad 16", - L"Squad 17", - L"Squad 18", - L"Squad 19", - L"Squad 20", - L"On Duty", - L"Doctor", - L"Patient", - L"Vehicle", - L"In Transit", - L"Repair", - L"Radio Scan", - L"Practice", - L"Train Militia", - L"Train Mobiles", // Missing - L"Train Teammate", - L"Student", - L"Get Item", // move items - L"Staff Facility", // Missing - L"Rest at Facility", // Missing - L"Interrogate prisoners", // Flugente: interrogate prisoners - L"Dead", - L"Incap.", - L"POW", - L"Hospital", // patient in a hospital - L"Empty", // Vehicle is empty - L"Undercover Snitch", // facility: undercover prisoner (snitch) - L"Spread Propaganda", // facility: spread propaganda - L"Spread Propaganda", // facility: spread propaganda (globally) - L"Gather Rumours", // facility: gather rumours - L"Spread Propaganda", // spread propaganda - L"Gather Rumours", // gather information - L"Commanding Militia", // militia movement orders - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Doctor", - L"Patient", - L"Repair", - L"Fortify sector", // build structures according to external layout - L"Train workers", - L"Hide while disguised", - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", - L"Exploration", -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"Contract Options:", - L"", // a blank line, required - L"Offer One Day", // offer merc a one day contract extension - L"Offer One Week", // 1 week - L"Offer Two Weeks", // 2 week - L"Dismiss", // end merc's contract - L"Cancel", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"POW", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"STRENGTH", - L"DEXTERITY", - L"AGILITY", - L"WISDOM", - L"MARKSMANSHIP", - L"MEDICAL", - L"MECHANICAL", - L"LEADERSHIP", - L"EXPLOSIVES", - L"LEVEL", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Armor", // the armor rating of the merc - L"Weight", // the weight the merc is carrying - L"Camo", // the merc's camouflage rating - L"Camouflage:", - L"Protection:", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Agi", // the abbreviated version of : agility - L"Dex", // dexterity - L"Str", // strength - L"Ldr", // leadership - L"Wis", // wisdom - L"Lvl", // experience level - L"Mrk", // marksmanship skill - L"Mec", // mechanical skill - L"Exp", // explosive skill - L"Med", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Assignment", // the mercs current assignment - L"Contract", // the contract info about the merc - L"Health", // the health level of the current merc - L"Morale", // the morale of the current merc - L"Cond.", // the condition of the current vehicle - L"Fuel", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Practice", // tell merc to train self - L"Militia", // tell merc to train town - L"Trainer", // tell merc to act as trainer - L"Student", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Fire Rate:", // the allowable rate of fire for a merc who is guarding - L" Aggressive Fire", // the merc can be aggressive in their choice of fire rates - L" Conserve Ammo", // conserve ammo - L" Refrain From Firing", // fire only when the merc needs to - L"Other Options:", // other options available to merc - L" Can Retreat", // merc can retreat - L" Can Seek Cover", // merc is allowed to seek cover - L" Can Assist Teammates", // merc can assist teammates - L"Done", // done with this menu - L"Cancel", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"Fire Rate:", - L" *Aggressive Fire*", - L" *Conserve Ammo*", - L" *Refrain From Firing*", - L"Other Options:", - L" *Can Retreat*", - L" *Can Seek Cover*", - L" *Can Assist Teammates*", - L"Done", - L"Cancel", -}; - -STR16 pAssignMenuStrings[] = -{ - L"On Duty", // merc is on active duty - L"Doctor", // the merc is acting as a doctor - L"Disease", // merc is a doctor doing diagnosis - L"Patient", // the merc is receiving medical attention - L"Vehicle", // the merc is in a vehicle - L"Repair", // the merc is repairing items - L"Radio Scan", // the merc is scanning for patrols in neighbouring sectors - L"Snitch", // anv: snitch actions - L"Train", // the merc is training - L"Militia", // all things militia - L"Get Item", // move items - L"Fortify", // fortify sector - L"Intel", // covert assignments - L"Administer", - L"Explore", - L"Facility", // the merc is using/staffing a facility - L"Cancel", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"Attack", // set militia to aggresive - L"Hold Position", // set militia to stationary - L"Retreat", // retreat militia - L"Come to me", - L"Get down", - L"Crouch", - L"Take cover", - L"Move to", - L"All: Attack", - L"All: Hold Position", - L"All: Retreat", - L"All: Come to me", - L"All: Spread out", - L"All: Get down", - L"All: Crouch", - L"All: Take cover", - //L"All: Find items", - L"Cancel", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = -{ - // radio operator - L"Artillery Strike", - L"Jam communications", - L"Scan frequencies", - L"Eavesdrop", - L"Call reinforcements", - L"Switch off radio set", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Spotter", - L"Focus", - L"Drag", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Order an artillery strike from sector...", - L"Fill all radio frequencies with white noise, making communications impossible.", - L"Scan for jamming signals.", - L"Use your radio equipment to continously listen for enemy movement.", - L"Call in reinforcements from neighbouring sectors.", - L"Turn off radio set.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Observe an area, granting allied snipers a bonus to cth on anything you see.", - L"Increase interrupt modifier (penalty outside of area).", - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Requires:\n", - L" - %d AP\n", - L" - %s\n", - L" - %s or higher\n", - L" - %s or higher or\n", - L" - %d minutes to be ready\n", - L" - mortar positions in neighbouring sectors\n", - L" - %s |o|r %s |a|n|d %s or %s or higher\n", - L" - possession by a demon\n", - L" - a gun-related trait\n", - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = -{ - L"Militia", - L"Other Squads", - L"Cancel", - L"%d Militia", - L"All Militia", - - L"More", - L"Corpse: %s", -}; - -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Team Informant", - L"Town Assignment", - L"Cancel", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Discuss snitch's behaviour towards his teammates.", - L"Take an assignment in this sector.", - L"Cancel", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Report complaints", - L"Don't report", - L"Prevent misbehaviour", - L"Ignore misbehaviour", - L"Cancel", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Report any complaints you hear from other mercs to your commander.", - L"Don't report anything.", - L"Try to stop other mercs from getting wasted and scrounging.", - L"Don't care what other mercs do.", - L"Cancel", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Spread propaganda", - L"Gather rumours", - L"Cancel", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", - L"Keep an ear to the ground on any rumours about enemy forces activity.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = -{ - L"Interrogate admins", - L"Interrogate troops", - L"Interrogate elites", - L"Interrogate officers", - L"Interrogate generals", - L"Interrogate civilians", - L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s was exposed as a snitch but managed to notice it and get out alive.", - L"%s was exposed as a snitch but managed to defuse situation and get out alive.", - L"%s was exposed as a snitch but managed to avoid assassination attempt.", - L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", - - L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", - L"%s was exposed as a snitch and almost beaten to death before guards saved him.", - L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", - L"%s was exposed as a snitch and strangled to death before guards saved him.", - - L"%s was exposed as a snitch and drowned in toilet by other inmates.", - L"%s was exposed as a snitch and beaten to death by other inmates.", - L"%s was exposed as a snitch and shanked to death by other inmates.", - L"%s was exposed as a snitch and strangled to death by other inmates.", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s heard rumours about enemy activity in %d sectors.", - -}; - -STR16 pRemoveMercStrings[] = -{ - L"Remove Merc", // remove dead merc from current team - L"Cancel", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Health", - L"Agility", - L"Dexterity", - L"Strength", - L"Leadership", - L"Marksmanship", - L"Mechanical", - L"Explosives", - L"Medical", - L"Cancel", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Practice", // train yourself - L"Train workers", - L"Trainer", // train your teammates - L"Student", // be trained by an instructor - L"Cancel", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"Squad 1", - L"Squad 2", - L"Squad 3", - L"Squad 4", - L"Squad 5", - L"Squad 6", - L"Squad 7", - L"Squad 8", - L"Squad 9", - L"Squad 10", - L"Squad 11", - L"Squad 12", - L"Squad 13", - L"Squad 14", - L"Squad 15", - L"Squad 16", - L"Squad 17", - L"Squad 18", - L"Squad 19", - L"Squad 20", - L"Cancel", -}; - -STR16 pPersonnelTitle[] = -{ - L"Personnel", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Health: ", // health of merc - L"Agility: ", - L"Dexterity: ", - L"Strength: ", - L"Leadership: ", - L"Wisdom: ", - L"Exp. Lvl: ", // experience level - L"Marksmanship: ", - L"Mechanical: ", - L"Explosives: ", - L"Medical: ", - L"Med. Deposit: ", // amount of medical deposit put down on the merc - L"Remaining Contract: ", // cost of current contract - L"Kills: ", // number of kills by merc - L"Assists: ", // number of assists on kills by merc - L"Daily Cost:", // daily cost of merc - L"Tot. Cost to Date:", // total cost of merc - L"Contract:", // cost of current contract - L"Tot. Service to Date:", // total service rendered by merc - L"Salary Owing:", // amount left on MERC merc to be paid - L"Hit Percentage:", // percentage of shots that hit target - L"Battles:", // number of battles fought - L"Times Wounded:", // number of times merc has been wounded - L"Skills:", - L"No Skills", - L"Achievements:", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"Elite soldiers: %d\n", - L"Regular soldiers: %d\n", - L"Admin soldiers: %d\n", - L"Hostile groups: %d\n", - L"Creatures: %d\n", - L"Tanks: %d\n", - L"Others: %d\n", - - L"Mercs: %d\n", - L"Militia: %d\n", - L"Others: %d\n", - - L"Shots fired: %d\n", - L"Missiles fired: %d\n", - L"Grenades thrown: %d\n", - L"Knives thrown: %d\n", - L"Blade attacks: %d\n", - L"Hand to hand attacks: %d\n", - L"Successful hits: %d\n", - - L"Locks picked: %d\n", - L"Locks breached: %d\n", - L"Traps removed: %d\n", - L"Explosives detonated: %d\n", - L"Items repaired: %d\n", - L"Items combined: %d\n", - L"Items stolen: %d\n", - L"Militia trained: %d\n", - L"Mercs bandaged: %d\n", - L"Surgeries made: %d\n", - L"Persons met: %d\n", - L"Sectors discovered: %d\n", - L"Ambushes prevented: %d\n", - L"Quests handled: %d\n", - - L"Tactical battles: %d\n", - L"Autoresolve battles: %d\n", - L"Times retreated: %d\n", - L"Ambushes experienced: %d\n", - L"Hardest battle: %d Enemies\n", - - L"Shot: %d\n", - L"Stabbed: %d\n", - L"Punched: %d\n", - L"Blasted: %d\n", - L"Suffered damages in facilities: %d\n", - L"Surgeries undergone: %d\n", - L"Facility accidents: %d\n", - - L"Character:", - L"Weakness:", - - L"Attitudes:", // WANNE: For old traits display instead of "Character:"! - - L"Zombies: %d\n", // Flugente Zombies - - L"Background:", - L"Personality:", - - L"Prisoners interrogated: %d\n", - L"Diseases caught: %d\n", - L"Total damage received: %d\n", - L"Total damage caused: %d\n", - L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - // SANDRO - tweaked this - L"No Skill", - L"Lock Picking", - L"Hand to Hand", //JA25: modified - L"Electronics", - L"Night Operations", //JA25: modified - L"Throwing", - L"Teaching", - L"Heavy Weapons", - L"Auto Weapons", - L"Stealthy", - L"Ambidextrous", - L"Thief", - L"Martial Arts", - L"Knifing", - L"Sniper", - L"Camouflage", //JA25: modified - L"(Expert)", -}; -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"No Skill", // 0 - L"Auto Weapons", // 1 - L"Heavy Weapons", - L"Marksman", - L"Hunter", - L"Gunslinger", // 5 - L"Hand to Hand", - L"Deputy", - L"Technician", - L"Paramedic", // 9 - // Minor traits - L"Ambidextrous", // 10 - L"Melee", - L"Throwing", - L"Night Ops", - L"Stealthy", - L"Athletics", // 15 - L"Bodybuilding", - L"Demolitions", - L"Teaching", - L"Scouting", // 19 - // covert ops is a major trait that was added later - L"Covert Ops", // 20 - - // new minor traits - L"Radio Operator", // 21 - L"Snitch", // 22 - L"Survival", - - // second names for major skills - L"Machinegunner", // 24 - L"Bombardier", - L"Sniper", - L"Ranger", - L"Gunfighter", - L"Martial Arts", - L"Squadleader", - L"Engineer", - L"Doctor", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"Spy", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch (minor trait) - L"Placeholder", // for survival (minor trait) - L"More...", // 47 - L"Intel", // for INTEL - L"Disguise", // for DISGUISE - L"various", // for VARIOUSSKILLS - L"Bandage Mercs", // for AUTOBANDAGESKILLS -}; -////////////////////////////////////////////////////////// - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"|Stand/Walk", - L"|Crouch/Crouched Move", - L"Stand/|Run", - L"|Prone/Crawl", - L"|Look", - L"Action", - L"Talk", - L"Examine (|C|t|r|l)", - - // Pop up door menu - L"Open Manually", - L"Examine for Traps", - L"Lockpick", - L"Force Open", - L"Untrap", - L"Lock", - L"Unlock", - L"Use Door Explosive", - L"Use Crowbar", - L"Cancel (|E|s|c)", - L"Close", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"no trap", - L"an explosion trap", - L"an electric trap", - L"a siren trap", - L"a silent alarm trap", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"day", - L"week", - L"two weeks", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Select Character", - L"Assign Merc", - L"Plot Travel Route", - L"Merc |Contract", - L"Remove Merc", - L"Sleep", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"FAINT", - L"DEFINITE", - L"LOUD", - L"VERY LOUD", -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"UNKNOWN", - L"sound of MOVEMENT", - L"CREAKING", - L"SPLASHING", - L"IMPACT", - L"GUNSHOT", - L"EXPLOSION", - L"SCREAM", - L"IMPACT", - L"IMPACT", - L"SHATTERING", - L"SMASH", -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"the NORTHEAST", - L"the EAST", - L"the SOUTHEAST", - L"the SOUTH", - L"the SOUTHWEST", - L"the WEST", - L"the NORTHWEST", - L"the NORTH", -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"Urban", - L"Road", - L"Plains", - L"Desert", - L"Woods", - L"Forest", - L"Swamp", - L"Water", - L"Hills", - L"Impassable", - L"River", //river from north to south - L"River", //river from east to west - L"Foreign Country", - //NONE of the following are used for directional travel, just for the sector description. - L"Tropical", - L"Farmland", - L"Plains, road", - L"Woods, road", - L"Farm, road", - L"Tropical, road", - L"Forest, road", - L"Coastline", - L"Mountain, road", - L"Coastal, road", - L"Desert, road", - L"Swamp, road", - L"Woods, SAM site", - L"Desert, SAM site", - L"Tropical, SAM site", - L"Meduna, SAM site", - - //These are descriptions for special sectors - L"Cambria Hospital", - L"Drassen Airport", - L"Meduna Airport", - L"SAM site", - L"Refuel site", - L"Rebel Hideout", //The rebel base underground in sector A10 - L"Tixa Dungeon", //The basement of the Tixa Prison (J9) - L"Creature Lair", //Any mine sector with creatures in it - L"Orta Basement", //The basement of Orta (K4) - L"Tunnel", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Shelter", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s have been detected in sector %c%d and another squad is about to arrive.", //STR_DETECTED_SINGULAR - L"%s have been detected in sector %c%d and other squads are about to arrive.", //STR_DETECTED_PLURAL - L"Do you want to coordinate a simultaneous arrival?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"The enemy offers you the chance to surrender.", //STR_ENEMY_SURRENDER_OFFER - L"The enemy has captured your remaining unconscious mercs.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Retreat", //The retreat button //STR_AR_RETREAT_BUTTON - L"Done", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"DEFENDING", //STR_AR_DEFEND_HEADER - L"ATTACKING", //STR_AR_ATTACK_HEADER - L"ENCOUNTER", //STR_AR_ENCOUNTER_HEADER - L"Sector", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"VICTORY!", //STR_AR_OVER_VICTORY - L"DEFEAT!", //STR_AR_OVER_DEFEAT - L"SURRENDERED!", //STR_AR_OVER_SURRENDERED - L"CAPTURED!", //STR_AR_OVER_CAPTURED - L"RETREATED!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Militia", //STR_AR_MILITIA_NAME, - L"Elite", //STR_AR_ELITE_NAME, - L"Troop", //STR_AR_TROOP_NAME, - L"Admin", //STR_AR_ADMINISTRATOR_NAME, - L"Creature", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Time Elapsed", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"RETREATED", //STR_AR_MERC_RETREATED, - L"RETREATING", //STR_AR_MERC_RETREATING, - L"RETREAT", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Auto Resolve", //STR_PB_AUTORESOLVE_BTN, - L"Go To Sector", //STR_PB_GOTOSECTOR_BTN, - L"Retreat Mercs", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"ENEMY ENCOUNTER", //STR_PB_ENEMYENCOUNTER_HEADER, - L"ENEMY INVASION", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"ENEMY AMBUSH", //STR_PB_ENEMYAMBUSH_HEADER - L"ENTERING ENEMY SECTOR", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"CREATURE ATTACK", //STR_PB_CREATUREATTACK_HEADER - L"BLOODCAT AMBUSH", //STR_PB_BLOODCATAMBUSH_HEADER - L"ENTERING BLOODCAT LAIR", //STR_PB_ENTERINGBLOODCATLAIR_HEADER - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Location", - L"Enemies", - L"Mercs", - L"Militia", - L"Creatures", - L"Bloodcats", - L"Sector", - L"None", //If there are no uninvolved mercs in this fight. - L"N/A", //Acronym of Not Applicable - L"d", //One letter abbreviation of day - L"h", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Clear", - L"Spread", - L"Group", - L"Done", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"|Clears all the mercs' positions, \nand allows you to re-enter them manually.", - L"Randomly |spreads your mercs out \neach time it's pressed.", - L"Allows you to select where you wish to |group your mercs.", - L"Click this button when you're finished \nchoosing your mercs' positions. (|E|n|t|e|r)", - L"You must place all of your mercs \nbefore you start the battle.", - - //Various strings (translate word for word) - - L"Sector", - L"Choose entry positions (use arrow keys to scroll map)", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"Doesn't look so good there. It's inaccessible. Try a different location.", - L"Place your mercs in the highlighted section of the map.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"has arrived in sector", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"|Automatically resolves combat for you\nwithout loading map.", - L"Can't use auto resolve feature when\nthe player is attacking.", - L"|Enter the sector to engage the enemy.", - L"|Retreat group to their previous sector.", //singular version - L"|Retreat all groups to their previous sectors.", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"Enemies attack your militia in sector %c%d.", - //%c%d is the sector -- ex: A9 - L"Creatures attack your militia in sector %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Creatures attack and kill %d civilians in sector %s.", - //%s is the sector location -- ex: A9: Omerta - L"Enemies attack your mercs in sector %s. None of your mercs are able to fight!", - //%s is the sector location -- ex: A9: Omerta - L"Creatures attack your mercs in sector %s. None of your mercs are able to fight!", - - // Flugente: militia movement forbidden due to limited roaming - L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", - L"War room isn't staffed - militia move aborted!", - - L"Robot", //STR_AR_ROBOT_NAME, - L"Tank", //STR_AR_TANK_NAME, - L"Jeep", //STR_AR_JEEP_NAME, - - L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"Day", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"Sector Found:", - L"Day Found:", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"Status:", - L"Weight:", - L"AP Costs", - L"Rng:", // Range - L"Dam:", // Damage - L"Amount:", // Number of bullets left in a magazine - L"AP:", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Accuracy:", //9 - L"Range:", //10 - L"Damage:", //11 - L"Weight:", //12 - L"Stun Damage:",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - // HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only) - // Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES... - L"Attachments:", //14 - L"AUTO/5:", //15 - L"Remaining ammo:", //16 - L"Default:", //17 //WarmSteel - So we can also display default attachments - L"Dirt:", // 18 //added by Flugente - L"Space:", // 19 //space left on Molle items - L"Spread Pattern:", // 20 - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", - L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", - L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", - L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", - L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", - L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", - L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", - L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", - L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"", //12 - L"APs to ready", - L"APs to fire Single", - L"APs to fire Burst", - L"APs to fire Auto", - L"APs to Reload", - L"APs to Reload Manually", - L"Burst Penalty (Lower is better)", //19 - L"Bipod Modifier", - L"Autofire shots per 5 AP", - L"Autofire Penalty (Lower is better)", - L"Burst/Auto Penalty (Lower is better)", //23 - L"APs to Throw", - L"APs to Launch", - L"APs to Stab", - L"No Single Shot!", - L"No Burst Mode!", - L"No Auto Mode!", - L"APs to Bash", - L"", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Item Size Modifier (Lower is better)", // 0 - L"Reliability Modifier", - L"Loudness Modifier (Lower is better)", - L"Hides Muzzle Flash", - L"Bipod Modifier", - L"Range Modifier", // 5 - L"To-Hit Modifier", - L"Best Laser Range", - L"Aiming Bonus Modifier", - L"Burst Size Modifier", - L"Burst Penalty Modifier (Higher is better)", // 10 - L"Auto-Fire Penalty Modifier (Higher is better)", - L"AP Modifier", - L"AP to Burst Modifier (Lower is better)", - L"AP to Auto-Fire Modifier (Lower is better)", - L"AP to Ready Modifier (Lower is better)", // 15 - L"AP to Reload Modifier (Lower is better)", - L"Magazine Size Modifier", - L"AP to Attack Modifier (Lower is better)", - L"Damage Modifier", - L"Melee Damage Modifier", // 20 - L"Woodland Camo", - L"Urban Camo", - L"Desert Camo", - L"Snow Camo", - L"Stealth Modifier", // 25 - L"Hearing Range Modifier", - L"Vision Range Modifier", - L"Day Vision Range Modifier", - L"Night Vision Range Modifier", - L"Bright Light Vision Range Modifier", //30 - L"Cave Vision Range Modifier", - L"Tunnel Vision Percentage (Lower is better)", - L"Minimum Range for Aiming Bonus", - L"Hold |C|t|r|l to compare items", // item compare help text - L"Equipment weight: %4.1f kg", // 35 -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"In ", - L"PERFECT", - L"EXCELLENT", - L"GOOD", - L"FAIR", - L"POOR", - L"BAD", - L"TERRIBLE", - L" condition." -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Amount", - L"Remaining:", //this is the overall balance - L"Amount", - L"To Split:", // the amount he wants to separate from the overall balance to get two piles of money - - L"Current", - L"Balance:", - L"Amount", - L"To Withdraw:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"DYING", // >= 0 - L"CRITICAL", // >= 15 - L"POOR", // >= 30 - L"WOUNDED", // >= 45 - L"HEALTHY", // >= 60 - L"STRONG", // >= 75 - L"EXCELLENT", // >= 90 - L"CAPTURED", // added by Flugente -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"$1000", - L"$100", - L"$10", - L"Done", - L"Separate", - L"Withdraw", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"Pros:", -}; - -CHAR16 gzConsLabel[10] = -{ - L"Cons:", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Come Again?", //meaning "Repeat yourself" - L"Friendly", //approach in a friendly - L"Direct", //approach directly - let's get down to business - L"Threaten", //approach threateningly - talk now, or I'll blow your face off - L"Give", - L"Recruit", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Buy/Sell", - L"Buy", - L"Sell", - L"Repair", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"Done", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"Eldorado", - L"Hummer", // a hummer jeep/truck -- military vehicle - L"Icecream Truck", - L"Jeep", - L"Tank", - L"Helicopter", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Eldor.", - L"Hummer", // the HMVV - L"Truck", - L"Jeep", - L"Tank", - L"Heli", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Eldorado", - L"Hummer", //a military jeep. This is a brand name. - L"Truck", // Ice cream truck - L"Jeep", - L"Tank", - L"Heli", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"You cannot shoot from this seat.", - L"You cannot swap those two seats in combat without exiting vehicle first.", -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Air Raid", - L"Apply first aid automatically?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s notices that items are missing from the shipment.", - - // The %s is a string from pDoorTrapStrings - - L"The lock has %s.", - L"There's no lock.", - L"Success!", - L"Failure.", - L"Success!", - L"Failure.", - L"The lock isn't trapped.", - L"Success!", - // The %s is a merc name - L"%s doesn't have the right key.", - L"The lock is untrapped.", - L"The lock isn't trapped.", - L"Locked.", - L"DOOR", - L"TRAPPED", - L"LOCKED", - L"UNLOCKED", - L"SMASHED", - L"There's a switch here. Activate it?", - L"Disarm trap?", - L"Prev...", - L"Next...", - L"More...", - - // In the next 2 strings, %s is an item name - - L"The %s has been placed on the ground.", - L"The %s has been given to %s.", - - // In the next 2 strings, %s is a name - - L"%s has been paid in full.", - L"%s is still owed %d.", - L"Choose detonation frequency:", //in this case, frequency refers to a radio signal - L"How many turns 'til she blows:", //how much time, in turns, until the bomb blows - L"Set remote detonator frequency:", //in this case, frequency refers to a radio signal - L"Disarm boobytrap?", - L"Remove blue flag?", - L"Put blue flag here?", - L"Ending Turn", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"You sure you want to attack %s ?", - L"Ah, vehicles can't change stance.", - L"The robot can't change its stance.", - - // In the next 3 strings, %s is a name - - L"%s can't change to that stance here.", - L"%s can't have first aid done here.", - L"%s doesn't need first aid.", - L"Can't move there.", - L"Your team's full. No room for a recruit.", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s has been recruited.", - - // Here %s is a name and %d is a number - - L"%s is owed $%d.", - - // In the next string, %s is a name - - L"Escort %s?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"Hire %s for %s per day?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"You want to fight?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"Buy %s for %s?", - - // In the next string, %s is a name - - L"%s is being escorted on squad %d.", - - // These messages are displayed during play to alert the player to a particular situation - - L"JAMMED", //weapon is jammed. - L"Robot needs %s caliber ammo.", //Robot is out of ammo - L"Throw there? Not gonna happen.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Stealth Mode (|Z)", - L"|Map Screen", - L"|Done (End Turn)", - L"Talk", - L"Mute", - L"Stance Up (|P|g|U|p)", - L"Cursor Level (|T|a|b)", - L"Climb / |Jump", - L"Stance Down (|P|g|D|n)", - L"Examine (|C|t|r|l)", - L"Previous Merc", - L"Next Merc (|S|p|a|c|e)", - L"|Options", - L"|Burst Mode", - L"|Look/Turn", - L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s", - L"Heh?", //this means "what?" - L"Cont", //an abbrieviation for "Continued" - L"Mute off for %s.", - L"Mute on for %s.", - L"Health: %d/%d\nFuel: %d/%d", - L"Exit Vehicle" , - L"Change Squad ( |S|h|i|f|t |S|p|a|c|e )", - L"Drive", - L"N/A", //this is an acronym for "Not Applicable." - L"Use ( Hand To Hand )", - L"Use ( Firearm )", - L"Use ( Blade )", - L"Use ( Explosive )", - L"Use ( Medkit )", - L"(Catch)", - L"(Reload)", - L"(Give)", - L"%s has been set off.", - L"%s has arrived.", - L"%s ran out of Action Points.", - L"%s isn't available.", - L"%s is all bandaged.", - L"%s is out of bandages.", - L"Enemy in sector!", - L"No enemies in sight.", - L"Not enough Action Points.", - L"Nobody's using the remote.", - L"Burst fire emptied the clip!", - L"SOLDIER", - L"CREPITUS", - L"MILITIA", - L"CIVILIAN", - L"ZOMBIE", - L"PRISONER", - L"Exiting Sector", - L"OK", - L"Cancel", - L"Selected Merc", - L"All Mercs in Squad", - L"Go to Sector", - L"Go to Map", - L"You can't leave the sector from this side.", - L"You can't leave in turn based mode.", - L"%s is too far away.", - L"Removing Treetops", - L"Showing Treetops", - L"CROW", //Crow, as in the large black bird - L"NECK", - L"HEAD", - L"TORSO", - L"LEGS", - L"Tell the Queen what she wants to know?", - L"Fingerprint ID aquired", - L"Invalid fingerprint ID. Weapon non-functional", - L"Target aquired", - L"Path Blocked", - L"Deposit/Withdraw Money", //Help text over the $ button on the Single Merc Panel - L"No one needs first aid.", - L"Jam.", // Short form of JAMMED, for small inv slots - L"Can't get there.", // used ( now ) for when we click on a cliff - L"Path is blocked. Do you want to switch places with this person?", - L"The person refuses to move.", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Do you agree to pay %s?", - L"Accept free medical treatment?", - L"Agree to marry %s?", //Daryl - L"Key Ring Panel", - L"You cannot do that with an EPC.", - L"Spare %s?", //Krott - L"Out of effective weapon range.", - L"Miner", - L"Vehicle can only travel between sectors", - L"Can't autobandage right now", - L"Path Blocked for %s", - L"Your mercs, who were captured by %s's army are imprisoned here!", //Deidranna - L"Lock hit", - L"Lock destroyed", - L"Somebody else is trying to use this door.", - L"Health: %d/%d\nFuel: %d/%d", - L"%s cannot see %s.", // Cannot see person trying to talk to - L"Attachment removed", - L"Can not gain another vehicle as you already have 2", - - // added by Flugente for defusing/setting up trap networks - L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", - L"Set defusing frequency:", - L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", - L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", - L"Select tripwire hierarchy (1 - 4) and network (A - D):", - - // added by Flugente to display food status - L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"What do you want to do?", - L"Fill canteens", - L"Clean guns (Merc)", - L"Clean guns (Team)", - L"Take off clothes", - L"Lose disguise", - L"Militia inspection", - L"Militia restock", - L"Test disguise", - L"unused", - - // added by Flugente: decide what to do with the corpses - L"What do you want to do with the body?", - L"Decapitate", - L"Gut", - L"Take Clothes", - L"Take Body", - - // Flugente: weapon cleaning - L"%s cleaned %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", - L"Field interrogation", - L"Where do you want to send the %d prisoners?", - L"Let them go", - L"What do you want to do?", - L"Demand surrender", - L"Offer surrender", - L"Distract", - L"Talk", - L"Recruit Turncoat", - - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Disarm trap", - L"Inspect trap", - L"Remove blue flag", - L"Blow up!", - L"Activate tripwire", - L"Deactivate tripwire", - L"Reveal tripwire", - L"No detonator or remote detonator found!", - L"This bomb is already armed!", - L"Safe", - L"Mostly safe", - L"Risky", - L"Dangerous", - L"High danger!", - - L"Mask", - L"NVG", - L"Item", - - L"This feature works only with New Inventory System", - L"No item in your main hand", - L"Nowhere to place item from main hand", - L"No defined item for this quick slot", - L"No free hand for new item", - L"Item not found", - L"Cannot take item to main hand", - - L"Attempting to bandage travelling mercs...", - - L"Improve gear", - L"%s changed %s for superior version", - L"%s picked up %s", - - L"%s has stopped chatting with %s", - L"Attempt to turn", -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"If checked, the adjacent sector will be immediately loaded.", - L"If checked, you will be placed automatically in the map screen\nas it will take time for your mercs to travel.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"This sector is enemy occupied and you can't leave mercs here.\nYou must deal with this situation before loading any other sectors.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"By moving your remaining mercs out of this sector,\nthe adjacent sector will immediately be loaded.", - L"By moving your remaining mercs out of this sector,\nyou will be placed automatically in the map screen\nas it will take time for your mercs to travel.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s needs to be escorted by your mercs and cannot leave this sector alone.", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s cannot leave this sector alone as he is escorting %s.", //male singular - L"%s cannot leave this sector alone as she is escorting %s.", //female singular - L"%s cannot leave this sector alone as he is escorting multiple characters.", //male plural - L"%s cannot leave this sector alone as she is escorting multiple characters.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"All of your mercs must be in the vicinity\nin order to allow the squad to traverse.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"If checked, %s will travel alone, and\nautomatically get reassigned to a unique squad.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"If checked, your currently selected\nsquad will travel, leaving this sector.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s is being escorted by your mercs and cannot leave this sector alone. Your other mercs must be nearby before you can leave.", -}; - - - -STR16 pRepairStrings[] = -{ - L"Items", // tell merc to repair items in inventory - L"SAM Site", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Cancel", // cancel this menu - L"Robot", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"lost", // the merc has lost a statistic - L"gained", // the merc has gained a statistic - L"point of", // singular - L"points of", // plural - L"level of", // singular - L"levels of", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"health.", - L"agility.", - L"dexterity.", - L"wisdom.", - L"medical skill.", - L"explosives skill.", - L"mechanical skill.", - L"marksmanship skill.", - L"experience.", - L"strength.", - L"leadership.", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"Total Distance: ", // total distance for helicopter to travel - L" Safe: ", // distance to travel to destination - L" Unsafe:", // distance to return from destination to airport - L"Total Cost: ", // total cost of trip by helicopter - L"ETA: ", // ETA is an acronym for "estimated time of arrival" - L"Helicopter is low on fuel and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Passengers: ", - L"Select Skyrider or the Arrivals Drop-off?", - L"Skyrider", - L"Arrivals", - L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Helicopter will now return straight to base, do you want to drop down passengers before?", - L"Remaining Fuel:", - L"Dist. To Refuel Site:", -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", - L"Helicopter is currently disassembled. Wait until repairs are finished.", - L"Repairs completed. Helicopter is available again.", - L"Helicopter is fully refueled.", - - L"Helicopter has exceeded maximum range!", -}; - -STR16 sMapLevelString[] = -{ - L"Sublevel:", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"Loyal", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"can't get travel orders underground.", -}; - -STR16 gsTimeStrings[] = -{ - L"h", // hours abbreviation - L"m", // minutes abbreviation - L"s", // seconds abbreviation - L"d", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"None", - L"Hospital", - L"Factory", - L"Prison", - L"Military", - L"Airport", - L"Shooting Range", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"Inventory", - L"Exit", - L"Repair", - L"Factories", -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"Size", // 0 // size of the town in sectors - L"", // blank line, required - L"Control", // how much of town is controlled - L"None", // none of this town - L"Associated Mine", // mine associated with this town - L"Loyalty", // 5 // the loyalty level of this town - L"Trained", // the forces in the town trained by the player - L"", - L"Main Facilities", // main facilities in this town - L"Level", // the training level of civilians in this town - L"Civilian Training", // 10 // state of civilian training in town - L"Militia", // the state of the trained civilians in the town - - // Flugente: prisoner texts - L"Prisoners", - L"%d (capacity %d)", - L"%d Admins", - L"%d Regulars", - L"%d Elites", - L"%d Officers", - L"%d Generals", - L"%d Civilians", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"Mine", // 0 - L"Silver", - L"Gold", - L"Daily Production", - L"Possible Production", - L"Abandoned", // 5 - L"Shut Down", - L"Running Out", - L"Producing", - L"Status", - L"Production Rate", - L"Resource", // 10 - L"Town Control", - L"Town Loyalty", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"Enemy Forces", - L"Sector", - L"# of Items", - L"Unknown", - - L"Controlled", - L"Yes", - L"No", - L"Status/Software status:", - - L"Additional Intel", -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s isn't close enough.", //Merc is in sector with item but not close enough - L"Can't select that merc.", //MARK CARTER - L"%s isn't in the sector to take that item.", - L"During combat, you'll have to pick up items manually.", - L"During combat, you'll have to drop items manually.", - L"%s isn't in the sector to drop that item.", - L"During combat, you can't reload with an ammo crate.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Location", // sector these items are in - L"Total Items", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"To change a merc's assignment to such things as another squad, doctor or repair, click within the 'Assign' column", - L"To give a merc a destination in another sector, click within the 'Dest' column", - L"Once a merc has been given a movement order, time compression allows them to get going.", - L"Left click selects the sector. Left click again to give a merc movement orders, or Right click to get sector summary information.", - L"Press 'h' at any time in this screen to get this help dialogue up.", - L"Test Text", - L"Test Text", - L"Test Text", - L"Test Text", - L"There isn't much you can do on this screen until you arrive in Arulco. When you've finalized your team, click on the Time Compression button at the lower right. This will advance time until your team arrives in Arulco.", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"Move Mercs In Sector", // title for movement box - L"Plot Travel Route", // done with movement menu, start plotting movement - L"Cancel", // cancel this menu - L"Other", // title for group of mercs not on squads nor in vehicles - L"Select all", // Select all squads -}; - - -STR16 pUpdateMercStrings[] = -{ - L"Oops:", // an error has occured - L"Mercs Contract Expired:", // this pop up came up due to a merc contract ending - L"Mercs Completed Assignment:", // this pop up....due to more than one merc finishing assignments - L"Mercs Back on the Job:", // this pop up ....due to more than one merc waking up and returing to work - L"Mercs Catching Some Z's:", // this pop up ....due to more than one merc being tired and going to sleep - L"Contracts Expiring Soon:", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Show To|wns", - L"Show |Mines", - L"Show |Teams & Enemies", - L"Show |Airspace", - L"Show |Items", - L"Show Militia & Enemies (|Z)", - L"Show |Disease Data", - L"Show Weathe|r", - L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Next (|.)", // next page - L"Previous (|,)", // previous page - L"Exit Sector Inventory (|E|s|c)", // exit sector inventory - L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button - L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge - L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items - L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo - L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button - L"Toggle Get Item Display", // Flugente: move item display - L"Save Gear Template", - L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"|Laptop", - L"Tactical (|E|s|c)", - L"|Options", - L"Time Compress (|+)\nRight Click to fast forward one hour", // time compress more - L"Time Compress (|-)", // time compress less - L"Previous Message (|U|p)\nPrevious Page (|P|g|U|p)", // previous message in scrollable list - L"Next Message (|D|o|w|n)\nNext Page (|P|g|D|n)", // next message in the scrollable list - L"Start/Stop Time (|S|p|a|c|e)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Current Balance", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s is dead.", -}; - - -STR16 pDayStrings[] = -{ - L"Day", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Enrico", - L"Psych Pro Inc", - L"Help Desk", - L"Psych Pro Inc", - L"Speck", - L"R.I.S.", //5 - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", //10 - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", //15 - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", //20 - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", //25 - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", //30 - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephen", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"M.I.S. Insurance", - L"Bobby Rays", - L"Kingpin", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"Previous", - L"Next", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"You have new mail...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"Delete mail?", - L"Delete UNREAD mail?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"From:", - L"Subject:", - L"Day:", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"Mail Box", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Bookkeeper Plus", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Credit:", // credit (subtract from) to player's account - L"Debit:", // debit (add to) to player's account - L"Yesterday's Actual Income:", - L"Yesterday's Other Deposits:", - L"Yesterday's Debits:", - L"Balance At Day's End:", - L"Today's Actual Income:", - L"Today's Other Deposits:", - L"Today's Debits:", - L"Current Balance:", - L"Forecasted Income:", - L"Projected Balance:", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"Day", // the day column - L"Credit", // the credits column (to ADD money to your account) - L"Debit", // the debits column (to SUBTRACT money from your account) - L"Transaction", // transaction type - see TransactionText below - L"Balance", // balance at this point in time - L"Page", // page number - L"Day(s)", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"Accrued Interest", // interest the player has accumulated so far - L"Anonymous Deposit", - L"Transaction Fee", - L"Hired", // Merc was hired - L"Bobby Ray Purchase", // Bobby Ray is the name of an arms dealer - L"Settled Accounts at M.E.R.C.", - L"Medical Deposit for %s", // medical deposit for merc - L"IMP Profile Analysis", // IMP is the acronym for International Mercenary Profiling - L"Purchased Insurance for %s", - L"Reduced Insurance for %s", - L"Extended Insurance for %s", // johnny contract extended - L"Canceled Insurance for %s", - L"Insurance Claim for %s", // insurance claim for merc - L"a day", // merc's contract extended for a day - L"1 week", // merc's contract extended for a week - L"2 weeks", // ... for 2 weeks - L"Mine income", - L"", //String nuked - L"Purchased Flowers", - L"Full Medical Refund for %s", - L"Partial Medical Refund for %s", - L"No Medical Refund for %s", - L"Payment to %s", // %s is the name of the npc being paid - L"Transfer Funds to %s", // transfer funds to a merc - L"Transfer Funds from %s", // transfer funds from a merc - L"Equip militia in %s", // initial cost to equip a town's militia - L"Purchased items from %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s deposited money.", - L"Sold Item(s) to the Locals", - L"Facility Use", // HEADROCK HAM 3.6 - L"Militia upkeep", // HEADROCK HAM 3.6 - L"Ransom for released prisoners", // Flugente: prisoner system - L"WHO data subscription", // Flugente: disease - L"Payment to Kerberus", // Flugente: PMC - L"SAM site repair", // Flugente: SAM repair - L"Trained workers", // Flugente: train workers - L"Drill militia in %s", // Flugente: drill militia - L"Mini event", // rftr: mini events - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Insurance for", // insurance for a merc - L"Ext. %s's contract by one day.", // entend mercs contract by a day - L"Ext. %s contract by 1 week.", - L"Ext. %s contract by 2 weeks.", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"Skyrider was paid $%d", // skyrider was paid an amount of money - L"Skyrider is still owed $%d", // skyrider is still owed an amount of money - L"Skyrider has finished refueling", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider is ready to fly once more.", // Skyrider was grounded but has been freed - L"Skyrider has no passengers. If it is your intention to transport mercs in this sector, assign them to Vehicle/Helicopter first.", -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"Great", - L"Good", - L"Stable", - L"Poor", - L"Panic", - L"Bad", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"%s's equipment is now available in Omerta (A9).", - L"%s's equipment is now available in Drassen (B13).", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"Health", - L"Energy", - L"Morale", - L"Condition", // the condition of the current vehicle (its "health") - L"Fuel", // the fuel level of the current vehicle (its "energy") - L"Poison", // for display of poisoning - L"Water", // drink level - L"Food", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Previous Merc (|L|e|f|t)", // previous merc in the list - L"Next Merc (|R|i|g|h|t)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"ETA:", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"You'll never see it again. You sure?", // do you want to continue and lose the item forever - L"This item looks REALLY important. Are you REALLY REALLY sure you want to trash it?", // does the user REALLY want to trash this item -}; - - -STR16 pMapErrorString[] = -{ - L"Squad can't move with a sleeping merc on it.", - -//1-5 - L"Move the squad above ground first.", - L"Movement orders? It's a hostile sector!", - L"Mercs must be assigned to a squad or vehicle in order to travel.", - L"You don't have any team members yet.", // you have no members, can't do anything - L"Merc can't comply.", // merc can't comply with your order -//6-10 - L"needs an escort to move. Place him on a squad with one.", // merc can't move unescorted .. for a male - L"needs an escort to move. Place her on a squad with one.", // for a female - L"Merc hasn't yet arrived in %s!", - L"Looks like there's some contract negotiations to settle first.", - L"Cannot give a movement order. Air raid is going on.", -//11-15 - L"Movement orders? There's a battle going on!", - L"You have been ambushed by bloodcats in sector %s!", - L"You have just entered what appears to be a bloodcat lair in sector %s!", // HEADROCK HAM 3.6: Added argument. - L"", - L"The SAM site in %s has been taken over.", -//16-20 - L"The mine in %s has been taken over. Your daily income has been reduced to %s per day.", - L"The enemy has taken over sector %s uncontested.", - L"At least one of your mercs could not be put on this assignment.", - L"%s could not join %s as it is already full", - L"%s could not join %s as it is too far away.", -//21-25 - L"The mine in %s has been captured by enemy forces!", - L"Enemy forces have just invaded the SAM site in %s", - L"Enemy forces have just invaded %s", - L"Enemy forces have just been spotted in %s.", - L"Enemy forces have just taken over %s.", -//26-30 - L"At least one of your mercs is not tired.", - L"At least one of your mercs could not be woken up.", - L"Militia will not appear until they have finished training.", - L"%s cannot be given movement orders at this time.", - L"Militia that are not within town boundaries cannot be moved to another sector.", -//31-35 - L"You can't have militia in %s.", - L"A vehicle can't move while empty!", - L"%s is too injured to travel!", - L"You must leave the museum first!", - L"%s is dead!", -//36-40 - L"%s can't switch to %s because it's moving", - L"%s can't enter the vehicle that way", - L"%s can't join %s", - L"You can't compress time until you hire some new mercs!", - L"This vehicle can only travel along roads!", -//41-45 - L"You can't reassign mercs who are on the move", - L"Vehicle is out of gas!", - L"%s is too tired to travel.", - L"Nobody aboard is able to drive the vehicle.", - L"One or more members of this squad can't move right now.", -//46-50 - L"One or more of the OTHER mercs can't move right now.", - L"Vehicle is too damaged!", - L"Note that only two mercs may train militia in each sector.", - L"The robot can't move without its controller. Place them together in the same squad.", - L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", -// 51-55 - L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Click again on the destination to confirm your final route, or click on another sector to place more waypoints.", - L"Travel route confirmed.", - L"Destination unchanged.", - L"Travel route canceled.", - L"Travel route shortened.", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Click on the sector where you would like the mercs to arrive instead.", - L"OK. Arriving mercs will be dropped off in %s", - L"Mercs can't be flown there, the airspace isn't secured!", - L"Canceled. Arrival sector unchanged", - L"Airspace over %s is no longer secure! Arrival sector was moved to %s.", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Enter Inventory (|E|n|t|e|r)", - L"Throw Item Away", - L"Exit Inventory (|E|n|t|e|r)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"Have %s leave his equipment where he is now (%s) or later on in (%s) upon catching flight?", - L"%s is about to leave and will drop off his equipment in (%s).", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"Have %s leave her equipment where she is now (%s) or later on in (%s) upon catching flight?", - L"%s is about to leave and will drop off her equipment in (%s).", -}; - - -STR16 pMercContractOverStrings[] = -{ - L"'s contract ended, so he's gone home.", // merc's contract is over and has departed - L"'s contract ended, so she's gone home.", // merc's contract is over and has departed - L"'s contract was terminated, so he left.", // merc's contract has been terminated - L"'s contract was terminated, so she left.", // merc's contract has been terminated - L"You owe M.E.R.C. too much cash, so %s took off.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages - -// WDS: Allow flexible numbers of IMPs of each sex -// note: I only updated the English text to remove "three" below -STR16 pImpPopUpStrings[] = -{ - L"Invalid authorization code", - L"You are about to restart the entire profiling process. Are you certain?", - L"Please enter a valid full name and gender", - L"Preliminary analysis of your financial status shows that you cannot afford a profile analysis.", - L"Not a valid option at this time.", - L"To complete an accurate profile, you must have room for at least one team member.", - L"Profile already completed.", - L"Cannot load I.M.P. character from disk.", - L"You have already reached the maximum number of I.M.P. characters.", - L"You have already the maximum number of I.M.P characters with that gender on your team.", - L"You cannot afford the I.M.P character.", // 10 - L"The new I.M.P character has joined your team.", - L"You have already selected the maximum number of traits.", - L"No voicesets found.", -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"About Us", // about the IMP site - L"BEGIN", // begin profiling - L"Skills", // personality section - L"Attributes", // personal stats/attributes section - L"Appearance", // changed from portrait - L"Voice %d", // the voice selection - L"Done", // done profiling - L"Start Over", // start over profiling - L"Yes, I choose the highlighted answer.", - L"Yes", - L"No", - L"Finished", // finished answering questions - L"Prev", // previous question..abbreviated form - L"Next", // next question - L"YES, I AM.", // yes, I am certain - L"NO, I WANT TO START OVER.", // no, I want to start over the profiling process - L"YES, I DO.", - L"NO", - L"Back", // back one page - L"Cancel", // cancel selection - L"Yes, I am certain.", - L"No, let me have another look.", - L"Registry", // the IMP site registry..when name and gender is selected - L"Analyzing", // analyzing your profile results - L"OK", - L"Character", // Change from "Voice" - L"None", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"With your character traits chosen, it is time to select your skills.", - L"To complete the process, select your attributes.", - L"To commence actual profiling, select portrait, voice and colors.", - L"Now that you have completed your appearence choice, proceed to character analysis.", -}; - -STR16 pFilesTitle[] = -{ - L"File Viewer", -}; - -STR16 pFilesSenderList[] = -{ - L"Recon Report", // the recon report sent to the player. Recon is an abbreviation for reconissance - L"Intercept #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"Intercept #2", // second intercept file - L"Intercept #3", // third intercept file - L"Intercept #4", // fourth intercept file - L"Intercept #5", // fifth intercept file - L"Intercept #6", // sixth intercept file -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"History Log", -}; - -STR16 pHistoryHeaders[] = -{ - L"Day", // the day the history event occurred - L"Page", // the current page in the history report we are in - L"Day", // the days the history report occurs over - L"Location", // location (in sector) the event occurred - L"Event", // the event label -}; - -// Externalized to "TableData\History.xml" -/* -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"%s was hired from A.I.M.", // merc was hired from the aim site - L"%s was hired from M.E.R.C.", // merc was hired from the aim site - L"%s died.", // merc was killed - L"Settled Accounts at M.E.R.C.", // paid outstanding bills at MERC - L"Accepted Assignment From Enrico Chivaldori", - //6-10 - L"IMP Profile Generated", - L"Purchased Insurance Contract for %s.", // insurance contract purchased - L"Canceled Insurance Contract for %s.", // insurance contract canceled - L"Insurance Claim Payout for %s.", // insurance claim payout for merc - L"Extended %s's contract by a day.", // Extented "mercs name"'s for a day - //11-15 - L"Extended %s's contract by 1 week.", // Extented "mercs name"'s for a week - L"Extended %s's contract by 2 weeks.", // Extented "mercs name"'s 2 weeks - L"%s was dismissed.", // "merc's name" was dismissed. - L"%s quit.", // "merc's name" quit. - L"quest started.", // a particular quest started - //16-20 - L"quest completed.", - L"Talked to head miner of %s", // talked to head miner of town - L"Liberated %s", - L"Cheat Used", - L"Food should be in Omerta by tomorrow", - //21-25 - L"%s left team to become Daryl Hick's wife", - L"%s's contract expired.", - L"%s was recruited.", - L"Enrico complained about lack of progress", - L"Battle won", - //26-30 - L"%s mine started running out of ore", - L"%s mine ran out of ore", - L"%s mine was shut down", - L"%s mine was reopened", - L"Found out about a prison called Tixa.", - //31-35 - L"Heard about a secret weapons plant called Orta.", - L"Scientist in Orta donated a slew of rocket rifles.", - L"Queen Deidranna has a use for dead bodies.", - L"Frank talked about fighting matches in San Mona.", - L"A patient thinks he saw something in the mines.", - //36-40 - L"Met someone named Devin - he sells explosives.", - L"Ran into the famous ex-AIM merc Mike!", - L"Met Tony - he deals in arms.", - L"Got a rocket rifle from Sergeant Krott.", - L"Gave Kyle the deed to Angel's leather shop.", - //41-45 - L"Madlab offered to build a robot.", - L"Gabby can make stealth concoction for bugs.", - L"Keith is out of business.", - L"Howard provided cyanide to Queen Deidranna.", - L"Met Keith - all purpose dealer in Cambria.", - //46-50 - L"Met Howard - deals pharmaceuticals in Balime", - L"Met Perko - runs a small repair business.", - L"Met Sam of Balime - runs a hardware shop.", - L"Franz deals in electronics and other goods.", - L"Arnold runs a repair shop in Grumm.", - //51-55 - L"Fredo repairs electronics in Grumm.", - L"Received donation from rich guy in Balime.", - L"Met a junkyard dealer named Jake.", - L"Some bum gave us an electronic keycard.", - L"Bribed Walter to unlock the door to the basement.", - //56-60 - L"If Dave has gas, he'll provide free fillups.", - L"Greased Pablo's palms.", - L"Kingpin keeps money in San Mona mine.", - L"%s won Extreme Fighting match", - L"%s lost Extreme Fighting match", - //61-65 - L"%s was disqualified in Extreme Fighting", - L"Found a lot of money stashed in the abandoned mine.", - L"Encountered assassin sent by Kingpin.", - L"Lost control of sector", //ENEMY_INVASION_CODE - L"Defended sector", - //66-70 - L"Lost battle", //ENEMY_ENCOUNTER_CODE - L"Fatal ambush", //ENEMY_AMBUSH_CODE - L"Wiped out enemy ambush", - L"Unsuccessful attack", //ENTERING_ENEMY_SECTOR_CODE - L"Successful attack!", - //71-75 - L"Creatures attacked", //CREATURE_ATTACK_CODE - L"Killed by bloodcats", //BLOODCAT_AMBUSH_CODE - L"Slaughtered bloodcats", - L"%s was killed", - L"Gave Carmen a terrorist's head", - //76-80 - L"Slay left", - L"Killed %s", - L"Met Waldo - aircraft mechanic.", - L"Helicopter repairs started. Estimated time: %d hour(s).", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"N/A", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"E-mail", - L"Web", - L"Financial", - L"Personnel", - L"History", - L"Files", - L"Shut Down", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"A.I.M.", - L"Bobby Ray's", - L"I.M.P", - L"M.E.R.C.", - L"Mortuary", - L"Florist", - L"Insurance", - L"Cancel", - L"Encyclopedia", - L"Briefing Room", - L"Campaign History", - L"MeLoDY", - L"WHO", - L"Kerberus", - L"Militia Overview", - L"R.I.S.", - L"Factories", - L"A.R.C.", -}; - -STR16 pBookmarkTitle[] = -{ - L"Bookmarks", - L"Right click to access this menu in the future.", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"Downloading", - L"Reloading", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Take", // take money from merc - L"Give", // give money to merc - L"Cancel", // cancel transaction - L"Clear", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Stats", // view stats of the merc - L"More Stats", - L"Employment", - L"Inventory", // view the inventory of the merc -}; - -STR16 sATMText[ ]= -{ - L"Transfer Funds?", // transfer funds to merc? - L"Ok?", // are we certain? - L"Enter Amount", // enter the amount you want to transfer to merc - L"Select Type", // select the type of transfer to merc - L"Insufficient Funds", // not enough money to transfer to merc - L"Amount must be a multiple of $10", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"Error", - L"Server does not have DNS entry.", - L"Check URL address and try again.", - L"OK", - L"Intermittent Connection to Host. Expect longer transfer times.", -}; - - -STR16 pPersonnelString[] = -{ - L"Mercs:", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"A.I.M.", - L"A.I.M. Members", - L"A.I.M. Mug Shots", // a mug shot is another name for a portrait - L"A.I.M. Sort", - L"A.I.M.", - L"A.I.M. Alumni", - L"A.I.M. Policies", - L"A.I.M. History", - L"A.I.M. Links", - L"M.E.R.C.", - L"M.E.R.C. Accounts", - L"M.E.R.C. Registration", - L"M.E.R.C. Index", - L"Bobby Ray's", - L"Bobby Ray's - Guns", - L"Bobby Ray's - Ammo", - L"Bobby Ray's - Armor", - L"Bobby Ray's - Misc", //misc is an abbreviation for miscellaneous - L"Bobby Ray's - Used", - L"Bobby Ray's - Mail Order", - L"I.M.P.", - L"I.M.P.", - L"United Floral Service", - L"United Floral Service - Gallery", - L"United Floral Service - Order Form", - L"United Floral Service - Card Gallery", - L"Malleus, Incus & Stapes Insurance Brokers", - L"Information", - L"Contract", - L"Comments", - L"McGillicutty's Mortuary", - L"", //LAPTOP_MODE_SIRTECH - L"URL not found.", - L"%s Press Council - Conflict Summary", - L"%s Press Council - Battle Reports", - L"%s Press Council - Latest News", - L"%s Press Council - About us", - L"Mercs Love or Dislike You - About us", - L"Mercs Love or Dislike You - Analyze a team", - L"Mercs Love or Dislike You - Pairwise comparison", - L"Mercs Love or Dislike You - Personality", - L"WHO - About WHO", - L"WHO - Disease in Arulco", - L"WHO - Helpful Tips", - L"Kerberus - About Us", - L"Kerberus - Hire a Team", - L"Kerberus - Individual Contracts", - L"Militia Overview", - L"Recon Intelligence Services - Information Requests", - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Factory Overview", - L"Bobby Ray's - Recent Shipments", - L"Encyclopedia", - L"Encyclopedia - Data", - L"Briefing Room", - L"Briefing Room - Data", - L"", //LAPTOP_MODE_BRIEFING_ROOM_ENTER - L"", //LAPTOP_MODE_AIM_MEMBERS_ARCHIVES_NEW - L"A.R.C.", -}; - -STR16 pShowBookmarkString[] = -{ - L"Sir-Help", - L"Click Web Again for Bookmarks.", -}; - -STR16 pLaptopTitles[] = -{ - L"Mail Box", - L"File Viewer", - L"Personnel", - L"Bookkeeper Plus", - L"History Log", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"Killed in Action", - L"Dismissed", - L"Other", - L"Married", - L"Contract Expired", - L"Quit", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"Current Team", - L"Departures", - L"Daily Cost:", - L"Highest Cost:", - L"Lowest Cost:", - L"Killed in Action:", - L"Dismissed:", - L"Other:", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Lowest", - L"Average", - L"Highest", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"HLTH", - L"AGI", - L"DEX", - L"STR", - L"LDR", - L"WIS", - L"LVL", - L"MRKM", - L"MECH", - L"EXPL", - L"MED", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"Contract", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"Continue", - L"Stop", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"You have been defeated in this sector!", - L"The enemy, having no mercy for the team's soul, devours each and every one of you!", - L"Your unconscious team members have been captured!", - L"Your team members have been taken prisoner by the enemy.", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"Previous", - L"Next", - L"Accept", - L"Clear", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"Previous", - L"Next", -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Authorize", - L"Home", - L"Account #:", - L"Merc", - L"Days", - L"Rate", //5 - L"Charge", - L"Total:", - L"Are you sure you want to authorize the payment of %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+gear)", -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Previous", - L"Next", -}; - - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"Health", - L"Agility", - L"Dexterity", - L"Strength", - L"Leadership", - L"Wisdom", - L"Experience Lvl", - L"Marksmanship", - L"Mechanical", - L"Explosive", - L"Medical", - - L"Previous", - L"Hire", - L"Next", - L"Additional Info", - L"Home", - L"Hired", - L"Salary:", - L"per Day", - L"Gear:", - L"Total:", - L"Deceased", - - L"You have a full team of mercs already.", - L"Buy Equipment?", - L"Unavailable", - L"Unsettled Bills", - L"Bio", - L"Inv", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Open Account", - L"Cancel", - L"You have no account. Would you like to open one?", -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Speck T. Kline, founder and owner", - L"To open an account press here", - L"To view account press here", - L"To view files press here", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Transfer failed. No funds available.", -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"McGillicutty's Mortuary: Helping families grieve since 1983.", - L"Funeral Director and former A.I.M. mercenary Murray \"Pops\" McGillicutty is a highly skilled and experienced mortician.", - L"Having been intimately involved in death and bereavement throughout his life, Pops knows how difficult it can be.", - L"McGillicutty's Mortuary offers a wide range of bereavement services, from a shoulder to cry on to post-mortem reconstruction for badly disfigured remains.", - L"Let McGillicutty's Mortuary help you and your loved one rest in peace.", - - // Text for the various links available at the bottom of the page - L"SEND FLOWERS", - L"CASKET & URN COLLECTION", - L"CREMATION SERVICES", - L"PRE- FUNERAL PLANNING SERVICES", - L"FUNERAL ETIQUETTE", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"Regretably, the remainder of this site has not been completed due to a death in the family. Pending reading of the will and disbursement of assets, the site will be completed as soon as possible.", - L"Our sympathies do, however, go out to you at this trying time. Please come again.", -}; - -// Text for the florist Home page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Gallery", - - //Address of United Florist - - L"\"We air-drop anywhere\"", - L"1-555-SCENT-ME", - L"333 NoseGay Dr, Seedy City, CA USA 90210", - L"http://www.scent-me.com", - - // detail of the florist page - - L"We're fast and efficient!", - L"Next day delivery to most areas worldwide, guaranteed. Some restrictions apply.", - L"Lowest prices in the world, guaranteed!", - L"Show us a lower advertised price for any arrangements, and receive a dozen roses, absolutely free.", - L"Flying Flora, Fauna & Flowers Since 1981.", - L"Our decorated ex-bomber aviators will air-drop your bouquet within a ten mile radius of the requested location. Anytime - Everytime!", - L"Let us satisfy your floral fantasy.", - L"Let Bruce, our world-renowned floral designer, hand-pick the freshest, highest quality flowers from our very own greenhouse.", - L"And remember, if we don't have it, we can grow it - Fast!", -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"Back", - L"Send", - L"Clear", - L"Gallery", - - L"Name of Bouquet:", - L"Price:", //5 - L"Order Number:", - L"Delivery Date", - L"next day", - L"gets there when it gets there", - L"Delivery Location", //10 - L"Additional Services", - L"Crushed Bouquet($10)", - L"Black Roses($20)", - L"Wilted Bouquet($10)", - L"Fruit Cake (if available)($10)", //15 - L"Personal Sentiments:", - L"Due to the size of gift cards, your message can be no longer than 75 characters.", - L"...or select from one of our", - - L"STANDARDIZED CARDS", - L"Billing Information",//20 - - //The text that goes beside the area where the user can enter their name - - L"Name:", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"Prev", //abbreviation for previous - L"Next", //abbreviation for next - - L"Click on the selection you want to order.", - L"Please Note: there is an additional $10 fee for all wilted or crushed bouquets.", - - //text on the button - - L"Home", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"Click on your selection", - L"Back", -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"Order Form", //Title of the page - L"Qty", // The number of items ordered - L"Weight (%s)", // The weight of the item - L"Item Name", // The name of the item - L"Unit Price", // the item's weight - L"Total", //5 // The total price of all of items of the same type - L"Sub-Total", // The sub total of all the item totals added - L"S&H (See Delivery Loc.)", // S&H is an acronym for Shipping and Handling - L"Grand Total", // The grand total of all item totals + the shipping and handling - L"Delivery Location", - L"Shipping Speed", //10 // See below - L"Cost (per %s.)", // The cost to ship the items - L"Overnight Express", // Gets deliverd the next day - L"2 Business Days", // Gets delivered in 2 days - L"Standard Service", // Gets delivered in 3 days - L"Clear Order",//15 // Clears the order page - L"Accept Order", // Accept the order - L"Back", // text on the button that returns to the previous page - L"Home", // Text on the button that returns to the home page - L"* Denotes Used Items", // Disclaimer stating that the item is used - L"You can't afford to pay for this.", //20 // A popup message that to warn of not enough money - L"", // Gets displayed when there is no valid city selected - L"Are you sure you want to send this order to %s?", // A popup that asks if the city selected is the correct one - L"Package Weight**", // Displays the weight of the package - L"** Min. Wt.", // Disclaimer states that there is a minimum weight for the package - L"Shipments", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"Pistol", - L"M. Pistol", - L"SMG", - L"Rifle", - L"SN Rifle", - L"AS Rifle", - L"MG", - L"Shotgun", - L"Heavy W.", - - // Ammo - L"Pistol", - L"M. Pistol", - L"SMG", - L"Rifle", - L"SN Rifle", - L"AS Rifle", - L"MG", - L"Shotgun", - - // Used - L"Guns", - L"Armor", - L"LBE Gear", - L"Misc", - - // Armour - L"Helmets", - L"Vests", - L"Leggings", - L"Plates", - - // Misc - L"Blades", - L"Th. Knives", - L"Blunt W.", - L"Grenades", - L"Bombs", - L"Med. Kits", - L"Kits", - L"Face Items", - L"LBE Gear", - L"Optics", // Madd: new BR filters - L"Grip/LAM", - L"Muzzle", - L"Stock", - L"Mag/Trig.", - L"Other Att.", - L"Misc.", -}; - - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"To Order", // Title - // instructions on how to order - L"Click on the item(s). For more than one, keep on clicking. Right click for less. Once you've selected all you'd like to buy, go on to the order form.", - - //Text on the buttons to go the various links - - L"Previous Items", // - L"Guns", //3 - L"Ammo", //4 - L"Armor", //5 - L"Misc.", //6 //misc is an abbreviation for miscellaneous - L"Used", //7 - L"More Items", - L"ORDER FORM", - L"Home", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"Your team has",//11 - L"weapon(s) that use this type of ammo", //12 - - //The following lines provide information on the items - - L"Weight:", // Weight of all the items of the same type - L"Cal:", // the caliber of the gun - L"Size:", // number of rounds of ammo the Magazine can hold - L"Rng:", // The range of the gun - L"Dam:", // Damage of the weapon - L"ROF:", // Weapon's Rate Of Fire, acronym ROF - L"AP:", // Weapon's Action Points, acronym AP - L"Stun:", // Weapon's Stun Damage - L"Protect:", // Armour's Protection - L"Camo:", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Cost:", // Cost of the item - L"In stock:", // The number of items still in the store's inventory - L"Qty on Order:", // The number of items on order - L"Damaged", // If the item is damaged - L"Weight:", // the Weight of the item - L"SubTotal:", // The total cost of all items on order - L"* %% Functional", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"Darn! This on-line order form will only accept " ,//First part - L" items per order. If you're looking to order more stuff (and we hope you are), kindly make a separate order and accept our apologies.", //Second part - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Sorry. We don't have any more of that in stock right now. Please try again later.", - - //A popup that tells the user that the store is temporarily sold out - - L"Sorry, but we are currently out of stock on all items of that type.", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"This is the place to be for the newest and hottest in weaponry and military supplies", - L"We can find the perfect solution for all your explosives needs", - L"Used and refitted items", - - //Text for the various links to the sub pages - - L"Miscellaneous", - L"GUNS", - L"AMMUNITION", //5 - L"ARMOR", - - //Details on the web site - - L"If we don't sell it, you can't get it!", - L"Under Construction", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"A.I.M. Members", // Title - // Title for the way to sort - L"Sort By:", - - // sort by... - - L"Price", - L"Experience", - L"Marksmanship", - L"Mechanical", - L"Explosives", - L"Medical", - L"Health", - L"Agility", - L"Dexterity", - L"Strength", - L"Leadership", - L"Wisdom", - L"Name", - - //Text of the links to other AIM pages - - L"View the mercenary mug shot index", - L"Review the individual mercenary's file", - L"Browse the A.I.M. Alumni Gallery", - - // text to display how the entries will be sorted - - L"Ascending", - L"Descending", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Previous Page", - L"AIM HomePage", - L"Policy Index", - L"Next Page", - L"Disagree", - L"Agree", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"Left Click", - L"to Contact Merc.", - L"Right Click", - L"for Mug Shot Index.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Health", - L"Agility", - L"Dexterity", - L"Strength", - L"Leadership", - L"Wisdom", - L"Experience Lvl", - L"Marksmanship", - L"Mechanical", - L"Explosive", - L"Medical", //10 - - // the contract expenses' area - - L"Fee", - L"Contract", - L"one day", - L"one week", - L"two weeks", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"Previous", - L"Contact", - L"Next", - - L"Additional Info", // Title for the additional info for the merc's bio - L"Active Members", //20 // Title of the page - L"Optional Gear:", // Displays the optional gear cost - L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's - L"MEDICAL deposit required", // If the merc required a medical deposit, this is displayed - L"Kit 1", // Text on Starting Gear Selection Button 1 - L"Kit 2", // Text on Starting Gear Selection Button 2 - L"Kit 3", // Text on Starting Gear Selection Button 3 - L"Kit 4", // Text on Starting Gear Selection Button 4 - L"Kit 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"Contract Charge:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"One Day", - L"One Week", - L"Two Weeks", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"No Equipment", - L"Buy Equipment", - - // Text on the Buttons - - L"TRANSFER FUNDS", // to actually hire the merc - L"CANCEL", // go back to the previous menu - L"HIRE", // go to menu in which you can hire the merc - L"HANG UP", // stops talking with the merc - L"OK", - L"LEAVE MESSAGE", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Video Conferencing with", - L"Connecting. . .", - - L"with medical" // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"ELECTRONIC FUNDS TRANSFER SUCCESSFUL", // You hired the merc - L"UNABLE TO PROCESS TRANSFER", // Player doesn't have enough money, message 1 - L"INSUFFICIENT FUNDS", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"On Assignment", - L"Please Leave Message", - L"Deceased", - - //If you try to hire more mercs than game can support - - L"You have a full team of mercs already.", - - L"Pre-recorded message", - L"Message recorded", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"A.I.M. Links", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"A.I.M. History", //Title - - // Text on the buttons at the bottom of the page - - L"Previous Page", - L"Home", - L"A.I.M. Alumni", - L"Next Page", -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Price", - L"Experience", - L"Marksmanship", - L"Mechanical", - L"Explosives", - L"Medical", - L"Health", - L"Agility", - L"Dexterity", - L"Strength", - L"Leadership", - L"Wisdom", - L"Name", - - // The title of the page, the above text gets added at the end of this text - - L"A.I.M. Members Sorted Ascending By %s", - L"A.I.M. Members Sorted Descending By %s", - - // Instructions to the players on what to do - - L"Left Click", - L"To Select Merc", //10 - L"Right Click", - L"For Sorting Options", - - // Gets displayed on top of the merc's portrait if they are... - - L"Away", - L"Deceased", //14 - L"On Assign", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"PAGE 1", - L"PAGE 2", - L"PAGE 3", - - L"A.I.M. Alumni", // Title of the page - - L"DONE", // Stops displaying information on selected merc - L"Next page", -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"A.I.M. and the A.I.M. logo are registered trademarks in most countries.", - L"So don't even think of trying to copy us.", - L"Copyright 2005 A.I.M., Ltd. All rights reserved.", //1.13 modified to 2005 - - //Text for an advertisement that gets displayed on the AIM page - - L"United Floral Service", - L"\"We air-drop anywhere\"", //10 - L"Do it right", - L"... the first time", - L"Guns and stuff, if we dont have it, you dont need it.", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"Home", - L"Members", - L"Alumni", - L"Policies", - L"History", - L"Links", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"MERCHANDISE IN STOCK", //Header for the merchandise available - L"PAGE", //The current store inventory page being displayed - L"TOTAL COST", //The total cost of the the items in the Dealer inventory area - L"TOTAL VALUE", //The total value of items player wishes to sell - L"EVALUATE", //Button text for dealer to evaluate items the player wants to sell - L"TRANSACTION", //Button text which completes the deal. Makes the transaction. - L"DONE", //Text for the button which will leave the shopkeeper interface. - L"REPAIR COST", //The amount the dealer will charge to repair the merc's goods - L"1 HOUR", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d HOURS", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"REPAIRED", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"There is not enough room in your offer area.", //Message box that tells the user there is no more room to put there stuff - L"%d MINUTES", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Drop Item To Ground.", - L"BUDGET", -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Take", // Take money from the player - L"Give", // Give money to the player - L"Cancel", // Cancel the transfer - L"Clear", // Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"Select Type", // tells the user to select either to give or take from the merc - L"Enter Amount", // Enter the amount to transfer - L"Transfer Funds To Merc", // Giving money to the merc - L"Transfer Funds From Merc", // Taking money from the merc - L"Insufficient Funds", // Not enough money to transfer - L"Balance", // Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"Do you want to deduct %s from your main account to cover the difference?", - L"Not enough funds. You're short %s", - L"Do you want to deduct %s from your main account to cover the cost?", - L"Ask the dealer to start the transaction", - L"Ask the dealer to repair the selected items", - L"End conversation", - L"Current Balance", - - L"Do you want to transfer %s Intel to cover the difference?", - L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"Save Game", - L"Load Game", - L"Quit", - L"Next", - L"Prev", - L"Done", - L"1.13 Features", - L"New in 1.13", - L"Options", - - //Text above the slider bars - L"Effects", - L"Speech", - L"Music", - - //Confirmation pop when the user selects.. - L"Quit game and return to the main menu?", - - L"You need either the Speech option, or the Subtitle option to be enabled.", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Save Game", - L"Load Game", - L"Cancel", - L"Save Selected", - L"Load Selected", - - L"Saved the game successfully", - L"ERROR saving the game!", - L"Loaded the game successfully", - L"ERROR loading the game!", - - L"The game version in the saved game file is different than the current version. It is most likely safe to continue. Continue?", - - L"The saved game files may be invalidated. Do you want them all deleted?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Save version has changed. Please report if there any problems. Continue?", -#else - L"Attempting to load an older version save. Automatically update and load the save?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Save version and game version have changed. Please report if there are any problems. Continue?", -#else - L"Attempting to load an older version save. Automatically update and load the save?", -#endif - - L"Are you sure you want to overwrite the saved game in slot #%d?", - L"Do you want to load the game from slot #", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"You are running low on disk space. You only have %d Megs free and Jagged should have at least %d Megs free.", - - L"Saving", //When saving a game, a message box with this string appears on the screen - - L"Normal Guns", - L"Tons of Guns", - L"Realistic style", - L"Sci Fi style", - - L"Difficulty", - L"Platinum Mode", //Placeholder English - - L"Bobby Ray Quality", - L"Normal", - L"Great", - L"Excellent", - L"Awesome", - - L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", - L"New Inventory does not work from the default 'Data' folder.", - - L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", - L"Bobby Ray Quantity", -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Map Level", - L"You have no militia. You need to train town residents in order to have a town militia.", - L"Daily Income", - L"Merc has life insurance", - L"%s isn't tired.", - L"%s is on the move and can't sleep", - L"%s is too tired, try a little later.", - L"%s is driving.", - L"Squad can't move with a sleeping merc on it.", - - // stuff for contracts - L"While you can pay for the contract, you don't have the bucks to cover this merc's life insurance premium.", - L"%s insurance premium will cost %s for %d extra day(s). Do you want to pay?", - L"Sector Inventory", - L"Merc has a medical deposit.", - - // other items - L"Medics", // people acting a field medics and bandaging wounded mercs - L"Patients", // people who are being bandaged by a medic - L"Done", // Continue on with the game after autobandage is complete - L"Stop", // Stop autobandaging of patients by medics now - L"Sorry. This option has been disabled in this demo.", // informs player this option/button has been disabled in the demo - L"%s doesn't have a repair kit.", - L"%s doesn't have a medical kit.", - L"There aren't enough people willing to be trained right now.", - L"%s is full of militia.", - L"Merc has a finite contract.", - L"Merc's contract is not insured", - L"Map Overview", // 24 - - // Flugente: disease texts describing what a map view does - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", - - // Flugente: weather texts describing what a map view does - L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"Squad %d has noticed someone in sector %s", - L"Squad %s has noticed someone in sector %s", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"Training a squad of town militia will cost $", // telling player how much it will cost - L"Approve expenditure?", // asking player if they wish to pay the amount requested - L"You can't afford it.", // telling the player they can't afford to train this town - L"Continue training militia in %s (%s %d)?", // continue training this town? - - L"Cost $", // the cost in dollars to train militia - L"( Y/N )", // abbreviated yes/no - L"", // unused - L"Training town militia in %d sectors will cost $ %d. %s", // cost to train sveral sectors at once - - L"You cannot afford the $%d to train town militia here.", - L"%s needs a loyalty of %d percent for you to be able to continue training militia.", - L"You cannot train the militia in %s any further.", - L"liberate more town sectors", - - L"liberate new town sectors", - L"liberate more towns", - L"regain your lost progress", - L"progress further", - - L"recruit more rebels", -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"You can only withdraw up to $20,000 at a time.", - L"Are you sure you want to deposit the %s into your account?", -}; - -STR16 gzCopyrightText[] = -{ - L"Copyright (C) 1999 Sir-tech Canada Ltd. All rights reserved.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Speech", - L"Mute Confirmations", - L"Subtitles", - L"Pause Text Dialogue", - L"Animate Smoke", - L"Blood & Gore", - L"Never Move my Mouse", - L"Old Selection Method", - L"Show Movement Path", - L"Show Misses", - L"Real Time Confirmation", - L"Sleep/Wake Notifications", - L"Use Metric System", - L"Highlight Mercs", - L"Snap Cursor to Mercs", - L"Snap Cursor to Doors", - L"Make Items Glow", - L"Show Tree Tops", - L"Smart Tree Tops", - L"Show Wireframes", - L"Show 3D Cursor", - L"Show Chance to Hit on Cursor", - L"GL Burst uses Burst Cursor", - L"Allow Enemy Taunts", // Changed from "Enemies Drop all Items" - SANDRO - L"High-Angle Grenade Launching", - L"Allow Real Time Sneaking", // Changed from "Restrict extra Aim Levels" - SANDRO - L"Space Selects next Squad", - L"Show Item Shadow", - L"Show Weapon Ranges in Tiles", - L"Tracer Effect for Single Shot", - L"Rain Noises", - L"Allow Crows", - L"Show Soldier Tooltips", - L"Tactical End-Turn Save", - L"Silent Skyrider", - L"Enhanced Description Box", - L"Forced Turn Mode", // add forced turn mode - L"Alternate Strategy Map Colors", // Change color scheme of Strategic Map - L"Alternate Bullet Graphics", // Show alternate bullet graphics (tracers) - L"Logical Bodytypes", - L"Show Merc Ranks", // shows mercs ranks - L"Show Face Gear Graphics", - L"Show Face Gear Icons", - L"Disable Cursor Swap", // Disable Cursor Swap - L"Quiet Training", // Madd: mercs don't say quotes while training - L"Quiet Repairing", // Madd: mercs don't say quotes while repairing - L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring - L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns - L"Allow Zombies", // Flugente Zombies - L"Enable Inventory Popups", // the_bob : enable popups for picking items from sector inv - L"Mark Remaining Hostiles", - L"Show LBE Content", - L"Invert Mouse Wheel", - L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances - L"Show enemy location", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Force Bobby Ray Shipments", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--DEBUG OPTIONS--", // an example options screen options header (pure text) - L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. - L"Reset ALL game options", // failsafe show/hide option to reset all options - L"Do you really want to reset?", // a do once and reset self option (button like effect) - L"Debug Options in other builds", // allow debugging in release or mapeditor - L"DEBUG Render Option group", // an example option that will show/hide other options - L"Render Mouse Regions", // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Keep this option ON if you want to hear character dialogue.", - - //Mute Confirmation - L"Turns characters' verbal confirmations on or off.", - - //Subtitles - L"Controls whether on-screen text is displayed for dialogue.", - - //Key to advance speech - L"If Subtitles are ON, turn this on also to be able to take your time reading NPC dialogue.", - - //Toggle smoke animation - L"Turn this option OFF if animating smoke slows down your game's framerate.", - - //Blood n Gore - L"Turn this option OFF if blood offends you.", - - //Never move my mouse - L"Turn this option OFF to have your mouse automatically move over pop-up confirmation boxes when they appear.", - - //Old selection method - L"Turn this ON for character selection to work as in previous JAGGED ALLIANCE games (which is the opposite of how it works otherwise).", - - //Show movement path - L"Turn this ON to display movement paths in Real-time (or leave it off and use the |S|h|i|f|t key when you do want them displayed).", - - //show misses - L"Turn ON to have the game show you where your bullets ended up when you \"miss\".", - - //Real Time Confirmation - L"When ON, an additional \"safety\" click will be required for movement in Real-time.", - - //Sleep/Wake notification - L"When ON, you will be notified when mercs on \"assignment\" go to sleep and resume work.", - - //Use the metric system - L"When ON, uses the metric system for measurements; otherwise it uses the Imperial system.", - - //Highlight Mercs - L"When ON, highlights the mercenary (Not visible to enemies).\nToggle in-game with (|G)", - - //Smart cursor - L"When ON, moving the cursor near your mercs will automatically highlight them.", - - //snap cursor to the door - L"When ON, moving the cursor near a door will automatically position the cursor over the door.", - - //glow items - L"When ON, Items continuously glow. (|C|t|r|l+|A|l|t+|I)", - - //toggle tree tops - L"When ON, shows the |Tree tops.", - - //smart tree tops - L"When ON, hides tree tops near visible mercs and cursor position.", - - //toggle wireframe - L"When ON, displays Wireframes for obscured walls. (|C|t|r|l+|A|l|t+|W)", - - L"When ON, the movement cursor is shown in 3D. (|H|o|m|e)", - - // Options for 1.13 - L"When ON, the chance to hit is shown on the cursor.", - L"When ON, GL burst uses burst cursor.", - L"When ON, enemies will occasionally comment certain actions.", // Changed from Enemies Drop All Items - SANDRO - L"When ON, grenade launchers fire grenades at higher angles. (|A|l|t+|Q)", - L"When ON, will not enter turn-based mode when sneaking unnoticed and seeing an enemy unless |C|t|r|l+|X is pressed. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO - L"When ON, |S|p|a|c|e selects next squad automatically.", - L"When ON, item shadows will be shown.", - L"When ON, weapon ranges will be shown in tiles.", - L"When ON, tracer effect will be shown for single shots.", - L"When ON, you will hear rain noises when it is raining.", - L"When ON, the crows will be present in game.", - 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, Skyrider will not talk anymore.", - L"When ON, enhanced descriptions will be shown for items and weapons.", - L"When ON and enemy present, turn-based mode persists until sector is free. (|C|t|r|l+|T)", // add forced turn mode - 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, mercenary body graphic can change along with equipped gear.", - L"When ON, ranks will be displayed before merc names in the strategic view.", - L"When ON, equipped face gear will be shown on the merc portraits.", - L"When ON, icons for the equipped face gear will be shown 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, 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, zombies will spawn. Beware!", // allow zombies - L"When ON, enables popup boxes that appear when left-click on empty merc inventory slots in mapscreen sector inventory.", - L"When ON, approximate locations of the last enemies in the sector will be highlighted.", - L"When ON, will show the contents of an LBE item; otherwise, regular NAS interface will be shown.", - L"When ON, inverts mouse wheel directions.", - L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", - L"When ON, shows last known enemy location.", - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Force all pending Bobby Ray shipments", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", - L"Click me to fix corrupt game settings", // failsafe show/hide option to reset all options - L"Click me to fix corrupt game settings", // a do once and reset self option (button like effect) - L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor - L"Toggle to display debugging render options", // an example option that will show/hide other options - L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - - -STR16 gzGIOScreenText[] = -{ - L"INITIAL GAME SETTINGS", -#ifdef JA2UB - L"Random Manuel texts ", - L"Off", - L"On", -#else - L"Game Style", - L"Realistic", - L"Sci Fi", -#endif - L"Platinum", - L"Available Arsenal", // changed by SANDRO - L"Tons of Guns", - L"Reduced", // changed by SANDRO - L"Difficulty Level", - L"Novice", - L"Experienced", - L"Expert", - L"INSANE", - L"Start", - L"Cancel", - L"Extra Difficulty", - L"Save Anytime", - L"Iron Man", - L"Disabled for Demo", - L"Bobby Ray Quality", - L"Normal", - L"Great", - L"Excellent", - L"Awesome", - L"Inventory / Attachments", - L"NOT USED", - L"NOT USED", - L"Load MP Game", - L"INITIAL GAME SETTINGS (Only the server settings take effect)", - // Added by SANDRO - L"Skill Traits", - L"Old", - L"New", - L"Max IMP Characters", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Enemies Drop All Items", - L"Off", - L"On", -#ifdef JA2UB - L"Tex and John", - L"Random", - L"All", -#else - L"Number of Terrorists", - L"Random", - L"All", -#endif - L"Secret Weapon Caches", - L"Random", - L"All", - L"Progress Speed of Item Choices", - L"Very Slow", - L"Slow", - L"Normal", - L"Fast", - L"Very Fast", - - L"Old / Old", - L"New / Old", - L"New / New", - - // Squad Size - L"Max. Squad Size", - L"6", - L"8", - L"10", - //L"Faster Bobby Ray Shipments", - L"Inventory Manipulation Costs AP", - - L"New Chance to Hit System", - L"Improved Interrupt System", - L"Merc Story Backgrounds", - L"Food System", - L"Bobby Ray Quantity", - - // anv: extra iron man modes - L"Soft Iron Man", - L"Extreme Iron Man", -}; - -STR16 gzMPJScreenText[] = -{ - L"MULTIPLAYER", - L"Join", - L"Host", - L"Cancel", - L"Refresh", - L"Player Name", - L"Server IP", - L"Port", - L"Server Name", - L"# Plrs", - L"Version", - L"Game Type", - L"Ping", - L"You must enter a player name.", - L"You must enter a valid server IP address. For example: 84.114.195.239", - L"You must enter a valid Server Port between 1 and 65535.", -}; - -STR16 gzMPJHelpText[] = -{ - L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", - L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", - - L"HOST", - L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", - L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", - L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", - L"Click on 'Host' to host a new Multiplayer Game.", - - L"JOIN", - L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", - L"Enter the external IP and the Port number from the host.", - L"Click on 'Join' to join an already hosted Multiplayer Game.", -}; - -STR16 gzMPHScreenText[] = -{ - L"HOST GAME", - L"Start", - L"Cancel", - L"Server Name", - L"Game Type", - L"Deathmatch", - L"Team-Deathmatch", - L"Co-Operative", - L"Maximum Players", - L"Maximum Mercs", - L"Merc Selection", - L"Merc Hiring", - L"Hired by Player", - L"Starting Cash", - L"Allow Hiring Same Merc", - L"Report Hired Mercs", - L"Bobby Rays", - L"Sector Starting Edge", - L"You must enter a server name", - L"", - L"", - L"Starting Time", - L"", - L"", - L"Weapon Damage", - L"", - L"Timed Turns", - L"", - L"Enable Civilians in CO-OP", - L"", - L"Maximum Enemies in CO-OP", - L"Synchronize Game Directory", - L"MP Sync. Directory", - L"You must enter a file transfer directory.", - L"(Use '/' instead of '\\' for directory delimiters.)", - L"The specified synchronisation directory does not exist.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Yes", - L"No", - // Starting Time - L"Morning", - L"Afternoon", - L"Night", - // Starting Cash - L"Low", - L"Medium", - L"Heigh", - L"Unlimited", - // Time Turns - L"Never", - L"Slow", - L"Medium", - L"Fast", - // Weapon Damage - L"Very low", - L"Low", - L"Normal", - // Merc Hire - L"Random", - L"Normal", - // Sector Edge - L"Random", - L"Selectable", - // Bobby Ray / Hire same merc - L"Disable", - L"Allow", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Austin", //Austin, Texas, USA - L"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"Hong Kong", //Hong Kong, Hong Kong - L"Beirut", //Beirut, Lebanon (Middle East) - L"London", //London, England - L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Metavira", //The island of Metavira was the fictional location used by JA1 - L"Miami", //Miami, Florida, USA (SE corner of USA) - L"Moscow", //Moscow, USSR - L"New York", //New York, New York, USA - L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Paris", //Paris, France - L"Tripoli", //Tripoli, Libya (eastern Mediterranean) - L"Tokyo", //Tokyo, Japan - L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Are you sure? A value of zero means NO ability in this skill.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"( 8 Characters Max )", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"Analyzing", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"Thank You, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Voice", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"Killed in Action", - L"Dismissed", - L"Other", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Personnel Manager", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Game Paused", - L"Resume Game (|P|a|u|s|e)", - L"Pause Game (|P|a|u|s|e)", -}; - - -STR16 pMessageStrings[] = -{ - L"Exit Game?", - L"OK", - L"YES", - L"NO", - L"CANCEL", - L"REHIRE", - L"LIE", - L"No description", //Save slots that don't have a description. - L"Game Saved.", - L"Game Saved.", - L"QuickSave", //10 The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"Day", - L"Mercs", - L"Empty Slot", //An empty save game slot - L"Demo", //Demo of JA2 - L"Debug", //State of development of a project (JA2) that is a debug build - L"Release", //Release build for JA2 - L"rpm", //20 Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"min", //Abbreviation for minute. - L"m", //One character abbreviation for meter (metric distance measurement unit). - L"rnds", //Abbreviation for rounds (# of bullets) - L"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"lb", //Abbreviation for pounds (Imperial weight measurement unit) - L"Home", //Home as in homepage on the internet. - L"USD", //Abbreviation to US dollars - L"n/a", //Lowercase acronym for not applicable. - L"Meanwhile", //Meanwhile - L"%s has arrived in sector %s%s", //30 Name/Squad has arrived in sector A9. Order must not change without notifying - //SirTech - L"Version", - L"Empty Quick Save Slot", - L"This slot is reserved for Quick Saves made from the tactical and map screens using ALT+S.", - L"Opened", - L"Closed", - L"You are running low on disk space. You only have %sMB free and Jagged Alliance 2 v1.13 requires %sMB.", - L"Hired %s from AIM", - L"%s has caught %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s has taken %s.", //'Merc name' has taken 'item name' - L"%s has no medical skill",//40 'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"The integrity of the game has been compromised.", - L"ERROR: Ejected CD-ROM", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"There is no room to fire from here.", - - //Can't change stance due to objects in the way... - L"Cannot change stance at this time.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Drop", - L"Throw", - L"Pass", - - L"%s passed to %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"No room to pass %s to %s.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" attached]", // 50 - - //Cheat modes - L"Cheat level ONE reached", - L"Cheat level TWO reached", - - //Toggling various stealth modes - L"Squad on stealth mode.", - L"Squad off stealth mode.", - L"%s on stealth mode.", - L"%s off stealth mode.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Extra Wireframes On", - L"Extra Wireframes Off", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Can't go up from this level...", - L"There are no lower levels...", // 60 - L"Entering basement level %d...", - L"Leaving basement...", - - L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Follow mode OFF.", - L"Follow mode ON.", - L"3D Cursor OFF.", - L"3D Cursor ON.", - L"Squad %d active.", - L"You cannot afford to pay for %s's daily salary of %s", //first %s is the mercs name, the seconds is a string containing the salary - L"Skip", // 70 - L"%s cannot leave alone.", - L"A save has been created called, SaveGame249.sav. If needed, rename it to SaveGame01 - SaveGame10 and then you will have access to it in the Load screen.", - L"%s drank some %s", - L"A package has arrived in Drassen.", - L"%s should arrive at the designated drop-off point (sector %s) on day %d, at approximately %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival - L"History log updated.", - L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", - L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", - L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO - L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO - L"Grenade Launchers fire at standard angles", - L"Grenade Launchers fire at higher angles", - // forced turn mode strings - L"Forced Turn Mode", - L"Normal turn mode", - L"Exit combat mode", - L"Forced Turn Mode Active, Entering Combat", - L"Successfully Saved the Game into the End Turn Auto Save slot.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved - L"Client", - L"You cannot use the Old Inventory and the New Attachment System at the same time.", // 90 - - L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID - L"This slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save - L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"End-Turn Save #", // 95 // The text for the tactical end turn auto save - L"Saving Auto Save #", // 96 // The message box, when doing auto save - L"Saving", // 97 // The message box, when doing end turn auto save - L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save - L"This slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) - L"Lock mouse cursor within game window boundary.", // 104 - L"Release mouse cursor from game window boundary.", // 105 - L"Move in Formation ON", - L"Move in Formation OFF", - L"Artificial Merc Light ON", - L"Artificial Merc Light OFF", - L"Squad %s active.", - L"%s smoked %s.", - L"Activate cheats?", - L"Deactivate cheats?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"OK", - L"Scroll Up", - L"Select All", - L"Scroll Down", - L"Cancel", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s isn't close enough to be healed.", - L"Your medics were unable to completely bandage everyone.", -}; - -STR16 pMilitiaButtonsHelpText[] = -{ - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", - L"Distribute available militia equally among all sectors", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Go to AIM and hire some mercs ( *Hint* it's in the Laptop )", // to inform the player to hired some mercs to get things going -#ifdef JA2UB - L"When you're ready to travel to Tracona, click on the Time Compression button at the bottom right of the screen.", // to inform the player to hit time compression to get the game underway -#else - L"When you're ready to travel to Arulco, click on the Time Compression button at the bottom right of the screen.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Error. Missing or corrupted file(s). Game will exit now.", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"View email", - L"Browse various web sites", - L"View files and email attachments", - L"Read log of events", - L"View team info", - L"View financial summary and history", - L"Close laptop", - - //Bottom task bar icons (if they exist): - L"You have new mail", - L"You have new file(s)", - - //Bookmarks: - L"Association of International Mercenaries", - L"Bobby Ray's online weapon mail order", - L"Institute of Mercenary Profiling", - L"More Economic Recruiting Center", - L"McGillicutty's Mortuary", - L"United Floral Service", - L"Insurance Brokers for A.I.M. contracts", - //New Bookmarks - L"", - L"Encyclopedia", - L"Briefing Room", - L"Campaign History", - L"Mercenaries Love or Dislike You", - L"World Health Organization", - L"Kerberus - Experience In Security", - L"Militia Overview", - L"Recon Intelligence Services", - L"Controlled factories", - L"Arulco Rebel Command", -}; - - -STR16 gzHelpScreenText[] = -{ - L"Exit help screen", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"There is a battle in progress. You can only retreat from the tactical screen.", - L"|Enter sector to continue the current battle in progress.", - L"|Automatically resolves the current battle.", - L"You can't automatically resolve a battle when you are the attacker.", - L"You can't automatically resolve a battle while you are being ambushed.", - L"You can't automatically resolve a battle while you are fighting creatures in the mines.", - L"You can't automatically resolve a battle while there are hostile civilians.", - L"You can't automatically resolve a battle while there are bloodcats.", - L"BATTLE IN PROGRESS", - L"You cannot retreat at this time.", -}; - -STR16 gzMiscString[] = -{ - L"Your militia continue to battle without the aid of your mercs...", - L"The vehicle does not need anymore fuel right now.", - L"The fuel tank is %d%% full.", - L"Deidranna's army has regained complete control over %s.", - L"You have lost a refueling site.", -}; - -STR16 gzIntroScreen[] = -{ - L"Cannot find intro video", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s hears a %s sound coming from %s.", - L"%s hears a %s sound of MOVEMENT coming from %s.", - L"%s hears a %s CREAKING coming from %s.", - L"%s hears a %s SPLASHING coming from %s.", - L"%s hears a %s IMPACT coming from %s.", - L"%s hears a %s GUNFIRE coming from %s.", // anv: without this, all further noise notifications were off by 1! - L"%s hears a %s EXPLOSION to %s.", - L"%s hears a %s SCREAM to %s.", - L"%s hears a %s IMPACT to %s.", - L"%s hears a %s IMPACT to %s.", - L"%s hears a %s SHATTERING coming from %s.", - L"%s hears a %s SMASH coming from %s.", - L"", // anv: placeholder for silent alarm - L"%s hears someone's %s VOICE coming from %s.", // anv: report enemy taunt to player -}; - -STR16 pTauntUnknownVoice[] = -{ - L"Unknown Voice", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Sort by Name (|F|1)", - L"Sort by Assignment (|F|2)", - L"Sort by Sleep Status (|F|3)", - L"Sort by Location (|F|4)", - L"Sort by Destination (|F|5)", - L"Sort by Departure Time (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"Error 404", - L"Site not found.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"Recent Shipments", - L"Order #", - L"Number Of Items", - L"Ordered On", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"Game Internals Programmer", // Chris Camfield - L"Co-designer/Writer", // Shaun Lyng - L"Strategic Systems & Editor Programmer", //Kris \"The Cow Rape Man\" Marnes - L"Producer/Co-designer", // Ian Currie - L"Co-designer/Map Designer", // Linda Currie - L"Artist", // Eric \"WTF\" Cheng - L"Beta Coordinator, Support", // Lynn Holowka - L"Artist Extraordinaire", // Norman \"NRG\" Olsen - L"Sound Guru", // George Brooks - L"Screen Designer/Artist", // Andrew Stacey - L"Lead Artist/Animator", // Scot Loving - L"Lead Programmer", // Andrew \"Big Cheese Doddle\" Emmons - L"Programmer", // Dave French - L"Strategic Systems & Game Balance Programmer", // Alex Meduna - L"Portraits Artist", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(still learning punctuation)", // Shaun Lyng - L"(\"It's done. I'm just fixing it\")", //Kris \"The Cow Rape Man\" Marnes - L"(getting much too old for this)", // Ian Currie - L"(and working on Wizardry 8)", // Linda Currie - L"(forced at gunpoint to also do QA)", // Eric \"WTF\" Cheng - L"(Left us for the CFSA - go figure...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(Dead Head and jazz lover)", // Andrew Stacey - L"(his real name is Robert)", // Scot Loving - L"(the only responsible person)", // Andrew \"Big Cheese Doddle\" Emmons - L"(can now get back to motocrossing)", // Dave French - L"(stolen from Wizardry 8)", // Alex Meduna - L"(did items and loading screens too!)", // Joey \"Joeker\" Whelan", -}; - -// HEADROCK: Adjusted strings for better feedback, and added new string for LBE repair. -STR16 sRepairsDoneString[] = -{ - L"%s finished repairing own items.", - L"%s finished repairing everyone's guns & armor.", - L"%s finished repairing everyone's equipped items.", - L"%s finished repairing everyone's large carried items.", - L"%s finished repairing everyone's medium carried items.", - L"%s finished repairing everyone's small carried items.", - L"%s finished repairing everyone's LBE gear.", - L"%s finished cleaning everyone's guns.", -}; - -STR16 zGioDifConfirmText[]= -{ - L"You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode?", - L"You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode?", - L"You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode?", - L"You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"%S loadscreen data file not found...", - - //1-5 - L"The robot cannot leave this sector when nobody is using the controller.", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"You can't compress time right now. Wait for the fireworks!", - - //'Name' refuses to move. - L"%s refuses to move.", - - //%s a merc name - L"%s does not have enough energy to change stance.", - - //A message that pops up when a vehicle runs out of gas. - L"The %s has run out of gas and is now stranded in %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"above", - L"below", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"None of your mercs have any medical ability.", - L"There are no medical supplies to perform bandaging.", - L"There weren't enough medical supplies to bandage everybody.", - L"None of your mercs need bandaging.", - L"Bandages mercs automatically.", - L"All your mercs are bandaged.", - - //14 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - - L"(roof)", - - L"Health: %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d vs. %d", - - L"The %s is full!", //(ex "The ice cream truck is full") - - L"%s does not need immediate first aid or bandaging but rather more serious medical attention and/or rest.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s is hit in the leg and collapses!", - //Name can't speak right now. - L"%s can't speak right now.", - - //22-24 plural versions - L"%d green militia have been promoted to veteran militia.", - L"%d green militia have been promoted to regular militia.", - L"%d regular militia have been promoted to veteran militia.", - - //25 - L"Switch", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s goes psycho!", - - //27-28 - //Messages why a player can't time compress. - L"It is currently unsafe to compress time because you have mercs in sector %s.", - L"It is currently unsafe to compress time when mercs are in the creature infested mines.", - - //29-31 singular versions - L"1 green militia has been promoted to a veteran militia.", - L"1 green militia has been promoted to a regular militia.", - L"1 regular militia has been promoted to a veteran militia.", - - //32-34 - L"%s doesn't say anything.", - L"Travel to surface?", - L"(Squad %d)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s has repaired %s's %s", - - //36 - L"BLOODCAT", - - //37-38 "Name trips and falls" - L"%s trips and falls", - L"This item can't be picked up from here.", - - //39 - L"None of your remaining mercs are able to fight. The militia will fight the creatures on their own.", - - //40-43 - //%s is the name of merc. - L"%s ran out of medical kits!", - L"%s lacks the necessary skill to doctor anyone!", - L"%s ran out of tool kits!", - L"%s lacks the necessary skill to repair anything!", - - //44-45 - L"Repair Time", - L"%s cannot see this person.", - - //46-48 - L"%s's gun barrel extender falls off!", - // HEADROCK HAM 3.5: Changed to reflect facility effect. - L"No more than %d militia trainers are permitted in this sector.", - L"Are you sure?", - - //49-50 - L"Time Compression", - L"The vehicle's gas tank is now full.", - - //51-52 Fast help text in mapscreen. - L"Continue Time Compression (|S|p|a|c|e)", - L"Stop Time Compression (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s has unjammed the %s", - L"%s has unjammed %s's %s", - - //55 - L"Can't compress time while viewing sector inventory.", - - L"The Jagged Alliance 2 v1.13 PLAY DISK was not found. Program will now exit.", - - L"Items successfully combined.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Current/Max Progress: %d%%/%d%%", - - L"Escort John and Mary?", - - // 60 - L"Switch Activated.", - - L"%s's armour attachment has been smashed!", - L"%s fires %d more rounds than intended!", - L"%s fires one more round than intended!", - - L"You need to close the item description box first!", - - L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 -}; - -// HEADROCK HAM 3.5: Added sector name -STR16 gzCWStrings[] = -{ - L"Call reinforcements to %s from adjacent sectors?", -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Location: %d\n", - L"%s|Brightness: %d / %d\n", - L"%s|Range to |Target: %d\n", - L"%s|I|D: %d\n", - L"%s|Orders: %d\n", - L"%s|Attitude: %d\n", - L"%s|Current |A|Ps: %d\n", - L"%s|Current |Health: %d\n", - L"%s|Current |Breath: %d\n", - L"%s|Current |Morale: %d\n", - L"%s|Current |S|hock: %d\n", - L"%s|Current |S|uppression Points: %d\n", - // Full info - L"%s|Helmet: %s\n", - L"%s|Vest: %s\n", - L"%s|Leggings: %s\n", - // Limited, Basic - L"|Armor: ", - L"Helmet", - L"Vest", - L"Leggings", - L"worn", - L"no Armor", - L"%s|N|V|G: %s\n", - L"no NVG", - L"%s|Gas |Mask: %s\n", - L"no Gas Mask", - L"%s|Head |Position |1: %s\n", - L"%s|Head |Position |2: %s\n", - L"\n(in Backpack) ", - L"%s|Weapon: %s ", - L"no Weapon", - L"Handgun", - L"SMG", - L"Rifle", - L"MG", - L"Shotgun", - L"Knife", - L"Heavy Weapon", - L"no Helmet", - L"no Vest", - L"no Leggings", - L"|Armor: %s\n", - // Added - SANDRO - L"%s|Skill 1: %s\n", - L"%s|Skill 2: %s\n", - L"%s|Skill 3: %s\n", - // Additional suppression effects - sevenfm - L"%s|A|Ps lost due to |S|uppression: %d\n", - L"%s|Suppression |Tolerance: %d\n", - L"%s|Effective |S|hock |Level: %d\n", - L"%s|A|I |Morale: %d\n", -}; - -STR16 New113Message[] = -{ - L"Storm started.", - L"Storm ended.", - L"Rain started.", - L"Rain ended.", - L"Watch out for snipers...", - L"Suppression fire!", - L"BRST", - L"AUTO", - L"GL", - L"GL BRST", - L"GL AUTO", - L"UB", - L"UBRST", - L"UAUTO", - L"BAYONET", - L"Sniper!", - L"Unable to split money due to having an item on your cursor.", - L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.", - L"Deleted item", - L"Deleted all items of this type", - L"Sold item", - L"Sold all items of this type", - L"You should check your goggles", - // Real Time Mode messages - L"In combat already", - L"No enemies in sight", - L"Real-time sneaking OFF", - L"Real-time sneaking ON", - //L"Enemy spotted! (Ctrl + x to enter turn based)", - L"Enemy spotted!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s was successful at stealing!", // MINTY - Changed "on" to "at": More natural English - L"%s did not have enough action points to steal all selected items.", // MINTY - Changed "had not" to "did not": More natural English - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health.)", // MINTY - Changed "make" to "perform": More natural English - L"Do you want to perform surgery on %s? (You can heal about %i health.)",// MINTY - Changed "make" to "perform": More natural English - L"Do you wish to perform surgeries first? (%i patient(s))",// MINTY - Changed "make" to "perform": More natural English - L"Do you wish to perform the surgery on this patient first?",// MINTY - Changed "make" to "perform": More natural English - L"Apply first aid automatically with surgeries or without them?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Surgery on %s finished.", - L"%s is hit in the chest and loses a point of maximum health!", - L"%s is hit in the chest and loses %d points of maximum health!", - L"%s is blinded by the blast!", - L"%s has regained one point of lost %s", - L"%s has regained %d points of lost %s", - L"Your scouting skills prevented an ambush by the enemy!", // MINTY - Changed "you to be ambushed" to "an ambush": More natural English - L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", - L"%s is hit at the groin and falls down in pain!", - ////////////////////////////////////////////////////////////////////////////////////// - L"Warning: enemy corpse found!!!", - L"%s [%d rnds]\n%s %1.1f %s", - L"Insufficient AP Points! Cost %d, you have %d.", - L"Hint: %s", - L"Player strength: %d - Enemy strength: %6.0f", // Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"Cannot use skill!", - L"Cannot build while enemies are in this sector!", - L"Cannot spot that location!", - L"Incorrect GridNo for firing artillery!", - L"Radio frequencies are jammed. No communication possible!", - L"Radio action failed!", - L"Not enough mortar shells in sector to start a barrage!", - L"No signal shell item found in Items.xml!", - L"No High-Explosive shell item found in Items.xml!", - L"No mortars found, cannot commence barrage!", - L"Already jamming signal, no need to do so again!", - L"Already listening for nearby sounds, no need to do so again!", - L"Already trying to spot, no need to do so again!", - L"Already scanning for jam signals, no need to do so again!", - L"%s could not apply %s to %s.", - L"%s orders reinforcements from %s.", - L"%s radio set is out of energy.", - L"a working radio set", - L"a binocular", - L"patience", - L"%s's shield has been destroyed!", - L" DELAY", - L"Yes*", - L"Yes", - L"No", - L"%s applied %s to %s.", -}; - -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s cowers in fear!", - L"%s is pinned down!", - L"%s fires more rounds than intended!", - L"You cannot train militia in this sector.", - L"Militia picks up %s.", - L"Cannot train militia with enemies present!", - // 6 - 10 - L"%s lacks sufficient Leadership score to train militia.", - L"No more than %d Mobile Militia trainers are permitted in this sector.", - L"No room in %s or around it for new Mobile Militia!", - L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", - L"Can't staff a facility while enemies are present!", - // 11 - 15 - L"%s lacks sufficient Wisdom to staff this facility.", - L"The %s is already fully-staffed.", - L"It will cost $%d per hour to staff this facility. Do you wish to continue?", - L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", - L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", - // 16 - 20 - L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", - L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", - L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", - L"N/A in this sector", - L"Daily Expenses", - // 21 - 25 - L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", - L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 - L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 - L"To merge two items during combat, you must pick them both up first.", // HAM 5 -}; - -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"No available adjustments", - L"%s was split into several parts.", - L"%s was split into several parts. Check %s's inventory for the resulting items.", - L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", - L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", - L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", - // 6 - 10 - L"Split Crate into Inventory", - L"Split into %d-rd Mags", - L"%s was split into %d Magazines containing %d rounds each.", - L"%s was split into %s's inventory.", - L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", - L"Instant mode", - L"Delayed mode", - L"Instant mode (%d AP)", - L"Delayed mode (%d AP)", -}; - -// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercLevelUp.xml" file! -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Hereby be informed that due to Gastons's past performance his fees for services rendered have undergone an increase. Personally, I'm not surprised. ± ± Speck T. Kline ± ", - // Stogie: Text from Line 43 in Email.edt - L"Please be advised that, as of this moment, Stogies's fees for services rendered have increased to coincide with the increase in his abilities. ± ± Speck T. Kline ± ", - // Tex: Text from Line 45 in Email.edt - L"Please be advised that Tex's experience entitles him to more equitable compensation. He's fees have therefore been increased to more accurately reflect his worth. ± ± Speck T. Kline ± ", - // Biggens: Text from Line 49 in Email.edt - L"Please take note. Due to the improved performance of Biggens his fees for services rendered have undergone an increase. ± ± Speck T. Kline ± ", -}; - -// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercAvailable.xml" file! -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk: Text from Line 58 - L"FW from AIM Server: Message from Victor Kolesnikov", - L"Hello. Monk here. Message received. I'm back if you want to see me. ± ± Waiting for your call. ±", - - // Brain: Text from Line 60 - L"FW from AIM Server: Message from Janno Allik", - L"Am now ready to consider tasks. There is a time and place for everything. ± ± Janno Allik ±", - - // Scream: Text from Line 62 - L"FW from AIM Server: Message from Lennart Vilde", - L"Lennart Vilde now available! ±", - - // Henning: Text from Line 64 - L"FW from AIM Server: Message from Henning von Branitz", - L"Have received your message, thanks. To discuss employment, contact me at the AIM Website. ± ± Till then! ± ± Henning von Branitz ±", - - // Luc: Text from Line 66 - L"FW from AIM Server: Message from Luc Fabre", - L"Mesage received, merci! Am happy to consider your proposals. You know where to find me. ± ± Looking forward to hearing from you. ±", - - // Laura: Text from Line 68 - L"FW from AIM Server: Message from Dr. Laura Colin", - L"Greetings! Good of you to leave a message It sounds interesting. ± ± Visit AIM again I would be happy to hear more. ± ± Best regards! ± ± Dr. Laura Colin ±", - - // Grace: Text from Line 70 - L"FW from AIM Server: Message from Graziella Girelli", - L"You wanted to contact me, but were not successful.± ± A family gathering. I am sure you understand? I've now had enough of family and would be very happy if you would contact me again over the AIM Site. ± ± Ciao! ±", - - // Rudolf: Text from Line 72 - L"FW from AIM Server: Message from Rudolf Steiger", - L"Do you know how many calls I get every day? Every tosser thinks he can call me. ± ± But I'm back, if you have something of interest for me. ±", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"FW from AIM Server: Message about merc availability", - L"I got your message. Waiting for your call. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Sniper: Eyes of a hawk, you can shoot the wings from a fly at a hundred yards! ± ", - // Camouflage - L"Camouflage: Beside you, even bushes look synthetic! ± ", - // SANDRO - new strings for new traits added - // MINTY - Altered the texts for more natural English, and added a little flavour too - // Ranger - L"Ranger: Those amateurs from Texas have nothing on you! ± ", - // Gunslinger - L"Gunslinger: With one handgun or two, you can be as lethal as Billy the Kid! ± ", - // Squadleader - L"Squadleader: A natural leader, your squadmates look to you for inspiration! ± ", - // Technician - L"Technician: MacGyver's got nothing on you! Mechanical, electronic or explosive, you can fix it! ± ", - // Doctor - L"Doctor: From grazes to gutshot, to amputations, you can heal them all! ± ", - // Athletics - L"Athletics: Your speed and vitality are worthy of an Olympian! ± ", - // Bodybuilding - L"Bodybuilding: Arnie? What a wimp! You could beat him with one arm behind your back! ± ", - // Demolitions - L"Demolitions: Sowing grenades like seeds, planting bombs, watching the limbs flying.. This is what you live for! ± ", - // Scouting - L"Scouting: Nothing can escape your notice! ± ", - // Covert ops - L"Covert Operations: You make 007 look like an amateur! ± ", - // Radio Operator - L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", - // Survival - L"Survival: Nature is a second home to you. ± ", -}; - -STR16 NewInvMessage[] = -{ - L"Cannot pickup backpack at this time", - L"No place to put backpack", - L"Backpack not found", - L"Zipper only works in combat", - L"Can not move while backpack zipper active", - L"Are you sure you want to sell all sector items?", - L"Are you sure you want to delete all sector items?", - L"Cannot climb while wearing a backpack", - L"All backpacks dropped", - L"All owned backpacks picked up", - L"%s drops backpack", - L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Initiating RakNet server...", - L"Server started, waiting for connections...", - L"You must now connect with your client to the server by pressing '2'.", // No more used - L"Server is already running.", - L"Server failed to start. Terminating.", - // 5 - L"%d/%d clients are ready for realtime-mode.", - L"Server disconnected and shutdown.", - L"Server is not running.", - L"Clients are still loading, please wait...", - L"You cannot change dropzone after the server has started.", - // 10 - L"Sent file '%S' - 100/100", - L"Finished sending files to '%S'.", - L"Started sending files to '%S'.", - L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Initiating RakNet client...", - L"Connecting to IP: %S ...", - L"Received game settings:", - L"You are already connected.", - L"You are already connecting...", - // 5 - L"Client #%d - '%S' has hired '%s'.", - L"Client #%d - '%S' has hired another merc.", - L"You are ready - Total ready = %d/%d.", - L"You are no longer ready - Total ready = %d/%d.", - L"Starting battle...", - // 10 - L"Client #%d - '%S' is ready - Total ready = %d/%d.", - L"Client #%d - '%S' is no longer ready - Total ready = %d/%d", - L"You are ready. Awaiting other clients... Press 'OK' if you are not ready anymore.", - L"Let us the battle begin!", - L"A client must be running for starting the game.", - // 15 - L"Game cannot start. No mercs are hired...", - L"Awaiting 'OK' from server to unlock the laptop...", - L"Interrupted", - L"Finish from interrupt", - L"Mouse grid coordinates:", - // 20 - L"X: %d, Y: %d", - L"Grid number: %d", - L"Server only feature", - L"Choose server manual override stage: ('1' - Enable laptop/hiring) ('2' - Launch/load level) ('3' - Unlock UI) ('4' - Finish placement)", - L"Sector=%s, Max. clients=%d, Max. mercs=%d, Game type=%d, Same merc=%d, Damage multiplier=%f, Timed turns=%d, Secs/Tic=%d, Disable Bobby Ray=%d, Disable Aim/Merc Equipment=%d, Disable Morale=%d, Testing=%d.", - // 25 - L"", //not used any more - L"New connection: Client #%d - '%S'.", - L"Team: %d.",//not used any more - L"'%s' (client %d - '%S') was killed by '%s' (client %d - '%S').", - L"Kicked client #%d - '%S'.", - // 30 - L"Start a new turn for the selected client. #1: , #2: %S, #3: %S, #4: %S", - L"Starting turn for client #%d.", - L"Requesting for realtime...", - L"Switched back to realtime.", - L"Error: Something went wrong switching back.", - // 35 - L"Unlock laptop for hiring? (Are all clients connected?)", - L"The server has unlocked the laptop. Begin hiring!", - L"Interruptor.", - L"You cannot change dropzone if you are only the client and not the server.", - L"You declined the offer to surrender.", - // 40 - L"All your mercs are wiped dead!", - L"Spectator mode enabled.", - L"You have been defeated!", - L"Sorry, climbing is disable in a multiplayer game.", - L"You Hired '%s'", - // 45 - L"You can't change the map once purchasing has commenced.", - L"Map changed to '%s'.", - L"Client '%s' disconnected, removing from game", - L"You were disconnected from the game. Returning to Main Menu.", - L"Connection failed, Retrying in 5 seconds, %i retries left...", - //50 - L"Connection failed, giving up...", - L"You cannot start the game until another player has connected.", - L"%s : %s", - L"Send to all", - L"Allies only", - // 55 - L"Cannot join game. This game has already started.", - L"%s (team): %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"Received all files from server.", - L"'%S' finished downloading from server.", - L"'%S' started downloading from server.", - L"Cannot start the game until all clients have finished receiving files.", - L"This server requires that you download modified files to play, do you wish to continue?", - // 65 - L"Press 'Ready' to enter tactical screen.", - L"Cannot connect because your version %S is different from the server version %S.", - L"You killed an enemy soldier.", - L"Cannot start the game, because all teams are the same.", - L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", - // 70 - L"Could not save received file '%S'", - L"%s's bomb was disarmed by %s", - L"You loose, what a shame", // All over red rover - L"Spectator mode disabled", - L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", - // 75 - L"Team %s is wiped out.", - L"Client failed to start. Terminating.", - L"Client disconnected and shutdown.", - L"Client is not running.", - L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", - // 80 - L"AI's turn - %d left", -}; - -STR16 gszMPEdgesText[] = -{ - L"N", - L"E", - L"S", - L"W", - L"C", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"Foxtrot", - L"Bravo", - L"Delta", - L"Charlie", - L"N/A", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Game Type: ", - L"Players: ", - L"Mercs each: ", - L"You cannot change starting edge once Laptop is unlocked.", - L"You cannot change teams once the Laptop is unlocked.", - L"Random Mercs: ", - L"Y", - L"Difficulty:", - L"Server Version:", -}; - -STR16 gzMPSScreenText[] = -{ - L"Scoreboard", - L"Continue", - L"Cancel", - L"Player", - L"Kills", - L"Deaths", - L"Queen's Army", - L"Hits", - L"Misses", - L"Accuracy", - L"Damage Dealt", - L"Damage Taken", - L"Please wait for the server to press 'Continue'." -}; - -STR16 gzMPCScreenText[] = -{ - L"Cancel", - L"Connecting to Server", - L"Getting Server Settings", - L"Downloading custom files", - L"Press 'ESC' to cancel or 'Y' to chat", - L"Press 'ESC' to cancel", - L"Ready" -}; - -STR16 gzMPChatToggleText[] = -{ - L"Send to All", - L"Send to Allies only", -}; - -STR16 gzMPChatboxText[] = -{ - L"Multiplayer Chat", - L"'ENTER' to send, 'ESC' to cancel", -}; - -// Following strings added - SANDRO -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits - L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected.", - L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", - // For new major/minor traits - L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", - L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"Please adjust your physical attributes according to your true abilities. You cannot raise any score above", - L"I.M.P. Attributes and skills review.", - L"Bonus Pts.:", - L"Starting Level", - // New strings for new traits - L"On the next page you are going to specify your physical attributes and skills. As 'attributes' are called: health, dexterity, agility, strength and wisdom. Attributes cannot go lower than %d.", - L"The rest are called 'skills' and unlike attributes skills can be set to zero, meaning you have absolutely no proficiency in it.", - L"All scores are set to a minimum at the beginning. Note that certain attributes are set to specific values according to skill traits you have selected. You cannot set those attributes lower than that.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"I.M.P. Character Analysis", - L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of character traits to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", - L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Normal", - L"Friendly", - L"Loner", - L"Optimist", - L"Pessimist", - L"Aggressive", - L"Arrogant", - L"Big Shot", - L"Asshole", - L"Coward", - L"I.M.P. Attitudes", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Neutral", - L"Sociable", - L"Loner", - L"Optimist", - L"Assertive", - L"Intellectual", - L"Primitive", - L"Aggressive", - L"Phlegmatic", - L"Dauntless", - L"Pacifist", - L"Malicious", - L"Show-off", - L"Coward", - L"I.M.P. Character Traits", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"I.M.P. Colors and Body Type", - L"I.M.P. Colors", - L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", - L"Please select the respective colors of your skin, hair and clothing.", - L"Toggle this to use alternative rifle holding.", - L"\n(Caution: you will need a big strength for this.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Hair Color", - L"Skin Color", - L"Shirt Color", - L"Pants Color", - L"Normal Body", - L"Big Body", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"No Disability", - L"Heat Intolerant", - L"Nervous", - L"Claustrophobic", - L"Nonswimmer", - L"Fear of Insects", - L"Forgetful", - L"Psychotic", - L"Deaf", - L"Shortsighted", - L"Hemophiliac", - L"Fear of Heights", - L"Self-Harming", - L"I.M.P. Disabilities", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] = -{ - L"We bet you're glad this isn't voicemail.", - L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"You'll be screwed if you ever lose your glasses.", - L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = -{ - L"Are you SURE this is the right job for you?", - L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= -{ - L"Let's just say you are a grounded person.", - L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Might want to make sure your knives are always clean.", - L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s lacks sufficient Strength to perform this task.", - L"%s lacks sufficient Dexterity to perform this task.", - L"%s lacks sufficient Agility to perform this task.", - L"%s is not Healthy enough to perform this task.", - L"%s lacks sufficient Wisdom to perform this task.", - L"%s lacks sufficient Marksmanship to perform this task.", - // 6 - 10 - L"%s lacks sufficient Medical Skill to perform this task.", - L"%s lacks sufficient Mechanical Skill to perform this task.", - L"%s lacks sufficient Leadership to perform this task.", - L"%s lacks sufficient Explosives Skill to perform this task.", - L"%s lacks sufficient Experience to perform this task.", - // 11 - 15 - L"%s lacks sufficient Morale to perform this task.", - L"%s is too exhausted to perform this task.", - L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.", - L"Too many people are already working at the %s.", - L"Too many people are already performing this task at the %s.", - // 16 - 20 - L"%s can find no items to repair.", - L"%s has lost some %s while working in sector %s!", - L"%s has lost some %s while working at the %s in %s!", - L"%s was injured while working in sector %s, and requires immediate medical attention!", - L"%s was injured while working at the %s in %s, and requires immediate medical attention!", - // 21 - 25 - L"%s was injured while working in sector %s. It doesn't seem too bad though.", - L"%s was injured while working at the %s in %s. It doesn't seem too bad though.", - L"The residents of %s seem upset about %s's presence.", - L"The residents of %s seem upset about %s's work at the %s.", - L"%s's actions in sector %s have caused loyalty loss throughout the region!", - // 26 - 30 - L"%s's actions at the %s in %s have caused loyalty loss throughout the region!", - L"%s is drunk.", // <--- This is a log message string. - L"%s has become severely ill in sector %s, and has been taken off duty.", - L"%s has become severely ill and cannot continue his work at the %s in %s.", - L"%s was injured in sector %s.", // <--- This is a log message string. - // 31 - 35 - L"%s was severely injured in sector %s.", //<--- This is a log message string. - L"There are currently prisoners here who are aware of %s's identity.", - L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", - - -}; - -STR16 gzFacilityRiskResultStrings[]= -{ - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Health", - L"Marksmanship", - // 5-10 - L"Leadership", - L"Mechanical skill", - L"Medical skill", - L"Explosives skill", -}; - -STR16 gzFacilityAssignmentStrings[]= -{ - L"AMBIENT", - L"Staff", - L"Eat", - L"Rest", - L"Repair Items", - L"Repair %s", // Vehicle name inserted here - L"Repair Robot", - // 6-10 - L"Doctor", - L"Patient", - L"Practice Strength", - L"Practice Dexterity", - L"Practice Agility", - L"Practice Health", - // 11-15 - L"Practice Marksmanship", - L"Practice Medical", - L"Practice Mechanical", - L"Practice Leadership", - L"Practice Explosives", - // 16-20 - L"Student Strength", - L"Student Dexterity", - L"Student Agility", - L"Student Health", - L"Student Marksmanship", - // 21-25 - L"Student Medical", - L"Student Mechanical", - L"Student Leadership", - L"Student Explosives", - L"Trainer Strength", - // 26-30 - L"Trainer Dexterity", - L"Trainer Agility", - L"Trainer Health", - L"Trainer Marksmanship", - L"Trainer Medical", - // 30-35 - L"Trainer Mechanical", - L"Trainer Leadership", - L"Trainer Explosives", - L"Interrogate Prisoners", // added by Flugente - L"Undercover Snitch", - // 36-40 - L"Spread Propaganda", - L"Spread Propaganda", // spread propaganda (globally) - L"Gather Rumours", - L"Command Militia", // militia movement orders -}; -STR16 Additional113Text[]= -{ - L"Jagged Alliance 2 v1.13 windowed mode requires a color depth of 16bpp.", - L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16 bpp windowed mode.", - L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", - // WANNE: Savegame slots validation against INI file - L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", - L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", - -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -// MINTY - Changed some of the following taunts to sound more natural -STR16 sEnemyTauntsFireGun[]= -{ - L"Suck on this!", - L"Say hello to my lil' friend!", // MINTY - "Touch this" just doesn't sound right, so I changed it to a Scarface quote. - L"Come get some!", - L"You're mine!", - L"Die!", - L"You scared, motherfucker?", - L"This will hurt!", - L"Come on you bastard!", - L"Come on! I don't got all day!", - L"Come to daddy!", - L"You'll be six feet under in no time!", - L"Gonna send ya home in a pine box, loser!", - L"Hey, wanna play?", - L"You should have stayed home, bitch!", - L"Sucker!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"Barbecue time!", - L"I got a present for ya!", - L"Bam!", - L"Smile!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Catch!", - L"Here ya go!", - L"Pop goes the weasel.", - L"This one's for you.", - L"Muahaha!", - L"Catch this, swine!", - L"I like this.", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"Gonna scalp ya, sucker!", - L"Come to papa.", - L"Show me your guts!", - L"I'll rip you to pieces!", - L"Motherfucker!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"We're in some real shit...", - L"They said join the army. Not for this shit!", - L"I've had enough!", - L"Oh my God!", - L"They ain't paying us enough for this shit..", - L"Mommy!", - L"I'll be back! With friends!", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"I heard that!", - L"Who's there?", - L"What was that?", - L"Hey! What the...", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"They're here!", - L"Now the fun can start!", - L"I hoped this would never happen..", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"Aaaggh!", - L"Ugh!", - L"This.. hurts!", - L"You fuck!", - L"You will regret.. uhh.. this.", - L"What the..!", - L"Now you have.. pissed me off.", - -}; - -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Da'ffff...!", - L"Oh my God!", - L"Holy crap!", - L"Enemy!!!", - L"Alert! Alert!", - L"There is one!", - L"Attack!", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Description", - L"General", - L"Advanced", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Desc", - L"Gen", - L"Adv", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Primary", - L"Secondary", - L"AP Costs", - L"Burst / Autofire", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Prop.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", - L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", - L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", - L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", - L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", - L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", - L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", - L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", - L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Property icon (mouse-over to reveal name).", - L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", - L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", - L"Bonus/penalty given while |p|r|o|n|e.", - L"Bonus/penalty given", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y", - L"|D|a|m|a|g|e", - L"|R|a|n|g|e", - L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s", - L"|R|e|l|i|a|b|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", - L"|A|P|s |t|o |R|e|a|d|y", - L"|A|P|s |t|o |A|t|t|a|c|k", - L"|A|P|s |t|o |B|u|r|s|t", - L"|A|P|s |t|o |A|u|t|o|f|i|r|e", - L"|A|P|s |t|o |R|e|l|o|a|d", - L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", - L"|L|a|t|e|r|a|l |R|e|c|o|i|l", // No longer used - L"|T|o|t|a|l |R|e|c|o|i|l", - L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", - L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", - L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", - L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", - L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", - L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", - L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", - L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", - L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", - L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nThe minimum range at which a scope can provide it's aimBonus.", - L"\n \nTo hit modifier granted by laser sights.", - L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", - L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", - L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", - L"\n \nThe distance this weapon's muzzle will shift\nhorizontally between each and every bullet in a\nburst or autofire volley.\n \nPositive numbers indicate shifting to the right.\nNegative numbers indicate shifting to the left.\n \nCloser to 0 is better.", // No longer used - L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. - L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", - L"|C|o|v|e|r|a|g|e", - L"|D|e|g|r|a|d|e |R|a|t|e", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", - L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", - L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|A|r|m|o|r |P|i|e|r|c|i|n|g", - L"|B|u|l|l|e|t |T|u|m|b|l|e", - L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", - L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", - L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", - L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", - L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", - L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", - L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|D|a|m|a|g|e", - L"|S|t|u|n |D|a|m|a|g|e", - L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 - L"|B|l|a|s|t |R|a|d|i|u|s", - L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", - L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", - L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", - L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", - L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", - L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", - // HEADROCK HAM 5: Fragmentation - L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", - L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", - L"|F|r|a|g|m|e|n|t |R|a|n|g|e", - // HEADROCK HAM 5: End Fragmentations - L"|L|o|u|d|n|e|s|s", - L"|V|o|l|a|t|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", - L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", - L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 - L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", - L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", - L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", - L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", - L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", - L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", - // HEADROCK HAM 5: Fragmentation - L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", - L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", - L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", - L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", - L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|R|e|p|a|i|r |E|a|s|e", - L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", - L"|V|o|l|u|m|e", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", - L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|T|r|a|c|e|r |A|m|m|o", - L"|A|n|t|i|-|T|a|n|k |A|m|m|o", - L"|I|g|n|o|r|e|s |A|r|m|o|r", - L"|A|c|i|d|i|c |A|m|m|o", - L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", // 4 - L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", - L"|W|a|t|e|r|p|r|o|o|f", - L"|E|l|e|c|t|r|o|n|i|c", - L"|G|a|s |M|a|s|k", - L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", // 9 - L"|C|a|n |P|i|c|k |L|o|c|k|s", - L"|C|a|n |C|u|t |W|i|r|e|s", - L"|C|a|n |S|m|a|s|h |L|o|c|k|s", - L"|M|e|t|a|l |D|e|t|e|c|t|o|r", - L"|R|e|m|o|t|e |T|r|i|g|g|e|r", // 14 - L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", - L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", - L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", - L"|T|o|o|l |K|i|t", - L"|T|h|e|r|m|a|l |O|p|t|i|c|s", // 19 - L"|X|-|R|a|y |D|e|v|i|c|e", - L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", - L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", - L"|F|i|r|s|t |A|i|d |K|i|t", - L"|M|e|d|i|c|a|l |K|i|t", // 24 - L"|L|o|c|k |B|o|m|b", - L"|D|r|i|n|k", - L"|M|e|a|l", - L"|A|m|m|o |B|e|l|t", - L"|A|m|m|o |V|e|s|t", // 29 - L"|D|e|f|u|s|a|l |K|i|t", - L"|C|o|v|e|r|t |I|t|e|m", - L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", - L"|M|a|d|e |o|f |M|e|t|a|l", - L"|S|i|n|k|s", // 34 - L"|T|w|o|-|H|a|n|d|e|d", - L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", - L"|A|n|t|i|-|M|a|t|e|r|i|e|l |A|m|m|o", - L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|S|h|i|e|l|d", - L"|C|a|m|e|r|a", - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|E|m|p|t|y |B|l|o|o|d |B|a|g", - L"|B|l|o|o|d |B|a|g", // 44 - L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", - L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", - L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", - L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", - L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", - L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", - L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", - L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", - L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", - L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", - L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", - L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", - L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", - L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", - L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", - L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", - L"\n \nThis item contains various tools that can\nbe used to repair other items.\n\nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", - L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", - L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", - L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", - L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", - L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", - L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", - L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", - L"\n \nThis item will still your thirst\nif you drink it.", - L"\n \nThis item will still your hunger\nif you eat it.", - L"\n \nWith this ammo belt you can\nfeed someone else's MG.", - L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", - L"\n \nThis item improves your trap disarm chance by ", - L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", - L"\n \nThis item cannot be damaged.", - L"\n \nThis item is made of metal.\nIt takes less damage than other items.", - L"\n \nThis item sinks when put in water.", - L"\n \nThis item requires both hands to be used.", - L"\n \nThis item will block your iron sights\nso you cannot use them.", - L"\n \nThis ammo can destroy light walls\nand various other objects.", - L"\n \nIf kept ready in your inventory,\nthis will lower the chance to be infected\nby airborne transmitted pathogens of other people.", - L"\n \nIf kept ready in your inventory,\nthis will lower the chance to be infected\nby contact transmitted pathogens of other people.", - L"\n \nIf equipped in a hand, this will block incoming damage.", - L"\n \nYou can take photos with this.", - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", - L"\n \nThis ammo can extinguish fire.", // 49 - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", // 0 - L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", // 5 - L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", - L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", - L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", // 10 - L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 15 - L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", - L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", // 20 - L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", - L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", - L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", - L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", // 25 - L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", - L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", // 30 - L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", - L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", - L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", - L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", - L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", // 35 - L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", - L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", // 40 - L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|T|u|n|n|e|l |V|i|s|i|o|n", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", // 45 - L"|T|o|-|H|i|t |B|o|n|u|s", - L"|A|i|m |B|o|n|u|s", - L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", - L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d", // 50 - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", - L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", // 55 - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", - L"|D|i|r|t |M|o|d|i|f|i|e|r", - L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r", - L"|F|o|o|d| |P|o|i|n|t|s", - L"|D|r|i|n|k |P|o|i|n|t|s", // 60 - L"|P|o|r|t|i|o|n |S|i|z|e", - L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r", - 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", - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", // 0 - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", - L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", // 5 - L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", // 10 - L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 15 - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", // 20 - L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", - L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", // 25 - L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", // 30 - L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", // 35 - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", // 40 - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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.", // 45 - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", - L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", // 50 - L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", - L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", - L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", // 55 - L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", - L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", - L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", - L"\n \nAmount of energy in kcal.\n \nHigher is better.", - L"\n \nAmount of water in liter.\n \nHigher is better.", // 60 - 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"", - 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.", - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", // 0 - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", // 5 - L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", - L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", // 10 - L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 15 - L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", // 20 - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", // 25 - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", // 30 - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", // 35 - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", // 40 - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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.", // 45 - 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 \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 \nIf a gun's temperature is above this,\nit will jam more frequently.", // 50 - L"\n \nIf a gun's temperature is above this,\nit will be damaged more easily.", - L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"SINGLE", - L"AP", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"Finished sorting ammo into crates in sector %c%d.", - L"Finished removing attachments from items in sector %c%d.", - L"Finished ejecting ammo from weapons in sector %c%d.", - L"Finished stacking and merging all items in sector %c%d.", - // Bob: new strings for emptying LBE items - L"Finished emptying LBE items in sector %c%d.", - L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Show all", - L"Guns", - L"Ammo", - L"Explosives", - L"Melee Weapons", - L"Armor", - L"LBE", - L"Kits", - L"Misc. Items", - L"Hide all", -}; - -// MercCompare (MeLoDy) -// TODO.Translate -STR16 gzMercCompare[] = -{ - L"???", - L"Base opinion:", - - L"Dislikes %s %s", - L"Likes %s %s", - - L"Strongly hates %s", - L"Hates %s", // 5 - - L"Deep racism against %s", - L"Racism against %s", - - L"Cares deeply about looks", - L"Cares about looks", - - L"Very sexist", // 10 - L"Sexist", - - L"Dislikes other background", - L"Dislikes other backgrounds", - - L"Past grievances", - L"____", // 15 - L"/", - L"* Opinion is always in [%d; %d]", -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = -{ - L"Temperature is ", - L"very low", - L"low", - L"medium", - L"high", - L"very high", - L"dangerous", - L"CRITICAL", - L"DRAMATIC", - L"unknown", - L"." -}; - -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"Food is ", - L"fresh", - L"good", - L"ok", - L"stale", - L"shabby", - L"rotting", - L"." -}; - -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Pvt. ", //ExpLevel 1 - L"Pfc. ", //ExpLevel 2 - L"Cpl. ", //ExpLevel 3 - L"Sgt. ", //ExpLevel 4 - L"Lt. ", //ExpLevel 5 - L"Cpt. ", //ExpLevel 6 - L"Maj. ", //ExpLevel 7 - L"Lt.Col. ", //ExpLevel 8 - L"Col. ", //ExpLevel 9 - L"Gen. " //ExpLevel 10 -}; - - -STR16 gzNewLaptopMessages[]= -{ - L"Ask about our special offer!", - L"Temporarily Unavailable", - L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Range to target: %d tiles, Brightness: %d/%d", - L"Attaching the transmitter to your laptop computer.", - L"You cannot afford to hire %s", - L"For a limited time, the above fee covers the cost of the entire mission and includes the equipment listed below.", - L"Hire %s now and take advantage of our unprecedented 'one fee covers all' pricing. Also included in this unbelievable offer is the mercenary's personal equipment at no charge.", - L"Fee", - L"There is someone else in the sector...", - //L"Gun Range: %d tiles, Chance to hit: %d percent", - L"Display Cover", - L"Line of Sight", - L"New Recruits cannot arrive there.", - L"Since your laptop has no transmitter, you won't be able to hire new team members. Perhaps this would be a good time to load a saved game or start over!", - L"%s hears the sound of crumpling metal coming from underneath Jerry's body. It sounds disturbingly like your laptop antenna being crushed.", //the %s is the name of a merc. @@@ Modified - L"After scanning the note left behind by Deputy Commander Morris, %s senses an oppurtinity. The note contains the coordinates for launching missiles against different towns in Arulco. It also gives the coodinates of the origin - the missile facility.", - L"Noticing the control panel, %s figures the numbers can be reversed, so that the missile might destroy this very facility. %s needs to find an escape route. The elevator appears to offer the fastest solution...", - L"This is an IRON MAN game and you cannot save when enemies are around.", // @@@ new text - L"(Cannot save during combat)", //@@@@ new text - L"The current campaign name is greater than 30 characters.", // @@@ new text - L"The current campaign cannot be found.", // @@@ new text - L"Campaign: Default ( %S )", // @@@ new text - L"Campaign: %S", // @@@ new text - L"You have selected the campaign %S. This campaign is a player-modified version of the original Unfinished Business campaign. Are you sure you wish to play the %S campaign?", // @@@ new text - L"In order to use the editor, please select a campaign other than the default.", ///@@new - // anv: extra iron man modes - L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", - L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", -}; - -// The_bob : pocket popup text defs -STR16 gszPocketPopupText[]= -{ - L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN - L"- no matching ammo -", //POCKET_POPUP_NO_AMMO - L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS - L"more...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features -STR16 szCovertTextStr[]= -{ - L"%s has camo!", - L"%s has a backpack!", - L"%s is seen carrying a corpse!", - L"%s's %s is suspicious!", - L"%s's %s is considered military hardware!", - L"%s carries too many guns!", - L"%s's %s is too advanced for an %s soldier!", - L"%s's %s has too many attachments!", - L"%s was seen performing suspicious activities!", - L"%s does not look like a civilian!", - L"%s bleeding was discovered!", - L"%s is drunk and doesn't behave like a soldier!", - L"On closer inspection, %s's disguise does not hold!", - L"%s isn't supposed to be here!", - L"%s isn't supposed to be here at this time!", - L"%s was seen near a fresh corpse!", - L"%s equipment raises a few eyebrows!", - L"%s is seen targetting %s!", - L"%s has seen through %s's disguise!", - L"No clothes item found in Items.xml!", - L"This does not work with the old trait system!", - L"Not enough APs!", - L"Bad palette found!", - L"You need the covert skill to do this!", - L"No uniform found!", - L"%s is now disguised as a civilian.", - L"%s is now disguised as a soldier.", - L"%s wears a disorderly uniform!", - L"In retrospect, asking for surrender in disguise wasn't the best idea...", - L"%s was uncovered!", - L"%s's disguise seems to be ok...", - L"%s's disguise will not hold.", - L"%s was caught stealing!", - L"%s tried to manipulate %s's inventory.", - L"An elite soldier did not recognize %s!", - L"A officer knew %s was unfamiliar!", -}; - -STR16 szCorpseTextStr[]= -{ - L"No head item found in Items.xml!", - L"Corpse cannot be decapitated!", - L"No meat item found in Items.xml!", - L"Not possible, you sick, twisted individual!", - L"No clothes to take!", - L"%s cannot take clothes off of this corpse!", - L"This corpse cannot be taken!", - L"No free hand to carry corpse!", - L"No corpse item found in Items.xml!", - L"Invalid corpse ID!", -}; - -STR16 szFoodTextStr[]= -{ - L"%s does not want to eat %s", - L"%s does not want to drink %s", - L"%s ate %s", - L"%s drank %s", - L"%s's strength was damaged due to being overfed!", - L"%s's strength was damaged due to lack of nutrition!", - L"%s's health was damaged due to being overfed!", - L"%s's health was damaged due to lack of nutrition!", - L"%s's strength was damaged due to excessive drinking!", - L"%s's strength was damaged due to lack of water!", - L"%s's health was damaged due to excessive drinking!", - L"%s's health was damaged due to lack of water!", - L"Sectorwide canteen filling not possible, Food System is off!" -}; - -STR16 szPrisonerTextStr[]= -{ - L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", - L"Gained $%d as ransom money.", - L"%d prisoners revealed enemy positions.", - L"%d officers, %d elites, %d regulars and %d admins joined our cause.", - L"Prisoners start a massive riot in %s!", - L"%d prisoners were sent to %s!", - L"Prisoners have been released!", - L"The army now occupies the prison in %s, the prisoners were freed!", - L"The enemy refuses to surrender!", - L"The enemy refuses to take you as prisoners - they prefer you dead!", - L"This behaviour is set OFF in your ini settings.", - L"%s has freed %s!", - L"A high-ranking army officer in %s has been revealed!", - L"The enemy leader refuses to even consider surrender!", - L"%d prisoners volunteered to join our forces.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= -{ - L"nothing", - L"building a fortification", - L"removing a fortification", - L"hacking", - L"%s had to stop %s.", - L"The selected barricade cannot be built in this sector", -}; - -STR16 szInventoryArmTextStr[]= -{ - L"Blow up (%d AP)", - L"Blow up", - L"Arm (%d AP)", - L"Arm", - L"Disarm (%d AP)", - L"Disarm", -}; - -STR16 szBackgroundText_Flags[]= -{ - L" might consume drugs in inventory\n", - L" disregard for all other backgrounds\n", - L" +1 level in underground sectors\n", - L" steals money from the locals sometimes\n", - - 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 - - L" huge loyality penalty in all towns if we die\n", - - L" refuses to attack animals\n", - L" refuses to attack members of the same group\n", -}; - -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% APs in polar sectors\n", - L" %s%d%% APs in desert sectors\n", - L" %s%d%% APs in swamp sectors\n", - L" %s%d%% APs in urban sectors\n", - L" %s%d%% APs in forest sectors\n", - L" %s%d%% APs in plain sectors\n", - L" %s%d%% APs in river sectors\n", - L" %s%d%% APs in tropical sectors\n", - L" %s%d%% APs in coastal sectors\n", - L" %s%d%% APs in mountainous sectors\n", - - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% leadership stat\n", - L" %s%d%% marksmanship stat\n", - 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", - L" %s%d%% APs needed for fortification actions\n", - L" %s%d%% APs needed for mortars\n", - L" %s%d%% APs needed to access inventory\n", - L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", - L" %s%d%% APs on first turn when assaulting a sector\n", - - L" %s%d%% travel speed on foot\n", - L" %s%d%% travel speed on land vehicles\n", - L" %s%d%% travel speed on air vehicles\n", - L" %s%d%% travel speed on water vehicles\n", - - L" %s%d%% fear resistance\n", - L" %s%d%% suppression resistance\n", - L" %s%d%% physical resistance\n", - L" %s%d%% alcohol resistance\n", - L" %s%d%% disease resistance\n", - - L" %s%d%% interrogation effectiveness\n", - L" %s%d%% prison guard strength\n", - L" %s%d%% better prices when trading guns and ammo\n", - L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", - L" %s%d%% team capitulation strength if we lead negotiations\n", - L" %s%d%% faster running\n", - L" %s%d%% bandaging speed\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% strength to carry items\n", - L" %s%d%% food consumption\n", - L" %s%d%% water consumption\n", - L" %s%d need for sleep\n", - L" %s%d%% melee damage\n", - L" %s%d%% cth with blades\n", - L" %s%d%% camo effectiveness\n", - L" %s%d%% stealth\n", - L" %s%d%% max CTH\n", - L" %s%d hearing range during the night\n", - L" %s%d hearing range during the day\n", - L" %s%d effectivity at disarming traps\n", - L" %s%d%% CTH with SAMs\n", - - L" %s%d%% effectiveness to friendly approach\n", - L" %s%d%% effectiveness to direct approach\n", - L" %s%d%% effectiveness to threaten approach\n", - 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", - L" %s%d%% insurance cost\n", - L" %s%d%% effectiveness as spotter for fellow snipers\n", - L" %s%d%% effectiveness at diagnosing diseases\n", - L" %s%d%% effectiveness at treating population against diseases\n", - L"Can spot tracks up to %d tiles away\n", - L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% chance to evade snake attacks\n", - - L" dislikes some other backgrounds\n", - L" Smoker", - L" Nonsmoker", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% building speed\n", - L" hacking skill: %s%d ", - L" %s%d%% burial speed\n", - L" %s%d%% administration effectiveness\n", - L" %s%d%% exploration effectiveness\n", -}; - -STR16 szBackgroundTitleText[] = -{ - L"I.M.P. Background", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = -{ - L"I.M.P. Prejudices", -}; - -STR16 szPersonalityDisplayText[]= -{ - L"You look", - L"and appearance is", - L"important to you.", - L"You have", - L"and care", - L"about that.", - L"You are", - L"and hate everyone", - L".", - L"racist against non-", - L"people.", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"How do you look?", - L"How important are the looks of others to you?", - L"What are your manners?", - L"How important are the manners of other people to you?", - L"What is your nationality?", - L"What nation do you dislike?", - L"How much do you dislike that nation?", - L"How racist are you?", - L"What is your race? You will be\nracist against all other races.", - L"How sexist are you against the other gender?", -}; - - -STR16 szRaceText[]= -{ - L"white", - L"black", - L"asian", - L"eskimo", - L"hispanic", -}; - -STR16 szAppearanceText[]= -{ - L"average", - L"ugly", - L"homely", - L"attractive", - L"like a babe", -}; - -STR16 szRefinementText[]= -{ - L"average manners", - L"manners of a slob", - L"manners of a snob", -}; - -STR16 szRefinementTextTypes[] = -{ - L"normal people", - L"slobs", - L"snobs", -}; - -STR16 szNationalityText[]= -{ - L"American", // 0 - L"Arab", - L"Australian", - L"British", - L"Canadian", - L"Cuban", // 5 - L"Danish", - L"French", - L"Russian", - L"Traconian", // UB takes place in Tracona - L"Swiss", // 10 - L"Jamaican", - L"Polish", - L"Chinese", - L"Irish", - L"South African", // 15 - L"Hungarian", - L"Scottish", - L"Arulcan", - L"German", - L"African", // 20 - L"Italian", - L"Dutch", - L"Romanian", - L"Metaviran", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"Belarusian", - L"Belgian", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"Brasilian", - L"Bulgarian", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"Estonian", - L"Ethiopian", - L"Filipino", // 50 - L"Finnish", - L"Georgian", - L"Greek", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Indian", - L"Indonesian", - L"Iranian", - L"Iraqi", // 60 - L"Islandic", - L"Israeli", - L"Japanese", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Mexican", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Nigerian", - L"Nigerien", - L"Norwegian", - L"Pakistani", // 85 - L"Panamanian", - L"Portoguese", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"Serbian", - L"Slovakian", - L"Slovenian", - L"Somali", - L"Spanish", // 95 - L"Sudanese", - L"Swedish", - L"Syrian", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"Turkish", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"Venezuelan", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -STR16 szNationalityTextAdjective[] = -{ - L"americans", // 0 - L"arabs", - L"australians", - L"britains", - L"canadians", - L"cubans", // 5 - L"danes", - L"frenchmen", - L"russians", - L"traconians", - L"swiss", // 10 - L"jamaicans", - L"poles", - L"chinese", - L"irishmen", - L"south africans", // 15 - L"hungarians", - L"scotsmen", - L"arulcans", - L"germans", - L"africans", // 20 - L"italians", - L"dutchmen", - L"romanians", - L"metavirans", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"belarusians", - L"belgians", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"brasilians", - L"bulgarians", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"estonians", - L"ethiopians", - L"filipinos", // 50 - L"finns", - L"georgians", - L"greek", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"indians", - L"indonesians", - L"iranians", - L"iraqis", // 60 - L"islandics", - L"israelis", - L"japanese", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"mexicans", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"nigerians", - L"nigeriens", - L"norwegians", - L"pakistanis", // 85 - L"panamanians", - L"portoguese", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"serbians", - L"slovakians", - L"slovenians", - L"somali", - L"spaniards", // 95 - L"sudanese", - L"swedes", - L"syrians", - L"thais", - L"togolese", // 100 - L"tunisians", - L"turks", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"venezuelans", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"and do not hate any other nationality.", // used in personnel.cpp - L"of no origin", // used in IMP generation -}; - -STR16 szCareLevelText[]= -{ - L"not", - L"somewhat", - L"extremely", -}; - -STR16 szRacistText[]= -{ - L"not", - L"somewhat", - L"very", -}; - -STR16 szSexistText[]= -{ - L"no sexist", - L"somewhat sexist", - L"very sexist", - L"a Gentleman", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"Batteries are ", - L"full", - L"good", - L"at half", - L"low", - L"depleted", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= -{ - L"Mercenary", - L"Green militia", - L"Regular militia", - L"Elite militia", - - L"Civilian", - - L"Administrator", - L"Army Soldier", - L"Elite Soldier", - L"Tank", - - L"Creature", - L"Zombie", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"%s Press Council", - L"Ministry for %s Information Distribution", - L"%s Revolutionary Movement", - L"The Times International", - L"International Times", - L"R.I.S. (Recon Intelligence Service)", - - L"A collection of press sources from %s", - L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", - - L"Conflict Summary", - L"Battle reports", - L"News", - L"About us", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s in %s.", - - L"rebel forces", - L"the army", - - L"attacked", - L"ambushed", - L"airdropped", - - L"The attack came from %s.", - L"%s were reinforced from %s.", - L"The attack came from %s, %s were reinforced from %s.", - L"north", - L"east", - L"south", - L"west", - L"and", - L"an unknown location", - - L"Buildings in the sector were damaged.", - L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", - L"During the attack, %s and %s called reinforcements.", - L"During the attack, %s called reinforcements.", - L"Eyewitnesses report the use of chemical weapons from both sides.", - L"Chemical weapons were used by %s.", - L"In a serious escalation of the conflict, both sides deployed tanks.", - L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", - L"Both sides are said to have used snipers.", - L"Unverified reports indicate %s snipers were involved in the firefight.", - L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", - L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", - L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"Deep in the night", // 23 - 3 - L"At dawn", // 3 - 6 - L"Early in the morning", // 6 - 8 - L"In the morning hours", // 8 - 11 - L"At noon", // 11 - 14 - L"On the afternoon", // 14 - 18 - L"On the evening", // 18 - 21 - L"During the night", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Initial funding", - L"Mine income", - L"Trade", - L"Other sources", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Ammunition", - L"Explosives", - L"Food", - L"Medical gear", - L"Item maintenance", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"In an extremely one-sided battle, the army force was wiped out without much resistance.", - - L"The rebels easily defeated the army, inflicting heavy losses.", - L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", - - L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", - L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", - - L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", - - L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", - L"Despite the high number of rebels in this sector, the army easily dispatched them.", - - L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", - L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", - - L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", - L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", - - L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"Irrelevant", - L"Insignificant", - L"Notable", - L"Noteworthy", - L"Significant", - L"Interesting", - L"Important", - L"Very important", - L"Grave", - L"Major", - L"Momentous", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"Killed", - L"Wounded", - L"Prisoners", - L"Shots fired", - - L"Money earned", - L"Consumption", - L"Losses", - L"Participants", - - L"Promotions", - L"Summary", - L"Detail", - L"Previous", - - L"Next", - L"Incident", - L"Day", -}; - -STR16 szCampaignStatsOperationPrefix[] = -{ - L"Glorious %s", - L"Mighty %s", - L"Awesome %s", - L"Intimidating %s", - - L"Powerful %s", - L"Earth-Shattering %s", - L"Insidious %s", - L"Swift %s", - - L"Violent %s", - L"Brutal %s", - L"Relentless %s", - L"Merciless %s", - - L"Cannibalistic %s", - L"Gorgeous %s", - L"Rogue %s", - L"Dubious %s", - - L"Sexually Ambigious %s", - L"Burning %s", - L"Enraged %s", - L"Visonary %s", - - // 20 - L"Gruesome %s", - L"International-law-ignoring %s", - L"Provoked %s", - L"Ceaseless %s", - - L"Inflexible %s", - L"Unyielding %s", - L"Regretless %s", - L"Remorseless %s", - - L"Choleric %s", - L"Unexpected %s", - L"Democratic %s", - L"Bursting %s", - - L"Bipartisan %s", - L"Bloodstained %s", - L"Rouge-wearing %s", - L"Innocent %s", - - L"Hateful %s", - L"Underwear-staining %s", - L"Civilian-devouring %s", - L"Unflinching %s", - - // 40 - L"Expect No Mercy From Our %s", - L"Very Mad %s", - L"Ultimate %s", - L"Furious %s", - - L"Its best to Avoid Our %s", - L"Fear the %s", - L"All Hail %s!", - L"Protect the %s", - - L"Beware the %s", - L"Crush the %s", - L"Backstabbing %s", - L"Vicious %s", - - L"Sadistic %s", - L"Burning %s", - L"Wrathful %s", - L"Invincible %s", - - L"Guilt-ridden %s", - L"Rotting %s", - L"Sanitized %s", - L"Self-doubting %s", - - // 60 - L"Ancient %s", - L"Very Hungry %s", - L"Sleepy %s", - L"Demotivated %s", - - L"Cruel %s", - L"Annoying %s", - L"Huffy %s", - L"Bisexual %s", - - L"Screaming %s", - L"Hideous %s", - L"Praying %s", - L"Stalking %s", - - L"Cold-blooded %s", - L"Fearsome %s", - L"Trippin' %s", - L"Damned %s", - - L"Vegetarian %s", - L"Grotesque %s", - L"Backward %s", - L"Superior %s", - - // 80 - L"Inferior %s", - L"Okayish %s", - L"Porn-consuming %s", - L"Poisoned %s", - - L"Spontaneous %s", - L"Lethargic %s", - L"Tickled %s", - L"The %s is a dupe!", - - L"%s on Steroids", - L"%s vs. Predator", - L"A %s with a twist", - L"Self-Pleasuring %s", - - L"Man-%s hybrid", - L"Inane %s", - L"Overpriced %s", - L"Midnight %s", - - L"Capitalist %s", - L"Communist %s", - L"Intense %s", - L"Steadfast %s", - - // 100 - L"Narcoleptic %s", - L"Bleached %s", - L"Nail-biting %s", - L"Smite the %s", - - L"Bloodthirsty %s", - L"Obese %s", - L"Scheming %s", - L"Tree-Humping %s", - - L"Cheaply made %s", - L"Sanctified %s", - L"Falsely accused %s", - L"%s to the rescue", - - L"Crab-people vs. %s", - L"%s in Space!!!", - L"%s vs. Godzilla", - L"Untamed %s", - - L"Durable %s", - L"Brazen %s", - L"Greedy %s", - L"Midnight %s", - - // 120 - L"Confused %s", - L"Irritated %s", - L"Loathsome %s", - L"Manic %s", - - L"Ancient %s", - L"Sneaking %s", - L"%s of Doom", - L"%s's revenge", - - L"A %s on the run", - L"A %s out of time", - L"One with %s", - L"%s from hell", - - L"Super-%s", - L"Ultra-%s", - L"Mega-%s", - L"Giga-%s", - - L"A quantum of %s", - L"Her Majesties' %s", - L"Shivering %s", - L"Fearful %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Dragon", - L"Mountain Lion", - L"Copperhead Snake", - L"Jack Russell Terrier", - - L"Arch-Nemesis", - L"Basilisk", - L"Blade", - L"Shield", - - L"Hammer", - L"Spectre", - L"Congress", - L"Oilfield", - - L"Boyfriend", - L"Girlfriend", - L"Husband", - L"Stepmother", - - L"Sand Lizard", - L"Bankers", - L"Anaconda", - L"Kitten", - - // 20 - L"Congress", - L"Senate", - L"Cleric", - L"Badass", - - L"Bayonet", - L"Wolverine", - L"Soldier", - L"Tree Frog", - - L"Weasel", - L"Shrubbery", - L"Tar pit", - L"Sunset", - - L"Hurricane", - L"Ocelot", - L"Tiger", - L"Defense Industry", - - L"Snow Leopard", - L"Megademon", - L"Dragonfly", - L"Rottweiler", - - // 40 - L"Cousin", - L"Grandma", - L"Newborn", - L"Cultist", - - L"Disinfectant", - L"Democracy", - L"Warlord", - L"Doomsday Device", - - L"Minister", - L"Beaver", - L"Assassin", - L"Rain of Burning Death", - - L"Prophet", - L"Interloper", - L"Crusader", - L"Administration", - - L"Supernova", - L"Liberty", - L"Explosion", - L"Bird of Prey", - - // 60 - L"Manticore", - L"Frost Giant", - L"Celebrity", - L"Middle Class", - - L"Loudmouth", - L"Scape Goat", - L"Warhound", - L"Vengeance", - - L"Fortress", - L"Mime", - L"Conductor", - L"Job-Creator", - - L"Frenchman", - L"Superglue", - L"Newt", - L"Incompetency", - - L"Steppenwolf", - L"Iron Anvil", - L"Grand Lord", - L"Supreme Ruler", - - // 80 - L"Dictator", - L"Old Man Death", - L"Shredder", - L"Vacuum Cleaner", - - L"Hamster", - L"Hypno-Toad", - L"Discjockey", - L"Undertaker", - - L"Gorgon", - L"Child", - L"Mob", - L"Raptor", - - L"Goddess", - L"Gender Inequality", - L"Mole", - L"Baby Jesus", - - L"Gunship", - L"Citizen", - L"Lover", - L"Mutual Fund", - - // 100 - L"Uniform", - L"Saber", - L"Snow Leopard", - L"Panther", - - L"Centaur", - L"Scorpion", - L"Serpent", - L"Black Widow", - - L"Tarantula", - L"Vulture", - L"Heretic", - L"Zombie", - - L"Role-Model", - L"Hellhound", - L"Mongoose", - L"Nurse", - - L"Nun", - L"Space Ghost", - L"Viper", - L"Mamba", - - // 120 - L"Sinner", - L"Saint", - L"Comet", - L"Meteor", - - L"Can of worms", - L"Fish oil pills", - L"Breastmilk", - L"Tentacle", - - L"Insanity", - L"Madness", - L"Cough reflex", - L"Colon", - - L"King", - L"Queen", - L"Bishop", - L"Peasant", - - L"Tower", - L"Mansion", - L"Warhorse", - L"Referee", - - // 140 -}; - -STR16 szMercCompareWebSite[] = -{ - // main page - L"Mercs Love or Dislike You", - L"Your #1 teambuilding experts on the web", - - L"About us", - L"Analyse a team", - L"Pairwise comparison", - L"Personalities", - L"Customer voices", - - L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"Your team struggles with itself.", - L"Your employees waste time working against each other.", - L"Your workforce experiences a high fluctuation rate.", - L"You constantly receive low marks on workplace satisfaction ratings.", - L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"A few citations from our satisfied customers:", - L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G., Novelist-", - L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C., Corrective law enforcement-", - L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W., Snake charmer-", - L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L., SPK-", - L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C., NASA-", - L"I fully recommend this site!", - L"-Kasper H., H&C logistic Inc-", - L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke, Kerberus Inc-", - - // analyze - L"Choose your employee", - L"Choose your squad", - - // error messages - L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s shot me!", - L"%s is scheming behind my back", - L"%s interfered in my business", - L"%s is friends with my enemy", - - L"%s got a contract before I did", - L"%s ordered a shameful retreat", - L"%s massacred the innocent", - L"%s slows us down", - - L"%s doesn't share food", - L"%s jeopardizes the mission", - L"%s is a drug addict", - L"%s is thieving scum", - - L"%s is an incompetent commander", - L"%s is overpaid", - L"%s gets all the good stuff", - L"%s mounted a gun on me", - - L"%s treated my wounds", - L"Had a good drink with %s", - L"%s is fun to get wasted with", - L"%s is annoying when drunk", - - L"%s is an idiot when drunk", - L"%s opposed our view in an argument", - L"%s supported our position", - L"%s agrees to our reasoning", - - L"%s's beliefs are contrary to ours", - L"%s knows how to calm down people", - L"%s is insensitive", - L"%s puts people in their places", - - L"%s is way too impulsive", - L"%s is disease-ridden", - L"%s treated my diseases", - L"%s does not hold back in combat", - - L"%s enjoys combat a bit too much", - L"%s is a good teacher", - L"%s led us to victory", - L"%s saved my life", - - L"%s stole my kill", - L"%s and me fought well together", - L"%s made the enemy surrender", - L"%s injured civilians", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"World Health Organization", - L"Bringing health to life", - - // links to other pages - L"About WHO", - L"Disease in Arulco", - L"About diseases", - - // text on the main page - L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"With the country being off limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"Do you wish to acquire detailed data on the current status of disease in Arulco? You can access this data on the strategic map once acquired.", - L"You currently do not have access to WHO data on the arulcan plague.", - L"You have acquired detailed maps on the status of the disease.", - L"Subscribe to map updates", - L"Unsubscribe map updates", - - // helpful tips page - L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus", - L"Experience In Security", - - // links to other pages - L"What is Kerberus?", - L"Team Contracts", - L"Individual Contracts", - - // text on the main page - L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"Our extensively trained personnel provides security for over 30 governments around the world. This includes several conflict zones.", - L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insertion via harbours or border posts is also possible.", - L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"You can select the type and number of personnel you want to hire here:", - L"Initial deployment", - L"Regular personnel", - L"Veteran personnel", - - L"%d available, %d$ each", - L"Hire: %d", - L"Cost: %d$", - - L"Select the initial operational area:", - L"Total Cost: %d$", - L"ETA: %02d:%02d", - L"Close Contract", - - L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus reinforcements have arrived in %s.", - L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"Inventory Manipulations", - - L"NVG", - L"Reload All", - L"Move", - L"", - - L"Sort", - L"Merge", - L"Separate", - L"Organize", - - L"Crates", - L"Boxes", - L"Drop B/P", - L"Pickup B/P", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"Cover Display Mode", - - L"Off", - L"Enemy", - L"Merc", - L"", - - L"Roles", - L"Fortification", - L"Tracker", - L"CTH mode", - - L"Traps", - L"Network", - L"Detector", - L"", - - L"Net A", - L"Net B", - L"Net C", - L"Net D", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Turning off cover/traps display", - L"Showing danger zones", - L"Showing merc view", - L"", - - L"Display enemy role symbols", - L"Display planned fortifications", - L"Display enemy tracks", - L"", - - L"Display trap network", - L"Display trap network colouring", - L"Display nearby traps", - L"", - - L"Display trap network A", - L"Display trap network B", - L"Display trap network C", - L"Display trap network D", -}; - - -STR16 szDynamicDialogueText[40][17] = -{ - // OPINIONEVENT_FRIENDLYFIRE - L"What the hell! $CAUSE$ attacked me!", - L"", - L"", - L"What? Me? No way, I'm engaging at the enemy!", - L"Oops.", - L"", - L"", - L"$CAUSE$ has attacked $VICTIM$. What do you do?", - L"Nah, that must have been enemy fire!", - L"Yeah, I saw it too!", - L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", - L"I saw it, it was clearly enemy fire!", - L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", - L"This is war! People get shot all the time! Speaking of... shoot more people, people!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"I would if you weren't such a wussy!", - L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"I'm doing my job. Get back to yours!", - L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"Patched together again? Good, now move!", - L"You're welcome.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'Even'? What does that mean?", - L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Nice one, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"Is there a difference?", - L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"What?!", - L"No!", - L"That is false!", - L"That is not true!", - - L"Lies, lies, lies. Nothing but lies!", - L"Liar!", - L"Traitor!", - L"You watch your mouth!", - - L"This is none of your business.", - L"Who ever invited you?", - L"Nobody asked for your opinion, $INTERJECTOR$.", - L"You stay away from me.", - - L"Why are you all against me?", - L"Why are you against me, $INTERJECTOR$?", - L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"Not listening...!", - - L"I hate this psycho circus.", - L"I hate this freak show.", - L"Back off!", - L"Lies, lies, lies...", - - L"No way!", - L"So not true.", - L"That is so not true.", - L"I know what I saw.", - - L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"Nope.", - L"You are mistaken.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"What $INTERJECTOR_GENDER$ said.", - - L"Thanks, $INTERJECTOR$!", - L"Once again I'm right!", - L"See, $CAUSE$? I am right!", - L"Once again $SPEAKER$ is right!", - - L"Aye.", - L"Yup.", - L"Yep", - L"Yes.", - - L"Indeed.", - L"True.", - L"Ha!", - L"See?", - - L"Exactly!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"That's right!", - L"Indeed!", - L"Exactly that.", - L"$CAUSE$ does that all the time.", - - L"$VICTIM$ is right!", - L"I was gonna' point that out, too!", - L"What $VICTIM$ said.", - L"That's our $CAUSE$!", - - L"Yeah!", - L"Now THIS is going to be interesting...", - L"You tell'em, $VICTIM$!", - L"Agreeing with $VICTIM$ here...", - - L"Classic $CAUSE$.", - L"I couldn't have said it better myself.", - L"That is exactly what happened.", - L"Agreed!", - - L"Yup.", - L"True.", - L"Bingo.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"Now wait a minute...", - L"Wait a sec, that's not what right...", - L"What? No.", - L"That is not what happened.", - - L"Hey, stop blaming $CAUSE$!", - L"Oh shut up, $VICTIM$!", - L"Nonono, you got that wrong.", - L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"And I suppose you never did, $VICTIM$?", - L"Hmmmm... no.", - L"Great. Let's have an argument. It's not like we have other things to do...", - L"You are mistaken!", - - L"You are wrong!", - L"Me and $CAUSE$ would never do such a thing.", - L"Nah, can't be.", - L"I don't think so.", - - L"Why bring that up now?", - L"Really, $VICTIM$? Is this necessary?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Keep silent", - L"Support $VICTIM$", - L"Support $CAUSE$", - L"Appeal to reason", - L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"he", - L"she", - L"him", - L"her", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% wisdom stat\n", - L" %s%d%% effective level\n", - - L" %s%d%% APs\n", - L" %s%d maximum breath\n", - L" %s%d%% strength to carry items\n", - L" %s%2.2f life regeneration/hour\n", - L" %s%d need for sleep\n", - L" %s%d%% water consumption\n", - L" %s%d%% food consumption\n", - - L"%s was diagnosed with %s!", - L"%s is cured of %s!", - - L"Diagnosis", - L"Treatment", - L"Burial", - L"Cancel", - - L"\n\n%s (undiagnosed) - %d / %d\n", - - L"High amount of distress can cause a personality split\n", - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"Hide", - L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|F|o|o|d: %d%%\n", - - L"max morale altered by %s%d\n", - L" %s%d need for sleep\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% assignment efficiency\n", - L" %s%d%% chance to lose stats\n", -}; - -STR16 szIMPGearWebSiteText[] = -{ - // IMP Gear Entrance - L"How should gear be selected?", - L"Old method: Random gear according to your choices", - L"New method: Free selection of gear", - L"Old method", - L"New method", - - // IMP Gear Entrance - L"I.M.P. Equipment", - L"Additional Cost: %d$ (%d$ prepaid)", -}; - -STR16 szIMPGearPocketText[] = -{ - L"Select helmet", - L"Select vest", - L"Select leg armor", - L"Select face gear", - L"Select face gear", - - L"Select main gun", - L"Select sidearm", - - L"Select LBE vest", - L"Select left LBE holster", - L"Select right LBE holster", - L"Select LBE combat pack", - L"Select LBE backpack", - - L"Select launcher / rifle", - L"Select melee weapon", - - L"Select additional items", //BIGPOCK1POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select kit item", //MEDPOCK1POS - L"Select kit item", - L"Select kit item", - L"Select kit item", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select additional items", //SMALLPOCK19POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"We cannot relay orders to this sector, militia command not possible.", - L"Unassigned", - L"Group No.", - L"Next", - - L"ETA", - L"Group %d (new)", - L"Group %d", - L"Final", - - L"Volunteers: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = -{ - L"Enemy helicopter shot down in %s!", - L"We... uhm... currently don't control that site, commander...", - L"The SAM does not need maintenance at the moment.", - L"We've already ordered the repair, this will take time.", - - L"We do not have enough resources to do that.", - L"Repair SAM site? This will cost %d$ and take %d hours.", - L"Enemy helicopter hit in %s.", - L"%s fires %s at enemy helicopter in %s.", - - L"SAM in %s fires at enemy helicopter in %s.", -}; - -STR16 szFortificationText[] = -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"Militia", - L"Militia Forces Overview", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Took part in Operation %s", - L"Recruited on Day %d, %d:%02d in %s", - L"Promoted on Day %d, %d:%02d", - L"KIA, Operation %s", - - L"Lightly wounded during Operation %s", - L"Heavily wounded during Operation %s", - L"Critically wounded during Operation %s", - L"Valiantly fought in Operation %s", - - L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", - L"Defected to us on Day %d, %d:%02d in %s", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"All sectors", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"Merchant is hostile and does not want to trade.", - L"Merchant is in no state to do business.", - L"Merchant won't trade during combat.", - L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = -{ - L"normal", - L"rain", - L"thunderstorm", - L"sandstorm", - - L"snow", -}; - -STR16 szSnakeText[] = -{ - L"%s evaded a snake attack!", - L"%s was attacked by a snake!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"Converted %s into resources", - L"Guns: ", - L"Armour: ", - L"Misc: ", - - L"There are no volunteers left for militia!", - L"Not enough resources to train militia!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s starts hacking.", - L"%s accesses the computer, but finds nothing of interest.", - L"%s is not skilled enough to hack the computer.", - L"%s reads the file, but learns nothing new.", - - L"%s can't make sense out of this.", - L"%s couldn't use the watertap.", - L"%s has bought a %s.", - L"%s doesn't have enough money. That's just embarassing.", - - L"%s drank from water tap", - L"This machine doesn't seem to be working.", -}; - -STR16 szLaptopStatText[] = -{ - L"threaten effectiveness %d\n", - L"leadership %d\n", - L"approach modifier %.2f\n", - L"background modifier %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Good Guy", - L"%s eschews excessive violence and will refuse to attack non-hostiles.", - - L"Friendly approach", - L"Direct approach", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -STR16 szGearTemplateText[] = -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", -}; - -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -STR16 szFactoryText[] = -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Space Available:", - L"MOLLE Space Required:", - L"MOLLE Small Slot Count:", - L"MOLLE Medium Slot Count:", - L"MOLLE Pouch Size: Small", - L"MOLLE Pouch Size: Medium", - L"MOLLE Pouch Size: Medium (Hydration)", - L"Thigh Rig", - L"Vest", - L"Combat Pack", - L"Backpack", // 10 - L"MOLLE Pouch", - L"Compatible backpacks:", - L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia that appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //ENGLISH +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("ENGLISH") + + #if defined( ENGLISH ) + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_EnglishText_public_symbol(void); + +#if defined( ENGLISH ) + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; + +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Locations", // 0 + L"Characters", + L"Items", + L"Quests", + L"Menu 5", + L"Menu 6", //5 + L"Menu 7", + L"Menu 8", + L"Menu 9", + L"Menu 10", + L"Menu 11", //10 + L"Menu 12", + L"Menu 13", + L"Menu 14", + L"Menu 15", + L"Menu 15", // 15 + + //Briefing Room + L"Enter", +}; + +STR16 pOtherButtonsText[] = +{ + L"Briefing", + L"Accept", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Briefing", + L"Accept missions", +}; + + +STR16 pLocationPageText[] = +{ + L"Prev page", + L"Photo", + L"Next page", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"Main page", + L">>", + L"Type: ", + L"Empty data", + L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", + L"Briefing Room. Please click the 'Enter' button.", +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Unknown",// 0 - unknown + L"City", //1 - city + L"SAM Site", //2 - SAM Site + L"Other Location", //3 - other location + L"Mine", //4 - mines + L"Military Complex", //5 - military complex + L"Laboratory Complex", //6 - laboratory complex + L"Factory Complex", //7 - factory complex + L"Hospital", //8 - hospital + L"Prison", //9 - prison + L"Airport", //10 - airport +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Show All", + L"Show AIM", + L"Show MERC", + L"Show RPC", + L"Show NPC", + L"Show Vehicle", + L"Show IMP", + L"Show EPC", + L"Filter", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"All", + L"AIM", + L"MERC", + L"RPC", + L"NPC", + L"Veh.", + L"IMP", + L"EPC", + L"Filter", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Show All", + L"Show City", + L"Show SAM Site", + L"Show Other Location", + L"Show Mine", + L"Show Military Complex", + L"Show Laboratory Complex", + L"Show Factory Complex", + L"Show Hospital", + L"Show Prison", + L"Show Airport", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"All", + L"City", + L"SAM", + L"Other", + L"Mine", + L"Mil.", + L"Lab.", + L"Fact.", + L"Hosp.", + L"Prison", + L"Air.", +}; + +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"All",//0 + L"City", + L"SAM", + L"Mine", + L"Airport", + L"Wilder.", + L"Underg.", + L"Facil.", + L"Other", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//facility index + 1 + L"Show Cities", + L"Show SAM sites", + L"Show mines", + L"Show airports", + L"Show sectors in wilderness", + L"Show underground sectors", + L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", + L"Show Other sectors", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; + +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"All",//0 + L"A.I.M.", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"Other",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//Other index + 1 + L"Show A.I.M. members", + L"Show M.E.R.C staff", + L"Show Rebels", + L"Show Non-hirable Characters", + L"Show Player created Characters", + L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", +}; + +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Vehic.", + L"EPC", + L"",//reserved. Insert new Other filters above! +}; + +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"All",//0 + L"Gun", + L"Ammo", + L"Armor", + L"LBE", + L"Attach.", + L"Misc",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", +}; + +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Helmet", + L"Vest", + L"Pant", + L"Plate", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Tight", + L"Vest", + L"Combat", + L"Backp.", + L"Pocket", + L"Other", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Optic", + L"Side", + L"Muzzle", + L"Extern.", + L"Intern.", + L"Other", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"Blade", + L"T.Knife", + L"Punch", + L"Grenade", + L"Bomb", + L"Medikit", + L"Kit", + L"Face", + L"Other", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; + +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"All", + L"Active", + L"Compl.", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Active Quests", + L"Show Completed Quests", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"All", //0 + L"Gun", + L"Ammo", + L"LBE", + L"Misc", + + L"Show All", //5 + L"Show Gun", + L"Show Ammo", + L"Show LBE Gear", + L"Show Misc", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"Heavy", + L"Pistol", + L"M. Pist.", + L"SMG", + L"Rifle", + L"S. Rifle", + L"A. Rifle", + L"MG", + L"Shotg.", + + // Ammo + L"Pistol", + L"M. Pist.", //10 + L"SMG", + L"Rifle", + L"S. Rifle", + L"A. Rifle", + L"MG", + L"Shotg.", + + // Used + L"Gun", + L"Armor", + L"LBE Gear", + L"Misc", //20 + + // Armour + L"Helmet", + L"Vest", + L"Legging", + L"Plate", + + // Misc + L"Blade", + L"Th. Kn.", + L"Blunt", + L"Grena.", + L"Bomb", + L"Med.", //30 + L"Kit", + L"Face", + L"LBE", + L"Misc", //34 +}; + +STR16 QuestDescText[] = +{ + L"Deliver Letter", + L"Food Route", + L"Terrorists", + L"Kingpin Chalice", + L"Kingpin Money", + L"Runaway Joey", + L"Rescue Maria", + L"Chitzena Chalice", + L"Held in Alma", + L"Interrogation", + + L"Hillbilly Problem", //10 + L"Find Scientist", + L"Deliver Video Camera", + L"Blood Cats", + L"Find Hermit", + L"Creatures", + L"Find Chopper Pilot", + L"Escort SkyRider", + L"Free Dynamo", + L"Escort Tourists", + + + L"Doreen", //20 + L"Leather Shop Dream", + L"Escort Shank", + L"No 23 Yet", + L"No 24 Yet", + L"Kill Deidranna", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", +}; + +STR16 FactDescText[] = +{ + L"Omerta Liberated", + L"Drassen Liberated", + L"Sanmona Liberated", + L"Cambria Liberated", + L"Alma Liberated", + L"Grumm Liberated", + L"Tixa Liberated", + L"Chitzena Liberated", + L"Estoni Liberated", + L"Balime Liberated", + + L"Orta Liberated", //10 + L"Meduna Liberated", + L"Pacos approached", + L"Fatima Read note", + L"Fatima Walked away from player", + L"Dimitri (#60) is dead", + L"Fatima responded to Dimitri's surprise", + L"Carlo's exclaimed 'no one moves'", + L"Fatima described note", + L"Fatima arrives at final dest", + + L"Dimitri said Fatima has proof", //20 + L"Miguel overheard conversation", + L"Miguel asked for letter", + L"Miguel read note", + L"Ira comment on Miguel reading note", + L"Rebels are enemies", + L"Fatima spoken to before given note", + L"Start Drassen quest", + L"Miguel offered Ira", + L"Pacos hurt/Killed", + + L"Pacos is in A10", //30 + L"Current Sector is safe", + L"Bobby R Shpmnt in transit", + L"Bobby R Shpmnt in Drassen", + L"33 is TRUE and it arrived within 2 hours", + L"33 is TRUE 34 is false more then 2 hours", + L"Player has realized part of shipment is missing", + L"36 is TRUE and Pablo was injured by player", + L"Pablo admitted theft", + L"Pablo returned goods, set 37 false", + + L"Miguel will join team", //40 + L"Gave some cash to Pablo", + L"Skyrider is currently under escort", + L"Skyrider is close to his chopper in Drassen", + L"Skyrider explained deal", + L"Player has clicked on Heli in Mapscreen at least once", + L"NPC is owed money", + L"Npc is wounded", + L"Npc was wounded by Player", + L"Father J.Walker was told of food shortage", + + L"Ira is not in sector", //50 + L"Ira is doing the talking", + L"Food quest over", + L"Pablo stole something from last shpmnt", + L"Last shipment crashed", + L"Last shipment went to wrong airport", + L"24 hours elapsed since notified that shpment went to wrong airport", + L"Lost package arrived with damaged goods. 56 to False", + L"Lost package is lost permanently. Turn 56 False", + L"Next package can (random) be lost", + + L"Next package can(random) be delayed", //60 + L"Package is medium sized", + L"Package is largesized", + L"Doreen has conscience", + L"Player Spoke to Gordon", + L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo asked for first aid", + L"Dynamo can be recruited", + L"Npc is bleeding", + L"Shank wants to join", + + L"NPC is bleeding", //70 + L"Player Team has head & Carmen in San Mona", + L"Player Team has head & Carmen in Cambria", + L"Player Team has head & Carmen in Drassen", + L"Father is drunk", + L"Player has wounded mercs within 8 tiles of NPC", + L"1 & only 1 merc wounded within 8 tiles of NPC", + L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda is in the store ", + L"Brenda is Dead", + + L"Brenda is at home", //80 + L"NPC is an enemy", + L"Speaker Strength >= 84 and < 3 males present", + L"Speaker Strength >= 84 and at least 3 males present", + L"Hans lets ou see Tony", + L"Hans is standing on 13523", + L"Tony isnt available Today", + L"Female is speaking to NPC", + L"Player has enjoyed the Brothel", + L"Carla is available", + + L"Cindy is available", //90 + L"Bambi is available", + L"No girls is available", + L"Player waited for girls", + L"Player paid right amount of money", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping expectingh visit from player", + L"Darren expecting money from player", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; + +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Delete", + L"Delete item (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"north", + L"northeast", + L"east", + L"southeast", + L"south", + L"southwest", + L"west", + L"northwest" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Toggle viewing of players", //0 + L"Toggle viewing of enemies", + L"Toggle viewing of creatures", + L"Toggle viewing of rebels", + L"Toggle viewing of civilians", + + L"Player", + L"Enemy", + L"Creature", + L"Rebels", + L"Civilian", + + L"DETAILED PLACEMENT", //10 + L"General information mode", + L"Physical appearance mode", + L"Attributes mode", + L"Inventory mode", + L"Profile ID mode", + L"Schedule mode", + L"Schedule mode", + L"DELETE", + L"Delete currently selected merc (|D|e|l)", + L"NEXT", //20 + L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", + L"Toggle priority existance", + L"Toggle whether or not placement\nhas access to all doors", + + //Orders + L"STATIONARY", + L"ON GUARD", + L"ON CALL", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", //30 + L"RND PT PATROL", + + //Attitudes + L"DEFENSIVE", + L"BRAVE SOLO", + L"BRAVE AID", + L"AGGRESSIVE", + L"CUNNING SOLO", + L"CUNNING AID", + + L"Set merc to face %s", + + L"Find", + L"BAD", //40 + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"BAD", + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"Previous color set", //50 + L"Next color set", + + L"Previous body type", + L"Next body type", + + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + + L"No action", + L"No action", + L"No action", //60 + L"No action", + + L"Clear Schedule", + + L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"ROOFS", //0 + L"WALLS", + L"ROOM INFO", + + L"Place walls using selection method", + L"Place doors using selection method", + L"Place roofs using selection method", + L"Place windows using selection method", + L"Place damaged walls using selection method.", + L"Place furniture using selection method", + L"Place wall decals using selection method", + L"Place floors using selection method", //10 + L"Place generic furniture using selection method", + L"Place walls using smart method", + L"Place doors using smart method", + L"Place windows using smart method", + L"Place damaged walls using smart method", + L"Lock or trap existing doors", + + L"Add a new room", + L"Edit cave walls.", + L"Remove an area from existing building.", + L"Remove a building", //20 + L"Add/replace building's roof with new flat roof.", + L"Copy a building", + L"Move a building", + L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", + L"Erase room numbers", + + L"Toggle |Erase mode", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Cycle brush size (|A/|Z)", + L"Roofs (|H)", + L"|Walls", //30 + L"Room Info (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Wpns", //0 + L"Ammo", + L"Armour", + L"LBE", + L"Exp", + L"E1", + L"E2", + L"E3", + L"Triggers", + L"Keys", + L"Rnd", //10 + L"Previous (|,)", // previous page + L"Next (|.)", // next page +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Add ambient light source", //0 + L"Toggle fake ambient lights.", + L"Add exit grids (r-clk to query existing).", + L"Cycle brush size (|A/|Z)", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", + L"Specify north point for validation purposes.", + L"Specify west point for validation purposes.", + L"Specify east point for validation purposes.", + L"Specify south point for validation purposes.", + L"Specify center point for validation purposes.", //10 + L"Specify isolated point for validation purposes.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"New outdoor level", //0 + L"New basement", + L"New cave level", + L"Save map (|C|t|r|l+|S)", + L"Load map (|C|t|r|l+|L)", + L"Select tileset", + L"Leave Editor mode", + L"Exit game (|A|l|t+|X)", + L"Create radar map", + L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", + L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Draw |Ground textures", //0 + L"Set map ground textures", + L"Place banks and |Cliffs", + L"Draw roads (|P)", + L"Draw |Debris", + L"Place |Trees & bushes", + L"Place |Rocks", + L"Place barrels & |Other junk", + L"Fill area", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", //10 + L"Cycle brush size (|A/|Z)", + L"Raise brush density (|])", + L"Lower brush density (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Terrain", //0 + L"Buildings", + L"Items", + L"Mercs", + L"Map Info", + L"Options", + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text + L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text + L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text + L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text + L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"North Entry Point", //0 + L"West Entry Point", + L"East Entry Point", + L"South Entry Point", + L"Center Entry Point", + L"Isolated Entry Point", + + L"Prime", + L"Night", + L"24Hour", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Panic Trigger1", //0 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", + + L"Pressure Action", + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"No Lock ID", //0 + L"Explosion Trap", + L"Electric Trap", + L"Siren Trap", + L"Silent Alarm", + L"Super Electric Trap", //5 + L"Brothel Siren Trap", + L"Trap Level %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 + L"No map currently loaded.", + L"File: %S, Current Tileset: %s", + L"Enlarge map on loading", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"TOGGLE", //0 + L"VIEWS", + L"SELECTION METHOD", + L"SMART METHOD", + L"BUILDING METHOD", + L"Room#", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Editing lock attributes at map index %d.", + L"Lock ID", + L"Trap Type", + L"Trap Level", + L"Locked", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Pressure Action", //0 + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", + + L"Panic Trigger1", //5 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Status Info Line 1", + L"Status Info Line 2", + L"Status Info Line 3", + L"Status Info Line 4", + L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Prime", + L"Night", + L"24Hrs", //5 + + L"Radius", + + L"Underground", + L"Light Level", + + L"Outdoors", + L"Basement", //10 + L"Caves", + + L"Restricted", + L"Scroll ID", + + L"Destination", + L"Sector", //15 + L"Destination", + L"Bsmt. Level", + L"Dest.", + L"GridNo", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"No action", + L"Lock door", + L"Unlock door", + L"Open door", + L"Close door", + L"Move to gridno", + L"Leave sector", + L"Enter sector", + L"Stay in sector", + L"Sleep", + L"Ignore this!" +}; + +STR16 zDiffNames[5] = // NUM_DIFF_LVLS = 5 +{ + L"Wimp", + L"Easy", + L"Average", + L"Tough", + L"Steroid Users Only" +}; + +STR16 EditMercStat[12] = +{ + L"Max Health", + L"Cur Health", + L"Strength", + L"Agility", + L"Dexterity", + L"Charisma", + L"Wisdom", + L"Marksmanship", + L"Explosives", + L"Medical", + L"Scientific", + L"Exp Level", +}; + + +STR16 EditMercOrders[8] = +{ + L"Stationary", + L"On Guard", + L"Close Patrol", + L"Far Patrol", + L"Point Patrol", + L"On Call", + L"Seek Enemy", + L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Defensive", + L"Brave Loner", + L"Brave Buddy", + L"Cunning Loner", + L"Cunning Buddy", + L"Aggressive", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Merc Name:", //0 + L"Orders:", + L"Combat Attitude:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Merc Colors", //0 + L"Done", + + L"Previous merc standing orders", + L"Next merc standing orders", + + L"Previous merc combat attitude", + L"Next merc combat attitude", //5 + + L"Decrease merc stat", + L"Increase merc stat", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Random", //0 + L"Reg Male", + L"Big Male", + L"Stocky Male", + L"Reg Female", + L"NE Tank", //5 + L"NW Tank", + L"Fat Civilian", + L"M Civilian", + L"Miniskirt", + L"F Civilian", //10 + L"Kid w/ Hat", + L"Humvee", + L"Eldorado", + L"Icecream Truck", + L"Jeep", //15 + L"Kid Civilian", + L"Domestic Cow", + L"Cripple", + L"Unarmed Robot", + L"Larvae", //20 + L"Infant", + L"Yng F Monster", + L"Yng M Monster", + L"Adt F Monster", + L"Adt M Monster", //25 + L"Queen Monster", + L"Bloodcat", + L"Humvee", +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=ORDERS=-- ", //0 + L"--=ATTITUDE=--", + + L"RELATIVE", + L"ATTRIBUTES", + + L"RELATIVE", + L"EQUIPMENT", + + L"RELATIVE", + L"ATTRIBUTES", + + L"Army", + L"Admin", + L"Elite", //10 + + L"Exp. Level", + L"Life", + L"LifeMax", + L"Marksmanship", + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Leadership", + L"Explosives", //20 + L"Medical", + L"Mechanical", + L"Morale", + + L"Hair color:", + L"Skin color:", + L"Vest color:", + L"Pant color:", + + L"RANDOM", + L"RANDOM", + L"RANDOM", //30 + L"RANDOM", + + L"By specifying a profile index, all of the information will be extracted from the profile ", + L"and override any values that you have edited. It will also disable the editing features ", + L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", + L"extract the number you have typed. A blank field will clear the profile. The current ", + L"number of profiles range from 0 to ", + + L"Current Profile: n/a ", + L"Current Profile: %s", + + L"STATIONARY", + L"ON CALL", //40 + L"ON GUARD", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", + L"RND PT PATROL", + + L"Action", + L"Time", + L"V", + L"GridNo 1", //50 + L"GridNo 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"lock", + L"unlock", + L"open", + L"close", + + L"Click on the gridno adjacent to the door that you wish to %s.", //60 + L"Click on the gridno where you wish to move after you %s the door.", + L"Click on the gridno where you wish to move to.", + L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", + L" Hit ESC to abort entering this line in the schedule.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"Slot #%d", + L"Patrol orders with no waypoints", + L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"No action", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Placement not copied because no placement selected.", + L"Placement copied.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Placement not pasted as no placement is saved in buffer.", + L"Placement pasted.", + L"Placement not pasted as the maximum number of placements for this team has been reached.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Exit editor?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Are you sure you wish to remove all lights?", //0 + L"Are you sure you wish to reverse the schedules?", + L"Are you sure you wish to clear all of the schedules?", + + L"Clicked Placement Enabled", + L"Clicked Placement Disabled", + + L"Draw High Ground Enabled", //5 + L"Draw High Ground Disabled", + + L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"Random Placement Enabled", + L"Random Placement Disabled", + + L"Removing Treetops", //10 + L"Showing Treetops", + + L"World Raise Reset", + + L"World Raise Set Old", + L"World Raise Set", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"Creating radar map for %S", //0 + + L"Delete current map and start a new basement level?", + L"Delete current map and start a new cave level?", + L"Delete current map and start a new outdoor level?", + + L" Wipe out ground textures? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 + L"Toggle fake editor lighting ON/OFF", + + L"INSERT", + L"Toggle fill mode ON/OFF", + + L"BKSPC", + L"Undo last change", + + L"DEL", + L"Quick erase object under mouse cursor", + + L"ESC", + L"Exit editor", + + L"PGUP/PGDN", //10 + L"Change object to be pasted", + + L"F1", + L"This help screen", + + L"F10", + L"Save current map", + + L"F11", + L"Load map as current", + + L"+/-", + L"Change shadow darkness by .01", + + L"SHFT +/-", //20 + L"Change shadow darkness by .05", + + L"0 - 9", + L"Change map/tileset filename", + + L"b", + L"Change brush size", + + L"d", + L"Draw debris", + + L"o", + L"Draw obstacle", + + L"r", //30 + L"Draw rocks", + + L"t", + L"Toggle trees display ON/OFF", + + L"g", + L"Draw ground textures", + + L"w", + L"Draw building walls", + + L"e", + L"Toggle erase mode ON/OFF", + + L"h", //40 + L"Toggle roofs ON/OFF", +}; + +STR16 pAutoLoadMapText[] = +{ + L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +STR16 pShowHighGroundText[] = +{ + L"Showing High Ground Markers", + L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = +{ + L"Klaxon Mine", + L"Flare Mine", + L"Teargas Explosion", + L"Stun Explosion", + L"Smoke Explosion", + L"Mustard Gas", + L"Land Mine", + L"Open Door", + L"Close Door", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Small Explosion", + L"Medium Explosion", + L"Large Explosion", + L"Toggle Door", + L"Toggle Action1s", + L"Toggle Action2s", + L"Toggle Action3s", + L"Toggle Action4s", + L"Enter Brothel", + L"Exit Brothel", + L"Kingpin Alarm", + L"Sex with Prostitute", + L"Reveal Room", + L"Local Alarm", + L"Global Alarm", + L"Klaxon Sound", + L"Unlock door", + L"Toggle lock", + L"Untrap door", + L"Tog pressure items", + L"Museum alarm", + L"Bloodcat alarm", + L"Big teargas", +}; +*/ +STR16 pUpdateItemStatsPanelText[] = +{ + L"Toggle hide flag", //0 + L"No item selected.", + L"Slot available for", + L"Random generation.", + L"Keys not editable.", + L"ProfileID of owner", + L"Item class not implemented.", + L"Slot locked as empty.", + L"Status", + L"Rounds", + L"Trap Level", //10 + L"Quantity", + L"Trap Level", + L"Status", + L"Trap Level", + L"Status", + L"Quantity", + L"Trap Level", + L"Dollars", + L"Status", + L"Trap Level", //20 + L"Trap Level", + L"Tolerance", + L"Alarm Trigger", + L"Exist Chance", + L"B", + L"R", + L"S", +}; + +STR16 pSetupGameTypeFlagsText[] = +{ + L"Item appears in both Sci-Fi and Realistic modes", //0 + L"Item appears in Realistic mode only", + L"Item appears in Sci-Fi mode only", +}; + +STR16 pSetupGunGUIText[] = +{ + L"SILENCER", //0 + L"SNIPERSCOPE", + L"LASERSCOPE", + L"BIPOD", + L"DUCKBILL", + L"G-LAUNCHER", //5 +}; + +STR16 pSetupArmourGUIText[] = +{ + L"CERAMIC PLATES", //0 +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"DETONATOR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"Okay", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"LOAD", + L"SAVE", + L"Update", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"Tileset: %s", //0 + L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", + L"Number of items: %d", + L"Number of lights: %d", + L"Number of entry points: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"Number of rooms: %d", + L"Total map population: %d", + L"Enemies: %d", + L"Admins: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Troops: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Elites: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Civilians: %d", //20 + + L"(%d detailed, %d profile -- %d have priority existance)", + + L"Humans: %d", + L"Cows: %d", + L"Bloodcats: %d", + + L"Creatures: %d", + + L"Monsters: %d", + L"Bloodcats: %d", + + L"Number of locked and/or trapped doors: %d", + L"Locked: %d", + L"Trapped: %d", //30 + L"Locked & Trapped: %d", + + L"Civilians with schedules: %d", + + L"Too many exit grid destinations (more than 4)...", + L"ExitGrids: %d (%d with a long distance destination)", + L"ExitGrids: none", + L"ExitGrids: 1 destination using %d exitgrids", + L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 + L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"%d placements have patrol orders without any waypoints defined.", + L"%d placements have waypoints, but without any patrol orders.", + L"%d gridnos have questionable room numbers. Please validate.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Enemy", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"Panic1", + L"Panic2", + L"Panic3", + L"Norm1", + L"Norm2", + L"Norm3", + L"Norm4", //10 + L"Pressure Actions", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"PRIORITY ENEMY DROPPED ITEMS", + L"None", + + L"TOO MANY ITEMS TO DISPLAY!", + L"NORMAL ENEMY DROPPED ITEMS", + L"TOO MANY ITEMS TO DISPLAY!", + L"None", + L"TOO MANY ITEMS TO DISPLAY!", + L"ERROR: Can't load the items for this map. Reason unknown.", //20 +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 + L"(NO MAP LOADED).", + L"You currently have %d outdated maps.", + L"The more maps that need to be updated, the longer it takes. It'll take ", + L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"depending on your computer, it may vary.", + L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"There is no sector currently selected.", + + L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"You need to either load an existing map or create a new map before being", + L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 + + L", ground level", + L", underground level 1", + L", underground level 2", + L", underground level 3", + L", alternate G level", + L", alternate B1 level", + L", alternate B2 level", + L", alternate B3 level", + + L"ITEM DETAILS -- sector %s", + L"Summary Information for sector %s:",//20 + + L"Summary Information for sector %s", + L"does not exist.", + + L"Summary Information for sector %s", + L"does not exist.", + + L"No information exists for sector %s.", + + L"No information exists for sector %s.", + + L"FILE: %s", + + L"FILE: %s", + + L"Override READONLY", + L"Overwrite File", //30 + + L"You currently have no summary data. By creating one, you will be able to keep track", + L"of information pertaining to all of the sectors you edit and save. The creation process", + L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"Do you wish to do this now (y/n)?", + + L"No summary info. Creation denied.", + + L"Grid", + L"Progress", //40 + L"Use Alternate Maps", + + L"Summary", + L"Items", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"Analyzing map: %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Loading map: %s", +}; + +STR16 pReportErrorText[] = +{ + L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Generating map information", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"Generating map summary", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MAJOR VERSION UPDATE", + L"There are %d maps requiring a major version update.", + L"Updating all outdated maps", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] from default tileset %s (%d, %S)", + L"File: %S, subindex: %d (%d, %S)", + L"Tileset: %s", +}; + +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Accept selections (|E|n|t|e|r)", + L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", + L"Scroll window up (|U|p)", + L"Scroll window down (|D|o|w|n)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Small", + L"Medium", + L"Large", + L"XLarge", + L"Width: xx", + L"Area" + }; + +//--- + +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Page 1/2", //0 + L"Page 2/2", + + L"Page 1/3", + L"Page 2/3", + L"Page 3/3", + + L"Page 1/1", //5 +}; + +// by Jazz: +CHAR16 zGrod[][500] = +{ + L"Robot", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 Development Team", + L"@T,C144,R134,{;Coding", + L"@T,C144,R134,{;Graphics and Sounds", + L"@};(Various other mods!)", + L"@T,C144,R134,{;Items", + L"@T,C144,R134,{;Other Contributors", + L"@};(All other community members who contributed input and feedback!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L".38 cal", +// L"9mm", +// L".45 cal", +// L".357 cal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm NATO", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Rocket", +// L"", // dart +// L"", // flame +// L".50 cal", // barrett +// L"9mm Hvy", // Val silent +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L".38 cal", +// L"9mm", +// L".45 cal", +// L".357 cal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm N.", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Rocket", +// L"dart", // dart +// L"", // flamethrower +// L".50 cal", // barrett +// L"9mm Hvy", // Val silent +//}; + + +CHAR16 WeaponType[MAXITEMS][30] = +{ + L"Other", + L"Pistol", + L"MP", + L"SMG", + L"Rifle", + L"Sniper rifle", + L"Assault rifle", + L"LMG", + L"Shotgun", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Player's Turn", // player's turn + L"Opponents' Turn", + L"Creatures' Turn", + L"Militia's Turn", + L"Civilians' Turn", + L"Player_Plan",// planning turn + L"Client #1",//hayden + L"Client #2",//hayden + L"Client #3",//hayden + L"Client #4",//hayden + +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s is hit in the head and loses a point of wisdom!", + L"%s is hit in the shoulder and loses a point of dexterity!", + L"%s is hit in the chest and loses a point of strength!", + L"%s is hit in the legs and loses a point of agility!", + L"%s is hit in the head and loses %d points of wisdom!", + L"%s is hit in the shoulder and loses %d points of dexterity!", + L"%s is hit in the chest and loses %d points of strength!", + L"%s is hit in the legs and loses %d points of agility!", + L"Interrupt!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"Your reinforcements have arrived!", + + // In the following four lines, all %s's are merc names + + L"%s reloads.", + L"%s doesn't have enough Action Points!", + L"%s is applying first aid. (Press any key to cancel.)", + L"%s and %s are applying first aid. (Press any key to cancel.)", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"reliable", + L"unreliable", + L"easy to repair", + L"hard to repair", + L"high damage", + L"low damage", + L"quick firing", + L"slow firing", + L"long range", + L"short range", + L"light", + L"heavy", + L"small", + L"fast burst fire", + L"no burst fire", + L"large magazine", + L"small magazine", + + // In the following two lines, all %s's are merc names + + L"%s's camouflage has worn off.", + L"%s's camouflage has washed off.", + + // The first %s is a merc name and the second %s is an item name + + L"Second weapon is out of ammo!", + L"%s has stolen the %s.", + + // The %s is a merc name + + L"%s's weapon can't burst fire.", + + L"You've already got one of those attached.", + L"Merge items?", + + // Both %s's are item names + + L"You can't attach a %s to a %s.", + + L"None", + L"Eject ammo", + L"Attachments", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and you gas mask at the same time. + L"You cannot use your %s and your %s at the same time.", + + L"The item you have in your cursor can be attached to certain items by placing it in one of the four attachment slots.", + L"The item you have in your cursor can be attached to certain items by placing it in one of the four attachment slots. (However in this case, the item is not compatible.)", + L"The sector isn't cleared of enemies!", + L"You still need to give %s %s", + L"%s is hit in the head!", + L"Abandon the fight?", + L"This attachment will be permanent. Go ahead with it?", + L"%s feels more energetic!", + L"%s slipped on some marbles!", + L"%s failed to grab the %s from enemy's hand!", + L"%s has repaired the %s", + L"Interrupt for ", + L"Surrender?", + L"This person refuses your aid.", + L"I DON'T think so!", + L"To travel in Skyrider's chopper, you'll have to ASSIGN mercs to VEHICLE/HELICOPTER first.", + L"%s only had enough time to reload ONE gun", + L"Bloodcats' turn", + L"full auto", + L"no full auto", + L"accurate", + L"inaccurate", + L"no semi auto", + L"The enemy has no more items to steal!", + L"The enemy has no item in its hand!", + + L"%s's desert camouflage has worn off.", + L"%s's desert camouflage has washed off.", + + L"%s's wood camouflage has worn off.", + L"%s's wood camouflage has washed off.", + + L"%s's urban camouflage has worn off.", + L"%s's urban camouflage has washed off.", + + L"%s's snow camouflage snow has worn off.", + L"%s's snow camouflage has washed off.", + + L"You cannot attach %s to this slot.", + L"The %s will not fit in any open slots.", + L"There's not enough space for this pocket.", + + L"%s has repaired the %s as much as possible.", + L"%s has repaired %s's %s as much as possible.", + + L"%s has cleaned the %s.", + L"%s has cleaned %s's %s.", + + L"Assignment not possible at the moment", + L"No militia that can be drilled present.", + + L"%s has fully explored %s.", +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracona", + L"Traconian", +#else + L"Arulco", + L"Arulcan", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"Paused", + L"Normal", + L"5 min", + L"30 min", + L"60 min", + L"6 hrs", +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"Squad 1", + L"Squad 2", + L"Squad 3", + L"Squad 4", + L"Squad 5", + L"Squad 6", + L"Squad 7", + L"Squad 8", + L"Squad 9", + L"Squad 10", + L"Squad 11", + L"Squad 12", + L"Squad 13", + L"Squad 14", + L"Squad 15", + L"Squad 16", + L"Squad 17", + L"Squad 18", + L"Squad 19", + L"Squad 20", + L"Squad 21", + L"Squad 22", + L"Squad 23", + L"Squad 24", + L"Squad 25", + L"Squad 26", + L"Squad 27", + L"Squad 28", + L"Squad 29", + L"Squad 30", + L"Squad 31", + L"Squad 32", + L"Squad 33", + L"Squad 34", + L"Squad 35", + L"Squad 36", + L"Squad 37", + L"Squad 38", + L"Squad 39", + L"Squad 40", + L"On Duty", // on active duty + L"Doctor", // administering medical aid + L"Patient", // getting medical aid + L"Vehicle", // in a vehicle + L"In Trans", // in transit - abbreviated form + L"Repair", // repairing + L"Radio Scan", // scanning for nearby patrols + L"Practice", // training themselves + L"Militia", // training a town to revolt + L"M.Militia", //training moving militia units + L"Trainer", // training a teammate + L"Student", // being trained by someone else + L"GetItem", // move items + L"Staff", // operating a strategic facility + L"Eat", // eating at a facility (cantina etc.) + L"Rest", // Resting at a facility + L"Prison", // interrogate prisoners + L"Dead", // dead + L"Incap.", // abbreviation for incapacitated + L"POW", // Prisoner of war - captured + L"Hospital", // patient in a hospital + L"Empty", // Vehicle is empty + L"Snitch", // facility: undercover prisoner (snitch) + L"Propag.", // facility: spread propaganda + L"Propag.", // facility: spread propaganda (globally) + L"Rumours", // facility: gather information + L"Propag.", // spread propaganda + L"Rumours", // gather information + L"Command", // militia movement orders + L"Diagnose", // disease diagnosis + L"Treat D.", // treat disease among the population + L"Doctor", // administering medical aid + L"Patient", // getting medical aid + L"Repair", // repairing + L"Fortify", // build structures according to external layout + L"Train W.", + L"Hide", + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", + L"Explore", + L"Event", // rftr: merc is on a mini event + L"Mission", // rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"Militia", // the title of the militia box + L"Unassigned", //the number of unassigned militia troops + L"You can't redistribute militia while there are hostilities in the area!", + L"Some militia were not assigned to a sector. Would you like to disband them?", // HEADROCK HAM 3.6 +}; + + +STR16 pMilitiaButtonString[] = +{ + L"Auto", // auto place the militia troops for the player + L"Done", // done placing militia troops + L"Disband", // HEADROCK HAM 3.6: Disband militia + L"Unassign All", // move all milita troops to unassigned pool +}; + +STR16 pConditionStrings[] = +{ + L"Excellent", //the state of a soldier .. excellent health + L"Good", // good health + L"Fair", // fair health + L"Wounded", // wounded health + L"Fatigued", // tired + L"Bleeding", // bleeding to death + L"Unconscious", // knocked out + L"Dying", // near death + L"Dead", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"On Duty", // set merc on active duty + L"Patient", // set as a patient to receive medical aid + L"Vehicle", // tell merc to enter vehicle + L"Unescort", // let the escorted character go off on their own + L"Cancel", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"Squad 1", + L"Squad 2", + L"Squad 3", + L"Squad 4", + L"Squad 5", + L"Squad 6", + L"Squad 7", + L"Squad 8", + L"Squad 9", + L"Squad 10", + L"Squad 11", + L"Squad 12", + L"Squad 13", + L"Squad 14", + L"Squad 15", + L"Squad 16", + L"Squad 17", + L"Squad 18", + L"Squad 19", + L"Squad 20", + L"Squad 21", + L"Squad 22", + L"Squad 23", + L"Squad 24", + L"Squad 25", + L"Squad 26", + L"Squad 27", + L"Squad 28", + L"Squad 29", + L"Squad 30", + L"Squad 31", + L"Squad 32", + L"Squad 33", + L"Squad 34", + L"Squad 35", + L"Squad 36", + L"Squad 37", + L"Squad 38", + L"Squad 39", + L"Squad 40", + L"On Duty", + L"Doctor", + L"Patient", + L"Vehicle", + L"In Transit", + L"Repair", + L"Radio Scan", + L"Practice", + L"Training Militia", + L"Training Mobile Militia", // Missing + L"Trainer", + L"Student", + L"Get item", // move items + L"Facility Staff", // Missing + L"Eat", // eating at a facility (cantina etc.) + L"Resting at Facility", // Missing + L"Interrogate prisoners", // Flugente: interrogate prisoners + L"Dead", + L"Incap.", + L"POW", + L"Hospital", + L"Empty", // Vehicle is empty + L"Undercover Snitch", // facility: undercover prisoner (snitch) + L"Spreading Propaganda", // facility: spread propaganda + L"Spreading Propaganda", // facility: spread propaganda (globally) + L"Gathering Rumours", // facility: gather rumours + L"Spreading Propaganda", // spread propaganda + L"Gathering Rumours", // gather information + L"Commanding Militia", // militia movement orders + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Doctor", + L"Patient", + L"Repair", + L"Fortify sector", // build structures according to external layout + L"Train workers", + L"Hide while disguised", + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", + L"Exploration", +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"Squad 1", + L"Squad 2", + L"Squad 3", + L"Squad 4", + L"Squad 5", + L"Squad 6", + L"Squad 7", + L"Squad 8", + L"Squad 9", + L"Squad 10", + L"Squad 11", + L"Squad 12", + L"Squad 13", + L"Squad 14", + L"Squad 15", + L"Squad 16", + L"Squad 17", + L"Squad 18", + L"Squad 19", + L"Squad 20", + L"Squad 21", + L"Squad 22", + L"Squad 23", + L"Squad 24", + L"Squad 25", + L"Squad 26", + L"Squad 27", + L"Squad 28", + L"Squad 29", + L"Squad 30", + L"Squad 31", + L"Squad 32", + L"Squad 33", + L"Squad 34", + L"Squad 35", + L"Squad 36", + L"Squad 37", + L"Squad 38", + L"Squad 39", + L"Squad 40", + L"On Duty", + L"Doctor", + L"Patient", + L"Vehicle", + L"In Transit", + L"Repair", + L"Radio Scan", + L"Practice", + L"Train Militia", + L"Train Mobiles", // Missing + L"Train Teammate", + L"Student", + L"Get Item", // move items + L"Staff Facility", // Missing + L"Rest at Facility", // Missing + L"Interrogate prisoners", // Flugente: interrogate prisoners + L"Dead", + L"Incap.", + L"POW", + L"Hospital", // patient in a hospital + L"Empty", // Vehicle is empty + L"Undercover Snitch", // facility: undercover prisoner (snitch) + L"Spread Propaganda", // facility: spread propaganda + L"Spread Propaganda", // facility: spread propaganda (globally) + L"Gather Rumours", // facility: gather rumours + L"Spread Propaganda", // spread propaganda + L"Gather Rumours", // gather information + L"Commanding Militia", // militia movement orders + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Doctor", + L"Patient", + L"Repair", + L"Fortify sector", // build structures according to external layout + L"Train workers", + L"Hide while disguised", + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", + L"Exploration", +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"Contract Options:", + L"", // a blank line, required + L"Offer One Day", // offer merc a one day contract extension + L"Offer One Week", // 1 week + L"Offer Two Weeks", // 2 week + L"Dismiss", // end merc's contract + L"Cancel", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"POW", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"STRENGTH", + L"DEXTERITY", + L"AGILITY", + L"WISDOM", + L"MARKSMANSHIP", + L"MEDICAL", + L"MECHANICAL", + L"LEADERSHIP", + L"EXPLOSIVES", + L"LEVEL", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Armor", // the armor rating of the merc + L"Weight", // the weight the merc is carrying + L"Camo", // the merc's camouflage rating + L"Camouflage:", + L"Protection:", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Agi", // the abbreviated version of : agility + L"Dex", // dexterity + L"Str", // strength + L"Ldr", // leadership + L"Wis", // wisdom + L"Lvl", // experience level + L"Mrk", // marksmanship skill + L"Mec", // mechanical skill + L"Exp", // explosive skill + L"Med", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Assignment", // the mercs current assignment + L"Contract", // the contract info about the merc + L"Health", // the health level of the current merc + L"Morale", // the morale of the current merc + L"Cond.", // the condition of the current vehicle + L"Fuel", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Practice", // tell merc to train self + L"Militia", // tell merc to train town + L"Trainer", // tell merc to act as trainer + L"Student", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Fire Rate:", // the allowable rate of fire for a merc who is guarding + L" Aggressive Fire", // the merc can be aggressive in their choice of fire rates + L" Conserve Ammo", // conserve ammo + L" Refrain From Firing", // fire only when the merc needs to + L"Other Options:", // other options available to merc + L" Can Retreat", // merc can retreat + L" Can Seek Cover", // merc is allowed to seek cover + L" Can Assist Teammates", // merc can assist teammates + L"Done", // done with this menu + L"Cancel", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"Fire Rate:", + L" *Aggressive Fire*", + L" *Conserve Ammo*", + L" *Refrain From Firing*", + L"Other Options:", + L" *Can Retreat*", + L" *Can Seek Cover*", + L" *Can Assist Teammates*", + L"Done", + L"Cancel", +}; + +STR16 pAssignMenuStrings[] = +{ + L"On Duty", // merc is on active duty + L"Doctor", // the merc is acting as a doctor + L"Disease", // merc is a doctor doing diagnosis + L"Patient", // the merc is receiving medical attention + L"Vehicle", // the merc is in a vehicle + L"Repair", // the merc is repairing items + L"Radio Scan", // the merc is scanning for patrols in neighbouring sectors + L"Snitch", // anv: snitch actions + L"Train", // the merc is training + L"Militia", // all things militia + L"Get Item", // move items + L"Fortify", // fortify sector + L"Intel", // covert assignments + L"Administer", + L"Explore", + L"Facility", // the merc is using/staffing a facility + L"Cancel", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"Attack", // set militia to aggresive + L"Hold Position", // set militia to stationary + L"Retreat", // retreat militia + L"Come to me", + L"Get down", + L"Crouch", + L"Take cover", + L"Move to", + L"All: Attack", + L"All: Hold Position", + L"All: Retreat", + L"All: Come to me", + L"All: Spread out", + L"All: Get down", + L"All: Crouch", + L"All: Take cover", + //L"All: Find items", + L"Cancel", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = +{ + // radio operator + L"Artillery Strike", + L"Jam communications", + L"Scan frequencies", + L"Eavesdrop", + L"Call reinforcements", + L"Switch off radio set", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Spotter", + L"Focus", + L"Drag", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Order an artillery strike from sector...", + L"Fill all radio frequencies with white noise, making communications impossible.", + L"Scan for jamming signals.", + L"Use your radio equipment to continously listen for enemy movement.", + L"Call in reinforcements from neighbouring sectors.", + L"Turn off radio set.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Observe an area, granting allied snipers a bonus to cth on anything you see.", + L"Increase interrupt modifier (penalty outside of area).", + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Requires:\n", + L" - %d AP\n", + L" - %s\n", + L" - %s or higher\n", + L" - %s or higher or\n", + L" - %d minutes to be ready\n", + L" - mortar positions in neighbouring sectors\n", + L" - %s |o|r %s |a|n|d %s or %s or higher\n", + L" - possession by a demon\n", + L" - a gun-related trait\n", + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = +{ + L"Militia", + L"Other Squads", + L"Cancel", + L"%d Militia", + L"All Militia", + + L"More", + L"Corpse: %s", +}; + +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Team Informant", + L"Town Assignment", + L"Cancel", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Discuss snitch's behaviour towards his teammates.", + L"Take an assignment in this sector.", + L"Cancel", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Report complaints", + L"Don't report", + L"Prevent misbehaviour", + L"Ignore misbehaviour", + L"Cancel", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Report any complaints you hear from other mercs to your commander.", + L"Don't report anything.", + L"Try to stop other mercs from getting wasted and scrounging.", + L"Don't care what other mercs do.", + L"Cancel", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Spread propaganda", + L"Gather rumours", + L"Cancel", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", + L"Keep an ear to the ground on any rumours about enemy forces activity.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = +{ + L"Interrogate admins", + L"Interrogate troops", + L"Interrogate elites", + L"Interrogate officers", + L"Interrogate generals", + L"Interrogate civilians", + L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s was exposed as a snitch but managed to notice it and get out alive.", + L"%s was exposed as a snitch but managed to defuse situation and get out alive.", + L"%s was exposed as a snitch but managed to avoid assassination attempt.", + L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", + + L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", + L"%s was exposed as a snitch and almost beaten to death before guards saved him.", + L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", + L"%s was exposed as a snitch and strangled to death before guards saved him.", + + L"%s was exposed as a snitch and drowned in toilet by other inmates.", + L"%s was exposed as a snitch and beaten to death by other inmates.", + L"%s was exposed as a snitch and shanked to death by other inmates.", + L"%s was exposed as a snitch and strangled to death by other inmates.", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s heard rumours about enemy activity in %d sectors.", + +}; + +STR16 pRemoveMercStrings[] = +{ + L"Remove Merc", // remove dead merc from current team + L"Cancel", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Health", + L"Agility", + L"Dexterity", + L"Strength", + L"Leadership", + L"Marksmanship", + L"Mechanical", + L"Explosives", + L"Medical", + L"Cancel", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Practice", // train yourself + L"Train workers", + L"Trainer", // train your teammates + L"Student", // be trained by an instructor + L"Cancel", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"Squad 1", + L"Squad 2", + L"Squad 3", + L"Squad 4", + L"Squad 5", + L"Squad 6", + L"Squad 7", + L"Squad 8", + L"Squad 9", + L"Squad 10", + L"Squad 11", + L"Squad 12", + L"Squad 13", + L"Squad 14", + L"Squad 15", + L"Squad 16", + L"Squad 17", + L"Squad 18", + L"Squad 19", + L"Squad 20", + L"Squad 21", + L"Squad 22", + L"Squad 23", + L"Squad 24", + L"Squad 25", + L"Squad 26", + L"Squad 27", + L"Squad 28", + L"Squad 29", + L"Squad 30", + L"Squad 31", + L"Squad 32", + L"Squad 33", + L"Squad 34", + L"Squad 35", + L"Squad 36", + L"Squad 37", + L"Squad 38", + L"Squad 39", + L"Squad 40", + L"Cancel", +}; + +STR16 pPersonnelTitle[] = +{ + L"Personnel", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Health: ", // health of merc + L"Agility: ", + L"Dexterity: ", + L"Strength: ", + L"Leadership: ", + L"Wisdom: ", + L"Exp. Lvl: ", // experience level + L"Marksmanship: ", + L"Mechanical: ", + L"Explosives: ", + L"Medical: ", + L"Med. Deposit: ", // amount of medical deposit put down on the merc + L"Remaining Contract: ", // cost of current contract + L"Kills: ", // number of kills by merc + L"Assists: ", // number of assists on kills by merc + L"Daily Cost:", // daily cost of merc + L"Tot. Cost to Date:", // total cost of merc + L"Contract:", // cost of current contract + L"Tot. Service to Date:", // total service rendered by merc + L"Salary Owing:", // amount left on MERC merc to be paid + L"Hit Percentage:", // percentage of shots that hit target + L"Battles:", // number of battles fought + L"Times Wounded:", // number of times merc has been wounded + L"Skills:", + L"No Skills", + L"Achievements:", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"Elite soldiers: %d\n", + L"Regular soldiers: %d\n", + L"Admin soldiers: %d\n", + L"Hostile groups: %d\n", + L"Creatures: %d\n", + L"Tanks: %d\n", + L"Others: %d\n", + + L"Mercs: %d\n", + L"Militia: %d\n", + L"Others: %d\n", + + L"Shots fired: %d\n", + L"Missiles fired: %d\n", + L"Grenades thrown: %d\n", + L"Knives thrown: %d\n", + L"Blade attacks: %d\n", + L"Hand to hand attacks: %d\n", + L"Successful hits: %d\n", + + L"Locks picked: %d\n", + L"Locks breached: %d\n", + L"Traps removed: %d\n", + L"Explosives detonated: %d\n", + L"Items repaired: %d\n", + L"Items combined: %d\n", + L"Items stolen: %d\n", + L"Militia trained: %d\n", + L"Mercs bandaged: %d\n", + L"Surgeries made: %d\n", + L"Persons met: %d\n", + L"Sectors discovered: %d\n", + L"Ambushes prevented: %d\n", + L"Quests handled: %d\n", + + L"Tactical battles: %d\n", + L"Autoresolve battles: %d\n", + L"Times retreated: %d\n", + L"Ambushes experienced: %d\n", + L"Hardest battle: %d Enemies\n", + + L"Shot: %d\n", + L"Stabbed: %d\n", + L"Punched: %d\n", + L"Blasted: %d\n", + L"Suffered damages in facilities: %d\n", + L"Surgeries undergone: %d\n", + L"Facility accidents: %d\n", + + L"Character:", + L"Weakness:", + + L"Attitudes:", // WANNE: For old traits display instead of "Character:"! + + L"Zombies: %d\n", // Flugente Zombies + + L"Background:", + L"Personality:", + + L"Prisoners interrogated: %d\n", + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", + L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + // SANDRO - tweaked this + L"No Skill", + L"Lock Picking", + L"Hand to Hand", //JA25: modified + L"Electronics", + L"Night Operations", //JA25: modified + L"Throwing", + L"Teaching", + L"Heavy Weapons", + L"Auto Weapons", + L"Stealthy", + L"Ambidextrous", + L"Thief", + L"Martial Arts", + L"Knifing", + L"Sniper", + L"Camouflage", //JA25: modified + L"(Expert)", +}; +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"No Skill", // 0 + L"Auto Weapons", // 1 + L"Heavy Weapons", + L"Marksman", + L"Hunter", + L"Gunslinger", // 5 + L"Hand to Hand", + L"Deputy", + L"Technician", + L"Paramedic", // 9 + // Minor traits + L"Ambidextrous", // 10 + L"Melee", + L"Throwing", + L"Night Ops", + L"Stealthy", + L"Athletics", // 15 + L"Bodybuilding", + L"Demolitions", + L"Teaching", + L"Scouting", // 19 + // covert ops is a major trait that was added later + L"Covert Ops", // 20 + + // new minor traits + L"Radio Operator", // 21 + L"Snitch", // 22 + L"Survival", + + // second names for major skills + L"Machinegunner", // 24 + L"Bombardier", + L"Sniper", + L"Ranger", + L"Gunfighter", + L"Martial Arts", + L"Squadleader", + L"Engineer", + L"Doctor", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"Spy", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch (minor trait) + L"Placeholder", // for survival (minor trait) + L"More...", // 47 + L"Intel", // for INTEL + L"Disguise", // for DISGUISE + L"various", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS +}; +////////////////////////////////////////////////////////// + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"|Stand/Walk", + L"|Crouch/Crouched Move", + L"Stand/|Run", + L"|Prone/Crawl", + L"|Look", + L"Action", + L"Talk", + L"Examine (|C|t|r|l)", + + // Pop up door menu + L"Open Manually", + L"Examine for Traps", + L"Lockpick", + L"Force Open", + L"Untrap", + L"Lock", + L"Unlock", + L"Use Door Explosive", + L"Use Crowbar", + L"Cancel (|E|s|c)", + L"Close", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"no trap", + L"an explosion trap", + L"an electric trap", + L"a siren trap", + L"a silent alarm trap", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"day", + L"week", + L"two weeks", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Select Character", + L"Assign Merc", + L"Plot Travel Route", + L"Merc |Contract", + L"Remove Merc", + L"Sleep", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"FAINT", + L"DEFINITE", + L"LOUD", + L"VERY LOUD", +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"UNKNOWN", + L"sound of MOVEMENT", + L"CREAKING", + L"SPLASHING", + L"IMPACT", + L"GUNSHOT", + L"EXPLOSION", + L"SCREAM", + L"IMPACT", + L"IMPACT", + L"SHATTERING", + L"SMASH", +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"the NORTHEAST", + L"the EAST", + L"the SOUTHEAST", + L"the SOUTH", + L"the SOUTHWEST", + L"the WEST", + L"the NORTHWEST", + L"the NORTH", +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"Urban", + L"Road", + L"Plains", + L"Desert", + L"Woods", + L"Forest", + L"Swamp", + L"Water", + L"Hills", + L"Impassable", + L"River", //river from north to south + L"River", //river from east to west + L"Foreign Country", + //NONE of the following are used for directional travel, just for the sector description. + L"Tropical", + L"Farmland", + L"Plains, road", + L"Woods, road", + L"Farm, road", + L"Tropical, road", + L"Forest, road", + L"Coastline", + L"Mountain, road", + L"Coastal, road", + L"Desert, road", + L"Swamp, road", + L"Woods, SAM site", + L"Desert, SAM site", + L"Tropical, SAM site", + L"Meduna, SAM site", + + //These are descriptions for special sectors + L"Cambria Hospital", + L"Drassen Airport", + L"Meduna Airport", + L"SAM site", + L"Refuel site", + L"Rebel Hideout", //The rebel base underground in sector A10 + L"Tixa Dungeon", //The basement of the Tixa Prison (J9) + L"Creature Lair", //Any mine sector with creatures in it + L"Orta Basement", //The basement of Orta (K4) + L"Tunnel", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Shelter", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s have been detected in sector %c%d and another squad is about to arrive.", //STR_DETECTED_SINGULAR + L"%s have been detected in sector %c%d and other squads are about to arrive.", //STR_DETECTED_PLURAL + L"Do you want to coordinate a simultaneous arrival?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"The enemy offers you the chance to surrender.", //STR_ENEMY_SURRENDER_OFFER + L"The enemy has captured your remaining unconscious mercs.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Retreat", //The retreat button //STR_AR_RETREAT_BUTTON + L"Done", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"DEFENDING", //STR_AR_DEFEND_HEADER + L"ATTACKING", //STR_AR_ATTACK_HEADER + L"ENCOUNTER", //STR_AR_ENCOUNTER_HEADER + L"Sector", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"VICTORY!", //STR_AR_OVER_VICTORY + L"DEFEAT!", //STR_AR_OVER_DEFEAT + L"SURRENDERED!", //STR_AR_OVER_SURRENDERED + L"CAPTURED!", //STR_AR_OVER_CAPTURED + L"RETREATED!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Militia", //STR_AR_MILITIA_NAME, + L"Elite", //STR_AR_ELITE_NAME, + L"Troop", //STR_AR_TROOP_NAME, + L"Admin", //STR_AR_ADMINISTRATOR_NAME, + L"Creature", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Time Elapsed", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"RETREATED", //STR_AR_MERC_RETREATED, + L"RETREATING", //STR_AR_MERC_RETREATING, + L"RETREAT", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Auto Resolve", //STR_PB_AUTORESOLVE_BTN, + L"Go To Sector", //STR_PB_GOTOSECTOR_BTN, + L"Retreat Mercs", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"ENEMY ENCOUNTER", //STR_PB_ENEMYENCOUNTER_HEADER, + L"ENEMY INVASION", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"ENEMY AMBUSH", //STR_PB_ENEMYAMBUSH_HEADER + L"ENTERING ENEMY SECTOR", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"CREATURE ATTACK", //STR_PB_CREATUREATTACK_HEADER + L"BLOODCAT AMBUSH", //STR_PB_BLOODCATAMBUSH_HEADER + L"ENTERING BLOODCAT LAIR", //STR_PB_ENTERINGBLOODCATLAIR_HEADER + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Location", + L"Enemies", + L"Mercs", + L"Militia", + L"Creatures", + L"Bloodcats", + L"Sector", + L"None", //If there are no uninvolved mercs in this fight. + L"N/A", //Acronym of Not Applicable + L"d", //One letter abbreviation of day + L"h", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Clear", + L"Spread", + L"Group", + L"Done", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"|Clears all the mercs' positions, \nand allows you to re-enter them manually.", + L"Randomly |spreads your mercs out \neach time it's pressed.", + L"Allows you to select where you wish to |group your mercs.", + L"Click this button when you're finished \nchoosing your mercs' positions. (|E|n|t|e|r)", + L"You must place all of your mercs \nbefore you start the battle.", + + //Various strings (translate word for word) + + L"Sector", + L"Choose entry positions (use arrow keys to scroll map)", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"Doesn't look so good there. It's inaccessible. Try a different location.", + L"Place your mercs in the highlighted section of the map.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"has arrived in sector", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"|Automatically resolves combat for you\nwithout loading map.", + L"Can't use auto resolve feature when\nthe player is attacking.", + L"|Enter the sector to engage the enemy.", + L"|Retreat group to their previous sector.", //singular version + L"|Retreat all groups to their previous sectors.", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"Enemies attack your militia in sector %c%d.", + //%c%d is the sector -- ex: A9 + L"Creatures attack your militia in sector %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Creatures attack and kill %d civilians in sector %s.", + //%s is the sector location -- ex: A9: Omerta + L"Enemies attack your mercs in sector %s. None of your mercs are able to fight!", + //%s is the sector location -- ex: A9: Omerta + L"Creatures attack your mercs in sector %s. None of your mercs are able to fight!", + + // Flugente: militia movement forbidden due to limited roaming + L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", + L"War room isn't staffed - militia move aborted!", + + L"Robot", //STR_AR_ROBOT_NAME, + L"Tank", //STR_AR_TANK_NAME, + L"Jeep", //STR_AR_JEEP_NAME, + + L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"Day", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"Sector Found:", + L"Day Found:", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"Status:", + L"Weight:", + L"AP Costs", + L"Rng:", // Range + L"Dam:", // Damage + L"Amount:", // Number of bullets left in a magazine + L"AP:", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Accuracy:", //9 + L"Range:", //10 + L"Damage:", //11 + L"Weight:", //12 + L"Stun Damage:",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + // HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only) + // Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES... + L"Attachments:", //14 + L"AUTO/5:", //15 + L"Remaining ammo:", //16 + L"Default:", //17 //WarmSteel - So we can also display default attachments + L"Dirt:", // 18 //added by Flugente + L"Space:", // 19 //space left on Molle items + L"Spread Pattern:", // 20 + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", + L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", + L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", + L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", + L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", + L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", + L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", + L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", + L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"", //12 + L"APs to ready", + L"APs to fire Single", + L"APs to fire Burst", + L"APs to fire Auto", + L"APs to Reload", + L"APs to Reload Manually", + L"Burst Penalty (Lower is better)", //19 + L"Bipod Modifier", + L"Autofire shots per 5 AP", + L"Autofire Penalty (Lower is better)", + L"Burst/Auto Penalty (Lower is better)", //23 + L"APs to Throw", + L"APs to Launch", + L"APs to Stab", + L"No Single Shot!", + L"No Burst Mode!", + L"No Auto Mode!", + L"APs to Bash", + L"", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Item Size Modifier (Lower is better)", // 0 + L"Reliability Modifier", + L"Loudness Modifier (Lower is better)", + L"Hides Muzzle Flash", + L"Bipod Modifier", + L"Range Modifier", // 5 + L"To-Hit Modifier", + L"Best Laser Range", + L"Aiming Bonus Modifier", + L"Burst Size Modifier", + L"Burst Penalty Modifier (Higher is better)", // 10 + L"Auto-Fire Penalty Modifier (Higher is better)", + L"AP Modifier", + L"AP to Burst Modifier (Lower is better)", + L"AP to Auto-Fire Modifier (Lower is better)", + L"AP to Ready Modifier (Lower is better)", // 15 + L"AP to Reload Modifier (Lower is better)", + L"Magazine Size Modifier", + L"AP to Attack Modifier (Lower is better)", + L"Damage Modifier", + L"Melee Damage Modifier", // 20 + L"Woodland Camo", + L"Urban Camo", + L"Desert Camo", + L"Snow Camo", + L"Stealth Modifier", // 25 + L"Hearing Range Modifier", + L"Vision Range Modifier", + L"Day Vision Range Modifier", + L"Night Vision Range Modifier", + L"Bright Light Vision Range Modifier", //30 + L"Cave Vision Range Modifier", + L"Tunnel Vision Percentage (Lower is better)", + L"Minimum Range for Aiming Bonus", + L"Hold |C|t|r|l to compare items", // item compare help text + L"Equipment weight: %4.1f kg", // 35 +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"In ", + L"PERFECT", + L"EXCELLENT", + L"GOOD", + L"FAIR", + L"POOR", + L"BAD", + L"TERRIBLE", + L" condition." +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Amount", + L"Remaining:", //this is the overall balance + L"Amount", + L"To Split:", // the amount he wants to separate from the overall balance to get two piles of money + + L"Current", + L"Balance:", + L"Amount", + L"To Withdraw:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"DYING", // >= 0 + L"CRITICAL", // >= 15 + L"POOR", // >= 30 + L"WOUNDED", // >= 45 + L"HEALTHY", // >= 60 + L"STRONG", // >= 75 + L"EXCELLENT", // >= 90 + L"CAPTURED", // added by Flugente +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"$1000", + L"$100", + L"$10", + L"Done", + L"Separate", + L"Withdraw", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"Pros:", +}; + +CHAR16 gzConsLabel[10] = +{ + L"Cons:", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Come Again?", //meaning "Repeat yourself" + L"Friendly", //approach in a friendly + L"Direct", //approach directly - let's get down to business + L"Threaten", //approach threateningly - talk now, or I'll blow your face off + L"Give", + L"Recruit", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Buy/Sell", + L"Buy", + L"Sell", + L"Repair", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"Done", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"Eldorado", + L"Hummer", // a hummer jeep/truck -- military vehicle + L"Icecream Truck", + L"Jeep", + L"Tank", + L"Helicopter", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Eldor.", + L"Hummer", // the HMVV + L"Truck", + L"Jeep", + L"Tank", + L"Heli", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Eldorado", + L"Hummer", //a military jeep. This is a brand name. + L"Truck", // Ice cream truck + L"Jeep", + L"Tank", + L"Heli", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"You cannot shoot from this seat.", + L"You cannot swap those two seats in combat without exiting vehicle first.", +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Air Raid", + L"Apply first aid automatically?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s notices that items are missing from the shipment.", + + // The %s is a string from pDoorTrapStrings + + L"The lock has %s.", + L"There's no lock.", + L"Success!", + L"Failure.", + L"Success!", + L"Failure.", + L"The lock isn't trapped.", + L"Success!", + // The %s is a merc name + L"%s doesn't have the right key.", + L"The lock is untrapped.", + L"The lock isn't trapped.", + L"Locked.", + L"DOOR", + L"TRAPPED", + L"LOCKED", + L"UNLOCKED", + L"SMASHED", + L"There's a switch here. Activate it?", + L"Disarm trap?", + L"Prev...", + L"Next...", + L"More...", + + // In the next 2 strings, %s is an item name + + L"The %s has been placed on the ground.", + L"The %s has been given to %s.", + + // In the next 2 strings, %s is a name + + L"%s has been paid in full.", + L"%s is still owed %d.", + L"Choose detonation frequency:", //in this case, frequency refers to a radio signal + L"How many turns 'til she blows:", //how much time, in turns, until the bomb blows + L"Set remote detonator frequency:", //in this case, frequency refers to a radio signal + L"Disarm boobytrap?", + L"Remove blue flag?", + L"Put blue flag here?", + L"Ending Turn", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"You sure you want to attack %s ?", + L"Ah, vehicles can't change stance.", + L"The robot can't change its stance.", + + // In the next 3 strings, %s is a name + + L"%s can't change to that stance here.", + L"%s can't have first aid done here.", + L"%s doesn't need first aid.", + L"Can't move there.", + L"Your team's full. No room for a recruit.", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s has been recruited.", + + // Here %s is a name and %d is a number + + L"%s is owed $%d.", + + // In the next string, %s is a name + + L"Escort %s?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"Hire %s for %s per day?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"You want to fight?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"Buy %s for %s?", + + // In the next string, %s is a name + + L"%s is being escorted on squad %d.", + + // These messages are displayed during play to alert the player to a particular situation + + L"JAMMED", //weapon is jammed. + L"Robot needs %s caliber ammo.", //Robot is out of ammo + L"Throw there? Not gonna happen.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Stealth Mode (|Z)", + L"|Map Screen", + L"|Done (End Turn)", + L"Talk", + L"Mute", + L"Stance Up (|P|g|U|p)", + L"Cursor Level (|T|a|b)", + L"Climb / |Jump", + L"Stance Down (|P|g|D|n)", + L"Examine (|C|t|r|l)", + L"Previous Merc", + L"Next Merc (|S|p|a|c|e)", + L"|Options", + L"|Burst Mode", + L"|Look/Turn", + L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s", + L"Heh?", //this means "what?" + L"Cont", //an abbrieviation for "Continued" + L"Mute off for %s.", + L"Mute on for %s.", + L"Health: %d/%d\nFuel: %d/%d", + L"Exit Vehicle" , + L"Change Squad ( |S|h|i|f|t |S|p|a|c|e )", + L"Drive", + L"N/A", //this is an acronym for "Not Applicable." + L"Use ( Hand To Hand )", + L"Use ( Firearm )", + L"Use ( Blade )", + L"Use ( Explosive )", + L"Use ( Medkit )", + L"(Catch)", + L"(Reload)", + L"(Give)", + L"%s has been set off.", + L"%s has arrived.", + L"%s ran out of Action Points.", + L"%s isn't available.", + L"%s is all bandaged.", + L"%s is out of bandages.", + L"Enemy in sector!", + L"No enemies in sight.", + L"Not enough Action Points.", + L"Nobody's using the remote.", + L"Burst fire emptied the clip!", + L"SOLDIER", + L"CREPITUS", + L"MILITIA", + L"CIVILIAN", + L"ZOMBIE", + L"PRISONER", + L"Exiting Sector", + L"OK", + L"Cancel", + L"Selected Merc", + L"All Mercs in Squad", + L"Go to Sector", + L"Go to Map", + L"You can't leave the sector from this side.", + L"You can't leave in turn based mode.", + L"%s is too far away.", + L"Removing Treetops", + L"Showing Treetops", + L"CROW", //Crow, as in the large black bird + L"NECK", + L"HEAD", + L"TORSO", + L"LEGS", + L"Tell the Queen what she wants to know?", + L"Fingerprint ID aquired", + L"Invalid fingerprint ID. Weapon non-functional", + L"Target aquired", + L"Path Blocked", + L"Deposit/Withdraw Money", //Help text over the $ button on the Single Merc Panel + L"No one needs first aid.", + L"Jam.", // Short form of JAMMED, for small inv slots + L"Can't get there.", // used ( now ) for when we click on a cliff + L"Path is blocked. Do you want to switch places with this person?", + L"The person refuses to move.", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Do you agree to pay %s?", + L"Accept free medical treatment?", + L"Agree to marry %s?", //Daryl + L"Key Ring Panel", + L"You cannot do that with an EPC.", + L"Spare %s?", //Krott + L"Out of effective weapon range.", + L"Miner", + L"Vehicle can only travel between sectors", + L"Can't autobandage right now", + L"Path Blocked for %s", + L"Your mercs, who were captured by %s's army are imprisoned here!", //Deidranna + L"Lock hit", + L"Lock destroyed", + L"Somebody else is trying to use this door.", + L"Health: %d/%d\nFuel: %d/%d", + L"%s cannot see %s.", // Cannot see person trying to talk to + L"Attachment removed", + L"Can not gain another vehicle as you already have 2", + + // added by Flugente for defusing/setting up trap networks + L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", + L"Set defusing frequency:", + L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", + L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", + L"Select tripwire hierarchy (1 - 4) and network (A - D):", + + // added by Flugente to display food status + L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"What do you want to do?", + L"Fill canteens", + L"Clean guns (Merc)", + L"Clean guns (Team)", + L"Take off clothes", + L"Lose disguise", + L"Militia inspection", + L"Militia restock", + L"Test disguise", + L"unused", + + // added by Flugente: decide what to do with the corpses + L"What do you want to do with the body?", + L"Decapitate", + L"Gut", + L"Take Clothes", + L"Take Body", + + // Flugente: weapon cleaning + L"%s cleaned %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", + L"Field interrogation", + L"Where do you want to send the %d prisoners?", + L"Let them go", + L"What do you want to do?", + L"Demand surrender", + L"Offer surrender", + L"Distract", + L"Talk", + L"Recruit Turncoat", + + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Disarm trap", + L"Inspect trap", + L"Remove blue flag", + L"Blow up!", + L"Activate tripwire", + L"Deactivate tripwire", + L"Reveal tripwire", + L"No detonator or remote detonator found!", + L"This bomb is already armed!", + L"Safe", + L"Mostly safe", + L"Risky", + L"Dangerous", + L"High danger!", + + L"Mask", + L"NVG", + L"Item", + + L"This feature works only with New Inventory System", + L"No item in your main hand", + L"Nowhere to place item from main hand", + L"No defined item for this quick slot", + L"No free hand for new item", + L"Item not found", + L"Cannot take item to main hand", + + L"Attempting to bandage travelling mercs...", + + L"Improve gear", + L"%s changed %s for superior version", + L"%s picked up %s", + + L"%s has stopped chatting with %s", + L"Attempt to turn", +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"If checked, the adjacent sector will be immediately loaded.", + L"If checked, you will be placed automatically in the map screen\nas it will take time for your mercs to travel.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"This sector is enemy occupied and you can't leave mercs here.\nYou must deal with this situation before loading any other sectors.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"By moving your remaining mercs out of this sector,\nthe adjacent sector will immediately be loaded.", + L"By moving your remaining mercs out of this sector,\nyou will be placed automatically in the map screen\nas it will take time for your mercs to travel.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s needs to be escorted by your mercs and cannot leave this sector alone.", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s cannot leave this sector alone as he is escorting %s.", //male singular + L"%s cannot leave this sector alone as she is escorting %s.", //female singular + L"%s cannot leave this sector alone as he is escorting multiple characters.", //male plural + L"%s cannot leave this sector alone as she is escorting multiple characters.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"All of your mercs must be in the vicinity\nin order to allow the squad to traverse.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"If checked, %s will travel alone, and\nautomatically get reassigned to a unique squad.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"If checked, your currently selected\nsquad will travel, leaving this sector.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s is being escorted by your mercs and cannot leave this sector alone. Your other mercs must be nearby before you can leave.", +}; + + + +STR16 pRepairStrings[] = +{ + L"Items", // tell merc to repair items in inventory + L"SAM Site", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Cancel", // cancel this menu + L"Robot", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"lost", // the merc has lost a statistic + L"gained", // the merc has gained a statistic + L"point of", // singular + L"points of", // plural + L"level of", // singular + L"levels of", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"health.", + L"agility.", + L"dexterity.", + L"wisdom.", + L"medical skill.", + L"explosives skill.", + L"mechanical skill.", + L"marksmanship skill.", + L"experience.", + L"strength.", + L"leadership.", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"Total Distance: ", // total distance for helicopter to travel + L" Safe: ", // distance to travel to destination + L" Unsafe:", // distance to return from destination to airport + L"Total Cost: ", // total cost of trip by helicopter + L"ETA: ", // ETA is an acronym for "estimated time of arrival" + L"Helicopter is low on fuel and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Passengers: ", + L"Select Skyrider or the Arrivals Drop-off?", + L"Skyrider", + L"Arrivals", + L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Helicopter will now return straight to base, do you want to drop down passengers before?", + L"Remaining Fuel:", + L"Dist. To Refuel Site:", +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", + L"Helicopter is currently disassembled. Wait until repairs are finished.", + L"Repairs completed. Helicopter is available again.", + L"Helicopter is fully refueled.", + + L"Helicopter has exceeded maximum range!", +}; + +STR16 sMapLevelString[] = +{ + L"Sublevel:", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"Loyal", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"can't get travel orders underground.", +}; + +STR16 gsTimeStrings[] = +{ + L"h", // hours abbreviation + L"m", // minutes abbreviation + L"s", // seconds abbreviation + L"d", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"None", + L"Hospital", + L"Factory", + L"Prison", + L"Military", + L"Airport", + L"Shooting Range", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"Inventory", + L"Exit", + L"Repair", + L"Factories", +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"Size", // 0 // size of the town in sectors + L"", // blank line, required + L"Control", // how much of town is controlled + L"None", // none of this town + L"Associated Mine", // mine associated with this town + L"Loyalty", // 5 // the loyalty level of this town + L"Trained", // the forces in the town trained by the player + L"", + L"Main Facilities", // main facilities in this town + L"Level", // the training level of civilians in this town + L"Civilian Training", // 10 // state of civilian training in town + L"Militia", // the state of the trained civilians in the town + + // Flugente: prisoner texts + L"Prisoners", + L"%d (capacity %d)", + L"%d Admins", + L"%d Regulars", + L"%d Elites", + L"%d Officers", + L"%d Generals", + L"%d Civilians", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"Mine", // 0 + L"Silver", + L"Gold", + L"Daily Production", + L"Possible Production", + L"Abandoned", // 5 + L"Shut Down", + L"Running Out", + L"Producing", + L"Status", + L"Production Rate", + L"Resource", // 10 + L"Town Control", + L"Town Loyalty", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"Enemy Forces", + L"Sector", + L"# of Items", + L"Unknown", + + L"Controlled", + L"Yes", + L"No", + L"Status/Software status:", + + L"Additional Intel", +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s isn't close enough.", //Merc is in sector with item but not close enough + L"Can't select that merc.", //MARK CARTER + L"%s isn't in the sector to take that item.", + L"During combat, you'll have to pick up items manually.", + L"During combat, you'll have to drop items manually.", + L"%s isn't in the sector to drop that item.", + L"During combat, you can't reload with an ammo crate.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Location", // sector these items are in + L"Total Items", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"To change a merc's assignment to such things as another squad, doctor or repair, click within the 'Assign' column", + L"To give a merc a destination in another sector, click within the 'Dest' column", + L"Once a merc has been given a movement order, time compression allows them to get going.", + L"Left click selects the sector. Left click again to give a merc movement orders, or Right click to get sector summary information.", + L"Press 'h' at any time in this screen to get this help dialogue up.", + L"Test Text", + L"Test Text", + L"Test Text", + L"Test Text", + L"There isn't much you can do on this screen until you arrive in Arulco. When you've finalized your team, click on the Time Compression button at the lower right. This will advance time until your team arrives in Arulco.", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"Move Mercs In Sector", // title for movement box + L"Plot Travel Route", // done with movement menu, start plotting movement + L"Cancel", // cancel this menu + L"Other", // title for group of mercs not on squads nor in vehicles + L"Select all", // Select all squads +}; + + +STR16 pUpdateMercStrings[] = +{ + L"Oops:", // an error has occured + L"Mercs Contract Expired:", // this pop up came up due to a merc contract ending + L"Mercs Completed Assignment:", // this pop up....due to more than one merc finishing assignments + L"Mercs Back on the Job:", // this pop up ....due to more than one merc waking up and returing to work + L"Mercs Catching Some Z's:", // this pop up ....due to more than one merc being tired and going to sleep + L"Contracts Expiring Soon:", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Show To|wns", + L"Show |Mines", + L"Show |Teams & Enemies", + L"Show |Airspace", + L"Show |Items", + L"Show Militia & Enemies (|Z)", + L"Show |Disease Data", + L"Show Weathe|r", + L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Next (|.)", // next page + L"Previous (|,)", // previous page + L"Exit Sector Inventory (|E|s|c)", // exit sector inventory + L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button + L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge + L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items + L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo + L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button + L"Toggle Get Item Display", // Flugente: move item display + L"Save Gear Template", + L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"|Laptop", + L"Tactical (|E|s|c)", + L"|Options", + L"Time Compress (|+)\nRight Click to fast forward one hour", // time compress more + L"Time Compress (|-)", // time compress less + L"Previous Message (|U|p)\nPrevious Page (|P|g|U|p)", // previous message in scrollable list + L"Next Message (|D|o|w|n)\nNext Page (|P|g|D|n)", // next message in the scrollable list + L"Start/Stop Time (|S|p|a|c|e)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Current Balance", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s is dead.", +}; + + +STR16 pDayStrings[] = +{ + L"Day", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Enrico", + L"Psych Pro Inc", + L"Help Desk", + L"Psych Pro Inc", + L"Speck", + L"R.I.S.", //5 + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", //10 + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", //15 + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", //20 + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", //25 + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", //30 + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephen", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"M.I.S. Insurance", + L"Bobby Rays", + L"Kingpin", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"Previous", + L"Next", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"You have new mail...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"Delete mail?", + L"Delete UNREAD mail?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"From:", + L"Subject:", + L"Day:", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"Mail Box", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Bookkeeper Plus", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Credit:", // credit (subtract from) to player's account + L"Debit:", // debit (add to) to player's account + L"Yesterday's Actual Income:", + L"Yesterday's Other Deposits:", + L"Yesterday's Debits:", + L"Balance At Day's End:", + L"Today's Actual Income:", + L"Today's Other Deposits:", + L"Today's Debits:", + L"Current Balance:", + L"Forecasted Income:", + L"Projected Balance:", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"Day", // the day column + L"Credit", // the credits column (to ADD money to your account) + L"Debit", // the debits column (to SUBTRACT money from your account) + L"Transaction", // transaction type - see TransactionText below + L"Balance", // balance at this point in time + L"Page", // page number + L"Day(s)", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"Accrued Interest", // interest the player has accumulated so far + L"Anonymous Deposit", + L"Transaction Fee", + L"Hired", // Merc was hired + L"Bobby Ray Purchase", // Bobby Ray is the name of an arms dealer + L"Settled Accounts at M.E.R.C.", + L"Medical Deposit for %s", // medical deposit for merc + L"IMP Profile Analysis", // IMP is the acronym for International Mercenary Profiling + L"Purchased Insurance for %s", + L"Reduced Insurance for %s", + L"Extended Insurance for %s", // johnny contract extended + L"Canceled Insurance for %s", + L"Insurance Claim for %s", // insurance claim for merc + L"a day", // merc's contract extended for a day + L"1 week", // merc's contract extended for a week + L"2 weeks", // ... for 2 weeks + L"Mine income", + L"", //String nuked + L"Purchased Flowers", + L"Full Medical Refund for %s", + L"Partial Medical Refund for %s", + L"No Medical Refund for %s", + L"Payment to %s", // %s is the name of the npc being paid + L"Transfer Funds to %s", // transfer funds to a merc + L"Transfer Funds from %s", // transfer funds from a merc + L"Equip militia in %s", // initial cost to equip a town's militia + L"Purchased items from %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s deposited money.", + L"Sold Item(s) to the Locals", + L"Facility Use", // HEADROCK HAM 3.6 + L"Militia upkeep", // HEADROCK HAM 3.6 + L"Ransom for released prisoners", // Flugente: prisoner system + L"WHO data subscription", // Flugente: disease + L"Payment to Kerberus", // Flugente: PMC + L"SAM site repair", // Flugente: SAM repair + L"Trained workers", // Flugente: train workers + L"Drill militia in %s", // Flugente: drill militia + L"Mini event", // rftr: mini events + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Insurance for", // insurance for a merc + L"Ext. %s's contract by one day.", // entend mercs contract by a day + L"Ext. %s contract by 1 week.", + L"Ext. %s contract by 2 weeks.", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"Skyrider was paid $%d", // skyrider was paid an amount of money + L"Skyrider is still owed $%d", // skyrider is still owed an amount of money + L"Skyrider has finished refueling", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider is ready to fly once more.", // Skyrider was grounded but has been freed + L"Skyrider has no passengers. If it is your intention to transport mercs in this sector, assign them to Vehicle/Helicopter first.", +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"Great", + L"Good", + L"Stable", + L"Poor", + L"Panic", + L"Bad", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"%s's equipment is now available in Omerta (A9).", + L"%s's equipment is now available in Drassen (B13).", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"Health", + L"Energy", + L"Morale", + L"Condition", // the condition of the current vehicle (its "health") + L"Fuel", // the fuel level of the current vehicle (its "energy") + L"Poison", // for display of poisoning + L"Water", // drink level + L"Food", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Previous Merc (|L|e|f|t)", // previous merc in the list + L"Next Merc (|R|i|g|h|t)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"ETA:", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"You'll never see it again. You sure?", // do you want to continue and lose the item forever + L"This item looks REALLY important. Are you REALLY REALLY sure you want to trash it?", // does the user REALLY want to trash this item +}; + + +STR16 pMapErrorString[] = +{ + L"Squad can't move with a sleeping merc on it.", + +//1-5 + L"Move the squad above ground first.", + L"Movement orders? It's a hostile sector!", + L"Mercs must be assigned to a squad or vehicle in order to travel.", + L"You don't have any team members yet.", // you have no members, can't do anything + L"Merc can't comply.", // merc can't comply with your order +//6-10 + L"needs an escort to move. Place him on a squad with one.", // merc can't move unescorted .. for a male + L"needs an escort to move. Place her on a squad with one.", // for a female + L"Merc hasn't yet arrived in %s!", + L"Looks like there's some contract negotiations to settle first.", + L"Cannot give a movement order. Air raid is going on.", +//11-15 + L"Movement orders? There's a battle going on!", + L"You have been ambushed by bloodcats in sector %s!", + L"You have just entered what appears to be a bloodcat lair in sector %s!", // HEADROCK HAM 3.6: Added argument. + L"", + L"The SAM site in %s has been taken over.", +//16-20 + L"The mine in %s has been taken over. Your daily income has been reduced to %s per day.", + L"The enemy has taken over sector %s uncontested.", + L"At least one of your mercs could not be put on this assignment.", + L"%s could not join %s as it is already full", + L"%s could not join %s as it is too far away.", +//21-25 + L"The mine in %s has been captured by enemy forces!", + L"Enemy forces have just invaded the SAM site in %s", + L"Enemy forces have just invaded %s", + L"Enemy forces have just been spotted in %s.", + L"Enemy forces have just taken over %s.", +//26-30 + L"At least one of your mercs is not tired.", + L"At least one of your mercs could not be woken up.", + L"Militia will not appear until they have finished training.", + L"%s cannot be given movement orders at this time.", + L"Militia that are not within town boundaries cannot be moved to another sector.", +//31-35 + L"You can't have militia in %s.", + L"A vehicle can't move while empty!", + L"%s is too injured to travel!", + L"You must leave the museum first!", + L"%s is dead!", +//36-40 + L"%s can't switch to %s because it's moving", + L"%s can't enter the vehicle that way", + L"%s can't join %s", + L"You can't compress time until you hire some new mercs!", + L"This vehicle can only travel along roads!", +//41-45 + L"You can't reassign mercs who are on the move", + L"Vehicle is out of gas!", + L"%s is too tired to travel.", + L"Nobody aboard is able to drive the vehicle.", + L"One or more members of this squad can't move right now.", +//46-50 + L"One or more of the OTHER mercs can't move right now.", + L"Vehicle is too damaged!", + L"Note that only two mercs may train militia in each sector.", + L"The robot can't move without its controller. Place them together in the same squad.", + L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", +// 51-55 + L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Click again on the destination to confirm your final route, or click on another sector to place more waypoints.", + L"Travel route confirmed.", + L"Destination unchanged.", + L"Travel route canceled.", + L"Travel route shortened.", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Click on the sector where you would like the mercs to arrive instead.", + L"OK. Arriving mercs will be dropped off in %s", + L"Mercs can't be flown there, the airspace isn't secured!", + L"Canceled. Arrival sector unchanged", + L"Airspace over %s is no longer secure! Arrival sector was moved to %s.", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Enter Inventory (|E|n|t|e|r)", + L"Throw Item Away", + L"Exit Inventory (|E|n|t|e|r)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"Have %s leave his equipment where he is now (%s) or later on in (%s) upon catching flight?", + L"%s is about to leave and will drop off his equipment in (%s).", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"Have %s leave her equipment where she is now (%s) or later on in (%s) upon catching flight?", + L"%s is about to leave and will drop off her equipment in (%s).", +}; + + +STR16 pMercContractOverStrings[] = +{ + L"'s contract ended, so he's gone home.", // merc's contract is over and has departed + L"'s contract ended, so she's gone home.", // merc's contract is over and has departed + L"'s contract was terminated, so he left.", // merc's contract has been terminated + L"'s contract was terminated, so she left.", // merc's contract has been terminated + L"You owe M.E.R.C. too much cash, so %s took off.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages + +// WDS: Allow flexible numbers of IMPs of each sex +// note: I only updated the English text to remove "three" below +STR16 pImpPopUpStrings[] = +{ + L"Invalid authorization code", + L"You are about to restart the entire profiling process. Are you certain?", + L"Please enter a valid full name and gender", + L"Preliminary analysis of your financial status shows that you cannot afford a profile analysis.", + L"Not a valid option at this time.", + L"To complete an accurate profile, you must have room for at least one team member.", + L"Profile already completed.", + L"Cannot load I.M.P. character from disk.", + L"You have already reached the maximum number of I.M.P. characters.", + L"You have already the maximum number of I.M.P characters with that gender on your team.", + L"You cannot afford the I.M.P character.", // 10 + L"The new I.M.P character has joined your team.", + L"You have already selected the maximum number of traits.", + L"No voicesets found.", +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"About Us", // about the IMP site + L"BEGIN", // begin profiling + L"Skills", // personality section + L"Attributes", // personal stats/attributes section + L"Appearance", // changed from portrait + L"Voice %d", // the voice selection + L"Done", // done profiling + L"Start Over", // start over profiling + L"Yes, I choose the highlighted answer.", + L"Yes", + L"No", + L"Finished", // finished answering questions + L"Prev", // previous question..abbreviated form + L"Next", // next question + L"YES, I AM.", // yes, I am certain + L"NO, I WANT TO START OVER.", // no, I want to start over the profiling process + L"YES, I DO.", + L"NO", + L"Back", // back one page + L"Cancel", // cancel selection + L"Yes, I am certain.", + L"No, let me have another look.", + L"Registry", // the IMP site registry..when name and gender is selected + L"Analyzing", // analyzing your profile results + L"OK", + L"Character", // Change from "Voice" + L"None", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, proceed to character analysis.", +}; + +STR16 pFilesTitle[] = +{ + L"File Viewer", +}; + +STR16 pFilesSenderList[] = +{ + L"Recon Report", // the recon report sent to the player. Recon is an abbreviation for reconissance + L"Intercept #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"Intercept #2", // second intercept file + L"Intercept #3", // third intercept file + L"Intercept #4", // fourth intercept file + L"Intercept #5", // fifth intercept file + L"Intercept #6", // sixth intercept file +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"History Log", +}; + +STR16 pHistoryHeaders[] = +{ + L"Day", // the day the history event occurred + L"Page", // the current page in the history report we are in + L"Day", // the days the history report occurs over + L"Location", // location (in sector) the event occurred + L"Event", // the event label +}; + +// Externalized to "TableData\History.xml" +/* +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"%s was hired from A.I.M.", // merc was hired from the aim site + L"%s was hired from M.E.R.C.", // merc was hired from the aim site + L"%s died.", // merc was killed + L"Settled Accounts at M.E.R.C.", // paid outstanding bills at MERC + L"Accepted Assignment From Enrico Chivaldori", + //6-10 + L"IMP Profile Generated", + L"Purchased Insurance Contract for %s.", // insurance contract purchased + L"Canceled Insurance Contract for %s.", // insurance contract canceled + L"Insurance Claim Payout for %s.", // insurance claim payout for merc + L"Extended %s's contract by a day.", // Extented "mercs name"'s for a day + //11-15 + L"Extended %s's contract by 1 week.", // Extented "mercs name"'s for a week + L"Extended %s's contract by 2 weeks.", // Extented "mercs name"'s 2 weeks + L"%s was dismissed.", // "merc's name" was dismissed. + L"%s quit.", // "merc's name" quit. + L"quest started.", // a particular quest started + //16-20 + L"quest completed.", + L"Talked to head miner of %s", // talked to head miner of town + L"Liberated %s", + L"Cheat Used", + L"Food should be in Omerta by tomorrow", + //21-25 + L"%s left team to become Daryl Hick's wife", + L"%s's contract expired.", + L"%s was recruited.", + L"Enrico complained about lack of progress", + L"Battle won", + //26-30 + L"%s mine started running out of ore", + L"%s mine ran out of ore", + L"%s mine was shut down", + L"%s mine was reopened", + L"Found out about a prison called Tixa.", + //31-35 + L"Heard about a secret weapons plant called Orta.", + L"Scientist in Orta donated a slew of rocket rifles.", + L"Queen Deidranna has a use for dead bodies.", + L"Frank talked about fighting matches in San Mona.", + L"A patient thinks he saw something in the mines.", + //36-40 + L"Met someone named Devin - he sells explosives.", + L"Ran into the famous ex-AIM merc Mike!", + L"Met Tony - he deals in arms.", + L"Got a rocket rifle from Sergeant Krott.", + L"Gave Kyle the deed to Angel's leather shop.", + //41-45 + L"Madlab offered to build a robot.", + L"Gabby can make stealth concoction for bugs.", + L"Keith is out of business.", + L"Howard provided cyanide to Queen Deidranna.", + L"Met Keith - all purpose dealer in Cambria.", + //46-50 + L"Met Howard - deals pharmaceuticals in Balime", + L"Met Perko - runs a small repair business.", + L"Met Sam of Balime - runs a hardware shop.", + L"Franz deals in electronics and other goods.", + L"Arnold runs a repair shop in Grumm.", + //51-55 + L"Fredo repairs electronics in Grumm.", + L"Received donation from rich guy in Balime.", + L"Met a junkyard dealer named Jake.", + L"Some bum gave us an electronic keycard.", + L"Bribed Walter to unlock the door to the basement.", + //56-60 + L"If Dave has gas, he'll provide free fillups.", + L"Greased Pablo's palms.", + L"Kingpin keeps money in San Mona mine.", + L"%s won Extreme Fighting match", + L"%s lost Extreme Fighting match", + //61-65 + L"%s was disqualified in Extreme Fighting", + L"Found a lot of money stashed in the abandoned mine.", + L"Encountered assassin sent by Kingpin.", + L"Lost control of sector", //ENEMY_INVASION_CODE + L"Defended sector", + //66-70 + L"Lost battle", //ENEMY_ENCOUNTER_CODE + L"Fatal ambush", //ENEMY_AMBUSH_CODE + L"Wiped out enemy ambush", + L"Unsuccessful attack", //ENTERING_ENEMY_SECTOR_CODE + L"Successful attack!", + //71-75 + L"Creatures attacked", //CREATURE_ATTACK_CODE + L"Killed by bloodcats", //BLOODCAT_AMBUSH_CODE + L"Slaughtered bloodcats", + L"%s was killed", + L"Gave Carmen a terrorist's head", + //76-80 + L"Slay left", + L"Killed %s", + L"Met Waldo - aircraft mechanic.", + L"Helicopter repairs started. Estimated time: %d hour(s).", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"N/A", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"E-mail", + L"Web", + L"Financial", + L"Personnel", + L"History", + L"Files", + L"Shut Down", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"A.I.M.", + L"Bobby Ray's", + L"I.M.P", + L"M.E.R.C.", + L"Mortuary", + L"Florist", + L"Insurance", + L"Cancel", + L"Encyclopedia", + L"Briefing Room", + L"Campaign History", + L"MeLoDY", + L"WHO", + L"Kerberus", + L"Militia Overview", + L"R.I.S.", + L"Factories", + L"A.R.C.", +}; + +STR16 pBookmarkTitle[] = +{ + L"Bookmarks", + L"Right click to access this menu in the future.", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"Downloading", + L"Reloading", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Take", // take money from merc + L"Give", // give money to merc + L"Cancel", // cancel transaction + L"Clear", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Stats", // view stats of the merc + L"More Stats", + L"Employment", + L"Inventory", // view the inventory of the merc +}; + +STR16 sATMText[ ]= +{ + L"Transfer Funds?", // transfer funds to merc? + L"Ok?", // are we certain? + L"Enter Amount", // enter the amount you want to transfer to merc + L"Select Type", // select the type of transfer to merc + L"Insufficient Funds", // not enough money to transfer to merc + L"Amount must be a multiple of $10", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"Error", + L"Server does not have DNS entry.", + L"Check URL address and try again.", + L"OK", + L"Intermittent Connection to Host. Expect longer transfer times.", +}; + + +STR16 pPersonnelString[] = +{ + L"Mercs:", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"A.I.M.", + L"A.I.M. Members", + L"A.I.M. Mug Shots", // a mug shot is another name for a portrait + L"A.I.M. Sort", + L"A.I.M.", + L"A.I.M. Alumni", + L"A.I.M. Policies", + L"A.I.M. History", + L"A.I.M. Links", + L"M.E.R.C.", + L"M.E.R.C. Accounts", + L"M.E.R.C. Registration", + L"M.E.R.C. Index", + L"Bobby Ray's", + L"Bobby Ray's - Guns", + L"Bobby Ray's - Ammo", + L"Bobby Ray's - Armor", + L"Bobby Ray's - Misc", //misc is an abbreviation for miscellaneous + L"Bobby Ray's - Used", + L"Bobby Ray's - Mail Order", + L"I.M.P.", + L"I.M.P.", + L"United Floral Service", + L"United Floral Service - Gallery", + L"United Floral Service - Order Form", + L"United Floral Service - Card Gallery", + L"Malleus, Incus & Stapes Insurance Brokers", + L"Information", + L"Contract", + L"Comments", + L"McGillicutty's Mortuary", + L"", //LAPTOP_MODE_SIRTECH + L"URL not found.", + L"%s Press Council - Conflict Summary", + L"%s Press Council - Battle Reports", + L"%s Press Council - Latest News", + L"%s Press Council - About us", + L"Mercs Love or Dislike You - About us", + L"Mercs Love or Dislike You - Analyze a team", + L"Mercs Love or Dislike You - Pairwise comparison", + L"Mercs Love or Dislike You - Personality", + L"WHO - About WHO", + L"WHO - Disease in Arulco", + L"WHO - Helpful Tips", + L"Kerberus - About Us", + L"Kerberus - Hire a Team", + L"Kerberus - Individual Contracts", + L"Militia Overview", + L"Recon Intelligence Services - Information Requests", + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Factory Overview", + L"Bobby Ray's - Recent Shipments", + L"Encyclopedia", + L"Encyclopedia - Data", + L"Briefing Room", + L"Briefing Room - Data", + L"", //LAPTOP_MODE_BRIEFING_ROOM_ENTER + L"", //LAPTOP_MODE_AIM_MEMBERS_ARCHIVES_NEW + L"A.R.C.", +}; + +STR16 pShowBookmarkString[] = +{ + L"Sir-Help", + L"Click Web Again for Bookmarks.", +}; + +STR16 pLaptopTitles[] = +{ + L"Mail Box", + L"File Viewer", + L"Personnel", + L"Bookkeeper Plus", + L"History Log", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"Killed in Action", + L"Dismissed", + L"Other", + L"Married", + L"Contract Expired", + L"Quit", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"Current Team", + L"Departures", + L"Daily Cost:", + L"Highest Cost:", + L"Lowest Cost:", + L"Killed in Action:", + L"Dismissed:", + L"Other:", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Lowest", + L"Average", + L"Highest", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"HLTH", + L"AGI", + L"DEX", + L"STR", + L"LDR", + L"WIS", + L"LVL", + L"MRKM", + L"MECH", + L"EXPL", + L"MED", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"Contract", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"Continue", + L"Stop", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"You have been defeated in this sector!", + L"The enemy, having no mercy for the team's soul, devours each and every one of you!", + L"Your unconscious team members have been captured!", + L"Your team members have been taken prisoner by the enemy.", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"Previous", + L"Next", + L"Accept", + L"Clear", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"Previous", + L"Next", +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Authorize", + L"Home", + L"Account #:", + L"Merc", + L"Days", + L"Rate", //5 + L"Charge", + L"Total:", + L"Are you sure you want to authorize the payment of %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+gear)", +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Previous", + L"Next", +}; + + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"Health", + L"Agility", + L"Dexterity", + L"Strength", + L"Leadership", + L"Wisdom", + L"Experience Lvl", + L"Marksmanship", + L"Mechanical", + L"Explosive", + L"Medical", + + L"Previous", + L"Hire", + L"Next", + L"Additional Info", + L"Home", + L"Hired", + L"Salary:", + L"per Day", + L"Gear:", + L"Total:", + L"Deceased", + + L"You have a full team of mercs already.", + L"Buy Equipment?", + L"Unavailable", + L"Unsettled Bills", + L"Bio", + L"Inv", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Open Account", + L"Cancel", + L"You have no account. Would you like to open one?", +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Speck T. Kline, founder and owner", + L"To open an account press here", + L"To view account press here", + L"To view files press here", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Transfer failed. No funds available.", +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"McGillicutty's Mortuary: Helping families grieve since 1983.", + L"Funeral Director and former A.I.M. mercenary Murray \"Pops\" McGillicutty is a highly skilled and experienced mortician.", + L"Having been intimately involved in death and bereavement throughout his life, Pops knows how difficult it can be.", + L"McGillicutty's Mortuary offers a wide range of bereavement services, from a shoulder to cry on to post-mortem reconstruction for badly disfigured remains.", + L"Let McGillicutty's Mortuary help you and your loved one rest in peace.", + + // Text for the various links available at the bottom of the page + L"SEND FLOWERS", + L"CASKET & URN COLLECTION", + L"CREMATION SERVICES", + L"PRE- FUNERAL PLANNING SERVICES", + L"FUNERAL ETIQUETTE", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"Regretably, the remainder of this site has not been completed due to a death in the family. Pending reading of the will and disbursement of assets, the site will be completed as soon as possible.", + L"Our sympathies do, however, go out to you at this trying time. Please come again.", +}; + +// Text for the florist Home page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Gallery", + + //Address of United Florist + + L"\"We air-drop anywhere\"", + L"1-555-SCENT-ME", + L"333 NoseGay Dr, Seedy City, CA USA 90210", + L"http://www.scent-me.com", + + // detail of the florist page + + L"We're fast and efficient!", + L"Next day delivery to most areas worldwide, guaranteed. Some restrictions apply.", + L"Lowest prices in the world, guaranteed!", + L"Show us a lower advertised price for any arrangements, and receive a dozen roses, absolutely free.", + L"Flying Flora, Fauna & Flowers Since 1981.", + L"Our decorated ex-bomber aviators will air-drop your bouquet within a ten mile radius of the requested location. Anytime - Everytime!", + L"Let us satisfy your floral fantasy.", + L"Let Bruce, our world-renowned floral designer, hand-pick the freshest, highest quality flowers from our very own greenhouse.", + L"And remember, if we don't have it, we can grow it - Fast!", +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"Back", + L"Send", + L"Clear", + L"Gallery", + + L"Name of Bouquet:", + L"Price:", //5 + L"Order Number:", + L"Delivery Date", + L"next day", + L"gets there when it gets there", + L"Delivery Location", //10 + L"Additional Services", + L"Crushed Bouquet($10)", + L"Black Roses($20)", + L"Wilted Bouquet($10)", + L"Fruit Cake (if available)($10)", //15 + L"Personal Sentiments:", + L"Due to the size of gift cards, your message can be no longer than 75 characters.", + L"...or select from one of our", + + L"STANDARDIZED CARDS", + L"Billing Information",//20 + + //The text that goes beside the area where the user can enter their name + + L"Name:", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"Prev", //abbreviation for previous + L"Next", //abbreviation for next + + L"Click on the selection you want to order.", + L"Please Note: there is an additional $10 fee for all wilted or crushed bouquets.", + + //text on the button + + L"Home", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"Click on your selection", + L"Back", +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"Order Form", //Title of the page + L"Qty", // The number of items ordered + L"Weight (%s)", // The weight of the item + L"Item Name", // The name of the item + L"Unit Price", // the item's weight + L"Total", //5 // The total price of all of items of the same type + L"Sub-Total", // The sub total of all the item totals added + L"S&H (See Delivery Loc.)", // S&H is an acronym for Shipping and Handling + L"Grand Total", // The grand total of all item totals + the shipping and handling + L"Delivery Location", + L"Shipping Speed", //10 // See below + L"Cost (per %s.)", // The cost to ship the items + L"Overnight Express", // Gets deliverd the next day + L"2 Business Days", // Gets delivered in 2 days + L"Standard Service", // Gets delivered in 3 days + L"Clear Order",//15 // Clears the order page + L"Accept Order", // Accept the order + L"Back", // text on the button that returns to the previous page + L"Home", // Text on the button that returns to the home page + L"* Denotes Used Items", // Disclaimer stating that the item is used + L"You can't afford to pay for this.", //20 // A popup message that to warn of not enough money + L"", // Gets displayed when there is no valid city selected + L"Are you sure you want to send this order to %s?", // A popup that asks if the city selected is the correct one + L"Package Weight**", // Displays the weight of the package + L"** Min. Wt.", // Disclaimer states that there is a minimum weight for the package + L"Shipments", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"Pistol", + L"M. Pistol", + L"SMG", + L"Rifle", + L"SN Rifle", + L"AS Rifle", + L"MG", + L"Shotgun", + L"Heavy W.", + + // Ammo + L"Pistol", + L"M. Pistol", + L"SMG", + L"Rifle", + L"SN Rifle", + L"AS Rifle", + L"MG", + L"Shotgun", + + // Used + L"Guns", + L"Armor", + L"LBE Gear", + L"Misc", + + // Armour + L"Helmets", + L"Vests", + L"Leggings", + L"Plates", + + // Misc + L"Blades", + L"Th. Knives", + L"Blunt W.", + L"Grenades", + L"Bombs", + L"Med. Kits", + L"Kits", + L"Face Items", + L"LBE Gear", + L"Optics", // Madd: new BR filters + L"Grip/LAM", + L"Muzzle", + L"Stock", + L"Mag/Trig.", + L"Other Att.", + L"Misc.", +}; + + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"To Order", // Title + // instructions on how to order + L"Click on the item(s). For more than one, keep on clicking. Right click for less. Once you've selected all you'd like to buy, go on to the order form.", + + //Text on the buttons to go the various links + + L"Previous Items", // + L"Guns", //3 + L"Ammo", //4 + L"Armor", //5 + L"Misc.", //6 //misc is an abbreviation for miscellaneous + L"Used", //7 + L"More Items", + L"ORDER FORM", + L"Home", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"Your team has",//11 + L"weapon(s) that use this type of ammo", //12 + + //The following lines provide information on the items + + L"Weight:", // Weight of all the items of the same type + L"Cal:", // the caliber of the gun + L"Size:", // number of rounds of ammo the Magazine can hold + L"Rng:", // The range of the gun + L"Dam:", // Damage of the weapon + L"ROF:", // Weapon's Rate Of Fire, acronym ROF + L"AP:", // Weapon's Action Points, acronym AP + L"Stun:", // Weapon's Stun Damage + L"Protect:", // Armour's Protection + L"Camo:", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Cost:", // Cost of the item + L"In stock:", // The number of items still in the store's inventory + L"Qty on Order:", // The number of items on order + L"Damaged", // If the item is damaged + L"Weight:", // the Weight of the item + L"SubTotal:", // The total cost of all items on order + L"* %% Functional", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"Darn! This on-line order form will only accept " ,//First part + L" items per order. If you're looking to order more stuff (and we hope you are), kindly make a separate order and accept our apologies.", //Second part + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Sorry. We don't have any more of that in stock right now. Please try again later.", + + //A popup that tells the user that the store is temporarily sold out + + L"Sorry, but we are currently out of stock on all items of that type.", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"This is the place to be for the newest and hottest in weaponry and military supplies", + L"We can find the perfect solution for all your explosives needs", + L"Used and refitted items", + + //Text for the various links to the sub pages + + L"Miscellaneous", + L"GUNS", + L"AMMUNITION", //5 + L"ARMOR", + + //Details on the web site + + L"If we don't sell it, you can't get it!", + L"Under Construction", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"A.I.M. Members", // Title + // Title for the way to sort + L"Sort By:", + + // sort by... + + L"Price", + L"Experience", + L"Marksmanship", + L"Mechanical", + L"Explosives", + L"Medical", + L"Health", + L"Agility", + L"Dexterity", + L"Strength", + L"Leadership", + L"Wisdom", + L"Name", + + //Text of the links to other AIM pages + + L"View the mercenary mug shot index", + L"Review the individual mercenary's file", + L"Browse the A.I.M. Alumni Gallery", + + // text to display how the entries will be sorted + + L"Ascending", + L"Descending", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Previous Page", + L"AIM HomePage", + L"Policy Index", + L"Next Page", + L"Disagree", + L"Agree", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"Left Click", + L"to Contact Merc.", + L"Right Click", + L"for Mug Shot Index.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Health", + L"Agility", + L"Dexterity", + L"Strength", + L"Leadership", + L"Wisdom", + L"Experience Lvl", + L"Marksmanship", + L"Mechanical", + L"Explosive", + L"Medical", //10 + + // the contract expenses' area + + L"Fee", + L"Contract", + L"one day", + L"one week", + L"two weeks", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"Previous", + L"Contact", + L"Next", + + L"Additional Info", // Title for the additional info for the merc's bio + L"Active Members", //20 // Title of the page + L"Optional Gear:", // Displays the optional gear cost + L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's + L"MEDICAL deposit required", // If the merc required a medical deposit, this is displayed + L"Kit 1", // Text on Starting Gear Selection Button 1 + L"Kit 2", // Text on Starting Gear Selection Button 2 + L"Kit 3", // Text on Starting Gear Selection Button 3 + L"Kit 4", // Text on Starting Gear Selection Button 4 + L"Kit 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"Contract Charge:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"One Day", + L"One Week", + L"Two Weeks", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"No Equipment", + L"Buy Equipment", + + // Text on the Buttons + + L"TRANSFER FUNDS", // to actually hire the merc + L"CANCEL", // go back to the previous menu + L"HIRE", // go to menu in which you can hire the merc + L"HANG UP", // stops talking with the merc + L"OK", + L"LEAVE MESSAGE", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Video Conferencing with", + L"Connecting. . .", + + L"with medical" // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"ELECTRONIC FUNDS TRANSFER SUCCESSFUL", // You hired the merc + L"UNABLE TO PROCESS TRANSFER", // Player doesn't have enough money, message 1 + L"INSUFFICIENT FUNDS", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"On Assignment", + L"Please Leave Message", + L"Deceased", + + //If you try to hire more mercs than game can support + + L"You have a full team of mercs already.", + + L"Pre-recorded message", + L"Message recorded", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"A.I.M. Links", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"A.I.M. History", //Title + + // Text on the buttons at the bottom of the page + + L"Previous Page", + L"Home", + L"A.I.M. Alumni", + L"Next Page", +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Price", + L"Experience", + L"Marksmanship", + L"Mechanical", + L"Explosives", + L"Medical", + L"Health", + L"Agility", + L"Dexterity", + L"Strength", + L"Leadership", + L"Wisdom", + L"Name", + + // The title of the page, the above text gets added at the end of this text + + L"A.I.M. Members Sorted Ascending By %s", + L"A.I.M. Members Sorted Descending By %s", + + // Instructions to the players on what to do + + L"Left Click", + L"To Select Merc", //10 + L"Right Click", + L"For Sorting Options", + + // Gets displayed on top of the merc's portrait if they are... + + L"Away", + L"Deceased", //14 + L"On Assign", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"PAGE 1", + L"PAGE 2", + L"PAGE 3", + + L"A.I.M. Alumni", // Title of the page + + L"DONE", // Stops displaying information on selected merc + L"Next page", +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"A.I.M. and the A.I.M. logo are registered trademarks in most countries.", + L"So don't even think of trying to copy us.", + L"Copyright 2005 A.I.M., Ltd. All rights reserved.", //1.13 modified to 2005 + + //Text for an advertisement that gets displayed on the AIM page + + L"United Floral Service", + L"\"We air-drop anywhere\"", //10 + L"Do it right", + L"... the first time", + L"Guns and stuff, if we dont have it, you dont need it.", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"Home", + L"Members", + L"Alumni", + L"Policies", + L"History", + L"Links", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"MERCHANDISE IN STOCK", //Header for the merchandise available + L"PAGE", //The current store inventory page being displayed + L"TOTAL COST", //The total cost of the the items in the Dealer inventory area + L"TOTAL VALUE", //The total value of items player wishes to sell + L"EVALUATE", //Button text for dealer to evaluate items the player wants to sell + L"TRANSACTION", //Button text which completes the deal. Makes the transaction. + L"DONE", //Text for the button which will leave the shopkeeper interface. + L"REPAIR COST", //The amount the dealer will charge to repair the merc's goods + L"1 HOUR", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d HOURS", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"REPAIRED", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"There is not enough room in your offer area.", //Message box that tells the user there is no more room to put there stuff + L"%d MINUTES", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Drop Item To Ground.", + L"BUDGET", +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Take", // Take money from the player + L"Give", // Give money to the player + L"Cancel", // Cancel the transfer + L"Clear", // Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"Select Type", // tells the user to select either to give or take from the merc + L"Enter Amount", // Enter the amount to transfer + L"Transfer Funds To Merc", // Giving money to the merc + L"Transfer Funds From Merc", // Taking money from the merc + L"Insufficient Funds", // Not enough money to transfer + L"Balance", // Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"Do you want to deduct %s from your main account to cover the difference?", + L"Not enough funds. You're short %s", + L"Do you want to deduct %s from your main account to cover the cost?", + L"Ask the dealer to start the transaction", + L"Ask the dealer to repair the selected items", + L"End conversation", + L"Current Balance", + + L"Do you want to transfer %s Intel to cover the difference?", + L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"Save Game", + L"Load Game", + L"Quit", + L"Next", + L"Prev", + L"Done", + L"1.13 Features", + L"New in 1.13", + L"Options", + + //Text above the slider bars + L"Effects", + L"Speech", + L"Music", + + //Confirmation pop when the user selects.. + L"Quit game and return to the main menu?", + + L"You need either the Speech option, or the Subtitle option to be enabled.", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Save Game", + L"Load Game", + L"Cancel", + L"Save Selected", + L"Load Selected", + + L"Saved the game successfully", + L"ERROR saving the game!", + L"Loaded the game successfully", + L"ERROR loading the game!", + + L"The game version in the saved game file is different than the current version. It is most likely safe to continue. Continue?", + + L"The saved game files may be invalidated. Do you want them all deleted?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Save version has changed. Please report if there any problems. Continue?", +#else + L"Attempting to load an older version save. Automatically update and load the save?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Save version and game version have changed. Please report if there are any problems. Continue?", +#else + L"Attempting to load an older version save. Automatically update and load the save?", +#endif + + L"Are you sure you want to overwrite the saved game in slot #%d?", + L"Do you want to load the game from slot #", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"You are running low on disk space. You only have %d Megs free and Jagged should have at least %d Megs free.", + + L"Saving", //When saving a game, a message box with this string appears on the screen + + L"Normal Guns", + L"Tons of Guns", + L"Realistic style", + L"Sci Fi style", + + L"Difficulty", + L"Platinum Mode", //Placeholder English + + L"Bobby Ray Quality", + L"Normal", + L"Great", + L"Excellent", + L"Awesome", + + L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", + L"New Inventory does not work from the default 'Data' folder.", + + L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity", +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Map Level", + L"You have no militia. You need to train town residents in order to have a town militia.", + L"Daily Income", + L"Merc has life insurance", + L"%s isn't tired.", + L"%s is on the move and can't sleep", + L"%s is too tired, try a little later.", + L"%s is driving.", + L"Squad can't move with a sleeping merc on it.", + + // stuff for contracts + L"While you can pay for the contract, you don't have the bucks to cover this merc's life insurance premium.", + L"%s insurance premium will cost %s for %d extra day(s). Do you want to pay?", + L"Sector Inventory", + L"Merc has a medical deposit.", + + // other items + L"Medics", // people acting a field medics and bandaging wounded mercs + L"Patients", // people who are being bandaged by a medic + L"Done", // Continue on with the game after autobandage is complete + L"Stop", // Stop autobandaging of patients by medics now + L"Sorry. This option has been disabled in this demo.", // informs player this option/button has been disabled in the demo + L"%s doesn't have a repair kit.", + L"%s doesn't have a medical kit.", + L"There aren't enough people willing to be trained right now.", + L"%s is full of militia.", + L"Merc has a finite contract.", + L"Merc's contract is not insured", + L"Map Overview", // 24 + + // Flugente: disease texts describing what a map view does + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", + + // Flugente: weather texts describing what a map view does + L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"Squad %d has noticed someone in sector %s", + L"Squad %s has noticed someone in sector %s", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"Training a squad of town militia will cost $", // telling player how much it will cost + L"Approve expenditure?", // asking player if they wish to pay the amount requested + L"You can't afford it.", // telling the player they can't afford to train this town + L"Continue training militia in %s (%s %d)?", // continue training this town? + + L"Cost $", // the cost in dollars to train militia + L"( Y/N )", // abbreviated yes/no + L"", // unused + L"Training town militia in %d sectors will cost $ %d. %s", // cost to train sveral sectors at once + + L"You cannot afford the $%d to train town militia here.", + L"%s needs a loyalty of %d percent for you to be able to continue training militia.", + L"You cannot train the militia in %s any further.", + L"liberate more town sectors", + + L"liberate new town sectors", + L"liberate more towns", + L"regain your lost progress", + L"progress further", + + L"recruit more rebels", +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"You can only withdraw up to $20,000 at a time.", + L"Are you sure you want to deposit the %s into your account?", +}; + +STR16 gzCopyrightText[] = +{ + L"Copyright (C) 1999 Sir-tech Canada Ltd. All rights reserved.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Speech", + L"Mute Confirmations", + L"Subtitles", + L"Pause Text Dialogue", + L"Animate Smoke", + L"Blood & Gore", + L"Never Move my Mouse", + L"Old Selection Method", + L"Show Movement Path", + L"Show Misses", + L"Real Time Confirmation", + L"Sleep/Wake Notifications", + L"Use Metric System", + L"Highlight Mercs", + L"Snap Cursor to Mercs", + L"Snap Cursor to Doors", + L"Make Items Glow", + L"Show Tree Tops", + L"Smart Tree Tops", + L"Show Wireframes", + L"Show 3D Cursor", + L"Show Chance to Hit on Cursor", + L"GL Burst uses Burst Cursor", + L"Allow Enemy Taunts", // Changed from "Enemies Drop all Items" - SANDRO + L"High-Angle Grenade Launching", + L"Allow Real Time Sneaking", // Changed from "Restrict extra Aim Levels" - SANDRO + L"Space Selects next Squad", + L"Show Item Shadow", + L"Show Weapon Ranges in Tiles", + L"Tracer Effect for Single Shot", + L"Rain Noises", + L"Allow Crows", + L"Show Soldier Tooltips", + L"Tactical End-Turn Save", + L"Silent Skyrider", + L"Enhanced Description Box", + L"Forced Turn Mode", // add forced turn mode + L"Alternate Strategy Map Colors", // Change color scheme of Strategic Map + L"Alternate Bullet Graphics", // Show alternate bullet graphics (tracers) + L"Logical Bodytypes", + L"Show Merc Ranks", // shows mercs ranks + L"Show Face Gear Graphics", + L"Show Face Gear Icons", + L"Disable Cursor Swap", // Disable Cursor Swap + L"Quiet Training", // Madd: mercs don't say quotes while training + L"Quiet Repairing", // Madd: mercs don't say quotes while repairing + L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring + L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns + L"Allow Zombies", // Flugente Zombies + L"Enable Inventory Popups", // the_bob : enable popups for picking items from sector inv + L"Mark Remaining Hostiles", + L"Show LBE Content", + L"Invert Mouse Wheel", + L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances + L"Show enemy location", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Force Bobby Ray Shipments", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--DEBUG OPTIONS--", // an example options screen options header (pure text) + L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. + L"Reset ALL game options", // failsafe show/hide option to reset all options + L"Do you really want to reset?", // a do once and reset self option (button like effect) + L"Debug Options in other builds", // allow debugging in release or mapeditor + L"DEBUG Render Option group", // an example option that will show/hide other options + L"Render Mouse Regions", // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Keep this option ON if you want to hear character dialogue.", + + //Mute Confirmation + L"Turns characters' verbal confirmations on or off.", + + //Subtitles + L"Controls whether on-screen text is displayed for dialogue.", + + //Key to advance speech + L"If Subtitles are ON, turn this on also to be able to take your time reading NPC dialogue.", + + //Toggle smoke animation + L"Turn this option OFF if animating smoke slows down your game's framerate.", + + //Blood n Gore + L"Turn this option OFF if blood offends you.", + + //Never move my mouse + L"Turn this option OFF to have your mouse automatically move over pop-up confirmation boxes when they appear.", + + //Old selection method + L"Turn this ON for character selection to work as in previous JAGGED ALLIANCE games (which is the opposite of how it works otherwise).", + + //Show movement path + L"Turn this ON to display movement paths in Real-time (or leave it off and use the |S|h|i|f|t key when you do want them displayed).", + + //show misses + L"Turn ON to have the game show you where your bullets ended up when you \"miss\".", + + //Real Time Confirmation + L"When ON, an additional \"safety\" click will be required for movement in Real-time.", + + //Sleep/Wake notification + L"When ON, you will be notified when mercs on \"assignment\" go to sleep and resume work.", + + //Use the metric system + L"When ON, uses the metric system for measurements; otherwise it uses the Imperial system.", + + //Highlight Mercs + L"When ON, highlights the mercenary (Not visible to enemies).\nToggle in-game with (|G)", + + //Smart cursor + L"When ON, moving the cursor near your mercs will automatically highlight them.", + + //snap cursor to the door + L"When ON, moving the cursor near a door will automatically position the cursor over the door.", + + //glow items + L"When ON, Items continuously glow. (|C|t|r|l+|A|l|t+|I)", + + //toggle tree tops + L"When ON, shows the |Tree tops.", + + //smart tree tops + L"When ON, hides tree tops near visible mercs and cursor position.", + + //toggle wireframe + L"When ON, displays Wireframes for obscured walls. (|C|t|r|l+|A|l|t+|W)", + + L"When ON, the movement cursor is shown in 3D. (|H|o|m|e)", + + // Options for 1.13 + L"When ON, the chance to hit is shown on the cursor.", + L"When ON, GL burst uses burst cursor.", + L"When ON, enemies will occasionally comment certain actions.", // Changed from Enemies Drop All Items - SANDRO + L"When ON, grenade launchers fire grenades at higher angles. (|A|l|t+|Q)", + L"When ON, will not enter turn-based mode when sneaking unnoticed and seeing an enemy unless |C|t|r|l+|X is pressed. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO + L"When ON, |S|p|a|c|e selects next squad automatically.", + L"When ON, item shadows will be shown.", + L"When ON, weapon ranges will be shown in tiles.", + L"When ON, tracer effect will be shown for single shots.", + L"When ON, you will hear rain noises when it is raining.", + L"When ON, the crows will be present in game.", + 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, Skyrider will not talk anymore.", + L"When ON, enhanced descriptions will be shown for items and weapons.", + L"When ON and enemy present, turn-based mode persists until sector is free. (|C|t|r|l+|T)", // add forced turn mode + 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, mercenary body graphic can change along with equipped gear.", + L"When ON, ranks will be displayed before merc names in the strategic view.", + L"When ON, equipped face gear will be shown on the merc portraits.", + L"When ON, icons for the equipped face gear will be shown 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, 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, zombies will spawn. Beware!", // allow zombies + L"When ON, enables popup boxes that appear when left-click on empty merc inventory slots in mapscreen sector inventory.", + L"When ON, approximate locations of the last enemies in the sector will be highlighted.", + L"When ON, will show the contents of an LBE item; otherwise, regular NAS interface will be shown.", + L"When ON, inverts mouse wheel directions.", + L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", + L"When ON, shows last known enemy location.", + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Force all pending Bobby Ray shipments", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", + L"Click me to fix corrupt game settings", // failsafe show/hide option to reset all options + L"Click me to fix corrupt game settings", // a do once and reset self option (button like effect) + L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor + L"Toggle to display debugging render options", // an example option that will show/hide other options + L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + + +STR16 gzGIOScreenText[] = +{ + L"INITIAL GAME SETTINGS", +#ifdef JA2UB + L"Random Manuel texts ", + L"Off", + L"On", +#else + L"Game Style", + L"Realistic", + L"Sci Fi", +#endif + L"Platinum", + L"Available Arsenal", // changed by SANDRO + L"Tons of Guns", + L"Reduced", // changed by SANDRO + L"Difficulty Level", + L"Novice", + L"Experienced", + L"Expert", + L"INSANE", + L"Start", + L"Cancel", + L"Extra Difficulty", + L"Save Anytime", + L"Iron Man", + L"Disabled for Demo", + L"Bobby Ray Quality", + L"Normal", + L"Great", + L"Excellent", + L"Awesome", + L"Inventory / Attachments", + L"NOT USED", + L"NOT USED", + L"Load MP Game", + L"INITIAL GAME SETTINGS (Only the server settings take effect)", + // Added by SANDRO + L"Skill Traits", + L"Old", + L"New", + L"Max IMP Characters", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Enemies Drop All Items", + L"Off", + L"On", +#ifdef JA2UB + L"Tex and John", + L"Random", + L"All", +#else + L"Number of Terrorists", + L"Random", + L"All", +#endif + L"Secret Weapon Caches", + L"Random", + L"All", + L"Progress Speed of Item Choices", + L"Very Slow", + L"Slow", + L"Normal", + L"Fast", + L"Very Fast", + + L"Old / Old", + L"New / Old", + L"New / New", + + // Squad Size + L"Max. Squad Size", + L"6", + L"8", + L"10", + //L"Faster Bobby Ray Shipments", + L"Inventory Manipulation Costs AP", + + L"New Chance to Hit System", + L"Improved Interrupt System", + L"Merc Story Backgrounds", + L"Food System", + L"Bobby Ray Quantity", + + // anv: extra iron man modes + L"Soft Iron Man", + L"Extreme Iron Man", +}; + +STR16 gzMPJScreenText[] = +{ + L"MULTIPLAYER", + L"Join", + L"Host", + L"Cancel", + L"Refresh", + L"Player Name", + L"Server IP", + L"Port", + L"Server Name", + L"# Plrs", + L"Version", + L"Game Type", + L"Ping", + L"You must enter a player name.", + L"You must enter a valid server IP address. For example: 84.114.195.239", + L"You must enter a valid Server Port between 1 and 65535.", +}; + +STR16 gzMPJHelpText[] = +{ + L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", + L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", + + L"HOST", + L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", + L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", + L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", + L"Click on 'Host' to host a new Multiplayer Game.", + + L"JOIN", + L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", + L"Enter the external IP and the Port number from the host.", + L"Click on 'Join' to join an already hosted Multiplayer Game.", +}; + +STR16 gzMPHScreenText[] = +{ + L"HOST GAME", + L"Start", + L"Cancel", + L"Server Name", + L"Game Type", + L"Deathmatch", + L"Team-Deathmatch", + L"Co-Operative", + L"Maximum Players", + L"Maximum Mercs", + L"Merc Selection", + L"Merc Hiring", + L"Hired by Player", + L"Starting Cash", + L"Allow Hiring Same Merc", + L"Report Hired Mercs", + L"Bobby Rays", + L"Sector Starting Edge", + L"You must enter a server name", + L"", + L"", + L"Starting Time", + L"", + L"", + L"Weapon Damage", + L"", + L"Timed Turns", + L"", + L"Enable Civilians in CO-OP", + L"", + L"Maximum Enemies in CO-OP", + L"Synchronize Game Directory", + L"MP Sync. Directory", + L"You must enter a file transfer directory.", + L"(Use '/' instead of '\\' for directory delimiters.)", + L"The specified synchronisation directory does not exist.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Yes", + L"No", + // Starting Time + L"Morning", + L"Afternoon", + L"Night", + // Starting Cash + L"Low", + L"Medium", + L"Heigh", + L"Unlimited", + // Time Turns + L"Never", + L"Slow", + L"Medium", + L"Fast", + // Weapon Damage + L"Very low", + L"Low", + L"Normal", + // Merc Hire + L"Random", + L"Normal", + // Sector Edge + L"Random", + L"Selectable", + // Bobby Ray / Hire same merc + L"Disable", + L"Allow", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Austin", //Austin, Texas, USA + L"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"Hong Kong", //Hong Kong, Hong Kong + L"Beirut", //Beirut, Lebanon (Middle East) + L"London", //London, England + L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Metavira", //The island of Metavira was the fictional location used by JA1 + L"Miami", //Miami, Florida, USA (SE corner of USA) + L"Moscow", //Moscow, USSR + L"New York", //New York, New York, USA + L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Paris", //Paris, France + L"Tripoli", //Tripoli, Libya (eastern Mediterranean) + L"Tokyo", //Tokyo, Japan + L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Are you sure? A value of zero means NO ability in this skill.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"( 8 Characters Max )", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"Analyzing", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"Thank You, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Voice", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"Killed in Action", + L"Dismissed", + L"Other", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Personnel Manager", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Game Paused", + L"Resume Game (|P|a|u|s|e)", + L"Pause Game (|P|a|u|s|e)", +}; + + +STR16 pMessageStrings[] = +{ + L"Exit Game?", + L"OK", + L"YES", + L"NO", + L"CANCEL", + L"REHIRE", + L"LIE", + L"No description", //Save slots that don't have a description. + L"Game Saved.", + L"Game Saved.", + L"QuickSave", //10 The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"Day", + L"Mercs", + L"Empty Slot", //An empty save game slot + L"Demo", //Demo of JA2 + L"Debug", //State of development of a project (JA2) that is a debug build + L"Release", //Release build for JA2 + L"rpm", //20 Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"min", //Abbreviation for minute. + L"m", //One character abbreviation for meter (metric distance measurement unit). + L"rnds", //Abbreviation for rounds (# of bullets) + L"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"lb", //Abbreviation for pounds (Imperial weight measurement unit) + L"Home", //Home as in homepage on the internet. + L"USD", //Abbreviation to US dollars + L"n/a", //Lowercase acronym for not applicable. + L"Meanwhile", //Meanwhile + L"%s has arrived in sector %s%s", //30 Name/Squad has arrived in sector A9. Order must not change without notifying + //SirTech + L"Version", + L"Empty Quick Save Slot", + L"This slot is reserved for Quick Saves made from the tactical and map screens using ALT+S.", + L"Opened", + L"Closed", + L"You are running low on disk space. You only have %sMB free and Jagged Alliance 2 v1.13 requires %sMB.", + L"Hired %s from AIM", + L"%s has caught %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s has taken %s.", //'Merc name' has taken 'item name' + L"%s has no medical skill",//40 'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"The integrity of the game has been compromised.", + L"ERROR: Ejected CD-ROM", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"There is no room to fire from here.", + + //Can't change stance due to objects in the way... + L"Cannot change stance at this time.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Drop", + L"Throw", + L"Pass", + + L"%s passed to %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"No room to pass %s to %s.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" attached]", // 50 + + //Cheat modes + L"Cheat level ONE reached", + L"Cheat level TWO reached", + + //Toggling various stealth modes + L"Squad on stealth mode.", + L"Squad off stealth mode.", + L"%s on stealth mode.", + L"%s off stealth mode.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Extra Wireframes On", + L"Extra Wireframes Off", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Can't go up from this level...", + L"There are no lower levels...", // 60 + L"Entering basement level %d...", + L"Leaving basement...", + + L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Follow mode OFF.", + L"Follow mode ON.", + L"3D Cursor OFF.", + L"3D Cursor ON.", + L"Squad %d active.", + L"You cannot afford to pay for %s's daily salary of %s", //first %s is the mercs name, the seconds is a string containing the salary + L"Skip", // 70 + L"%s cannot leave alone.", + L"A save has been created called, SaveGame249.sav. If needed, rename it to SaveGame01 - SaveGame10 and then you will have access to it in the Load screen.", + L"%s drank some %s", + L"A package has arrived in Drassen.", + L"%s should arrive at the designated drop-off point (sector %s) on day %d, at approximately %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival + L"History log updated.", + L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", + L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", + L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO + L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO + L"Grenade Launchers fire at standard angles", + L"Grenade Launchers fire at higher angles", + // forced turn mode strings + L"Forced Turn Mode", + L"Normal turn mode", + L"Exit combat mode", + L"Forced Turn Mode Active, Entering Combat", + L"Successfully Saved the Game into the End Turn Auto Save slot.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved + L"Client", + L"You cannot use the Old Inventory and the New Attachment System at the same time.", // 90 + + L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID + L"This slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save + L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"End-Turn Save #", // 95 // The text for the tactical end turn auto save + L"Saving Auto Save #", // 96 // The message box, when doing auto save + L"Saving", // 97 // The message box, when doing end turn auto save + L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save + L"This slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) + L"Lock mouse cursor within game window boundary.", // 104 + L"Release mouse cursor from game window boundary.", // 105 + L"Move in Formation ON", + L"Move in Formation OFF", + L"Artificial Merc Light ON", + L"Artificial Merc Light OFF", + L"Squad %s active.", + L"%s smoked %s.", + L"Activate cheats?", + L"Deactivate cheats?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"OK", + L"Scroll Up", + L"Select All", + L"Scroll Down", + L"Cancel", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s isn't close enough to be healed.", + L"Your medics were unable to completely bandage everyone.", +}; + +STR16 pMilitiaButtonsHelpText[] = +{ + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", + L"Distribute available militia equally among all sectors", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Go to AIM and hire some mercs ( *Hint* it's in the Laptop )", // to inform the player to hired some mercs to get things going +#ifdef JA2UB + L"When you're ready to travel to Tracona, click on the Time Compression button at the bottom right of the screen.", // to inform the player to hit time compression to get the game underway +#else + L"When you're ready to travel to Arulco, click on the Time Compression button at the bottom right of the screen.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Error. Missing or corrupted file(s). Game will exit now.", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"View email", + L"Browse various web sites", + L"View files and email attachments", + L"Read log of events", + L"View team info", + L"View financial summary and history", + L"Close laptop", + + //Bottom task bar icons (if they exist): + L"You have new mail", + L"You have new file(s)", + + //Bookmarks: + L"Association of International Mercenaries", + L"Bobby Ray's online weapon mail order", + L"Institute of Mercenary Profiling", + L"More Economic Recruiting Center", + L"McGillicutty's Mortuary", + L"United Floral Service", + L"Insurance Brokers for A.I.M. contracts", + //New Bookmarks + L"", + L"Encyclopedia", + L"Briefing Room", + L"Campaign History", + L"Mercenaries Love or Dislike You", + L"World Health Organization", + L"Kerberus - Experience In Security", + L"Militia Overview", + L"Recon Intelligence Services", + L"Controlled factories", + L"Arulco Rebel Command", +}; + + +STR16 gzHelpScreenText[] = +{ + L"Exit help screen", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"There is a battle in progress. You can only retreat from the tactical screen.", + L"|Enter sector to continue the current battle in progress.", + L"|Automatically resolves the current battle.", + L"You can't automatically resolve a battle when you are the attacker.", + L"You can't automatically resolve a battle while you are being ambushed.", + L"You can't automatically resolve a battle while you are fighting creatures in the mines.", + L"You can't automatically resolve a battle while there are hostile civilians.", + L"You can't automatically resolve a battle while there are bloodcats.", + L"BATTLE IN PROGRESS", + L"You cannot retreat at this time.", +}; + +STR16 gzMiscString[] = +{ + L"Your militia continue to battle without the aid of your mercs...", + L"The vehicle does not need anymore fuel right now.", + L"The fuel tank is %d%% full.", + L"Deidranna's army has regained complete control over %s.", + L"You have lost a refueling site.", +}; + +STR16 gzIntroScreen[] = +{ + L"Cannot find intro video", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s hears a %s sound coming from %s.", + L"%s hears a %s sound of MOVEMENT coming from %s.", + L"%s hears a %s CREAKING coming from %s.", + L"%s hears a %s SPLASHING coming from %s.", + L"%s hears a %s IMPACT coming from %s.", + L"%s hears a %s GUNFIRE coming from %s.", // anv: without this, all further noise notifications were off by 1! + L"%s hears a %s EXPLOSION to %s.", + L"%s hears a %s SCREAM to %s.", + L"%s hears a %s IMPACT to %s.", + L"%s hears a %s IMPACT to %s.", + L"%s hears a %s SHATTERING coming from %s.", + L"%s hears a %s SMASH coming from %s.", + L"", // anv: placeholder for silent alarm + L"%s hears someone's %s VOICE coming from %s.", // anv: report enemy taunt to player +}; + +STR16 pTauntUnknownVoice[] = +{ + L"Unknown Voice", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Sort by Name (|F|1)", + L"Sort by Assignment (|F|2)", + L"Sort by Sleep Status (|F|3)", + L"Sort by Location (|F|4)", + L"Sort by Destination (|F|5)", + L"Sort by Departure Time (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"Error 404", + L"Site not found.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"Recent Shipments", + L"Order #", + L"Number Of Items", + L"Ordered On", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"Game Internals Programmer", // Chris Camfield + L"Co-designer/Writer", // Shaun Lyng + L"Strategic Systems & Editor Programmer", //Kris \"The Cow Rape Man\" Marnes + L"Producer/Co-designer", // Ian Currie + L"Co-designer/Map Designer", // Linda Currie + L"Artist", // Eric \"WTF\" Cheng + L"Beta Coordinator, Support", // Lynn Holowka + L"Artist Extraordinaire", // Norman \"NRG\" Olsen + L"Sound Guru", // George Brooks + L"Screen Designer/Artist", // Andrew Stacey + L"Lead Artist/Animator", // Scot Loving + L"Lead Programmer", // Andrew \"Big Cheese Doddle\" Emmons + L"Programmer", // Dave French + L"Strategic Systems & Game Balance Programmer", // Alex Meduna + L"Portraits Artist", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(still learning punctuation)", // Shaun Lyng + L"(\"It's done. I'm just fixing it\")", //Kris \"The Cow Rape Man\" Marnes + L"(getting much too old for this)", // Ian Currie + L"(and working on Wizardry 8)", // Linda Currie + L"(forced at gunpoint to also do QA)", // Eric \"WTF\" Cheng + L"(Left us for the CFSA - go figure...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(Dead Head and jazz lover)", // Andrew Stacey + L"(his real name is Robert)", // Scot Loving + L"(the only responsible person)", // Andrew \"Big Cheese Doddle\" Emmons + L"(can now get back to motocrossing)", // Dave French + L"(stolen from Wizardry 8)", // Alex Meduna + L"(did items and loading screens too!)", // Joey \"Joeker\" Whelan", +}; + +// HEADROCK: Adjusted strings for better feedback, and added new string for LBE repair. +STR16 sRepairsDoneString[] = +{ + L"%s finished repairing own items.", + L"%s finished repairing everyone's guns & armor.", + L"%s finished repairing everyone's equipped items.", + L"%s finished repairing everyone's large carried items.", + L"%s finished repairing everyone's medium carried items.", + L"%s finished repairing everyone's small carried items.", + L"%s finished repairing everyone's LBE gear.", + L"%s finished cleaning everyone's guns.", +}; + +STR16 zGioDifConfirmText[]= +{ + L"You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode?", + L"You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode?", + L"You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode?", + L"You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"%S loadscreen data file not found...", + + //1-5 + L"The robot cannot leave this sector when nobody is using the controller.", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"You can't compress time right now. Wait for the fireworks!", + + //'Name' refuses to move. + L"%s refuses to move.", + + //%s a merc name + L"%s does not have enough energy to change stance.", + + //A message that pops up when a vehicle runs out of gas. + L"The %s has run out of gas and is now stranded in %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"above", + L"below", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"None of your mercs have any medical ability.", + L"There are no medical supplies to perform bandaging.", + L"There weren't enough medical supplies to bandage everybody.", + L"None of your mercs need bandaging.", + L"Bandages mercs automatically.", + L"All your mercs are bandaged.", + + //14 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + + L"(roof)", + + L"Health: %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d vs. %d", + + L"The %s is full!", //(ex "The ice cream truck is full") + + L"%s does not need immediate first aid or bandaging but rather more serious medical attention and/or rest.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s is hit in the leg and collapses!", + //Name can't speak right now. + L"%s can't speak right now.", + + //22-24 plural versions + L"%d green militia have been promoted to veteran militia.", + L"%d green militia have been promoted to regular militia.", + L"%d regular militia have been promoted to veteran militia.", + + //25 + L"Switch", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s goes psycho!", + + //27-28 + //Messages why a player can't time compress. + L"It is currently unsafe to compress time because you have mercs in sector %s.", + L"It is currently unsafe to compress time when mercs are in the creature infested mines.", + + //29-31 singular versions + L"1 green militia has been promoted to a veteran militia.", + L"1 green militia has been promoted to a regular militia.", + L"1 regular militia has been promoted to a veteran militia.", + + //32-34 + L"%s doesn't say anything.", + L"Travel to surface?", + L"(Squad %d)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s has repaired %s's %s", + + //36 + L"BLOODCAT", + + //37-38 "Name trips and falls" + L"%s trips and falls", + L"This item can't be picked up from here.", + + //39 + L"None of your remaining mercs are able to fight. The militia will fight the creatures on their own.", + + //40-43 + //%s is the name of merc. + L"%s ran out of medical kits!", + L"%s lacks the necessary skill to doctor anyone!", + L"%s ran out of tool kits!", + L"%s lacks the necessary skill to repair anything!", + + //44-45 + L"Repair Time", + L"%s cannot see this person.", + + //46-48 + L"%s's gun barrel extender falls off!", + // HEADROCK HAM 3.5: Changed to reflect facility effect. + L"No more than %d militia trainers are permitted in this sector.", + L"Are you sure?", + + //49-50 + L"Time Compression", + L"The vehicle's gas tank is now full.", + + //51-52 Fast help text in mapscreen. + L"Continue Time Compression (|S|p|a|c|e)", + L"Stop Time Compression (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s has unjammed the %s", + L"%s has unjammed %s's %s", + + //55 + L"Can't compress time while viewing sector inventory.", + + L"The Jagged Alliance 2 v1.13 PLAY DISK was not found. Program will now exit.", + + L"Items successfully combined.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Current/Max Progress: %d%%/%d%%", + + L"Escort John and Mary?", + + // 60 + L"Switch Activated.", + + L"%s's armour attachment has been smashed!", + L"%s fires %d more rounds than intended!", + L"%s fires one more round than intended!", + + L"You need to close the item description box first!", + + L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 +}; + +// HEADROCK HAM 3.5: Added sector name +STR16 gzCWStrings[] = +{ + L"Call reinforcements to %s from adjacent sectors?", +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Location: %d\n", + L"%s|Brightness: %d / %d\n", + L"%s|Range to |Target: %d\n", + L"%s|I|D: %d\n", + L"%s|Orders: %d\n", + L"%s|Attitude: %d\n", + L"%s|Current |A|Ps: %d\n", + L"%s|Current |Health: %d\n", + L"%s|Current |Breath: %d\n", + L"%s|Current |Morale: %d\n", + L"%s|Current |S|hock: %d\n", + L"%s|Current |S|uppression Points: %d\n", + // Full info + L"%s|Helmet: %s\n", + L"%s|Vest: %s\n", + L"%s|Leggings: %s\n", + // Limited, Basic + L"|Armor: ", + L"Helmet", + L"Vest", + L"Leggings", + L"worn", + L"no Armor", + L"%s|N|V|G: %s\n", + L"no NVG", + L"%s|Gas |Mask: %s\n", + L"no Gas Mask", + L"%s|Head |Position |1: %s\n", + L"%s|Head |Position |2: %s\n", + L"\n(in Backpack) ", + L"%s|Weapon: %s ", + L"no Weapon", + L"Handgun", + L"SMG", + L"Rifle", + L"MG", + L"Shotgun", + L"Knife", + L"Heavy Weapon", + L"no Helmet", + L"no Vest", + L"no Leggings", + L"|Armor: %s\n", + // Added - SANDRO + L"%s|Skill 1: %s\n", + L"%s|Skill 2: %s\n", + L"%s|Skill 3: %s\n", + // Additional suppression effects - sevenfm + L"%s|A|Ps lost due to |S|uppression: %d\n", + L"%s|Suppression |Tolerance: %d\n", + L"%s|Effective |S|hock |Level: %d\n", + L"%s|A|I |Morale: %d\n", +}; + +STR16 New113Message[] = +{ + L"Storm started.", + L"Storm ended.", + L"Rain started.", + L"Rain ended.", + L"Watch out for snipers...", + L"Suppression fire!", + L"BRST", + L"AUTO", + L"GL", + L"GL BRST", + L"GL AUTO", + L"UB", + L"UBRST", + L"UAUTO", + L"BAYONET", + L"Sniper!", + L"Unable to split money due to having an item on your cursor.", + L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.", + L"Deleted item", + L"Deleted all items of this type", + L"Sold item", + L"Sold all items of this type", + L"You should check your goggles", + // Real Time Mode messages + L"In combat already", + L"No enemies in sight", + L"Real-time sneaking OFF", + L"Real-time sneaking ON", + //L"Enemy spotted! (Ctrl + x to enter turn based)", + L"Enemy spotted!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s was successful at stealing!", // MINTY - Changed "on" to "at": More natural English + L"%s did not have enough action points to steal all selected items.", // MINTY - Changed "had not" to "did not": More natural English + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health.)", // MINTY - Changed "make" to "perform": More natural English + L"Do you want to perform surgery on %s? (You can heal about %i health.)",// MINTY - Changed "make" to "perform": More natural English + L"Do you wish to perform surgeries first? (%i patient(s))",// MINTY - Changed "make" to "perform": More natural English + L"Do you wish to perform the surgery on this patient first?",// MINTY - Changed "make" to "perform": More natural English + L"Apply first aid automatically with surgeries or without them?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Surgery on %s finished.", + L"%s is hit in the chest and loses a point of maximum health!", + L"%s is hit in the chest and loses %d points of maximum health!", + L"%s is blinded by the blast!", + L"%s has regained one point of lost %s", + L"%s has regained %d points of lost %s", + L"Your scouting skills prevented an ambush by the enemy!", // MINTY - Changed "you to be ambushed" to "an ambush": More natural English + L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", + L"%s is hit at the groin and falls down in pain!", + ////////////////////////////////////////////////////////////////////////////////////// + L"Warning: enemy corpse found!!!", + L"%s [%d rnds]\n%s %1.1f %s", + L"Insufficient AP Points! Cost %d, you have %d.", + L"Hint: %s", + L"Player strength: %d - Enemy strength: %6.0f", // Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"Cannot use skill!", + L"Cannot build while enemies are in this sector!", + L"Cannot spot that location!", + L"Incorrect GridNo for firing artillery!", + L"Radio frequencies are jammed. No communication possible!", + L"Radio action failed!", + L"Not enough mortar shells in sector to start a barrage!", + L"No signal shell item found in Items.xml!", + L"No High-Explosive shell item found in Items.xml!", + L"No mortars found, cannot commence barrage!", + L"Already jamming signal, no need to do so again!", + L"Already listening for nearby sounds, no need to do so again!", + L"Already trying to spot, no need to do so again!", + L"Already scanning for jam signals, no need to do so again!", + L"%s could not apply %s to %s.", + L"%s orders reinforcements from %s.", + L"%s radio set is out of energy.", + L"a working radio set", + L"a binocular", + L"patience", + L"%s's shield has been destroyed!", + L" DELAY", + L"Yes*", + L"Yes", + L"No", + L"%s applied %s to %s.", +}; + +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s cowers in fear!", + L"%s is pinned down!", + L"%s fires more rounds than intended!", + L"You cannot train militia in this sector.", + L"Militia picks up %s.", + L"Cannot train militia with enemies present!", + // 6 - 10 + L"%s lacks sufficient Leadership score to train militia.", + L"No more than %d Mobile Militia trainers are permitted in this sector.", + L"No room in %s or around it for new Mobile Militia!", + L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", + L"Can't staff a facility while enemies are present!", + // 11 - 15 + L"%s lacks sufficient Wisdom to staff this facility.", + L"The %s is already fully-staffed.", + L"It will cost $%d per hour to staff this facility. Do you wish to continue?", + L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", + L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", + // 16 - 20 + L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", + L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", + L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", + L"N/A in this sector", + L"Daily Expenses", + // 21 - 25 + L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", + L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 + L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 + L"To merge two items during combat, you must pick them both up first.", // HAM 5 +}; + +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"No available adjustments", + L"%s was split into several parts.", + L"%s was split into several parts. Check %s's inventory for the resulting items.", + L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", + L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", + L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", + // 6 - 10 + L"Split Crate into Inventory", + L"Split into %d-rd Mags", + L"%s was split into %d Magazines containing %d rounds each.", + L"%s was split into %s's inventory.", + L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", + L"Instant mode", + L"Delayed mode", + L"Instant mode (%d AP)", + L"Delayed mode (%d AP)", +}; + +// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercLevelUp.xml" file! +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Hereby be informed that due to Gastons's past performance his fees for services rendered have undergone an increase. Personally, I'm not surprised. ± ± Speck T. Kline ± ", + // Stogie: Text from Line 43 in Email.edt + L"Please be advised that, as of this moment, Stogies's fees for services rendered have increased to coincide with the increase in his abilities. ± ± Speck T. Kline ± ", + // Tex: Text from Line 45 in Email.edt + L"Please be advised that Tex's experience entitles him to more equitable compensation. He's fees have therefore been increased to more accurately reflect his worth. ± ± Speck T. Kline ± ", + // Biggens: Text from Line 49 in Email.edt + L"Please take note. Due to the improved performance of Biggens his fees for services rendered have undergone an increase. ± ± Speck T. Kline ± ", +}; + +// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercAvailable.xml" file! +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk: Text from Line 58 + L"FW from AIM Server: Message from Victor Kolesnikov", + L"Hello. Monk here. Message received. I'm back if you want to see me. ± ± Waiting for your call. ±", + + // Brain: Text from Line 60 + L"FW from AIM Server: Message from Janno Allik", + L"Am now ready to consider tasks. There is a time and place for everything. ± ± Janno Allik ±", + + // Scream: Text from Line 62 + L"FW from AIM Server: Message from Lennart Vilde", + L"Lennart Vilde now available! ±", + + // Henning: Text from Line 64 + L"FW from AIM Server: Message from Henning von Branitz", + L"Have received your message, thanks. To discuss employment, contact me at the AIM Website. ± ± Till then! ± ± Henning von Branitz ±", + + // Luc: Text from Line 66 + L"FW from AIM Server: Message from Luc Fabre", + L"Mesage received, merci! Am happy to consider your proposals. You know where to find me. ± ± Looking forward to hearing from you. ±", + + // Laura: Text from Line 68 + L"FW from AIM Server: Message from Dr. Laura Colin", + L"Greetings! Good of you to leave a message It sounds interesting. ± ± Visit AIM again I would be happy to hear more. ± ± Best regards! ± ± Dr. Laura Colin ±", + + // Grace: Text from Line 70 + L"FW from AIM Server: Message from Graziella Girelli", + L"You wanted to contact me, but were not successful.± ± A family gathering. I am sure you understand? I've now had enough of family and would be very happy if you would contact me again over the AIM Site. ± ± Ciao! ±", + + // Rudolf: Text from Line 72 + L"FW from AIM Server: Message from Rudolf Steiger", + L"Do you know how many calls I get every day? Every tosser thinks he can call me. ± ± But I'm back, if you have something of interest for me. ±", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"FW from AIM Server: Message about merc availability", + L"I got your message. Waiting for your call. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Sniper: Eyes of a hawk, you can shoot the wings from a fly at a hundred yards! ± ", + // Camouflage + L"Camouflage: Beside you, even bushes look synthetic! ± ", + // SANDRO - new strings for new traits added + // MINTY - Altered the texts for more natural English, and added a little flavour too + // Ranger + L"Ranger: Those amateurs from Texas have nothing on you! ± ", + // Gunslinger + L"Gunslinger: With one handgun or two, you can be as lethal as Billy the Kid! ± ", + // Squadleader + L"Squadleader: A natural leader, your squadmates look to you for inspiration! ± ", + // Technician + L"Technician: MacGyver's got nothing on you! Mechanical, electronic or explosive, you can fix it! ± ", + // Doctor + L"Doctor: From grazes to gutshot, to amputations, you can heal them all! ± ", + // Athletics + L"Athletics: Your speed and vitality are worthy of an Olympian! ± ", + // Bodybuilding + L"Bodybuilding: Arnie? What a wimp! You could beat him with one arm behind your back! ± ", + // Demolitions + L"Demolitions: Sowing grenades like seeds, planting bombs, watching the limbs flying.. This is what you live for! ± ", + // Scouting + L"Scouting: Nothing can escape your notice! ± ", + // Covert ops + L"Covert Operations: You make 007 look like an amateur! ± ", + // Radio Operator + L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", + // Survival + L"Survival: Nature is a second home to you. ± ", +}; + +STR16 NewInvMessage[] = +{ + L"Cannot pickup backpack at this time", + L"No place to put backpack", + L"Backpack not found", + L"Zipper only works in combat", + L"Can not move while backpack zipper active", + L"Are you sure you want to sell all sector items?", + L"Are you sure you want to delete all sector items?", + L"Cannot climb while wearing a backpack", + L"All backpacks dropped", + L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Initiating RakNet server...", + L"Server started, waiting for connections...", + L"You must now connect with your client to the server by pressing '2'.", // No more used + L"Server is already running.", + L"Server failed to start. Terminating.", + // 5 + L"%d/%d clients are ready for realtime-mode.", + L"Server disconnected and shutdown.", + L"Server is not running.", + L"Clients are still loading, please wait...", + L"You cannot change dropzone after the server has started.", + // 10 + L"Sent file '%S' - 100/100", + L"Finished sending files to '%S'.", + L"Started sending files to '%S'.", + L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Initiating RakNet client...", + L"Connecting to IP: %S ...", + L"Received game settings:", + L"You are already connected.", + L"You are already connecting...", + // 5 + L"Client #%d - '%S' has hired '%s'.", + L"Client #%d - '%S' has hired another merc.", + L"You are ready - Total ready = %d/%d.", + L"You are no longer ready - Total ready = %d/%d.", + L"Starting battle...", + // 10 + L"Client #%d - '%S' is ready - Total ready = %d/%d.", + L"Client #%d - '%S' is no longer ready - Total ready = %d/%d", + L"You are ready. Awaiting other clients... Press 'OK' if you are not ready anymore.", + L"Let us the battle begin!", + L"A client must be running for starting the game.", + // 15 + L"Game cannot start. No mercs are hired...", + L"Awaiting 'OK' from server to unlock the laptop...", + L"Interrupted", + L"Finish from interrupt", + L"Mouse grid coordinates:", + // 20 + L"X: %d, Y: %d", + L"Grid number: %d", + L"Server only feature", + L"Choose server manual override stage: ('1' - Enable laptop/hiring) ('2' - Launch/load level) ('3' - Unlock UI) ('4' - Finish placement)", + L"Sector=%s, Max. clients=%d, Max. mercs=%d, Game type=%d, Same merc=%d, Damage multiplier=%f, Timed turns=%d, Secs/Tic=%d, Disable Bobby Ray=%d, Disable Aim/Merc Equipment=%d, Disable Morale=%d, Testing=%d.", + // 25 + L"", //not used any more + L"New connection: Client #%d - '%S'.", + L"Team: %d.",//not used any more + L"'%s' (client %d - '%S') was killed by '%s' (client %d - '%S').", + L"Kicked client #%d - '%S'.", + // 30 + L"Start a new turn for the selected client. #1: , #2: %S, #3: %S, #4: %S", + L"Starting turn for client #%d.", + L"Requesting for realtime...", + L"Switched back to realtime.", + L"Error: Something went wrong switching back.", + // 35 + L"Unlock laptop for hiring? (Are all clients connected?)", + L"The server has unlocked the laptop. Begin hiring!", + L"Interruptor.", + L"You cannot change dropzone if you are only the client and not the server.", + L"You declined the offer to surrender.", + // 40 + L"All your mercs are wiped dead!", + L"Spectator mode enabled.", + L"You have been defeated!", + L"Sorry, climbing is disable in a multiplayer game.", + L"You Hired '%s'", + // 45 + L"You can't change the map once purchasing has commenced.", + L"Map changed to '%s'.", + L"Client '%s' disconnected, removing from game", + L"You were disconnected from the game. Returning to Main Menu.", + L"Connection failed, Retrying in 5 seconds, %i retries left...", + //50 + L"Connection failed, giving up...", + L"You cannot start the game until another player has connected.", + L"%s : %s", + L"Send to all", + L"Allies only", + // 55 + L"Cannot join game. This game has already started.", + L"%s (team): %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"Received all files from server.", + L"'%S' finished downloading from server.", + L"'%S' started downloading from server.", + L"Cannot start the game until all clients have finished receiving files.", + L"This server requires that you download modified files to play, do you wish to continue?", + // 65 + L"Press 'Ready' to enter tactical screen.", + L"Cannot connect because your version %S is different from the server version %S.", + L"You killed an enemy soldier.", + L"Cannot start the game, because all teams are the same.", + L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", + // 70 + L"Could not save received file '%S'", + L"%s's bomb was disarmed by %s", + L"You loose, what a shame", // All over red rover + L"Spectator mode disabled", + L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", + // 75 + L"Team %s is wiped out.", + L"Client failed to start. Terminating.", + L"Client disconnected and shutdown.", + L"Client is not running.", + L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", + // 80 + L"AI's turn - %d left", +}; + +STR16 gszMPEdgesText[] = +{ + L"N", + L"E", + L"S", + L"W", + L"C", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"Foxtrot", + L"Bravo", + L"Delta", + L"Charlie", + L"N/A", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Game Type: ", + L"Players: ", + L"Mercs each: ", + L"You cannot change starting edge once Laptop is unlocked.", + L"You cannot change teams once the Laptop is unlocked.", + L"Random Mercs: ", + L"Y", + L"Difficulty:", + L"Server Version:", +}; + +STR16 gzMPSScreenText[] = +{ + L"Scoreboard", + L"Continue", + L"Cancel", + L"Player", + L"Kills", + L"Deaths", + L"Queen's Army", + L"Hits", + L"Misses", + L"Accuracy", + L"Damage Dealt", + L"Damage Taken", + L"Please wait for the server to press 'Continue'." +}; + +STR16 gzMPCScreenText[] = +{ + L"Cancel", + L"Connecting to Server", + L"Getting Server Settings", + L"Downloading custom files", + L"Press 'ESC' to cancel or 'Y' to chat", + L"Press 'ESC' to cancel", + L"Ready" +}; + +STR16 gzMPChatToggleText[] = +{ + L"Send to All", + L"Send to Allies only", +}; + +STR16 gzMPChatboxText[] = +{ + L"Multiplayer Chat", + L"'ENTER' to send, 'ESC' to cancel", +}; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", + // For new major/minor traits + L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", + L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes according to your true abilities. You cannot raise any score above", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", + // New strings for new traits + L"On the next page you are going to specify your physical attributes and skills. As 'attributes' are called: health, dexterity, agility, strength and wisdom. Attributes cannot go lower than %d.", + L"The rest are called 'skills' and unlike attributes skills can be set to zero, meaning you have absolutely no proficiency in it.", + L"All scores are set to a minimum at the beginning. Note that certain attributes are set to specific values according to skill traits you have selected. You cannot set those attributes lower than that.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of character traits to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Attitudes", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Neutral", + L"Sociable", + L"Loner", + L"Optimist", + L"Assertive", + L"Intellectual", + L"Primitive", + L"Aggressive", + L"Phlegmatic", + L"Dauntless", + L"Pacifist", + L"Malicious", + L"Show-off", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", + L"\n(Caution: you will need a big strength for this.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"Deaf", + L"Shortsighted", + L"Hemophiliac", + L"Fear of Heights", + L"Self-Harming", + L"I.M.P. Disabilities", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] = +{ + L"We bet you're glad this isn't voicemail.", + L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"You'll be screwed if you ever lose your glasses.", + L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = +{ + L"Are you SURE this is the right job for you?", + L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= +{ + L"Let's just say you are a grounded person.", + L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Might want to make sure your knives are always clean.", + L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s lacks sufficient Strength to perform this task.", + L"%s lacks sufficient Dexterity to perform this task.", + L"%s lacks sufficient Agility to perform this task.", + L"%s is not Healthy enough to perform this task.", + L"%s lacks sufficient Wisdom to perform this task.", + L"%s lacks sufficient Marksmanship to perform this task.", + // 6 - 10 + L"%s lacks sufficient Medical Skill to perform this task.", + L"%s lacks sufficient Mechanical Skill to perform this task.", + L"%s lacks sufficient Leadership to perform this task.", + L"%s lacks sufficient Explosives Skill to perform this task.", + L"%s lacks sufficient Experience to perform this task.", + // 11 - 15 + L"%s lacks sufficient Morale to perform this task.", + L"%s is too exhausted to perform this task.", + L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.", + L"Too many people are already working at the %s.", + L"Too many people are already performing this task at the %s.", + // 16 - 20 + L"%s can find no items to repair.", + L"%s has lost some %s while working in sector %s!", + L"%s has lost some %s while working at the %s in %s!", + L"%s was injured while working in sector %s, and requires immediate medical attention!", + L"%s was injured while working at the %s in %s, and requires immediate medical attention!", + // 21 - 25 + L"%s was injured while working in sector %s. It doesn't seem too bad though.", + L"%s was injured while working at the %s in %s. It doesn't seem too bad though.", + L"The residents of %s seem upset about %s's presence.", + L"The residents of %s seem upset about %s's work at the %s.", + L"%s's actions in sector %s have caused loyalty loss throughout the region!", + // 26 - 30 + L"%s's actions at the %s in %s have caused loyalty loss throughout the region!", + L"%s is drunk.", // <--- This is a log message string. + L"%s has become severely ill in sector %s, and has been taken off duty.", + L"%s has become severely ill and cannot continue his work at the %s in %s.", + L"%s was injured in sector %s.", // <--- This is a log message string. + // 31 - 35 + L"%s was severely injured in sector %s.", //<--- This is a log message string. + L"There are currently prisoners here who are aware of %s's identity.", + L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", + + +}; + +STR16 gzFacilityRiskResultStrings[]= +{ + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Health", + L"Marksmanship", + // 5-10 + L"Leadership", + L"Mechanical skill", + L"Medical skill", + L"Explosives skill", +}; + +STR16 gzFacilityAssignmentStrings[]= +{ + L"AMBIENT", + L"Staff", + L"Eat", + L"Rest", + L"Repair Items", + L"Repair %s", // Vehicle name inserted here + L"Repair Robot", + // 6-10 + L"Doctor", + L"Patient", + L"Practice Strength", + L"Practice Dexterity", + L"Practice Agility", + L"Practice Health", + // 11-15 + L"Practice Marksmanship", + L"Practice Medical", + L"Practice Mechanical", + L"Practice Leadership", + L"Practice Explosives", + // 16-20 + L"Student Strength", + L"Student Dexterity", + L"Student Agility", + L"Student Health", + L"Student Marksmanship", + // 21-25 + L"Student Medical", + L"Student Mechanical", + L"Student Leadership", + L"Student Explosives", + L"Trainer Strength", + // 26-30 + L"Trainer Dexterity", + L"Trainer Agility", + L"Trainer Health", + L"Trainer Marksmanship", + L"Trainer Medical", + // 30-35 + L"Trainer Mechanical", + L"Trainer Leadership", + L"Trainer Explosives", + L"Interrogate Prisoners", // added by Flugente + L"Undercover Snitch", + // 36-40 + L"Spread Propaganda", + L"Spread Propaganda", // spread propaganda (globally) + L"Gather Rumours", + L"Command Militia", // militia movement orders +}; +STR16 Additional113Text[]= +{ + L"Jagged Alliance 2 v1.13 windowed mode requires a color depth of 16bpp.", + L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16 bpp windowed mode.", + L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", + // WANNE: Savegame slots validation against INI file + L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", + L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", + +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +// MINTY - Changed some of the following taunts to sound more natural +STR16 sEnemyTauntsFireGun[]= +{ + L"Suck on this!", + L"Say hello to my lil' friend!", // MINTY - "Touch this" just doesn't sound right, so I changed it to a Scarface quote. + L"Come get some!", + L"You're mine!", + L"Die!", + L"You scared, motherfucker?", + L"This will hurt!", + L"Come on you bastard!", + L"Come on! I don't got all day!", + L"Come to daddy!", + L"You'll be six feet under in no time!", + L"Gonna send ya home in a pine box, loser!", + L"Hey, wanna play?", + L"You should have stayed home, bitch!", + L"Sucker!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"Barbecue time!", + L"I got a present for ya!", + L"Bam!", + L"Smile!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Catch!", + L"Here ya go!", + L"Pop goes the weasel.", + L"This one's for you.", + L"Muahaha!", + L"Catch this, swine!", + L"I like this.", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"Gonna scalp ya, sucker!", + L"Come to papa.", + L"Show me your guts!", + L"I'll rip you to pieces!", + L"Motherfucker!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"We're in some real shit...", + L"They said join the army. Not for this shit!", + L"I've had enough!", + L"Oh my God!", + L"They ain't paying us enough for this shit..", + L"Mommy!", + L"I'll be back! With friends!", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"I heard that!", + L"Who's there?", + L"What was that?", + L"Hey! What the...", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"They're here!", + L"Now the fun can start!", + L"I hoped this would never happen..", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"Aaaggh!", + L"Ugh!", + L"This.. hurts!", + L"You fuck!", + L"You will regret.. uhh.. this.", + L"What the..!", + L"Now you have.. pissed me off.", + +}; + +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Da'ffff...!", + L"Oh my God!", + L"Holy crap!", + L"Enemy!!!", + L"Alert! Alert!", + L"There is one!", + L"Attack!", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Description", + L"General", + L"Advanced", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Desc", + L"Gen", + L"Adv", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Primary", + L"Secondary", + L"AP Costs", + L"Burst / Autofire", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Prop.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", + L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", + L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", + L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", + L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", + L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", + L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", + L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", + L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Property icon (mouse-over to reveal name).", + L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", + L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", + L"Bonus/penalty given while |p|r|o|n|e.", + L"Bonus/penalty given", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y", + L"|D|a|m|a|g|e", + L"|R|a|n|g|e", + L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s", + L"|R|e|l|i|a|b|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", + L"|A|P|s |t|o |R|e|a|d|y", + L"|A|P|s |t|o |A|t|t|a|c|k", + L"|A|P|s |t|o |B|u|r|s|t", + L"|A|P|s |t|o |A|u|t|o|f|i|r|e", + L"|A|P|s |t|o |R|e|l|o|a|d", + L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", + L"|L|a|t|e|r|a|l |R|e|c|o|i|l", // No longer used + L"|T|o|t|a|l |R|e|c|o|i|l", + L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", + L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", + L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", + L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", + L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", + L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", + L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", + L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", + L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", + L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nThe minimum range at which a scope can provide it's aimBonus.", + L"\n \nTo hit modifier granted by laser sights.", + L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", + L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", + L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", + L"\n \nThe distance this weapon's muzzle will shift\nhorizontally between each and every bullet in a\nburst or autofire volley.\n \nPositive numbers indicate shifting to the right.\nNegative numbers indicate shifting to the left.\n \nCloser to 0 is better.", // No longer used + L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. + L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", + L"|C|o|v|e|r|a|g|e", + L"|D|e|g|r|a|d|e |R|a|t|e", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", + L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", + L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|A|r|m|o|r |P|i|e|r|c|i|n|g", + L"|B|u|l|l|e|t |T|u|m|b|l|e", + L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", + L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", + L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", + L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", + L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", + L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", + L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|D|a|m|a|g|e", + L"|S|t|u|n |D|a|m|a|g|e", + L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 + L"|B|l|a|s|t |R|a|d|i|u|s", + L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", + L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", + L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", + L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", + L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", + L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", + // HEADROCK HAM 5: Fragmentation + L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", + L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", + L"|F|r|a|g|m|e|n|t |R|a|n|g|e", + // HEADROCK HAM 5: End Fragmentations + L"|L|o|u|d|n|e|s|s", + L"|V|o|l|a|t|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", + L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", + L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 + L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", + L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", + L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", + L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", + L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", + L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", + // HEADROCK HAM 5: Fragmentation + L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", + L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", + L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", + L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", + L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|R|e|p|a|i|r |E|a|s|e", + L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", + L"|V|o|l|u|m|e", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", + L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|T|r|a|c|e|r |A|m|m|o", + L"|A|n|t|i|-|T|a|n|k |A|m|m|o", + L"|I|g|n|o|r|e|s |A|r|m|o|r", + L"|A|c|i|d|i|c |A|m|m|o", + L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", // 4 + L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", + L"|W|a|t|e|r|p|r|o|o|f", + L"|E|l|e|c|t|r|o|n|i|c", + L"|G|a|s |M|a|s|k", + L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", // 9 + L"|C|a|n |P|i|c|k |L|o|c|k|s", + L"|C|a|n |C|u|t |W|i|r|e|s", + L"|C|a|n |S|m|a|s|h |L|o|c|k|s", + L"|M|e|t|a|l |D|e|t|e|c|t|o|r", + L"|R|e|m|o|t|e |T|r|i|g|g|e|r", // 14 + L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", + L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", + L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", + L"|T|o|o|l |K|i|t", + L"|T|h|e|r|m|a|l |O|p|t|i|c|s", // 19 + L"|X|-|R|a|y |D|e|v|i|c|e", + L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", + L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", + L"|F|i|r|s|t |A|i|d |K|i|t", + L"|M|e|d|i|c|a|l |K|i|t", // 24 + L"|L|o|c|k |B|o|m|b", + L"|D|r|i|n|k", + L"|M|e|a|l", + L"|A|m|m|o |B|e|l|t", + L"|A|m|m|o |V|e|s|t", // 29 + L"|D|e|f|u|s|a|l |K|i|t", + L"|C|o|v|e|r|t |I|t|e|m", + L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", + L"|M|a|d|e |o|f |M|e|t|a|l", + L"|S|i|n|k|s", // 34 + L"|T|w|o|-|H|a|n|d|e|d", + L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", + L"|A|n|t|i|-|M|a|t|e|r|i|e|l |A|m|m|o", + L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|S|h|i|e|l|d", + L"|C|a|m|e|r|a", + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|E|m|p|t|y |B|l|o|o|d |B|a|g", + L"|B|l|o|o|d |B|a|g", // 44 + L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", + L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", + L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", + L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", + L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", + L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", + L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", + L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", + L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", + L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", + L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", + L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", + L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", + L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", + L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", + L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", + L"\n \nThis item contains various tools that can\nbe used to repair other items.\n\nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", + L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", + L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", + L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", + L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", + L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", + L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", + L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", + L"\n \nThis item will still your thirst\nif you drink it.", + L"\n \nThis item will still your hunger\nif you eat it.", + L"\n \nWith this ammo belt you can\nfeed someone else's MG.", + L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", + L"\n \nThis item improves your trap disarm chance by ", + L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", + L"\n \nThis item cannot be damaged.", + L"\n \nThis item is made of metal.\nIt takes less damage than other items.", + L"\n \nThis item sinks when put in water.", + L"\n \nThis item requires both hands to be used.", + L"\n \nThis item will block your iron sights\nso you cannot use them.", + L"\n \nThis ammo can destroy light walls\nand various other objects.", + L"\n \nIf kept ready in your inventory,\nthis will lower the chance to be infected\nby airborne transmitted pathogens of other people.", + L"\n \nIf kept ready in your inventory,\nthis will lower the chance to be infected\nby contact transmitted pathogens of other people.", + L"\n \nIf equipped in a hand, this will block incoming damage.", + L"\n \nYou can take photos with this.", + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", + L"\n \nThis ammo can extinguish fire.", // 49 + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", // 0 + L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", // 5 + L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", + L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", + L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", // 10 + L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 15 + L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", + L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", // 20 + L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", + L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", + L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", + L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", // 25 + L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", + L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", // 30 + L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", + L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", + L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", + L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", + L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", // 35 + L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", + L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", // 40 + L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|T|u|n|n|e|l |V|i|s|i|o|n", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", // 45 + L"|T|o|-|H|i|t |B|o|n|u|s", + L"|A|i|m |B|o|n|u|s", + L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", + L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d", // 50 + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", + L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", // 55 + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", + L"|D|i|r|t |M|o|d|i|f|i|e|r", + L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r", + L"|F|o|o|d| |P|o|i|n|t|s", + L"|D|r|i|n|k |P|o|i|n|t|s", // 60 + L"|P|o|r|t|i|o|n |S|i|z|e", + L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r", + 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", + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", // 0 + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", + L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", // 5 + L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", // 10 + L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 15 + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", // 20 + L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", + L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", // 25 + L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", // 30 + L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", // 35 + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", // 40 + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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.", // 45 + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", + L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", // 50 + L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", + L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", + L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", // 55 + L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", + L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", + L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", + L"\n \nAmount of energy in kcal.\n \nHigher is better.", + L"\n \nAmount of water in liter.\n \nHigher is better.", // 60 + 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"", + 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.", + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", // 0 + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", // 5 + L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", + L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", // 10 + L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 15 + L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", // 20 + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", // 25 + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", // 30 + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", // 35 + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", // 40 + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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.", // 45 + 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 \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 \nIf a gun's temperature is above this,\nit will jam more frequently.", // 50 + L"\n \nIf a gun's temperature is above this,\nit will be damaged more easily.", + L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"SINGLE", + L"AP", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"Finished sorting ammo into crates in sector %c%d.", + L"Finished removing attachments from items in sector %c%d.", + L"Finished ejecting ammo from weapons in sector %c%d.", + L"Finished stacking and merging all items in sector %c%d.", + // Bob: new strings for emptying LBE items + L"Finished emptying LBE items in sector %c%d.", + L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Show all", + L"Guns", + L"Ammo", + L"Explosives", + L"Melee Weapons", + L"Armor", + L"LBE", + L"Kits", + L"Misc. Items", + L"Hide all", +}; + +// MercCompare (MeLoDy) +// TODO.Translate +STR16 gzMercCompare[] = +{ + L"???", + L"Base opinion:", + + L"Dislikes %s %s", + L"Likes %s %s", + + L"Strongly hates %s", + L"Hates %s", // 5 + + L"Deep racism against %s", + L"Racism against %s", + + L"Cares deeply about looks", + L"Cares about looks", + + L"Very sexist", // 10 + L"Sexist", + + L"Dislikes other background", + L"Dislikes other backgrounds", + + L"Past grievances", + L"____", // 15 + L"/", + L"* Opinion is always in [%d; %d]", +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = +{ + L"Temperature is ", + L"very low", + L"low", + L"medium", + L"high", + L"very high", + L"dangerous", + L"CRITICAL", + L"DRAMATIC", + L"unknown", + L"." +}; + +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"Food is ", + L"fresh", + L"good", + L"ok", + L"stale", + L"shabby", + L"rotting", + L"." +}; + +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Pvt. ", //ExpLevel 1 + L"Pfc. ", //ExpLevel 2 + L"Cpl. ", //ExpLevel 3 + L"Sgt. ", //ExpLevel 4 + L"Lt. ", //ExpLevel 5 + L"Cpt. ", //ExpLevel 6 + L"Maj. ", //ExpLevel 7 + L"Lt.Col. ", //ExpLevel 8 + L"Col. ", //ExpLevel 9 + L"Gen. " //ExpLevel 10 +}; + + +STR16 gzNewLaptopMessages[]= +{ + L"Ask about our special offer!", + L"Temporarily Unavailable", + L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Range to target: %d tiles, Brightness: %d/%d", + L"Attaching the transmitter to your laptop computer.", + L"You cannot afford to hire %s", + L"For a limited time, the above fee covers the cost of the entire mission and includes the equipment listed below.", + L"Hire %s now and take advantage of our unprecedented 'one fee covers all' pricing. Also included in this unbelievable offer is the mercenary's personal equipment at no charge.", + L"Fee", + L"There is someone else in the sector...", + //L"Gun Range: %d tiles, Chance to hit: %d percent", + L"Display Cover", + L"Line of Sight", + L"New Recruits cannot arrive there.", + L"Since your laptop has no transmitter, you won't be able to hire new team members. Perhaps this would be a good time to load a saved game or start over!", + L"%s hears the sound of crumpling metal coming from underneath Jerry's body. It sounds disturbingly like your laptop antenna being crushed.", //the %s is the name of a merc. @@@ Modified + L"After scanning the note left behind by Deputy Commander Morris, %s senses an oppurtinity. The note contains the coordinates for launching missiles against different towns in Arulco. It also gives the coodinates of the origin - the missile facility.", + L"Noticing the control panel, %s figures the numbers can be reversed, so that the missile might destroy this very facility. %s needs to find an escape route. The elevator appears to offer the fastest solution...", + L"This is an IRON MAN game and you cannot save when enemies are around.", // @@@ new text + L"(Cannot save during combat)", //@@@@ new text + L"The current campaign name is greater than 30 characters.", // @@@ new text + L"The current campaign cannot be found.", // @@@ new text + L"Campaign: Default ( %S )", // @@@ new text + L"Campaign: %S", // @@@ new text + L"You have selected the campaign %S. This campaign is a player-modified version of the original Unfinished Business campaign. Are you sure you wish to play the %S campaign?", // @@@ new text + L"In order to use the editor, please select a campaign other than the default.", ///@@new + // anv: extra iron man modes + L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", + L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", +}; + +// The_bob : pocket popup text defs +STR16 gszPocketPopupText[]= +{ + L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN + L"- no matching ammo -", //POCKET_POPUP_NO_AMMO + L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS + L"more...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features +STR16 szCovertTextStr[]= +{ + L"%s has camo!", + L"%s has a backpack!", + L"%s is seen carrying a corpse!", + L"%s's %s is suspicious!", + L"%s's %s is considered military hardware!", + L"%s carries too many guns!", + L"%s's %s is too advanced for an %s soldier!", + L"%s's %s has too many attachments!", + L"%s was seen performing suspicious activities!", + L"%s does not look like a civilian!", + L"%s bleeding was discovered!", + L"%s is drunk and doesn't behave like a soldier!", + L"On closer inspection, %s's disguise does not hold!", + L"%s isn't supposed to be here!", + L"%s isn't supposed to be here at this time!", + L"%s was seen near a fresh corpse!", + L"%s equipment raises a few eyebrows!", + L"%s is seen targetting %s!", + L"%s has seen through %s's disguise!", + L"No clothes item found in Items.xml!", + L"This does not work with the old trait system!", + L"Not enough APs!", + L"Bad palette found!", + L"You need the covert skill to do this!", + L"No uniform found!", + L"%s is now disguised as a civilian.", + L"%s is now disguised as a soldier.", + L"%s wears a disorderly uniform!", + L"In retrospect, asking for surrender in disguise wasn't the best idea...", + L"%s was uncovered!", + L"%s's disguise seems to be ok...", + L"%s's disguise will not hold.", + L"%s was caught stealing!", + L"%s tried to manipulate %s's inventory.", + L"An elite soldier did not recognize %s!", + L"A officer knew %s was unfamiliar!", +}; + +STR16 szCorpseTextStr[]= +{ + L"No head item found in Items.xml!", + L"Corpse cannot be decapitated!", + L"No meat item found in Items.xml!", + L"Not possible, you sick, twisted individual!", + L"No clothes to take!", + L"%s cannot take clothes off of this corpse!", + L"This corpse cannot be taken!", + L"No free hand to carry corpse!", + L"No corpse item found in Items.xml!", + L"Invalid corpse ID!", +}; + +STR16 szFoodTextStr[]= +{ + L"%s does not want to eat %s", + L"%s does not want to drink %s", + L"%s ate %s", + L"%s drank %s", + L"%s's strength was damaged due to being overfed!", + L"%s's strength was damaged due to lack of nutrition!", + L"%s's health was damaged due to being overfed!", + L"%s's health was damaged due to lack of nutrition!", + L"%s's strength was damaged due to excessive drinking!", + L"%s's strength was damaged due to lack of water!", + L"%s's health was damaged due to excessive drinking!", + L"%s's health was damaged due to lack of water!", + L"Sectorwide canteen filling not possible, Food System is off!" +}; + +STR16 szPrisonerTextStr[]= +{ + L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", + L"Gained $%d as ransom money.", + L"%d prisoners revealed enemy positions.", + L"%d officers, %d elites, %d regulars and %d admins joined our cause.", + L"Prisoners start a massive riot in %s!", + L"%d prisoners were sent to %s!", + L"Prisoners have been released!", + L"The army now occupies the prison in %s, the prisoners were freed!", + L"The enemy refuses to surrender!", + L"The enemy refuses to take you as prisoners - they prefer you dead!", + L"This behaviour is set OFF in your ini settings.", + L"%s has freed %s!", + L"A high-ranking army officer in %s has been revealed!", + L"The enemy leader refuses to even consider surrender!", + L"%d prisoners volunteered to join our forces.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= +{ + L"nothing", + L"building a fortification", + L"removing a fortification", + L"hacking", + L"%s had to stop %s.", + L"The selected barricade cannot be built in this sector", +}; + +STR16 szInventoryArmTextStr[]= +{ + L"Blow up (%d AP)", + L"Blow up", + L"Arm (%d AP)", + L"Arm", + L"Disarm (%d AP)", + L"Disarm", +}; + +STR16 szBackgroundText_Flags[]= +{ + L" might consume drugs in inventory\n", + L" disregard for all other backgrounds\n", + L" +1 level in underground sectors\n", + L" steals money from the locals sometimes\n", + + 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 + + L" huge loyality penalty in all towns if we die\n", + + L" refuses to attack animals\n", + L" refuses to attack members of the same group\n", +}; + +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% APs in polar sectors\n", + L" %s%d%% APs in desert sectors\n", + L" %s%d%% APs in swamp sectors\n", + L" %s%d%% APs in urban sectors\n", + L" %s%d%% APs in forest sectors\n", + L" %s%d%% APs in plain sectors\n", + L" %s%d%% APs in river sectors\n", + L" %s%d%% APs in tropical sectors\n", + L" %s%d%% APs in coastal sectors\n", + L" %s%d%% APs in mountainous sectors\n", + + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% leadership stat\n", + L" %s%d%% marksmanship stat\n", + 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", + L" %s%d%% APs needed for fortification actions\n", + L" %s%d%% APs needed for mortars\n", + L" %s%d%% APs needed to access inventory\n", + L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", + L" %s%d%% APs on first turn when assaulting a sector\n", + + L" %s%d%% travel speed on foot\n", + L" %s%d%% travel speed on land vehicles\n", + L" %s%d%% travel speed on air vehicles\n", + L" %s%d%% travel speed on water vehicles\n", + + L" %s%d%% fear resistance\n", + L" %s%d%% suppression resistance\n", + L" %s%d%% physical resistance\n", + L" %s%d%% alcohol resistance\n", + L" %s%d%% disease resistance\n", + + L" %s%d%% interrogation effectiveness\n", + L" %s%d%% prison guard strength\n", + L" %s%d%% better prices when trading guns and ammo\n", + L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", + L" %s%d%% team capitulation strength if we lead negotiations\n", + L" %s%d%% faster running\n", + L" %s%d%% bandaging speed\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% strength to carry items\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", + L" %s%d need for sleep\n", + L" %s%d%% melee damage\n", + L" %s%d%% cth with blades\n", + L" %s%d%% camo effectiveness\n", + L" %s%d%% stealth\n", + L" %s%d%% max CTH\n", + L" %s%d hearing range during the night\n", + L" %s%d hearing range during the day\n", + L" %s%d effectivity at disarming traps\n", + L" %s%d%% CTH with SAMs\n", + + L" %s%d%% effectiveness to friendly approach\n", + L" %s%d%% effectiveness to direct approach\n", + L" %s%d%% effectiveness to threaten approach\n", + 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", + L" %s%d%% insurance cost\n", + L" %s%d%% effectiveness as spotter for fellow snipers\n", + L" %s%d%% effectiveness at diagnosing diseases\n", + L" %s%d%% effectiveness at treating population against diseases\n", + L"Can spot tracks up to %d tiles away\n", + L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% chance to evade snake attacks\n", + + L" dislikes some other backgrounds\n", + L" Smoker", + L" Nonsmoker", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% building speed\n", + L" hacking skill: %s%d ", + L" %s%d%% burial speed\n", + L" %s%d%% administration effectiveness\n", + L" %s%d%% exploration effectiveness\n", +}; + +STR16 szBackgroundTitleText[] = +{ + L"I.M.P. Background", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = +{ + L"I.M.P. Prejudices", +}; + +STR16 szPersonalityDisplayText[]= +{ + L"You look", + L"and appearance is", + L"important to you.", + L"You have", + L"and care", + L"about that.", + L"You are", + L"and hate everyone", + L".", + L"racist against non-", + L"people.", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"How do you look?", + L"How important are the looks of others to you?", + L"What are your manners?", + L"How important are the manners of other people to you?", + L"What is your nationality?", + L"What nation do you dislike?", + L"How much do you dislike that nation?", + L"How racist are you?", + L"What is your race? You will be\nracist against all other races.", + L"How sexist are you against the other gender?", +}; + + +STR16 szRaceText[]= +{ + L"white", + L"black", + L"asian", + L"eskimo", + L"hispanic", +}; + +STR16 szAppearanceText[]= +{ + L"average", + L"ugly", + L"homely", + L"attractive", + L"like a babe", +}; + +STR16 szRefinementText[]= +{ + L"average manners", + L"manners of a slob", + L"manners of a snob", +}; + +STR16 szRefinementTextTypes[] = +{ + L"normal people", + L"slobs", + L"snobs", +}; + +STR16 szNationalityText[]= +{ + L"American", // 0 + L"Arab", + L"Australian", + L"British", + L"Canadian", + L"Cuban", // 5 + L"Danish", + L"French", + L"Russian", + L"Traconian", // UB takes place in Tracona + L"Swiss", // 10 + L"Jamaican", + L"Polish", + L"Chinese", + L"Irish", + L"South African", // 15 + L"Hungarian", + L"Scottish", + L"Arulcan", + L"German", + L"African", // 20 + L"Italian", + L"Dutch", + L"Romanian", + L"Metaviran", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"Belarusian", + L"Belgian", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"Brasilian", + L"Bulgarian", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"Estonian", + L"Ethiopian", + L"Filipino", // 50 + L"Finnish", + L"Georgian", + L"Greek", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Indian", + L"Indonesian", + L"Iranian", + L"Iraqi", // 60 + L"Islandic", + L"Israeli", + L"Japanese", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Mexican", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Nigerian", + L"Nigerien", + L"Norwegian", + L"Pakistani", // 85 + L"Panamanian", + L"Portoguese", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"Serbian", + L"Slovakian", + L"Slovenian", + L"Somali", + L"Spanish", // 95 + L"Sudanese", + L"Swedish", + L"Syrian", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"Turkish", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"Venezuelan", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +STR16 szNationalityTextAdjective[] = +{ + L"americans", // 0 + L"arabs", + L"australians", + L"britains", + L"canadians", + L"cubans", // 5 + L"danes", + L"frenchmen", + L"russians", + L"traconians", + L"swiss", // 10 + L"jamaicans", + L"poles", + L"chinese", + L"irishmen", + L"south africans", // 15 + L"hungarians", + L"scotsmen", + L"arulcans", + L"germans", + L"africans", // 20 + L"italians", + L"dutchmen", + L"romanians", + L"metavirans", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"belarusians", + L"belgians", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"brasilians", + L"bulgarians", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"estonians", + L"ethiopians", + L"filipinos", // 50 + L"finns", + L"georgians", + L"greek", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"indians", + L"indonesians", + L"iranians", + L"iraqis", // 60 + L"islandics", + L"israelis", + L"japanese", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"mexicans", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"nigerians", + L"nigeriens", + L"norwegians", + L"pakistanis", // 85 + L"panamanians", + L"portoguese", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"serbians", + L"slovakians", + L"slovenians", + L"somali", + L"spaniards", // 95 + L"sudanese", + L"swedes", + L"syrians", + L"thais", + L"togolese", // 100 + L"tunisians", + L"turks", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"venezuelans", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"and do not hate any other nationality.", // used in personnel.cpp + L"of no origin", // used in IMP generation +}; + +STR16 szCareLevelText[]= +{ + L"not", + L"somewhat", + L"extremely", +}; + +STR16 szRacistText[]= +{ + L"not", + L"somewhat", + L"very", +}; + +STR16 szSexistText[]= +{ + L"no sexist", + L"somewhat sexist", + L"very sexist", + L"a Gentleman", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"Batteries are ", + L"full", + L"good", + L"at half", + L"low", + L"depleted", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= +{ + L"Mercenary", + L"Green militia", + L"Regular militia", + L"Elite militia", + + L"Civilian", + + L"Administrator", + L"Army Soldier", + L"Elite Soldier", + L"Tank", + + L"Creature", + L"Zombie", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"%s Press Council", + L"Ministry for %s Information Distribution", + L"%s Revolutionary Movement", + L"The Times International", + L"International Times", + L"R.I.S. (Recon Intelligence Service)", + + L"A collection of press sources from %s", + L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", + + L"Conflict Summary", + L"Battle reports", + L"News", + L"About us", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s in %s.", + + L"rebel forces", + L"the army", + + L"attacked", + L"ambushed", + L"airdropped", + + L"The attack came from %s.", + L"%s were reinforced from %s.", + L"The attack came from %s, %s were reinforced from %s.", + L"north", + L"east", + L"south", + L"west", + L"and", + L"an unknown location", + + L"Buildings in the sector were damaged.", + L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", + L"During the attack, %s and %s called reinforcements.", + L"During the attack, %s called reinforcements.", + L"Eyewitnesses report the use of chemical weapons from both sides.", + L"Chemical weapons were used by %s.", + L"In a serious escalation of the conflict, both sides deployed tanks.", + L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", + L"Both sides are said to have used snipers.", + L"Unverified reports indicate %s snipers were involved in the firefight.", + L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", + L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", + L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"Deep in the night", // 23 - 3 + L"At dawn", // 3 - 6 + L"Early in the morning", // 6 - 8 + L"In the morning hours", // 8 - 11 + L"At noon", // 11 - 14 + L"On the afternoon", // 14 - 18 + L"On the evening", // 18 - 21 + L"During the night", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Initial funding", + L"Mine income", + L"Trade", + L"Other sources", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Ammunition", + L"Explosives", + L"Food", + L"Medical gear", + L"Item maintenance", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"In an extremely one-sided battle, the army force was wiped out without much resistance.", + + L"The rebels easily defeated the army, inflicting heavy losses.", + L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", + + L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", + L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", + + L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", + + L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", + L"Despite the high number of rebels in this sector, the army easily dispatched them.", + + L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", + L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", + + L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", + L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", + + L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"Irrelevant", + L"Insignificant", + L"Notable", + L"Noteworthy", + L"Significant", + L"Interesting", + L"Important", + L"Very important", + L"Grave", + L"Major", + L"Momentous", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"Killed", + L"Wounded", + L"Prisoners", + L"Shots fired", + + L"Money earned", + L"Consumption", + L"Losses", + L"Participants", + + L"Promotions", + L"Summary", + L"Detail", + L"Previous", + + L"Next", + L"Incident", + L"Day", +}; + +STR16 szCampaignStatsOperationPrefix[] = +{ + L"Glorious %s", + L"Mighty %s", + L"Awesome %s", + L"Intimidating %s", + + L"Powerful %s", + L"Earth-Shattering %s", + L"Insidious %s", + L"Swift %s", + + L"Violent %s", + L"Brutal %s", + L"Relentless %s", + L"Merciless %s", + + L"Cannibalistic %s", + L"Gorgeous %s", + L"Rogue %s", + L"Dubious %s", + + L"Sexually Ambigious %s", + L"Burning %s", + L"Enraged %s", + L"Visonary %s", + + // 20 + L"Gruesome %s", + L"International-law-ignoring %s", + L"Provoked %s", + L"Ceaseless %s", + + L"Inflexible %s", + L"Unyielding %s", + L"Regretless %s", + L"Remorseless %s", + + L"Choleric %s", + L"Unexpected %s", + L"Democratic %s", + L"Bursting %s", + + L"Bipartisan %s", + L"Bloodstained %s", + L"Rouge-wearing %s", + L"Innocent %s", + + L"Hateful %s", + L"Underwear-staining %s", + L"Civilian-devouring %s", + L"Unflinching %s", + + // 40 + L"Expect No Mercy From Our %s", + L"Very Mad %s", + L"Ultimate %s", + L"Furious %s", + + L"Its best to Avoid Our %s", + L"Fear the %s", + L"All Hail %s!", + L"Protect the %s", + + L"Beware the %s", + L"Crush the %s", + L"Backstabbing %s", + L"Vicious %s", + + L"Sadistic %s", + L"Burning %s", + L"Wrathful %s", + L"Invincible %s", + + L"Guilt-ridden %s", + L"Rotting %s", + L"Sanitized %s", + L"Self-doubting %s", + + // 60 + L"Ancient %s", + L"Very Hungry %s", + L"Sleepy %s", + L"Demotivated %s", + + L"Cruel %s", + L"Annoying %s", + L"Huffy %s", + L"Bisexual %s", + + L"Screaming %s", + L"Hideous %s", + L"Praying %s", + L"Stalking %s", + + L"Cold-blooded %s", + L"Fearsome %s", + L"Trippin' %s", + L"Damned %s", + + L"Vegetarian %s", + L"Grotesque %s", + L"Backward %s", + L"Superior %s", + + // 80 + L"Inferior %s", + L"Okayish %s", + L"Porn-consuming %s", + L"Poisoned %s", + + L"Spontaneous %s", + L"Lethargic %s", + L"Tickled %s", + L"The %s is a dupe!", + + L"%s on Steroids", + L"%s vs. Predator", + L"A %s with a twist", + L"Self-Pleasuring %s", + + L"Man-%s hybrid", + L"Inane %s", + L"Overpriced %s", + L"Midnight %s", + + L"Capitalist %s", + L"Communist %s", + L"Intense %s", + L"Steadfast %s", + + // 100 + L"Narcoleptic %s", + L"Bleached %s", + L"Nail-biting %s", + L"Smite the %s", + + L"Bloodthirsty %s", + L"Obese %s", + L"Scheming %s", + L"Tree-Humping %s", + + L"Cheaply made %s", + L"Sanctified %s", + L"Falsely accused %s", + L"%s to the rescue", + + L"Crab-people vs. %s", + L"%s in Space!!!", + L"%s vs. Godzilla", + L"Untamed %s", + + L"Durable %s", + L"Brazen %s", + L"Greedy %s", + L"Midnight %s", + + // 120 + L"Confused %s", + L"Irritated %s", + L"Loathsome %s", + L"Manic %s", + + L"Ancient %s", + L"Sneaking %s", + L"%s of Doom", + L"%s's revenge", + + L"A %s on the run", + L"A %s out of time", + L"One with %s", + L"%s from hell", + + L"Super-%s", + L"Ultra-%s", + L"Mega-%s", + L"Giga-%s", + + L"A quantum of %s", + L"Her Majesties' %s", + L"Shivering %s", + L"Fearful %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Dragon", + L"Mountain Lion", + L"Copperhead Snake", + L"Jack Russell Terrier", + + L"Arch-Nemesis", + L"Basilisk", + L"Blade", + L"Shield", + + L"Hammer", + L"Spectre", + L"Congress", + L"Oilfield", + + L"Boyfriend", + L"Girlfriend", + L"Husband", + L"Stepmother", + + L"Sand Lizard", + L"Bankers", + L"Anaconda", + L"Kitten", + + // 20 + L"Congress", + L"Senate", + L"Cleric", + L"Badass", + + L"Bayonet", + L"Wolverine", + L"Soldier", + L"Tree Frog", + + L"Weasel", + L"Shrubbery", + L"Tar pit", + L"Sunset", + + L"Hurricane", + L"Ocelot", + L"Tiger", + L"Defense Industry", + + L"Snow Leopard", + L"Megademon", + L"Dragonfly", + L"Rottweiler", + + // 40 + L"Cousin", + L"Grandma", + L"Newborn", + L"Cultist", + + L"Disinfectant", + L"Democracy", + L"Warlord", + L"Doomsday Device", + + L"Minister", + L"Beaver", + L"Assassin", + L"Rain of Burning Death", + + L"Prophet", + L"Interloper", + L"Crusader", + L"Administration", + + L"Supernova", + L"Liberty", + L"Explosion", + L"Bird of Prey", + + // 60 + L"Manticore", + L"Frost Giant", + L"Celebrity", + L"Middle Class", + + L"Loudmouth", + L"Scape Goat", + L"Warhound", + L"Vengeance", + + L"Fortress", + L"Mime", + L"Conductor", + L"Job-Creator", + + L"Frenchman", + L"Superglue", + L"Newt", + L"Incompetency", + + L"Steppenwolf", + L"Iron Anvil", + L"Grand Lord", + L"Supreme Ruler", + + // 80 + L"Dictator", + L"Old Man Death", + L"Shredder", + L"Vacuum Cleaner", + + L"Hamster", + L"Hypno-Toad", + L"Discjockey", + L"Undertaker", + + L"Gorgon", + L"Child", + L"Mob", + L"Raptor", + + L"Goddess", + L"Gender Inequality", + L"Mole", + L"Baby Jesus", + + L"Gunship", + L"Citizen", + L"Lover", + L"Mutual Fund", + + // 100 + L"Uniform", + L"Saber", + L"Snow Leopard", + L"Panther", + + L"Centaur", + L"Scorpion", + L"Serpent", + L"Black Widow", + + L"Tarantula", + L"Vulture", + L"Heretic", + L"Zombie", + + L"Role-Model", + L"Hellhound", + L"Mongoose", + L"Nurse", + + L"Nun", + L"Space Ghost", + L"Viper", + L"Mamba", + + // 120 + L"Sinner", + L"Saint", + L"Comet", + L"Meteor", + + L"Can of worms", + L"Fish oil pills", + L"Breastmilk", + L"Tentacle", + + L"Insanity", + L"Madness", + L"Cough reflex", + L"Colon", + + L"King", + L"Queen", + L"Bishop", + L"Peasant", + + L"Tower", + L"Mansion", + L"Warhorse", + L"Referee", + + // 140 +}; + +STR16 szMercCompareWebSite[] = +{ + // main page + L"Mercs Love or Dislike You", + L"Your #1 teambuilding experts on the web", + + L"About us", + L"Analyse a team", + L"Pairwise comparison", + L"Personalities", + L"Customer voices", + + L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"Your team struggles with itself.", + L"Your employees waste time working against each other.", + L"Your workforce experiences a high fluctuation rate.", + L"You constantly receive low marks on workplace satisfaction ratings.", + L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"A few citations from our satisfied customers:", + L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G., Novelist-", + L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C., Corrective law enforcement-", + L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W., Snake charmer-", + L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L., SPK-", + L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C., NASA-", + L"I fully recommend this site!", + L"-Kasper H., H&C logistic Inc-", + L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke, Kerberus Inc-", + + // analyze + L"Choose your employee", + L"Choose your squad", + + // error messages + L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s shot me!", + L"%s is scheming behind my back", + L"%s interfered in my business", + L"%s is friends with my enemy", + + L"%s got a contract before I did", + L"%s ordered a shameful retreat", + L"%s massacred the innocent", + L"%s slows us down", + + L"%s doesn't share food", + L"%s jeopardizes the mission", + L"%s is a drug addict", + L"%s is thieving scum", + + L"%s is an incompetent commander", + L"%s is overpaid", + L"%s gets all the good stuff", + L"%s mounted a gun on me", + + L"%s treated my wounds", + L"Had a good drink with %s", + L"%s is fun to get wasted with", + L"%s is annoying when drunk", + + L"%s is an idiot when drunk", + L"%s opposed our view in an argument", + L"%s supported our position", + L"%s agrees to our reasoning", + + L"%s's beliefs are contrary to ours", + L"%s knows how to calm down people", + L"%s is insensitive", + L"%s puts people in their places", + + L"%s is way too impulsive", + L"%s is disease-ridden", + L"%s treated my diseases", + L"%s does not hold back in combat", + + L"%s enjoys combat a bit too much", + L"%s is a good teacher", + L"%s led us to victory", + L"%s saved my life", + + L"%s stole my kill", + L"%s and me fought well together", + L"%s made the enemy surrender", + L"%s injured civilians", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"World Health Organization", + L"Bringing health to life", + + // links to other pages + L"About WHO", + L"Disease in Arulco", + L"About diseases", + + // text on the main page + L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"With the country being off limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"Do you wish to acquire detailed data on the current status of disease in Arulco? You can access this data on the strategic map once acquired.", + L"You currently do not have access to WHO data on the arulcan plague.", + L"You have acquired detailed maps on the status of the disease.", + L"Subscribe to map updates", + L"Unsubscribe map updates", + + // helpful tips page + L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus", + L"Experience In Security", + + // links to other pages + L"What is Kerberus?", + L"Team Contracts", + L"Individual Contracts", + + // text on the main page + L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"Our extensively trained personnel provides security for over 30 governments around the world. This includes several conflict zones.", + L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insertion via harbours or border posts is also possible.", + L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"You can select the type and number of personnel you want to hire here:", + L"Initial deployment", + L"Regular personnel", + L"Veteran personnel", + + L"%d available, %d$ each", + L"Hire: %d", + L"Cost: %d$", + + L"Select the initial operational area:", + L"Total Cost: %d$", + L"ETA: %02d:%02d", + L"Close Contract", + + L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus reinforcements have arrived in %s.", + L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"Move", + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"Roles", + L"Fortification", + L"Tracker", + L"CTH mode", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"Display enemy role symbols", + L"Display planned fortifications", + L"Display enemy tracks", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + + +STR16 szDynamicDialogueText[40][17] = +{ + // OPINIONEVENT_FRIENDLYFIRE + L"What the hell! $CAUSE$ attacked me!", + L"", + L"", + L"What? Me? No way, I'm engaging at the enemy!", + L"Oops.", + L"", + L"", + L"$CAUSE$ has attacked $VICTIM$. What do you do?", + L"Nah, that must have been enemy fire!", + L"Yeah, I saw it too!", + L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", + L"I saw it, it was clearly enemy fire!", + L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", + L"This is war! People get shot all the time! Speaking of... shoot more people, people!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"I would if you weren't such a wussy!", + L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"I'm doing my job. Get back to yours!", + L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"Patched together again? Good, now move!", + L"You're welcome.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'Even'? What does that mean?", + L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Nice one, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"Is there a difference?", + L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"What?!", + L"No!", + L"That is false!", + L"That is not true!", + + L"Lies, lies, lies. Nothing but lies!", + L"Liar!", + L"Traitor!", + L"You watch your mouth!", + + L"This is none of your business.", + L"Who ever invited you?", + L"Nobody asked for your opinion, $INTERJECTOR$.", + L"You stay away from me.", + + L"Why are you all against me?", + L"Why are you against me, $INTERJECTOR$?", + L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"Not listening...!", + + L"I hate this psycho circus.", + L"I hate this freak show.", + L"Back off!", + L"Lies, lies, lies...", + + L"No way!", + L"So not true.", + L"That is so not true.", + L"I know what I saw.", + + L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"Nope.", + L"You are mistaken.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"What $INTERJECTOR_GENDER$ said.", + + L"Thanks, $INTERJECTOR$!", + L"Once again I'm right!", + L"See, $CAUSE$? I am right!", + L"Once again $SPEAKER$ is right!", + + L"Aye.", + L"Yup.", + L"Yep", + L"Yes.", + + L"Indeed.", + L"True.", + L"Ha!", + L"See?", + + L"Exactly!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"That's right!", + L"Indeed!", + L"Exactly that.", + L"$CAUSE$ does that all the time.", + + L"$VICTIM$ is right!", + L"I was gonna' point that out, too!", + L"What $VICTIM$ said.", + L"That's our $CAUSE$!", + + L"Yeah!", + L"Now THIS is going to be interesting...", + L"You tell'em, $VICTIM$!", + L"Agreeing with $VICTIM$ here...", + + L"Classic $CAUSE$.", + L"I couldn't have said it better myself.", + L"That is exactly what happened.", + L"Agreed!", + + L"Yup.", + L"True.", + L"Bingo.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"Now wait a minute...", + L"Wait a sec, that's not what right...", + L"What? No.", + L"That is not what happened.", + + L"Hey, stop blaming $CAUSE$!", + L"Oh shut up, $VICTIM$!", + L"Nonono, you got that wrong.", + L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"And I suppose you never did, $VICTIM$?", + L"Hmmmm... no.", + L"Great. Let's have an argument. It's not like we have other things to do...", + L"You are mistaken!", + + L"You are wrong!", + L"Me and $CAUSE$ would never do such a thing.", + L"Nah, can't be.", + L"I don't think so.", + + L"Why bring that up now?", + L"Really, $VICTIM$? Is this necessary?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Keep silent", + L"Support $VICTIM$", + L"Support $CAUSE$", + L"Appeal to reason", + L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"he", + L"she", + L"him", + L"her", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% wisdom stat\n", + L" %s%d%% effective level\n", + + L" %s%d%% APs\n", + L" %s%d maximum breath\n", + L" %s%d%% strength to carry items\n", + L" %s%2.2f life regeneration/hour\n", + L" %s%d need for sleep\n", + L" %s%d%% water consumption\n", + L" %s%d%% food consumption\n", + + L"%s was diagnosed with %s!", + L"%s is cured of %s!", + + L"Diagnosis", + L"Treatment", + L"Burial", + L"Cancel", + + L"\n\n%s (undiagnosed) - %d / %d\n", + + L"High amount of distress can cause a personality split\n", + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"Hide", + L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|F|o|o|d: %d%%\n", + + L"max morale altered by %s%d\n", + L" %s%d need for sleep\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% assignment efficiency\n", + L" %s%d%% chance to lose stats\n", +}; + +STR16 szIMPGearWebSiteText[] = +{ + // IMP Gear Entrance + L"How should gear be selected?", + L"Old method: Random gear according to your choices", + L"New method: Free selection of gear", + L"Old method", + L"New method", + + // IMP Gear Entrance + L"I.M.P. Equipment", + L"Additional Cost: %d$ (%d$ prepaid)", +}; + +STR16 szIMPGearPocketText[] = +{ + L"Select helmet", + L"Select vest", + L"Select leg armor", + L"Select face gear", + L"Select face gear", + + L"Select main gun", + L"Select sidearm", + + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", + + L"Select launcher / rifle", + L"Select melee weapon", + + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select kit item", //MEDPOCK1POS + L"Select kit item", + L"Select kit item", + L"Select kit item", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"We cannot relay orders to this sector, militia command not possible.", + L"Unassigned", + L"Group No.", + L"Next", + + L"ETA", + L"Group %d (new)", + L"Group %d", + L"Final", + + L"Volunteers: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = +{ + L"Enemy helicopter shot down in %s!", + L"We... uhm... currently don't control that site, commander...", + L"The SAM does not need maintenance at the moment.", + L"We've already ordered the repair, this will take time.", + + L"We do not have enough resources to do that.", + L"Repair SAM site? This will cost %d$ and take %d hours.", + L"Enemy helicopter hit in %s.", + L"%s fires %s at enemy helicopter in %s.", + + L"SAM in %s fires at enemy helicopter in %s.", +}; + +STR16 szFortificationText[] = +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"Militia", + L"Militia Forces Overview", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Took part in Operation %s", + L"Recruited on Day %d, %d:%02d in %s", + L"Promoted on Day %d, %d:%02d", + L"KIA, Operation %s", + + L"Lightly wounded during Operation %s", + L"Heavily wounded during Operation %s", + L"Critically wounded during Operation %s", + L"Valiantly fought in Operation %s", + + L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", + L"Defected to us on Day %d, %d:%02d in %s", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"All sectors", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"Merchant is hostile and does not want to trade.", + L"Merchant is in no state to do business.", + L"Merchant won't trade during combat.", + L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = +{ + L"normal", + L"rain", + L"thunderstorm", + L"sandstorm", + + L"snow", +}; + +STR16 szSnakeText[] = +{ + L"%s evaded a snake attack!", + L"%s was attacked by a snake!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"Converted %s into resources", + L"Guns: ", + L"Armour: ", + L"Misc: ", + + L"There are no volunteers left for militia!", + L"Not enough resources to train militia!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s starts hacking.", + L"%s accesses the computer, but finds nothing of interest.", + L"%s is not skilled enough to hack the computer.", + L"%s reads the file, but learns nothing new.", + + L"%s can't make sense out of this.", + L"%s couldn't use the watertap.", + L"%s has bought a %s.", + L"%s doesn't have enough money. That's just embarassing.", + + L"%s drank from water tap", + L"This machine doesn't seem to be working.", +}; + +STR16 szLaptopStatText[] = +{ + L"threaten effectiveness %d\n", + L"leadership %d\n", + L"approach modifier %.2f\n", + L"background modifier %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Good Guy", + L"%s eschews excessive violence and will refuse to attack non-hostiles.", + + L"Friendly approach", + L"Direct approach", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +STR16 szGearTemplateText[] = +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", +}; + +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +STR16 szFactoryText[] = +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Space Available:", + L"MOLLE Space Required:", + L"MOLLE Small Slot Count:", + L"MOLLE Medium Slot Count:", + L"MOLLE Pouch Size: Small", + L"MOLLE Pouch Size: Medium", + L"MOLLE Pouch Size: Medium (Hydration)", + L"Thigh Rig", + L"Vest", + L"Combat Pack", + L"Backpack", // 10 + L"MOLLE Pouch", + L"Compatible backpacks:", + L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia that appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //ENGLISH diff --git a/i18n/_FrenchText.cpp b/i18n/_FrenchText.cpp index 0b0bfa83..e1e3f462 100644 --- a/i18n/_FrenchText.cpp +++ b/i18n/_FrenchText.cpp @@ -1,12229 +1,12309 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("FRENCH") - - #ifdef FRENCH - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_FrenchText_public_symbol(void){;} - -#ifdef FRENCH - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. - -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", - -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. - -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. - -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. - -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; - -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Lieux", // 0 - L"Personnages", - L"Objets", - L"Quêtes", - L"Menu 5", - L"Menu 6", //5 - L"Menu 7", - L"Menu 8", - L"Menu 9", - L"Menu 10", - L"Menu 11", //10 - L"Menu 12", - L"Menu 13", - L"Menu 14", - L"Menu 15", - L"Menu 15", // 15 - - //Briefing Room - L"Quitter", -}; - -STR16 pOtherButtonsText[] = -{ - L"Briefing", - L"Accepter", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Briefing", - L"Accepter mission", -}; - - -STR16 pLocationPageText[] = -{ - L"Page préc.", - L"Photo", - L"Page suiv.", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"Accueil", - L">>", - L"Type : ", - L"Vide", - L"Pas de mission définie. Ajouter mission au fichier TableData\\BriefingRoom\\BriefingRoom.xml. La première mission doit être visible. Mettre la valeur Hidden = 0.", - L"Salle de briefing. Appuyez sur la touche 'ENTRÉE'.", -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Inconnu",// 0 - unknown - L"Ville", //1 - cities - L"Site SAM", //2 - SAM Site - L"Autre lieu", //3 - other location - L"Mine", //4 - mines - L"Base militaire", //5 - military complex - L"Laboratoire", //6 - laboratory complex - L"Entreprise", //7 - factory complex - L"Hôpital", //8 - hospital - L"Prison", //9 - prison - L"Aéroport", //10 - air port -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Voir tout", - L"Voir AIM", - L"Voir MERC", - L"Voir PR", - L"Voir PNJ", - L"Voir Véhicule", - L"Voir IMP", - L"Voir PNJE", - L"Filtre", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"Tout", - L"AIM", - L"MERC", - L"PR", - L"PNJ", - L"Véh.", - L"IMP", - L"PNJE", - L"Filtre", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Voir tout", - L"Voir Ville", - L"Voir Site SAM", - L"Voir Autre lieu", - L"Voir mine", - L"Voir Base militaire", - L"Voir Laboratoire", - L"Voir Entreprise", - L"Voir Hôpital", - L"Voir prison", - L"Voir Aéroport", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"Tout", - L"Ville", - L"SAM", - L"Autre", - L"Mine", - L"Milit.", - L"Labo.", - L"Usine", - L"Hôpit.", - L"Prison", - L"Aérop.", -}; - -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"Tout",//0 - L"Ville", - L"SAM", - L"Mine", - L"Aérop.", - L"Nature", - L"Ss-sol", - L"Instal.", - L"Autre", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Voir tout.",//facility index + 1 - L"Voir ville.", - L"Voir site SAM.", - L"Voir mine.", - L"Voir aéroport.", - L"Voir les extérieurs.", - L"Voir les sous-sols.", - L"Voir secteur avec installation(s)\n[|B|G] Suivant\n[|B|D] Réinitialise filtre.", - L"Voir autre secteur.", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; - -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"Tout",//0 - L"AIM", - L"MERC", - L"PR", - L"PNJ", - L"IMP", - L"Autre",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Voir tout.",//Other index + 1 - L"Voir membre de l'AIM.", - L"Voir membre de MERC.", - L"Voir rebellle.", - L"Voir Personnage Non Jouable.", - L"Voir personnage IMP.", - L"Voir autre personnage\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", -}; - -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Véh.", - L"PNJE", - L"",//reserved. Insert new Other filters above! -}; - -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"Tout",//0 - L"Arme", - L"Munit.", - L"Prot.", - L"LBE", - L"Acces.", - L"Divers",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Tout voir",//misc index + 1 - L"Voir les armes\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", - L"Voir les munitions\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", - L"Voir les protections\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", - L"Voir l'équipement LBE\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", - L"Voir les accessoires\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", - L"Voir les objets\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", -}; - -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"A/poing", - L"PM", - L"Mitra.", - L"Fusil", - L"Sniper", - L"F/Ass.", - L"FM", - L"F/pompe", - L"Arme/L", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"A/poing", - L"PM", - L"Mitra.", - L"Fusil", - L"Sniper", - L"F/Ass.", - L"FM", - L"F/pompe", - L"Arme/L", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Casque", - L"Veste", - L"Pant.", - L"Blind.", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Dédié", - L"Veste", - L"Sac", - L"Sac/dos", - L"Poche", - L"Autre", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Optique", - L"Attache", - L"Bouche", - L"Externe", - L"Interne", - L"Autre", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"A/bl.", - L"A/Jet", - L"Mêlée", - L"Grenade", - L"Explos.", - L"Médical", - L"Kit", - L"Face", - L"Autre", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; - -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"Tout", - L"Activée", - L"Achevée", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Tout voir",//misc index + 1 - L"Voir les quêtes activées", - L"Voir les quêtes achevées", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"Tout", //0 - L"Arme", - L"Mun.", - L"LBE", - L"Divers", - - L"Tout", //5 - L"Arme", - L"Munition", - L"Mat. LBE", - L"Divers", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"A/Lourde", - L"A/Poing", - L"PM", - L"Mitrail.", - L"Fusil", - L"Sniper", - L"F/Assaut", - L"FM", - L"F/Pompe", - - // Ammo - L"A/Poing", - L"PM", //10 - L"Mitrail.", - L"Fusil", - L"Sniper", - L"F/Assaut", - L"FM", - L"F/Pompe", - - // Used - L"Arme", - L"Protection", - L"Mat. LBE", - L"Divers", //20 - - // Armour - L"Casque", - L"Veste", - L"Pantalon", - L"Blindage", - - // Misc - L"A/blanche", - L"Arme/Jet", - L"Mêlée", - L"Grenade", - L"Explosif", - L"Médical", //30 - L"Kit&Habit", - L"Mat. Face", - L"Mat. LBE", - L"Divers", //34 -}; - -// TODO.Translate -STR16 QuestDescText[] = -{ - L"Deliver Letter", - L"Food Route", - L"Terrorists", - L"Kingpin Chalice", - L"Kingpin Money", - L"Runaway Joey", - L"Rescue Maria", - L"Chitzena Chalice", - L"Held in Alma", - L"Interogation", - - L"Hillbilly Problem", //10 - L"Find Scientist", - L"Deliver Video Camera", - L"Blood Cats", - L"Find Hermit", - L"Creatures", - L"Find Chopper Pilot", - L"Escort SkyRider", - L"Free Dynamo", - L"Escort Tourists", - - - L"Doreen", //20 - L"Leather Shop Dream", - L"Escort Shank", - L"No 23 Yet", - L"No 24 Yet", - L"Kill Deidranna", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", -}; - -// TODO.Translate -STR16 FactDescText[] = -{ - L"Omerta Liberated", - L"Drassen Liberated", - L"Sanmona Liberated", - L"Cambria Liberated", - L"Alma Liberated", - L"Grumm Liberated", - L"Tixa Liberated", - L"Chitzena Liberated", - L"Estoni Liberated", - L"Balime Liberated", - - L"Orta Liberated", //10 - L"Meduna Liberated", - L"Pacos approched", - L"Fatima Read note", - L"Fatima Walked away from player", - L"Dimitri (#60) is dead", - L"Fatima responded to Dimitri's supprise", - L"Carlo's exclaimed 'no one moves'", - L"Fatima described note", - L"Fatima arrives at final dest", - - L"Dimitri said Fatima has proof", //20 - L"Miguel overheard conversation", - L"Miguel asked for letter", - L"Miguel read note", - L"Ira comment on Miguel reading note", - L"Rebels are enemies", - L"Fatima spoken to before given note", - L"Start Drassen quest", - L"Miguel offered Ira", - L"Pacos hurt/Killed", - - L"Pacos is in A10", //30 - L"Current Sector is safe", - L"Bobby R Shpmnt in transit", - L"Bobby R Shpmnt in Drassen", - L"33 is TRUE and it arrived within 2 hours", - L"33 is TRUE 34 is false more then 2 hours", - L"Player has realized part of shipment is missing", - L"36 is TRUE and Pablo was injured by player", - L"Pablo admitted theft", - L"Pablo returned goods, set 37 false", - - L"Miguel will join team", //40 - L"Gave some cash to Pablo", - L"Skyrider is currently under escort", - L"Skyrider is close to his chopper in Drassen", - L"Skyrider explained deal", - L"Player has clicked on Heli in Mapscreen at least once", - L"NPC is owed money", - L"Npc is wounded", - L"Npc was wounded by Player", - L"Father J.Walker was told of food shortage", - - L"Ira is not in sector", //50 - L"Ira is doing the talking", - L"Food quest over", - L"Pablo stole something from last shpmnt", - L"Last shipment crashed", - L"Last shipment went to wrong airport", - L"24 hours elapsed since notified that shpment went to wrong airport", - L"Lost package arrived with damaged goods. 56 to False", - L"Lost package is lost permanently. Turn 56 False", - L"Next package can (random) be lost", - - L"Next package can(random) be delayed", //60 - L"Package is medium sized", - L"Package is largesized", - L"Doreen has conscience", - L"Player Spoke to Gordon", - L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo asked for first aid", - L"Dynamo can be recruited", - L"Npc is bleeding", - L"Shank wnts to join", - - L"NPC is bleeding", //70 - L"Player Team has head & Carmen in San Mona", - L"Player Team has head & Carmen in Cambria", - L"Player Team has head & Carmen in Drassen", - L"Father is drunk", - L"Player has wounded mercs within 8 tiles of NPC", - L"1 & only 1 merc wounded within 8 tiles of NPC", - L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda is in the store ", - L"Brenda is Dead", - - L"Brenda is at home", //80 - L"NPC is an enemy", - L"Speaker Strength >= 84 and < 3 males present", - L"Speaker Strength >= 84 and at least 3 males present", - L"Hans lets ou see Tony", - L"Hans is standing on 13523", - L"Tony isnt available Today", - L"Female is speaking to NPC", - L"Player has enjoyed the Brothel", - L"Carla is available", - - L"Cindy is available", //90 - L"Bambi is available", - L"No girls is available", - L"Player waited for girls", - L"Player paid right amount of money", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping expectingh visit from player", - L"Darren expecting money from player", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Supprimer", - L"Article supprimer (|S|u|p|p|r)", -}; - -STR16 FaceDirs[8] = -{ - L"NORD", - L"NORD-Est", - L"EST", - L"SUD-EST", - L"SUD", - L"SUD-OUEST", - L"OUEST", - L"NORD-OUEST" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Activer l'affichage du joueur", //0 - L"Activer l'affichage des ennemis", - L"Activer l'affichage des créatures", - L"Activer l'affichage des rebelles", - L"Activer l'affichage des civils", - - L"Joueur", - L"Ennemi", - L"Créature", - L"Rebelle", - L"Civil", - - L"PLACEMENT DÉTAILLÉ", //10 - L"Information général mode", - L"Apparence physique mode", - L"Attribut mode", - L"Inventaire mode", - L"ID profile mode", - L"Calendrier mode", - L"Calendrier mode", - L"SUPPRIMER", - L"Supprimer le mercenaire sélectionné (|S|u|p|p|r)", - L"SUIVANT", //20 - L"Mercenaire suivant (|E|S|P|A|C|E)\nMercenaire précédente (|C|T|R|L+|E|S|P|A|C|E)", - L"Changer l'existence prioritaire", - L"Changer, si le placement a\naccès à toutes les portes", - - //Orders - L"STATIONNAIRE", - L"EN DÉFENSE", - L"DE GARDE", - L"CHERCHER LES ENNEMIS", - L"PATROUILLE PROCHE", - L"PATROUILLE LONTAINE", - L"POINT DE RASSEMBLEMENT", //30 - L"TOUR DE PATROUILLE", - - //Attitudes - L"DÉFENSE", - L"SOLO BRAVE", - L"SOUTIEN BRAVE", - L"AGGRESIF", - L"SOLO RUSÉ", - L"SOUTIEN RUSÉ", - - L"Placez mercenaire face à %s", // Max 30 characters - - L"Trouvé", - L"MAUVAIS", //40 - L"FAIBLE", - L"MOYEN", - L"BON", - L"EXCELLENT", - - L"MAUVAIS", - L"FAIBLE", - L"MOYEN", - L"BON", - L"EXCELLENT", - - L"Couleur précédente", //50 - L"Couleur suivante", - - L"Corps précédent", - L"Corps suivant", - - L"Changer la variation de temps (+ ou - 15 minutes)", - L"Changer la variation de temps (+ ou - 15 minutes)", - L"Changer la variation de temps (+ ou - 15 minutes)", - L"Changer la variation de temps (+ ou - 15 minutes)", - - L"Pas d'action", - L"Pas d'action", - L"Pas d'action", //60 - L"Pas d'action", - - L"Effacer le calendrier", - - L"trouver le mercenaire sélectionné", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"TOITS", //0 - L"MURS", - L"INFO PIÈCE", - - L"Placer les murs en utilisant la méthode de sélection", - L"Placer les portes en utilisant la méthode de sélection", - L"Placer les toits en utilisant la méthode de sélection", - L"Placer les fenêtres en utilisant la méthode de sélection", - L"Placer les murs endommagés en utilisant la méthode de sélection.", - L"Placer les meubles en utilisant la méthode de sélection", - L"Placer les décalcomanies murales en utilisant la méthode de sélection", - L"Placer les étages en utilisant la méthode de sélection", //10 - L"Placer les meubles génériques en utilisant la méthode de sélection", - L"Placer les murs avec la méthode rapide", - L"Placer les portes avec la méthode rapide", - L"Placer les fenêtres avec la méthode rapide", - L"Placer les murs endommagés avec la méthode rapide", - L"Verrouiller ou piéger les portes existantes", - - L"Ajouter une nouvelle salle", - L"Éditer les murs de caverne.", - L"Enlever un secteur de la construction existante.", - L"Enlever une construction", //20 - L"Ajouter/remplacer le toit de la construction par un nouveau toit plat.", - L"Copier une construction", - L"Bouger une construction", - L"Dessiner le numéro de pièce.\n(Maintenir |M|A|J pour réutiliser le numéro de pièce)", - L"Supprimer le numéro de pièce", - - L"Activer le mode supprimer (|E)", - L"Effacer le dernier changement (|R|e|t|o|u|r)", - L"Taille du cycle (|A/|Z)", - L"Toits (|H)", - L"Murs (|W)", //30 - L"Info Pièce (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Arm.", //0 - L"Mun.", - L"Prot.", - L"LBE", - L"Exp", - L"E1", - L"E2", - L"E3", - L"Détentes", - L"Clés", - L"Cps", //10 - L"Précédent (|,)", // previous page - L"Suivant (|.)", // next page -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Ajouter une source de lumière ambiante", //0 - L"Basculer en fausse lumière ambiante.", - L"Ajouter des réseaux de sortie (clic droit pour une requête existante).", - L"Taille de cycle (|A/|Z)", - L"Effacer le dernier changement (|R|e|t|o|u|r)", - L"Basculer en mode supprimer (|E)", - L"Spécifier un point au NORD pour valider le but.", - L"Spécifier un point à l'OUEST pour valider le but.", - L"Spécifier un point à l'EST pour valider le but.", - L"Spécifier un point au SUD pour valider le but.", - L"Spécifier un point du centre pour valider le but.", //10 - L"Spécifier un point isolé pour valider le but.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"Nouvelle carte", //0 - L"Nouveau sous-sol", - L"Nouveau niveau de caverne", - L"Sauvegarder la carte (|C|T|R|L+|S)", - L"Charger la carte (|C|T|R|L+|L)", - L"Sélectionner un tileset", - L"Quitter le mode éditeur", - L"Quitter le jeu (|A|L|T+|X)", - L"Créer un carte de radar", - L"Une fois la carte vérifiée, elle sera sauvée sous le format original JA2. Les objets avec l'ID > 350 seront perdus.\nCette option est seulement valable sur les cartes de taille \"normale\" qui ne font pas référence aux nombre de réseaux (ex : réseau de sortie) > 25600.", - L"Une fois la carte vérifiée et chargée, elle sera élargie automatiquement selon les rangées et colonnes choisies.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Dessiner des textures de sol (|G)", //0 - L"Sélectionner les textures du sol de la carte", - L"Placer les rives et falaises (|C)", - L"Dessiner les routes (|P)", - L"Dessiner les débris (|D)", - L"Placer les arbres & buissons (|T)", - L"Placer les rochers (|R)", - L"Placer barrils & autres camelotes (|O)", - L"Remplir le secteur", - L"Effacer le dernier changement (|R|e|t|o|u|r)", - L"Basculer en mode supprimer (|E)", //10 - L"Taille du cycle (|A/|Z)", - L"Augmenter la densité du pinceau (|])", - L"Diminuer la densité du pinceau (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Terrain", //0 - L"Bâtiment", - L"Objets", - L"Mercenaires", - L"Info carte", - L"Options", - L"|./|, : Cycle entre les dimensions 'largeur : xx'\n|P|g |U|p/|P|g |D|n : case précédente/suivante pour l(es)'objet(s) sélectionné(s)/en méthode intelligente", //Terrain fasthelp text - L"|./|, : Cycle entre les dimensions 'largeur : xx'\n|P|g |U|p/|P|g |D|n : case précédente/suivante pour l(es)'objet(s) sélectionné(s)/en méthode intelligente", //Buildings fasthelp text - L"|E|S|P|A|C|E : Sélectionne l'objet suivant\n|C|T|R|L+|E|S|P|A|C|E : Sélectionne l'objet précédent\n \n|/ : Place le même objet sous le curseur de la souris\n|C|T|R|L+|/ : Place le nouveau objet sous le curseur de la souris", //Items fasthelp text - L"|1-|9 : Pose de waypoints\n|C|T|R|L+|C/|C|T|R|L+|V : Copie/colle mercenaire\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text // TODO.Translate - L"|C|T|R|L+|G : Va à la case\n|M|A|J : fait défiler la carte au-delà de ses limites\n \n(|t|i|l|d|e): Toggle cursor level\n|I : (dés)active la carte vue de dessus\n|J : (dés)active l'affichage des terrains élevés\n|K : (dés)active les marqueurs de terrain élevé\n|M|A|J+|L : (dés)active les points d'angle de la carte\n|M|A|J+|T : (dés)active les feuillages\n|U : (dés)active la montée du monde\n \n|./|, : Cycle entre les dimensions 'largeur : xx'", //Map Info fasthelp text // TODO.Translate - L"|C|T|R|L+|N : Crée une nouvelle carte\n \n|F|5 : Montre le résumé des informations/Carte du monde\n|F|1|0 : Retire toutes les lumières\n|F|1|1 : recule les horaires\n|F|1|2 : Efface les horaires\n \n|M|A|J+|R : (dés)active les placements aléatoires basés sur la quantité du/des objet(s) sélectionné(s)\n \nOptions en ligne de commande\n|-|F|A|I|R|E|C|A|R|T|E|S : Génère la carte de type radar\n|-|F|A|I|R|E|C|A|R|T|E|S|C|N|V : Génère la carte de type radar ainsi que le couvert pour la dernière version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"Point d'entrée NORD", //0 - L"Point d'entrée OUEST", - L"Point d'entrée EST", - L"Point d'entrée SUD", - L"Point d'entrée centre", - L"Point d'entrée isolé", - - L"Principale", - L"Nuit", - L"24 heures", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Déclencheur de panique 1", //0 - L"Déclencheur de panique 2", - L"Déclencheur de panique 3", - L"Déclencheur %d", - - L"Action de pression", - L"Action de panique 1", - L"Action de panique 2", - L"Action de panique 3", - L"Action %d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"Pas de verrouillage d'ID", //0 - L"Piège explosif", - L"Piège électrique", - L"Piège sonore", - L"Alarme silencieuse", - L"Super piège électrique", //5 - L"Piège sonore de maison close", - L"Piège de niveau %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Enregistrer la carte au format vanilla JA2 (v1.12) (Version : 5.00/25)", //0 - L"Aucune carte n'est actuellement chargée.", - L"Fichier : %S, Tileset actuel : %s", - L"Élargir la carte au chargement", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"BASCULER", //0 - L"VUES", - L"MODE DE SÉLECTION", - L"MÉTHODE RAPIDE", - L"MODE DE CONSTRUCTION", - L"Pièce #", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Modification des attributs de verrouillage à l'index %d de la carte.", - L"Verrouillage ID", - L"Type de piège", - L"Niveau du piège", - L"Verrouillé", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Action de pression", //0 - L"Action de panique 1", - L"Action de panique 2", - L"Action de panique 3", - L"Action %d", - - L"Déclencheur de panique 1", //5 - L"Déclencheur de panique 2", - L"Déclencheur de panique 3", - L"Déclencheur %d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Info Status Ligne 1", - L"Info Status Ligne 2", - L"Info Status Ligne 3", - L"Info Status Ligne 4", - L"Info Status Ligne 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Amorcer", - L"Nuit", - L"24 H", //5 - - L"Rayon", - - L"Souterrain", - L"Niveau de lumière", - - L"Extérieur", - L"Sous-sol", //10 - L"Caves", - - L"Restreint", - L"Défiler ID", - - L"Destination", - L"Secteur", //15 - L"Destination", - L"Niveau sous-sol", - L"Dest.", - L"Grille No", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"Pas d'action", - L"Porte verrouillée", - L"Porte déverrouillée", - L"Porte ouverte", - L"Porte fermée", - L"Aller à la No", - L"Quitter le secteur", - L"Entrer secteur", - L"Rester secteur", - L"Dormir", - L"Ignorez cela !" -}; - -STR16 zDiffNames[5] = -{ - L"Mauviette", - L"Simplet", - L"Moyen", - L"Dur", - L"Utilisateurs de stéroïde seulement" -}; - -STR16 EditMercStat[12] = -{ - L"Santé max", - L"Santé actuel", - L"Force", - L"Agilité", - L"Dextérité", - L"Charisme", - L"Sagesse", - L"Tir", - L"Explosif", - L"Médecine", - L"Mécanique", - L"Niveau exp", -}; - - -STR16 EditMercOrders[8] = -{ - L"Stationnaire", - L"En garde", - L"Patrouille proche", - L"Patrouille lointaine", - L"Point de patrouille", - L"Sur appel", - L"Chercher ennemi", - L"Point de patrouille aléatoire", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Défensif", - L"Solitaire courageux", - L"Brave copain", - L"Solitaire Rusé", - L"Copain Rusé", - L"Aggressif", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Nom mercenaire :", //0 - L"Ordre :", - L"Attitude de combat :", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Couleur mercenaire", //0 - L"Fait", - - L"Mercenaire précédent attendant les ordres", - L"Mercenaire suivant attendant les ordres", - - L"Mercenaire précédent pour l'attidude de combat", - L"Mercenaire suivant pour l'attidude de combat", //5 - - L"Diminuer les stats du mercenaire", - L"Augmenter les stats du mercenaire", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Aléatoire", //0 - L"Hme norm", - L"Hme Grd", - L"Hme trappu", - L"Femme norm", - L"Char NE", //5 - L"Char NO", - L"Civil gros", - L"H Civil", - L"Minijupe", - L"F Civil", //10 - L"Enf. chap.", - L"Hummer", - L"Eldorado", - L"Camion glace", - L"Jeep", //15 - L"Enf civil", - L"Vache", - L"Infirme", - L"Robot désarmé", - L"Larve", //20 - L"Jeune", - L"Pt Monstre F", - L"Pt Monstre M", - L"Monstre Adt F", - L"Monstre Adt M", //25 - L"Monstre Reine", - L"Chat Sauvg", - L"Humvee", // TODO.Translate -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=ORDRES=-- ", //0 - L"--=ATTITUDE=--", - - L"ATTRIBUTS", - L"RELATIF", - - L"ÉQUIPEMENT", - L"RELATIF", - - L"ATTRIBUTS", - L"RELATIF", - - L"Armée", - L"Admin", - L"Élite", //10 - - L"Niveau d'exp.", - L"Santé", - L"Santé Max.", - L"Tir", - L"Force", - L"Agilité", - L"Dextérité", - L"Sagesse", - L"Commandement", - L"Explosif", //20 - L"Médicine", - L"Mécanique", - L"Moral", - - L"Couleur cheveux :", - L"Couleur peau :", - L"Couleur veste :", - L"Couleur pantalon :", - - L"ALÉATOIRE", - L"ALÉATOIRE", - L"ALÉATOIRE", //30 - L"ALÉATOIRE", - - L"En spécifiant un indice de profil, toutes les informations seront extraites du profil ", - L"et remplacées par les valeurs que vous avez édité. Les fonctions d'édition seront aussi désactivées ", - L"bien que vous soyez toujours en mesure de regarder les stats, etc. En appuyant sur ENTREE cela extraira ", - L"automatiquement le numéro que vous avez tapé. Un champ vide effacera le profil. Le nombre ", - L"actuel de profil allant de 0 à ", - - L"Profil actuel : n/a ", - L"Profil actuel : %s", - - L"STATIONNAIRE", - L"DE GARDE", //40 - L"EN DÉFENSE", - L"CHERCHER LES ENNEMIS", - L"PATROUILLE PROCHE", - L"PATROUILLE LONTAINE", - L"POINT DE RASSEMBLEMENT", - L"TOUR DE PATROUILLE", - - L"Action", - L"Temps", - L"V", - L"Grille No 1", //50 - L"Grille No 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"verrouillée", - L"déverrouillée", - L"ouverte", - L"fermée", - - L"Cliquez sur la case adjacente à la porte que vous souhaitez %s.", //60 - L"Cliquez sur la case où vous voulez aller après avoir %s la porte.", - L"Cliquez sur la case où vous voulez aller.", - L"Cliquez sur la case où vous voulez dormir. Le personnage retournera automatiquement à sa position initiale lorsqu'il se lèvera.", - L"Cliquez sur ESC pour annuler l'entrée de cette ligne dans le calendrier.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"Emplacement #%d", - L"Ordres de patrouille sans waypoints", - L"Waypoints sans ordres de patrouille", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"Pas d'action", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Placement non copié car aucun placement sélectionné.", - L"Placement copié.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Placement non collé car aucun placement n'a été enregistré.", - L"Placement collé.", - L"Placement non collé car le nombre maximum de placement pour cette équipe est dépassé.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Quitter l'éditeur ?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Êtes-vous sur de vouloir retirer toutes les lumières ?", //0 - L"Êtes-vous sur de vouloir inverser le calendrier ?", - L"Êtes-vous sur de vouloir effacer tous les horaires ?", - - L"Cliquage de placement activé", - L"Cliquage de placement désactivé", - - L"Dessin des hauteurs activés", //5 - L"Dessin des hauteurs désactivés", - - L"Nombre de points de bord : N=%d E=%d S=%d O=%d", - - L"Placement aléatoire activé", - L"Placement aléatoire désactivé", - - L"Cacher la cîme des arbres", //10 - L"Montrer la cîme des arbres", - - L"Réinitialisation de l'aggrandissement de la carte", - - L"Ancienne méthode d'aggrandissement", - L"Aggrandissement fait", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"Création de carte radar pour %S", //0 - - L"Supprimer la carte actuelle pour un nouveau niveau de sous-sol ?", - L"Supprimer la carte actuelle pour un nouveau niveau de cave ?", - L"Supprimer la carte actuelle pour un nouveau niveau extérieur ?", - - L" Essuyer les textures du sol ? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"Début", //0 - L"Activer l'éditeur de faux éclairage. Marche/arrêt", - - L"INSER", - L"Activer le mode de remplissage. Marche/arrêt", - - L"RET.AR", - L"Annuler la dernière modification", - - L"SUPR", - L"Effacement rapide d'objet sous le curseur de la souris", - - L"ESC", - L"Quitter l'éditeur", - - L"PHAUT/PBAS", //10 - L"Changement d'objets qui doivent être collé", - - L"F1", - L"Écran d'aide", - - L"F10", - L"Sauvegarder la carte actuelle", - - L"F11", - L"Charger la carte", - - L"+/-", - L"Changer l'obscurité de .01", - - L"MAJ +/-", //20 - L"Changer l'obscurité de .05", - - L"0 - 9", - L"Changer le nom de carte/tileset", - - L"b", - L"Changer la taille du pinceau", - - L"d", - L"Dessiner des débris", - - L"o", - L"Dessiner des obstacles", - - L"r", //30 - L"Dessiner des rochers", - - L"t", - L"Activer l'affichage des arbres. Marche/arrêt", - - L"g", - L"Dessiner les textures du sol", - - L"w", - L"Dessiner les murs des bâtiments", - - L"e", - L"Activer le mode effacer. Marche/arrêt", - - L"h", //40 - L"Activer les toits. Marche/arrêt", -}; - -STR16 pAutoLoadMapText[] = -{ - L"La carte vient d'être corrompue. N'enregistrez pas, ne quittez pas, demandez à parler à Kris ! S'il n'est pas là, sauvez la carte en utilisant un nom de fichier temporaire et documentez tout ce que vous venez de faire, surtout la dernière action !", - L"Le calendrier vient d'être corrompu. N'enregistrez pas, ne quittez pas, demandez à parler à Kris ! S'il n'est pas là, sauvez la carte en utilisant un nom de fichier temporaire et documentez tout ce que vous venez de faire, surtout la dernière action !", -}; - -STR16 pShowHighGroundText[] = -{ - L"Afficher les marqueurs des textures de sol", - L"Cacher les marqueurs des textures de sol", -}; - -//Item Statistics.cpp -/*CHAR16 gszActionItemDesc[34][30] = // NUM_ACTIONITEMS = 34 -{ - L"Mine klaxon", - L"Mine Flash", - L"Explosion lacrymo", - L"Explosion Assourd.", - L"Explosion Fumée", - L"Gaz moutarde", - L"Mine", - L"Ouvrir porte", - L"Fermer porte", - L"Puit caché 3x3 ", - L"Puit caché 5x5", - L"Pt Explosion", - L"Moy Explosion", - L"Grd Explosion", - L"Encl porte", - L"Encl Action1s", - L"Encl Action2s", - L"Encl Action3s", - L"Encl Action4s", - L"Entrer ds bordel", - L"Sortir du Bordel", - L"Alarme sbire", - L"Sexe avec pute", - L"Montrer pièce", - L"Alarme locale", - L"Alarme globale", - L"Bruit klaxon", - L"Déver. porte", - L"Encl verrou", - L"Déminer porte", - L"Encl Obj press", - L"Alarme musée", - L"Alarme chtsvg", - L"Grd lacrymo", -}; -*/ - - -STR16 pUpdateItemStatsPanelText[] = -{ - L"Drapeaux M./A.", //0 - L"Aucun obj selec", - L"Emp. dispo pour", - L"Création aléatoire", - L"Touche non modif", - L"ID du proprio", - L"Classe d'obj non incluse", - L"Emp. vide verr", - L"Statut", - L"Balles", - L"Niv piège", //10 - L"Quantité", - L"Niv piège", - L"Statut", - L"Niv piège", - L"Statut", - L"Quantité", - L"Niv piège", - L"Dollars", - L"Statut", - L"Niv piège", //20 - L"Niv piège", - L"Tolérance", - L"Déclic alarme", - L"Chance exist",// !!! Context - L"B",// !!! Context - L"R", - L"S", -}; - - -STR16 pSetupGameTypeFlagsText[] = -{ - L"Obj apparaît en mode SF et réaliste. (|B)", //0 - L"Obj apparaît slt en mode |réaliste.", - L"Obj apparaît slt en mode |SF.", -}; - -STR16 pSetupGunGUIText[] = -{ - L"SILENCIEUX", //0 - L"LNTTESNIPER", - L"LNTTELASER", - L"BIPIED", - L"BCCANARD", - L"LANCE-G", //5 -}; - -STR16 pSetupArmourGUIText[] = -{ - L"PLAQ CÉRAMIQUE", //0 -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"DÉTONATEUR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"Si le déclencheur de panique est une alarme,\nl'ennemi ne la sonnera pas\ns'il vous a déjà détecté.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"Ok", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"CHARGER", - L"SAUVER", - L"MISE À JOUR", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"Tileset : %s", //0 - L"Info. version : Résumé : 1.%02d, Carte : %1.2f/%02d", - L"Nombre d'objets : %d", - L"Nombre de lumières : %d", - L"Nombre de points d'entrée : %d", - - L"N", - L"E", - L"S", - L"O", - L"C", - L"I", //10 - - L"Nombre de pièces : %d", - L"Population totale : %d", - L"Ennemis : %d", - L"Admins : %d", - - L"(%d detaillé, %d profil -- %d existe en priorité)", - L"Troupes : %d", - - L"(%d detaillé, %d profil -- %d existe en priorité)", - L"Élites : %d", - - L"(%d detaillé, %d profil -- %d existe en priorité)", - L"Civils : %d", //20 - - L"(%d detaillé, %d profil -- %d existe en priorité)", - - L"Humains : %d", - L"Vaches : %d", - L"Cht sauvg : %d", - - L"Créatures : %d", - - L"Monstres : %d", - L"Cht sauvg : %d", - - L"Nombre de portes verr. et/ou piègées : %d", - L"Ver. : %d", - L"Piègées : %d", //30 - L"Ver. & piègées : %d", - - L"Civils prgrammés : %d", - - L"Trop de destinations vers grille de sortie (plus de 4)...", - L"GrilleSortie : %d (%d vers destination longue dist)", - L"GrilleSortie : aucune", - L"GrilleSortie : 1 destination utilisant %d GrilleSortie", - L"GrilleSortie : 2 -- 1) Qté : %d, 2) Qté : %d", - L"GrilleSortie : 3 -- 1) Qté : %d, 2) Qté : %d, 3) Qté : %d", - L"GrilleSortie : 3 -- 1) Qté : %d, 2) Qté : %d, 3) Qté : %d, 4) Qté : %d", - L"Car. relative ennemi : %d mauvais, %d faible, %d norm, %d bon, %d super (%+d en tout)", //40 - L"Équipement relatif ennemi : %d mauvais, %d faible, %d norm, %d bon, %d super (%+d en tout)", - L"%d placements ont des ordres de patrouille, sans aucun waypoint défini.", - L"%d placements ont des waypoints, mais sans aucun ordres de patrouille.", - L"%d Numéro de grille ont un numéro de pièce étrange. Validez svp.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Ennemi", - - L"TROP D'OBJETS À L'ÉCRAN!", - - L"Panique1", - L"Panique2", - L"Panique3", - L"Normal1", - L"Normal2", - L"Normal3", - L"Normal4", //10 - L"Actions appuyer", - - L"TROP D'OBJETS À L'ÉCRAN !", - - L"OBJ LÂCHÉ PR ENMI PRIOR", - L"Rien", - - L"TROP D'OBJETS À L'ÉCRAN !", - L"OBJ LÂCHÉ PR ENMI NORM", - L"TROP D'OBJETS À L'ÉCRAN !", - L"Rien", - L"TROP D'OBJETS À L'ÉCRAN !", - L"ERREUR : Imposs charg obj sur carte. Raison inconn.", //20 -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"ÉDITEUR CAMPAGNE -- %s Version 1.%02d", //0 - L"(AUC MAP CHRGÉE).", - L" %d de vos cartes sont obsolètes.", - L"Plus de cartes à MAJ = plus de temps. Ça prend ", - L"à peu près 4 min sur un P200MMX pour analyser 100 cartes, donc", - L"la durée peu varier selon votre pc.", - L"Voulez-vous MAJ TOUTES ces cartes (y/n) ?", - - L"Aucun secteur sélectionné.", - - L"Nom de fichier temp en conflit avec le format de l'éditeur de campagne", - - L"Il faut charger ou bien créer une carte afin d'entrer dans l'éditeur", - L",ou bien vous pouvez quitter (ESC ou Alt+x).", //10 - - L", RDC", - L", Sous-sol -1", - L", Sous-sol -2", - L", Sous-sol -3", - L", RDC alternatif", - L", Niv B1 alternatif", - L", Niv B2 alternatif", - L", Niv B3 alternatif", - - L"DÉTAILS OBJETS -- secteur %s", - L"Les informations sommaires pour le secteur %s :", //20 - - L"Les informations sommaires pour le secteur %s", - L"n'existent pas.", - - L"Les informations sommaires pour le secteur %s", - L"n'existent pas.", - - L"Pas d'informations existantes pour le secteur %s.", - - L"Pas d'informations existantes pour le secteur %s.", - - L"FICHIER : %s", - - L"FICHIER : %s", - - L"Outrepasser LECTURESEULE",//!!! Length limitation ? -> should be OK - L"Écraser Fichier", //30 - - L"Vous n'avez actuellement aucune donnée sommaire. En en créant un, vous pourrez garder la trace", - L"des informations se rapportant à tous les secteurs que vous éditez et sauvez. La progression de la création", - L"va analyser toutes les cartes contenu dans votre dossier \\MAPS, et en générer un nouveau. Cela peut prendre", - L"quelques minutes, tout dépend de combien de carte valide vous avez. Les cartes valides sont", - L"les cartes qui suivent la convention de nommage : a1.dat - p16.dat. Les cartes souterraines", - L"sont identifiées en ajoutant _b1 à _b3 avant le .dat (ex : a9_b1.dat). ", - - L"Voulez-vous faire cela maintenant ?(o/n)?", - - L"Aucun renseignement sommaire. Création refusée.", - - L"Grille", - L"Progression", //40 - L"Utilisez une carte alternative", - - L"Résumé", - L"Objets", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"Analyse de la carte : %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Chargement de la carte : %s", -}; - -STR16 pReportErrorText[] = -{ - L"Pas de MAJ pour %s. probablement dû à des conflits tilesets", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Production d'informations sur la carte", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"Production de résumé de la carte", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MISE À JOUR VERSION MAJEURE", - L"Il y a %d cartes qui requièrent une mise à jour majeure.", - L"Mise à jour de toutes les cartes obsolètes", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] appartient à tileset def %s (%S)", - L"Fichier : %S, sousindex : %d (%S)", - L"Tileset utilisé : %s", -}; - -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Confirmer les choix (|E|N|T|R|É|E)", - L"Annuler les choix (|E|S|C)\nEffacer les choix (|E|S|P|A|C|E)", - L"Faire défiler la fenêtre vers le haut (|H|A|U|T)", - L"Faire défiler la fenêtre vers le bas (|B|A|S)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Petit", - L"Moyen", - L"Large", - L"Très large", - L"Largeur : xx", - L"Secteur" - }; - -//--- - -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Page 1/2", //0 - L"Page 2/2", - - L"Page 1/3", - L"Page 2/3", - L"Page 3/3", - - L"Page 1/1", //5 -}; - -CHAR16 zGrod[][500] = -{ - L"Robot", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 Eq Développeurs", - L"@T,C144,R134,{;Code", - L"@T,C144,R134,{;Graphismes et Sons", - L"@};(Autre mods!)", - L"@T,C144,R134,{;Objets", - L"@T,C144,R134,{;Autre contributeurs", - L"@};(Tous les membres de la communauté qui ont contribué !)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L"cal .38", -// L"9mm", -// L"cal .45", -// L"cal .357", -// L"cal 12", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm OTAN", -// L"7.62mm PV", -// L"4.7mm", -// L"5.7mm", -// L"Monstre", -// L"Roquette", -// L"", // dart -// L"", // flame -// L".50 cal", // barrett -// L"9mm Lrd", // Val silent -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L"cal .38", -// L"9mm", -// L"cal .45", -// L"cal .357", -// L"cal 12", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm O.", -// L"7.62mm PV", -// L"4.7mm", -// L"5.7mm", -// L"Monstre", -// L"Roquette", -// L"", // dart -// L"", // Lance-Flammes -// L".50 cal", // barrett -// L"9mm Lrd", // Val silent -//}; - - -CHAR16 WeaponType[][30] = -{ - L"Divers", - L"Pistolet", - L"Pistolet-Mitrailleur", - L"Mitraillette", - L"Fusil", - L"Fusil de précision", - L"Fusil d'assaut", - L"Fusil-mitrailleur", - L"Fusil à pompe", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Tour du joueur", // player's turn - L"Tour de l'ennemi", - L"Tour des créatures", - L"Tour de la milice", - L"Tour des civils", - L"Plan_joueur",// planning turn - L"Client #1",//hayden - L"Client #2",//hayden - L"Client #3",//hayden - L"Client #4",//hayden - -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s est touché(e) à la tête et perd un point de sagesse !", - L"%s est touché(e) à l'épaule et perd un point de dextérité !", - L"%s est touché(e) à la poitrine et perd un point de force !", - L"%s est touché(e) à la jambe et perd un point d'agilité !", - L"%s est touché(e) à la tête et perd %d points de sagesse !", - L"%s est touché(e) à l'épaule et perd %d points de dextérité !", - L"%s est touché(e) à la poitrine et perd %d points de force !", - L"%s est touché(e) à la jambe et perd %d points d'agilité !", - L"Interruption !", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"Les renforts sont arrivés !", - - // In the following four lines, all %s's are merc names - - L"%s recharge.", - L"%s n'a pas assez de points d'action !", - L"%s applique les premiers soins (Appuyez sur une touche pour annuler).", - L"%s et %s appliquent les premiers soins (Appuyez sur une touche pour annuler).", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"fiable", - L"peu fiable", - L"facile à entretenir", - L"difficile à entretenir", - L"puissant", - L"peu puissant", - L"cadence de tir élevée", - L"faible cadence de tir", - L"longue portée", - L"courte portée", - L"léger", - L"lourd", - L"petit", - L"tir en rafale", - L"pas de tir en rafale", - L"grand chargeur", - L"petit chargeur", - - // In the following two lines, all %s's are merc names - - L"Le camouflage de %s s'est effacé.", - L"Le camouflage de %s est parti.", - - // The first %s is a merc name and the second %s is an item name - - L"La deuxième arme est vide !", - L"%s a volé le/la %s.", - - // The %s is a merc name - - L"L'arme de %s ne peut pas tirer en rafale.", - - L"Vous avez déjà ajouté cet accessoire.", - L"Combiner les objets ?", - - // Both %s's are item names - - L"Vous ne pouvez combiner un(e) %s avec un(e) %s.", - - L"Aucun", - L"Retirer chargeur", - L"Accessoire(s) ", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and your gas mask at the same time. - L"Vous ne pouvez utiliser votre %s et votre %s simultanément.", - - L"Vous pouvez combiner cet accessoire avec certains objets en le mettant dans l'un des quatre emplacements disponibles.", - L"Vous pouvez combiner cet accessoire avec certains objets en le mettant dans l'un des quatre emplacements disponibles (Ici, cet accessoire n'est pas compatible avec cet objet).", - L"Ce secteur n'a pas été sécurisé !", - L"Vous devez donner %s à %s",//inverted !! you still need to give the letter to X - L"%s a été touché(e) à la tête !", - L"Cesser le combat ?", - L"Cet accessoire ne pourra plus être enlevé. Désirez-vous toujours le mettre ?", - L"%s se sent beaucoup mieux !", - L"%s a glissé sur des billes !", - L"%s n'est pas parvenu(e) à ramasser le/la %s !", - L"%s a réparé le/la %s", - L"Interruption pour ", - L"Voulez-vous vous rendre ?", - L"Cette personne refuse votre aide.", - L"JE NE CROIS PAS !", - L"Pour utiliser l'hélicoptère de Skyrider, vous devez ASSIGNER vos mercenaires au VÉHICULE.", - L"%s ne peut recharger qu'UNE arme", - L"Tour des chats s.", - L"automatique", - L"Pas de tir auto", - L"précis", - L"peu précis", - L"Pas de coup par coup", - L"Plus rien à voler sur l'ennemi !", - L"L'ennemi n'a rien dans les mains !", - - L"%s a perdu son camouflage désert.", - L"%s a perdu son camouflage désert à cause de l'eau.", - - L"%s a perdu son camouflage forêt.", - L"%s a perdu son camouflage forêt à cause de l'eau.", - - L"%s a perdu son camouflage urbain.", - L"%s a perdu son camouflage urbain à cause de l'eau.", - - L"%s a perdu son camouflage neige.", - L"%s a perdu son camouflage neige à cause de l'eau.", - - L"Vous ne pouvez pas attacher %s à cet emplacement.", - L"%s n'ira dans aucun emplacement de libre.", - L"Pas assez de place pour cette poche.", - - L"%s a réparé au mieux : %s.", - L"%s a aidé %s pour réparer au mieux : %s.", - - L"%s has cleaned the %s.", // TODO.Translate - L"%s has cleaned %s's %s.", - - L"Assignment not possible at the moment", // TODO.Translate - L"No militia that can be drilled present.", - - L"%s has fully explored %s.", // TODO.Translate -}; - -// the country and its noun in the game // TODO.Translate -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracona", - L"traconien(ne)", // TODO.Translate //A voir fini (to see finished) -#else - L"Arulco", - L"arulcain(e)", // TODO.Translate //A voir fini (to see finished) -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"Pause", - L"Normal", - L"5 min", - L"30 min", - L"60 min", - L"6 H", -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"Esc. 1", - L"Esc. 2", - L"Esc. 3", - L"Esc. 4", - L"Esc. 5", - L"Esc. 6", - L"Esc. 7", - L"Esc. 8", - L"Esc. 9", - L"Esc. 10", - L"Esc. 11", - L"Esc. 12", - L"Esc. 13", - L"Esc. 14", - L"Esc. 15", - L"Esc. 16", - L"Esc. 17", - L"Esc. 18", - L"Esc. 19", - L"Esc. 20", - L"Service", // on active duty - L"Docteur", // administering medical aid - L"Patient(e)", // getting medical aid - L"Transport", // in a vehicle - L"Transit", // in transit - abbreviated form - L"Réparat.", // repairing - L"Radio", // scanning for nearby patrols - L"Formation", // training themselves - L"Milice", // training a town to revolt - L"Milice M.", //training moving militia units - L"Entraîneur", // training a teammate //!!! Too long ? (11 char) -> 11 chars is OK - L"Élève", // being trained by someone else - L"Dépl obj.", // move items - L"Renseign.", // operating a strategic facility - L"Mange", // eating at a facility (cantina etc.) - L"Repos", // Resting at a facility - L"Prison", // Flugente: interrogate prisoners - L"Mort(e)", // dead - L"Invalide", // abbreviation for incapacitated - L"Capturé(e)", // Prisoner of war - captured - L"Hôpital", // patient in a hospital - L"Vide", // Vehicle is empty - L"Infiltré", // facility: undercover prisoner (snitch) - L"Propag.", // facility: spread propaganda - L"Propag.", // facility: spread propaganda (globally) - L"Rumeur", // facility: gather information - L"Propag.", // spread propaganda - L"Rumeur", // gather information - L"Command.", // militia movement orders - L"Diagnose", // disease diagnosis //TODO.Translate - L"Treat D.", // treat disease among the population - L"Docteur", // administering medical aid - L"Patient(e)", // getting medical aid - L"Réparat.", // repairing - L"Fortify", // build structures according to external layout // TODO.Translate - L"Train W.", - L"Hide", // TODO.Translate - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", // TODO.Translate - L"Explore", // TODO.Translate - L"Event",// rftr: merc is on a mini event // TODO: translate - L"Mission", // rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"Milice", // the title of the militia box - L"Disponibles", //the number of unassigned militia troops - L"Vous ne pouvez réorganiser la milice lors d'un combat !", - L"Des milices ne sont pas assignées à un secteur. Voulez-vous les démobiliser ?",//!!! Too long ? (80 char) -> it is OK -}; - - -STR16 pMilitiaButtonString[] = -{ - L"Auto", // auto place the militia troops for the player - L"OK", // done placing militia troops - L"Démobiliser", // HEADROCK HAM 3.6: Disband militia - L"Tout ôter", // move all milita troops to unassigned pool -}; - -STR16 pConditionStrings[] = -{ - L"Excellent", //the state of a soldier .. excellent health - L"Bon", // good health - L"En forme", // fair health - L"Blessé(e)", // wounded health - L"Fatigué(e)", // tired - L"Épuisé(e)", // bleeding to death - L"Inconscient(e)", // knocked out - L"Mourant(e)", // near death - L"Mort(e)", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"Service", // set merc on active duty - L"Patient(e)", // set as a patient to receive medical aid - L"Transport", // tell merc to enter vehicle - L"Laisser", // let the escorted character go off on their own - L"Annuler", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"Esc. 1", - L"Esc. 2", - L"Esc. 3", - L"Esc. 4", - L"Esc. 5", - L"Esc. 6", - L"Esc. 7", - L"Esc. 8", - L"Esc. 9", - L"Esc. 10", - L"Esc. 11", - L"Esc. 12", - L"Esc. 13", - L"Esc. 14", - L"Esc. 15", - L"Esc. 16", - L"Esc. 17", - L"Esc. 18", - L"Esc. 19", - L"Esc. 20", - L"Service", - L"Docteur", - L"Patient", - L"Transport", - L"Transit", - L"Réparation", - L"Radioécouteur", // radio scan - L"Formation", - L"Milice", - L"Forme la milice mobile",//!!! Too long ? -> It is OK - L"Entraîneur", - L"Élève", - L"Déplace les objets", // move items - L"Renseignement", //!!! Idem ? -> The current translation is OK - L"Mange", // eating at a facility (cantina etc.) - L"Repos", - L"Interroge prisonier(s)", // Flugente: interrogate prisoners - L"Mort(e)", - L"Invalide", - L"Capturé(e)", - L"Hôpital", - L"Vide", // Vehicle is empty - L"Infiltré", // facility: undercover prisoner (snitch) // TODO.Translate //A voir fini (to see finished) - L"Répand une propagande", // facility: spread propaganda // TODO.Translate //A voir fini (to see finished) - L"Fait de la propagande", // facility: spread propaganda (globally) // TODO.Translate //A voir fini (to see finished) - L"Collecte les rumeurs", // facility: gather rumours // TODO.Translate //A voir fini (to see finished) - L"Propagande", // spread propaganda // TODO.Translate //A voir fini (to see finished) - L"Rumeur", // gather information // TODO.Translate //A voir fini (to see finished) - L"Commande", // militia movement orders - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Docteur", - L"Patient", - L"Réparation", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"Esc. 1", - L"Esc. 2", - L"Esc. 3", - L"Esc. 4", - L"Esc. 5", - L"Esc. 6", - L"Esc. 7", - L"Esc. 8", - L"Esc. 9", - L"Esc. 10", - L"Esc. 11", - L"Esc. 12", - L"Esc. 13", - L"Esc. 14", - L"Esc. 15", - L"Esc. 16", - L"Esc. 17", - L"Esc. 18", - L"Esc. 19", - L"Esc. 20", - L"Service", - L"Docteur", - L"Patient", - L"Transport", - L"Transit", - L"Réparation", - L"Radioécouteur", // radio scan - L"Formation", - L"Milice", - L"Milice mobile", - L"Entraîneur", - L"Elève", - L"Déplacer les objets", // move items - L"Renseignement", //!!! Idem ? -> Current translation is OK - L"Repos", - L"Interroger captif(s)", // Flugente: interrogate prisoners - L"Mort(e)", - L"Invalide", - L"Capturé(e)", - L"Hôpital", // patient in a hospital - L"Vide", // Vehicle is empty - L"Infiltré", // facility: undercover prisoner (snitch) // TODO.Translate //A voir fini (to see finished) - L"Répandre une propagande", // facility: spread propaganda // TODO.Translate //A voir fini (to see finished) - L"Faire de la propagande", // facility: spread propaganda (globally) // TODO.Translate //A voir fini (to see finished) - L"Récolter les rumeurs", // facility: gather rumours // TODO.Translate //A voir fini (to see finished) - L"Propagande", // spread propaganda - L"Rumeurs", // gather information - L"Commander", // militia movement orders - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Docteur", - L"Patient", - L"Réparation", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"Options du contrat :", - L"", // a blank line, required - L"Extension 1 jour", // offer merc a one day contract extension - L"Extension 1 semaine", // 1 week - L"Extension 2 semaines", // 2 week - L"Renvoyer", // end merc's contract - L"Annuler", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"Capturé(e)", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"FORCE", - L"DEXTÉRITÉ", - L"AGILITÉ", - L"SAGESSE", - L"PRÉCISION",//!!! Accurate but not very good. Char limit ? -> 12 characters is the limit - L"MÉDECINE", - L"MÉCANIQUE", - L"COMMANDEMENT", - L"EXPLOSIFS", - L"NIVEAU", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Protec.", // the armor rating of the merc - L"Poids", // the weight the merc is carrying - L"Cam.", // the merc's camouflage rating - L"Camouflage :", - L"Protection :", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Agi", // the abbreviated version of : agilité - L"Dex", // dextérité - L"For", // strength - L"Com", // leadership - L"Sag", // sagesse - L"Niv", // experience level - L"Tir", // marksmanship skill - L"Méc", // mechanical skill - L"Exp", // explosive skill - L"Méd", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Affectation", // the mercs current assignment - L"Contrat", // the contract info about the merc - L"Santé", // the health level of the current merc - L"Moral", // the morale of the current merc - L"Cond.", // the condition of the current vehicle - L"Carb.", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Formation", // tell merc to train self - L"Milice", // tell merc to train town - L"Entraîneur", // tell merc to act as trainer - L"Élève", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Cadence de tir :", // the allowable rate of fire for a merc who is guarding - L"Feu à volonté", // the merc can be aggressive in their choice of fire rates - L"Économiser munitions", // conserve ammo - L"Tir restreint", // fire only when the merc needs to - L"Autres Options :", // other options available to merc - L"Retraite", // merc can retreat - L"Abri", // merc is allowed to seek cover - L"Assistance", // merc can assist teammates - L"OK", // done with this menu - L"Annuler", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"Cadence de tir :", - L"*Feu à volonté*", - L"*Économiser munitions*", - L"*Tir restreint*", - L"Autres Options :", - L"*Retraite*", - L"*Abri*", - L"*Assistance*", - L"OK", - L"Annuler", -}; - -STR16 pAssignMenuStrings[] = -{ - L"Service", // merc is on active duty - L"Docteur", // the merc is acting as a doctor - L"Disease", // merc is a doctor doing diagnosis TODO.Translate - L"Patient(e)", // the merc is receiving medical attention - L"Transport", // the merc is in a vehicle - L"Réparat.", // the merc is repairing items - L"Radio", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"Infiltré", // anv: snitch actions - L"Formation", // the merc is training - L"Militia", // all things militia - L"Dépl obj.", // move items - L"Fortify", // fortify sector // TODO.Translate - L"Intel", // covert assignments // TODO.Translate - L"Administer", // TODO.Translate - L"Explore", // TODO.Translate - L"Affectat.", // the merc is using/staffing a facility - L"Annuler", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"Attaquez", // set militia to aggresive - L"Tenez la position", // set militia to stationary - L"Retraite", // retreat militia - L"Rejoignez-moi", // retreat militia - L"Couchez-vous", // retreat militia - L"Accroupi", - L"À couvert !", - L"Move to", // TODO.Translate - L"Tous : Attaquez", - L"Tous : Tenez la position", - L"Tous : Retraite", - L"Tous : Rejoignez-moi", - L"Tous : Dispersez-vous", - L"Tous : Couchez-vous", - L"Tous : Accroupi", - L"Tous : À couvert!", - //L"All: Trouver matériel", - L"Annuler", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = -{ - // radio operator - L"Tir d'artillerie", - L"Brouiller les communications", - L"Balayer les fréquences", - L"Écouter les alentours", - L"Appeler des renforts", - L"Éteindre la radio", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", // TODO.Translate - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Guetteur", - L"Focus", // TODO.Translate - L"Drag", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Ordonner un tir d'artillerie au secteur...", - L"Brouiller toutes les fréquences radios pour rendre les communications impossibles.", - L"Pour trouver une fréquence émettrice.", - L"Utiliser votre radio pour connaître les mouvements de l'ennemi.", - L"Appeler des renforts des secteurs voisins.", - L"Éteindre la radio.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", // TODO.Translate - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Observer une zone avec un tireur d'élite donne un bonus de CDT sur tout ce que vous voyez.", - L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Nécessite :\n", - L" - %d PA\n", - L" - %s\n", - L" - %s ou plus\n", - L" - %s ou plus ou", - L" - %d minutes pour être prêt\n", - L" - positions des mortiers dans les secteurs voisins\n", - L" - %s |o|u %s |e|t %s ou %s ou plus\n", - L" - possession par un démon", - L" - a gun-related trait\n", // TODO.Translate - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = -{ - L"Milice", - L"Autre escouade", - L"Annuler", - L"%d miliciens", - L"Tous", - - L"More", // TODO.Translate - L"Corpse: %s", // TODO.Translate -}; - -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Infiltrer l'équipe", - L"Infiltrer la ville", - L"Annuler", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Discuter du comportement du mouchard vis-à-vis de ses coéquipiers.", - L"Prendre une mission dans ce secteur.", - L"Annuler", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Rapporter les plaintes", - L"Ne pas rapporter", - L"Prévenir les mauvaises conduites", - L"Ignorer les mauvaises conduites", - L"Annuler", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Signaler toute plainte des autres mercenaires à votre commandant.", - L"Ne rien signaler.", - L"Essayer d'empêcher les chapardages et la prise de produits addictifs des autres mercenaires.", - L"Ne pas se soucier de ce que font les autres mercenaires.", - L"Annuler", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Fait de la propagande", // TODO.Translate //A voir fini (to see finished) - L"Récolte les rumeurs", // TODO.Translate //A voir fini (to see finished) - L"Annuler", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Glorifier les actions des mercenaires pour accroître la fidélité de la ville et étouffer toute mauvaises nouvelles.", - L"Prêter une oreille attentive aux rumeurs sur l'activité des forces ennemies.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = // TODO.Translate -{ - L"Interrogate admins", - L"Interrogate troops", - L"Interrogate elites", - L"Interrogate officers", - L"Interrogate generals", - L"Interrogate civilians", - L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s s'est exposé(e) comme mouchard, mais s'en est rendu compte et a pu s'en sortir vivant.", - L"%s s'est exposé(e) comme mouchard, mais a réussi à désamorcer la situation et a pu s'en sortir vivant.", - L"%s s'est exposé(e) comme mouchard, mais a réussi à éviter la tentative d'assassinat.", - L"%s s'est exposé(e) comme mouchard, mais les gardes ont empêché tout débordement violent.", - - L"%s s'est exposé(e) comme mouchard et a failli être noyé par les autres détenus avant que les gardes ne le/la sauvent.", - L"%s s'est exposé(e) comme mouchard et a failli se faire battre à mort avant que les gardes ne le/la sauvent.", - L"%s s'est exposé(e) comme mouchard et a failli se faire poignarder avant que les gardes ne le/la sauvent.", - L"%s s'est exposé(e) comme mouchard et a failli se faire étrangler avant que les gardes ne le/la sauvent.", - - L"%s s'est exposé(e) comme mouchard et a été noyé(e) dans les toilettes par les autres détenus.", - L"%s s'est exposé(e) comme mouchard et a été battu(e) à mort par les autres détenus.", - L"%s s'est exposé(e) comme mouchard et les autres détenus l'ont poignardé(e).", - L"%s s'est exposé(e) comme mouchard et les autres détenus l'ont étranglé(e).", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s a entendu des rumeurs sur une activité ennemie dans le secteur %d.", - -}; - -STR16 pRemoveMercStrings[] = -{ - L"Enlever Merc", // remove dead merc from current team - L"Annuler", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Santé", - L"Agilité", - L"Dextérité", - L"Force", - L"Commandement", - L"Tir", - L"Mécanique", - L"Explosifs", - L"Médecine", - L"Annuler", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Formation", // train yourself - L"Train workers", // TODO.Translate - L"Entraîneur", // train your teammates - L"Élève", // be trained by an instructor - L"Annuler", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"Esc. 1", - L"Esc. 2", - L"Esc. 3", - L"Esc. 4", - L"Esc. 5", - L"Esc. 6", - L"Esc. 7", - L"Esc. 8", - L"Esc. 9", - L"Esc. 10", - L"Esc. 11", - L"Esc. 12", - L"Esc. 13", - L"Esc. 14", - L"Esc. 15", - L"Esc. 16", - L"Esc. 17", - L"Esc. 18", - L"Esc. 19", - L"Esc. 20", - L"Annuler", -}; - -STR16 pPersonnelTitle[] = -{ - L"Personnel", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Santé : ", // health of merc - L"Agilité : ", - L"Dextérité : ", - L"Force : ", - L"Commandement : ", - L"Sagesse : ", - L"Niv. Exp. : ", // experience level - L"Tir : ", - L"Mécanique : ", - L"Explosifs : ", - L"Médecine : ", - L"Acompte méd. : ", // amount of medical deposit put down on the merc - L"Contrat : ", // cost of current contract - L"Tué : ", // number of kills by merc - L"Participation : ", // number of assists on kills by merc //!!!ugly. Char limit ? -> 17 chars - L"Coût/jour :", // daily cost of merc - L"Coût total :", // total cost of merc - L"Contrat :", // cost of current contract - L"Service fait :", // total service rendered by merc - L"Salaire :", // amount left on MERC merc to be paid - L"Tir réussi :", // percentage of shots that hit target - L"Bataille :", // number of battles fought - L"Blessure :", // number of times merc has been wounded - L"Spécialité :", - L"Aucune spécialité", - L"Réalisation :", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"Soldat d'élite : %d\n", - L"Soldat régulier : %d\n", - L"Soldat d'administration : %d\n", - L"Groupe hostile : %d\n", - L"Créature : %d\n", - L"Char : %d\n", - L"Autre : %d\n", - - L"Mercenaire : %d\n", - L"Milice : %d\n", - L"Autre : %d\n", - - L"Coup tiré : %d\n", - L"Roquette tirée : %d\n", - L"Grenade lancée : %d\n", - L"Couteau lancé : %d\n", - L"Attaque à l'arme blanche : %d\n", - L"Attaque à mains nues : %d\n", - L"Tir réussi : %d\n", - - L"Serrure crochetée : %d\n", - L"Serrure fracturée : %d\n", - L"Piège retiré : %d\n", - L"Bombe explosée : %d\n", - L"Objet réparé : %d\n", - L"Objet combiné : %d\n", - L"objet volé : %d\n", - L"Milice entrainée : %d\n", - L"Merc. soigné : %d\n", - L"Chirurgie faite : %d\n", - L"Personne rencontrée : %d\n", - L"Secteur visité : %d\n", - L"Embuscade empêchée : %d\n", - L"Quête faite : %d\n",//!!!Ugly. Char limit ? -> Total: 28 chars - - L"Tactique de combat : %d\n", - L"Combat auto-résolu : %d\n", - L"Temps écoulé : %d\n", - L"Embuscade expérimentée : %d\n", - L"Meilleur combat : %d ennemis\n",//!!! Ennemies/Ennemis ? -> whatever you like - - L"Tir : %d\n", - L"Arme blanche : %d\n", - L"Bagarre : %d\n", - L"Explosion : %d\n", - L"Grave : %d\n", - L"Chirurgie subie : %d\n", - L"Accident : %d\n", - - L"Caractère :", - L"Faiblesse :", - - L"Attitude :", // WANNE: For old traits display instead of "Character:"! - - L"Zombi : %d\n", - - L"Passif :", - L"Personnalité :", - - L"Prisoners interrogated: %d\n", // TODO.Translate - L"Diseases caught: %d\n", - L"Total damage received: %d\n", - L"Total damage caused: %d\n", - L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - L"Aucune spécialité", - L"Crochetage", - L"Combat à mains nues", - L"Électronique", - L"Opérations de nuit", - L"Le lancer", - L"Instructeur", - L"Arme lourde", - L"Arme automatique", - L"Discrétion", - L"Ambidextre", - L"Voleur", - L"Arts martiaux", - L"Arme blanche", - L"Tireur d'élite", - L"Camouflage", - L"(Expert)", -}; - -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"Aucune spécialité", - L"Arme automatique", - L"Arme lourde", - L"Tireur d'élite", - L"Reconnaissance",// Hunter - L"Flingueur", - L"Combat à mains nues", - L"Meneur", - L"Technicien", - L"Médecin", - // Minor traits - L"Ambidextre", - L"Mêlée", - L"Le lancer", - L"Opérations de nuit", - L"Discrétion", - L"Athlétique", - L"Culturiste", - L"Sabotage", - L"Instructeur", - L"Reconnaissance", - // covert ops is a major trait that was added later - L"Espionnage", // 20 - - // new minor traits - L"Opérateur radio", // 21 - L"Infiltré", // 22 - L"Survival", - - // second names for major skills - L"Mitrailleur", // 24 - L"Bombardier", - L"Sniper", - L"Ranger", - L"Combattant", - L"Arts martiaux", - L"Commandant", - L"Ingénieur", - L"Chirurgien", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 37 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 41 - L"Espion", // 42 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch (minor trait) - L"Placeholder", // for survival (minor trait) - L"Plus...", // 47 - L"Intel", // for INTEL // TODO.Translate - L"Disguise", // for DISGUISE - L"divers", // for VARIOUSSKILLS - L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate -}; -////////////////////////////////////////////////////////// - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"Debout/Marcher (|S)", - L"Accroupi/Avancer (|C)", - L"Debout/Courir (|R)", - L"À terre/Ramper (|P)", - L"Regarder (|L)", - L"Action", - L"Parler", - L"Examiner (|C|T|R|L)", - - // Pop up door menu - L"Ouvrir à la main", - L"Examen poussé", - L"Crocheter", - L"Enfoncer", - L"Désamorcer", - L"Verrouiller", - L"Déverrouiller", - L"Utiliser explosif", - L"Utiliser pied de biche", - L"Annuler (|E|C|H|A|P)", - L"Fermer", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"aucun piège", - L"un piège explosif", - L"un piège électrique", - L"une alarme sonore", - L"une alarme silencieuse", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"jour", - L"semaine", - L"2 semaines", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Choix du personnage", - L"Affectation", - L"Destination", - L"|Contrat du mercenaire", //!!! Char typo before "Contrat" ? - L"Retirer mercenaire", - L"Repos", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"FAIBLE", - L"MOYEN", - L"FORT", - L"TRÈS FORT", -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"INCONNU", - L"MOUVEMENT", - L"GRINCEMENT", - L"CLAPOTEMENT", - L"IMPACT", - L"COUP DE FEU", - L"EXPLOSION", - L"CRI", - L"IMPACT", - L"IMPACT", - L"BRUIT", - L"COLLISION", -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"au NORD-EST", - L"à l'EST", - L"au SUD-EST", - L"au SUD", - L"au SUD-OUEST", - L"à l'OUEST", - L"au NORD-OUEST", - L"au NORD", -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"Ville", - L"Route", - L"Plaine", - L"Désert", - L"Bois", - L"Forêt", - L"Marais", - L"Eau", - L"Collines", - L"Infranchissable", - L"Rivière", //river from north to south - L"Rivière", //river from east to west - L"Pays étranger", - //NONE of the following are used for directional travel, just for the sector description. - L"Tropical", - L"Cultures", - L"Plaine, route", - L"Bois, route", - L"Ferme, route", - L"Tropical, route", - L"Forêt, route", - L"Route côtière", - L"Montagne, route", - L"Côte, route", - L"Désert, route", - L"Marais, route", - L"Bois, site SAM", - L"Désert, site SAM", - L"Tropical, site SAM", - L"Meduna, site SAM", - - //These are descriptions for special sectors - L"Hôpital Cambria", - L"Aéroport Drassen", - L"Aéroport Meduna", - L"Site SAM", - L"Dépôt", - L"Base rebelle", //The rebel base underground in sector A10 - L"Prison Tixa", //The basement of the Tixa Prison (J9) - L"Repaire créatures", //Any mine sector with creatures in it - L"Sous-sol d'Orta", //The basement of Orta (K4) - L"Tunnel", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Abri", //The shelter underneath the queen's palace !!! "Bunker" is much better here. Char limit ? - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s détecté dans le secteur %c%d et une autre escouade est en route.", //STR_DETECTED_SINGULAR - L"%s détecté dans le secteur %c%d et d'autres escouades sont en route.", //STR_DETECTED_PLURAL - L"Voulez-vous coordonner une arrivée simultanée ?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"L'ennemi vous propose de vous rendre.", //STR_ENEMY_SURRENDER_OFFER - L"L'ennemi a capturé vos mercenaires inconscients.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Retraite", //The retreat button //STR_AR_RETREAT_BUTTON - L"OK", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"DÉFENSEURS", //STR_AR_DEFEND_HEADER - L"ATTAQUANTS", //STR_AR_ATTACK_HEADER - L"RENCONTRE", //STR_AR_ENCOUNTER_HEADER - L"Secteur", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"VICTOIRE !", //STR_AR_OVER_VICTORY - L"DÉFAITE !", //STR_AR_OVER_DEFEAT - L"RÉDDITION !", //STR_AR_OVER_SURRENDERED - L"CAPTURE !", //STR_AR_OVER_CAPTURED - L"RETRAITE !", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Milice", //STR_AR_MILITIA_NAME, - L"Élite", //STR_AR_ELITE_NAME, - L"Troupe", //STR_AR_TROOP_NAME, - L"Admin", //STR_AR_ADMINISTRATOR_NAME, - L"Créature", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Temps écoulé", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"SE RETIRE", //STR_AR_MERC_RETREATED, - L"EN RETRAITE", //STR_AR_MERC_RETREATING, - L"RETRAITE", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Auto.", //STR_PB_AUTORESOLVE_BTN, - L"Combat", //STR_PB_GOTOSECTOR_BTN, - L"Retraite", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"ENNEMIS REPÉRÉS", //STR_PB_ENEMYENCOUNTER_HEADER, - L"ATTAQUE ENNEMIE", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"EMBUSCADE !", //STR_PB_ENEMYAMBUSH_HEADER - L"VOUS PÉNÉTREZ EN SECTEUR ENNEMI", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"ATTAQUE DE CRÉATURES", //STR_PB_CREATUREATTACK_HEADER - L"AMBUSCADE DE CHATS SAUVAGES", //STR_PB_BLOODCATAMBUSH_HEADER - L"VOUS ENTREZ DANS LE REPAIRE DES CHATS SAUVAGES", //STR_PB_ENTERINGBLOODCATLAIR_HEADER - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Lieu", - L"Ennemis", - L"Mercs", - L"Milice", - L"Créatures", - L"Chats", - L"Secteur", - L"Aucun", //If there are non uninvolved mercs in this fight. - L"N/A", //Acronym of Not Applicable - L"j", //One letter abbreviation of day - L"h", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Annuler", - L"Dispersé", - L"Groupé", - L"OK", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"Annule le déploiement des mercenaires \net vous permet de les déployer vous-même. (|C)", - L"Disperse aléatoirement vos mercenaires \nà chaque fois. (|S)", - L"Vous permet de placer votre groupe de mercenaires. (|G)", - L"Cliquez sur ce bouton lorsque vous avez déployé \nvos mercenaires. (|E|N|T|R|É|E)", - L"Vous devez déployer vos mercenaires \navant d'engager le combat.", - - //Various strings (translate word for word) - - L"Secteur", - L"Définissez les points d'entrée", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"Il semblerait que l'endroit soit inaccessible...", - L"Déployez vos mercenaires dans la zone en surbrillance.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"est arrivé(e) dans le secteur", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"Résolution automatique du combat\nsans charger la carte. (|A)", - L"Résolution automatique impossible lorsque\nvous attaquez.", - L"Pénétrez dans le secteur pour engager le combat. (|E)", - L"Battre en retraite vers le secteur précédent. (|R)", //singular version - L"Battre en retraite vers les secteurs précédents. (|R)", //multiple groups with same previous sector !!! Changed "Faire" to "Battre en". Char limit ? - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"L'ennemi attaque votre milice dans le secteur %c%d.", - //%c%d is the sector -- ex: A9 - L"Les créatures attaquent votre milice dans le secteur %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Les créatures ont tué %d civils dans le secteur %s.", - //%s is the sector location -- ex: A9: Omerta - L"L'ennemi attaque vos mercenaires dans le secteur %s. Aucun de vos hommes ne peut combattre !", - //%s is the sector location -- ex: A9: Omerta - L"Les créatures attaquent vos mercenaires dans le secteur %s. Aucun de vos hommes ne peut combattre !", - - // Flugente: militia movement forbidden due to limited roaming - L"La milice ne peut pas se déplacer (RESTRICT_ROAMING = TRUE).", - L"La salle d'opérations n'est pas ouverte... Le mouvement de la milice a avorté !", - - L"Robot", //STR_AR_ROBOT_NAME, // TODO: translate - L"Tank", //STR_AR_TANK_NAME, // TODO.Translate - L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate - - L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", // TODO.Translate - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"Jour", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"Secteur :", - L"Jour :", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"État :", - L"Poids :", - L"P. d'action", - L"Por. :", // Range - L"Dég. :", // Damage - L"Munition :", // Number of bullets left in a magazine - L"PA :", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Précision :", //9 - L"Portée :", //10 - L"Dégât :", //11 - L"Poids :", //12 - L"Choc :",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - L"Accessoire :", //14 - L"AUTO/5 :", //15 - L"Balle rest. :", //16 - L"Par défaut :", //17 //WarmSteel - So we can also display default attachments - L"Encras. :", // 18 //added by Flugente - L"Place :", // 19 //space left on Molle items - L"Spread Pattern:", // 20 // TODO.Translate - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - L"|P|o|r|t|é|e\n \nC'est la portée de l'arme. Un tir, au-delà de\ncette valeur, donnera des pénalités.\n \nValeur élevée recommandée.", - L"|D|é|g|â|t\n \nC'est la valeur des dégâts. L'arme infligera\ngénéralement cette valeur (ou presque)\nà toutes cibles non protégées.\n \nValeur élevée recommandée.", - L"|P|r|é|c|i|s|i|o|n\n \nC'est la conception particulière de\nchaque arme qui donne ce bonus/pénalité\naux chances de toucher.\n \nValeur élevée recommandée.", - L"|V|i|s|é|e\n \nC'est le nombre maximum de clics pour viser.\n \nChaque clic donnera un tir plus précis.\n \nValeur élevée recommandée.", - L"|V|i|s|é|e |m|o|d|i|f|i|é|e\n \nLes lunettes de visée améliorent l'efficacité\nde l'arme à chaque clic.\n \nValeur élevée recommandée.", - L"|P|o|r|t|é|e |m|i|n|i|m|u|m |d|u |v|i|s|e|u|r\n \nC'est la portée minimum pour tirer\navec un viseur ou +.\n \nSi la cible est plus près que ce nombre de cases,\nles clics pour viser resteront à leur efficacité\npar défaut.\n \nValeur faible recommandée.", - L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s\n \nLa valeur des chances de toucher une\ncible avec les accessoires de l'arme.\n \nValeur élevée recommandée.", - L"|P|o|r|t|é|e |o|p|t|i|m|a|l|e |d|u |l|a|s|e|r\n \nC'est la portée (en cases) pour\nune pleine efficacité du laser.\n \nSi la cible est au-delà de ce nombre, le laser\nfournira un faible bonus ou pas du tout.\n \nValeur élevée recommandée.", - L"|C|a|c|h|e|-|f|l|a|m|m|e\n \nQuand cette icône apparaît, ça signifie que\nl'arme ne fait pas d'éclair lors du tir.\nAinsi, le tireur sera moins repérable.", - L"|S|o|n|o|r|i|t|é\n \nDistance (en cases) de l'intensité sonore\nque fait l'arme lors d'un tir.\n \nValeur faible recommandée.\n \n(Sauf pour attirer les ennemis délibérément...).", - L"|F|i|a|b|i|l|i|t|é\n \nCette valeur indique (en général) la\nrapidité avec laquelle cette arme va\nse détériorer lors des combats.\n \nValeur élevée recommandée.", - L"|R|é|p|a|r|a|t|i|o|n\n \nCette valeur indique la rapidité avec\nlaquelle l'arme sera réparée. (Par un\nmercenaire affecté à cette tâche).\n \nValeur élevée recommandée.", - L"", //12 - L"PA pour mettre en joue", - L"PA par tir", - L"PA par rafale", - L"PA pour tir auto.", - L"PA pour recharger", - L"PA pour recharger manuellement", - L"Pénalité rafale (Valeur faible recommandée)", //19 - L"Facteur de bipied", - L"Nombre de tirs pour 5 PA", - L"Pénalité auto (Valeur faible recommandée)", - L"Pénalité rafale/auto (Valeur faible recommandée)", //23 - L"PA pour jeter", - L"PA pour lancer", - L"PA pour poignarder", - L"Pas de tir simple !", - L"Pas de tir en rafale !", - L"Pas de tir auto !", - L"PA pour frapper", - L"", - L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n\n \nDétermine la difficulté à réparer une arme\net qui peut la réparer complètement.\n \nVert = N'importe qui peut la réparer.\n \nJaune = Seuls des PNJ spécialisés peuvent la\nréparer au-delà du seuil de réparation.\n \nRouge = L'arme ne peut pas être réparée.\n \nValeur élevée recommandée.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Facteur d'encombrement (Valeur faible recommandée)", // 0 - L"Facteur de fiabilité", - L"Facteur d'intensité sonore (Valeur faible recommandée)", - L"Cache-flamme", - L"Facteur de bipied", - L"Facteur de portée", // 5 - L"Facteur de toucher", - L"Portée optimum du laser", - L"Facteur de bonus de visée", - L"Facteur de longueur de rafale", - L"Facteur de pénalité de rafale (Valeur élevée recommandée)", // 10 - L"Facteur de pénalité tir auto. (Valeur élevée recommandée)", - L"Facteur de PA", - L"Facteur de PA rafale (Valeur faible recommandée)", - L"Facteur de PA tir auto (Valeur faible recommandée)", - L"Facteur de PA mise en joue (Valeur faible recommandée)", // 15 - L"Facteur de PA recharger (Valeur faible recommandée)", - L"Facteur de capacité chargeur", - L"Facteur de PA attaque (Valeur faible recommandée)", - L"Facteur de dégâts", - L"Facteur de dégâts mêlée", // 20 - L"Camouflage bois", - L"Camouflage urbain", - L"Camouflage désert", - L"Camouflage neige", - L"Facteur de discrétion", // 25 - L"Facteur de portée auditive", - L"Facteur de portée visuelle", - L"Facteur de portée visuelle jour", - L"Facteur de portée visuelle nuit", - L"Facteur de portée visuelle faible lumière", //30 - L"Facteur de portée visuelle cave", - L"Pourcentage d'effet tunnel (Valeur faible recommandée)", - L"Portée minimale pour bonus de visée", - L"Maintenez |C|T|R|L pour comparer les objets", // item compare help text - L"Equipment weight: %4.1f kg", // 35 // TODO.Translate -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"En ", - L"PARFAITE", - L"EXCELLENTE", - L"BONNE", - L"MOYENNE", - L"FAIBLE", - L"MAUVAISE", - L"PITEUSE", - L" condition." -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Montant ", - L"restant :", //this is the overall balance - L"Montant ", - L"pris :", // the amount he wants to separate from the overall balance to get two piles of money - - L"Solde", - L"actuel :", - L"Montant", - L" à retirer :", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"MOURANT", // >= 0 - L"CRITIQUE", // >= 15 - L"FAIBLE", // >= 30 - L"BLESSÉ", // >= 45 - L"EN FORME", // >= 60 - L"BON", // >= 75 - L"EXCELLENT", // >= 90 - L"EN PRISON", // added by Flugente -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L" ?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"1000", - L"100", - L"10", - L"OK", - L"Partager", - L"Retirer", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"+", -}; - -CHAR16 gzConsLabel[10] = -{ - L"-", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Pardon ?", //meaning "Repeat yourself" - L"Amical", //approach in a friendly - L"Direct", //approach directly - let's get down to business - L"Menaçant", //approach threateningly - talk now, or I'll blow your face off - L"Donner", - L"Recruter", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Acheter/Vendre", - L"Acheter", - L"Vendre", - L"Réparer", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"OK", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"Eldorado", - L"Hummer", // a hummer jeep/truck -- military vehicle - L"Camion de glaces", - L"Jeep", - L"Char", - L"Hélicoptère", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Eldor.", - L"Hummer", // the HMVV - L"Camion", - L"Jeep", - L"Char", - L"Hélico", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Eldorado", - L"Hummer", //a military jeep. This is a brand name. - L"Camion", // Ice cream truck - L"Jeep", - L"Char", - L"Hélico", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"You cannot shoot from this seat.", // TODO.Translate - L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Raid aérien", - L"Appliquer les premiers soins ?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s a remarqué qu'il manque des objets dans cet envoi.", - - // The %s is a string from pDoorTrapStrings - - L"La serrure est piégée par %s.", - L"Pas de serrure.", - L"Réussite !", - L"Échec.", - L"Réussite !", - L"Échec.", - L"La serrure n'est pas piégée.", - L"Réussite !", - // The %s is a merc name - L"%s ne possède pas la bonne clé.", - L"Le piège est désamorcé.", - L"La serrure n'est pas piégée.", - L"Verrouillée.", - L"PORTE", - L"PIÉGÉE", - L"VERROUILLÉE", - L"OUVERTE", - L"ENFONCÉE", - L"Un interrupteur. Voulez-vous l'actionner ?", - L"Désamorcer le piège ?", - L"Préc...", - L"Suiv...", - L"Plus...", - - // In the next 2 strings, %s is an item name - - L"%s posé(e) à terre.", - L"%s donné(e) à %s.", - - // In the next 2 strings, %s is a name - - L"%s a été payé(e).", - L"%d dus à %s.", - L"Choisir la fréquence :", //in this case, frequency refers to a radio signal - L"Nombre de tours avant explosion :", //how much time, in turns, until the bomb blows - L"Régler la fréquence :", //in this case, frequency refers to a radio signal - L"Désamorcer le piège ?", - L"Enlever le drapeau bleu ?", - L"Poser un drapeau bleu ?", - L"Fin du tour", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"Voulez-vous vraiment attaquer %s ?", - L"Les véhicules ne peuvent changer de position.", - L"Le robot ne peut changer de position.", - - // In the next 3 strings, %s is a name - - L"%s ne peut adopter cette position ici.", - L"%s ne peut recevoir de premiers soins ici.", - L"%s n'a pas besoin de premiers soins.", - L"Impossible d'aller ici.", - L"Votre escouade est au complet. Vous ne pouvez pas ajouter quelqu'un.", //there's non room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s a été recruté(e).", - - // Here %s is a name and %d is a number - - L"Vous devez %d $ à %s.", - - // In the next string, %s is a name - - L"Escorter %s ?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"Engager %s à %s la journée ?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"Voulez-vous engager le combat ?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"Acheter %s pour %s ?", - - // In the next string, %s is a name - - L"%s est escorté(e) par l'escouade %d.", - - // These messages are displayed during play to alert the player to a particular situation - - L"ENRAYÉ", //weapon is jammed. - L"Le robot a besoin de munitions calibre %s.", //Robot is out of ammo - L"Lancer ici ? Aucune chance.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Discrétion (|Z)", - L"Carte (|M)", - L"Fin du tour (|D)", - L"Parler à", - L"Muet", - L"Se relever (|P|g|U|p)", - L"Niveau du curseur (|T|A|B)", - L"Escalader/Sauter (|J)", - L"Se coucher (|P|g|D|n)", - L"Examiner (|C|T|R|L)", - L"Mercenaire précédent", - L"Mercenaire suivant (|E|S|P|A|C|E)", - L"Options (|O)", - L"Rafale (|B)", - L"Regarder/Pivoter (|L)", - L"Santé : %d/%d\nÉnergie : %d/%d\nMoral : %s", - L"Pardon ?", //this means "what?" - L"Suite", //an abbrieviation for "Continued" - L"Sourdine désactivée pour %s.", - L"Sourdine activée pour %s.", - L"État : %d/%d\nCarburant : %d/%d", - L"Sortir du véhicule" , - L"Changer d'escouade (|M|A|J| |E|S|P|A|C|E)", - L"Conduire", - L"N/A", //this is an acronym for "Not Applicable." - L"Utiliser (À mains nues)", - L"Utiliser (Arme à feu)", - L"Utiliser (Arme blanche)", - L"Utiliser (Explosifs)", - L"Utiliser (Trousse de soins)", - L"(Prendre)", - L"(Recharger)", - L"(Donner)", - L"%s part.", - L"%s arrive.", - L"%s n'a plus de points d'action.", - L"%s n'est pas disponible.", - L"%s est couvert de bandages.", - L"%s n'a plus de bandages.", - L"Ennemis dans le secteur !", - L"Pas d'ennemi en vue.", - L"Pas assez de points d'action.", - L"Personne n'utilise une télécommande.", - L"La rafale a vidé le chargeur !", - L"SOLDAT", - L"CRÉPITUS", - L"MILICE", - L"CIVIL", - L"ZOMBI", - L"PRISONNIER", - L"Quitter Secteur", - L"OK", - L"Annuler", - L"Mercenaire", - L"Tous", - L"GO", - L"Carte", - L"Vous ne pouvez pas quitter ce secteur par ce côté.", - L"Vous ne pouvez pas quitter le mode tour par tour.", - L"%s est trop loin.", - L"Enlever cime des arbres", - L"Afficher cime des arbres", - L"CORBEAU", //Crow, as in the large black bird - L"COU", - L"TÊTE", - L"TORSE", - L"JAMBES", - L"Donner informations à la Reine ?", - L"Acquisition de l'ID digitale", - L"ID digitale refusée. Arme désactivée.", - L"Cible acquise", - L"Chemin bloqué", - L"Dépôt/Retrait", //Help text over the $ button on the Single Merc Panel - L"Personne n'a besoin de premiers soins.", - L"Enra.", // Short form of JAMMED, for small inv slots - L"Impossible d'aller ici.", // used ( now ) for when we click on a cliff - L"Chemin bloqué. Voulez-vous changer de place avec cette personne ?", - L"La personne refuse de bouger.", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Êtes-vous d'accord pour payer %s ?", - L"Acceptez-vous le traitement médical gratuit ?", - L"Voulez-vous épouser %s ?", //Daryl - L"Trousseau de clés", - L"Vous ne pouvez pas faire ça avec ce personnage.", - L"Épargner %s ?", //Krott - L"Hors de portée", - L"Mineur", - L"Un véhicule ne peut rouler qu'entre des secteurs", - L"Impossible d'apposer des bandages maintenant", - L"Chemin bloqué pour %s", - L"Vos mercenaires capturés par l'armée de %s sont emprisonnés ici !", //Deidranna - L"Verrou touché", - L"Verrou détruit", - L"Quelqu'un d'autre veut essayer sur cette porte.", - L"État : %d/%d\nCarburant : %d/%d", - L"%s ne peut pas voir %s.", // Cannot see person trying to talk to - L"Accessoire retiré", - L"Ne peut pas gagner un autre véhicule car vous en avez déjà 2", - - // added by Flugente for defusing/setting up trap networks - L"Choisir la fréquence de la bombe (1-4) ou désamorçage (A-D) :", - L"Régler la fréquence de désamorçage :", - L"Régler la fréquence de détonation (1-4) et désamorçage (A-D) :", - L"Régler le nombre de tours avant l'explosion (1-4) et désamorçage (A-D) :", - L"Régler l'ordre des fils (1-4) et du réseau (A-D) :", - - // added by Flugente to display food status - L"Santé : %d/%d\nÉnergie : %d/%d\nMoral : %s\nSoif : %d%s\nFaim : %d%s", - - // added by Flugente: selection of a function to call in tactical - L"Que voulez-vous faire ?", - L"Remplir les gourdes", - L"Nettoyer votre arme", - L"Nettoyer les armes", - L"Retirer les habits", - L"En faire sa tenue", - L"Inspecter la milice", - L"Rééquiper milice", - L"Tester déguisement", - L"Inutilisé", - - // added by Flugente: decide what to do with the corpses - L"Que voulez-vous faire avec ce corps ?", - L"Couper la tête", - L"Dépecer", - L"Voler les habits", - L"Porter le corps", - - // Flugente: weapon cleaning - L"%s a nettoyé %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", // TODO.Translate - L"Field interrogation", - L"Où voulez-vous envoyer les %d prisonniers ?", - L"Les relâcher", - L"Voulez-vous proposer ?", - L"Leur reddition", - L"Votre reddition", - L"Distract", // TODO.Translate - L"Parler", - L"Recruit Turncoat", // TODO: translate - - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Désamorcer le piège", - L"Vérifier le piège", - L"Enlever le drapeau bleu", - L"Faire exploser !", - L"Activer fil piège", - L"Désactiver fil piège", - L"Montrer fil piège", - L"Pas de détonateur ou détonateur à distance trouvé !", - L"Cet explosif est déjà armé !", - L"Sans danger", - L"Quasiment sans danger", - L"Risqué", - L"Dangereux", - L"Danger élevé !", - - L"Masque", - L"LVN", - L"Objet", // TODO.Translate. A voir définition mot(to see finished, definition of word) - - L"Cette option fonctionne uniquement avec nouveau le système d'inventaire", - L"Aucun objet dans votre main principale", - L"Nulle part où placer l'objet dans la main principale", - L"Aucun objet défini pour cet emplacement", - L"Aucune main libre pour un nouvel objet", - L"Objet non trouvé", - L"Vous ne pouvez pas prendre d'objet avec la main principale", - - L"Attempting to bandage travelling mercs...", //TODO.Translate - - L"Improve gear", - L"%s changed %s for superior version", - L"%s picked up %s", // TODO.Translate - - L"%s has stopped chatting with %s", // TODO.Translate -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"Si vous cochez ce bouton, le secteur adjacent sera immédiatement chargé.", - L"Si vous cochez ce bouton, vous arriverez directement dans l'écran de carte\nle temps que vos mercenaires arrivent.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"Vous ne pouvez laisser vos mercenaires ici.\nVous devez d'abord nettoyer ce secteur.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"Faites sortir vos derniers mercenaires du secteur\npour charger le secteur adjacent.", - L"Faites sortir vos derniers mercenaires du secteur\npour aller dans l'écran de carte le temps que vos mercenaires fassent le voyage.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s doit être escorté(e) par vos mercenaires et ne peut quitter ce secteur tout(e) seul(e).", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s escorte %s, il ne peut quitter ce secteur seul.", //male singular - L"%s escorte %s, elle ne peut quitter ce secteur seule.", //female singular - L"%s escorte plusieurs personnages, il ne peut quitter ce secteur seul.", //male plural - L"%s escorte plusieurs personnages, elle ne peut quitter ce secteur seule.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"Tous vos mercenaires doivent être dans les environs\npour que l'escouade avance.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"Si vous cochez ce bouton, %s voyagera seul et sera\nautomatiquement assigné à une nouvelle escouade.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"Si vous cochez ce bouton, votre escouade\nquittera le secteur.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s est escorté par vos mercenaires et ne peut quitter ce secteur seul. Vos mercenaires doivent être à proximité.", -}; - - - -STR16 pRepairStrings[] = -{ - L"Objets", // tell merc to repair items in inventory - L"Site SAM", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Annuler", // cancel this menu - L"Robot", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"perd", // the merc has lost a statistic - L"gagne", // the merc has gained a statistic - L"point en", // singular - L"points en", // plural - L"niveau d'", // singular - L"niveaux d'", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"santé.", - L"agilité.", - L"dextérité.", - L"sagesse.", - L"compétence médicale.", - L"compétence en explosifs.", - L"compétence mécanique.", - L"tir", - L"expérience.", - L"force.", - L"commandement.", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"Distance totale : ", // total distance for helicopter to travel - L" Aller : ", // distance to travel to destination - L" Retour : ", // distance to return from destination to airport - L"Coût : ", // total cost of trip by helicopter - L"HPA : ", // ETA is an acronym for "estimated time of arrival" - L"L'hélicoptère n'a plus de carburant et doit se poser en terrain ennemi !", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Passagers : ", - L"Sélectionner Skyrider ou l'aire d'atterrissage ?", - L"Skyrider", - L"Arrivée", - L"L'hélicoptère est trop endommagé et doit atterrir en territoire ennemi !", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"L'hélicoptère va retourner directement à sa base, voulez-vous faire descendre les passagers ?", - L"Carburant restant :", - L"Ravitaillement :", -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Voulez-vous que %s commence les réparations ? Ça vous coûtera %d $ et l'hélicoptère ne sera pas disponible avant %d heure(s).", - L"L'hélicoptère est actuellement démonté. Attendez jusqu'à ce que les réparations soient terminées.", - L"Les réparations sont terminées. L'hélicoptère est à nouveau disponible.", - L"L'hélicoptère est complètement ravitaillé.", - - L"Helicopter has exceeded maximum range!", // TODO.Translate -}; - -STR16 sMapLevelString[] = -{ - L"Niveau souterrain :", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"Loyauté", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"Impossible de donner des ordres.", -}; - -STR16 gsTimeStrings[] = -{ - L"h", // hours abbreviation - L"m", // minutes abbreviation - L"s", // seconds abbreviation - L"j", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"0", - L"Hôpital", - L"Usine", - L"Prison", - L"Militaire", - L"Aéroport", - L"Champ de tir", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"Inventaire", - L"Quitter", - L"Repair", // TODO.Translate - L"Factories", // TODO.Translate -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"Taille ", // 0 // size of the town in sectors - L"", // blank line, required - L"Contrôle ", // how much of town is controlled - L"Aucune", // none of this town - L"Mine associée ", // mine associated with this town - L"Loyauté ", // 5 // the loyalty level of this town - L"Forces entraînées ", // the forces in the town trained by the player - L"", - L"Principale installation ", // main facilities in this town - L"Niveau ", // the training level of civilians in this town - L"Formation ", // 10 // state of civilian training in town - L"Milice ", // the state of the trained civilians in the town - - // Flugente: prisoner texts // TODO.Translate - L"Prisonnier ", - L"%d (capacity %d)", - L"%d Admins", - L"%d Regulars", - L"%d Elites", - L"%d Officers", - L"%d Generals", - L"%d Civilians", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"Mine", // 0 - L"Argent", - L"Or", - L"Production quotidienne", - L"Production estimée", - L"Abandonnée", // 5 - L"Fermée", - L"Épuisée", - L"Production", - L"État", - L"Productivité", - L"Ressource", // 10 - L"Contrôle de la ville", - L"Loyauté de la ville", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"Forces ennemies ", - L"Secteur ", - L"Nombre d'objets ", - L"Inconnu", - - L"Contrôlé ", - L"Oui", - L"Non", - L"Status/Software status:", // TODO.Translate - - L"Additional Intel", // TODO:Translate -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s n'est pas assez près.", //Merc is in sector with item but not close enough - L"Sélection impossible.", //MARK CARTER - L"%s n'est pas dans le bon secteur.", - L"En combat, vous devez prendre les objets vous-même.", - L"En combat, vous devez abandonner les objets vous-même.", - L"%s n'est pas dans le bon secteur.", - L"Pendant le combat, vous ne pouvez pas recharger avec une caisse de munitions.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Lieu", // sector these items are in - L"Objets", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"Cliquez sur la colonne assignation pour affecter un mercenaire à une nouvelle tâche", - L"Cliquez sur la colonne destination pour ordonner à un mercenaire de se rendre dans un secteur", - L"Utilisez la compression du temps pour que le voyage du mercenaire vous paraisse moins long.", - L"Cliquez sur un secteur pour le sélectionner. Cliquez à nouveau pour donner un ordre de mouvement à un mercenaire ou effectuez un clic droit pour obtenir des informations sur le secteur.", - L"Appuyez sur \"H\" pour afficher l'aide en ligne.", - L"Test Texte", - L"Test Texte", - L"Test Texte", - L"Test Texte", - L"Cet écran ne vous est d'aucune utilité tant que vous n'êtes pas arrivé à Arulco. Une fois votre équipe constituée, cliquez sur le bouton de compression du temps en bas à droite. Le temps vous paraîtra moins long...", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"Déplacement", // title for movement box - L"Route", // done with movement menu, start plotting movement - L"Annuler", // cancel this menu - L"Autre", // title for group of mercs not on squads nor in vehicles - L"Select all", // Select all squads TODO: Translate -}; - - -STR16 pUpdateMercStrings[] = -{ - L"Oups :", // an error has occured - L"Expiration du contrat :", // this pop up came up due to a merc contract ending - L"Tâches accomplies :", // this pop up....due to more than one merc finishing assignments - L"Mercenaires disponibles :", // this pop up ....due to more than one merc waking up and returing to work - L"Mercenaires au repos :", // this pop up ....due to more than one merc being tired and going to sleep - L"Contrats arrivant à échéance :", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Villes (|W)", - L"Mines (|M)", - L"Escouades & Ennemis (|T)", - L"Espace aérien (|A)", - L"Objets (|I)", - L"Milice & Ennemis (|Z)", - L"Show |Disease Data", // TODO.Translate - L"Show Weathe|r", - L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Suivant (|.)", // next page - L"Précédent (|,)", // previous page - L"Quitter l'inventaire du secteur (|E|S|C)", // exit sector inventory - - L"Zoom inventaire", // HEAROCK HAM 5: Inventory Zoom Button - L"Empiler les mêmes objets", // HEADROCK HAM 5: Stack and Merge - L"|C|l|i|c |G|. : Trier munitions par caisse\n|C|l|i|c |D|. : Trier munitions par boîte", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|C|l|i|c |G|. : Ôter tous les accessoires des objets\n|C|l|i|c |D|. : empty LBE in sector", // HEADROCK HAM 5: Separate Attachments - L"Décharger toutes les armes", //HEADROCK HAM 5: Eject Ammo - L"|C|l|i|c |G|. : Voir tous les objets\n|C|l|i|c |D|. : Cacher tous les objets", // HEADROCK HAM 5: Filter Button - L"|C|l|i|c |G|. : Avec/sans armes\n|C|l|i|c |D|. : Voir que les armes", // HEADROCK HAM 5: Filter Button - L"|C|l|i|c |G|. : Avec/sans munitions\n|C|l|i|c |D|. : Voir que les munitions", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|C|l|i|c |G|. : Avec/sans explosifs\n|C|l|i|c |D|. : Voir que les explosifs", // HEADROCK HAM 5: Filter Button - L"|C|l|i|c |G|. : Avec/sans armes blanches\n|C|l|i|c |D|. : Voir que les armes blanches", // HEADROCK HAM 5: Filter Button - L"|C|l|i|c |G|. : Avec/sans protections\n|C|l|i|c |D|. : Voir que les protections", // HEADROCK HAM 5: Filter Button - L"|C|l|i|c |G|. : Avec/sans LBE\n|C|l|i|c |D|. : Voir que les LBE", // HEADROCK HAM 5: Filter Button - L"|C|l|i|c |G|. : Avec/sans kits\n|C|l|i|c |D|. : Voir que les kits", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|C|l|i|c |G|. : Avec/sans objets divers\n|C|l|i|c |D|. : Voir que les objets divers", // HEADROCK HAM 5: Filter Button - L"Pour afficher ou non les objets déplacés.", // Flugente: move item display - L"Save Gear Template", // TODO.Translate - L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"PC Portable (|L)", - L"Tactique (|E|C|H|A|P)", - L"Options (|O)", - L"Compression du temps (|+)", // time compress more - L"Compression du temps (|-)", // time compress less - L"Message précédent (|H|A|U|T)\nPage précédente (|P|g|U|p)", // previous message in scrollable list - L"Message suivant (|B|A|S)\nPage suivante (|P|g|D|n)", // next message in the scrollable list - L"Arrêter/Reprendre (|E|S|P|A|C|E)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Solde actuel", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s est mort(e).", -}; - - -STR16 pDayStrings[] = -{ - L"Jour", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; - -/* -{ - L"Enrico", - L"Psych Pro Inc", - L"Help Desk", - L"Psych Pro Inc", - L"Speck", - L"R.I.S.", //5 - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", //10 - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", //15 - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", //20 - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", //25 - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", //30 - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephan", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"M.I.S. Assurance", - L"Bobby Ray", - L"Kingpin", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"Précédent", - L"Suivant", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"Nouveaux messages...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"Effacer message ?", - L"Effacer message NON CONSULTÉ ?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"De :", - L"Sujet :", - L"Date :", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"Boîte mail", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Comptable Plus", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Crédit :", // credit (subtract from) to player's account - L"Débit :", // debit (add to) to player's account - L"Revenus (hier) :", - L"Dépôts (hier) :", - L"Dépenses (hier) :", - L"Solde (fin de journée) :", - L"Revenus (aujourd'hui) :", - L"Dépôts (aujourd'hui) :", - L"Dépenses (aujourd'hui) :", - L"Solde actuel :", - L"Revenus (prévision) :", - L"Solde (prévision) :", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"Jour", // the day column - L"Crédit", // the credits column (to ADD money to your account) - L"Débit", // the debits column (to SUBTRACT money from your account) - L"Transaction", // transaction type - see TransactionText below - L"Solde", // balance at this point in time - L"Page", // page number - L"Jour(s)", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"Intérêts cumulés", // interest the player has accumulated so far - L"Dépôt anonyme", - L"Commission", - L"Engagé", // Merc was hired - L"Achats Bobby Ray", // Bobby Ray is the name of an arms dealer - L"Règlement MERC", - L"Acompte médical pour %s", // medical deposit for merc - L"Analyse IMP", // IMP is the acronym for International Mercenary Profiling - L"Assurance pour %s", - L"Réduction d'assurance pour %s", - L"Extension d'assurance pour %s", // johnny contract extended - L"Annulation d'assurance pour %s", - L"Indemnisation pour %s", // insurance claim for merc - L"1 jour", // merc's contract extended for a day - L"1 semaine", // merc's contract extended for a week - L"2 semaines", // ... for 2 weeks - L"Revenus des mines", - L"", //String nuked - L"Achat de fleurs", - L"Remboursement médical pour %s", - L"Remb. médical partiel pour %s", - L"Pas de remb. médical pour %s", - L"Paiement à %s", // %s is the name of the npc being paid - L"Transfert de fonds pour %s", // transfer funds to a merc - L"Transfert de fonds de %s", // transfer funds from a merc - L"Coût milice de %s", // initial cost to equip a town's militia - L"Achats à %s.", //is used for the Shop keeper interface. The dealers name will be appended to the en d of the string. - L"Montant déposé par %s.", - L"Matériel vendu à la population", - L"Infrastucture utilisée", // HEADROCK HAM 3.6 - L"Entretien de la milice", // HEADROCK HAM 3.6 - L"Argent des prisonniers libérés", // Flugente: prisoner system - L"WHO data subscription", // Flugente: disease TODO.Translate - L"Payment to Kerberus", // Flugente: PMC - L"SAM site repair", // Flugente: SAM repair // TODO.Translate - L"Trained workers", // Flugente: train workers - L"Drill militia in %s", // Flugente: drill militia // TODO.Translate - L"Mini event", // rftr: mini events // TODO: translate - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Assurance pour", // insurance for a merc - L"Ext. contrat de %s (1 jour).", // entend mercs contract by a day - L"Ext. contrat de %s (1 semaine).", - L"Ext. contrat de %s (2 semaines).", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"Skyrider a reçu %d $", // skyrider was paid an amount of money - L"Skyrider attend toujours ses %d $", // skyrider is still owed an amount of money - L"Skyrider a fait le plein", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider est prêt à redécoller.", // Skyrider was grounded but has been freed - L"Skyrider n'a pas de passager. Si vous voulez envoyer des mercenaires dans un autre secteur, n'oubliez pas de les assigner à l'hélicoptère.", -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"Superbe", - L"Bon", - L"Stable", - L"Bas", - L"Paniqué", - L"Mauvais", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"L'équipement de %s est maintenant disponible à Omerta (A9).", - L"L'équipement de %s est maintenant disponible à Drassen (B13).", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"Santé", - L"Énergie", - L"Moral", - L"État", // the condition of the current vehicle (its "Santé") - L"Carburant", // the fuel level of the current vehicle (its "energy") - L"Poison", - L"Soif", // drink level - L"Faim", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Mercenaire précédent (|G|a|u|c|h|e)", // previous merc in the list - L"Mercenaire suivant (|D|r|o|i|t|e)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"HPA :", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"Vous ne le reverrez jamais. Vous êtes sûr de vous ?", // do you want to continue and lose the item forever - L"Cet objet a l'air VRAIMENT important. Vous êtes bien sûr (mais alors BIEN SÛR) de vouloir l'abandonner ?", // does the user REALLY want to trash this item -}; - - -STR16 pMapErrorString[] = -{ - L"L'escouade ne peut se déplacer, si l'un de ses membres se repose.", - -//1-5 - L"Déplacez d'abord votre escouade.", - L"Des ordres de mouvement ? C'est un secteur hostile !", - L"Les mercenaires doivent d'abord être assignés à une escouade ou un véhicule.", - L"Vous n'avez plus aucun membre dans votre escouade.", // you have non members, can't do anything - L"Le mercenaire ne peut obéir.", // merc can't comply with your order -//6-10 - L"doit être escorté. Mettez-le dans une escouade.", // merc can't move unescorted .. for a male - L"doit être escortée. Mettez-la dans une escouade.", // for a female - L"Ce mercenaire n'est pas encore arrivé à %s !", - L"Il faudrait d'abord revoir les termes du contrat...", - L"", -//11-15 - L"Des ordres de mouvement ? Vous êtes en plein combat !", - L"Vous êtes tombé dans une embuscade de chats sauvages dans le secteur %s !", - L"Vous venez d'entrer dans le repaire des chats sauvages (secteur %s) !", - L"", - L"Le site SAM en %s est sous contrôle ennemi.", -//16-20 - L"La mine en %s est sous contrôle ennemi. Votre revenu journalier est réduit à %s.", - L"L'ennemi vient de prendre le contrôle du secteur %s.", - L"L'un au moins de vos mercenaires ne peut effectuer cette tâche.", - L"%s ne peut rejoindre %s (plein).", - L"%s ne peut rejoindre %s (éloignement).", -//21-25 - L"La mine en %s a été reprise par les forces de Deidranna !", - L"Les forces de Deidranna viennent d'envahir le site SAM en %s", - L"Les forces de Deidranna viennent d'envahir %s", - L"Les forces de Deidranna ont été repérées en %s.", - L"Les forces de Deidranna viennent de prendre %s.", -//26-30 - L"L'un au moins de vos mercenaires n'est pas fatigué.", - L"L'un au moins de vos mercenaires ne peut être réveillé.", - L"La milice n'apparaît sur l'écran qu'une fois son entraînement achevé.", - L"%s ne peut recevoir d'ordre de mouvement pour le moment.", - L"Les miliciens qui ne se trouvent pas dans les limites d'une ville ne peuvent être déplacés.", -//31-35 - L"Vous ne pouvez pas entraîner de milice en %s.", - L"Un véhicule ne peut se déplacer, s'il est vide !", - L"L'état de santé de %s ne lui permet pas de voyager !", - L"Vous devez d'abord quitter le musée !", - L"%s est mort(e) !", -//36-40 - L"%s ne peut passer à %s (en mouvement)", - L"%s ne peut pas pénétrer dans le véhicule de cette façon", - L"%s ne peut rejoindre %s", - L"Vous devez d'abord engager des mercenaires !", - L"Ce véhicule ne peut circuler que sur les routes !", -//41-45 - L"Vous ne pouvez réaffecter des mercenaires qui sont en déplacement", - L"Plus d'essence !", - L"%s est trop fatigué(e) pour entreprendre ce voyage.", - L"Personne n'est capable de conduire ce véhicule.", - L"L'un au moins des membres de cette escouade ne peut se déplacer.", -//46-50 - L"L'un au moins des AUTRES mercenaires ne peut se déplacer.", - L"Le véhicule est trop endommagé !", - L"Deux mercenaires au plus peuvent être assignés à l'entraînement de la milice dans chaque secteur.", - L"Le robot ne peut se déplacer sans son contrôleur. Mettez-les ensemble dans la même escouade.", - L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate -// 51-55 - L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Cliquez à nouveau sur votre destination pour la confirmer ou cliquez sur d'autres secteurs pour définir de nouvelles étapes.", - L"Route confirmée.", - L"Destination inchangée.", - L"Route annulée.", - L"Route raccourcie.", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Cliquez sur la nouvelle destination de vos mercenaires.", - L"OK. Les mercenaires arriveront en %s", - L"Les mercenaires ne peuvent être déployés ici, l'espace aérien n'est pas sécurisé !", - L"Annulé. Secteur d'arrivée inchangé.", - L"L'espace aérien en %s n'est plus sûr ! Le secteur d'arrivée est maintenant %s.", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Inventaire (|E|N|T|R|É|E)", - L"Jeter objet", - L"Quitter Inventaire (|E|N|T|R|É|E)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"%s doit-il abandonner son paquetage sur place (%s) ou à (%s) avant de quitter ?", - L"%s est sur le point de partir et laissera son paquetage en %s.", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"%s doit-elle abandonner son paquetage sur place (%s) ou à (%s) avant de quitter ?", - L"%s est sur le point de partir et laissera son paquetage en %s.", -}; - - -STR16 pMercContractOverStrings[] = -{ - L"a rempli son contrat, il est rentré chez lui.", // merc's contract is over and has departed - L"a rempli son contrat, elle est rentrée chez elle.", // merc's contract is over and has departed - L"est parti, son contrat ayant été annulé.", // merc's contract has been terminated - L"est partie, son contrat ayant été annulé.", // merc's contract has been terminated - L"Vous devez trop d'argent à la MERC, %s quitte Arulco.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages - -// WDS: Allow flexible numbers of IMPs of each sex -// note: I only updated the English text to remove "three" below -STR16 pImpPopUpStrings[] = -{ - L"Code incorrect", - L"Vous allez établir un nouveau profil. Êtes-vous sûr de vouloir recommencer ?", - L"Veuillez entrer votre nom et votre sexe.", - L"Vous n'avez pas les moyens de vous offrir une analyse de profil.", - L"Option inaccessible pour le moment.", - L"Pour que cette analyse soit efficace, il doit vous rester au moins une place dans votre escouade.", - L"Profil déjà établi.", - L"Impossible de charger le profil.", - L"Vous avez déjà atteint le nombre maximum d'IMP.", - L"Vous avez déjà trois IMP du même sexe dans l'escouade.", - L"Vous n'avez pas les moyens.", // 10 - L"Le nouvel IMP a rejoint votre escouade.", - L"Vous avez déjà sélectionné le maximal de traits de caractères.", - L"No voicesets found.", // TODO.Translate -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"Nous", // about the IMP site - L"COMMENCER", // begin profiling - L"Personnalité", // personality section - L"Caractéristiques", // personal stats/attributes section - L"Apparence", // changed from portrait - L"Voix %d", // the voice selection - L"OK", // done profiling - L"Recommencer", // start over profiling - L"Oui, la réponse en surbrillance me convient.", - L"Oui", - L"Non", - L"Terminé", // finished answering questions - L"Préc.", // previous question..abbreviated form - L"Suiv.", // next question - L"OUI, JE SUIS SÛR.", // oui, I am certain - L"NON, JE VEUX RECOMMENCER.", // non, I want to start over the profiling process - L"OUI", - L"NON", - L"Retour", // back one page - L"Annuler", // cancel selection - L"Oui, je suis sûr.", - L"Non, je ne suis pas sûr.", - L"Registre", // the IMP site registry..when name and gender is selected - L"Analyse", // analyzing your profile results - L"OK", - L"Caractère", // Change from "Voice" - L"Aucune", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"Vos traits de caractères étant choisis, il est temps de choisir vos compétences.", - L"Pour compléter le processus, choisissez vos attributs.", - L"Pour commencer votre profil réel, choisissez un portrait, une voix et vos couleurs", - L"Maintenant que vous avez complété votre apparence, proccédons à l'analyse de votre personnage.", -}; - -STR16 pFilesTitle[] = -{ - L"Fichiers", -}; - -STR16 pFilesSenderList[] = -{ -#ifdef JA2UB -L"Rapport Tracona", // the recon report sent to the player. Recon is an abbreviation for reconissance -#else -L"Rapport Arulco", // the recon report sent to the player. Recon is an abbreviation for reconissance -#endif - L"Interception #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"Interception #2", // second intercept file - L"Interception #3", // third intercept file - L"Interception #4", // fourth intercept file - L"Interception #5", // fifth intercept file - L"Interception #6", // sixth intercept file -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"Historique", -}; - -STR16 pHistoryHeaders[] = -{ - L"Jour", // the day the history event occurred - L"Page", // the current page in the history report we are in - L"Jour", // the days the history report occurs over - L"Lieu", // location (in sector) the event occurred - L"Événement", // the event label -}; - -/* -// Externalized to "TableData\History.xml" -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"%s engagé(e) sur le site AIM.", // merc was hired from the aim site - L"%s engagé(e) sur le site MERC.", // merc was hired from the aim site - L"%s est mort(e).", // merc was killed - L"Versements MERC.", // paid outstanding bills at MERC - L"Ordre de mission de Chivaldori Enrico accepté", - //6-10 - L"IMP : Profil fait", - L"Souscription d'un contrat d'assurance pour %s.", // insurance contract purchased - L"Annulation du contrat d'assurance de %s.", // insurance contract canceled - L"Indemnité pour %s.", // insurance claim payout for merc - L"Extension du contrat de %s (1 jour).", // Extented "mercs name"'s for a day - //11-15 - L"Extension du contrat de %s (1 semaine).", // Extented "mercs name"'s for a week - L"Extension du contrat de %s (2 semaines).", // Extented "mercs name"'s 2 weeks - L"%s a été renvoyé(e).", // "merc's name" was dismissed. - L"%s a démissionné(e).", // "merc's name" quit. - L"quête commencée.", // a particular quest started - //16-20 - L"quête achevée.", - L"Entretien avec le chef des mineurs de %s", // talked to head miner of town - L"Libération de %s", - L"Activation du mode triche", - L"Le ravitaillement devrait arriver demain à Omerta", - //21-25 - L"%s a quitté l'escouade pour épouser Hick Daryl", - L"Expiration du contrat de %s.", - L"Recrutement de %s.", - L"Plainte d'Enrico pour manque de résultats", - L"Victoire", - //26-30 - L"La mine de %s commence à s'épuiser", - L"La mine de %s est épuisée", - L"La mine de %s a été fermée", - L"La mine de %s a été réouverte", - L"Une prison du nom de Tixa a été découverte.", - //31-35 - L"Rumeurs sur une usine d'armes secrètes : Orta.", - L"Les chercheurs d'Orta vous donnent des fusils à roquettes.", - L"Deidranna fait des expériences sur les cadavres.", - L"Frank parle de combats organisés à San Mona.", - L"Un témoin a aperçu quelque chose dans les mines.", - //36-40 - L"Rencontre avec Devin (vendeur d'explosifs).", - L"Rencontre avec Mike, le fameux ex-mercenaire de l'AIM !", - L"Rencontre avec Tony (vendeur d'armes).", - L"Fusil à roquettes récupéré auprès du sergent Krott.", - L"Acte de propriété du magasin d'Angel donné à Kyle.", - //41-45 - L"Foulab propose de construire un robot.", - L"Gabby fait des décoctions rendant invisible aux créatures.", - L"Keith est hors-jeu.", - L"Howard fournit du cyanure à la Reine Deidranna.", - L"Rencontre avec Keith (vendeur à Cambria).", - //46-50 - L"Rencontre avec Howard (pharmacien à Balime).", - L"Rencontre avec Perko (réparateur en tous genres).", - L"Rencontre avec Sam de Balime (vendeur de matériel).", - L"Franz vend du matériel électronique.", - L"Arnold tient un magasin de réparations à Grumm.", - //51-55 - L"Fredo répare le matériel électronique à Grumm.", - L"Don provenant d'un homme influent de Balime.", - L"Rencontre avec Jake, vendeur de pièces détachées.", - L"Clé électronique reçue.", - L"Corruption de Walter pour ouvrir l'accès aux sous-sols.", - //56-60 - L"Dave refait gratuitement le plein, s'il a du carburant.", - L"Pot-de-vin donné à Pablo.", - L"Caïd cache un trésor dans la mine de San Mona.", - L"Victoire de %s dans le combat extrème", - L"Défaite de %s dans le combat extrème", - //61-65 - L"Disqualification de %s dans le combat extrème", - L"Importante somme découverte dans la mine abandonnée.", - L"Rencontre avec un tueur engagé par Caïd.", - L"Perte du secteur", //ENEMY_INVASION_CODE - L"Secteur défendu", - //66-70 - L"Défaite", //ENEMY_ENCOUNTER_CODE - L"Embuscade", //ENEMY_AMBUSH_CODE - L"Embuscade ennemie déjouée", - L"Échec de l'attaque", //ENTERING_ENEMY_SECTOR_CODE - L"Réussite de l'attaque !", - //71-75 - L"Attaque de créatures", //CREATURE_ATTACK_CODE - L"Ambuscade de chats sauvages", //BLOODCAT_AMBUSH_CODE - L"Élimination des chats sauvages", - L"%s a été tué(e)", - L"Tête de terroriste donnée à Carmen", - //76-80 - L"Reste Slay", - L"%s a été tué(e)", - L"Rencontre avec Waldo, mécanicien aéronautique.", - L"Réparations de l'hélico ont débuté, temps estimé : %d h.", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"N/A", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"E-mail", - L"Favoris", - L"Finances", - L"Personnel", - L"Historique", - L"Fichiers", - L"Éteindre", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"AIM", - L"Bobby Ray", - L"IMP", - L"MERC", - L"Morgue", - L"Fleuriste", - L"Assurance", - L"Annuler", - L"Encyclopédie", - L"Briefing", - L"Comptes rendus", - L"MeLoDY", - L"WHO", - L"Kerberus", - L"Militia Overview", // TODO.Translate - L"R.I.S.", - L"Factories", // TODO.Translate -}; - -STR16 pBookmarkTitle[] = -{ - L"Favoris", - L"Faites un clic droit pour accéder plus tard à ce menu.", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"Téléchargement", - L"Chargement", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Prendre", // take money from merc - L"Donner", // give money to merc - L"Annuler", // cancel transaction - L"Effacer", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Transférer $ ", // transfer money to merc -- short form - L"Stats", // view stats of the merc - L"Inventaire", // view the inventory of the merc - L"Historique", -}; - -STR16 sATMText[ ]= -{ - L"Transférer les fonds ?", // transfer funds to merc? - L"Ok ?", // are we certain? - L"Entrer montant", // enter the amount you want to transfer to merc - L"Choix du type", // select the type of transfer to merc - L"Fonds insuffisants", // not enough money to transfer to merc - L"Le montant doit être un multiple de 10 $", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"Erreur", - L"Le serveur ne trouve pas l'entrée DNS.", - L"Vérifiez l'adresse URL et essayez à nouveau.", - L"OK", - L"Connexion à l'hôte.", -}; - - -STR16 pPersonnelString[] = -{ - L"Merc. :", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"AIM", - L"Membres AIM", - L"Galerie AIM", // a mug shot is another name for a portrait - L"Tri AIM", - L"AIM", - L"Anciens AIM", - L"Règlement AIM", - L"Historique AIM", - L"Liens AIM", - L"MERC", - L"Comptes MERC", - L"Enregistrement MERC", - L"Index MERC", - L"Bobby Ray", - L"Bobby Ray : Armes", - L"Bobby Ray : Munitions", - L"Bobby Ray : Protections", - L"Bobby Ray : Divers", //misc is an abbreviation for miscellaneous - L"Bobby Ray : Occasions", - L"Bobby Ray : Commande", - L"IMP", - L"IMP", - L"Service des Fleuristes Associés", - L"Service des Fleuristes Associés : Exposition", - L"Service des Fleuristes Associés : Bon de commande", - L"Service des Fleuristes Associés : Cartes", - L"Malleus, Incus & Stapes Courtiers", - L"Information", - L"Contrat", - L"Commentaires", - L"Morgue McGillicutty", - L"", - L"URL introuvable.", - L"%s, conseil de presse : Bilan du conflit", - L"%s, conseil de presse : Rapports", - L"%s, conseil de presse : Dernières nouvelles", - L"%s, conseil de presse : À propos de nous", - L"Mercs Love or Dislike You - About us", // TODO.Translate - L"Mercs Love or Dislike You - Analyze a team", - L"Mercs Love or Dislike You - Pairwise comparison", - L"Mercs Love or Dislike You - Personality", - L"WHO - About WHO", - L"WHO - Disease in Arulco", - L"WHO - Helpful Tips", - L"Kerberus - About Us", - L"Kerberus - Hire a Team", - L"Kerberus - Individual Contracts", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services - Information Requests", // TODO.Translate - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Factory Overview", // TODO.Translate - L"Bobby Ray : Dernières commandes", - L"Encyclopédie", - L"Encyclopédie : Données", - L"Salle de briefing", - L"Salle de briefing : Données", -}; - -STR16 pShowBookmarkString[] = -{ - L"Sir-Help", - L"Cliquez à nouveau pour accéder aux Favoris.", -}; - -STR16 pLaptopTitles[] = -{ - L"Boîte mail", - L"Fichiers", - L"Personnel", - L"Comptable Plus", - L"Historique", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"Mort en mission", - L"Parti(e)", - L"Autre", - L"Mariage", - L"Contrat terminé", - L"Quitter", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"Équipe actuelle", - L"Départs", - L"Coût quotidien :", - L"Coût maximum :", - L"Coût minimum :", - L"Morts en mission :", - L"Démissions :", - L"Autres :", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Minimum", - L"Moyenne", - L"Maximum", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"SAN", - L"AGI", - L"DEX", - L"FOR", - L"COM", - L"SAG", - L"NIV", - L"TIR", - L"TECH", - L"EXPL", - L"MÉD", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"Contrat", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"Continuer", - L"Stop", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"Vous avez été vaincu dans ce secteur !", - L"L'ennemi, sans aucune compassion, ne fait pas de quartier !", - L"Vos mercenaires inconscients ont été capturés !", - L"Vos mercenaires ont été faits prisonniers.", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"Précédent", - L"Suivant", - L"Accepter", - L"Annuler", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"Précédent", - L"Suivant", -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Autoriser", - L"Accueil", - L"Compte :", - L"Mercenaire", - L"Jours", - L"Taux", //5 - L"Montant", - L"Total :", - L"Désirez-vous autoriser le versement de %s ?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+gear)", // TODO.Translate -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Précédent", - L"Suivant", -}; - - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"Santé", - L"Agilité", - L"Dextérité", - L"Force", - L"Commandement", - L"Sagesse", - L"Niveau", - L"Tir", - L"Mécanique", - L"Explosifs", - L"Médecine", - - L"Précédent", - L"Engager", - L"Suivant", - L"Infos complémentaires", - L"Accueil", - L"Engagé(e)", - L"Salaire :", - L"Par jour", - L"Paquetage :", - L"Total :", - L"Décédé(e)", - - L"Vous ne pouvez engager plus de 18 mercenaires.", - L"Acheter paquetage ?", - L"Indisponible", - L"Payez sa solde", - L"Biographie", - L"Inventaire", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Ouvrir compte", - L"Annuler", - L"Vous ne possédez pas de compte. Désirez-vous en ouvrir un ?", -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Kline Speck T., fondateur", - L"Cliquez ici pour ouvrir un compte", - L"Cliquez ici pour voir votre compte", - L"Cliquez ici pour consulter les fichiers", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Le transfert a échoué. Aucun fonds disponible.", -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"Morgue McGillicutty : À votre écoute depuis 1983.", - L"McGillicutty Murray dit Pops, notre directeur bien aimé, est un ancien mercenaire de l'AIM. Sa spécialité : la mort des autres.", - L"Pops l'a côtoyée pendant si longtemps qu'il est un expert de la mort, à tous points de vue.", - L"La morgue McGillicutty vous offre un large éventail de services funéraires, depuis une écoute compréhensive jusqu'à la reconstitution des corps... dispersés.", - L"Laissez donc la morgue McGillicutty vous aider, pour que votre compagnon repose enfin en paix.", - - // Text for the various links available at the bottom of the page - L"ENVOYER FLEURS", - L"CERCUEILS & URNES", - L"CRÉMATION", - L"SERVICES FUNÉRAIRES", - L"NOTRE ÉTIQUETTE", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"Le concepteur de ce site s'est malheureusement absenté pour cause de décès familial. Il reviendra dès que possible pour rendre ce service encore plus efficace.", - L"Veuillez croire en nos sentiments les plus respectueux dans cette période qui doit vous être douloureuse.", -}; - -// Text for the florist Home page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Vitrine", - - //Address of United Florist - - L"\"Nous livrons partout dans le monde\"", - L"0-800-SENTMOI", - L"333 NoseGay Dr, Seedy City, CA USA 90210", - L"http://www.sentmoi.com", - - // detail of the florist page - - L"Rapides et efficaces !", - L"Livraison en 24 heures partout dans le monde (ou presque).", - L"Les prix les plus bas (ou presque) !", - L"Si vous trouvez moins cher, nous vous livrons gratuitement une douzaine de roses !", - L"Flore, Faune & Fleurs depuis 1981.", - L"Nos bombardiers (recyclés) vous livrent votre bouquet dans un rayon de 20 km (ou presque). N'importe quand... N'importe où !", - L"Nous répondons à tous vos besoins (ou presque) !", - L"Bruce, notre expert fleuriste-conseil, trouvera pour vous les plus belles fleurs et vous composera le plus beau bouquet que vous ayez vu !", - L"Et n'oubliez pas que si nous ne l'avons pas, nous pouvons le faire pousser... et vite !", -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"Retour", - L"Envoi", - L"Annuler", - L"Galerie", - - L"Nom du bouquet :", - L"Prix :", //5 - L"Référence :", - L"Date de livraison", - L"jour suivant", - L"dès que possible", - L"Lieu de livraison", //10 - L"Autres services", - L"Pot Pourri (10 $)", - L"Roses Noires (20 $)", - L"Nature Morte (10 $)", - L"Gâteau (si dispo)(10 $)", //15 - L"Carte personnelle :", - L"Veuillez écrire votre message en 75 caractères maximum...", - L"...ou utiliser l'une de nos", - - L"CARTES STANDARDS", - L"Informations",//20 - - //The text that goes beside the area where the user can enter their name - - L"Nom :", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"Préc.", //abbreviation for previous - L"Suiv.", //abbreviation for next - - L"Cliquez sur le bouquet que vous désirez commander.", - L"Note : les bouquets \"pot pourri\" et \"nature morte\" vous seront facturés 10 $ supplémentaires.", - - //text on the button - - L"Accueil", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"Faites votre choix", - L"Retour", -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"Commande", //Title of the page - L"Qté", // The number of items ordered - L"Poids (%s)", // The weight of the item - L"Description", // The name of the item - L"Prix unitaire", // the item's weight - L"Total", //5 // The total price of all of items of the same type - L"Sous-total", // The sub total of all the item totals added - L"Transport", // S&H is an acronym for Shipping and Handling - L"Total", // The grand total of all item totals + the shipping and handling - L"Lieu de livraison", - L"Type d'envoi", //10 // See below - L"Coût (par %s.)", // The cost to ship the items - L"Du jour au lendemain", // Gets deliverd the next day - L"2 c'est mieux qu'un", // Gets delivered in 2 days - L"Jamais 2 sans 3", // Gets delivered in 3 days - L"Effacer commande",//15 // Clears the order page - L"Confirmer commande", // Accept the order - L"Retour", // text on the button that returns to the previous page - L"Accueil", // Text on the button that returns to the home page - L"* Matériel d'occasion", // Disclaimer stating that the item is used - L"Vous n'avez pas les moyens.", //20 // A popup message that to warn of not enough money - L"", // Gets displayed when there is non valid city selected - L"Êtes-vous sûr de vouloir envoyer cette commande à %s ?", // A popup that asks if the city selected is the correct one - L"Poids total **", // Displays the weight of the package - L"** Pds Min.", // Disclaimer states that there is a minimum weight for the package - L"Envois", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"A/Poing", - L"PM", - L"Mitrail.", - L"Fusil", - L"Sniper", - L"F/Assaut", - L"FM", - L"F/Pompe", - L"A/Lourde", - - // Ammo - L"A/Poing", - L"PM", - L"Mitrail.", - L"Fusil", - L"Sniper", - L"F/Assaut", - L"FM", - L"F/Pompe", - - // Used - L"Arme", - L"Protection", - L"Mat. LBE", - L"Divers", - - // Armour - L"Casque", - L"Veste", - L"Pantalon", - L"Blindage", - - // Misc - L"A/blanche", - L"Arme/Jet", - L"Mêlée", - L"Grenade", - L"Explosif", - L"Médical", - L"Kit&Habit", - L"Mat. Face", - L"Mat. LBE", - L"Optique", // Madd: new BR filters - L"Pied&LAM", - L"Bouche", - L"Crosse", - L"Mag&Dét.", - L"Accessoire", - L"Divers", -}; - - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"Pour commander", // Title - // instructions on how to order - L"Cliquez sur les objets désirés. Cliquez à nouveau pour sélectionner plusieurs exemplaires d'un même objet. Effectuez un clic droit pour désélectionner un objet. Il ne vous reste plus qu'à passer commande.", - - //Text on the buttons to go the various links - - L" PRÉCÉDENT", // - L"Arme", //3 - L"Munition", //4 - L"Protection", //5 - L"Divers", //6 //misc is an abbreviation for miscellaneous - L"Occasion", //7 - L"SUIVANT", - L"COMMANDER", - L"Accueil", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"Votre escouade possède",//11 - L"arme(s) qui utilise(nt) ce type de munitions", //12 - - //The following lines provide information on the items - - L"Poids :", // Weight of all the items of the same type - L"Cal :", // the caliber of the gun - L"Chgr :", // number of rounds of ammo the Magazine can hold - L"Portée :", // The range of the gun - L"Dégâts :", // Damage of the weapon - L"CdT :", // Weapon's Rate Of Fire, acronym ROF - L"PA :", // Weapon's Action Points, acronym AP - L"Étourdis. :", // Weapon's Stun Damage - L"Prot. :", // Armour's Protection - L"Cam. :", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Prix :", // Cost of the item - L"Stock :", // The number of items still in the store's inventory - L"Quantité :", // The number of items on order - L"Endommagé", // If the item is damaged - L"Poids :", // the Weight of the item - L"Sous-total :", // The total cost of all items on order - L"* %% efficacité", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"Pas de chance ! Vous ne pouvez commander que " ,//First part - L" objets différents en une fois. Si vous désirez passer une commande plus importante, il vous faudra remplir un nouveau bon de commande.", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Nous sommes navrés, mais notre stock est vide. N'hésitez pas à revenir plus tard !", - - //A popup that tells the user that the store is temporarily sold out - - L"Nous sommes navrés, mais nous n'en avons plus en rayon.", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"Vous cherchez des armes et du matériel militaire ? Vous avez frappé à la bonne porte", - L"Un seul credo : force de frappe !", - L"Occasions et secondes mains", - - //Text for the various links to the sub pages - - L"Divers", - L"ARMES", - L"MUNITIONS", //5 - L"PROTECTIONS", - - //Details on the web site - - L"Si nous n'en vendons pas, c'est que ça n'existe pas !", - L"En construction", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"Membres AIM", // Title - // Title for the way to sort - L"Tri par :", - - // sort by... - - L"Prix", - L"Expérience", - L"Tir", - L"Mécanique", - L"Explosifs", - L"Médecine", - L"Santé", - L"Agilité", - L"Dextérité", - L"Force", - L"Commandement", - L"Sagesse", - L"Nom", - - //Text of the links to other AIM pages - - L"Afficher l'index de la galerie de portraits", - L"Consulter le fichier individuel", - L"Consulter la galerie des anciens de l'AIM", - - // text to display how the entries will be sorted - - L"Ascendant", - L"Descendant", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Précédent", - L"Accueil", - L"Index", - L"Suivant", - L"Je refuse", - L"J'accepte", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"Cliquez pour", - L"contacter le mercenaire.", - L"Clic droit pour", - L"afficher l'index.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Santé", - L"Agilité", - L"Dextérité", - L"Force", - L"Commandement", - L"Sagesse", - L"Niveau", - L"Tir", - L"Mécanique", - L"Explosifs", - L"Médecine", //10 - - // the contract expenses' area - - L"Tarif", - L"Contrat", - L"1 jour", - L"1 semaine", - L"2 semaines", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"Précédent", - L"Contacter", - L"Suivant", - - L"Info. complémentaires", // Title for the additional info for the merc's bio - L"Membres actifs", //20 // Title of the page - L"Matériel optionnel :", // Displays the optional gear cost - L"Paquetage", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's - L"Dépôt médical", // If the merc required a medical deposit, this is displayed - L"Kit 1", // Text on Starting Gear Selection Button 1 - L"Kit 2", // Text on Starting Gear Selection Button 2 - L"Kit 3", // Text on Starting Gear Selection Button 3 - L"Kit 4", // Text on Starting Gear Selection Button 4 - L"Kit 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"Contrat :", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"1 jour", - L"1 semaine", - L"2 semaines", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"Pas de paquetage", - L"Acheter paquetage", - - // Text on the Buttons - - L"TRANSFERT", // to actually hire the merc - L"Annuler", // go back to the previous menu - L"ENGAGER", // go to menu in which you can hire the merc - L"RACCROCHER", // stops talking with the merc - L"OK", - L"MESSAGE", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Conférence vidéo avec", - L"Connexion. . .", - - L"tout compris" // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"TRANSFERT ACCEPTÉ", // You hired the merc - L"TRANSFERT REFUSÉ", // Player doesn't have enough money, message 1 - L"FONDS INSUFFISANTS", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"En mission", - L"Veuillez laisser un message", - L"Décédé(e)", - - //If you try to hire more mercs than game can support - - L"Équipe de mercenaires déjà au complet.", - - L"Message pré-enregistré", - L"Message enregistré", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"Liens AIM", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"Historique AIM", //Title - - // Text on the buttons at the bottom of the page - - L"Précédent", - L"Accueil", - L"Anciens", - L"Suivant", -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Prix", - L"Expérience", - L"Tir", - L"Mécanique", - L"Explosifs", - L"Médecine", - L"Santé", - L"Agilité", - L"Dextérité", - L"Force", - L"Commandement", - L"Sagesse", - L"Nom", - - // The title of the page, the above text gets added at the end of this text - - L"Tri ascendant des membres de l'AIM par %s", - L"Tri descendant des membres de l'AIM par %s", - - // Instructions to the players on what to do - - L"Cliquez pour", - L"sélectionner le mercenaire", //10 - L"Clic droit pour", - L"les options de tri", - - // Gets displayed on top of the merc's portrait if they are... - - L"Absent(e)", - L"Décédé(e)", //14 - L"En mission", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"PAGE 1", - L"PAGE 2", - L"PAGE 3", - - L"Anciens", // Title of the page - - L"OK", // Stops displaying information on selected merc - L"Page suiv.", - -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"AIM et le logo A.I.M. sont des marques déposées dans la plupart des pays.", - L"N'espérez même pas nous copier !", - L"Copyright 2008-2009 A.I.M., Ltd. Tous droits réservés.", - - //Text for an advertisement that gets displayed on the AIM page - - L"Service des Fleuristes Associés", - L"\"Nous livrons partout dans le monde\"", //10 - L"Faites-le dans les règles de l'art", - L"... la première fois", - L"Si nous ne l'avons pas, c'est que vous n'en avez pas besoin.", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"Accueil", - L"Membres", - L"Anciens", - L"Règlement", - L"Historique", - L"Liens", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"MARCHANDISE EN STOCK", //Header for the merchandise available - L"PAGE", //The current store inventory page being displayed - L"COÛT TOTAL", //The total cost of the the items in the Dealer inventory area - L"VALEUR TOTALE", //The total value of items player wishes to sell - L"ÉVALUATION", //Button text for dealer to evaluate items the player wants to sell - L"TRANSACTION", //Button text which completes the deal. Makes the transaction. - L"OK", //Text for the button which will leave the shopkeeper interface. - L"COÛT RÉPARATION", //The amount the dealer will charge to repair the merc's goods - L"1 HEURE", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d HEURES", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"RÉPARÉ", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"Plus d'emplacements libres.", //Message box that tells the user there is non more room to put there stuff - L"%d MINUTES", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Objet lâché à terre.", - L"BUDGET", // TODO.Translate -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Prendre", // Take money from the player - L"Donner", // Give money to the player - L"Annuler", // Cancel the transfer - L"Effacer", // Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"Choix", // tells the user to select either to give or take from the merc - L"Montant", // Enter the amount to transfer - L"Transfert de fonds au mercenaire", // Giving money to the merc - L"Transfert de fonds du mercenaire", // Taking money from the merc - L"Fonds insuffisants", // Not enough money to transfer - L"Solde", // Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"Voulez-vous déduire %s de votre compte pour combler la différence ?", - L"Pas assez d'argent. Il vous manque %s", - L"Voulez-vous déduire %s de votre compte pour couvrir le coût ?", - L"Demander au vendeur de lancer la transaction", - L"Demander au vendeur de réparer les objets sélectionnés", - L"Terminer l'entretien", - L"Solde actuel", - - L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate - L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"Sauvegarder", - L"Charger", - L"Quitter", - L">>", - L"<<", - L"OK", - L"1.13 Features", - L"New in 1.13", - L"Options", - - //Text above the slider bars - L"Effets", - L"Dialogue", - L"Musique", - - //Confirmation pop when the user selects.. - L"Quitter la partie et revenir au menu principal ?", - - L"Activez le mode dialogue ou sous-titre.", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Enregistrer", - L"Charger partie", - L"Annuler", - L"Enregistrement", - L"Chargement", - - L"Enregistrement réussi", - L"ERREUR lors de la sauvegarde !", - L"Chargement réussi", - L"ERREUR lors du chargement !", - - L"La version de la sauvegarde est différente de celle du jeu. Désirez-vous continuer?", - L"Les fichiers de sauvegarde sont peut-être altérés. Voulez-vous les effacer?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"La version de la sauvegarde a changé. Désirez-vous continuer ?", -#else - L"Tentative de chargement d'une sauvegarde de version précédente. Voulez-vous effectuer une mise à jour ?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"La version de la sauvegarde a changé. Désirez-vous continuer?", -#else - L"Tentative de chargement d'une sauvegarde de version précédente. Voulez-vous effectuer une mise à jour?", -#endif - - L"Êtes-vous sûr de vouloir écraser la sauvegarde #%d ?", - L"Voulez-vous charger la sauvegarde #%d ?", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"Vous risquez de manquer d'espace. Il ne vous reste que %d Mo de libre alors que le jeu nécessite %d Mo d'espace libre.", - - L"Enregistrement", //When saving a game, a message box with this string appears on the screen - - L"Quelques armes", - L"Toutes armes", - L"Style réaliste", - L"Style SF", - - L"Difficulté", - L"Platinum Mode", //Placeholder English - - L"Qualité de Bobby Ray", - L"Bonne", - L"Meilleure", - L"Excellente", - L"Superbe", - - L"Le nouvel inventaire (NIV) ne peut se lancer en 640x480. Changez de résolution.", - L"Le nouvel inventaire (NIV) ne fonctionne pas depuis le dossier \"data\" original.", - - L"La taille de l'équipe de votre sauvegarde n'est pas supportée par la résolution actuelle de votre écran. Augmenter la résolution et ré-essayez.", - L"Stock de Bobby Ray", -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Niveau carte", - L"Vous n'avez pas de milice : vous devez entraîner les habitants de la ville.", - L"Revenu quotidien", - L"Assurance vie", - L"%s n'est pas fatigué(e).", - L"%s est en mouvement et ne peut dormir.", - L"%s est trop fatigué(e) pour obéir.", - L"%s conduit.", - L"L'escouade ne peut progresser, si l'un de ses membres se repose.", - - // stuff for contracts - L"Vous pouvez payer les honoraires de ce mercenaire, mais vous ne pouvez pas vous offrir son assurance.", - L"La prime d'assurance de %s coûte %s pour %d jour(s) supplémentaire(s). Voulez-vous la payer ?", - L"Inventaire du secteur", - L"Le mercenaire a un dépôt médical.", - - // other items - L"Docteurs", // people acting a field medics and bandaging wounded mercs - L"Patients", // people who are being bandaged by a medic - L"OK", // Continue on with the game after autobandage is complete - L"Stop", // Stop autobandaging of patients by medics now - L"Désolé. Cette option n'est pas disponible.", // informs player this option/button has been disabled in the demo - L"%s n'a pas de caisse à outils.", - L"%s n'a pas de trousse de soins.", - L"Il y a trop peu de volontaires pour l'entraînement.", - L"%s ne peut pas former plus de miliciens.", - L"Le mercenaire a un contrat déterminé.", - L"Ce mercenaire n'est pas assuré.", - L"Écran carte", // 24 - - // Flugente: disease texts describing what a map view does TODO.Translate - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate - - // Flugente: weather texts describing what a map view does - L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"L'escouade %d a remarqué quelque chose dans le secteur %s", - L"L'escouade %s a remarqué quelque chose dans le secteur %s", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"L'entraînement de la milice vous coûtera $ ", // telling player how much it will cost - L"Êtes-vous d'accord ?", // asking player if they wish to pay the amount requested - L"Vous n'en avez pas les moyens.", // telling the player they can't afford to train this town - L"Voulez-vous poursuivre l'entraînement de la milice à %s (%s %d) ?", // continue training this town? - - L"Coût $ ", // the cost in dollars to train militia - L"(O/N)", // abbreviated oui/non - L"", // unused - L"L'entraînement des milices dans %d secteurs vous coûtera %d $. %s", // cost to train sveral sectors at once - - L"Vous ne pouvez pas payer les %d $ nécessaires à l'entraînement.", - L"Vous ne pouvez poursuivre l'entraînement de la milice à %s que si cette ville est à niveau de loyauté de %d pour cent.", - L"Vous ne pouvez plus entraîner de milice à %s.", - L"libérer plus de secteurs d'une ville", - - L"libérer de nouveaux secteurs d'une ville", - L"libérer plus de villes", - L"reprendre vos secteurs perdus", - L"progresser dans votre avancée", - - L"recruter plus de rebelles", -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"Vous ne pouvez retirer que 20 000 $ à la fois.", - L"Êtes-vous sûr de vouloir déposer %s sur votre compte ?", -}; - -STR16 gzCopyrightText[] = -{ - L"Copyright (C) 1999 Sir-tech Canada Ltd. Tous droits réservés.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Dialogue", - L"Confirmations muettes", - L"Sous-titres", - L"Pause des dialogues", - L"Animation fumée", - L"Du sang et des tripes", - L"Ne pas toucher à ma souris !", - L"Ancienne méthode de sélection", - L"Afficher chemin", - L"Afficher tirs manqués", - L"Confirmation temps réel", - L"Notifications sommeil/réveil", - L"Système métrique", - L"Mettez en surbrillance les mercenaires", - L"Figer curseur sur mercenaires", - L"Figer curseur sur les portes", - L"Objets en surbrillance", - L"Afficher cimes", - L"Smart Tree Tops", // TODO. Translate - L"Affichage fil de fer", - L"Curseur toit", - L"Afficher chance de toucher", - L"Curseur raf. pour raf. lance G.", - L"Remarques des ennemis", // Changed from "Enemies Drop all Items" - SANDRO - L"Lance-grenades grand angle", - L"Autori. déplcmt silenci. tps réel", // Changed from "Restrict extra Aim Levels" - SANDRO - L"Espace pour escouade suivante", - L"Ombres objets", - L"Afficher portée armes en cases", - L"Balle traçante pour tir simple", - L"Son de pluie", - L"Afficher corbeaux", - L"Afficher infobulle soldat", - L"Sauvegarde auto", - L"Silence Skyrider !", - L"EDB (mod rajoutant info utiles)", - L"Mode tour par tour forcé", // add forced turn mode - L"Couleur alternative carte", // Change color scheme of Strategic Map - L"Montrer tirs alternatifs", // Show alternate bullet graphics (tracers) - L"Logical Bodytypes", - L"Afficher grade du mercenaire", // shows mercs ranks - L"Afficher équip. sur portrait", - L"Afficher icônes sur portrait", - L"Désactiver échange curseur", // Disable Cursor Swap - L"Entraîner en silence", // Madd: mercs don't say quotes while training - L"Réparer en silence", // Madd: mercs don't say quotes while repairing - L"Soigner en silence", // Madd: mercs don't say quotes while doctoring - L"Accélérer les tours ennemis", // Automatic fast forward through AI turns - L"Avec zombis", // Flugente Zombies - L"Propose objet/inventaire", // the_bob : enable popups for picking items from sector inv - L"Situer ennemi restant", - L"Afficher contenu LBE/DESC.", - L"Inverser molette/souris", - L"Déplacement tactique", // when multiple mercs are selected, they will try to keep their relative distances - L"Show enemy location", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Options mode triche--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Forcer envois Bobby Ray", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--OPTIONS DE DEBUG--", // an example options screen options header (pure text) - L"Afficher déviation balle", // Screen messages showing amount and direction of shot deviation. - L"Réinitialiser TOUTES les options du jeu", // failsafe show/hide option to reset all options - L"Voulez-vous vraiment réinitialiser ?", // a do once and reset self option (button like effect) - L"Autres Options de débug", // allow debugging in release or mapeditor - L"Afficher les options de débug", // an example option that will show/hide other options - L"Afficher zones souris activables", // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Activez cette option pour entendre vos mercenaires lorsqu'ils parlent.", - - //Mute Confirmation - L"Active/désactive les confirmations des mercenaires.", - - //Subtitles - L"Affichage des sous-titres à l'écran.", - - //Key to advance speech - L"Si les sous-titres s'affichent à l'écran,\ncette option vous permet de prendre le temps de les lire.", - - //Toggle smoke animation - L"Désactivez cette option, si votre machine n'est pas suffisamment puissante.", - - //Blood n Gore - L"Désactivez cette option, si le jeu vous paraît trop violent.", - - //Never move my mouse - L"Activez cette option pour que le curseur ne se place pas automatiquement sur les boutons qui s'affichent.", - - //Old selection method - L"Activez cette option pour retrouver vos automatismes de la version précédente.", - - //Show movement path - L"Activez cette option pour afficher le chemin suivi par les mercenaires.\nVous pouvez la désactiver et utiliser la touche |M|A|J en cours de jeu.", - - //show misses - L"Activez cette option pour voir où atterrissent tous vos tirs.", - - //Real Time Confirmation - L"Activez cette option pour afficher une confirmation de mouvement en temps réel.", - - //Sleep/Wake notification - L"Activez cette option pour être mis au courant de l'état de veille de vos mercenaires.", - - //Use the metric system - L"Activez cette option pour que le jeu utilise le système métrique.", - - //Highlight Mercs - L"Lorsqu'il est activé, le mercenaire est mis en surbrillance (invisible pour les ennemis).\nBasculer dans le jeu avec (|G)", - - //Smart cursor - L"Activez cette option pour que le curseur se positionne directement sur un mercenaire quand il est à proximité.", - - //snap cursor to the door - L"Activez cette option pour que le curseur se positionne directement sur une porte quand il est à proximité.", - - //glow items - L"Activez cette option pour mettre les objets en évidence. (|C|T|R|L+|A|L|T+||I)", - - //toggle tree tops - L"Activez cette option pour afficher la cime des arbres. (|T)", - - //smart tree tops - L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate - - //toggle wireframe - L"Activez cette option pour afficher les murs en fil de fer. (|C|T|R|L+|A|L|T+||W)", - - L"Activez cette option pour afficher le curseur toit. (|Début)", - - // Options for 1.13 - L"Si activé, affiche une barre de probabilités de succès sur le curseur.", - L"Si activé, les rafales de lance-grenades ont un curseur de rafale.", - L"Si activé, les ennemis feront de temps en temps des remarques sur certaines actions.", // Changed from Enemies Drop All Items - SANDRO - L"Si activé, les grenades des lance-grenades ont un grand angle (|A|l|t+|Q).", - L"Si activé, le mode tour par tour ne sera pas actif, si vous n'êtes pas vu ou entendu par l'ennemi à moins d'appuyer sur |C|t|r+|X.", // Changed from Restrict Extra Aim Levels - SANDRO - L"Si activé, |E|S|P|A|C|E sélectionne l'escouade suivante.", - L"Si activé, les ombres d'objets sont affichées.", - L"Si activé, la portée des armes est affichée en nombres de cases.", - L"Si activé, les effets de traçantes sont affichés pour les tirs simples.", - L"Si activé, le son de pluie est audible quand il pleut.", - L"Si activé, les corbeaux sont présents dans le jeu.", - L"Si activé, une fenêtre info-bulle apparaît lorsque vous appuyez sur |A|L|T et que le curseur est sur un ennemi.", - L"Si activé, le jeu est sauvegardé à chaque nouveau tour du joueur.", - L"Si activé, les confirmations insistantes de Skyrider cessent.", - 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+|T).", // add forced turn mode - L"Si activé, la carte stratégique sera colorée différemment selon l'exploration.", - L"Si activé, le graphisme des tirs alternatifs sera affiché quand vous tirerez.", - L"When ON, mercenary body graphic can change along with equipped gear.", // TODO.Translate - L"Si activée, le grade sera affiché devant le nom du merc. dans la carte stratégique.", - L"Si activé, vous verrez l'équipement du mercenaire à travers son portrait.", - L"Si activé, vous verrez les icônes 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é, les mercenaires ne feront pas de compte rendu des progrès pendant la formation.", - L"Si activé, les mercenaires ne feront pas de compte rendu des progrès sur les réparations.", - L"Si activé, les mercenaires ne feront pas de compte rendu des progrès sur les soins.", - L"Si activé, les tours de l'IA seront plus rapides.", - L"Si activé, les zombis seront présents. Soyez au courant !", // allow zombies - L"Si activé, ouvrir inventaire d'un mercenaire et celui du secteur.\nClic gauche sur un emplacement vide inv/obj/arme et une fenêtre \nproposera des choix.", - L"Si activé, la zone où se trouve le reste des ennemis dans le secteur, est mis en évidence.", - L"Si activé, montre le contenu d'un élément LBE quand la fenêtre de description est ouverte.", - L"Si activé, inverse le sens de la molette de la souris.", - L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate - L"When ON, shows last known enemy location.", //TODO.Translate - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Forcer tous les envois en attente de Bobby Ray", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g : Si activé, annoncera la distance de déviation de chaque tir à partir\ndu centre de la cible, en prenant en compte tous les facteurs du NSCDT.", - L"Cliquer ici pour corriger les paramètres de jeu corrompus", // failsafe show/hide option to reset all options - L"Cliquer ici pour corriger les paramètres de jeu corrompus", // a do once and reset self option (button like effect) - L"Autoriser les options de debug dans les releases ou les mapeditor", // allow debugging in release or mapeditor - L"Activer pour afficher les options de debug", // an example option that will show/hide other options - L"Essaye de rendre visible les zones souris en les encadrant", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - - -STR16 gzGIOScreenText[] = -{ - L"CONFIGURATION DU JEU", -#ifdef JA2UB - L"Texte de Manuel aléatoire", - L"Non", - L"Oui", -#else - L"Style de jeu", - L"Réaliste", - L"S-F", -#endif - L"Platinum", //Placeholder English - L"Armes disponibles", - L"Toutes", - L"Quelques-unes", - L"Difficulté", - L"Novice", - L"Expérimenté", - L"Expert", - L"INCROYABLE", - L"Commencer", - L"Annuler", - L"En combat", - L"Sauv. à volonté", - L"Iron Man", - L"Désactivé pour la démo", - L"Qualité de Bobby Ray", - L"Bonne", - L"Meilleure", - L"Excellente", - L"Superbe", - L"Inventaire/Accessoire", - L"NON UTILISÉ", - L"NON UTILISÉ", - L"Charge jeu multi", - L"CONFIGURATION DU JEU (Les paramètres serveur seulement prennent effet)", - // Added by SANDRO - L"Compétences (Traits)", - L"Anciennnes", - L"Nouvelles", - L"Nombre max. de merc IMP", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Objets lâchés par l'ennemi", - L"Non", - L"Oui", -#ifdef JA2UB - L"John et Tex", - L"Aléatoire", - L"Les deux", -#else - L"Nombre de terroristes", - L"Aléatoire", - L"Tous", -#endif - L"Cachettes d'armes secrètes", - L"Aléatoire", - L"Toutes", - L"Progression des objets", - L"Très lente", - L"Lente", - L"Normal", - L"Rapide", - L"Très rapide", - L"Ancien/Ancien", - L"Nouveau/Ancien", - L"Nouveau/Nouveau", - - // Squad Size - L"Taille max. de l'escouade", - L"6", - L"8", - L"10", - //L"Faster Bobby Ray Shipments", - L"Coût de l'inventaire en PA", - - L"Nouv. syst. chance de toucher", - L"Syst. amélioré d'interruption", - L"Passif des mercenaires", - L"Système alimentaire", - L"Stock de Bobby Ray", - - // anv: extra iron man modes - L"Soft Iron Man", // TODO.Translate - L"Extreme Iron Man", // TODO.Translate -}; - -STR16 gzMPJScreenText[] = -{ - L"MULTIJOUEURS", - L"Rejoindre", - L"Héberger", - L"Annuler", - L"Rafraichir", - L"Nom du joueur", - L"IP du serveur", - L"Port", - L"nom du serveur", - L"# Plrs", - L"Version", - L"Type de jeu", - L"Ping", - L"Vous devez entrer un nom de joueur", - L"Vous devez entrer une adresse IP de serveur valide. Par exemple : 84.114.195.239", - L"Vous devez entrer un port de serveur valide entre 1 et 65535.", -}; - - -STR16 gzMPJHelpText[] = -{ - L"Visiter http://webchat.quakenet.org/?channels=ja2-multiplayer pour trouver d'autres joueurs.", - L"Vous pouvez appuyer sur 'y' pour ouvrir la fenêtre de chat ingame, après avoir été connecté au serveur.", - - L"HÉBERGER", - L"Entrer '127.0.0.1' pour l'IP et un nombre plus grand que 60000 pour le port.", - L"Assurez vous que les ports (UDP, TCP) sont ouverts sur votre routeur. Pour plus d'informations visitez : http://portforward.com", - L"Vous devez envoyer (via IRC, MSN, ICQ, etc.) votre IP externe (http://www.whatismyip.com) et votre numéro de port aux autres joueurs.", - L"Cliquez sur \"Héberger\" pour héberger une nouvelle partie en multijoueurs.", - - L"REJOINDRE", - L"L'hébergeur doit vous envoyer (via IRC, MSN, ICQ, etc.) son IP externe ansi que son numéro de port.", - L"Entrez l'IP externe ainsi que le port du serveur.", - L"Cliquer sur \"Rejoindre\" pour rejoindre une partie multijoueurs déjà existante.", -}; - -STR16 gzMPHScreenText[] = -{ - L"HÉBERGER", - L"Commencer", - L"Annuler", - L"Nom du serveur", - L"Type de jeu", - L"À mort", - L"À mort/Équipe", - L"Coopératif", - L"Joueurs max.", - L"Mercs max.", - L"Sélection mercenaire", - L"Mercenaire embauché", - L"Embauché par les joueurs", - L"Départ avec argent", - L"Autoriser l'embauche d'un même mercenaire", - L"Reporter les mercenaires embauchés", - L"Bobby Ray", - L"Bord de départ", - L"Vous devez entrer un nom de serveur", - L"", - L"", - L"Départs", - L"", - L"", - L"Dégâts des armes", - L"", - L"Tounures prévues", - L"", - L"Activer les civils en CO-OP", - L"", - L"Maximum d'ennemis en CO-OP", - L"Synchroniser le répertoire du jeu", - L"MP Sync. Directory", - L"Vous devez entrer un répertoire de transfert de fichier.", - L"(Utilisez '/' au lieu '\\' pour délimiter les dossiers.)", - L"Le répertoire de synchronisation indiqué n'existe pas.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Oui", - L"Non", - // Starting Time - L"Matin", - L"Après-midi", - L"Nuit", - // Starting Cash - L"Faible", - L"Moyen", - L"Haut", - L"Illimité", - // Time Turns - L"Jamais", - L"Lent", - L"Moyen", - L"Rapide", - // Weapon Damage - L"Très lent", - L"Lent", - L"Normal", - // Merc Hire - L"Aléatoire", - L"Normal", - // Sector Edge - L"Aléatoire", - L"Sélectionnable", - // Bobby Ray / Hire same merc - L"Désactiver", - L"Autoriser", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Austin", //Austin, Texas, USA - L"Bagdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"Hong Kong", //Hong Kong, Hong Kong - L"Beyrouth", //Beirut, Lebanon (Middle East) - L"Londres", //London, England - L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Métavira", //The island of Metavira was the fictional location used by JA1 - L"Miami", //Miami, Florida, USA (SE corner of USA) - L"Moscou", //Moscow, USSR - L"New-York", //New York, New York, USA - L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Paris", //Paris, France - L"Tripoli", //Tripoli, Libya (eastern Mediterranean) - L"Tokyo", //Tokyo, Japan - L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Êtes-vous sûr de vous ? Une valeur de ZÉRO signifie que vous serez INCAPABLE d'utiliser cette compétence.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"(8 Caractères Max)", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"Analyse", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"Nous vous remercions, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Voix", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"Mort(e)", - L"Renvoyé(e)", - L"Autre", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Personnel", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Pause", - L"Reprendre (|P|a|u|s|e)", - L"Pause (|P|a|u|s|e)", -}; - - -STR16 pMessageStrings[] = -{ - L"Quitter la partie ?", - L"OK", - L"OUI", - L"NON", - L"Annuler", - L"CONTRAT", - L"MENT", - L"Sans description", //Save slots that don't have a description. - L"Partie sauvegardée.", - L"Partie sauvegardée.", - L"QuickSave", //The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"Jour", - L"Mercs", - L"Vide", //An empty save game slot - L"Démo", //Demo of JA2 - L"Debug", //State of development of a project (JA2) that is a debug build - L"Version", //Release build for JA2 - L"CpM", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"min", //Abbreviation for minute. - L"m", //One character abbreviation for meter (metric distance measurement unit). - L"cart.", //Abbreviation for rounds (# of bullets) - L"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"lb", //Abbreviation for pounds (Imperial weight measurement unit) - L"Accueil", //Home as in homepage on the internet. - L"USD", //Abbreviation to US dollars - L"n/a", //Lowercase acronym for not applicable. - L"Entre-temps", //Meanwhile - L"%s est arrivée dans le secteur %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying - //SirTech - L"Version", - L"Emplacement de sauvegarde rapide vide", - L"Cet emplacement est réservé aux sauvegardes rapides effectuées depuis l'écran tactique (ALT+S).", - L"Ouverte", - L"Fermée", - L"Espace disque insuffisant. Il ne vous reste que %s Mo de libre et Jagged Alliance 2 nécessite %s Mo.", - L"%s embauché(e) sur le site AIM", - L"%s prend %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s a pris %s.", //'Merc name' has taken the drug - L"%s n'a aucune compétence médicale.",//'Merc name' has non medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"L'intégrité du jeu n'est plus assurée.", - L"ERREUR : CD-ROM manquant", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"Pas assez de place !", - - //Can't change stance due to objects in the way... - L"Impossible de changer de position ici.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Lâcher", - L"Lancer", - L"Donner", - - L"%s donné à %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"Impossible de donner %s à %s.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" combiné(s)]", - - //Cheat modes - L"Triche niveau 1", - L"Triche niveau 2", - - //Toggling various stealth modes - L"Escouade en mode discrétion.", - L"Escouade en mode normal.", - L"%s en mode discrétion.", - L"%s en mode normal.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Fil de fer activé.", - L"Fil de fer désactivé.", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Impossible de remonter...", - L"Pas de niveau inférieur...", - L"Entrer dans le sous-sol %d...", - L"Sortir du sous-sol...", - - L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Mode poursuite désactivé.", - L"Mode poursuite activé.", - L"Curseur toit désactivé.", - L"Curseur toit activé.", - L"Escouade %d active.", - L"Vous ne pouvez pas payer le salaire de %s qui se monte à %s.", //first %s is the mercs name, the seconds is a string containing the salary - L"Passer", - L"%s ne peut sortir seul.", - L"Une sauvegarde a été crée (Partie249.sav). Renommez-la (Partie01 - Partie10) pour pouvoir la charger ultérieurement.", - L"%s a bu %s.", - L"Un colis vient d'arriver à Drassen.", - L"%s devrait arriver au point d'entrée (secteur %s) au jour %d vers %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival - L"Historique mis à jour.", - L"Curseur de visée pour raf. gre. (Dispersion activée).", - L"Curseur de trajectoire raf. gre. (Dispersion desact.).", - L"Infobulle soldat activée", // Changed from Drop All On - SANDRO - L"Infobulle soldat désactivée", // 80 // Changed from Drop All Off - SANDRO - L"Petit angle pour lance-grenades", - L"Grand angle pour lance-grenades", - // forced turn mode strings - L"Mode tour par tour forcé", - L"Mode tour par tour normal", - L"Mode de combat quitté", - L"Mode tour par tour forcé activé, mode de combat activé", - L"Partie enregistrée dans l'emplacement de sauvegarde automatique.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. - L"Client", - - L"Vous ne pouvez pas utiliser l'ancien système d'inventaire et le nouveau système d'accessoire en même temps.", - - L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID - L"Cet emplacement est réservé pour les sauvegardes automatiques et peut être activé/désactivé dans ja2_options.ini (AUTO_SAVE_EVERY_N_HOURS).", //92 // The text, when the user clicks on the save screen on an auto save - L"Emplacement vide auto #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveJeu", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"Save fin-tour #", // 95 // The text for the tactical end turn auto save - L"Enregistrement auto #", // 96 // The message box, when doing auto save - L"Enregistrement", // 97 // The message box, when doing end turn auto save - L"Emplacement fin-tour vide #", // 98 // The message box, when doing auto save - L"Cet emplacement est réservé pour les sauvegardes fin-tour et peut être activé/désactivé dans l'écran option.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) - L"Verrouiller le curseur pour qu'il reste dans la fenêtre.", // 104 - L"Libérer le curseur pour qu'il se déplace hors de la fenêtre.", // 105 - L"Déplacement tactique activé", - L"Déplacement tactique désactivé", - L"Éclairage du mercenaire activé", - L"Éclairage du mercenaire désactivé", - L"Squad %s active.", //TODO.Translate - L"%s smoked %s.", - L"Activate cheats?", - L"Deactivate cheats?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"OK", - L"Défilement haut", - L"Tout sélectionner", - L"Défilement bas", - L"Annuler", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s est trop loin pour être soigné.", - L"Impossible de soigner tout le monde.", -}; - -STR16 pMilitiaButtonsHelpText[] = -{ - L"Prendre (Clic droit)/poser (Clic gauche) Miliciens", // button help text informing player they can pick up or drop militia with this button - L"Prendre (Clic droit)/poser (Clic gauche) Soldats", - L"Prendre (Clic droit)/poser (Clic gauche) Vétérans", - L"Répartition automatique", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Allez sur le site de l'AIM et engagez des mercenaires (*Conseil* allez voir dans le Poste de travail)", // to inform the player to hired some mercs to get things going -#ifdef JA2UB - L"Cliquez sur le bouton de compression du temps pour faire avancer votre escouade sur le terrain.", // to inform the player to hit time compression to get the game underway -#else - L"Cliquez sur le bouton de compression du temps pour faire avancer votre escouade sur le terrain.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Erreur. Fichier manquant ou corrompu. L'application va s'arrêter.", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"Voir messages", - L"Consulter les sites Internet", - L"Consulter les documents attachés", - L"Lire le compte-rendu", - L"Afficher les infos de l'escouade", - L"Afficher les états financiers", - L"Fermer le Poste de travail", - - //Bottom task bar icons (if they exist): - L"Vous avez de nouveaux messages", - L"Vous avez reçu de nouveaux fichiers", - - //Bookmarks: - L"Association Internationale des Mercenaires", - L"Bobby Ray : Petits et Gros Calibres", - L"Institut des Mercenaires Professionnels", - L"Mouvement pour l'Entraînement et le Recrutement des Commandos", - L"Morgue McGillicutty", - L"Service des Fleuristes Associés", - L"Courtiers d'Assurance des Mercenaires de l'AIM", - //New Bookmarks - L"", - L"Encyclopédie", - L"Salle de briefing", - L"Comptes rendus", - L"Mercenaries Love or Dislike You", // TODO.Translate - L"World Health Organization", - L"Kerberus - Experience In Security", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services", // TODO.Translate - L"Controlled factories", // TODO.Translate -}; - - -STR16 gzHelpScreenText[] = -{ - L"Quitter l'écran d'aide", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"Vous êtes en plein combat. Vous pouvez donner l'ordre de retraite depuis l'écran tactique.", - L"Pénétrez dans le secteur pour reprendre le cours du combat. (|E)", - L"Résolution automatique du combat. (|A)", - L"Résolution automatique impossible lorsque vous êtes l'attaquant.", - L"Résolution automatique impossible lorsque vous êtes pris en embuscade.", - L"Résolution automatique impossible lorsque vous combattez des créatures dans les mines.", - L"Résolution automatique impossible en présence de civils hostiles.", - L"Résolution automatique impossible en présence de chats sauvages.", - L"COMBAT EN COURS", - L"Retraite impossible.", -}; - -STR16 gzMiscString[] = -{ - L"Votre milice continue le combat sans vos mercenaires...", - L"Ce véhicule n'a plus besoin de carburant pour le moment.", - L"Le réservoir est plein à %d%%.", - L"L'armée de Deidranna a repris le contrôle de %s.", - L"Vous avez perdu un site de ravitaillement.", -}; - -STR16 gzIntroScreen[] = -{ - L"Vidéo d'introduction introuvable", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s entend un bruit de %s %s.", - L"%s entend un bruit %s de MOUVEMENT %s.", - L"%s entend un GRINCEMENT %s %s.", - L"%s entend un CLAPOTIS %s %s.", - L"%s entend un IMPACT %s %s.", - L"%s entend un COUP DE FEU %s %s.", // anv: without this, all further noise notifications were off by 1! - L"%s entend une EXPLOSION %s %s.", - L"%s entend un CRI %s %s.", - L"%s entend un IMPACT %s %s.", - L"%s entend un IMPACT %s %s.", - L"%s entend un BRUIT %s %s.", - L"%s entend un BRUIT %s %s.", - L"", // anv: placeholder for silent alarm - L"%s entend une VOIX %s %s.", // anv: report enemy taunt to player -}; - - -STR16 pTauntUnknownVoice[] = -{ - L"Voix inconnue", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Tri par nom (|F|1)", - L"Tri par affectation (|F|2)", - L"Tri par état de veille (|F|3)", - L"Tri par lieu (|F|4)", - L"Tri par destination (|F|5)", - L"Tri par date de départ (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"Erreur 404", - L"Site introuvable.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"Derniers envois", - L"Commande #", - L"Quantité d'objets", - L"Commandé", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"Programmeur", // Chris Camfield - L"Co-designer/Écrivain", // Shaun Lyng - L"Systèmes stratégiques & Programmeur", //Kris Marnes - L"Producteur/Co-designer", // Ian Currie - L"Co-designer/Conception des cartes", // Linda Currie - L"Artiste", // Eric \"WTF\" Cheng - L"Coordination, Assistance", // Lynn Holowka - L"Artiste Extraordinaire", // Norman \"NRG\" Olsen - L"Gourou du son", // George Brooks - L"Conception écrans/Artiste", // Andrew Stacey - L"Artiste en chef/Animateur", // Scot Loving - L"Programmeur en chef", // Andrew \"Big Cheese Doddle\" Emmons - L"Programmeur", // Dave French - L"Systèmes stratégiques & Programmeur", // Alex Meduna - L"Portraits", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(ah, la ponctuation...)", // Shaun Lyng - L"(\"C'est bon, trois fois rien\")", //Kris \"The Cow Rape Man\" Marnes - L"(j'ai passé l'âge)", // Ian Currie - L"(et en plus je bosse sur Wizardry 8)", // Linda Currie - L"(on m'a forcé !)", // Eric \"WTF\" Cheng - L"(partie en cours de route...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(Tête de mort et fou de jazz)", // Andrew Stacey - L"(en fait il s'appelle Robert)", // Scot Loving - L"(la seule personne un peu responsable de l'équipe)", // Andrew \"Big Cheese Doddle\" Emmons - L"(bon, je vais pouvoir réparer ma moto)", // Dave French - L"(piqué à l'équipe de Wizardry 8)", // Alex Meduna - L"(conception des objets et des écrans de chargement !)", // Joey \"Joeker\" Whelan", -}; - -STR16 sRepairsDoneString[] = -{ - L"%s a terminé la réparation de ses objets.", - L"%s a terminé la réparation des armes & protections.", - L"%s a terminé la réparation des objets portés.", - L"%s a fini de réparer les grands objets portés par chacun.", - L"%s a fini de réparer les moyens objets portés par chacun.", - L"%s a fini de réparer les petits objets portés par chacun.", - L"%s a fini de réparer le mécanisme LBE de chacun.", - L"%s finished cleaning everyone's guns.", // TODO.Translate -}; - -STR16 zGioDifConfirmText[]= -{ - L"Vous avez choisi le mode de difficulté NOVICE. Ce mode de jeu est conseillé pour les joueurs qui découvrent Jagged Alliance, qui n'ont pas l'habitude de jouer à des jeux de stratégie ou qui souhaitent que les combats ne durent pas trop longtemps. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode Novice ?", - L"Vous avez choisi le mode de difficulté EXPÉRIMENTE. Ce mode de jeu est conseillé pour les joueurs qui ont déjà joué à Jagged Alliance ou des jeux de stratégie. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode Expérimenté ?", - L"Vous avez choisi le mode de difficulté EXPERT. Vous aurez été prévenu. Ne venez pas vous plaindre, si vos mercenaires quittent Arulco dans un cerceuil. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode Expert ?", - L"Vous avez choisi le mode de difficulté INCROYABLE. ATTENTION : Ne venez pas vous plaindre, si vos mercenaires quittent Arulco en petits morceaux... Deidranna va vous tuer. À coup sûr. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode INCROYABLE ?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"Données de l'écran de chargement de %S introuvables...", - - //1-5 - L"Le robot ne peut quitter ce secteur par lui-même.", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"Compression du temps impossible. C'est bientôt le feu d'artifice !", - - //'Name' refuses to move. - L"%s refuse d'avancer.", - - //%s a merc name - L"%s n'a pas assez d'énergie pour changer de position.", - - //A message that pops up when a vehicle runs out of gas. - L"%s n'a plus de carburant ; le véhicule est bloqué à %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"au-dessus", - L"en-dessous", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"Aucun de vos mercenaires n'a de compétence médicale.", - L"Plus de bandages !", - L"Pas assez de bandages pour soigner tout le monde.", - L"Aucun de vos mercenaires n'a besoin de soins.", - L"Soins automatiques.", - L"Tous vos mercenaires ont été soignés.", - - //14 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - L"(toit)", - - L"Santé : %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d contre %d", - - L"Plus de place dans le %s !", //(ex "The ice cream truck is full") - - L"%s requiert des soins bien plus importants et/ou du repos.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s a été touché aux jambes ! Il ne peut plus se tenir debout !", - //Name can't speak right now. - L"%s ne peut pas parler pour le moment.", - - //22-24 plural versions - L"%d miliciens ont été promus vétérans.", - L"%d miliciens ont été promus soldats.", - L"%d soldats ont été promus vétérans.", - - //25 - L"Échanger", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s est devenu dingue !", - - //27-28 - //Messages why a player can't time compress. - L"Nous vous déconseillons d'utiliser la compression du temps ; vous avez des mercenaires dans le secteur %s.", - L"Nous vous déconseillons d'utiliser la compression du temps lorsque vos mercenaires se trouvent dans des mines infestées de créatures.", - - //29-31 singular versions - L"1 milicien a été promu vétéran.", - L"1 milicien a été promu soldat.", - L"1 soldat a été promu vétéran.", - - //32-34 - L"%s ne dit rien.", - L"Revenir à la surface ?", - L"(Escouade %d)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s a réparé pour %s : %s",//inverted order !!! Red has repaired the MP5 of Scope - - //36 - L"Chat", // Max. 9 Characters. Should be "bloodcat". - - //37-38 "Name trips and falls" - L"%s trébuche et tombe", - L"Cet objet ne peut être pris d'ici.", - - //39 - L"Il ne vous reste aucun mercenaire en état de se battre. La milice combattra les créatures seule.", - - //40-43 - //%s is the name of merc. - L"%s n'a plus de trousse de soins !", - L"%s n'a aucune compétence médicale !", - L"%s n'a plus de caisse à outils !", - L"%s n'a aucune compétence en mécanique !", - - //44-45 - L"Temps de réparation", - L"%s ne peut pas voir cette personne.", - - //46-48 - L"Le prolongateur de %s est tombé !", - L"Seulement %d personnes sont autorisées dans ce secteur pour former la milice mobile.", - L"Êtes-vous sûr ?", - - //49-50 - L"Compression du temps", - L"Le réservoir est plein.", - - //51-52 Fast help text in mapscreen. - L"Compression du temps (|E|S|P|A|C|E)", - L"Arrêt de la compression du temps (|E|C|H|A|P)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s a désenrayé : %s", - L"%s a désenrayé pour %s : %s",//inverted !!! magic has unjammed the g11 of raven - - //55 - L"Compression du temps impossible dans l'écran d'inventaire.", - - L"Le CD Play de Jagged Alliance 2 est introuvable. L'application va se terminer.", - - L"Objets associés.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Actuel/Maximum : %d%%/%d%%", - - L"Escorter John et Mary ?", - - //60 - L"Interrupteur activé.", - - L"%s : attachement de protection détruit !", - L"%s tire %d fois de plus que prévu !", - L"%s tire 1 fois de plus que prévu !", - - L"Vous devez d'abord fermer la fenêtre de description !", - - L"Compression du temps impossible avec des civils hostiles et/ou des chats sauvages dans ce secteur. ", // 65 -}; - -STR16 gzCWStrings[] = -{ - L"Faut-il appelez des renforts pour %s dans les secteurs adjacents ?", -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Emplacement : %d\n", - L"%s|Luminosité : %d/%d\n", - L"%s|Distance de la |Cible : %d\n", - L"%s|I|D : %d\n", - L"%s|Ordres : %d\n", - L"%s|Attitude : %d\n", - L"%s|P|A |Actuel : %d\n", - L"%s|Santé |Actuelle : %d\n", - L"%s|Énergie |Actuelle : %d\n", - L"%s|Moral |Actuel : %d\n", - L"%s|C|hoc |Actuel : %d\n", - L"%s|V|aleur de |S|uppression |Actuelle : %d\n", - // Full info - L"%s|Casque : %s\n", - L"%s|Veste : %s\n", - L"%s|Pantalon : %s\n", - // Limited, Basic - L"|Protection : ", - L"casque", - L"veste", - L"pantalon", - L"oui", - L"pas de protection", - L"%s|L|V|N : %s\n", - L"Pas de lunette de vision de nuit", - L"%s|Masque à |Gaz : %s\n", - L"pas de masque à gaz", - L"%s|Emplacement |1 |tête : %s\n", - L"%s|Emplacement |2 |tête : %s\n", - L"\n(dans le sac de transport) ", - L"%s|Arme : %s ", - L"pas d'arme", - L"Pistolet", - L"PM", - L"Fusil", - L"FM", - L"Fusil à pompe", - L"Arme blanche", - L"Armes lourdes", - L"pas de casque", - L"pas de veste", - L"pas de pantalon", - L"|Protection : %s\n", - // Added - SANDRO - L"%s|Compétence 1 : %s\n", - L"%s|Compétence 2 : %s\n", - L"%s|Compétence 3 : %s\n", - // Additional suppression effects - sevenfm - L"%s|P|A perdu(s) en raison de |S|uppression : %d\n", - L"%s|Tolérance de |Suppression : %d\n", - L"%s|Niveau |Effectif du |C|hoc : %d\n", - L"%s|Moral de l'|I|A : %d\n", -}; - -STR16 New113Message[] = -{ - L"La tempête débute.", - L"La tempête est finie.", - L"Il commence à pleuvoir.", - L"La pluie cesse.", - L"Attention aux tireurs isolés...", - L"Tir de couverture !", - L"RAF.", - L"AUTO", - L"LG", - L"RAF. LG", - L"LG AUTO", - L"S/CA", - L"S/CA R", - L"S/CA A", - L"BAÏONNETTE", - L"Tireur embusqué !", - L"Impossible de partager l'argent avec un objet sélectionné.", - L"Arrivée de nouvelles recrues est déroutée au secteur %s, car le point d'arrivée prévu %s est sous contrôle ennemi.", - L"Article supprimé", - L"A supprimé tous les articles de ce type", - L"Article vendu", - L"A vendu tous les articles de ce type", - L"Vous devriez vérifier si votre accessoire de vision convient bien à ce type de lieu", - // Real Time Mode messages - L"Encore en combat", - L"pas d'ennemi en vue", - L"Mode discrétion en temps réel désactivé", - L"Mode discrétion en temps réel activé", - L"Ennemis repérés !", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s a réussi son vol !", - L"%s n'avait pas assez de points d'action pour voler tous les articles choisis.", - L"Voulez-vous faire de la chirurgie sur %s avant de le bander ? (Vous pouvez lui guérir %i santé.)", - L"Voulez-vous faire de la chirurgie sur %s ? (Vous pouvez lui guérir %i santé.)", - L"Voulez-vous lui faire les premiers soins d'abord ? (%i patient(s))", - L"Voulez-vous faire les premiers soins sur ce patient d'abord ?", - L"Appliquez les premiers soins automatiquement avec chirurgie ou sans ?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"La chirurgie sur %s est finie.", - L"%s est touché(e) au torse et perd un maximum de points de vie !", - L"%s est touché(e) au torse et perd %d points de vie !", - L"%s est devenu(e) aveugle par le souffle de l'explosion !", - L"%s a regagné 1 point sur les %s perdus", - L"%s a regagné %d points sur les %s perdus", - L"Vos compétences de reconnaissance vous ont empêchés d'être pris en embuscade par l'ennemi !", - L"Grâce à vos compétences de reconnaissance vous avez réussi à éviter un groupe de félins !", - L"%s est frappé à l'aine et tombe de douleur !", - ////////////////////////////////////////////////////////////////////////////////////// - L"Attention : Cadavre ennemi trouvé !!!", - L"%s [%d cart]\n%s %1.1f %s", - L"PA insuffisant ! Coût %d et vous avez %d.", - L"Astuce : %s", - L"Moral du joueur : %d - Moral de l'ennemi : %6.0f", // Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"Compétence inutilisable dans ces conditions !", - L"Impossible de construire pendant que des ennemis sont dans le secteur !", - L"Impossible de faire un repérage radio à cet endroit !", - L"Numéro de grille incorrect pour un tir d'artillerie !", - L"Les fréquences radio sont brouillées. Pas de communications possibles !", - L"L'action radio a échoué !", - L"Pas assez d'obus de mortier dans le secteur pour un tir de barrage !", - L"Aucun obus éclairant trouvé dans Items.xml !", - L"No High-Explosive shell item found in Items.xml!", - L"Aucun mortier trouvé, tir de barrage impossible !", - L"Brouillage radio déjà en cours, inutile d'en lancer un autre !", - L"Écoute des sons alentour déjà en cours, inutile d'en lancer une autre !", - L"Repérage radio déjà en cours, inutile d'en lancer un autre !", - L"Balayage des fréquences déjà en cours, inutile d'en lancer un autre !", - L"%s n'a pas pu appliquer %s à %s.", - L"%s demande des renforts depuis %s.", - L"%s a épuisé la batterie de sa radio.", - L"une radio", - L"des jumelles", - L"de la patience", - L"%s's shield has been destroyed!", // TODO.Translate - L" DELAY", // TODO.Translate - L"Yes*", - L"Yes", - L"No", - L"%s applied %s to %s.", // TODO.Translate -}; - -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s sombre dans la peur !", - L"%s est cloué(e) au sol !", - L"%s tire plus de fois que désiré !", - L"Vous ne pouvez pas former de milice dans ce secteur.", - L"La milice prend %s.", - L"Vous ne pouvez pas former de milice, alors que des ennemis sont présents !", - // 6 - 10 - L"%s n'a pas assez de points en commandement pour former la milice.", - L"Seulement %d personnes sont autorisées dans ce secteur pour former la milice mobile.", - L"Aucune case de libre à %s ou autour pour de nouvelles milices mobiles !", - L"Vous devez avoir %d villes de milice dans chaque secteur libéré de %s pour pouvoir former une milice mobile.", - L"Aucune affectation ne peut être faite tant que les ennemis sont présents !", - // 11 - 15 - L"%s n'a pas assez en sagesse pour être affecté(e) à cette installation.", - L"L'installation : %s est déjà entièrement pourvue en personnel.", - L"Cela va coûter %d $ par heure pour cette affectation. Voulez-vous continuer ?", - L"À ce jour, vous n'avez pas assez d'argent pour payer toutes vos dépenses. Vos %d $ ont déjà été versés, mais vous devez encore %d $. Les habitants ne sont pas très patients...", - L"À ce jour, vous n'avez pas assez d'argent pour payer toutes vos dépenses. Vous devez %d $. Les habitants ne sont pas très patients...", - // 16 - 20 - L"Vous avez une dette échue de %d $ et pas d'argent pour la régler !", - L"Vous avez une dette échue de %d $. Vous ne pouvez pas donner cette affectation avant que vous n'ayez assez d'argent pour régler la dette entière.", - L"Vous avez une dette échue de %d $. Voulez-vous payer ?", - L"N/A à ce secteur", - L"Coût quotidien", - // 21 - 25 - L"Fonds insuffisants pour payer toute la milice enrôlée ! %d membres de la milice sont partis pour rentrer chez eux.", - L"Pour voir la description d'un objet pendant un combat, vous devez d'abord le prendre vous-même.", // HAM 5 - L"Pour attacher un objet à un autre pendant un combat, vous devez d'abord les prendre vous-même.", // HAM 5 - L"Pour combiner deux objets pendant un combat, vous devez d'abord les prendre vous-même.", // HAM 5 -}; - -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"Aucun choix disponible", - L"%s a été séparé(e) en plusieurs morceaux.", - L"%s a été séparé(e) en plusieurs morceaux. %s les a récupérés dans son inventaire.", - L"Il n'y avait pas suffisamment de place dans l'inventaire après la transformation, %s a dû poser des objets au sol.", - L"%s a été séparé(e) en plusieurs morceaux. Il n'y avait pas suffisamment de place dans l'inventaire, %s a dû poser des objets au sol.", - L"Voulez-vous transformer les %d objets dans ce tas ? (Pour transformer un seul objet, retirez-le du tas d'abord)", - // 6 - 10 - L"Compléter l'inventaire", - L"Conditionner en chargeurs %d coups", - L"%s a été conditionné en %d chargeurs %d coups.", - L"%s a été réparti dans l'inventaire de : %s.", - L"%s n'a plus de place dans son inventaire pour des chargeurs de ce calibre !", - L"Instant mode", // TODO.Translate - L"Delayed mode", - L"Instant mode (%d AP)", - L"Delayed mode (%d AP)", -}; - -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Nous vous informons que de par ses perfomances passées, Gaston voit ses honoraires augmentés. Personellement, je ne suis pas surpris. ± ± Kline Speck T ± ", - // Stogie: Text from Line 43 in Email.edt - L"Soyez informé qu'à paritr de maintenant, les honoraires de Stogie ont augmenté en accord avec ses compétences. ± ± Kline Speck T. ± ", - // Tex: Text from Line 45 in Email.edt - L"Sachez que l'expérience de Tex lui autorise une promotion. Son salaire a donc été ajusté pour refléter sa vraie valeur. ± ± Kline Speck T. ± ", - // Biggins: Text from Line 49 in Email.edt - L"Prenez note. De par ses performances accrues, Biggins voit le prix de ses services augmentés. ± ± Kline Speck T. ± ", -}; - -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk - L"TR du serveur AIM : Message de Kolesnikov Victor", - L"Salut. Ici Monk. Message reçu. Je suis disponible si vous voulez me voir. ± ± J’attends votre appel. ±", - - // Brain - L"TR du serveur AIM : Message de Allik Janno", - L"Je suis prêt à considérer votre offre. Il y a un temps et un lieu pour tout. ± ± Allik Janno ±", - - // Scream - L"TR du serveur AIM : Message de Vilde Lennart", - L"Vilde Lennart est maintenant disponible! ±", - - // Henning - L"TR du serveur AIM : Message de von Branitz Henning", - L"J’ai reçu votre message, merci. Pour parler d’embauche, contactez-moi sur le site web de l’AIM. ± ± Von Branitz Henning ±", - - // Luc - L"TR du serveur AIM : Message de Fabre Luc", - L"Message reçu, merci ! Je suis heureux de considérer votre proposition. Vous savez où me trouver. ± ± Au plaisir de vous entendre. ±", - - // Laura - L"TR du serveur AIM : Message du Dr Colin Laura", - L"Salutations ! Merci pour votre message, il semble intéressant. ± ± Visiter l’AIM à nouveau, je serais ravie d’en entendre plus. ± ± Cordialement ! ± ± Dr Colin Laura ±", - - // Grace - L"TR du serveur AIM : Message de Girelli Graziella", - L"Vous vouliez me contacter, mais vous n’avez pas réussi. ± ± Une réunion de famille. Je suis sûr que vous comprenez ? J’en ai maintenant assez de la famille et serais très heureuse si vous voulez me contacter de nouveau sur le site AIM. ± ± Ciao ! ±", - - // Rudolf - L"TR du serveur AIM : Message de Steiger Rudolf", - L"Vous savez combien j’ai d’appel par jour ? Tous les branleurs pensent pouvoir m’appeler. ± ± Mais je suis de retour, si vous avez quelque chose d’intéressant pour moi. ±", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"TR du serveur AIM : Message des disponibilités des mercs", - L"J'ai reçu votre message. J'attends votre appel. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Tireur d'élite : Des yeux de faucon, vous pouvez tirer les ailes d'une mouche à cent mètres ! ± ", - // Camouflage - L"Camouflage : Sans compter qu'à côté de vous, les buissons semblent synthétiques ! ± ", - // SANDRO - new strings for new traits added - // Ranger - L"Ranger : Vous êtes celui du désert du Texas, n'est-ce pas ! ± ", - // Gunslinger - L"Bandit : Avec un pistolet ou deux, vous pouvez être aussi mortel que Billy the Kid ! ± ", - // Squadleader - L"Commandant : Naturel leader et commandant, vous êtes le gros calibre, sans blague ! ± ", - // Technician - L"Technicien : Fixer des objets, retirer des pièges, poser des bombes, c'est ça votre boulot ! ± ", - // Doctor - L"Docteur : Vous pouvez faire une intervention chirurgicale avec un couteau suisse et un chewing gum et cela n'importe où ! ± ", - // Athletics - L"Athlétique : Votre vitesse et votre vitalité sont au top des possibilités actuelles ! ± ", - // Bodybuilding - L"Culturiste : Cette grande figure musclée qui ne peut pas être dominée, est en faite vous en réalité ! ± ", - // Demolitions - L"Sabotage : Vous pouvez réduire à néant toute une ville rien qu'avec des produits ménagers ! ± ", - // Scouting - L"Reconnaissance : Rien n'échappe à votre vigilance ! ± ", - // Covert ops - L"Déguisement : Vous ferez passer 007 pour un amateur ! ± ", - // Radio Operator - L"Opérateur radio : Votre maitrise des appareils de communication élargit le champs des compétences tactiques et stratégiques de votre équipe. ± ", - // Survival - L"Survival: Nature is a second home to you. ± ", // TODO.Translate -}; - -STR16 NewInvMessage[] = -{ - L"Le sac à dos ne peut être ramassé pour le moment", - L"Pas de place pour le sac à dos", - L"Sac à dos non trouvé", - L"La fermeture éclair fonctionne seulement en combat", - L"Ne peut se déplacer, si la fermeture éclair est ouverte", - L"Êtes-vous sûr de vouloir vendre tous les articles du secteur ?", - L"Êtes-vous sûr de vouloir supprimer tous les articles du secteur ?", - L"Ne peut pas escalader avec un sac à dos", - L"Tous les sacs à dos sont posés à terre", - L"Tous les sacs à dos sont ramassés", - L"%s drops backpack", - L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Initialisation du serveur RakNet...", - L"Le serveur a démarré, en attente de connexion...", - L"Vous devez maintenant vous connecter avec votre client sur le serveur en pressant '2'.", - L"Le serveur est déjà démarré.", - L"Le serveur n'a pas pu démarré. Terminé.", - // 5 - L"%d/%d clients sont déjà en mode realtime.", - L"Le serveur s'est déconnecté et s'est éteint.", - L"Le serveur n'est pas démarré.", - L"Les clients sont en cours de chargement, veuillez patienter...", - L"Vous ne pouvez pas changer de dropzone alors que le serveur vient de démarrer.", - // 10 - L"Fichier envoyé '%S' - 100/100", - L"Envoie de fichier fini pour '%S'.", - L"Départ d'envoie de fichier pour '%S'.", - L"Utilisez la vue aérienne pour sélectionner la carte que vous voulez jouer. Si vous voulez changer de carte, vous devez le faire avant de cliquer sur \"Démarrer la partie\".", -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Initialisation du client RakNet...", - L"Connexion à l'IP : %S ...", - L"Réception des optiosn de jeu :", - L"Vous êtes déjà connecté.", - L"Vous êtes déjà connecté...", - // 5 - L"Client #%d - '%S' a engagé '%s'.", - L"Client #%d - '%S' a engagé un autre mercenaire.", - L"Vous êtes prêt - Total prêts = %d/%d.", - L"Vous n'êtes pas encore prêts - Total prêt = %d/%d.", - L"Départ de bataille...", - // 10 - L"Client #%d - '%S' est prêt - Total prêts = %d/%d.", - L"Client #%d - '%S' n'est pas encore prêt - Total prêts = %d/%d", - L"Vous êtes prêt. En attente des autres clients... Cliquez sur 'OK', si vous n'êtes plus prêt.", - L"Laissez-nous, la bataille commence !", - L"Un client doit poser sa candidature pour démarrer la partie.", - // 15 - L"Le jeu ne peut démarrer. Aucun mercenaire n'a été engagé...", - L"En attente de 'OK' de la part du serveur pour ouvrir le portable...", - L"Interrompu", - L"Fin de l'interromption", - L"Coordonnées de réseau de souris :", - // 20 - L"X : %d, Y : %d", - L"Réseau numéro : %d", - L"Le serveur figure seulement", - L"Choissez les étapes à ignorer : ('1' - Activer portable/l'embauche) ('2' - lancer/charger level) ('3' - Unlock UI) ('4' - placement de finition)", - L"Secteur=%s, Clients max.=%d, Mercs max.=%d, Game_Mode=%d, Same Merc=%d, Multiplicateur de Dégâts=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Équip=%d, Dis Moral=%d, Testing=%d", - // 25 - L"", - L"Nouvelle conncetion : Client #%d - '%S'.", - L"Équipe : %d.",//not used any more - L"'%s' (client %d - '%S') a été tué par '%s' (client %d - '%S')", - L"Client kické #%d - '%S'", - // 30 - L"Début de manche pour les numéros de clients : #1: , #2: %S, #3: %S, #4: %S", - L"Début de manche pour le client #%d", - L"Requête pour le realtime...", - L"Commutation en mode realtime.", - L"Erreur lors de la commutation.", - // 35 - L"Dévérouiller le portable pour l'embauche ? (Tous les clients sont connectés ?)", - L"Le serveur a déverrouillé le portable pour l'embauche. Vous pouvez commencez a embauché !", - L"Interruption.", - L"Vous ne pouvez pas changer la dropzone, si vous êtes seulement un client et pas le gérant du serveur.", - L"Vous avez décliné l'offre de vous rendre, car vous êtes dans une partie multijoueur.", - // 40 - L"Tous vos mercenaires sont morts !", - L"Mode spectateur activé.", - L"Vous avez été vaincu !", - L"Désolé, escalader sur les toits est interdit en multijoueur.", - L"Vous avez embauché '%s'", - // 45 - L"Vous ne pouvez pas changer la carte une fois que l'achat a commencé", - L"Changement de carte : '%s'", - L"Le client '%s' s'est déconnecté, il a été retiré du jeu", - L"Vous avez été déconnecté du jeu, retourner au menu principal", - L"Connexion échouée, reconnexion dans 5 s. Encore %i tentatives...", - //50 - L"Connexion échouée, abandon de l'opération...", - L"Vous ne pouvez pas démarrer la partie tant qu'un autre joueur ne s'est pas connecté", - L"%s : %s", - L"Envoyer à tous", - L"Alliés seulement", - // 55 - L"Vous ne pouvez pas rejoindre cette partie car elle a déjà commencé.", - L"%s (équipe) : %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"Réception de tous les fichiers depuis le serveur.", - L"'%S' a fini de télécharger depuis le serveur.", - L"'%S' a commencé à télécharger depuis le serveur.", - L"Vous ne pouvez pas démarrer le jeu tant que tous les joueurs n'ont pas fini de recevoir les fichiers", - L"Ce serveur requiert des fichiers modifiés pour pouvoir jouer, voulez-vous continuer ?", - // 65 - L"Cliquez sur 'Ready' pour aller à l'écran tactique.", - L"Vous ne pouvez pas vous connecter car votre version %S est différente de celle du serveur %S.", - L"Vous avez tué un soldat ennemi.", - L"Vous ne pouvez pas commencer la partie car toutes les équipes sont les mêmes.", - L"Le serveur a choisi l'option du Nouvel Inventaire (NI), mais la résolution de votre écran ne le supporte pas.", - // 70 - L"Impossible de sauver les fichiers reçus '%S'", - L"La bombe de %s a été désamorcé par %s", - L"Vous avez perdu, quel honte !", // All over red rover - L"Mode spectateur désactivé", - L"Choisir le numéro du client a kické :", - // 75 - L"La team %s a été anéantie.", - L"Le client n'a pas réussi à démarrer. Terminé.", - L"Le client s'est déconnecté et s'est fermé.", - L"Le client n'est pas démarré.", - L"INFO : Si le jeu est bloqué (la barre de progression des adversaires ne se déplace pas), notifier le au serveur en appuyant sur ALT + E pour aller directement à votre tour de jeu !", - // 80 - L"Tour de l'IA - %d restant(s)", -}; - -STR16 gszMPEdgesText[] = -{ - L"N", - L"E", - L"S", - L"O", - L"C", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"Foxtrot", - L"Bravo", - L"Delta", - L"Charlie", - L"N/A", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Type de jeu : ", - L"Joueurs : ", - L"Merc pris : ", - L"Vous ne pouvez pas changer le bord de départ tant que le portable est ouvert.", - L"Vous ne pouvez pas changer d'équipe tant que le portable est ouvert.", - L"Merc aléatoire : ", - L"O", - L"Difficulté : ", - L"Version Serveur : ", -}; - -STR16 gzMPSScreenText[] = -{ - L"Tableaux des scores", - L"Continue", - L"Annulé", - L"Joueurs", - L"Tués", - L"Morts", - L"Armée de la Reine", - L"Touchés", - L"Ratés", - L"Précision", - L"Dégâts faits", - L"Dégâts reçus", - L"Attendez le serveur avant d'appuyer sur \"Continue\"." -}; - -STR16 gzMPCScreenText[] = -{ - L"Annulé", - L"Connexion au serveur", - L"Obtention des options du serveur", - L"Téléchargement des fichiers modifiés", - L"Appuyer sur \"ESC\" pour annulé ou \"Y\" pour parler", - L"Appuyer sur \"ESC\" pour annulé", - L"Prêt" -}; - -STR16 gzMPChatToggleText[] = -{ - L"Envoyer à tous", - L"Envoyer aux alliés seulement", -}; - -STR16 gzMPChatboxText[] = -{ - L"Chat multijoueurs", - L"\"ENTRÉE\" pour envoyer, \"ESC\" pour annuler", -}; - -// Following strings added - SANDRO -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits - L"À la page suivante, vous allez choisir vos traits de compétence selon votre spécialisation professionnel comme un mercenaire. Pas plus de deux traits différents ou un trait expert peuvent être choisis.", - L"Vous pouvez aussi choisir seulement un ou même aucun trait, ce qui vous donnera un bonus à vos points d'attributs, une sorte de compensation. Notez que les compétences : mécanique, ambidextre et camouflage ne peuvent pas être prises aux niveaux experts.", - // For new major/minor traits - L"L'étape suivante est le choix de vos traits de compétences. À la première page vous pouvez choisir jusqu'à deux traits principaux qui représentent surtout votre rôle dans une escouade. Tandis qu'à la deuxième page, c'est la liste de vos traits mineurs qui représentent des exploits personnels.", - L"Pas plus de trois choix au total sont possibles. Ce qui signifie que si vous ne choisissez aucun trait principal, vous pourrez alors choisir trois traits secondaires. Si vous choisissez deux traits principaux (ou un en expert), vous pourrez alors choisir qu'un seul trait secondaire...", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"Ajustez, s'il vous plaît, vos attributs physiques selon vos vraies capacités. Vous ne pouvez pas augmenter les scores au-dessus de", - L"IMP : Examen des attributs et compétences", - L"Points bonus :", - L"Départ au niveau", - // New strings for new traits - L"À la page suivante vous allez spécifier vos attributs physiques comme : la santé, la dextérité, l'agilité, la force et la sagesse. Les attributs ne peuvent pas aller plus bas que %d.", - L"Le reste est appelé \"habilités\" et à la différence des attributs, ils peuvent être mis à zéro signifiant que vous serez un incapable dans cette habilité !", - L"Tous les scores sont mis à un minimum au début. Notez que certains attributs sont mis a des valeurs spécifiques correspondant aux traits de compétence que vous avez choisis. Vous ne pouvez pas mettre ces attributs plus bas.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"IMP : Analyse du cacractère", - L"L'analyse de votre personnage est la prochaine étape. À la première page, on vous montrera une liste d'attitudes à choisir. Nous imaginons bien que vous pourriez vous identifier à plusieurs d'entre elles, mais vous ne pourrez en choisir qu'une seule. Choisissez celle qui vous correspond le plus.", - L"La deuxième page montre des handicaps que vous pourriez avoir. Si vous souffrez de n'importe lequel de ces handicaps, choisissez le (un seul choix est possible). Soyez honnête, pensez que c'est un entretien d'embauche et qu'il est toujours important de faire connaitre votre vraie personnalité.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Normal", - L"Amical", - L"Solitaire", - L"Optimiste", - L"Péssimiste", - L"Aggressif", - L"Arrogant", - L"Gros tireur", - L"Trou du cul", - L"Lâche", - L"IMP : Attitudes", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Normal", - L"Sociable", - L"Solitaire", - L"Optimiste", - L"Assuré", - L"Intellectuel", - L"Primitif", - L"Aggressif", - L"Flegmatique", - L"Intrépide", - L"Pacifiste", - L"Malicieux", - L"Frimeur", - L"Coward", // TODO.Translate - L"IMP : Traits de caractère", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"IMP : Teint et musculature", - L"IMP : Couleurs", - L"Choisissez les couleurs respectives de votre peau, vos cheveux et vos habits. Ainsi que votre physionomie (traits physiques).", - L"Choisissez les couleurs respectives de votre peau, vos cheveux et vos habits.", - L"Cocher ici pour utiliser une prise en main alternative du fusil.", - L"\n(Attention : vous devez avoir une grande force pour l'utiliser.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Cheveux", - L"Teint", - L"T-shirt", - L"Pantalon", - L"Corps normal", - L"Corps musclé", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"Pas d'handicap", - L"Déteste la chaleur", - L"Nerveux", - L"Claustrophobe", - L"Mauvais nageur", - L"Peur des insectes", - L"Distrait", - L"Psychotique", - L"Mauvaise audition", - L"Mauvaise vue", - L"Hemophiliac", // TODO.Translate - L"Fear of Heights", - L"Self-Harming", - L"IMP : Handicaps", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] = -{ - L"Nous gageons que vous êtes heureux que ceci ne soit pas un message audio.", - L"Vous avez peut-être fréquenté trop de discothèques dans votre jeunesse ou vous avez été pris sous un bombardement... Ou vous êtes tout simplement vieux. Dans tous les cas, votre équipe ferait bien d'apprendre le langage des signes.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"Vous êtes foutu si vous perdez vos lunettes.", - L"C'est ce qui arrive lorsque l'on passe ses journées devant un écran. Vous auriez dû manger plus de carottes. Avez-vous déjà vu un lapin à lunettes ? Improbable, hein ?", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate -{ - L"Are you SURE this is the right job for you?", - L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate -{ - L"Let's just say you are a grounded person.", - L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Might want to make sure your knives are always clean.", - L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s n'a pas assez de force pour accomplir cette tâche.", - L"%s n'a pas assez de dextérité pour accomplir cette tâche.", - L"%s n'est pas assez agile pour accomplir cette tâche.", - L"%s n'est pas assez en bonne santé pour accomplir cette tâche.", - L"%s n'a pas assez de sagesse pour accomplir cette tâche.", - L"%s n'est pas assez bon tireur pour accomplir cette tâche.", - // 6 - 10 - L"%s n'est pas assez bon médecin pour accomplir cette tâche.", - L"%s n'est pas assez bon en mécanique pour accomplir cette tâche.", - L"%s n'est pas assez bon en commandement pour accomplir cette tâche.", - L"%s n'est pas assez bon en explosif pour accomplir cette tâche.", - L"%s n'a pas assez d'expérience pour accomplir cette tâche.", - // 11 - 15 - L"%s n'a pas assez de moral pour accomplir cette tâche.", - L"%s est trop épuisé pour effectuer cette tâche.", - L"Loyauté insuffisante à %s. Les habitants refusent de vous permettre de faire cette tâche.", - L"Il n'y a plus d'affectation possible pour : %s.", - L"Il n'y a plus d'affectation possible pour : %s.", - // 16 - 20 - L"%s n'a pas trouvé d'objets à réparer.", - L"%s a perdu %s, alors qu'il travaillait dans le secteur %s !", - L"%s a perdu %s, alors qu'il travaillait sur %s à %s !", - L"%s a été blessé, alors qu'il travaillait dans le secteur %s et nécessite des soins médicaux immédiats !", - L"%s a été blessé, alors qu'il travaillait %s à %s et nécessite des soins médicaux immédiats !", - // 21 - 25 - L"%s a été blessé, alors qu'il travaillait dans le secteur %s. Il ne semble pas être en trop mauvais état.", - L"%s a été blessé, alors qu'il travaillait sur %s à %s. Il ne semble pas être en trop mauvais état.", - L"Les résidents de %s semblent être excédés par la présence de %s.", - L"Les résidents de %s semblent être excédés par le travail de %s sur %s.", - L"Les actions de %s dans le secteur %s ont causé une perte de loyauté à travers la région !", - // 26 - 30 - L"Les actions de %s sur %s à %s ont causé une perte de loyauté à travers la région !", - L"%s est ivre.", // <--- This is a log message string. - L"%s est devenu gravement malade dans le secteur %s et commence à manquer à son devoir.", - L"%s est devenu gravement malade et ne peut continuer son travail sur %s à %s.", - L"%s a été blessé dans le secteur %s.", // <--- This is a log message string. - // 31 - 35 - L"%s a été gravement blessé dans le secteur %s.", //<--- This is a log message string. - L"Il y a actuellement des prisonniers qui ont connaissance de l'identité de : %s", - L"%s est actuellement trop connu(e) comme indic. Attendez au moins %d heures.", - - -}; - -STR16 gzFacilityRiskResultStrings[]= -{ - L"Force", - L"Agilité", - L"Dextérité", - L"Sagesse", - L"Santé", - L"Tir", - // 5-10 - L"Commandant", - L"Mécanique", - L"Médecin", - L"Explosif", -}; - -STR16 gzFacilityAssignmentStrings[]= -{ - L"AMBIENT", - L"Collecter renseignements", - L"Manger", - L"Repos", - L"Réparer les objets", - L"Réparer %s", // Vehicle name inserted here - L"Réparer le robot", - // 6-10 - L"Docteur", - L"Patient", - L"Apprendre Force", - L"Apprendre Dextérité", - L"Apprendre Agilité", - L"Apprendre Santé", - // 11-15 - L"Apprendre Tir", - L"Apprendre Médecin", - L"Apprendre Mécanique", - L"Apprendre Commandement", - L"Apprendre Explosif", - // 16-20 - L"Élève Force", - L"Élève Dextérité", - L"Élève Agilité", - L"Élève Santé", - L"Élève Tir", - // 21-25 - L"Élève Médecin", - L"Élève Mécanique", - L"Élève Commandement", - L"Élève Explosif", - L"Entraîneur Force", - // 26-30 - L"Entraîneur Dextérité", - L"Entraîneur Agilité", - L"Entraîneur Santé", - L"Entraîneur Tir", - L"Entraîneur Médecin", - // 30-35 - L"Entraîneur Mécanique", - L"Entraîneur Commandement", - L"Entraîneur Explosif", - L"Interroger prisonnier", // added by Flugente - L"Infiltré", - // 36-40 - L"Répand une propagande", - L"Fait de la propagande", // spread propaganda (globally) - L"Collecte les rumeurs", - L"Dirige la Milice", // militia movement orders -}; -STR16 Additional113Text[]= -{ - L"Jagged Alliance 2 v1.13 mode fenêtré exige une profondeur de couleur de 16 bit.", - L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate - L"Erreur interne en lisant %s emplacements depuis la sauvegarde : Le nombre d'emplacements dans la sauvegarde (%d) diffère des emplacements définis dans les paramètres de ja2_options.ini (%d)", - // WANNE: Savegame slots validation against INI file - L"Mercenaires (MAX_NUMBER_PLAYER_MERCS) / Véhicule (MAX_NUMBER_PLAYER_VEHICLES)", - L"Ennemis (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Créatures (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Milices (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Civils (MAX_NUMBER_CIVS_IN_TACTICAL)", -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -STR16 sEnemyTauntsFireGun[]= -{ - L"Suce-moi ça !", - L"Dis bonjour à ma pétoire !", - L"Viens par là !", - L"T'es à moi !", - L"Meurs !", - L"T'as peur enfoiré ?", - L"Ça va faire mal !", - L"Viens-là bâtard !", - L"Allez viens ! Je n'ai pas toute la vie !", - L"Viens voir papa !", - L"Je vais t'envoyer à six pieds sous terre dans peu de temps !", - L"Retourne chez ta mère, looserr !", - L"Hé, tu veux jouer ?", - L"T'aurais dû rester chez toi, salope !", - L"Enculé(e) !", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"C'est l'heure du barbecue !", - L"J'ai un cadeau pour toi !", - L"Paf !", - L"Souris, l'oiseau va sortir !", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Attrape !", - L"Et c'est parti !", - L"Prends-toi ça !", - L"Et un pour toi !", - L"Mouhahaha !", - L"Attrape ça sale porc !", - L"Ça va faire mal !", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"J'vais te trépaner !", - L"Viens voir papa !", - L"Montre-moi tes couilles !", - L"Je vais te découper en rondelles !", - L"Hannibal Lecter, ppfft tu ne me connais pas !", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"On est vraiment dans une grosse merde...", - L"Ils disent de rejoindre l'armée. Mais pas pour cette merde !", - L"J'en ai plein le cul !", - L"Oh mon Dieu !", - L"On n'est pas assez payé pour ce foutoir !", - L"C'est vraiment trop pour moi.", - L"Je vais chercher quelques potes !", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"T'as entendu !", - L"Qui est là ?", - L"Qu'est-ce que c'est ?", - L"Eh ! C'est quoi ce bordel ?", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"Ils sont là !", - L"Yeah, la partie peut commencer !", - L"J'espérais que ça n'arriverait jamais...", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"Aaaïe !", - L"Pouah !", - L"Ça... Ça fait mal !", - L"Enfoiré !", - L"Tu vas regret... uhh... ter ça.", - L"C'est quoi ce bordel ?", - L"Maintenant vous... m'avez énervé(e) !", - -}; - - -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Da'ffff... !", - L"Oh mon Dieu !", - L"Oh putain !", - L"Ennemi !!!", - L"Alerte ! Alerte !", - L"Ils sont là !", - L"Attaque !", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Description", - L"Général", - L"Avancés", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Desc", - L"Gén", - L"Ava", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Primaire", - L"Secondaire", - L"Coût PA", - L"Rafale/auto", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Prop.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|P|a|g|e |d|e |d|e|s|c|r|i|p|t|i|o|n :\n \nMontre les informations textuelles de base sur cet objet.", - L"|P|r|o|p|r|i|é|t|é|s |g|é|n|é|r|a|l|e|s :\n \nMontre les données spécifiques de cet objet.\n \nArmes : Cliquez à nouveau pour voir la deuxième page.", - L"|P|r|o|p|r|i|é|t|é|s |a|v|a|n|c|é|e|s :\n \nMontre les bonus donnés par cet objet.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|P|r|o|p|r|i|é|t|é|s |p|r|i|m|a|i|r|e|s :\n \nPropriétés et données liées à la classe de cet objet\n(Armes/Armures/ etc.).", - L"|P|r|o|p|r|i|é|t|é|s |s|e|c|o|n|d|a|i|r|e|s :\n \nLes caractéristiques supplémentaires de cet objet,\net/ou capacités secondaires possibles.", - L"|C|o|û|t |e|n |P|A :\n \nCoût en PA pour tirer ou manipuler cette arme.", - L"|R|a|f|a|l|e|/|A|u|t|o|m|a|t|i|q|u|e :\n \nDonnées liées au tir de cette arme en mode rafale ou auto.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|P|r|o|p|r|i|é|t|é |i|c|ô|n|e\n \nSurvol avec la souris pour révéler le nom de la propriété.", - L"|V|a|l|e|u|r |b|a|s|i|q|u|e\n \nValeurs de base données par cet objet, excluant\nles bonus ou pénalités liés aux accessoires ou munitions.", - L"|B|o|n|u|s |d|e|s |a|c|c|e|s|s|o|i|r|e|s\n \nBonus ou pénalités donnés par les munitions ou accessoires.", - L"|V|a|l|e|u|r |f|i|n|a|l|e\n \nValeur finale donnée par cette objet, incluant les\nbonus/pénalités des accessoires et munitions.", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Propriété icône (survoler avec la souris pour voir le nom).", - L"Bonus/pénalité donné |d|e|b|o|u|t.", - L"Bonus/pénalité donné |a|c|c|r|o|u|p|i.", - L"Bonus/pénalité donné |c|o|u|c|h|é.", - L"Bonus/pénalité donné", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|P|r|é|c|i|s|i|o|n", - L"|D|é|g|â|t", - L"|P|o|r|t|é|e", - L"|D|i|f|f|i|c|u|l|t|é |d|e |p|r|i|s|e |e|n |m|a|i|n", - L"|N|i|v|e|a|u |d|e |v|i|s|é|e", - L"|G|r|o|s|s|i|s|s|e|m|e|n|t |d|e |l|a |l|u|n|e|t|t|e", - L"|F|a|c|t|e|u|r |d|e |p|r|o|j|e|c|t|i|o|n", - L"|C|a|c|h|e|-|f|l|a|m|m|e", - L"|I|n|t|e|n|s|i|t|é", - L"|F|i|a|b|i|l|i|t|é", - L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", - L"|P|o|r|t|é|e |m|i|n|i|m|u|m |p|o|u|r |b|o|n|u|s |d|e |v|i|s|é|e", - L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s", - L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |m|e|t|t|r|e |e|n |j|o|u|e", - L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |t|i|r|e|r", - L"|N|o|m|b|r|e |d|e |P|A |t|i|r |e|n |r|a|f|a|l|e", - L"|N|o|m|b|r|e |d|e |P|A |t|i|r |e|n |a|u|t|o|m|a|t|i|q|u|e", - L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |r|e|c|h|a|r|g|e|r", - L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |r|e|c|h|a|r|g|e|r |m|a|n|u|e|l|l|e|m|e|n|t", - L"", // No longer used! - L"|R|e|c|u|l| |t|o|t|a|l", - L"|T|i|r |a|u|t|o|m|a|t|i|q|u|e |p|o|u|r |5 |P|A", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nDétermine si des balles tirées par cette arme dévieront\nloin de l'impact d'origine.\n \nÉchelle : 0-100.\nValeur élevée recommandée.", - L"\n \nDétermine la quantité moyenne de dégâts faits par\ndes balles tirées de cette arme, avant\n de tenir compte de l'armure et de la pénétration d'armure.\n \nValeur élevée recommandée.", - L"\n \nDistance maximale (en cases) que vont parcourir les balles\ntirées par cette arme avant de redescendre vers le sol.\n \nValeur élevée recommandée.", - L"\n \nDétermine la difficulté pour tenir cette arme au tir. Une difficulté de manipulation élevée réduit les chances de toucher en visant, mais particulièrement sans viser. Valeur faible recommandée.", - L"\n \nCeci est le nombre de niveau de visée supplémentaire que\nvous pouvez ajouter en visant avec cette arme.\n \nRéduire le nombre de niveau de visée signifie que chaque\nniveau ajoute proportionnellement plus de précision au tir.\nPar conséquent, avoir peu de niveaux de visée vous\npermettra de garder une bonne précision avec une vitesse\nde mise en joue élevée !\n \nValeur faible recommandée.", - L"\n \nUne valeur plus grande de *1.0, réduit proportionnellement\nles erreurs de visée à distance.\n \nN'oubliez pas qu'un trop gros zoom sur une cible\nproche vous pénalisera !\n \nLa valeur de 1.0 signifie qu'aucune lunette est installée.", - L"\n \nRéduit proportionnellement les erreurs de visée à distance.\n \nCes effets ne sont valables qu'à une distance donnée,\net se dissipent ou disparaissent\nà une longue distance.\n \nValeur élevée recommandée.", - L"\n \nQuand cette propriété est en vigueur, l'arme\nne produit pas d'éclair lors du tir.\n \nLes ennemis ne seront plus en mesure de vous repérer\nà cause de la flamme (mais ils\npourront toujours vous entendre !).", - L"\n \nDistance (en cases) de l'intensité sonore que fait votre arme\nlorsque vous tirez avec.\n \nLes ennemis placés en deçà de cette distance entendront\nvotre tir.\n \nValeur faible recommandée.", - L"\n \nDétermine la vitesse de déterioration de cette arme\nà l'usage.\n \nValeur élevée recommandée.", - L"\n \nDétermine la difficulté de réparation de cette arme.\n \nValeur élevée recommandée.", - L"\n \nPortée minimum où la lunette de visée fournit un bonus de visée.", - L"\n \nFacteur de chance de toucher accordé par un laser.", - L"\n \nLe nombre de PA requis pour mettre en joue.\n \nQuand cette arme est prête, vous pouvez tirez plusieurs fois\nsans avoir de coût supplémentaire.\n \nAnnule automatiquement cette opération, si vous faîtes des\nactions autre que pivoter ou tirer.\n \nValeur faible recommandée.", - L"\n \nLe nombre de PA requis pour effectuer\nune attaque simple avec cette arme.\n \nPour les fusils, c'est le coût pour un tir\nsimple sans niveau de visée.\n \nSi cette icône est grisée, les tirs simples\nne sont pas possible.\n \nValeur faible recommandée.", - L"\n \nLe nombre de PA requis pour tirer une Rafale.\n \nle nombre de balles tirées pour chaque rafale est\ndéterminé par l'arme elle-même, et indiqué\npar le nombre de balles sur cette icône.\n \nSi cette icône est grisée, le mode rafale\nn'est pas possible avec cette arme.\n \nValeur faible recommandée.", - L"\n \nLe nombre de PA requis pour tirer en Automatique.\n \nSi vous voulez tirez plus de balles,\ncela coûtera plus de PA.\n \nSi cette icône est grisée, le mode Auto\nn'est pas possible avec cette arme.\n \nValeur faible recommandée.", - L"\n \nLe nombre de PA requis pour recharger cette arme.\n \nValeur faible recommandée.", - L"\n \nLe nombre de PA requis pour recharger cette arme\nentre chaque tir.\n \nValeur faible recommandée.", - L"", // No longer used! - L"\n \nLa distance totale de la bouche de cette arme qui se\ndéplacera entre chaque balle en rafale ou en\nautomatique, si aucune force inverse n'est appliquée.\n \nValeur faible recommandée.", // HEADROCK HAM 5: Altered to reflect unified number. - L"\n \nIndique le nombre de balles qui seront ajoutées\nau mode auto tous les 5 PA que vous dépensez.\n \nValeur élevée recommandée.", - L"\n \nDétermine la difficulté à réparer une arme\net qui peut la réparer complètement.\n \nVert = N'importe qui peut la réparer.\n \nJaune = Seuls des PNJ spécialisés peuvent la\nréparer au-delà du seuil de réparation.\n \nRouge = L'arme ne peut pas être réparée.\n \nValeur élevée recommandée.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|V|a|l|e|u|r |d|e |p|r|o|t|e|c|t|i|o|n", - L"|C|o|u|v|e|r|t|u|r|e", - L"|T|a|u|x |d|e |d|é|g|r|a|d|a|t|i|o|n", - L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nCette propriété d'armure définit de combien elle\nabsorbe les dégâts de chaque attaque.\n \nN'oubliez pas que les attaques perforantes et\ndivers facteurs aléatoires peuvent altérer\nla réduction final des dégâts.\n \nValeur élevée recommandée.", - L"\n \nDétermine la protection de l'armure\nsur votre corps.\n \nSi la protection est inférieure à 100%, les attaques\nont une certaine chance de passer à travers l'armure\nen causant un maximum de dégâts.\n \nValeur élevée recommandée.", - L"\n \nIndique à quelle vitesse les conditions de l'armure\nvont chuter et qui est proportionnelle aux\ndégâts subis.\n \nValeur faible recommandée.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|T|a|u|x |d|e |p|é|n|é|t|r|a|t|i|o|n", - L"|É|c|r|a|s|e|m|e|n|t |d|e |l|a |b|a|l|l|e", - L"|E|x|p|l|o|s|i|o|n |a|v|a|n|t |i|m|p|a|c|t", - L"|T|e|m|p|é|r|a|t|u|r|e |d|u |t|i|r", - L"|T|a|u|x |d|'|e|m|p|o|i|s|o|n|n|e|m|e|n|t", - L"|E|n|c|r|a|s|s|e|m|e|n|t", -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nCeci est la capacité de la balle à pénétrer\nl'armure de la cible.\n \nAvec une valeur supérieure à 1.0, la balle réduiera fortement\nla valeur de protection de l'armure touchée.\n \nValeur élevée recommandée.", - L"\n \nDétermine le potentiel de la balle à faire des dégâts\nsur le corps après avoir traversée l'armure.\n \nAvec une valeur supérieure à 1.0, la balle fera de lourds dégâts\naprès pénétration\nAvec une valeur inférieure à 1.0, la balle fera des dégâts moindre\naprès pénétration.\n \nValeur élevée recommandée.", - L"\n \nMultiplicateur de potentiel de dégâts juste avant\nl'impact de la balle.\n \nAvec une valeur supérieure à 1.0, la balle fera de lourds dégâts.\nUne valeur inférieure à 1.0 fera des dégâts moindre.\n \nValeur élevée recommandée.", - L"\n \nTempérature additionnelle générée par ces munitions.\n \nValeur faible recommandée", - L"\n \nDétermine le pourcentage de dégâts d'une balle empoisonnée.\n \nValeur élevée recommandée.", - L"\n \nEncrassement additionnel généré par ces munitions.\n \nValeur faible recommandée", -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|D|é|g|â|t|s", - L"|D|é|g|â|t|s |é|t|o|u|r|d|i|s|s|a|n|t", - L"|E|x|p|l|o|s|i|o|n |à |l|'|i|m|p|a|c|t", // HEADROCK HAM 5 - L"|R|a|y|o|n |d|'|e|x|p|l|o|s|i|o|n", - L"|R|a|y|o|n |d|'|e|x|p|l|o|s|i|o|n |é|t|o|u|r|d|i|s|a|n|t|e", - L"|R|a|y|o|n |d|'|e|x|p|l|o|s|i|o|n |s|o|n|o|r|e", - L"|D|é|b|u|t |r|a|y|o|n |g|a|z |l|a|c|r|y|m|o|g|è|n|e", - L"|D|é|b|u|t |r|a|y|o|n |g|a|z |m|o|u|t|a|r|d|e", - L"|D|é|b|u|t |r|a|y|o|n |f|l|a|s|h |l|u|m|i|n|e|u|x", - L"|D|é|b|u|t |r|a|y|o|n |f|u|m|é|e", - L"|D|é|b|u|t |r|a|y|o|n |i|n|c|e|n|d|i|e", - L"|F|i|n |r|a|y|o|n |g|a|z |l|a|c|r|y|m|o|g|è|n|e", - L"|F|i|n |r|a|y|o|n |g|a|z |m|o|u|t|a|r|d|e", - L"|F|i|n |r|a|y|o|n |f|l|a|s|h |l|u|m|i|n|e|u|x", - L"|F|i|n |r|a|y|o|n |f|u|m|é|e", - L"|F|i|n |r|a|y|o|n |i|n|c|e|n|d|i|e", - L"|D|u|r|é|e |d|e |l|'|e|f|f|e|t", - // HEADROCK HAM 5: Fragmentation - L"|N|o|m|b|r|e |d|e |s|h|r|a|p|n|e|l|s", - L"|D|é|g|â|t|s |p|a|r |s|h|r|a|p|n|e|l", - L"|P|o|r|t|é|e |d|e|s |s|h|r|a|p|n|e|l|s", - // HEADROCK HAM 5: End Fragmentations - L"|I|n|t|e|n|s|i|t|é |s|o|n|o|r|e", - L"|V|o|l|a|t|i|l|i|t|é", - L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nLa quantité de dégâts causés par cet explosif.\n \nNotez que les explosifs de type \"explosion\" livrent des dégâts\nseulement une fois (quand ils explosent), tandis que les\nexplosifs à effets prolongés livrent cette quantité de dégâts\nà chaque tour jusqu'à ce que l'effet se dissipe.\n \nValeur élevée recommandée.", - L"\n \nLa quantité de dégâts non mortels (étourdissant) causés\npar cet explosif.\n \nNotez que les explosifs de type \"explosion\" livrent des\ndégâts seulement une fois (quand ils explosent), tandis\nque les explosifs à effets prolongés livrent cette\nquantité de dégâts d'étourdissement à chaque tour jusqu'à\nce que l'effet se dissipe.\n \nValeur élevée recommandée.", - L"\n \nCet explosif ne rebondit pas. Il explose dès qu'il touche un obstacle.", // HEADROCK HAM 5 - L"\n \nRayon de l'explosion causé par cet objet.\n \nPlus les ennemis seront loin du centre de l'explosion\nmoins ils subiront de dégâts.\n \nValeur élevée recommandée.", - L"\n \nRayon de l'onde de choc causé par cet objet.\n \nPlus les ennemis seront loin du centre de l'explosion\nmoins ils subiront de dégâts.\n \nValeur élevée recommandée.", - L"\n \nDistance du parcours du bruit causé par ce piège.\n Les ennemis placés en deçà de cette distance entendront\n votre piège et sonneront l'alerte.\n \nValeur faible recommandée.", - L"\n \nRayon de départ libéré par la lacrymogène.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", - L"\n \nRayon de départ libéré par le gaz moutarde.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", - L"\n \nRayon de départ émis par le flash lumineux.\n \nLes cases autours du centre de l'effet deviendront très\nlumineuses, quand celles autours ne seront que\nlégèrement plus lumineuse que la normale.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nÀ noter aussi que contrairement aux autres explosifs qui\nont une durée d'effet, le flash lumineux faiblit\nau cours du temps, avant de disparaître.\n \nValeur élevée recommandée.", - L"\n \nRayon de départ libéré par la fumée.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz. plus important,\nquiconque se trouvant à l'intérieur de la fumée aura des difficultés à se repérer,\net perdra aussi sa visibilité.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", - L"\n \nRayon de départ causés par les flammes.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", - L"\n \nRayon de fin libéré par la lacrymogène avant\nqu'il ne se dissipe.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également le début du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", - L"\n \nRayon de fin libéré par le gaz moutarde avant\nqu'il ne se dissipe.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également le début du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", - L"\n \nRayon de fin émis par le flash lumineux.\n \nLes cases autours du centre de l'effet deviendront très\nlumineuses, quand celles autours ne seront que\nlégèrement plus lumineuse que la normale.\n \nÀ noter également la fin du rayon et la durée de\nl'effet.\n \nÀ noter aussi que contrairement aux autres explosifs qui\nont une durée d'effet, le flash lumineux faiblit\nau cours du temps, avant de disparaître.\n \nValeur élevée recommandée.", - L"\n \nRayon de fin libéré par la fumée.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz. plus important,\nquiconque se trouvant à l'intérieur de la fumée aura des difficultés à se repérer,\net perdra aussi sa visibilité.\n \nÀ noter également la fin du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", - L"\n \nRayon de départ causés par les flammes.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour.\n \nÀ noter également la fin du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", - L"\n \nDurée des effets de l'explosion.\n \nChaque tour, le rayon s'aggrandit d'une case dans\n toutes les directions, avant d'atteindre\nla valeur de fin de rayon indiquée.\n \nQuand la durée a été atteinte, les effets se\ndissipent complètement.\n \nÀ noter aussi que contrairement aux autres explosifs qui\nont une durée d'effet, le flash lumineux faiblit\nau cours du temps, avant de disparaître.\n \nValeur élevée recommandée.", - // HEADROCK HAM 5: Fragmentation - L"\n \nC'est le nombre de shrapnels qui seront\néjectés lors de l'explosion.\n \nLes shrapnels sont comme des balles et\ntoucheront toutes les personnes qui\nsont assez proche de l'explosion.\n \nValeur élevée recommandée.", - L"\n \nLe potentiel des dégâts causés par chaque shrapnel.\n \nValeur élevée recommandée.", - L"\n \nC'est la portée moyenne des shrapnels. Ils peuvent\ncouvrir plus ou moins loin de cette distance.\n \nValeur élevée recommandée.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nDistance (en cases) en deçà de laquelle chaque\nsoldat et mercenaire peuvent entendre l'explosion.\n \nLes ennemis qui entendent cette explosion peuvent alerter de\nvotre présence.\n \nValeur faible recommandée.", - L"\n \nCette valeur représente la chance (sur 100) que cette\nexplosif explose spontanément chaque fois qu'il est endommagé\n(Par exemple, quand il y a d'autres explosions à proximité).\n \nTransporter des explosifs hautement volatiles en combat\nest donc extrêmement risqué et devrait être évitée.\n \nÉchelle : 0-100.\nValeur faible recommandée.", - L"\n \nDétermine la difficulté à réparer complètement un explosif.\n \nVert = N'importe qui peut le réparer.\n \nRouge = Il ne peut pas être réparé.\n \nValeur élevée recommandée.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", - L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", // TODO.Translate - L"|V|o|l|u|m|e", // TODO.Translate -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nDétermine la difficulté à réparer complètement un objet.\n \nVert = N'importe qui peut le réparer.\n \nRouge = Il ne peut pas être réparé.\n \nValeur élevée recommandée.", - L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", // TODO.Translate - L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", // TODO.Translate -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|B|a|l|l|e|s |t|r|a|ç|a|n|t|e|s", - L"|M|u|n|i|t|i|o|n|s |a|n|t|i|-|c|h|a|r", - L"|I|g|n|o|r|e |l|'|a|r|m|u|r|e", - L"|M|u|n|i|t|i|o|n|s |a|c|i|d|e|s", - L"|M|u|n|i|t|i|o|n|s |c|a|s|s|a|n|t |s|e|r|r|u|r|e", - L"|R|é|s|i|s|t|a|n|t |a|u|x |e|x|p|l|o|s|i|f|s", - L"|É|t|a|n|c|h|é|i|t|é", - L"|É|l|e|c|t|r|o|n|i|q|u|e", - L"|M|a|s|q|u|e |à |g|a|z", - L"|B|e|s|o|i|n |d|e |p|i|l|e|s", - L"|P|e|u|t |c|r|o|c|h|e|t|e|r |l|e|s |s|e|r|r|u|r|e|s", - L"|P|e|u|t |c|o|u|p|e|r |d|e|s |f|i|l|s", - L"|P|e|u|t |c|a|s|s|e|r |l|e|s |v|e|r|r|o|u|s", - L"|D|é|t|e|c|t|e|u|r |d|e |m|é|t|a|l", - L"|D|é|c|l|e|n|c|h|e|u|r |à |d|i|s|t|a|n|c|e", - L"|D|é|t|o|n|a|t|e|u|r |à |d|i|s|t|a|n|c|e", - L"|M|i|n|u|t|e|r|i|e |d|e| |d|é|t|o|n|a|t|e|u|r", - L"|C|o|n|t|i|e|n|t |d|e |l|'|e|s|s|e|n|c|e", - L"|C|a|i|s|s|e |à |o|u|t|i|l|s", - L"|O|p|t|i|q|u|e|s |t|h|e|r|m|i|q|u|e|s", - L"|D|i|s|p|o|s|i|t|i|f |à |r|a|y|o|n|s |X", - L"|C|o|n|t|i|e|n|t |d|e |l|'|e|a|u |p|o|t|a|b|l|e", - L"|C|o|n|t|i|e|n|t |d|e |l|'|a|l|c|o|o|l", - L"|T|r|o|u|s|s|e |d|e |1|e|r |s|o|i|n|s", - L"|T|r|o|u|s|s|e |m|é|d|i|c|a|l|e", - L"|B|o|m|b|e |p|o|u|r |s|e|r|r|u|r|e |d|e |p|o|r|t|e", - L"|B|o|i|s|s|o|n", - L"|R|e|p|a|s", - L"|B|a|n|d|e|s |d|e |m|u|n|i|t|i|o|n|s", - L"|H|a|r|n|a|i|s |à |m|u|n|i|t|i|o|n|s", - L"|K|i|t |d|e |d|é|s|a|m|o|r|ç|a|g|e", - L"|O|b|j|e|t |d|i|s|s|i|m|u|l|a|b|l|e", - L"|N|e |p|e|u|t |ê|t|r|e |e|n|d|o|m|m|a|g|é", - L"|F|a|i|t |e|n |m|é|t|a|l", - L"|N|e |f|l|o|t|t|e |p|a|s", - L"|À |d|e|u|x |m|a|i|n|s", - L"|B|l|o|q|u|e |l|e |v|i|s|e|u|r", - L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate - L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|S|h|i|e|l|d", // TODO.Translate - L"|C|a|m|e|r|a", // TODO.Translate - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate - L"|B|l|o|o|d |B|a|g", // 44 - L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nCes munitions, en mode Auto ou rafale, ont la propriété d'être\ndes des balles traçantes.\n \nLa lumière qu'apporte les balles traçantes lors d'une rafale\npermet d'avoir une meilleur précision et d'être ainsi plus\nmortel malgré le recul de l'arme.\n \nDe plus, ces balles créent un halo lumineux permettant de\nrévéler l'ennemi pendant la nuit. Cependant, elles révèlent\naussi la position du tireur à l'ennemi !\n \nLes balles traçantes désactive automatiquement le\ncache-flamme installé sur l'arme utilisé.", - L"\n \nCes munitions peuvent faire des dégâts aux chars.\n \nLes munitions SANS cette propriété ne feront aucun dégât quel que\nsoit le char.\n \nMême avec cette propriété, n'oubliez pas que la plupart des armes\nne feront que peu de dégâts, donc n'en abusez pas.", - L"\n \nCes munitions ignorent complètement l'armure.\n \nQuand vous tirez sur un ennemi avec une armure, cela sera comme s'il\nn'en avait pas, permettant ainsi de faire un maximum de dégâts !", - L"\n \nLorsque cette munition frappe une cible avec une armure,\ncette dernière se dégradera très rapidement.\n \nCeci peut potentiellement retirer l'armure de la cible !", - L"\n \nCette munition est exceptionnelle pour casser les serrures.\n \nTirez directement sur la serrure de la porte ou du\ncoffre pour faire de lourds dégâts sur le mécanisme.", - L"\n \nCette armure est trois fois plus résistante contre les\nexplosifs que sa valeur indiquée.\n \nQuand une explosion heurte cette armure, la valeur de\nsa protection est considérée comme trois fois plus\nélevée que celle indiquée.", - L"\n \nCet objet est imperméable à l'eau. Il ne recevra pas de\ndégâts causés par l'eau.\n \nLes objets SANS cette propriété vont progressivement se\ndétériorer, si la personne nage avec.", - L"\n \nCet objet est de nature électronique et contient des\ncircuits complexes.\n \nLes objets électroniques sont intrinsèquement plus\ndifficiles à réparer, d'autant plus si vous n'avez pas\nles compétences nécessaires.", - L"\n \nLorsque cet objet est porté sur le visage, il le protègera\nde tous les gaz nocifs.\n \nNotez que certains gaz sont corrosifs et pourrait bien\npénétrer à travers le masque...", - L"\n \nCet objet requière des piles. Sans les piles, vous ne pouvez pas\nactiver ces principales caractéristiques.\n \nPour utiliser un jeu de piles, attachez-les à cette objet\ncomme si vous m'étiez une lunette de visée à votre arme.", - L"\n \nCet objet peut être utilisé pour crocheter des portes\nou des containers verrouillés.\n \nLe crochetage est silencieux, mais nécessite des\ncompétences en mécanique. Il améliore\nla chance au crochetage de ", //JMich_SkillsModifiers: needs to be followed by a number", - L"\n \nCet objet peut être utilisé pour couper les clôtures de fil.\n \nCela autorise le mercenaire a passé à travers des zones\nsécurisées, pour éventuellement surprendre l'ennemi !", - L"\n \nCet objet peut être utilisé pour forcer des portes\nou des coffres verrouillés.\n \nForcer des serrures, requière une grande force,\ngénère beaucoup de bruits et peut facilement\nvous épuisez. Cependant, c'est une bonne façon\nd'ouvrir une serrure sans avoir des talents en\nmécanique ou des outils adéquates. Il améliore\nvotre chance de ", //JMich_SkillsModifiers: needs to be followed by a number - L"\n \nCet objet peut être utilisé pour détecter des objets métalliques\nenfouis sous terre.\n \nNaturellement, sa fonction première est de détecter les mines\nsans que vous ayez les compétences nécessaires pour les repérer\nà l'œil nu.\n \nPeut-être trouverez-vous certains trésors cachés...", - L"\n \nCet objet peut être utilisé pour faire exploser une bombe\nqui aura été amorcée par un détonateur.\n \nPlantez la bombe en 1er, puis utilisez votre déclencheur\nà distance pour l'activer quand c'est le bon moment.", - L"\n \nQuand il est attaché à un dispositif explosif et positionné\ndans le bon sens, ce détonateur peut être déclenché par un\ndétonateur (séparé) à distance.\n \nLes détonateurs à distance sont excellents pour faire des\npièges, car ils se déclenchent quand vous le souhaitez.\n \nDe plus, vous avez tout le temps pour déguerpir !", - L"\n \nQuand il est attaché à un dispositif explosif et positionné\ndans le bon sens, ce détonateur va lancer un compte à\nrebours défini et explosera quand le temps sera écoulé.\n \nCes détonateurs avec minuterie sont pas chers et faciles à\ninstaller, mais vous aurez besoin de temps pour pouvoir\ndéguerpir de là !", - L"\n \nCet objet contient de l'essence.\n \nIl pourrait arriver à point nommé, si vous aviez besoin\nde remplir un réservoir d'essence...", - L"\n \nCet objet contient divers outils qui peuvent être utilisés\npour réparer d'autres objets.\n \nUne caisse à outils est toujours nécessaire lorsque vous\nêtes en mission de réparation. Il améliore\nl'efficacité en réparation de ", //JMich_SkillsModifiers: need to be followed by a number - L"\n \nQuand équipé sur le visage, cet objet donne la capacité de\nrepérer les ennemis à travers les murs, grâce à leur\nsignature thermique.", - L"\n \nCe merveilleux dispositif peut être utilisé pour repérer\nles ennemis en utilisant les rayons X.\n \nCela révélera tous les ennemis à une certaine distance\npour une courte période de temps.\n \nGardez cela loin de vos organes reproductifs !", - L"\n \nCet objet contient de l'eau potable bien fraiche.\nÀ boire lorsque vous êtes assoiffé.", - L"\n \nCet objet contient du digestif, gnôle, eau-de-vie, liqueur,\nqu'importe comment vous appelez cela.\n \nÀ prendre avec modération. Boire ou conduire !\nPeut causer une cirrhose du foie.", - L"\n \nIl s'agit d'un kit médical basic, contenant les ustensiles\nrequis pour faire une intervention médicale basic.\n \nIl peut être utilisé pour soigner un mercenaire blessé et\nempêcher le saignement.\n \nPour une guérison optimale, utilisez une véritable trousse\nde soins et/ou beaucoup de repos.", - L"\n \nIl s'agit d'un kit médical complet, qui peut être utilisé\npour une opération chirurgicale ou autre cas sérieux.\n \nUne trousse de soins est toujours nécessaire lorsque vous\nêtes en mission de docteur.", - L"\n \nCet objet peut être utilisé pour faire sauter les portes\nou coffres verrouillés.\n \nDes compétences en explosion sont nécessaires pour éviter\nune explosion prématurée.\n \nExploser les serrures, est relativement facile et rapide\nà faire. Cependant, c'est très bruyant et dangereux pour\nla plupart des mercenaires.", - L"\n \nCette boisson étanchera votre soif\nsi vous la buvez.", - L"\n \nCeci vous nourrira\nsi vous l'ingurgitez.", - L"\n \nVous alimenterez une mitrailleuse\navec ces bandes de munitions.", - L"\n \nVous nourrirez une mitrailleuse\navec ces munitions stockées dans\nce harnais.", - L"\n \nCet objet améliore votre chance de désamorçage de ", - L"\n \nCet objet est dissimulable,\ny compris ses accessoires.", - L"\n \nCet objet ne peut pas être endommagé.", - L"\n \nCet objet est en métal.\nIl prend moins de dégâts que les autres.", - L"\n \nCet objet coule dans l'eau.", - L"\n \nCet objet exige les deux mains pour être utilisé.", - L"\n \nCet Objet bloquera votre viseur\nde ce fait vous ne pouvez pas l'utiliser.", - L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate - L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", - L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", - L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate - L"\n \nYou can take photos with this.", // TODO.Translate - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate - L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|F|a|c|t|e|u|r |d|e |p|r|é|c|i|s|i|o|n", - L"|F|a|c|t|e|u|r |n|e|t |d|e |p|r|é|c|i|s|i|o|n |s|u|r |t|o|u|t |t|i|r", - L"|F|a|c|t|e|u|r |e|n |p|o|u|r|c|e|n|t|a|g|e |s|u|r |t|o|u|t |t|i|r", - L"|F|a|c|t|e|u|r |n|e|t |s|u|r |l|a |v|i|s|é|e", - L"|F|a|c|t|e|u|r |p|o|u|r|c|e|n|t|a|g|e |d|e |v|i|s|é|e", - L"|F|a|c|t|e|u|r |n|i|v|e|a|u |d|e |v|i|s|é|e |a|u|t|o|r|i|s|é|e", - L"|F|a|c|t|e|u|r |d|e |p|r|é|c|i|s|i|o|n |m|a|x|i|m|a|l|e", - L"|F|a|c|t|e|u|r |d|e |p|r|i|s|e |e|n |m|a|i|n |d|e |l|'|a|r|m|e", - L"|F|a|c|t|e|u|r |c|o|m|p|e|n|s|a|t|i|o|n |d|e |c|h|u|t|e", - L"|F|a|c|t|e|u|r |p|o|u|r|s|u|i|t|e |c|i|b|l|e", - L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s", - L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s |d|e |m|ê|l|é|e", - L"|F|a|c|t|e|u|r |d|e |d|i|s|t|a|n|c|e", - L"|F|a|c|t|e|u|r |a|g|g|r|a|n|d|i|s|e|m|e|n|t |d|e |l|a |p|o|r|t|é|e", - L"|F|a|c|t|e|u|r |d|e |p|r|o|j|e|c|t|i|o|n", - L"|F|a|c|t|e|u|r |d|e |r|e|c|u|l |h|o|r|i|z|o|n|t|a|l", - L"|F|a|c|t|e|u|r |d|e |r|e|c|u|l |v|e|r|t|i|c|a|l", - L"|F|a|c|t|e|u|r |d|e |c|o|n|t|r|e|-|f|o|r|c|e |m|a|x|i|m|u|m", - L"|F|a|c|t|e|u|r |d|e |p|r|é|c|i|s|i|o|n |d|e |c|o|n|t|r|e|-|f|o|r|c|e", - L"|F|a|c|t|e|u|r |d|e |f|r|é|q|u|e|n|c|e |d|e |c|o|n|t|r|e|-|f|o|r|c|e", - L"|F|a|c|t|e|u|r |d|e |P|A |t|o|t|a|l", - L"|F|a|c|t|e|u|r |d|e |P|A |m|i|s|e |e|n |j|o|u|e", - L"|F|a|c|t|e|u|r |d|e |P|A |e|n |a|t|t|a|q|u|e |s|i|m|p|l|e", - L"|F|a|c|t|e|u|r |d|e |P|A |e|n |r|a|f|a|l|e", - L"|F|a|c|t|e|u|r |d|e |P|A |e|n |a|u|t|o", - L"|F|a|c|t|e|u|r |d|e |P|A |p|o|u|r |r|e|c|h|a|r|g|e|r", - L"|F|a|c|t|e|u|r |t|a|i|l|l|e |m|u|n|i|t|i|o|n", - L"|F|a|c|t|e|u|r |t|a|i|l|l|e |r|a|f|a|l|e", - L"|C|a|c|h|e|-|f|l|a|m|m|e", - L"|F|a|c|t|e|u|r |i|n|t|e|n|s|i|t|é |s|o|n|o|r|e", - L"|F|a|c|t|e|u|r |t|a|i|l|l|e |o|b|j|e|t", - L"|F|a|c|t|e|u|r |d|e |f|i|a|b|i|l|i|t|é", - L"|C|a|m|o|u|f|l|a|g|e |f|o|r|ê|t", - L"|C|a|m|o|u|f|l|a|g|e |u|r|b|a|i|n ", - L"|C|a|m|o|u|f|l|a|g|e |d|é|s|e|r|t", - L"|C|a|m|o|u|f|l|a|g|e |n|e|i|g|e", - L"|F|a|c|t|e|u|r |d|e |d|i|s|c|r|é|t|i|o|n", - L"|F|a|c|t|e|u|r |d|i|s|t|a|n|c|e |a|u|d|i|t|i|v|e", - L"|F|a|c|t|e|u|r |v|i|s|i|o|n |g|é|n|é|r|a|l|e", - L"|F|a|c|t|e|u|r |v|i|s|i|o|n |n|o|c|t|u|r|n|e", - L"|F|a|c|t|e|u|r |v|i|s|i|o|n |d|e |j|o|u|r", - L"|F|a|c|t|e|u|r |v|i|s|i|o|n |l|u|m|i|è|r|e |i|n|t|e|n|s|e", - L"|F|a|c|t|e|u|r |v|i|s|i|o|n |s|o|u|s|-|s|o|l", - L"|V|i|s|i|o|n |e|n |t|u|n|n|e|l ", - L"|C|o|n|t|r|e|-|f|o|r|c|e |m|a|x|i|m|u|m", - L"|F|r|é|q|u|e|n|c|e |C|o|n|t|r|e|-|f|o|r|c|e", - L"|B|o|n|u|s |c|h|a|n|c|e |d|e |t|o|u|c|h|e|r", - L"|B|o|n|u|s |d|e |v|i|s|é|e", - L"|T|e|m|p|é|r|a|t|u|r|e |t|i|r |u|n|i|q|u|e", - L"|T|a|u|x |d|e |R|e|f|r|o|i|d|i|s|s|e|m|e|n|t", - L"|S|e|u|i|l |d|'|e|n|r|a|y|e|m|e|n|t", - L"|S|e|u|i|l |d|é|t|é|r|i|o|r|a|t|i|o|n", - L"|F|a|c|t|e|u|r |d|e |t|e|m|p|é|r|a|t|u|r|e", - L"|F|a|c|t|e|u|r |d|e |r|e|f|r|o|i|d|i|s|s|e|m|e|n|t", - L"|F|a|c|t|e|u|r |d|u |S|e|u|i|l |d|'|e|n|r|a|y|e|m|e|n|t", - L"|F|a|c|t|e|u|r |d|u |S|e|u|i|l |d|é|t|é|r|i|o|r|a|t|i|o|n", - L"|T|a|u|x |d|e |p|o|i|s|o|n", - L"|F|a|c|t|e|u|r |d|'|e|n|c|r|a|s|s|e|m|e|n|t", - L"|F|a|c|t|e|u|r |d|e |P|o|i|s|o|n", - L"|V|a|l|e|u|r |d|'|A|l|i|m|e|n|t|a|t|i|o|n", - L"|V|a|l|e|u|r |d|'|H|y|d|r|a|t|a|t|i|o|n", - L"|T|a|i|l|l|e |d|e|s |Po|r|t|i|o|n|s", - L"|F|a|c|t|e|u|r |d|e |M|o|r|a|l", - 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 - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \nLorsque attaché à une arme de distance, cet objet modifie la\nvaleur de sa précision.\n \nLe gain en précision permet à l'arme de pouvoir toucher une\ncible à des distances plus élevées et plus souvent.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", - L"\n \nCet objet modifie la précision du tireur pour n'importe quel tir avec\nune arme de distance de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", - L"\n \nCet objet modifie la précision du tireur pour n'importe quel tir avec\nune arme de distance avec un pourcentage calculé à partir\nde sa précision initiale.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie le gain de précision, pris à chaque\nniveau de visée supplémentaire, de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", - L"\n \nCet objet modifie le gain de précision, pris à chaque\nniveau de visée, d'un pourcentage calculé à partir\nde sa précision initiale.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie le nombre de niveau de visée que cette arme\npeut avoir.\n \nRéduire le nombre de niveau de visée signifie que chaque\nniveau ajoute proportionnellement plus de précision au tir.\nPar conséquent, même les bas niveaux de visée vous\npermettrons de garder une bonne précision avec une vitesse\nélevée pour viser !\n \nValeur faible recommandée.", - L"\n \nCet objet modifie la précision maximale du tireur équipé d'une\narme de distance, avec un pourcentage basé sur sa précision\ninitiale.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet modifie sa\ndifficulté de manipulation.\n \nUne meilleure prise en main permet une meilleure précision\nde l'arme, avec ou sans niveaux de visée supplémentaires.\n \nNotez que c'est basé sur le facteur de prise en main des\narmes, qui est plus élevé pour les fusils et armes lourdes\nque les pistolets et armes légères.\n \nValeur faible recommandée.", - L"\n \nCet objet modifie la difficulté des tirs hors de la portée de l'arme.\n \nUne valeur élevée peut augmenter la portée maximale de l'arme de\nquelques cases.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie la difficulté de toucher une cible en mouvement\navec une arme de distance.\n \nUne valeur élevée peut vous aider à toucher une cible en\nmouvement, même à distance.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie la puissance d'impact de votre arme\nde la valeur suivante.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie la puissance d'impact de votre arme de mêlée\nde la valeur suivante.\n \nCeci s'applique uniquement aux armes de mêlée, tranchantes\nou contondantes.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie sa portée effective.\n \nLa portée maximale dicte essentiellement dans quelle mesure une balle\ntirée par l'arme peut voler avant de commencer à tomber\nbrusquement vers le sol.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nfournit un grossissement supplémentaire, réussissant des coups\nplus facilement que la normale.\n \nNotez qu'un facteur de grossissement trop élevé est préjudiciable\nquand la cible est plus PROCHE que la distance optimale.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nprojette un point sur la cible, rendant le tir plus facile.\n \nCette projection est seulement utile à une certaine distance,\nau-delà elle diminue puis éventuellement disparaît.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance ayant\ndes modes rafale ou auto, cet objet modifie\nle recul horizontal de l'arme par le\npourcentage suivant.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme de distance ayant\ndes modes rafale ou auto, cet objet modifie\nle recul vertical de l'arme par le\npourcentage suivant.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", - L"\n \nCet objet modifie la capacité du tireur à faire\nface au recul durant une salve en mode rafale ou auto.\n \nUne valeur élevée permet d'aider le tireur à contrôler une arme\navec un fort recul, même s'il a peu de force.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie la capacité du tireur à compenser\nle recul durant une salve en mode rafale ou auto.\n \nUne valeur élevée permet de corriger le recul pour garder le canon\nsur la cible, même à longue distance, rendant ainsi la salve\nplus précise.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie la capacité du tireur à adapter\nà chaque fréquence l'effort de compensation du recul durant une\nsalve en mode rafale ou auto.\n \nUne fréquence élevée de compensation permet une salve très précise\net ainsi permettre des tirs en rafale et auto à très longues portées.\n \nValeur élevée recommandée.", - L"\n \nCet objet modifie directement le nombre de PA\nque le mercenaire a durant chaque début de tour.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie le coût en PA pour mettre en joue.\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme, cet objet\nmodifie le coût en PA pour faire une attaque simple.\n \nNotez que pour les armes ayant un mode auto/rafale, le\ncoût est directement influencé par ce facteur !\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme de distance ayant\nun mode rafale, cet objet modifie le coût en PA d'un tir en rafale.\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme de distance ayant\nun mode auto, cet objet modifie le coût en PA d'un tir en auto.\n \nNotez que cela ne modifie pas le coût supplémentaire\npour ajouter des balles à la salve, mais seulement\nle coût initiale d'une salve.\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie le coût en PA pour recharger.\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nchange la taille des munitions qui peuvent être\nchargées dans l'arme.\n \nCette arme peut maintenant accepter des tailles plus ou moins grandes de munitions\nayant un même calibre.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie le nombre de balles tiré\npar cette arme en rafale.\n \nSi cette arme n'a pas de mode rafale et que la\nvaleur est positive, alors cet objet donnera à l'arme la possibilité\nde tirer en mode rafale.\n \nInversement, s'il y a un mode rafale\net une valeur négative, cela peut retirer le mode rafale.\n \nValeur élevée généralement recommandée. Gardez bien à l'esprit\nque le mode rafale est là pour conserver les munitions...", - L"\n \nLorsque attaché à une arme de distance, cet objet\nva cacher le flash du canon.\n \nCela permettra au tireur de ne pas se faire repérer\net de rester à couvert, s'il l'est.\nChose importante de nuit...", - L"\n \nLorsque attaché à une arme, cet objet\nmodifie la distance à laquelle un tir sera entendu par les\nennemis et les mercenaires.\n \nSi ce facteur modifie l'intensité sonore de l'arme à 0\n, elle deviendra alors indétectable.\n \nValeur faible recommandée.", - L"\n \nCet objet modifie la taille de n'importe quel objet\npouvant être attaché.\n \nLa taille est importante dans le nouveau système d'inventaire,\noù les poches n'acceptent qu'une taille et des formes spécifiques.\n \nAugmenter la taille d'un objet peut le rendre trop gros pour des poches.\n \nInversement, réduire sa taille peut permettre de l'insérer dans plus de poches\net les poches seront à même de contenir plus d'objets.\n \nValeur faible généralement recommandée.", - L"\n \nLorsque attaché à une arme, cet objet modifie la valeur\nde fiabilité de l'arme.\n \nSi positive, l'état de l'arme se détériore moins\nrapidement au combat. Mais hors combat elle se détériore\nplus rapidement.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone forestière du porteur.\n \nPour avoir un facteur de camouflage efficace en forêt,\nvous devez être près d'arbres ou d'herbes hautes.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone urbaine du porteur.\n \nPour avoir un facteur de camouflage efficace en zone urbaine,\nvous devez être près des bâtîments.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone désertique du porteur.\n \nPour avoir un facteur de camouflage efficace en zone désertique,\nvous devez être près du sable ou d'une végétation désertique.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone enneigée du porteur.\n \nPour avoir un facteur de camouflage efficace en zone enneigée,\nvous devez être près de cases enneigées.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie la discrétion du porteur en rendant le mercenaire\nplus difficile à entendre lorsqu'il se déplace en mode discrétion.\n \nNotez que cela ne change en rien sur la visibilité du mercenaire,\nmais seulement la quantité de sons émis lors d'un déplacement en silence.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie l'audition du porteur du pourcentage suivant.\n \nUne valeur positive rend possible l'écoute de sons\nprovenant de longues distances.\n \nInversement, une valeur négative détériore l'audition du porteur.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision dans toutes les conditions.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsqu'il y a peu de lumière ambiante.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsque l'intensité de la lumière\nest normale ou forte.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsque l'intensité de la lumière est très forte.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsque vous êtes dans un sous-sol sombre.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nle champ de vision du porteur.\n \nRéduisant le champ de vision de chaque côté.\n \nValeur faible recommandée.", - L"\n \nHabilité du tireur à faire face au recul\nlors d'un tir en mode rafale ou auto.\n \nValeur élevée recommandée.", - L"\n \nFréquence de recalcule du tireur pour ajuster la force\nqu'il doit mettre pour contrer le recul de l'arme, lors d'un tir\nen mode rafale ou auto.\n \nUne fréquence faible rend la salve plus précise en supposant que\nle tireur puisse surmonter le recul correctement.\n \nValeur faible recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie sa chance de toucher la cible (CDT).\n \nAugmenter son CDT permet de toucher plus souvent\nune cible, en supposant que le tireur a bien visé.\n \nValeur élevée recommandée.", - L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie ses bonus de visée.\n \nAugmenter les bonus de visée, permet de toucher\nune cible à longue distance plus souvent, en supposant\nque le tireur a bien visé.\n \nValeur élevée recommandée.", - L"\n \nUn tir augmente la température de l'arme de cette valeur.\nLes munitions et certains accessoires peuvent\ninfluer sur cette valeur.\n \nValeur faible recommandée.", - L"\n \nÀ chaque tour, la température de l'arme diminue\nde cette valeur.\n \nValeur élevée recommandée.", - L"\n \nSi la température d'une arme dépasse cette valeur,\nelle s'enrayera plus souvent.\n \nValeur élevée recommandée.", - L"\n \nSi la température d'un objet dépasse cette valeur,\nil se détériorera plus facilement.\n \nValeur élevée recommandée.", - L"\n \nLa température d'un tir,\nest augmentée par ce pourcentage.\n \nValeur faible recommandée.", - L"\n \nLe facteur de refroidissement d'une arme,\nest augmenté par ce pourcentage.\n \nValeur élevée recommandée.", - L"\n \nLe seuil d'enrayement d'une arme,\nest augmenté par ce pourcentage.\n \nValeur élevée recommandée.", - L"\n \nLe seuil de détérioration d'une arme,\nest augmenté par ce pourcentage.\n \nValeur élevée recommandée.", - L"\n \nUn tir salit l'arme de cette valeur. Le type\ndes munitions et les accessoires peuvent\ninfluer sur cette valeur.\n \nValeur faible recommandée.", - L"\n \nLorsque cet aliment est mangé, il provoque un empoisonnement.\n \nValeur faible recommandée.", - L"\n \nValeur énergétique en kcal.\n \nValeur élevée recommandée.", - L"\n \nQuantité d'eau en litres.\n \nValeur élevée recommandée.", - 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"", - 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 - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nLa précision de cette arme a été modifiée\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAugmenter la précision permet de toucher une cible\nà longue distance plus souvent.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", - L"\n \nCette arme modifie la précision du tireur,\nde n'importe quel mode de tir, de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", - L"\n \nCette arme modifie la précision du tireur,\nde n'importe quel mode de tir, du pourcentage suivant.\nPourcentage basé sur la précision initiale du tireur.\n \nValeur élevée recommandée.", - L"\n \nCette arme modifie la quantité de précision gagnée\nà chaque niveau de visée de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", - L"\n \nCette arme modifie la quantité de précision gagnée\nà chaque niveau de visée du pourcentage suivant.\nPourcentage basé sur la précision initiale du tireur.\n \nValeur élevée recommandée.", - L"\n \nLe nombre de niveaux de visée supplémentaires permis par\ncette arme, a été modifié par une munition, un accessoire\n ou bien intégré dans les attributs.\nSi le nombre de niveaux de visée a baissé, c'est que l'arme est\nplus rapide à viser sans perdre en précision.\n \nInversement, si le nombre de visée a augmenté, l'arme sera\nplus lente à viser sans perdre en précision.\n \nValeur faible recommandée.", - L"\n \nCette arme modifie la précision maximum du tireur\nbasé sur un pourcentage de la précision initiale maximale.\n \nValeur élevée recommandée.", - L"\n \nLes accessoires ou les caractéristiques de l'arme modifient\nsa difficulté de prise en main.\n \nUne meilleure prise en main, l'arme sera plus précise\navec ou sans niveaux de visée supplémentaires.\n \nNotez que c'est basé sur le facteur de prise en main des armes,\nqui est plus élevé pour les fusils et armes lourdes que\nles pistolets et armes légères.\n \nValeur faible recommandée.", - L"\n \nL'habilité de l'arme à compenser les tirs\nqui sont hors de portée est modifié par un\naccessoire ou les caractéristiques de l'arme.\n \nUne valeur élevée peut augmenter la portée maximale\nde l'arme de quelques cases.\n \nValeur élevée recommandée.", - L"\n \nL'habilité de l'arme à toucher une cible en mouvement\nà distance a été modifiée par un accessoire ou\nun attribut inhérent à l'arme.\n \nUne valeur élevée peut vous aider à toucher\nune cible en mouvement, même à distance.\n \nValeur élevée recommandée.", - L"\n \nLa puissance d'impact de votre arme a été modifiée\npar une munition, un accessoire ou attribut inhérent à l'arme.\n \nValeur élevée recommandée.", - L"\n \nLa puissance d'impact de votre arme de mêlée a été modifiée\npar un accessoire ou attribut inhérent à l'arme.\n \nCeci s'applique uniquement aux armes de mêlée, tranchantes\nou contondantes.\n \nValeur élevée recommandée.", - L"\n \nLa portée maximum de votre arme a été augmentée ou diminuée\ngrâce à une munition, un accessoire ou attribut inhérent à l'arme.\n \nLa portée maximale dicte essentiellement dans quelle mesure une balle\ntirée par l'arme peut voler avant de commencer à tomber\nbrusquement vers le sol.\n \nValeur élevée recommandée.", - L"\n \nCette arme est équipée d'une visée optique,\nrendant les tirs à distance plus facile à réaliser.\n \nNotez qu'un facteur de grossissement trop élevée est préjudiciable\nquand la cible est plus PROCHE que la distance optimale.\n \nValeur élevée recommandée.", - L"\n \nCette arme est équipée d'un système de projection\n(tel qu'un laser), qui projette un point sur la\ncible, rendant le tir plus facile.\n \nCette projection est seulement utile à une certaine distance\n, au-delà elle diminue puis éventuellement disparaît.\n \nValeur élevée recommandée.", - L"\n \nLe recul horizontal de cette arme a été modifié\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAucun effet, si l'arme ne possède pas de mode auto et/ou rafale.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", - L"\n \nLe recul vertical de cette arme a été modifié\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAucun effet, si l'arme ne possède pas de mode auto et/ou rafale.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", - L"\n \nCette arme modifie la capacité du tireur à faire face\nau recul durant une salve en mode auto ou rafale,\ngrâce à une munition, un accessoire ou un attribut inhérent à l'arme.\n \nUne valeur élevée permet d'aider le tireur a contrôler une arme\navec un fort recul, même s'il a peu de force.\n \nValeur élevée recommandée.", - L"\n \nCette arme modifie la capacité du tireur à compenser\nle recul durant une salve en mode auto ou rafale,\ngrâce à une munition, un accessoire ou un attribut inhérent à l'arme.\n \nUne valeur élevée permet de corriger le recul pour garder le canon\nsur la cible, même à longue distance,\nrendant ainsi la salve plus précise.\n \nValeur élevée recommandée.", - L"\n \nCette arme modifie la capacité du tireur à adapter à chaque\nà chaque fréquence l'effort de compensation du recul durant\nune salve en mode auto ou rafale,\ngrâce à une munition, un accessoire ou un attribut inhérent à l'arme.\n \nUne fréquence élevée de compensation permet une salve très précise\net ainsi permettre des tirs en rafale et auto à très longues portées,\nen supposant que le tireur puisse couvrir le recul correctement.\n \nValeur élevée recommandée.", - L"\n \nLorsque tenue en main, cette arme modifie la quantité de\nPA que le mercenaire a au début de chaque tour.\n \nValeur élevée recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour mettre en joue avec cette arme, a été\nmodifié.\n \nValeur faible recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour faire une attaque simple avec cette arme,\na été modifié.\n \nNotez que les modes auto et rafale de l'arme,\nont leur coût directement influencé par ce facteur.\n \nValeur faible recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour faire une rafale avec cette arme,\na été modifié.\n \nValeur faible recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour faire une salve en auto avec cette arme,\na été modifié.\n \nNotez que cela ne modifie pas le coût supplémentaire en PA\nlorsque vous ajoutez des balles à la salve, mais\nseulement son coût initial.\n \nValeur faible recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour recharger cette arme,\na été modifié.\n \nValeur faible recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla taille des munitions qui peuvent être chargées sur cette arme,\na été modifiée.\n \nCette arme peut maintenant accepter des tailles plus ou moins grandes de munitions\nayant un même calibre.\n \nValeur élevée recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla quantité de balles tirées par cette arme en mode rafale,\na été modifiée.\n \nSi cette arme n'a pas de mode rafale et que la\nvaleur est positive, alors cet objet donnera à l'arme la possibilité\nde tirer en mode rafale.\n \nInversement, s'il y a un mode rafale\net une valeur négative, cela peut retirer le mode rafale.\n \nValeur élevée généralement recommandée. Gardez bien à l'esprit\nque le mode rafale est là pour conserver les munitions...", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\ncette arme ne produira pas de flash lors du tir.\n \nCela permettra au tireur de ne pas se faire repérer\net de rester à couvert, s'il l'est.\nChose importante de nuit...", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle bruit généré par l'arme, a été modifié. La distance\nà laquelle les ennemis et mercenaires peuvent entendre votre tir, a changé.\n \nSi ce facteur de l'intensité sonore de l'arme a 0\n, elle deviendra alors indédectable.\n \nValeur faible recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla catégorie de la taille de cette arme a changé.\n \nLa taille est importante dans le nouveau système d'inventaire,\noù les poches n'acceptent qu'une taille et des formes spécifiques.\n \nAugmenter la taille d'un objet peut le rendre trop gros pour des poches.\n \nInversement, réduire sa taille peut permettre de l'insérer dans plus de poches\net les poches seront à même de contenir plus d'objets.\n \nValeur faible généralement recommandée.", - L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla fiabilité de cette arme a changé.\n \nSi positive, l'état de l'arme se détériore\nmoins rapidement, si utilisé en combat. Mais hors combat\nelle se détériore plus rapidement.\n \nValeur élevée recommandée.", - L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone forestière du porteur.\n \nPour avoir un facteur de camouflage efficace en forêt,\nvous devez être près d'arbres ou d'herbes hautes.\n \nValeur élevée recommandée.", - L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone urbaine du porteur.\n \nPour avoir un facteur de camouflage efficace en zone urbaine,\nvous devez être près de bâtîments.\n \nValeur élevée recommandée.", - L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone désertique du porteur.\n \nPour avoir un facteur de camouflage efficace en zone désertique,\nvous devez être près du sable ou d'une végétation désertique.\n \nValeur élevée recommandée.", - L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone enneigée du porteur.\n \nPour avoir un facteur de camouflage efficace en zone enneigée,\nvous devez être près de cases enneigés.\n \nValeur élevée recommandée.", - L"\n \nQuand cette arme est tenue à la main, elle modifie\nla discrétion du porteur en rendant le mercenaire\nplus difficile à entendre lorsqu'il se déplace en mode discrétion.\n \nNotez que cela ne change en rien sur la visibilité du mercenaire,\nmais seulement la quantité de sons émis lors d'un déplacement en silence.\n \nValeur élevée recommandée.", - L"\n \nQuand cette arme est tenue à la main, elle modifie\nl'audition du porteur du pourcentage suivant.\n \nUne valeur positive rend possible l'écoute de sons\nprovenant de longues distances.\n \nInversement, une valeur négative détériore l'audition du porteur.\n \nValeur élevée recommandée.", - L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision dans toutes les conditions.\n \nValeur élevée recommandée.", - L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision de nuit lorsqu'il y a peu de lumière ambiante.\n \nValeur élevée recommandée.", - L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision de jour lorsque l'intensité de la lumière\nest normale ou forte.\n \nValeur élevée recommandée.", - L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision lorsque l'intensité de la lumière est très forte.\n \nValeur élevée recommandée.", - L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision lorsque vous êtes dans un sous-sol sombre.\n \nValeur élevée recommandée.", - L"\n \nLorsque cette arme est prête à tirer,\nelle modifie le champ de vision du porteur.\n \nRéduisant le champ de vision de chaque côté.\n \nValeur faible recommandée.", - L"\n \nHabilité du tireur à faire face au recul\nlors d'un tir en mode rafale ou auto.\n \nValeur élevée recommandée.", - L"\n \nFréquence de recalcule du tireur pour ajuster la force\nqu'il doit mettre pour contrer le recul de l'arme, lors d'un tir\nen mode rafale ou auto.\n \nUne fréquence faible rend la salve plus précise en supposant que\nle tireur puisse surmonter le recul correctement.\n \nValeur faible recommandée.", - L"\n \nLa chance de toucher la cible avec cette arme,\na été modifiée par une munition, un accessoire ou\nun attribut inhérent à l'arme.\n \nAugmenter la chance de toucher permet de toucher plus souvent\nune cible, en supposant que le tireur a bien visé.\n \nValeur élevée recommandée.", - L"\n \nLes bonus de visée de cette arme, ont été modifiés\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAugmenter les bonus de visée, permet de toucher\nune cible à longue distance plus souvent, en supposant\nque le tireur a bien visé.\n \nValeur élevée recommandée.", - L"\n \nUn tir augmente la température de l'arme de cette valeur.\nLes munitions peuvent influer sur cette valeur.\n \nValeur faible recommandée.", - L"\n \nÀ chaque tour, la température de l'arme diminue\nde cette valeur.\nLes accessoires des armes peuvent influer\nsur cette valeur.\n \nValeur élevée recommandée.", - L"\n \nSi la température d'une arme dépasse cette valeur,\nelle s'enrayera plus souvent.", - L"\n \nSi la température d'une arme dépasse cette valeur,\nelle se détériorera plus facilement.", - L"\n \nLa force de recul de cette arme est modifiée par cette\nvaleur en pourcentage par ses munitions, ses objets attachés\nou ses caractéristiques. N'a aucun effet si l'arme n'a pas\nde mode rafale ni de mode automatique. Réduire le recul\npermet de mieux garder la bouche de l'arme pointée sur\nla cible lors d'une rafale.\n \nValeur faible recommandée.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"SIMPLE", - L"PA", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"Fin du tri des munitions par caisses/boîtes au secteur %c%d.", - L"Fin du démontage de tous les accessoires au secteur %c%d.", - L"Fin du déchargement des armes au secteur %c%d.", - L"Fin du classement et de l'empilage par type au secteur %c%d.", - // Bob: new strings for emptying LBE items - L"Finished emptying LBE items in sector %c%d.", - L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Tout voir", - L"Armes", - L"Munitions", - L"Explosifs", - L"Armes blanches", - L"Protections", - L"LBE", - L"Kits", - L"Objets divers", - L"Cacher tout", -}; - -STR16 gzMercCompare[] = -{ - L"???", - L"Base opinion:", - - L"Dislikes %s %s", - L"Likes %s %s", - - L"Strongly hates %s", - L"Hates %s", // 5 - - L"Deep racism against %s", - L"Racism against %s", - - L"Cares deeply about looks", - L"Cares about looks", - - L"Very sexist", // 10 - L"Sexist", - - L"Dislikes other background", - L"Dislikes other backgrounds", - - L"Past grievances", - L"____", // 15 - L"/", - L"* Opinion is always in [%d; %d]", // TODO.Translate -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = -{ - L"Température ", - L"très basse", - L"basse", - L"moyenne", - L"haute", - L"très haute", - L"dangereuse", - L"CRITIQUE", - L"EXTRÊME", - L"inconnue", - L"." -}; - -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"C'est ", - L"frais", - L"assez frais", - L"consommable", - L"périmé", - L"malsain", - L"nocif", - L"." -}; - -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Rc. ", //ExpLevel 1 - L"Sdt ", //ExpLevel 2 - L"Cpl ", //ExpLevel 3 - L"Sgt ", //ExpLevel 4 - L"Maj ", //ExpLevel 5 - L"Lt ", //ExpLevel 6 - L"Cne ", //ExpLevel 7 - L"Cdt ", //ExpLevel 8 - L"Col ", //ExpLevel 9 - L"Gal " //ExpLevel 10 -}; - -STR16 gzNewLaptopMessages[]= -{ - L"Renseignez-vous sur notre offre spéciale !", - L"Temporairement indisponible", - L"Un bref aperçu sur Jagged Alliance 2 : Unfinished Businessn, il contient six secteurs de la carte. La version finale du jeu proposera beaucoup plus. Lisez le fichier readme inclus pour plus de détails.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Distance cible: %d tiles, Brightness: %d/%d", - L"Vous reliez l'antenne de ce portable au vôtre.", - L"Vous n'avez pas les moyens d'engager %s", - L"Pour une durée limitée, les frais ci-dessus couvrent la mission entière, paquetage ci-dessous compris.", - L"Engagez %s et découvrez dès à présent notre prix \"tout compris\". Aussi inclus dans cette incroyable offre, le paquetage personnel du mercenaire sans frais supplémentaires.", - L"Frais", - L"Il y a quelqu'un d'autre dans le secteur...", - //L"Portée arme: %d tiles, de chances: %d pourcent", - L"Afficher couverture", - L"Champs de vision", - L"Les nouvelles recrues ne peuvent arriver ici.", - L"Comme votre portable n'a pas d'antenne, vous ne pouvez pas engager de nouvelles recrues. Revenez à une sauvegarde précédente et réessayez.", - L"%s entend le son de métal broyé provenant d'en dessous du corps de Jerry. On dirait que l'antenne de votre portable ne sert plus à rien.", //the %s is the name of a merc. @@@ Modified - L"Apres avoir scanné la note laissée par le commandant adjoint Morris, %s sent une oppurtinité. La note contient les coordonnées pour le lancement de missiles sur Arulco. Elle contient aussi l'emplacement de l'usine d'où les missiles proviennent.", - L"En examinant le panneau de contrôle, %s s'aperçoît que les chiffres peuvent être inversés pour que les missiles détruisent cette même usine. %s a besoin de trouver un chemin pour s'enfuir. L'ascenseur semble être la solution la plus rapide...", - L"Ceci est un jeu IRON MAN et vous ne pouvez pas sauvegarder, s'il y a des ennemis dans les parages.", // @@@ new text - L"(ne peut pas sauvegarder en plein combat)", //@@@@ new text - L"Le nom de la campagne actuelle est supérieur à 30 lettres.", // @@@ new text - L"La campagne actuelle est introuvable.", // @@@ new text - L"Campagne : Par défaut ( %S )", // @@@ new text - L"Campagne : %S", // @@@ new text - L"Vous avez choisi la campagne %S. Cette campagne est un mod d'Unfinished Business. Êtes-vous sûr de vouloir jouer la campagne %S ?", // @@@ new text - L"Pour pouvoir utiliser l'éditeur, veuillez choisir une autre campagne que celle par défaut.", ///@@new - // anv: extra iron man modes - L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", // TODO.Translate - L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", // TODO.Translate -}; - -// The_bob : pocket popup text defs -STR16 gszPocketPopupText[]= -{ - L"Lance-grenades", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Lance-roquettes", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Armes blanches", // POCKET_POPUP_MEELE_AND_THROWN - L"-Aucune munition-", //POCKET_POPUP_NO_AMMO - L"-Pas d'arme-", //POCKET_POPUP_NO_GUNS - L"plus...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features -STR16 szCovertTextStr[]= -{ - L"%s a du camouflage !", - L"%s a un sac à dos !", - L"%s est vu(e) en train de porter un corps !", - L"%s a un(e) %s suspect(e) !", - L"%s a un(e) %s considéré(e) comme du matériel militaire !", - L"%s transporte trop d'armes !", - L"%s a un(e) %s trop avancé(e) pour un soldat %s !", - L"%s a un(e) %s avec trop d'accessoires !", - L"%s a été repéré(e) en train de commettre des activités douteuses !", - L"%s ne ressemble pas à un civil !", - L"Le sang de %s, a été repéré !", - L"%s est trop ivre pour se comporter comme un soldat !", - L"Le déguisement de %s, ne tiendra pas la route à une inspection !", - L"%s n'est pas supposé(e) être là !", - L"%s n'est pas supposé(e) se trouver là à cette heure !", - L"%s a été trouvé(e) près d'un cadavre !", - L"L'équipement de %s, soulève quelques suspicions !", - L"%s est vu(e) en train de viser %s !", - L"%s a percé le déguisement : %s !", - L"Aucun habit trouvé dans Items.xml !", - L"Ça ne fonctionne pas avec l'ancien système de compétences !", - L"Pas assez de PA !", - L"Mauvaise palette trouvée !", - L"Vous avez besoin de la compétence \"Déguisement\" ou \"Espion\" pour le faire !", - L"Pas d'uniforme trouvé !", - L"%s est maintenant déguisé(e) en civil.", - L"%s est maintenant déguisé(e) en soldat.", - L"%s porte un uniforme dépareillé !", - L"En y repensant, demander une reddition avec un déguisement n'était pas la meilleure des idées...", - L"%%s a été découvert(e) !", - L"Le déguisement de %s a l'air d'aller...", - L"Le déguisement de %s ne marchera pas...", - L"%s a été pris en train de voler !", - L"%s a essayé d'accéder à l'inventaire de %s.", - L"An elite soldier did not recognize %s!", // TODO.Translate - L"A officer knew %s was unfamiliar!", -}; - -STR16 szCorpseTextStr[]= -{ - L"Aucune tête trouvée dans items.xml !", - L"Ce corps n'a plus de tête :", - L"Aucune nourriture trouvée dans Items.xml !", - L"Impossible, vous êtes malade ou une personne tordue !", - L"Aucun habit à prendre !", - L"%s ne peut pas prendre les habits du corps !", - L"Ce corps ne peut être pris !", - L"Pas de main libre pour le corps !", - L"Aucun corps trouvé dans Items.xml !", - L"Identité du corps invalide !", -}; - -STR16 szFoodTextStr[]= -{ - L"%s ne veut pas manger : %s", - L"%s ne veut pas boire : %s", - L"%s mange : %s", - L"%s boit : %s", - L"%s a sa force pénalisée par cause de suralimentation !", - L"%s a sa force pénalisée par cause de sous-alimentation !", - L"%s a sa santé pénalisée par cause de suralimentation !", - L"%s a sa santé pénalisée par cause de sous-alimentation !", - L"%s a sa force pénalisée par cause de hyperhydratation !", - L"%s a sa force pénalisée par cause de déshydratation !", - L"%s a sa santé pénalisée par cause de hyperhydratation !", - L"%s a sa santé pénalisée par cause de déshydratation !", - L"Le remplissage des gourdes n'est pas possible, si le système alimentaire n'est pas activé !" -}; - -STR16 szPrisonerTextStr[]= -{ - L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate - L"Gained $%d as ransom money.", // TODO.Translate - L"Prisonnier(s) ayant révélé les positions ennemies : %d.", - L"Prisonnier(s) ayant rejoint notre cause : %d officiers, %d élite(s), %d régulier(s) et %d administratif(s).", - L"Prisonnier(s) ayant commencé une émeute en %s !", - L"%d prisonnier(s) envoyé(s) en %s !", - L"Prisonnier(s) libéré(s) !", - L"L'armée a délivré la prison en %s et les prisonniers ont été libérés !", - L"L'ennemi refuse de se rendre !", - L"L'ennemi refuse votre reddition... Ils veulent vos têtes !", - L"Ce comportement est désactivé dans vos fichiers ini.", - L"%s a libéré %s !", - L"A high-ranking army officer in %s has been revealed!", // TODO.Translate - L"The enemy leader refuses to even consider surrender!", - L"%d prisoners volunteered to join our forces.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= -{ - L"rien, en fait.", - L"la construction d'une fortification", - L"le retrait d'une fortification", - L"hacking", // TODO.Translate - L"%s a dû arrêter... %s", - L"Cette sorte de barricade ne peut pas être construite dans ce secteur", -}; - -STR16 szInventoryArmTextStr[]= -{ - L"Faire exploser (%d PA)", - L"Faire exploser", - L"Armer (%d PA)", - L"Armer", - L"Désamorcer (%d PA)", - L"Désamorcer", -}; - - -STR16 szBackgroundText_Flags[]= -{ - L" peut consommer des drogues se trouvant dans son inventaire\n", - L" ne tient pas compte des autres passifs\n", - L" +1 Niveau dans les souterrains\n", - L" steals money from the locals sometimes\n", // TODO.Translate - - L" +1 Niveau pour poser des pièges\n", - L" répand la corruption aux mercenaires proches\n", - L" femme seulement", // won't show up, text exists for compatibility reasons - L" homme seulement", // won't show up, text exists for compatibility reasons - - L" huge loyality penalty in all towns if we die\n", // TODO.Translate - - L" refuses to attack animals\n", // TODO.Translate - L" refuses to attack members of the same group\n", // TODO.Translate -}; - - -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% de PA dans les secteurs polaires\n", - L" %s%d%% de PA dans les secteurs désertiques\n", - L" %s%d%% de PA dans les secteurs marécageux\n", - L" %s%d%% de PA dans les secteurs urbains\n", - L" %s%d%% APs in forest sectors\n", // TODO.Translate - L" %s%d%% APs in plain sectors\n", - L" %s%d%% de PA dans les secteurs fluviaux\n", - L" %s%d%% de PA dans les secteurs tropicaux\n", - L" %s%d%% de PA dans les secteurs côtiers\n", - L" %s%d%% de PA dans les secteurs montagneux\n", - - L" %s%d%% en agilité\n", - L" %s%d%% en dextérité\n", - L" %s%d%% en force\n", - L" %s%d%% en commandement\n", - L" %s%d%% au tir\n", - L" %s%d%% en mécanique\n", - L" %s%d%% en explosifs\n", - L" %s%d%% en médecine\n", - L" %s%d%% en sagesse\n", - - L" %s%d%% de PA sur les toits\n", - L" %s%d%% de PA nécessaire pour nager\n", - L" %s%d%% de PA nécessaire pour les actions de fortification\n", - L" %s%d%% de PA nécessaire pour utiliser un mortier\n", - L" %s%d%% de PA nécessaire pour utiliser l'inventaire\n", - L" toujours opérationnel après un parachutage\n %s%d%% de PA après un parachutage\n", - L" %s%d%% de PA au premier tour lors d'un assaut d'un secteur\n", - - L" %s%d%% de vitesse dans les voyages à pied\n", - L" %s%d%% de vitesse dans les voyages en véhicule\n", - L" %s%d%% de vitesse dans les voyages aériens\n", - L" %s%d%% de vitesse dans les voyages sur l'eau\n", - - L" %s%d%% de résistance à la peur\n", - L" %s%d%% de résistance au tir de couverture\n", - L" %s%d%% de résistance physique\n", - L" %s%d%% de résistance à l'alcool\n", - L" %s%d%% disease resistance\n", // TODO.Translate - - L" %s%d%% d'efficacité dans les interrogatoires\n", - L" %s%d%% d'efficacité comme gardien de prison\n", - L" %s%d%% meilleurs prix au marchandage d'armes et de munitions\n", - L" %s%d%% meilleurs prix au marchandage d'armures, de LBE, d'armes blanches, kits etc.\n", - L" %s%d%% à la force de capitulation de l'équipe, si nous menons les négociations\n", - L" %s%d%% plus rapide à la marche\n", - L" %s%d%% de vitesse de bandage\n", - L" %s%d%% breath regeneration\n", // TODO.Translate - L" %s%d%% de force pour porter des objets\n", - L" %s%d%% de besoins énergétiques (nourriture)\n", - L" %s%d%% de réhydratation nécessaire (eau)\n", - L" %s%d de besoin de sommeil\n", - L" %s%d%% de dégâts avec une arme de mêlée\n", - L" %s%d%% de chance de toucher avec des armes blanches\n", - L" %s%d%% d'efficacité dans le camouflage\n", - L" %s%d%% en discrétion\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 journée\n", - L" %s%d d'efficacité à désamorcer les pièges\n", - L" %s%d%% CTH with SAMs\n", // TODO.Translate - - 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 menaçante\n", - L" %s%d%% d'efficacité dans une approche de recrutement\n", - - L" %s%d%% de chance de succès avec les explosifs d'ouverture de porte\n", - L" %s%d%% de CDT avec des armes à feu contre les créatures\n", - L" %s%d%% du coût de l'assurance\n", - L" %s%d%% d'efficacité comme guetteur pour vos tireurs d'élite\n", - L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate - L" %s%d%% effectiveness at treating population against diseases\n", - L"Can spot tracks up to %d tiles away\n", - L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% chance to evade snake attacks\n", // TODO.Translate - - L" dislikes some other backgrounds\n", // TODO.Translate - L"Smoker", - L"Nonsmoker", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% building speed\n", - L" hacking skill: %s%d ", // TODO.Translate - L" %s%d%% burial speed\n", // TODO.Translate - L" %s%d%% administration effectiveness\n", // TODO.Translate - L" %s%d%% exploration effectiveness\n", // TODO.Translate -}; - -STR16 szBackgroundTitleText[] = -{ - L"IMP : Passif", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = -{ - L"IMP : Préjugés", -}; - -STR16 szPersonalityDisplayText[]= -{ - L"Vous êtes", - L"et l'apparence est", - L"importante pour vous.", - L"Vos", - L"sont", - L"essentielles.", - L"Vous êtes", - L"vous haïssez tout", - L".", - L"raciste envers les non-", - L".", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"Comment vous voyez-vous ?", - L"Quelle importance accordez-vous\nau regard des autres ?", - L"Quels sont vos manières ?", - L"Quelle est l'importance des manières des autres pour vous ?", - L"Quelle est votre nationalité ?", - L"Vous haïssez quelle nationalité ?", - L"À quel point les haïssez-vous ?", - L"À quel point êtes-vous raciste ?", - L"Quelle est votre race ? Et vous serez\nraciste contre toutes les autres.", - L"À quel point êtes-vous sexiste ?", -}; - -STR16 szRaceText[]= -{ - L"Blancs", - L"Noirs", - L"Asiatiques", - L"Esquimaux", - L"Hispaniques", -}; - -STR16 szAppearanceText[]= -{ - L"quelconque", - L"laid", - L"ordinaire", - L"attirant", - L"très beau", -}; - -STR16 szRefinementText[]= -{ - L"manières banales", - L"manières de plouc", - L"manières de snob", -}; - -STR16 szRefinementTextTypes[] = // TODO.Translate -{ - L"normal people", - L"slobs", - L"snobs", -}; - -STR16 szNationalityText[]= -{ - L"Américain", // 0 - L"Arabe", - L"Australien", - L"Anglais", - L"Canadien", - L"Cubain", // 5 - L"Danois", - L"Français", - L"Russe", - L"Traconian", - L"Suisse", // 10 - L"Jamaïcain", - L"Polonais", - L"Chinois", - L"Irlandais", - L"Sud Africain", // 15 - L"Hongrois", - L"Écossais", - L"Arulcain", - L"Allemand", - L"Africain", // 20 - L"Italien", - L"Néerlandais", - L"Roumain", - L"Métavirien", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"Belarusian", - L"Belge", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"Brésilien", - L"Bulgare", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"Estonien", - L"Ethiopian", - L"Filipino", // 50 - L"Finlandais", - L"Georgian", - L"Grec", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Indien", - L"Indonesian", - L"Iranien", - L"Irakien", // 60 - L"Islandic", - L"Israélien", - L"Japonais", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Mexicain", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Nigérian", - L"Nigerien", - L"Norvégien", - L"Pakistani", // 85 - L"Panamanian", - L"Portugais", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"Serbian", - L"Slovakian", - L"Slovenian", - L"Somali", - L"Espagnol", // 95 - L"Sudanese", - L"Suédois", - L"Syrien", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"Turc", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"Vénézuélien", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -STR16 szNationalityTextAdjective[] = // TODO.Translate -{ - L"americans", // 0 - L"arabs", - L"australians", - L"britains", - L"canadians", - L"cubans", // 5 - L"danes", - L"frenchmen", - L"russians", - L"traconians", - L"swiss", // 10 - L"jamaicans", - L"poles", - L"chinese", - L"irishmen", - L"south africans", // 15 - L"hungarians", - L"scotsmen", - L"arulcans", - L"germans", - L"africans", // 20 - L"italians", - L"dutchmen", - L"romanians", - L"metavirans", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"belarusians", - L"belgians", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"brasilians", - L"bulgarians", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"estonians", - L"ethiopians", - L"filipinos", // 50 - L"finns", - L"georgians", - L"greek", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"indians", - L"indonesians", - L"iranians", - L"iraqis", // 60 - L"islandics", - L"israelis", - L"japanese", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"mexicans", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"nigerians", - L"nigeriens", - L"norwegians", - L"pakistanis", // 85 - L"panamanians", - L"portoguese", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"serbians", - L"slovakians", - L"slovenians", - L"somali", - L"spaniards", // 95 - L"sudanese", - L"swedes", - L"syrians", - L"thais", - L"togolese", // 100 - L"tunisians", - L"turks", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"venezuelans", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"et n'haïssez aucune autre nationalité.", // used in personnel.cpp - L"apatride", // used in IMP generation -}; - -STR16 szCareLevelText[]= -{ - L"non", - L"vaguement", - L"bigrement", -}; - -STR16 szRacistText[]= -{ - L"pas", - L"un peu", - L"très", -}; - -STR16 szSexistText[]= -{ - L"pas sexiste", - L"un peu sexiste", - L"très sexiste", - L"un gentleman", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"État : ", - L"Chargée", - L"Bonne", - L"À moitié chargée", - L"Faible", - L"Morte", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= -{ - L"Mercenaire", - L"Milicien", - L"Soldat", - L"Vétéran", - - L"Civil", - - L"Administratif", - L"Soldat régulier", - L"Soldat d'élite", - L"Char", - - L"Animal", - L"Zombi", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"%s : Conseil de presse", - L"Ministère de l'information %s", - L"Mouvement révolutionnaire à %s", - L"The Times International", - L"International Times", - L"RIS (Renseignements Internationaux Spécialisés)", - - L"Recueille les articles de presse sur %s", - L"Nous sommes une source d'information neutre. Nous collectons différents articles d'actualité venant d'%s. Nous ne jugeons pas ces sources, nous nous contentons de les publier, pour que vous puissiez vous faire votre avis. Nous faisons paraitre des articles de différentes sources, venant :", - - L"Bilan du conflit", - L"Rapports", - L"News", - L"À propos de nous", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s en %s.", - - L"la guérilla", - L"l'armée", - - L"a attaqué", - L"a pris en embuscade", - L"héliportée a attaqué", - - L"L'attaque est venue %s.", - L"%s a eu des renforts venant %s.", - L"L'attaque est venue %s. %s a eu des renforts venant %s.", - L"du nord", - L"de l'est", - L"du sud", - L"de l'ouest", - L"et", - L"d'une direction inconnue", - - L"Des bâtiments ont été endommagés.", - L"Dans les combats, des bâtiments ont été endommagés. Il y a eu %d civil(s) tué(s) et %d blessé(s).", - L"Pendant l'attaque, %s et %s ont appelé des renforts.", - L"Pendant l'attaque, %s a appelé des renforts.", - L"Les témoins rapportent l'utilisation d'armes chimiques par les deux camps.", - L"Des armes chimiques ont été utilisées par %s.", - L"L'escalade du conflit s'aggrave ; les deux camps ont déployés des chars.", - L"Il y avait %d chars pour renforcer %s. %d d'entre eux ont été détruits dans des combats acharnés.", - L"Les deux camps avaient des tireurs d'élite.", - L"Des sources non vérifiées indiquent que des tireurs d'élite de %s ont été impliqués dans le combat.", - L"Ce secteur a une très grande importance stratégique, car il abrite l'une des rares batteries de missiles sol-air que l'armée %s possède. Des photographies aériennes montrent les dégâts du centre de commande. Ça laissera l'espace aérien %s sans défense pour le moment.", // TODO.Translate //A voir fini (to see finished) - L"La situation sur le terrain est devenue encore plus confuse, car il semble que le combat des rebelles a pris un nouveau virage. On a maintenant la confirmation qu'une milice rebelle s'est engagée activement avec les mercenaires étrangers.", - L"La position des royalistes semble plus précaire qu'on ne le pensait. Des rapports d'une scission au sein de l'armée ont fait surface, impliquant des échanges de feu au sein même du personnel militaire.", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"Tard dans la nuit", // 23 - 3 - L"À l'aube", // 3 - 6 - L"Tôt ce matin", // 6 - 8 - L"Dans la matinée", // 8 - 11 - L"À midi", // 11 - 14 - L"Dans l'après-midi", // 14 - 18 - L"Dans la soirée", // 18 - 21 - L"Dans la nuit", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Fond initial", - L"Revenu des mines", - L"Commerce", - L"Autres", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Munition", - L"Explosifs", - L"Nourriture", - L"Matériel médical", - L"Maintenance", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"Dans une bataille extrêmement meurtrière et inégale, l'armée a été anéantie sans trop de résistance.", - - L"Les rebelles ont facilement vaincu l'armée, infligeant de lourdes pertes.", - L"Sans trop d'effort, les rebelles ont infligé de lourdes pertes à l'armée et ont fait plusieurs prisonniers.", - - L"Dans un combat meurtrier, les rebelles ont réussi à écraser la partie adversaire. L'armée a subi des pertes sévères.", - L"Les rebelles ont subi des pertes, mais ont vaincu les royalistes. Des sources non vérifiées disent que plusieurs soldats auraient été faits prisonniers.", - - L"Dans une victoire à la Pyrrhus, les rebelles ont vaincu les royalistes, mais ils ont subi de lourdes pertes. Il n'est pour l'instant pas possible de dire s'ils arriveront à tenir position face à des assauts répétés.", - - L"La supériorité numérique de l'armée a été l'élément déterminant de ce combat. Les rebelles n'avaient aucune chance et ont dû se replier pour ne pas être tués ou capturés.", - L"Malgré le nombre élevé de rebelles dans ce secteur, l'armée les a facilement repoussés.", - - L"Les rebelles n'étaient clairement pas préparés à affronter la supériorité numérique de l'armée, ni son niveau d'équipement. Ils ont été aisément vaincus.", - L"Même si les rebelles étaient plus nombreux sur le terrain, l'armée était mieux équipée. Les rebelles ont évidemment perdu.", - - L"La violence des combats a fait des pertes considérables dans les deux camps, mais à la fin, la supériorité numérique l'armée a fait pencher la balance en sa faveur. La force rebelle a été anéantie. Il pourrait y avoir des survivants, mais nous ne pouvons pas confirmer cette source pour le moment.", - L"Lors d'une fusillade intense, l'entraînement supérieur de l'armée a fait pencher la balance en sa faveur. Les rebelles ont dû battre en retraite.", - - L"Aucun des deux camps n'était prêt à se soumettre. Alors que l'armée a finalement écarté la menace rebelle de la zone, leurs pertes conséquentes ont conduit l'unité à continuer d'exister uniquement de nom. Mais il est clair que les rebelles vont rapidement être à court d'hommes et de femmes si l'armée continue ce taux d'attrition.", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"Hors sujet", - L"Fait mineur", - L"Fait notable", - L"Fait marquant", - L"Fait significatif", - L"Fait intéressant", - L"Fait important", - L"Fait très important", - L"Fait grave", - L"Fait majeur", - L"Fait historique", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"Tué", - L"Blessé", - L"Prisonnier", - L"Tir", - - L"Compte", - L"Logistique", - L"Pertes", - L"Participant", - - L"Promotion", - L"Bilan", - L"Récit", - L"Précédent", - - L"Suivant", - L" :", - L"Jour", -}; - -STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate -{ - L"Glorious %s", - L"Mighty %s", - L"Awesome %s", - L"Intimidating %s", - - L"Powerful %s", - L"Earth-Shattering %s", - L"Insidious %s", - L"Swift %s", - - L"Violent %s", - L"Brutal %s", - L"Relentless %s", - L"Merciless %s", - - L"Cannibalistic %s", - L"Gorgeous %s", - L"Rogue %s", - L"Dubious %s", - - L"Sexually Ambigious %s", - L"Burning %s", - L"Enraged %s", - L"Visonary %s", - - // 20 - L"Gruesome %s", - L"International-law-ignoring %s", - L"Provoked %s", - L"Ceaseless %s", - - L"Inflexible %s", - L"Unyielding %s", - L"Regretless %s", - L"Remorseless %s", - - L"Choleric %s", - L"Unexpected %s", - L"Democratic %s", - L"Bursting %s", - - L"Bipartisan %s", - L"Bloodstained %s", - L"Rouge-wearing %s", - L"Innocent %s", - - L"Hateful %s", - L"Underwear-staining %s", - L"Civilian-devouring %s", - L"Unflinching %s", - - // 40 - L"Expect No Mercy From Our %s", - L"Very Mad %s", - L"Ultimate %s", - L"Furious %s", - - L"Its best to Avoid Our %s", - L"Fear the %s", - L"All Hail the %s!", - L"Protect the %s", - - L"Beware the %s", - L"Crush the %s", - L"Backstabbing %s", - L"Vicious %s", - - L"Sadistic %s", - L"Burning %s", - L"Wrathful %s", - L"Invincible %s", - - L"Guilt-ridden %s", - L"Rotting %s", - L"Sanitized %s", - L"Self-doubting %s", - - // 60 - L"Ancient %s", - L"Very Hungry %s", - L"Sleepy %s", - L"Demotivated %s", - - L"Cruel %s", - L"Annoying %s", - L"Huffy %s", - L"Bisexual %s", - - L"Screaming %s", - L"Hideous %s", - L"Praying %s", - L"Stalking %s", - - L"Cold-blooded %s", - L"Fearsome %s", - L"Trippin' %s", - L"Damned %s", - - L"Vegetarian %s", - L"Grotesque %s", - L"Backward %s", - L"Superior %s", - - // 80 - L"Inferior %s", - L"Okay-ish %s", - L"Porn-consuming %s", - L"Poisoned %s", - - L"Spontaneous %s", - L"Lethargic %s", - L"Tickled %s", - L"The %s is a dupe!", - - L"%s on Steroids", - L"%s vs. Predator", - L"A %s with a twist", - L"Self-Pleasuring %s", - - L"Man-%s hybrid", - L"Inane %s", - L"Overpriced %s", - L"Midnight %s", - - L"Capitalist %s", - L"Communist %s", - L"Intense %s", - L"Steadfast %s", - - // 100 - L"Narcoleptic %s", // TODO.Translate - L"Bleached %s", - L"Nail-biting %s", - L"Smite the %s", - - L"Bloodthirsty %s", - L"Obese %s", - L"Scheming %s", - L"Tree-Humping %s", - - L"Cheaply made %s", - L"Sanctified %s", - L"Falsely accused %s", - L"%s to the rescue", - - L"Crab-people vs. %s", - L"%s in Space!!!", - L"%s vs. Godzilla", - L"Untamed %s", - - L"Durable %s", - L"Brazen %s", - L"Greedy %s", - L"Midnight %s", - - // 120 - L"Confused %s", - L"Irritated %s", - L"Loathsome %s", - L"Manic %s", - - L"Ancient %s", - L"Sneaking %s", - L"%s of Doom", - L"%s's revenge", - - L"A %s on the run", - L"A %s out of time", - L"One with %s", - L"%s from hell", - - L"Super-%s", - L"Ultra-%s", - L"Mega-%s", - L"Giga-%s", - - L"A quantum of %s", - L"Her Majesties' %s", - L"Shivering %s", - L"Fearful %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Dragon", - L"Mountain Lion", - L"Copperhead Snake", - L"Jack Russell Terrier", - - L"Arch-Nemesis", - L"Basilisk", - L"Blade", - L"Shield", - - L"Hammer", - L"Spectre", - L"Congress", - L"Oilfield", - - L"Boyfriend", - L"Girlfriend", - L"Husband", - L"Stepmother", - - L"Sand Lizard", - L"Bankers", - L"Anaconda", - L"Kitten", - - // 20 - L"Congress", - L"Senate", - L"Cleric", - L"Badass", - - L"Bayonet", - L"Wolverine", - L"Soldier", - L"Tree Frog", - - L"Weasel", - L"Shrubbery", - L"Tar pit", - L"Sunset", - - L"Hurricane", - L"Ocelot", - L"Tiger", - L"Defense Industry", - - L"Snow Leopard", - L"Megademon", - L"Dragonfly", - L"Rottweiler", - - // 40 - L"Cousin", - L"Grandma", - L"Newborn", - L"Cultist", - - L"Disinfectant", - L"Democracy", - L"Warlord", - L"Doomsday Device", - - L"Minister", - L"Beaver", - L"Assassin", - L"Rain of Burning Death", - - L"Prophet", - L"Interloper", - L"Crusader", - L"Administration", - - L"Supernova", - L"Liberty", - L"Explosion", - L"Bird of Prey", - - // 60 - L"Manticore", - L"Frost Giant", - L"Celebrity", - L"Middle Class", - - L"Loudmouth", - L"Scape Goat", - L"Warhound", - L"Vengeance", - - L"Fortress", - L"Mime", - L"Conductor", - L"Job-Creator", - - L"Frenchman", - L"Superglue", - L"Newt", - L"Incompetency", - - L"Steppenwolf", - L"Iron Anvil", - L"Grand Lord", - L"Supreme Ruler", - - // 80 - L"Dictator", - L"Old Man Death", - L"Shredder", - L"Vacuum Cleaner", - - L"Hamster", - L"Hypno-Toad", - L"Discjockey", - L"Undertaker", - - L"Gorgon", - L"Child", - L"Mob", - L"Raptor", - - L"Goddess", - L"Gender Inequality", - L"Mole", - L"Baby Jesus", - - L"Gunship", - L"Citizen", - L"Lover", - L"Mutual Fund", - - // 100 - L"Uniform", // TODO.Translate - L"Saber", - L"Snow Leopard", - L"Panther", - - L"Centaur", - L"Scorpion", - L"Serpent", - L"Black Widow", - - L"Tarantula", - L"Vulture", - L"Heretic", - L"Zombie", - - L"Role-Model", - L"Hellhound", - L"Mongoose", - L"Nurse", - - L"Nun", - L"Space Ghost", - L"Viper", - L"Mamba", - - // 120 - L"Sinner", - L"Saint", - L"Comet", - L"Meteor", - - L"Can of worms", - L"Fish oil pills", - L"Breastmilk", - L"Tentacle", - - L"Insanity", - L"Madness", - L"Cough reflex", - L"Colon", - - L"King", - L"Queen", - L"Bishop", - L"Peasant", - - L"Tower", - L"Mansion", - L"Warhorse", - L"Referee", - - // 140 -}; - -STR16 szMercCompareWebSite[] = // TODO.Translate -{ - // main page - L"Mercs Love or Dislike You", - L"Your #1 teambuilding experts on the web", - - L"About us", - L"Analyse a team", - L"Pairwise comparison", - L"Customer voices", - - L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"Your team struggles with itself.", - L"Your employees waste time working against each other.", - L"Your workforce experiences a high fluctuation rate.", - L"You constantly receive low marks on workplace satisfaction ratings.", - L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"A few citations from our satisfied customers:", - L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G., Novelist-", - L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C., Corrective law enforcement-", - L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W., Snake charmer-", - L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L., SPK-", - L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C., NASA-", - L"I fully recommend this site!", - L"-Kasper H., H&C logistic Inc-", - L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke, Kerberus Inc-", - - // analyze - L"Choose your employee", - L"Choose your squad", - - // error messages - L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s shot me!", - L"%s is scheming behind my back", - L"%s interfered in my business", - L"%s is friends with my enemy", - - L"%s got a contract before I did", - L"%s ordered a shameful retreat", - L"%s massacred the innocent", - L"%s slows us down", - - L"%s doesn't share food", - L"%s jeopardizes the mission", - L"%s is a drug addict", - L"%s is thieving scum", - - L"%s is an incompetent commander", - L"%s is overpaid", - L"%s gets all the good stuff", - L"%s mounted a gun on me", - - L"%s treated my wounds", - L"Had a good drink with %s", - L"%s is fun to get wasted with", - L"%s is annoying when drunk", - - L"%s is an idiot when drunk", - L"%s opposed our view in an argument", - L"%s supported our position", - L"%s agrees to our reasoning", - - L"%s's beliefs are contrary to ours", - L"%s knows how to calm down people", - L"%s is insensitive", - L"%s puts people in their places", - - L"%s is way too impulsive", - L"%s is disease-ridden", - L"%s treated my diseases", - L"%s does not hold back in combat", - - L"%s enjoys combat a bit too much", - L"%s is a good teacher", - L"%s led us to victory", - L"%s saved my life", - - L"%s stole my kill", - L"%s and me fought well together", - L"%s made the enemy surrender", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"World Health Organization", - L"Bringing health to life", - - // links to other pages - L"About WHO", - L"Disease in Arulco", - L"About diseases", - - // text on the main page - L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", - L"You currently do not have access to WHO data on the arulcan plague.", - L"You have acquired detailed maps on the status of the disease.", - L"Subscribe to map updates", - L"Unsubscribe map updates", - - // helpful tips page - L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus", - L"Experience In Security", - - // links to other pages - L"What is Kerberus?", - L"Team Contracts", - L"Individual Contracts", - - // text on the main page - L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", - L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", - L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"You can select the type and number of personnel you want to hire here:", - L"Initial deployment", - L"Regular personnel", - L"Veteran personnel", - - L"%d available, %d$ each", - L"Hire: %d", - L"Cost: %d$", - - L"Select the initial operational area:", - L"Total Cost: %d$", - L"ETA: %02d:%02d", - L"Close Contract", - - L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus reinforcements have arrived in %s.", - L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"Manipulations de l'inventaire", - - L"LVN", - L"Recharger", - L"Réunir o.", - L"", - - L"Trier", - L"Fusionner", - L"Séparer", - L"Classer", - - L"Caisses", - L"Boîtes", - L"Poser S/D", - L"Mett. S/D", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"Afficher couverture", - - L"Fermer", - L"Ennemi", - L"Merc.", - L"", - - L"Roles", // TODO.Translate - L"Fortification", // TODO.Translate - L"Tracker", - L"CTH mode", - - L"Pièges", - L"Réseau", - L"Détecteur", - L"", - - L"Réseau A", - L"Réseau B", - L"Réseau C", - L"Réseau D", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Désactivation affichage couverture/pièges", - L"Afficher les zones dangereuses", - L"Afficher la vue du mercenaire", - L"", - - L"Display enemy role symbols", // TODO.Translate - L"Display planned fortifications", - L"Display enemy tracks", - L"", - - L"Afficher réseau (piège)", - L"Afficher les réseaux (pièges) par couleur", - L"Afficher les pièges à proximité", - L"", - - L"Afficher le réseau A", - L"Afficher le réseau B", - L"Afficher le réseau C", - L"Afficher le réseau D", -}; - -// TODO.Translate -STR16 szDynamicDialogueText[40][17] = // TODO.Translate -{ - // OPINIONEVENT_FRIENDLYFIRE - L"What the hell! $CAUSE$ attacked me!", - L"", - L"", - L"What? Me? No way, I'm engaging at the enemy!", - L"Oops.", - L"", - L"", - L"$CAUSE$ has attacked $VICTIM$. What do you do?", - L"Nah, that must have been enemy fire!", - L"Yeah, I saw it too!", - L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", - L"I saw it, it was clearly enemy fire!", - L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", - L"This is war! People get shot all the time! Speaking of... shoot more people, people!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"I would if you weren't such a wussy!", - L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"I'm doing my job. Get back to yours!", - L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"Patched together again? Good, now move!", - L"You're welcome.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'Even'? What does that mean?", - L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Nice one, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"Is there a difference?", - L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"What?!", - L"No!", - L"That is false!", - L"That is not true!", - - L"Lies, lies, lies. Nothing but lies!", - L"Liar!", - L"Traitor!", - L"You watch your mouth!", - - L"This is none of your business.", - L"Who ever invited you?", - L"Nobody asked for your opinion, $INTERJECTOR$.", - L"You stay away from me.", - - L"Why are you all against me?", - L"Why are you against me, $INTERJECTOR$?", - L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"Not listening...!", - - L"I hate this psycho circus.", - L"I hate this freak show.", - L"Back off!", - L"Lies, lies, lies...", - - L"No way!", - L"So not true.", - L"That is so not true.", - L"I know what I saw.", - - L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"Nope.", - L"You are mistaken.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"What $INTERJECTOR_GENDER$ said.", - - L"Thanks, $INTERJECTOR$!", - L"Once again I'm right!", - L"See, $CAUSE$? I am right!", - L"Once again $SPEAKER$ is right!", - - L"Aye.", - L"Yup.", - L"Yep", - L"Yes.", - - L"Indeed.", - L"True.", - L"Ha!", - L"See?", - - L"Exactly!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"That's right!", - L"Indeed!", - L"Exactly that.", - L"$CAUSE$ does that all the time.", - - L"$VICTIM$ is right!", - L"I was gonna' point that out, too!", - L"What $VICTIM$ said.", - L"That's our $CAUSE$!", - - L"Yeah!", - L"Now THIS is going to be interesting...", - L"You tell'em, $VICTIM$!", - L"Agreeing with $VICTIM$ here...", - - L"Classic $CAUSE$.", - L"I couldn't have said it better myself.", - L"That is exactly what happened.", - L"Agreed!", - - L"Yup.", - L"True.", - L"Bingo.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"Now wait a minute...", - L"Wait a sec, that's not what right...", - L"What? No.", - L"That is not what happened.", - - L"Hey, stop blaming $CAUSE$!", - L"Oh shut up, $VICTIM$!", - L"Nonono, you got that wrong.", - L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"And I suppose you never did, $VICTIM$?", - L"Hmmmm... no.", - L"Great. Let's have an argument. It's not like we have other things to do...", - L"You are mistaken!", - - L"You are wrong!", - L"Me and $CAUSE$ would never do such a thing.", - L"Nah, can't be.", - L"I don't think so.", - - L"Why bring that up now?", - L"Really, $VICTIM$? Is this necessary?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Keep silent", - L"Support $VICTIM$", - L"Support $CAUSE$", - L"Appeal to reason", - L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"he", - L"she", - L"him", - L"her", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% wisdom stat\n", - L" %s%d%% effective level\n", - - L" %s%d%% APs\n", - L" %s%d maximum breath\n", - L" %s%d%% strength to carry items\n", - L" %s%2.2f life regeneration/hour\n", - L" %s%d need for sleep\n", - L" %s%d%% water consumption\n", - L" %s%d%% food consumption\n", - - L"%s was diagnosed with %s!", - L"%s is cured of %s!", - - L"Diagnosis", - L"Treatment", - L"Burial", // TODO.Translate - L"Cancel", - - L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate - - L"High amount of distress can cause a personality split\n", // TODO.Translate - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", // TODO.Translate - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"Hide", // TODO.Translate - L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|F|o|o|d: %d%%\n", - - L"max morale altered by %s%d\n", - L" %s%d need for sleep\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% assignment efficiency\n", - L" %s%d%% chance to lose stats\n", -}; - -STR16 szIMPGearWebSiteText[] = // TODO.Translate -{ - // IMP Gear Entrance - L"How should gear be selected?", - L"Old method: Random gear according to your choices", - L"New method: Free selection of gear", - L"Old method", - L"New method", - - // IMP Gear Entrance - L"I.M.P. Equipment", - L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate -}; - -STR16 szIMPGearPocketText[] = -{ - L"Select helmet", - L"Select vest", - L"Select pants", - L"Select face gear", - L"Select face gear", - - L"Select main gun", - L"Select sidearm", - - L"Select LBE vest", - L"Select left LBE holster", - L"Select right LBE holster", - L"Select LBE combat pack", - L"Select LBE backpack", - - L"Select launcher / rifle", - L"Select melee weapon", - - L"Select additional items", //BIGPOCK1POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select medkit", //MEDPOCK1POS - L"Select medkit", - L"Select medkit", - L"Select medkit", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select additional items", //SMALLPOCK19POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"We cannot relay orders to this sector, militia command not possible.", - L"Unassigned", - L"Group No.", - L"Next", - - L"ETA", - L"Group %d (new)", - L"Group %d", - L"Final", - - L"Volunteers: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = // TODO.Translate -{ - L"Enemy helicopter shot down in %s!", - L"We... uhm... currently don't control that site, commander...", - L"The SAM does not need maintenance at the moment.", - L"We've already ordered the repair, this will take time.", - - L"We do not have enough resources to do that.", - L"Repair SAM site? This will cost %d$ and take %d hours.", - L"Enemy helicopter hit in %s.", - L"%s fires %s at enemy helicopter in %s.", - - L"SAM in %s fires at enemy helicopter in %s.", -}; - -STR16 szFortificationText[] = -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"Militia", - L"Militia Forces Overview", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Took part in Operation %s", - L"Recruited on Day %d, %d:%02d in %s", - L"Promoted on Day %d, %d:%02d", - L"KIA, Operation %s", - - L"Lightly wounded during Operation %s", - L"Heavily wounded during Operation %s", - L"Critically wounded during Operation %s", - L"Valiantly fought in Operation %s", - - L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", // TODO:Translate -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"All sectors", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"Merchant is hostile and does not want to trade.", - L"Merchant is in no state to do business.", - L"Merchant won't trade during combat.", - L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = // TODO.Translate -{ - L"normal", - L"rain", - L"thunderstorm", - L"sandstorm", - - L"snow", -}; - -STR16 szSnakeText[] = -{ - L"%s evaded a snake attack!", - L"%s was attacked by a snake!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"Converted %s into resources", - L"Guns: ", - L"Armour: ", - L"Misc: ", - - L"There are no volunteers left for militia!", - L"Not enough resources to train militia!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s starts hacking.", - L"%s accesses the computer, but finds nothing of interest.", - L"%s is not skilled enough to hack the computer.", - L"%s reads the file, but learns nothing new.", - - L"%s can't make sense out of this.", - L"%s couldn't use the watertap.", - L"%s has bought a %s.", - L"%s doesn't have enough money. That's just embarassing.", - - L"%s drank from water tap", - L"This machine doesn't seem to be working.", // TODO.Translate -}; - -STR16 szLaptopStatText[] = // TODO.Translate -{ - L"threaten effectiveness %d\n", - L"leadership %d\n", - L"approach modifier %.2f\n", - L"background modifier %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Good Guy", - L"%s eschews excessive violence and will refuse to attack non-hostiles.", - - L"Friendly approach", - L"Direct approach", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -STR16 szGearTemplateText[] = // TODO.Translate -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate -}; - -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -STR16 szFactoryText[] = // TODO.Translate -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -// TODO.Translate -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Space Available:", - L"MOLLE Space Required:", - L"MOLLE Small Slot Count:", - L"MOLLE Medium Slot Count:", - L"MOLLE Pouch Size: Small", - L"MOLLE Pouch Size: Medium", - L"MOLLE Pouch Size: Medium (Hydration)", - L"Thigh Rig", - L"Vest", - L"Combat Pack", - L"Backpack", // 10 - L"MOLLE Pouch", - L"Compatible backpacks:", - L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = // TODO.Translate -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = // TODO.Translate -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = // TODO.Translate -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = // TODO.Translate -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia\nthat appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = // TODO: Translate -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //FRENCH +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("FRENCH") + + #ifdef FRENCH + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_FrenchText_public_symbol(void){;} + +#ifdef FRENCH + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. + +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", + +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. + +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. + +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. + +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; + +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Lieux", // 0 + L"Personnages", + L"Objets", + L"Quêtes", + L"Menu 5", + L"Menu 6", //5 + L"Menu 7", + L"Menu 8", + L"Menu 9", + L"Menu 10", + L"Menu 11", //10 + L"Menu 12", + L"Menu 13", + L"Menu 14", + L"Menu 15", + L"Menu 15", // 15 + + //Briefing Room + L"Quitter", +}; + +STR16 pOtherButtonsText[] = +{ + L"Briefing", + L"Accepter", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Briefing", + L"Accepter mission", +}; + + +STR16 pLocationPageText[] = +{ + L"Page préc.", + L"Photo", + L"Page suiv.", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"Accueil", + L">>", + L"Type : ", + L"Vide", + L"Pas de mission définie. Ajouter mission au fichier TableData\\BriefingRoom\\BriefingRoom.xml. La première mission doit être visible. Mettre la valeur Hidden = 0.", + L"Salle de briefing. Appuyez sur la touche 'ENTRÉE'.", +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Inconnu",// 0 - unknown + L"Ville", //1 - cities + L"Site SAM", //2 - SAM Site + L"Autre lieu", //3 - other location + L"Mine", //4 - mines + L"Base militaire", //5 - military complex + L"Laboratoire", //6 - laboratory complex + L"Entreprise", //7 - factory complex + L"Hôpital", //8 - hospital + L"Prison", //9 - prison + L"Aéroport", //10 - air port +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Voir tout", + L"Voir AIM", + L"Voir MERC", + L"Voir PR", + L"Voir PNJ", + L"Voir Véhicule", + L"Voir IMP", + L"Voir PNJE", + L"Filtre", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"Tout", + L"AIM", + L"MERC", + L"PR", + L"PNJ", + L"Véh.", + L"IMP", + L"PNJE", + L"Filtre", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Voir tout", + L"Voir Ville", + L"Voir Site SAM", + L"Voir Autre lieu", + L"Voir mine", + L"Voir Base militaire", + L"Voir Laboratoire", + L"Voir Entreprise", + L"Voir Hôpital", + L"Voir prison", + L"Voir Aéroport", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"Tout", + L"Ville", + L"SAM", + L"Autre", + L"Mine", + L"Milit.", + L"Labo.", + L"Usine", + L"Hôpit.", + L"Prison", + L"Aérop.", +}; + +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"Tout",//0 + L"Ville", + L"SAM", + L"Mine", + L"Aérop.", + L"Nature", + L"Ss-sol", + L"Instal.", + L"Autre", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Voir tout.",//facility index + 1 + L"Voir ville.", + L"Voir site SAM.", + L"Voir mine.", + L"Voir aéroport.", + L"Voir les extérieurs.", + L"Voir les sous-sols.", + L"Voir secteur avec installation(s)\n[|B|G] Suivant\n[|B|D] Réinitialise filtre.", + L"Voir autre secteur.", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; + +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"Tout",//0 + L"AIM", + L"MERC", + L"PR", + L"PNJ", + L"IMP", + L"Autre",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Voir tout.",//Other index + 1 + L"Voir membre de l'AIM.", + L"Voir membre de MERC.", + L"Voir rebellle.", + L"Voir Personnage Non Jouable.", + L"Voir personnage IMP.", + L"Voir autre personnage\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", +}; + +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Véh.", + L"PNJE", + L"",//reserved. Insert new Other filters above! +}; + +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"Tout",//0 + L"Arme", + L"Munit.", + L"Prot.", + L"LBE", + L"Acces.", + L"Divers",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Tout voir",//misc index + 1 + L"Voir les armes\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", + L"Voir les munitions\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", + L"Voir les protections\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", + L"Voir l'équipement LBE\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", + L"Voir les accessoires\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", + L"Voir les objets\n[|B|G] Catégorie suivante\n[|B|D] Réinitialise filtre.", +}; + +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"A/poing", + L"PM", + L"Mitra.", + L"Fusil", + L"Sniper", + L"F/Ass.", + L"FM", + L"F/pompe", + L"Arme/L", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"A/poing", + L"PM", + L"Mitra.", + L"Fusil", + L"Sniper", + L"F/Ass.", + L"FM", + L"F/pompe", + L"Arme/L", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Casque", + L"Veste", + L"Pant.", + L"Blind.", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Dédié", + L"Veste", + L"Sac", + L"Sac/dos", + L"Poche", + L"Autre", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Optique", + L"Attache", + L"Bouche", + L"Externe", + L"Interne", + L"Autre", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"A/bl.", + L"A/Jet", + L"Mêlée", + L"Grenade", + L"Explos.", + L"Médical", + L"Kit", + L"Face", + L"Autre", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; + +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"Tout", + L"Activée", + L"Achevée", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Tout voir",//misc index + 1 + L"Voir les quêtes activées", + L"Voir les quêtes achevées", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"Tout", //0 + L"Arme", + L"Mun.", + L"LBE", + L"Divers", + + L"Tout", //5 + L"Arme", + L"Munition", + L"Mat. LBE", + L"Divers", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"A/Lourde", + L"A/Poing", + L"PM", + L"Mitrail.", + L"Fusil", + L"Sniper", + L"F/Assaut", + L"FM", + L"F/Pompe", + + // Ammo + L"A/Poing", + L"PM", //10 + L"Mitrail.", + L"Fusil", + L"Sniper", + L"F/Assaut", + L"FM", + L"F/Pompe", + + // Used + L"Arme", + L"Protection", + L"Mat. LBE", + L"Divers", //20 + + // Armour + L"Casque", + L"Veste", + L"Pantalon", + L"Blindage", + + // Misc + L"A/blanche", + L"Arme/Jet", + L"Mêlée", + L"Grenade", + L"Explosif", + L"Médical", //30 + L"Kit&Habit", + L"Mat. Face", + L"Mat. LBE", + L"Divers", //34 +}; + +// TODO.Translate +STR16 QuestDescText[] = +{ + L"Deliver Letter", + L"Food Route", + L"Terrorists", + L"Kingpin Chalice", + L"Kingpin Money", + L"Runaway Joey", + L"Rescue Maria", + L"Chitzena Chalice", + L"Held in Alma", + L"Interogation", + + L"Hillbilly Problem", //10 + L"Find Scientist", + L"Deliver Video Camera", + L"Blood Cats", + L"Find Hermit", + L"Creatures", + L"Find Chopper Pilot", + L"Escort SkyRider", + L"Free Dynamo", + L"Escort Tourists", + + + L"Doreen", //20 + L"Leather Shop Dream", + L"Escort Shank", + L"No 23 Yet", + L"No 24 Yet", + L"Kill Deidranna", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", +}; + +// TODO.Translate +STR16 FactDescText[] = +{ + L"Omerta Liberated", + L"Drassen Liberated", + L"Sanmona Liberated", + L"Cambria Liberated", + L"Alma Liberated", + L"Grumm Liberated", + L"Tixa Liberated", + L"Chitzena Liberated", + L"Estoni Liberated", + L"Balime Liberated", + + L"Orta Liberated", //10 + L"Meduna Liberated", + L"Pacos approched", + L"Fatima Read note", + L"Fatima Walked away from player", + L"Dimitri (#60) is dead", + L"Fatima responded to Dimitri's supprise", + L"Carlo's exclaimed 'no one moves'", + L"Fatima described note", + L"Fatima arrives at final dest", + + L"Dimitri said Fatima has proof", //20 + L"Miguel overheard conversation", + L"Miguel asked for letter", + L"Miguel read note", + L"Ira comment on Miguel reading note", + L"Rebels are enemies", + L"Fatima spoken to before given note", + L"Start Drassen quest", + L"Miguel offered Ira", + L"Pacos hurt/Killed", + + L"Pacos is in A10", //30 + L"Current Sector is safe", + L"Bobby R Shpmnt in transit", + L"Bobby R Shpmnt in Drassen", + L"33 is TRUE and it arrived within 2 hours", + L"33 is TRUE 34 is false more then 2 hours", + L"Player has realized part of shipment is missing", + L"36 is TRUE and Pablo was injured by player", + L"Pablo admitted theft", + L"Pablo returned goods, set 37 false", + + L"Miguel will join team", //40 + L"Gave some cash to Pablo", + L"Skyrider is currently under escort", + L"Skyrider is close to his chopper in Drassen", + L"Skyrider explained deal", + L"Player has clicked on Heli in Mapscreen at least once", + L"NPC is owed money", + L"Npc is wounded", + L"Npc was wounded by Player", + L"Father J.Walker was told of food shortage", + + L"Ira is not in sector", //50 + L"Ira is doing the talking", + L"Food quest over", + L"Pablo stole something from last shpmnt", + L"Last shipment crashed", + L"Last shipment went to wrong airport", + L"24 hours elapsed since notified that shpment went to wrong airport", + L"Lost package arrived with damaged goods. 56 to False", + L"Lost package is lost permanently. Turn 56 False", + L"Next package can (random) be lost", + + L"Next package can(random) be delayed", //60 + L"Package is medium sized", + L"Package is largesized", + L"Doreen has conscience", + L"Player Spoke to Gordon", + L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo asked for first aid", + L"Dynamo can be recruited", + L"Npc is bleeding", + L"Shank wnts to join", + + L"NPC is bleeding", //70 + L"Player Team has head & Carmen in San Mona", + L"Player Team has head & Carmen in Cambria", + L"Player Team has head & Carmen in Drassen", + L"Father is drunk", + L"Player has wounded mercs within 8 tiles of NPC", + L"1 & only 1 merc wounded within 8 tiles of NPC", + L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda is in the store ", + L"Brenda is Dead", + + L"Brenda is at home", //80 + L"NPC is an enemy", + L"Speaker Strength >= 84 and < 3 males present", + L"Speaker Strength >= 84 and at least 3 males present", + L"Hans lets ou see Tony", + L"Hans is standing on 13523", + L"Tony isnt available Today", + L"Female is speaking to NPC", + L"Player has enjoyed the Brothel", + L"Carla is available", + + L"Cindy is available", //90 + L"Bambi is available", + L"No girls is available", + L"Player waited for girls", + L"Player paid right amount of money", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping expectingh visit from player", + L"Darren expecting money from player", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Supprimer", + L"Article supprimer (|S|u|p|p|r)", +}; + +STR16 FaceDirs[8] = +{ + L"NORD", + L"NORD-Est", + L"EST", + L"SUD-EST", + L"SUD", + L"SUD-OUEST", + L"OUEST", + L"NORD-OUEST" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Activer l'affichage du joueur", //0 + L"Activer l'affichage des ennemis", + L"Activer l'affichage des créatures", + L"Activer l'affichage des rebelles", + L"Activer l'affichage des civils", + + L"Joueur", + L"Ennemi", + L"Créature", + L"Rebelle", + L"Civil", + + L"PLACEMENT DÉTAILLÉ", //10 + L"Information général mode", + L"Apparence physique mode", + L"Attribut mode", + L"Inventaire mode", + L"ID profile mode", + L"Calendrier mode", + L"Calendrier mode", + L"SUPPRIMER", + L"Supprimer le mercenaire sélectionné (|S|u|p|p|r)", + L"SUIVANT", //20 + L"Mercenaire suivant (|E|S|P|A|C|E)\nMercenaire précédente (|C|T|R|L+|E|S|P|A|C|E)", + L"Changer l'existence prioritaire", + L"Changer, si le placement a\naccès à toutes les portes", + + //Orders + L"STATIONNAIRE", + L"EN DÉFENSE", + L"DE GARDE", + L"CHERCHER LES ENNEMIS", + L"PATROUILLE PROCHE", + L"PATROUILLE LONTAINE", + L"POINT DE RASSEMBLEMENT", //30 + L"TOUR DE PATROUILLE", + + //Attitudes + L"DÉFENSE", + L"SOLO BRAVE", + L"SOUTIEN BRAVE", + L"AGGRESIF", + L"SOLO RUSÉ", + L"SOUTIEN RUSÉ", + + L"Placez mercenaire face à %s", // Max 30 characters + + L"Trouvé", + L"MAUVAIS", //40 + L"FAIBLE", + L"MOYEN", + L"BON", + L"EXCELLENT", + + L"MAUVAIS", + L"FAIBLE", + L"MOYEN", + L"BON", + L"EXCELLENT", + + L"Couleur précédente", //50 + L"Couleur suivante", + + L"Corps précédent", + L"Corps suivant", + + L"Changer la variation de temps (+ ou - 15 minutes)", + L"Changer la variation de temps (+ ou - 15 minutes)", + L"Changer la variation de temps (+ ou - 15 minutes)", + L"Changer la variation de temps (+ ou - 15 minutes)", + + L"Pas d'action", + L"Pas d'action", + L"Pas d'action", //60 + L"Pas d'action", + + L"Effacer le calendrier", + + L"trouver le mercenaire sélectionné", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"TOITS", //0 + L"MURS", + L"INFO PIÈCE", + + L"Placer les murs en utilisant la méthode de sélection", + L"Placer les portes en utilisant la méthode de sélection", + L"Placer les toits en utilisant la méthode de sélection", + L"Placer les fenêtres en utilisant la méthode de sélection", + L"Placer les murs endommagés en utilisant la méthode de sélection.", + L"Placer les meubles en utilisant la méthode de sélection", + L"Placer les décalcomanies murales en utilisant la méthode de sélection", + L"Placer les étages en utilisant la méthode de sélection", //10 + L"Placer les meubles génériques en utilisant la méthode de sélection", + L"Placer les murs avec la méthode rapide", + L"Placer les portes avec la méthode rapide", + L"Placer les fenêtres avec la méthode rapide", + L"Placer les murs endommagés avec la méthode rapide", + L"Verrouiller ou piéger les portes existantes", + + L"Ajouter une nouvelle salle", + L"Éditer les murs de caverne.", + L"Enlever un secteur de la construction existante.", + L"Enlever une construction", //20 + L"Ajouter/remplacer le toit de la construction par un nouveau toit plat.", + L"Copier une construction", + L"Bouger une construction", + L"Dessiner le numéro de pièce.\n(Maintenir |M|A|J pour réutiliser le numéro de pièce)", + L"Supprimer le numéro de pièce", + + L"Activer le mode supprimer (|E)", + L"Effacer le dernier changement (|R|e|t|o|u|r)", + L"Taille du cycle (|A/|Z)", + L"Toits (|H)", + L"Murs (|W)", //30 + L"Info Pièce (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Arm.", //0 + L"Mun.", + L"Prot.", + L"LBE", + L"Exp", + L"E1", + L"E2", + L"E3", + L"Détentes", + L"Clés", + L"Cps", //10 + L"Précédent (|,)", // previous page + L"Suivant (|.)", // next page +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Ajouter une source de lumière ambiante", //0 + L"Basculer en fausse lumière ambiante.", + L"Ajouter des réseaux de sortie (clic droit pour une requête existante).", + L"Taille de cycle (|A/|Z)", + L"Effacer le dernier changement (|R|e|t|o|u|r)", + L"Basculer en mode supprimer (|E)", + L"Spécifier un point au NORD pour valider le but.", + L"Spécifier un point à l'OUEST pour valider le but.", + L"Spécifier un point à l'EST pour valider le but.", + L"Spécifier un point au SUD pour valider le but.", + L"Spécifier un point du centre pour valider le but.", //10 + L"Spécifier un point isolé pour valider le but.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"Nouvelle carte", //0 + L"Nouveau sous-sol", + L"Nouveau niveau de caverne", + L"Sauvegarder la carte (|C|T|R|L+|S)", + L"Charger la carte (|C|T|R|L+|L)", + L"Sélectionner un tileset", + L"Quitter le mode éditeur", + L"Quitter le jeu (|A|L|T+|X)", + L"Créer un carte de radar", + L"Une fois la carte vérifiée, elle sera sauvée sous le format original JA2. Les objets avec l'ID > 350 seront perdus.\nCette option est seulement valable sur les cartes de taille \"normale\" qui ne font pas référence aux nombre de réseaux (ex : réseau de sortie) > 25600.", + L"Une fois la carte vérifiée et chargée, elle sera élargie automatiquement selon les rangées et colonnes choisies.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Dessiner des textures de sol (|G)", //0 + L"Sélectionner les textures du sol de la carte", + L"Placer les rives et falaises (|C)", + L"Dessiner les routes (|P)", + L"Dessiner les débris (|D)", + L"Placer les arbres & buissons (|T)", + L"Placer les rochers (|R)", + L"Placer barrils & autres camelotes (|O)", + L"Remplir le secteur", + L"Effacer le dernier changement (|R|e|t|o|u|r)", + L"Basculer en mode supprimer (|E)", //10 + L"Taille du cycle (|A/|Z)", + L"Augmenter la densité du pinceau (|])", + L"Diminuer la densité du pinceau (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Terrain", //0 + L"Bâtiment", + L"Objets", + L"Mercenaires", + L"Info carte", + L"Options", + L"|./|, : Cycle entre les dimensions 'largeur : xx'\n|P|g |U|p/|P|g |D|n : case précédente/suivante pour l(es)'objet(s) sélectionné(s)/en méthode intelligente", //Terrain fasthelp text + L"|./|, : Cycle entre les dimensions 'largeur : xx'\n|P|g |U|p/|P|g |D|n : case précédente/suivante pour l(es)'objet(s) sélectionné(s)/en méthode intelligente", //Buildings fasthelp text + L"|E|S|P|A|C|E : Sélectionne l'objet suivant\n|C|T|R|L+|E|S|P|A|C|E : Sélectionne l'objet précédent\n \n|/ : Place le même objet sous le curseur de la souris\n|C|T|R|L+|/ : Place le nouveau objet sous le curseur de la souris", //Items fasthelp text + L"|1-|9 : Pose de waypoints\n|C|T|R|L+|C/|C|T|R|L+|V : Copie/colle mercenaire\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text // TODO.Translate + L"|C|T|R|L+|G : Va à la case\n|M|A|J : fait défiler la carte au-delà de ses limites\n \n(|t|i|l|d|e): Toggle cursor level\n|I : (dés)active la carte vue de dessus\n|J : (dés)active l'affichage des terrains élevés\n|K : (dés)active les marqueurs de terrain élevé\n|M|A|J+|L : (dés)active les points d'angle de la carte\n|M|A|J+|T : (dés)active les feuillages\n|U : (dés)active la montée du monde\n \n|./|, : Cycle entre les dimensions 'largeur : xx'", //Map Info fasthelp text // TODO.Translate + L"|C|T|R|L+|N : Crée une nouvelle carte\n \n|F|5 : Montre le résumé des informations/Carte du monde\n|F|1|0 : Retire toutes les lumières\n|F|1|1 : recule les horaires\n|F|1|2 : Efface les horaires\n \n|M|A|J+|R : (dés)active les placements aléatoires basés sur la quantité du/des objet(s) sélectionné(s)\n \nOptions en ligne de commande\n|-|F|A|I|R|E|C|A|R|T|E|S : Génère la carte de type radar\n|-|F|A|I|R|E|C|A|R|T|E|S|C|N|V : Génère la carte de type radar ainsi que le couvert pour la dernière version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"Point d'entrée NORD", //0 + L"Point d'entrée OUEST", + L"Point d'entrée EST", + L"Point d'entrée SUD", + L"Point d'entrée centre", + L"Point d'entrée isolé", + + L"Principale", + L"Nuit", + L"24 heures", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Déclencheur de panique 1", //0 + L"Déclencheur de panique 2", + L"Déclencheur de panique 3", + L"Déclencheur %d", + + L"Action de pression", + L"Action de panique 1", + L"Action de panique 2", + L"Action de panique 3", + L"Action %d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"Pas de verrouillage d'ID", //0 + L"Piège explosif", + L"Piège électrique", + L"Piège sonore", + L"Alarme silencieuse", + L"Super piège électrique", //5 + L"Piège sonore de maison close", + L"Piège de niveau %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Enregistrer la carte au format vanilla JA2 (v1.12) (Version : 5.00/25)", //0 + L"Aucune carte n'est actuellement chargée.", + L"Fichier : %S, Tileset actuel : %s", + L"Élargir la carte au chargement", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"BASCULER", //0 + L"VUES", + L"MODE DE SÉLECTION", + L"MÉTHODE RAPIDE", + L"MODE DE CONSTRUCTION", + L"Pièce #", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Modification des attributs de verrouillage à l'index %d de la carte.", + L"Verrouillage ID", + L"Type de piège", + L"Niveau du piège", + L"Verrouillé", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Action de pression", //0 + L"Action de panique 1", + L"Action de panique 2", + L"Action de panique 3", + L"Action %d", + + L"Déclencheur de panique 1", //5 + L"Déclencheur de panique 2", + L"Déclencheur de panique 3", + L"Déclencheur %d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Info Status Ligne 1", + L"Info Status Ligne 2", + L"Info Status Ligne 3", + L"Info Status Ligne 4", + L"Info Status Ligne 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Amorcer", + L"Nuit", + L"24 H", //5 + + L"Rayon", + + L"Souterrain", + L"Niveau de lumière", + + L"Extérieur", + L"Sous-sol", //10 + L"Caves", + + L"Restreint", + L"Défiler ID", + + L"Destination", + L"Secteur", //15 + L"Destination", + L"Niveau sous-sol", + L"Dest.", + L"Grille No", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"Pas d'action", + L"Porte verrouillée", + L"Porte déverrouillée", + L"Porte ouverte", + L"Porte fermée", + L"Aller à la No", + L"Quitter le secteur", + L"Entrer secteur", + L"Rester secteur", + L"Dormir", + L"Ignorez cela !" +}; + +STR16 zDiffNames[5] = +{ + L"Mauviette", + L"Simplet", + L"Moyen", + L"Dur", + L"Utilisateurs de stéroïde seulement" +}; + +STR16 EditMercStat[12] = +{ + L"Santé max", + L"Santé actuel", + L"Force", + L"Agilité", + L"Dextérité", + L"Charisme", + L"Sagesse", + L"Tir", + L"Explosif", + L"Médecine", + L"Mécanique", + L"Niveau exp", +}; + + +STR16 EditMercOrders[8] = +{ + L"Stationnaire", + L"En garde", + L"Patrouille proche", + L"Patrouille lointaine", + L"Point de patrouille", + L"Sur appel", + L"Chercher ennemi", + L"Point de patrouille aléatoire", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Défensif", + L"Solitaire courageux", + L"Brave copain", + L"Solitaire Rusé", + L"Copain Rusé", + L"Aggressif", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Nom mercenaire :", //0 + L"Ordre :", + L"Attitude de combat :", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Couleur mercenaire", //0 + L"Fait", + + L"Mercenaire précédent attendant les ordres", + L"Mercenaire suivant attendant les ordres", + + L"Mercenaire précédent pour l'attidude de combat", + L"Mercenaire suivant pour l'attidude de combat", //5 + + L"Diminuer les stats du mercenaire", + L"Augmenter les stats du mercenaire", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Aléatoire", //0 + L"Hme norm", + L"Hme Grd", + L"Hme trappu", + L"Femme norm", + L"Char NE", //5 + L"Char NO", + L"Civil gros", + L"H Civil", + L"Minijupe", + L"F Civil", //10 + L"Enf. chap.", + L"Hummer", + L"Eldorado", + L"Camion glace", + L"Jeep", //15 + L"Enf civil", + L"Vache", + L"Infirme", + L"Robot désarmé", + L"Larve", //20 + L"Jeune", + L"Pt Monstre F", + L"Pt Monstre M", + L"Monstre Adt F", + L"Monstre Adt M", //25 + L"Monstre Reine", + L"Chat Sauvg", + L"Humvee", // TODO.Translate +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=ORDRES=-- ", //0 + L"--=ATTITUDE=--", + + L"ATTRIBUTS", + L"RELATIF", + + L"ÉQUIPEMENT", + L"RELATIF", + + L"ATTRIBUTS", + L"RELATIF", + + L"Armée", + L"Admin", + L"Élite", //10 + + L"Niveau d'exp.", + L"Santé", + L"Santé Max.", + L"Tir", + L"Force", + L"Agilité", + L"Dextérité", + L"Sagesse", + L"Commandement", + L"Explosif", //20 + L"Médicine", + L"Mécanique", + L"Moral", + + L"Couleur cheveux :", + L"Couleur peau :", + L"Couleur veste :", + L"Couleur pantalon :", + + L"ALÉATOIRE", + L"ALÉATOIRE", + L"ALÉATOIRE", //30 + L"ALÉATOIRE", + + L"En spécifiant un indice de profil, toutes les informations seront extraites du profil ", + L"et remplacées par les valeurs que vous avez édité. Les fonctions d'édition seront aussi désactivées ", + L"bien que vous soyez toujours en mesure de regarder les stats, etc. En appuyant sur ENTREE cela extraira ", + L"automatiquement le numéro que vous avez tapé. Un champ vide effacera le profil. Le nombre ", + L"actuel de profil allant de 0 à ", + + L"Profil actuel : n/a ", + L"Profil actuel : %s", + + L"STATIONNAIRE", + L"DE GARDE", //40 + L"EN DÉFENSE", + L"CHERCHER LES ENNEMIS", + L"PATROUILLE PROCHE", + L"PATROUILLE LONTAINE", + L"POINT DE RASSEMBLEMENT", + L"TOUR DE PATROUILLE", + + L"Action", + L"Temps", + L"V", + L"Grille No 1", //50 + L"Grille No 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"verrouillée", + L"déverrouillée", + L"ouverte", + L"fermée", + + L"Cliquez sur la case adjacente à la porte que vous souhaitez %s.", //60 + L"Cliquez sur la case où vous voulez aller après avoir %s la porte.", + L"Cliquez sur la case où vous voulez aller.", + L"Cliquez sur la case où vous voulez dormir. Le personnage retournera automatiquement à sa position initiale lorsqu'il se lèvera.", + L"Cliquez sur ESC pour annuler l'entrée de cette ligne dans le calendrier.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"Emplacement #%d", + L"Ordres de patrouille sans waypoints", + L"Waypoints sans ordres de patrouille", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"Pas d'action", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Placement non copié car aucun placement sélectionné.", + L"Placement copié.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Placement non collé car aucun placement n'a été enregistré.", + L"Placement collé.", + L"Placement non collé car le nombre maximum de placement pour cette équipe est dépassé.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Quitter l'éditeur ?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Êtes-vous sur de vouloir retirer toutes les lumières ?", //0 + L"Êtes-vous sur de vouloir inverser le calendrier ?", + L"Êtes-vous sur de vouloir effacer tous les horaires ?", + + L"Cliquage de placement activé", + L"Cliquage de placement désactivé", + + L"Dessin des hauteurs activés", //5 + L"Dessin des hauteurs désactivés", + + L"Nombre de points de bord : N=%d E=%d S=%d O=%d", + + L"Placement aléatoire activé", + L"Placement aléatoire désactivé", + + L"Cacher la cîme des arbres", //10 + L"Montrer la cîme des arbres", + + L"Réinitialisation de l'aggrandissement de la carte", + + L"Ancienne méthode d'aggrandissement", + L"Aggrandissement fait", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"Création de carte radar pour %S", //0 + + L"Supprimer la carte actuelle pour un nouveau niveau de sous-sol ?", + L"Supprimer la carte actuelle pour un nouveau niveau de cave ?", + L"Supprimer la carte actuelle pour un nouveau niveau extérieur ?", + + L" Essuyer les textures du sol ? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"Début", //0 + L"Activer l'éditeur de faux éclairage. Marche/arrêt", + + L"INSER", + L"Activer le mode de remplissage. Marche/arrêt", + + L"RET.AR", + L"Annuler la dernière modification", + + L"SUPR", + L"Effacement rapide d'objet sous le curseur de la souris", + + L"ESC", + L"Quitter l'éditeur", + + L"PHAUT/PBAS", //10 + L"Changement d'objets qui doivent être collé", + + L"F1", + L"Écran d'aide", + + L"F10", + L"Sauvegarder la carte actuelle", + + L"F11", + L"Charger la carte", + + L"+/-", + L"Changer l'obscurité de .01", + + L"MAJ +/-", //20 + L"Changer l'obscurité de .05", + + L"0 - 9", + L"Changer le nom de carte/tileset", + + L"b", + L"Changer la taille du pinceau", + + L"d", + L"Dessiner des débris", + + L"o", + L"Dessiner des obstacles", + + L"r", //30 + L"Dessiner des rochers", + + L"t", + L"Activer l'affichage des arbres. Marche/arrêt", + + L"g", + L"Dessiner les textures du sol", + + L"w", + L"Dessiner les murs des bâtiments", + + L"e", + L"Activer le mode effacer. Marche/arrêt", + + L"h", //40 + L"Activer les toits. Marche/arrêt", +}; + +STR16 pAutoLoadMapText[] = +{ + L"La carte vient d'être corrompue. N'enregistrez pas, ne quittez pas, demandez à parler à Kris ! S'il n'est pas là, sauvez la carte en utilisant un nom de fichier temporaire et documentez tout ce que vous venez de faire, surtout la dernière action !", + L"Le calendrier vient d'être corrompu. N'enregistrez pas, ne quittez pas, demandez à parler à Kris ! S'il n'est pas là, sauvez la carte en utilisant un nom de fichier temporaire et documentez tout ce que vous venez de faire, surtout la dernière action !", +}; + +STR16 pShowHighGroundText[] = +{ + L"Afficher les marqueurs des textures de sol", + L"Cacher les marqueurs des textures de sol", +}; + +//Item Statistics.cpp +/*CHAR16 gszActionItemDesc[34][30] = // NUM_ACTIONITEMS = 34 +{ + L"Mine klaxon", + L"Mine Flash", + L"Explosion lacrymo", + L"Explosion Assourd.", + L"Explosion Fumée", + L"Gaz moutarde", + L"Mine", + L"Ouvrir porte", + L"Fermer porte", + L"Puit caché 3x3 ", + L"Puit caché 5x5", + L"Pt Explosion", + L"Moy Explosion", + L"Grd Explosion", + L"Encl porte", + L"Encl Action1s", + L"Encl Action2s", + L"Encl Action3s", + L"Encl Action4s", + L"Entrer ds bordel", + L"Sortir du Bordel", + L"Alarme sbire", + L"Sexe avec pute", + L"Montrer pièce", + L"Alarme locale", + L"Alarme globale", + L"Bruit klaxon", + L"Déver. porte", + L"Encl verrou", + L"Déminer porte", + L"Encl Obj press", + L"Alarme musée", + L"Alarme chtsvg", + L"Grd lacrymo", +}; +*/ + + +STR16 pUpdateItemStatsPanelText[] = +{ + L"Drapeaux M./A.", //0 + L"Aucun obj selec", + L"Emp. dispo pour", + L"Création aléatoire", + L"Touche non modif", + L"ID du proprio", + L"Classe d'obj non incluse", + L"Emp. vide verr", + L"Statut", + L"Balles", + L"Niv piège", //10 + L"Quantité", + L"Niv piège", + L"Statut", + L"Niv piège", + L"Statut", + L"Quantité", + L"Niv piège", + L"Dollars", + L"Statut", + L"Niv piège", //20 + L"Niv piège", + L"Tolérance", + L"Déclic alarme", + L"Chance exist",// !!! Context + L"B",// !!! Context + L"R", + L"S", +}; + + +STR16 pSetupGameTypeFlagsText[] = +{ + L"Obj apparaît en mode SF et réaliste. (|B)", //0 + L"Obj apparaît slt en mode |réaliste.", + L"Obj apparaît slt en mode |SF.", +}; + +STR16 pSetupGunGUIText[] = +{ + L"SILENCIEUX", //0 + L"LNTTESNIPER", + L"LNTTELASER", + L"BIPIED", + L"BCCANARD", + L"LANCE-G", //5 +}; + +STR16 pSetupArmourGUIText[] = +{ + L"PLAQ CÉRAMIQUE", //0 +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"DÉTONATEUR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"Si le déclencheur de panique est une alarme,\nl'ennemi ne la sonnera pas\ns'il vous a déjà détecté.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"Ok", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"CHARGER", + L"SAUVER", + L"MISE À JOUR", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"Tileset : %s", //0 + L"Info. version : Résumé : 1.%02d, Carte : %1.2f/%02d", + L"Nombre d'objets : %d", + L"Nombre de lumières : %d", + L"Nombre de points d'entrée : %d", + + L"N", + L"E", + L"S", + L"O", + L"C", + L"I", //10 + + L"Nombre de pièces : %d", + L"Population totale : %d", + L"Ennemis : %d", + L"Admins : %d", + + L"(%d detaillé, %d profil -- %d existe en priorité)", + L"Troupes : %d", + + L"(%d detaillé, %d profil -- %d existe en priorité)", + L"Élites : %d", + + L"(%d detaillé, %d profil -- %d existe en priorité)", + L"Civils : %d", //20 + + L"(%d detaillé, %d profil -- %d existe en priorité)", + + L"Humains : %d", + L"Vaches : %d", + L"Cht sauvg : %d", + + L"Créatures : %d", + + L"Monstres : %d", + L"Cht sauvg : %d", + + L"Nombre de portes verr. et/ou piègées : %d", + L"Ver. : %d", + L"Piègées : %d", //30 + L"Ver. & piègées : %d", + + L"Civils prgrammés : %d", + + L"Trop de destinations vers grille de sortie (plus de 4)...", + L"GrilleSortie : %d (%d vers destination longue dist)", + L"GrilleSortie : aucune", + L"GrilleSortie : 1 destination utilisant %d GrilleSortie", + L"GrilleSortie : 2 -- 1) Qté : %d, 2) Qté : %d", + L"GrilleSortie : 3 -- 1) Qté : %d, 2) Qté : %d, 3) Qté : %d", + L"GrilleSortie : 3 -- 1) Qté : %d, 2) Qté : %d, 3) Qté : %d, 4) Qté : %d", + L"Car. relative ennemi : %d mauvais, %d faible, %d norm, %d bon, %d super (%+d en tout)", //40 + L"Équipement relatif ennemi : %d mauvais, %d faible, %d norm, %d bon, %d super (%+d en tout)", + L"%d placements ont des ordres de patrouille, sans aucun waypoint défini.", + L"%d placements ont des waypoints, mais sans aucun ordres de patrouille.", + L"%d Numéro de grille ont un numéro de pièce étrange. Validez svp.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Ennemi", + + L"TROP D'OBJETS À L'ÉCRAN!", + + L"Panique1", + L"Panique2", + L"Panique3", + L"Normal1", + L"Normal2", + L"Normal3", + L"Normal4", //10 + L"Actions appuyer", + + L"TROP D'OBJETS À L'ÉCRAN !", + + L"OBJ LÂCHÉ PR ENMI PRIOR", + L"Rien", + + L"TROP D'OBJETS À L'ÉCRAN !", + L"OBJ LÂCHÉ PR ENMI NORM", + L"TROP D'OBJETS À L'ÉCRAN !", + L"Rien", + L"TROP D'OBJETS À L'ÉCRAN !", + L"ERREUR : Imposs charg obj sur carte. Raison inconn.", //20 +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"ÉDITEUR CAMPAGNE -- %s Version 1.%02d", //0 + L"(AUC MAP CHRGÉE).", + L" %d de vos cartes sont obsolètes.", + L"Plus de cartes à MAJ = plus de temps. Ça prend ", + L"à peu près 4 min sur un P200MMX pour analyser 100 cartes, donc", + L"la durée peu varier selon votre pc.", + L"Voulez-vous MAJ TOUTES ces cartes (y/n) ?", + + L"Aucun secteur sélectionné.", + + L"Nom de fichier temp en conflit avec le format de l'éditeur de campagne", + + L"Il faut charger ou bien créer une carte afin d'entrer dans l'éditeur", + L",ou bien vous pouvez quitter (ESC ou Alt+x).", //10 + + L", RDC", + L", Sous-sol -1", + L", Sous-sol -2", + L", Sous-sol -3", + L", RDC alternatif", + L", Niv B1 alternatif", + L", Niv B2 alternatif", + L", Niv B3 alternatif", + + L"DÉTAILS OBJETS -- secteur %s", + L"Les informations sommaires pour le secteur %s :", //20 + + L"Les informations sommaires pour le secteur %s", + L"n'existent pas.", + + L"Les informations sommaires pour le secteur %s", + L"n'existent pas.", + + L"Pas d'informations existantes pour le secteur %s.", + + L"Pas d'informations existantes pour le secteur %s.", + + L"FICHIER : %s", + + L"FICHIER : %s", + + L"Outrepasser LECTURESEULE",//!!! Length limitation ? -> should be OK + L"Écraser Fichier", //30 + + L"Vous n'avez actuellement aucune donnée sommaire. En en créant un, vous pourrez garder la trace", + L"des informations se rapportant à tous les secteurs que vous éditez et sauvez. La progression de la création", + L"va analyser toutes les cartes contenu dans votre dossier \\MAPS, et en générer un nouveau. Cela peut prendre", + L"quelques minutes, tout dépend de combien de carte valide vous avez. Les cartes valides sont", + L"les cartes qui suivent la convention de nommage : a1.dat - p16.dat. Les cartes souterraines", + L"sont identifiées en ajoutant _b1 à _b3 avant le .dat (ex : a9_b1.dat). ", + + L"Voulez-vous faire cela maintenant ?(o/n)?", + + L"Aucun renseignement sommaire. Création refusée.", + + L"Grille", + L"Progression", //40 + L"Utilisez une carte alternative", + + L"Résumé", + L"Objets", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"Analyse de la carte : %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Chargement de la carte : %s", +}; + +STR16 pReportErrorText[] = +{ + L"Pas de MAJ pour %s. probablement dû à des conflits tilesets", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Production d'informations sur la carte", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"Production de résumé de la carte", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MISE À JOUR VERSION MAJEURE", + L"Il y a %d cartes qui requièrent une mise à jour majeure.", + L"Mise à jour de toutes les cartes obsolètes", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] appartient à tileset def %s (%S)", + L"Fichier : %S, sousindex : %d (%S)", + L"Tileset utilisé : %s", +}; + +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Confirmer les choix (|E|N|T|R|É|E)", + L"Annuler les choix (|E|S|C)\nEffacer les choix (|E|S|P|A|C|E)", + L"Faire défiler la fenêtre vers le haut (|H|A|U|T)", + L"Faire défiler la fenêtre vers le bas (|B|A|S)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Petit", + L"Moyen", + L"Large", + L"Très large", + L"Largeur : xx", + L"Secteur" + }; + +//--- + +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Page 1/2", //0 + L"Page 2/2", + + L"Page 1/3", + L"Page 2/3", + L"Page 3/3", + + L"Page 1/1", //5 +}; + +CHAR16 zGrod[][500] = +{ + L"Robot", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 Eq Développeurs", + L"@T,C144,R134,{;Code", + L"@T,C144,R134,{;Graphismes et Sons", + L"@};(Autre mods!)", + L"@T,C144,R134,{;Objets", + L"@T,C144,R134,{;Autre contributeurs", + L"@};(Tous les membres de la communauté qui ont contribué !)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L"cal .38", +// L"9mm", +// L"cal .45", +// L"cal .357", +// L"cal 12", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm OTAN", +// L"7.62mm PV", +// L"4.7mm", +// L"5.7mm", +// L"Monstre", +// L"Roquette", +// L"", // dart +// L"", // flame +// L".50 cal", // barrett +// L"9mm Lrd", // Val silent +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L"cal .38", +// L"9mm", +// L"cal .45", +// L"cal .357", +// L"cal 12", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm O.", +// L"7.62mm PV", +// L"4.7mm", +// L"5.7mm", +// L"Monstre", +// L"Roquette", +// L"", // dart +// L"", // Lance-Flammes +// L".50 cal", // barrett +// L"9mm Lrd", // Val silent +//}; + + +CHAR16 WeaponType[][30] = +{ + L"Divers", + L"Pistolet", + L"Pistolet-Mitrailleur", + L"Mitraillette", + L"Fusil", + L"Fusil de précision", + L"Fusil d'assaut", + L"Fusil-mitrailleur", + L"Fusil à pompe", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Tour du joueur", // player's turn + L"Tour de l'ennemi", + L"Tour des créatures", + L"Tour de la milice", + L"Tour des civils", + L"Plan_joueur",// planning turn + L"Client #1",//hayden + L"Client #2",//hayden + L"Client #3",//hayden + L"Client #4",//hayden + +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s est touché(e) à la tête et perd un point de sagesse !", + L"%s est touché(e) à l'épaule et perd un point de dextérité !", + L"%s est touché(e) à la poitrine et perd un point de force !", + L"%s est touché(e) à la jambe et perd un point d'agilité !", + L"%s est touché(e) à la tête et perd %d points de sagesse !", + L"%s est touché(e) à l'épaule et perd %d points de dextérité !", + L"%s est touché(e) à la poitrine et perd %d points de force !", + L"%s est touché(e) à la jambe et perd %d points d'agilité !", + L"Interruption !", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"Les renforts sont arrivés !", + + // In the following four lines, all %s's are merc names + + L"%s recharge.", + L"%s n'a pas assez de points d'action !", + L"%s applique les premiers soins (Appuyez sur une touche pour annuler).", + L"%s et %s appliquent les premiers soins (Appuyez sur une touche pour annuler).", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"fiable", + L"peu fiable", + L"facile à entretenir", + L"difficile à entretenir", + L"puissant", + L"peu puissant", + L"cadence de tir élevée", + L"faible cadence de tir", + L"longue portée", + L"courte portée", + L"léger", + L"lourd", + L"petit", + L"tir en rafale", + L"pas de tir en rafale", + L"grand chargeur", + L"petit chargeur", + + // In the following two lines, all %s's are merc names + + L"Le camouflage de %s s'est effacé.", + L"Le camouflage de %s est parti.", + + // The first %s is a merc name and the second %s is an item name + + L"La deuxième arme est vide !", + L"%s a volé le/la %s.", + + // The %s is a merc name + + L"L'arme de %s ne peut pas tirer en rafale.", + + L"Vous avez déjà ajouté cet accessoire.", + L"Combiner les objets ?", + + // Both %s's are item names + + L"Vous ne pouvez combiner un(e) %s avec un(e) %s.", + + L"Aucun", + L"Retirer chargeur", + L"Accessoire(s) ", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and your gas mask at the same time. + L"Vous ne pouvez utiliser votre %s et votre %s simultanément.", + + L"Vous pouvez combiner cet accessoire avec certains objets en le mettant dans l'un des quatre emplacements disponibles.", + L"Vous pouvez combiner cet accessoire avec certains objets en le mettant dans l'un des quatre emplacements disponibles (Ici, cet accessoire n'est pas compatible avec cet objet).", + L"Ce secteur n'a pas été sécurisé !", + L"Vous devez donner %s à %s",//inverted !! you still need to give the letter to X + L"%s a été touché(e) à la tête !", + L"Cesser le combat ?", + L"Cet accessoire ne pourra plus être enlevé. Désirez-vous toujours le mettre ?", + L"%s se sent beaucoup mieux !", + L"%s a glissé sur des billes !", + L"%s n'est pas parvenu(e) à ramasser le/la %s !", + L"%s a réparé le/la %s", + L"Interruption pour ", + L"Voulez-vous vous rendre ?", + L"Cette personne refuse votre aide.", + L"JE NE CROIS PAS !", + L"Pour utiliser l'hélicoptère de Skyrider, vous devez ASSIGNER vos mercenaires au VÉHICULE.", + L"%s ne peut recharger qu'UNE arme", + L"Tour des chats s.", + L"automatique", + L"Pas de tir auto", + L"précis", + L"peu précis", + L"Pas de coup par coup", + L"Plus rien à voler sur l'ennemi !", + L"L'ennemi n'a rien dans les mains !", + + L"%s a perdu son camouflage désert.", + L"%s a perdu son camouflage désert à cause de l'eau.", + + L"%s a perdu son camouflage forêt.", + L"%s a perdu son camouflage forêt à cause de l'eau.", + + L"%s a perdu son camouflage urbain.", + L"%s a perdu son camouflage urbain à cause de l'eau.", + + L"%s a perdu son camouflage neige.", + L"%s a perdu son camouflage neige à cause de l'eau.", + + L"Vous ne pouvez pas attacher %s à cet emplacement.", + L"%s n'ira dans aucun emplacement de libre.", + L"Pas assez de place pour cette poche.", + + L"%s a réparé au mieux : %s.", + L"%s a aidé %s pour réparer au mieux : %s.", + + L"%s has cleaned the %s.", // TODO.Translate + L"%s has cleaned %s's %s.", + + L"Assignment not possible at the moment", // TODO.Translate + L"No militia that can be drilled present.", + + L"%s has fully explored %s.", // TODO.Translate +}; + +// the country and its noun in the game // TODO.Translate +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracona", + L"traconien(ne)", // TODO.Translate //A voir fini (to see finished) +#else + L"Arulco", + L"arulcain(e)", // TODO.Translate //A voir fini (to see finished) +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"Pause", + L"Normal", + L"5 min", + L"30 min", + L"60 min", + L"6 H", +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"Esc. 1", + L"Esc. 2", + L"Esc. 3", + L"Esc. 4", + L"Esc. 5", + L"Esc. 6", + L"Esc. 7", + L"Esc. 8", + L"Esc. 9", + L"Esc. 10", + L"Esc. 11", + L"Esc. 12", + L"Esc. 13", + L"Esc. 14", + L"Esc. 15", + L"Esc. 16", + L"Esc. 17", + L"Esc. 18", + L"Esc. 19", + L"Esc. 20", + L"Esc. 21", + L"Esc. 22", + L"Esc. 23", + L"Esc. 24", + L"Esc. 25", + L"Esc. 26", + L"Esc. 27", + L"Esc. 28", + L"Esc. 29", + L"Esc. 30", + L"Esc. 31", + L"Esc. 32", + L"Esc. 33", + L"Esc. 34", + L"Esc. 35", + L"Esc. 36", + L"Esc. 37", + L"Esc. 38", + L"Esc. 39", + L"Esc. 40", + L"Service", // on active duty + L"Docteur", // administering medical aid + L"Patient(e)", // getting medical aid + L"Transport", // in a vehicle + L"Transit", // in transit - abbreviated form + L"Réparat.", // repairing + L"Radio", // scanning for nearby patrols + L"Formation", // training themselves + L"Milice", // training a town to revolt + L"Milice M.", //training moving militia units + L"Entraîneur", // training a teammate //!!! Too long ? (11 char) -> 11 chars is OK + L"Élève", // being trained by someone else + L"Dépl obj.", // move items + L"Renseign.", // operating a strategic facility + L"Mange", // eating at a facility (cantina etc.) + L"Repos", // Resting at a facility + L"Prison", // Flugente: interrogate prisoners + L"Mort(e)", // dead + L"Invalide", // abbreviation for incapacitated + L"Capturé(e)", // Prisoner of war - captured + L"Hôpital", // patient in a hospital + L"Vide", // Vehicle is empty + L"Infiltré", // facility: undercover prisoner (snitch) + L"Propag.", // facility: spread propaganda + L"Propag.", // facility: spread propaganda (globally) + L"Rumeur", // facility: gather information + L"Propag.", // spread propaganda + L"Rumeur", // gather information + L"Command.", // militia movement orders + L"Diagnose", // disease diagnosis //TODO.Translate + L"Treat D.", // treat disease among the population + L"Docteur", // administering medical aid + L"Patient(e)", // getting medical aid + L"Réparat.", // repairing + L"Fortify", // build structures according to external layout // TODO.Translate + L"Train W.", + L"Hide", // TODO.Translate + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", // TODO.Translate + L"Explore", // TODO.Translate + L"Event",// rftr: merc is on a mini event // TODO: translate + L"Mission", // rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"Milice", // the title of the militia box + L"Disponibles", //the number of unassigned militia troops + L"Vous ne pouvez réorganiser la milice lors d'un combat !", + L"Des milices ne sont pas assignées à un secteur. Voulez-vous les démobiliser ?",//!!! Too long ? (80 char) -> it is OK +}; + + +STR16 pMilitiaButtonString[] = +{ + L"Auto", // auto place the militia troops for the player + L"OK", // done placing militia troops + L"Démobiliser", // HEADROCK HAM 3.6: Disband militia + L"Tout ôter", // move all milita troops to unassigned pool +}; + +STR16 pConditionStrings[] = +{ + L"Excellent", //the state of a soldier .. excellent health + L"Bon", // good health + L"En forme", // fair health + L"Blessé(e)", // wounded health + L"Fatigué(e)", // tired + L"Épuisé(e)", // bleeding to death + L"Inconscient(e)", // knocked out + L"Mourant(e)", // near death + L"Mort(e)", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"Service", // set merc on active duty + L"Patient(e)", // set as a patient to receive medical aid + L"Transport", // tell merc to enter vehicle + L"Laisser", // let the escorted character go off on their own + L"Annuler", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"Esc. 1", + L"Esc. 2", + L"Esc. 3", + L"Esc. 4", + L"Esc. 5", + L"Esc. 6", + L"Esc. 7", + L"Esc. 8", + L"Esc. 9", + L"Esc. 10", + L"Esc. 11", + L"Esc. 12", + L"Esc. 13", + L"Esc. 14", + L"Esc. 15", + L"Esc. 16", + L"Esc. 17", + L"Esc. 18", + L"Esc. 19", + L"Esc. 20", + L"Esc. 21", + L"Esc. 22", + L"Esc. 23", + L"Esc. 24", + L"Esc. 25", + L"Esc. 26", + L"Esc. 27", + L"Esc. 28", + L"Esc. 29", + L"Esc. 30", + L"Esc. 31", + L"Esc. 32", + L"Esc. 33", + L"Esc. 34", + L"Esc. 35", + L"Esc. 36", + L"Esc. 37", + L"Esc. 38", + L"Esc. 39", + L"Esc. 40", + L"Service", + L"Docteur", + L"Patient", + L"Transport", + L"Transit", + L"Réparation", + L"Radioécouteur", // radio scan + L"Formation", + L"Milice", + L"Forme la milice mobile",//!!! Too long ? -> It is OK + L"Entraîneur", + L"Élève", + L"Déplace les objets", // move items + L"Renseignement", //!!! Idem ? -> The current translation is OK + L"Mange", // eating at a facility (cantina etc.) + L"Repos", + L"Interroge prisonier(s)", // Flugente: interrogate prisoners + L"Mort(e)", + L"Invalide", + L"Capturé(e)", + L"Hôpital", + L"Vide", // Vehicle is empty + L"Infiltré", // facility: undercover prisoner (snitch) // TODO.Translate //A voir fini (to see finished) + L"Répand une propagande", // facility: spread propaganda // TODO.Translate //A voir fini (to see finished) + L"Fait de la propagande", // facility: spread propaganda (globally) // TODO.Translate //A voir fini (to see finished) + L"Collecte les rumeurs", // facility: gather rumours // TODO.Translate //A voir fini (to see finished) + L"Propagande", // spread propaganda // TODO.Translate //A voir fini (to see finished) + L"Rumeur", // gather information // TODO.Translate //A voir fini (to see finished) + L"Commande", // militia movement orders + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Docteur", + L"Patient", + L"Réparation", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"Esc. 1", + L"Esc. 2", + L"Esc. 3", + L"Esc. 4", + L"Esc. 5", + L"Esc. 6", + L"Esc. 7", + L"Esc. 8", + L"Esc. 9", + L"Esc. 10", + L"Esc. 11", + L"Esc. 12", + L"Esc. 13", + L"Esc. 14", + L"Esc. 15", + L"Esc. 16", + L"Esc. 17", + L"Esc. 18", + L"Esc. 19", + L"Esc. 20", + L"Esc. 21", + L"Esc. 22", + L"Esc. 23", + L"Esc. 24", + L"Esc. 25", + L"Esc. 26", + L"Esc. 27", + L"Esc. 28", + L"Esc. 29", + L"Esc. 30", + L"Esc. 31", + L"Esc. 32", + L"Esc. 33", + L"Esc. 34", + L"Esc. 35", + L"Esc. 36", + L"Esc. 37", + L"Esc. 38", + L"Esc. 39", + L"Esc. 40", + L"Service", + L"Docteur", + L"Patient", + L"Transport", + L"Transit", + L"Réparation", + L"Radioécouteur", // radio scan + L"Formation", + L"Milice", + L"Milice mobile", + L"Entraîneur", + L"Elève", + L"Déplacer les objets", // move items + L"Renseignement", //!!! Idem ? -> Current translation is OK + L"Repos", + L"Interroger captif(s)", // Flugente: interrogate prisoners + L"Mort(e)", + L"Invalide", + L"Capturé(e)", + L"Hôpital", // patient in a hospital + L"Vide", // Vehicle is empty + L"Infiltré", // facility: undercover prisoner (snitch) // TODO.Translate //A voir fini (to see finished) + L"Répandre une propagande", // facility: spread propaganda // TODO.Translate //A voir fini (to see finished) + L"Faire de la propagande", // facility: spread propaganda (globally) // TODO.Translate //A voir fini (to see finished) + L"Récolter les rumeurs", // facility: gather rumours // TODO.Translate //A voir fini (to see finished) + L"Propagande", // spread propaganda + L"Rumeurs", // gather information + L"Commander", // militia movement orders + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Docteur", + L"Patient", + L"Réparation", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"Options du contrat :", + L"", // a blank line, required + L"Extension 1 jour", // offer merc a one day contract extension + L"Extension 1 semaine", // 1 week + L"Extension 2 semaines", // 2 week + L"Renvoyer", // end merc's contract + L"Annuler", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"Capturé(e)", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"FORCE", + L"DEXTÉRITÉ", + L"AGILITÉ", + L"SAGESSE", + L"PRÉCISION",//!!! Accurate but not very good. Char limit ? -> 12 characters is the limit + L"MÉDECINE", + L"MÉCANIQUE", + L"COMMANDEMENT", + L"EXPLOSIFS", + L"NIVEAU", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Protec.", // the armor rating of the merc + L"Poids", // the weight the merc is carrying + L"Cam.", // the merc's camouflage rating + L"Camouflage :", + L"Protection :", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Agi", // the abbreviated version of : agilité + L"Dex", // dextérité + L"For", // strength + L"Com", // leadership + L"Sag", // sagesse + L"Niv", // experience level + L"Tir", // marksmanship skill + L"Méc", // mechanical skill + L"Exp", // explosive skill + L"Méd", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Affectation", // the mercs current assignment + L"Contrat", // the contract info about the merc + L"Santé", // the health level of the current merc + L"Moral", // the morale of the current merc + L"Cond.", // the condition of the current vehicle + L"Carb.", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Formation", // tell merc to train self + L"Milice", // tell merc to train town + L"Entraîneur", // tell merc to act as trainer + L"Élève", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Cadence de tir :", // the allowable rate of fire for a merc who is guarding + L"Feu à volonté", // the merc can be aggressive in their choice of fire rates + L"Économiser munitions", // conserve ammo + L"Tir restreint", // fire only when the merc needs to + L"Autres Options :", // other options available to merc + L"Retraite", // merc can retreat + L"Abri", // merc is allowed to seek cover + L"Assistance", // merc can assist teammates + L"OK", // done with this menu + L"Annuler", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"Cadence de tir :", + L"*Feu à volonté*", + L"*Économiser munitions*", + L"*Tir restreint*", + L"Autres Options :", + L"*Retraite*", + L"*Abri*", + L"*Assistance*", + L"OK", + L"Annuler", +}; + +STR16 pAssignMenuStrings[] = +{ + L"Service", // merc is on active duty + L"Docteur", // the merc is acting as a doctor + L"Disease", // merc is a doctor doing diagnosis TODO.Translate + L"Patient(e)", // the merc is receiving medical attention + L"Transport", // the merc is in a vehicle + L"Réparat.", // the merc is repairing items + L"Radio", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"Infiltré", // anv: snitch actions + L"Formation", // the merc is training + L"Militia", // all things militia + L"Dépl obj.", // move items + L"Fortify", // fortify sector // TODO.Translate + L"Intel", // covert assignments // TODO.Translate + L"Administer", // TODO.Translate + L"Explore", // TODO.Translate + L"Affectat.", // the merc is using/staffing a facility + L"Annuler", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"Attaquez", // set militia to aggresive + L"Tenez la position", // set militia to stationary + L"Retraite", // retreat militia + L"Rejoignez-moi", // retreat militia + L"Couchez-vous", // retreat militia + L"Accroupi", + L"À couvert !", + L"Move to", // TODO.Translate + L"Tous : Attaquez", + L"Tous : Tenez la position", + L"Tous : Retraite", + L"Tous : Rejoignez-moi", + L"Tous : Dispersez-vous", + L"Tous : Couchez-vous", + L"Tous : Accroupi", + L"Tous : À couvert!", + //L"All: Trouver matériel", + L"Annuler", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = +{ + // radio operator + L"Tir d'artillerie", + L"Brouiller les communications", + L"Balayer les fréquences", + L"Écouter les alentours", + L"Appeler des renforts", + L"Éteindre la radio", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", // TODO.Translate + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Guetteur", + L"Focus", // TODO.Translate + L"Drag", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Ordonner un tir d'artillerie au secteur...", + L"Brouiller toutes les fréquences radios pour rendre les communications impossibles.", + L"Pour trouver une fréquence émettrice.", + L"Utiliser votre radio pour connaître les mouvements de l'ennemi.", + L"Appeler des renforts des secteurs voisins.", + L"Éteindre la radio.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", // TODO.Translate + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Observer une zone avec un tireur d'élite donne un bonus de CDT sur tout ce que vous voyez.", + L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Nécessite :\n", + L" - %d PA\n", + L" - %s\n", + L" - %s ou plus\n", + L" - %s ou plus ou", + L" - %d minutes pour être prêt\n", + L" - positions des mortiers dans les secteurs voisins\n", + L" - %s |o|u %s |e|t %s ou %s ou plus\n", + L" - possession par un démon", + L" - a gun-related trait\n", // TODO.Translate + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = +{ + L"Milice", + L"Autre escouade", + L"Annuler", + L"%d miliciens", + L"Tous", + + L"More", // TODO.Translate + L"Corpse: %s", // TODO.Translate +}; + +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Infiltrer l'équipe", + L"Infiltrer la ville", + L"Annuler", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Discuter du comportement du mouchard vis-à-vis de ses coéquipiers.", + L"Prendre une mission dans ce secteur.", + L"Annuler", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Rapporter les plaintes", + L"Ne pas rapporter", + L"Prévenir les mauvaises conduites", + L"Ignorer les mauvaises conduites", + L"Annuler", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Signaler toute plainte des autres mercenaires à votre commandant.", + L"Ne rien signaler.", + L"Essayer d'empêcher les chapardages et la prise de produits addictifs des autres mercenaires.", + L"Ne pas se soucier de ce que font les autres mercenaires.", + L"Annuler", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Fait de la propagande", // TODO.Translate //A voir fini (to see finished) + L"Récolte les rumeurs", // TODO.Translate //A voir fini (to see finished) + L"Annuler", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Glorifier les actions des mercenaires pour accroître la fidélité de la ville et étouffer toute mauvaises nouvelles.", + L"Prêter une oreille attentive aux rumeurs sur l'activité des forces ennemies.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = // TODO.Translate +{ + L"Interrogate admins", + L"Interrogate troops", + L"Interrogate elites", + L"Interrogate officers", + L"Interrogate generals", + L"Interrogate civilians", + L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s s'est exposé(e) comme mouchard, mais s'en est rendu compte et a pu s'en sortir vivant.", + L"%s s'est exposé(e) comme mouchard, mais a réussi à désamorcer la situation et a pu s'en sortir vivant.", + L"%s s'est exposé(e) comme mouchard, mais a réussi à éviter la tentative d'assassinat.", + L"%s s'est exposé(e) comme mouchard, mais les gardes ont empêché tout débordement violent.", + + L"%s s'est exposé(e) comme mouchard et a failli être noyé par les autres détenus avant que les gardes ne le/la sauvent.", + L"%s s'est exposé(e) comme mouchard et a failli se faire battre à mort avant que les gardes ne le/la sauvent.", + L"%s s'est exposé(e) comme mouchard et a failli se faire poignarder avant que les gardes ne le/la sauvent.", + L"%s s'est exposé(e) comme mouchard et a failli se faire étrangler avant que les gardes ne le/la sauvent.", + + L"%s s'est exposé(e) comme mouchard et a été noyé(e) dans les toilettes par les autres détenus.", + L"%s s'est exposé(e) comme mouchard et a été battu(e) à mort par les autres détenus.", + L"%s s'est exposé(e) comme mouchard et les autres détenus l'ont poignardé(e).", + L"%s s'est exposé(e) comme mouchard et les autres détenus l'ont étranglé(e).", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s a entendu des rumeurs sur une activité ennemie dans le secteur %d.", + +}; + +STR16 pRemoveMercStrings[] = +{ + L"Enlever Merc", // remove dead merc from current team + L"Annuler", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Santé", + L"Agilité", + L"Dextérité", + L"Force", + L"Commandement", + L"Tir", + L"Mécanique", + L"Explosifs", + L"Médecine", + L"Annuler", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Formation", // train yourself + L"Train workers", // TODO.Translate + L"Entraîneur", // train your teammates + L"Élève", // be trained by an instructor + L"Annuler", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"Esc. 1", + L"Esc. 2", + L"Esc. 3", + L"Esc. 4", + L"Esc. 5", + L"Esc. 6", + L"Esc. 7", + L"Esc. 8", + L"Esc. 9", + L"Esc. 10", + L"Esc. 11", + L"Esc. 12", + L"Esc. 13", + L"Esc. 14", + L"Esc. 15", + L"Esc. 16", + L"Esc. 17", + L"Esc. 18", + L"Esc. 19", + L"Esc. 20", + L"Esc. 21", + L"Esc. 22", + L"Esc. 23", + L"Esc. 24", + L"Esc. 25", + L"Esc. 26", + L"Esc. 27", + L"Esc. 28", + L"Esc. 29", + L"Esc. 30", + L"Esc. 31", + L"Esc. 32", + L"Esc. 33", + L"Esc. 34", + L"Esc. 35", + L"Esc. 36", + L"Esc. 37", + L"Esc. 38", + L"Esc. 39", + L"Esc. 40", + L"Annuler", +}; + +STR16 pPersonnelTitle[] = +{ + L"Personnel", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Santé : ", // health of merc + L"Agilité : ", + L"Dextérité : ", + L"Force : ", + L"Commandement : ", + L"Sagesse : ", + L"Niv. Exp. : ", // experience level + L"Tir : ", + L"Mécanique : ", + L"Explosifs : ", + L"Médecine : ", + L"Acompte méd. : ", // amount of medical deposit put down on the merc + L"Contrat : ", // cost of current contract + L"Tué : ", // number of kills by merc + L"Participation : ", // number of assists on kills by merc //!!!ugly. Char limit ? -> 17 chars + L"Coût/jour :", // daily cost of merc + L"Coût total :", // total cost of merc + L"Contrat :", // cost of current contract + L"Service fait :", // total service rendered by merc + L"Salaire :", // amount left on MERC merc to be paid + L"Tir réussi :", // percentage of shots that hit target + L"Bataille :", // number of battles fought + L"Blessure :", // number of times merc has been wounded + L"Spécialité :", + L"Aucune spécialité", + L"Réalisation :", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"Soldat d'élite : %d\n", + L"Soldat régulier : %d\n", + L"Soldat d'administration : %d\n", + L"Groupe hostile : %d\n", + L"Créature : %d\n", + L"Char : %d\n", + L"Autre : %d\n", + + L"Mercenaire : %d\n", + L"Milice : %d\n", + L"Autre : %d\n", + + L"Coup tiré : %d\n", + L"Roquette tirée : %d\n", + L"Grenade lancée : %d\n", + L"Couteau lancé : %d\n", + L"Attaque à l'arme blanche : %d\n", + L"Attaque à mains nues : %d\n", + L"Tir réussi : %d\n", + + L"Serrure crochetée : %d\n", + L"Serrure fracturée : %d\n", + L"Piège retiré : %d\n", + L"Bombe explosée : %d\n", + L"Objet réparé : %d\n", + L"Objet combiné : %d\n", + L"objet volé : %d\n", + L"Milice entrainée : %d\n", + L"Merc. soigné : %d\n", + L"Chirurgie faite : %d\n", + L"Personne rencontrée : %d\n", + L"Secteur visité : %d\n", + L"Embuscade empêchée : %d\n", + L"Quête faite : %d\n",//!!!Ugly. Char limit ? -> Total: 28 chars + + L"Tactique de combat : %d\n", + L"Combat auto-résolu : %d\n", + L"Temps écoulé : %d\n", + L"Embuscade expérimentée : %d\n", + L"Meilleur combat : %d ennemis\n",//!!! Ennemies/Ennemis ? -> whatever you like + + L"Tir : %d\n", + L"Arme blanche : %d\n", + L"Bagarre : %d\n", + L"Explosion : %d\n", + L"Grave : %d\n", + L"Chirurgie subie : %d\n", + L"Accident : %d\n", + + L"Caractère :", + L"Faiblesse :", + + L"Attitude :", // WANNE: For old traits display instead of "Character:"! + + L"Zombi : %d\n", + + L"Passif :", + L"Personnalité :", + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", + L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + L"Aucune spécialité", + L"Crochetage", + L"Combat à mains nues", + L"Électronique", + L"Opérations de nuit", + L"Le lancer", + L"Instructeur", + L"Arme lourde", + L"Arme automatique", + L"Discrétion", + L"Ambidextre", + L"Voleur", + L"Arts martiaux", + L"Arme blanche", + L"Tireur d'élite", + L"Camouflage", + L"(Expert)", +}; + +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"Aucune spécialité", + L"Arme automatique", + L"Arme lourde", + L"Tireur d'élite", + L"Reconnaissance",// Hunter + L"Flingueur", + L"Combat à mains nues", + L"Meneur", + L"Technicien", + L"Médecin", + // Minor traits + L"Ambidextre", + L"Mêlée", + L"Le lancer", + L"Opérations de nuit", + L"Discrétion", + L"Athlétique", + L"Culturiste", + L"Sabotage", + L"Instructeur", + L"Reconnaissance", + // covert ops is a major trait that was added later + L"Espionnage", // 20 + + // new minor traits + L"Opérateur radio", // 21 + L"Infiltré", // 22 + L"Survival", + + // second names for major skills + L"Mitrailleur", // 24 + L"Bombardier", + L"Sniper", + L"Ranger", + L"Combattant", + L"Arts martiaux", + L"Commandant", + L"Ingénieur", + L"Chirurgien", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 37 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 41 + L"Espion", // 42 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch (minor trait) + L"Placeholder", // for survival (minor trait) + L"Plus...", // 47 + L"Intel", // for INTEL // TODO.Translate + L"Disguise", // for DISGUISE + L"divers", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate +}; +////////////////////////////////////////////////////////// + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"Debout/Marcher (|S)", + L"Accroupi/Avancer (|C)", + L"Debout/Courir (|R)", + L"À terre/Ramper (|P)", + L"Regarder (|L)", + L"Action", + L"Parler", + L"Examiner (|C|T|R|L)", + + // Pop up door menu + L"Ouvrir à la main", + L"Examen poussé", + L"Crocheter", + L"Enfoncer", + L"Désamorcer", + L"Verrouiller", + L"Déverrouiller", + L"Utiliser explosif", + L"Utiliser pied de biche", + L"Annuler (|E|C|H|A|P)", + L"Fermer", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"aucun piège", + L"un piège explosif", + L"un piège électrique", + L"une alarme sonore", + L"une alarme silencieuse", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"jour", + L"semaine", + L"2 semaines", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Choix du personnage", + L"Affectation", + L"Destination", + L"|Contrat du mercenaire", //!!! Char typo before "Contrat" ? + L"Retirer mercenaire", + L"Repos", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"FAIBLE", + L"MOYEN", + L"FORT", + L"TRÈS FORT", +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"INCONNU", + L"MOUVEMENT", + L"GRINCEMENT", + L"CLAPOTEMENT", + L"IMPACT", + L"COUP DE FEU", + L"EXPLOSION", + L"CRI", + L"IMPACT", + L"IMPACT", + L"BRUIT", + L"COLLISION", +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"au NORD-EST", + L"à l'EST", + L"au SUD-EST", + L"au SUD", + L"au SUD-OUEST", + L"à l'OUEST", + L"au NORD-OUEST", + L"au NORD", +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"Ville", + L"Route", + L"Plaine", + L"Désert", + L"Bois", + L"Forêt", + L"Marais", + L"Eau", + L"Collines", + L"Infranchissable", + L"Rivière", //river from north to south + L"Rivière", //river from east to west + L"Pays étranger", + //NONE of the following are used for directional travel, just for the sector description. + L"Tropical", + L"Cultures", + L"Plaine, route", + L"Bois, route", + L"Ferme, route", + L"Tropical, route", + L"Forêt, route", + L"Route côtière", + L"Montagne, route", + L"Côte, route", + L"Désert, route", + L"Marais, route", + L"Bois, site SAM", + L"Désert, site SAM", + L"Tropical, site SAM", + L"Meduna, site SAM", + + //These are descriptions for special sectors + L"Hôpital Cambria", + L"Aéroport Drassen", + L"Aéroport Meduna", + L"Site SAM", + L"Dépôt", + L"Base rebelle", //The rebel base underground in sector A10 + L"Prison Tixa", //The basement of the Tixa Prison (J9) + L"Repaire créatures", //Any mine sector with creatures in it + L"Sous-sol d'Orta", //The basement of Orta (K4) + L"Tunnel", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Abri", //The shelter underneath the queen's palace !!! "Bunker" is much better here. Char limit ? + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s détecté dans le secteur %c%d et une autre escouade est en route.", //STR_DETECTED_SINGULAR + L"%s détecté dans le secteur %c%d et d'autres escouades sont en route.", //STR_DETECTED_PLURAL + L"Voulez-vous coordonner une arrivée simultanée ?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"L'ennemi vous propose de vous rendre.", //STR_ENEMY_SURRENDER_OFFER + L"L'ennemi a capturé vos mercenaires inconscients.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Retraite", //The retreat button //STR_AR_RETREAT_BUTTON + L"OK", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"DÉFENSEURS", //STR_AR_DEFEND_HEADER + L"ATTAQUANTS", //STR_AR_ATTACK_HEADER + L"RENCONTRE", //STR_AR_ENCOUNTER_HEADER + L"Secteur", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"VICTOIRE !", //STR_AR_OVER_VICTORY + L"DÉFAITE !", //STR_AR_OVER_DEFEAT + L"RÉDDITION !", //STR_AR_OVER_SURRENDERED + L"CAPTURE !", //STR_AR_OVER_CAPTURED + L"RETRAITE !", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Milice", //STR_AR_MILITIA_NAME, + L"Élite", //STR_AR_ELITE_NAME, + L"Troupe", //STR_AR_TROOP_NAME, + L"Admin", //STR_AR_ADMINISTRATOR_NAME, + L"Créature", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Temps écoulé", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"SE RETIRE", //STR_AR_MERC_RETREATED, + L"EN RETRAITE", //STR_AR_MERC_RETREATING, + L"RETRAITE", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Auto.", //STR_PB_AUTORESOLVE_BTN, + L"Combat", //STR_PB_GOTOSECTOR_BTN, + L"Retraite", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"ENNEMIS REPÉRÉS", //STR_PB_ENEMYENCOUNTER_HEADER, + L"ATTAQUE ENNEMIE", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"EMBUSCADE !", //STR_PB_ENEMYAMBUSH_HEADER + L"VOUS PÉNÉTREZ EN SECTEUR ENNEMI", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"ATTAQUE DE CRÉATURES", //STR_PB_CREATUREATTACK_HEADER + L"AMBUSCADE DE CHATS SAUVAGES", //STR_PB_BLOODCATAMBUSH_HEADER + L"VOUS ENTREZ DANS LE REPAIRE DES CHATS SAUVAGES", //STR_PB_ENTERINGBLOODCATLAIR_HEADER + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Lieu", + L"Ennemis", + L"Mercs", + L"Milice", + L"Créatures", + L"Chats", + L"Secteur", + L"Aucun", //If there are non uninvolved mercs in this fight. + L"N/A", //Acronym of Not Applicable + L"j", //One letter abbreviation of day + L"h", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Annuler", + L"Dispersé", + L"Groupé", + L"OK", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"Annule le déploiement des mercenaires \net vous permet de les déployer vous-même. (|C)", + L"Disperse aléatoirement vos mercenaires \nà chaque fois. (|S)", + L"Vous permet de placer votre groupe de mercenaires. (|G)", + L"Cliquez sur ce bouton lorsque vous avez déployé \nvos mercenaires. (|E|N|T|R|É|E)", + L"Vous devez déployer vos mercenaires \navant d'engager le combat.", + + //Various strings (translate word for word) + + L"Secteur", + L"Définissez les points d'entrée", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"Il semblerait que l'endroit soit inaccessible...", + L"Déployez vos mercenaires dans la zone en surbrillance.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"est arrivé(e) dans le secteur", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"Résolution automatique du combat\nsans charger la carte. (|A)", + L"Résolution automatique impossible lorsque\nvous attaquez.", + L"Pénétrez dans le secteur pour engager le combat. (|E)", + L"Battre en retraite vers le secteur précédent. (|R)", //singular version + L"Battre en retraite vers les secteurs précédents. (|R)", //multiple groups with same previous sector !!! Changed "Faire" to "Battre en". Char limit ? + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"L'ennemi attaque votre milice dans le secteur %c%d.", + //%c%d is the sector -- ex: A9 + L"Les créatures attaquent votre milice dans le secteur %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Les créatures ont tué %d civils dans le secteur %s.", + //%s is the sector location -- ex: A9: Omerta + L"L'ennemi attaque vos mercenaires dans le secteur %s. Aucun de vos hommes ne peut combattre !", + //%s is the sector location -- ex: A9: Omerta + L"Les créatures attaquent vos mercenaires dans le secteur %s. Aucun de vos hommes ne peut combattre !", + + // Flugente: militia movement forbidden due to limited roaming + L"La milice ne peut pas se déplacer (RESTRICT_ROAMING = TRUE).", + L"La salle d'opérations n'est pas ouverte... Le mouvement de la milice a avorté !", + + L"Robot", //STR_AR_ROBOT_NAME, // TODO: translate + L"Tank", //STR_AR_TANK_NAME, // TODO.Translate + L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate + + L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", // TODO.Translate + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"Jour", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"Secteur :", + L"Jour :", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"État :", + L"Poids :", + L"P. d'action", + L"Por. :", // Range + L"Dég. :", // Damage + L"Munition :", // Number of bullets left in a magazine + L"PA :", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Précision :", //9 + L"Portée :", //10 + L"Dégât :", //11 + L"Poids :", //12 + L"Choc :",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + L"Accessoire :", //14 + L"AUTO/5 :", //15 + L"Balle rest. :", //16 + L"Par défaut :", //17 //WarmSteel - So we can also display default attachments + L"Encras. :", // 18 //added by Flugente + L"Place :", // 19 //space left on Molle items + L"Spread Pattern:", // 20 // TODO.Translate + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + L"|P|o|r|t|é|e\n \nC'est la portée de l'arme. Un tir, au-delà de\ncette valeur, donnera des pénalités.\n \nValeur élevée recommandée.", + L"|D|é|g|â|t\n \nC'est la valeur des dégâts. L'arme infligera\ngénéralement cette valeur (ou presque)\nà toutes cibles non protégées.\n \nValeur élevée recommandée.", + L"|P|r|é|c|i|s|i|o|n\n \nC'est la conception particulière de\nchaque arme qui donne ce bonus/pénalité\naux chances de toucher.\n \nValeur élevée recommandée.", + L"|V|i|s|é|e\n \nC'est le nombre maximum de clics pour viser.\n \nChaque clic donnera un tir plus précis.\n \nValeur élevée recommandée.", + L"|V|i|s|é|e |m|o|d|i|f|i|é|e\n \nLes lunettes de visée améliorent l'efficacité\nde l'arme à chaque clic.\n \nValeur élevée recommandée.", + L"|P|o|r|t|é|e |m|i|n|i|m|u|m |d|u |v|i|s|e|u|r\n \nC'est la portée minimum pour tirer\navec un viseur ou +.\n \nSi la cible est plus près que ce nombre de cases,\nles clics pour viser resteront à leur efficacité\npar défaut.\n \nValeur faible recommandée.", + L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s\n \nLa valeur des chances de toucher une\ncible avec les accessoires de l'arme.\n \nValeur élevée recommandée.", + L"|P|o|r|t|é|e |o|p|t|i|m|a|l|e |d|u |l|a|s|e|r\n \nC'est la portée (en cases) pour\nune pleine efficacité du laser.\n \nSi la cible est au-delà de ce nombre, le laser\nfournira un faible bonus ou pas du tout.\n \nValeur élevée recommandée.", + L"|C|a|c|h|e|-|f|l|a|m|m|e\n \nQuand cette icône apparaît, ça signifie que\nl'arme ne fait pas d'éclair lors du tir.\nAinsi, le tireur sera moins repérable.", + L"|S|o|n|o|r|i|t|é\n \nDistance (en cases) de l'intensité sonore\nque fait l'arme lors d'un tir.\n \nValeur faible recommandée.\n \n(Sauf pour attirer les ennemis délibérément...).", + L"|F|i|a|b|i|l|i|t|é\n \nCette valeur indique (en général) la\nrapidité avec laquelle cette arme va\nse détériorer lors des combats.\n \nValeur élevée recommandée.", + L"|R|é|p|a|r|a|t|i|o|n\n \nCette valeur indique la rapidité avec\nlaquelle l'arme sera réparée. (Par un\nmercenaire affecté à cette tâche).\n \nValeur élevée recommandée.", + L"", //12 + L"PA pour mettre en joue", + L"PA par tir", + L"PA par rafale", + L"PA pour tir auto.", + L"PA pour recharger", + L"PA pour recharger manuellement", + L"Pénalité rafale (Valeur faible recommandée)", //19 + L"Facteur de bipied", + L"Nombre de tirs pour 5 PA", + L"Pénalité auto (Valeur faible recommandée)", + L"Pénalité rafale/auto (Valeur faible recommandée)", //23 + L"PA pour jeter", + L"PA pour lancer", + L"PA pour poignarder", + L"Pas de tir simple !", + L"Pas de tir en rafale !", + L"Pas de tir auto !", + L"PA pour frapper", + L"", + L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n\n \nDétermine la difficulté à réparer une arme\net qui peut la réparer complètement.\n \nVert = N'importe qui peut la réparer.\n \nJaune = Seuls des PNJ spécialisés peuvent la\nréparer au-delà du seuil de réparation.\n \nRouge = L'arme ne peut pas être réparée.\n \nValeur élevée recommandée.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Facteur d'encombrement (Valeur faible recommandée)", // 0 + L"Facteur de fiabilité", + L"Facteur d'intensité sonore (Valeur faible recommandée)", + L"Cache-flamme", + L"Facteur de bipied", + L"Facteur de portée", // 5 + L"Facteur de toucher", + L"Portée optimum du laser", + L"Facteur de bonus de visée", + L"Facteur de longueur de rafale", + L"Facteur de pénalité de rafale (Valeur élevée recommandée)", // 10 + L"Facteur de pénalité tir auto. (Valeur élevée recommandée)", + L"Facteur de PA", + L"Facteur de PA rafale (Valeur faible recommandée)", + L"Facteur de PA tir auto (Valeur faible recommandée)", + L"Facteur de PA mise en joue (Valeur faible recommandée)", // 15 + L"Facteur de PA recharger (Valeur faible recommandée)", + L"Facteur de capacité chargeur", + L"Facteur de PA attaque (Valeur faible recommandée)", + L"Facteur de dégâts", + L"Facteur de dégâts mêlée", // 20 + L"Camouflage bois", + L"Camouflage urbain", + L"Camouflage désert", + L"Camouflage neige", + L"Facteur de discrétion", // 25 + L"Facteur de portée auditive", + L"Facteur de portée visuelle", + L"Facteur de portée visuelle jour", + L"Facteur de portée visuelle nuit", + L"Facteur de portée visuelle faible lumière", //30 + L"Facteur de portée visuelle cave", + L"Pourcentage d'effet tunnel (Valeur faible recommandée)", + L"Portée minimale pour bonus de visée", + L"Maintenez |C|T|R|L pour comparer les objets", // item compare help text + L"Equipment weight: %4.1f kg", // 35 // TODO.Translate +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"En ", + L"PARFAITE", + L"EXCELLENTE", + L"BONNE", + L"MOYENNE", + L"FAIBLE", + L"MAUVAISE", + L"PITEUSE", + L" condition." +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Montant ", + L"restant :", //this is the overall balance + L"Montant ", + L"pris :", // the amount he wants to separate from the overall balance to get two piles of money + + L"Solde", + L"actuel :", + L"Montant", + L" à retirer :", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"MOURANT", // >= 0 + L"CRITIQUE", // >= 15 + L"FAIBLE", // >= 30 + L"BLESSÉ", // >= 45 + L"EN FORME", // >= 60 + L"BON", // >= 75 + L"EXCELLENT", // >= 90 + L"EN PRISON", // added by Flugente +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L" ?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"1000", + L"100", + L"10", + L"OK", + L"Partager", + L"Retirer", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"+", +}; + +CHAR16 gzConsLabel[10] = +{ + L"-", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Pardon ?", //meaning "Repeat yourself" + L"Amical", //approach in a friendly + L"Direct", //approach directly - let's get down to business + L"Menaçant", //approach threateningly - talk now, or I'll blow your face off + L"Donner", + L"Recruter", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Acheter/Vendre", + L"Acheter", + L"Vendre", + L"Réparer", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"OK", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"Eldorado", + L"Hummer", // a hummer jeep/truck -- military vehicle + L"Camion de glaces", + L"Jeep", + L"Char", + L"Hélicoptère", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Eldor.", + L"Hummer", // the HMVV + L"Camion", + L"Jeep", + L"Char", + L"Hélico", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Eldorado", + L"Hummer", //a military jeep. This is a brand name. + L"Camion", // Ice cream truck + L"Jeep", + L"Char", + L"Hélico", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"You cannot shoot from this seat.", // TODO.Translate + L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Raid aérien", + L"Appliquer les premiers soins ?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s a remarqué qu'il manque des objets dans cet envoi.", + + // The %s is a string from pDoorTrapStrings + + L"La serrure est piégée par %s.", + L"Pas de serrure.", + L"Réussite !", + L"Échec.", + L"Réussite !", + L"Échec.", + L"La serrure n'est pas piégée.", + L"Réussite !", + // The %s is a merc name + L"%s ne possède pas la bonne clé.", + L"Le piège est désamorcé.", + L"La serrure n'est pas piégée.", + L"Verrouillée.", + L"PORTE", + L"PIÉGÉE", + L"VERROUILLÉE", + L"OUVERTE", + L"ENFONCÉE", + L"Un interrupteur. Voulez-vous l'actionner ?", + L"Désamorcer le piège ?", + L"Préc...", + L"Suiv...", + L"Plus...", + + // In the next 2 strings, %s is an item name + + L"%s posé(e) à terre.", + L"%s donné(e) à %s.", + + // In the next 2 strings, %s is a name + + L"%s a été payé(e).", + L"%d dus à %s.", + L"Choisir la fréquence :", //in this case, frequency refers to a radio signal + L"Nombre de tours avant explosion :", //how much time, in turns, until the bomb blows + L"Régler la fréquence :", //in this case, frequency refers to a radio signal + L"Désamorcer le piège ?", + L"Enlever le drapeau bleu ?", + L"Poser un drapeau bleu ?", + L"Fin du tour", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"Voulez-vous vraiment attaquer %s ?", + L"Les véhicules ne peuvent changer de position.", + L"Le robot ne peut changer de position.", + + // In the next 3 strings, %s is a name + + L"%s ne peut adopter cette position ici.", + L"%s ne peut recevoir de premiers soins ici.", + L"%s n'a pas besoin de premiers soins.", + L"Impossible d'aller ici.", + L"Votre escouade est au complet. Vous ne pouvez pas ajouter quelqu'un.", //there's non room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s a été recruté(e).", + + // Here %s is a name and %d is a number + + L"Vous devez %d $ à %s.", + + // In the next string, %s is a name + + L"Escorter %s ?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"Engager %s à %s la journée ?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"Voulez-vous engager le combat ?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"Acheter %s pour %s ?", + + // In the next string, %s is a name + + L"%s est escorté(e) par l'escouade %d.", + + // These messages are displayed during play to alert the player to a particular situation + + L"ENRAYÉ", //weapon is jammed. + L"Le robot a besoin de munitions calibre %s.", //Robot is out of ammo + L"Lancer ici ? Aucune chance.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Discrétion (|Z)", + L"Carte (|M)", + L"Fin du tour (|D)", + L"Parler à", + L"Muet", + L"Se relever (|P|g|U|p)", + L"Niveau du curseur (|T|A|B)", + L"Escalader/Sauter (|J)", + L"Se coucher (|P|g|D|n)", + L"Examiner (|C|T|R|L)", + L"Mercenaire précédent", + L"Mercenaire suivant (|E|S|P|A|C|E)", + L"Options (|O)", + L"Rafale (|B)", + L"Regarder/Pivoter (|L)", + L"Santé : %d/%d\nÉnergie : %d/%d\nMoral : %s", + L"Pardon ?", //this means "what?" + L"Suite", //an abbrieviation for "Continued" + L"Sourdine désactivée pour %s.", + L"Sourdine activée pour %s.", + L"État : %d/%d\nCarburant : %d/%d", + L"Sortir du véhicule" , + L"Changer d'escouade (|M|A|J| |E|S|P|A|C|E)", + L"Conduire", + L"N/A", //this is an acronym for "Not Applicable." + L"Utiliser (À mains nues)", + L"Utiliser (Arme à feu)", + L"Utiliser (Arme blanche)", + L"Utiliser (Explosifs)", + L"Utiliser (Trousse de soins)", + L"(Prendre)", + L"(Recharger)", + L"(Donner)", + L"%s part.", + L"%s arrive.", + L"%s n'a plus de points d'action.", + L"%s n'est pas disponible.", + L"%s est couvert de bandages.", + L"%s n'a plus de bandages.", + L"Ennemis dans le secteur !", + L"Pas d'ennemi en vue.", + L"Pas assez de points d'action.", + L"Personne n'utilise une télécommande.", + L"La rafale a vidé le chargeur !", + L"SOLDAT", + L"CRÉPITUS", + L"MILICE", + L"CIVIL", + L"ZOMBI", + L"PRISONNIER", + L"Quitter Secteur", + L"OK", + L"Annuler", + L"Mercenaire", + L"Tous", + L"GO", + L"Carte", + L"Vous ne pouvez pas quitter ce secteur par ce côté.", + L"Vous ne pouvez pas quitter le mode tour par tour.", + L"%s est trop loin.", + L"Enlever cime des arbres", + L"Afficher cime des arbres", + L"CORBEAU", //Crow, as in the large black bird + L"COU", + L"TÊTE", + L"TORSE", + L"JAMBES", + L"Donner informations à la Reine ?", + L"Acquisition de l'ID digitale", + L"ID digitale refusée. Arme désactivée.", + L"Cible acquise", + L"Chemin bloqué", + L"Dépôt/Retrait", //Help text over the $ button on the Single Merc Panel + L"Personne n'a besoin de premiers soins.", + L"Enra.", // Short form of JAMMED, for small inv slots + L"Impossible d'aller ici.", // used ( now ) for when we click on a cliff + L"Chemin bloqué. Voulez-vous changer de place avec cette personne ?", + L"La personne refuse de bouger.", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Êtes-vous d'accord pour payer %s ?", + L"Acceptez-vous le traitement médical gratuit ?", + L"Voulez-vous épouser %s ?", //Daryl + L"Trousseau de clés", + L"Vous ne pouvez pas faire ça avec ce personnage.", + L"Épargner %s ?", //Krott + L"Hors de portée", + L"Mineur", + L"Un véhicule ne peut rouler qu'entre des secteurs", + L"Impossible d'apposer des bandages maintenant", + L"Chemin bloqué pour %s", + L"Vos mercenaires capturés par l'armée de %s sont emprisonnés ici !", //Deidranna + L"Verrou touché", + L"Verrou détruit", + L"Quelqu'un d'autre veut essayer sur cette porte.", + L"État : %d/%d\nCarburant : %d/%d", + L"%s ne peut pas voir %s.", // Cannot see person trying to talk to + L"Accessoire retiré", + L"Ne peut pas gagner un autre véhicule car vous en avez déjà 2", + + // added by Flugente for defusing/setting up trap networks + L"Choisir la fréquence de la bombe (1-4) ou désamorçage (A-D) :", + L"Régler la fréquence de désamorçage :", + L"Régler la fréquence de détonation (1-4) et désamorçage (A-D) :", + L"Régler le nombre de tours avant l'explosion (1-4) et désamorçage (A-D) :", + L"Régler l'ordre des fils (1-4) et du réseau (A-D) :", + + // added by Flugente to display food status + L"Santé : %d/%d\nÉnergie : %d/%d\nMoral : %s\nSoif : %d%s\nFaim : %d%s", + + // added by Flugente: selection of a function to call in tactical + L"Que voulez-vous faire ?", + L"Remplir les gourdes", + L"Nettoyer votre arme", + L"Nettoyer les armes", + L"Retirer les habits", + L"En faire sa tenue", + L"Inspecter la milice", + L"Rééquiper milice", + L"Tester déguisement", + L"Inutilisé", + + // added by Flugente: decide what to do with the corpses + L"Que voulez-vous faire avec ce corps ?", + L"Couper la tête", + L"Dépecer", + L"Voler les habits", + L"Porter le corps", + + // Flugente: weapon cleaning + L"%s a nettoyé %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", // TODO.Translate + L"Field interrogation", + L"Où voulez-vous envoyer les %d prisonniers ?", + L"Les relâcher", + L"Voulez-vous proposer ?", + L"Leur reddition", + L"Votre reddition", + L"Distract", // TODO.Translate + L"Parler", + L"Recruit Turncoat", // TODO: translate + + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Désamorcer le piège", + L"Vérifier le piège", + L"Enlever le drapeau bleu", + L"Faire exploser !", + L"Activer fil piège", + L"Désactiver fil piège", + L"Montrer fil piège", + L"Pas de détonateur ou détonateur à distance trouvé !", + L"Cet explosif est déjà armé !", + L"Sans danger", + L"Quasiment sans danger", + L"Risqué", + L"Dangereux", + L"Danger élevé !", + + L"Masque", + L"LVN", + L"Objet", // TODO.Translate. A voir définition mot(to see finished, definition of word) + + L"Cette option fonctionne uniquement avec nouveau le système d'inventaire", + L"Aucun objet dans votre main principale", + L"Nulle part où placer l'objet dans la main principale", + L"Aucun objet défini pour cet emplacement", + L"Aucune main libre pour un nouvel objet", + L"Objet non trouvé", + L"Vous ne pouvez pas prendre d'objet avec la main principale", + + L"Attempting to bandage travelling mercs...", //TODO.Translate + + L"Improve gear", + L"%s changed %s for superior version", + L"%s picked up %s", // TODO.Translate + + L"%s has stopped chatting with %s", // TODO.Translate +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"Si vous cochez ce bouton, le secteur adjacent sera immédiatement chargé.", + L"Si vous cochez ce bouton, vous arriverez directement dans l'écran de carte\nle temps que vos mercenaires arrivent.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"Vous ne pouvez laisser vos mercenaires ici.\nVous devez d'abord nettoyer ce secteur.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"Faites sortir vos derniers mercenaires du secteur\npour charger le secteur adjacent.", + L"Faites sortir vos derniers mercenaires du secteur\npour aller dans l'écran de carte le temps que vos mercenaires fassent le voyage.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s doit être escorté(e) par vos mercenaires et ne peut quitter ce secteur tout(e) seul(e).", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s escorte %s, il ne peut quitter ce secteur seul.", //male singular + L"%s escorte %s, elle ne peut quitter ce secteur seule.", //female singular + L"%s escorte plusieurs personnages, il ne peut quitter ce secteur seul.", //male plural + L"%s escorte plusieurs personnages, elle ne peut quitter ce secteur seule.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"Tous vos mercenaires doivent être dans les environs\npour que l'escouade avance.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"Si vous cochez ce bouton, %s voyagera seul et sera\nautomatiquement assigné à une nouvelle escouade.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"Si vous cochez ce bouton, votre escouade\nquittera le secteur.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s est escorté par vos mercenaires et ne peut quitter ce secteur seul. Vos mercenaires doivent être à proximité.", +}; + + + +STR16 pRepairStrings[] = +{ + L"Objets", // tell merc to repair items in inventory + L"Site SAM", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Annuler", // cancel this menu + L"Robot", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"perd", // the merc has lost a statistic + L"gagne", // the merc has gained a statistic + L"point en", // singular + L"points en", // plural + L"niveau d'", // singular + L"niveaux d'", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"santé.", + L"agilité.", + L"dextérité.", + L"sagesse.", + L"compétence médicale.", + L"compétence en explosifs.", + L"compétence mécanique.", + L"tir", + L"expérience.", + L"force.", + L"commandement.", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"Distance totale : ", // total distance for helicopter to travel + L" Aller : ", // distance to travel to destination + L" Retour : ", // distance to return from destination to airport + L"Coût : ", // total cost of trip by helicopter + L"HPA : ", // ETA is an acronym for "estimated time of arrival" + L"L'hélicoptère n'a plus de carburant et doit se poser en terrain ennemi !", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Passagers : ", + L"Sélectionner Skyrider ou l'aire d'atterrissage ?", + L"Skyrider", + L"Arrivée", + L"L'hélicoptère est trop endommagé et doit atterrir en territoire ennemi !", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"L'hélicoptère va retourner directement à sa base, voulez-vous faire descendre les passagers ?", + L"Carburant restant :", + L"Ravitaillement :", +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Voulez-vous que %s commence les réparations ? Ça vous coûtera %d $ et l'hélicoptère ne sera pas disponible avant %d heure(s).", + L"L'hélicoptère est actuellement démonté. Attendez jusqu'à ce que les réparations soient terminées.", + L"Les réparations sont terminées. L'hélicoptère est à nouveau disponible.", + L"L'hélicoptère est complètement ravitaillé.", + + L"Helicopter has exceeded maximum range!", // TODO.Translate +}; + +STR16 sMapLevelString[] = +{ + L"Niveau souterrain :", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"Loyauté", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"Impossible de donner des ordres.", +}; + +STR16 gsTimeStrings[] = +{ + L"h", // hours abbreviation + L"m", // minutes abbreviation + L"s", // seconds abbreviation + L"j", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"0", + L"Hôpital", + L"Usine", + L"Prison", + L"Militaire", + L"Aéroport", + L"Champ de tir", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"Inventaire", + L"Quitter", + L"Repair", // TODO.Translate + L"Factories", // TODO.Translate +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"Taille ", // 0 // size of the town in sectors + L"", // blank line, required + L"Contrôle ", // how much of town is controlled + L"Aucune", // none of this town + L"Mine associée ", // mine associated with this town + L"Loyauté ", // 5 // the loyalty level of this town + L"Forces entraînées ", // the forces in the town trained by the player + L"", + L"Principale installation ", // main facilities in this town + L"Niveau ", // the training level of civilians in this town + L"Formation ", // 10 // state of civilian training in town + L"Milice ", // the state of the trained civilians in the town + + // Flugente: prisoner texts // TODO.Translate + L"Prisonnier ", + L"%d (capacity %d)", + L"%d Admins", + L"%d Regulars", + L"%d Elites", + L"%d Officers", + L"%d Generals", + L"%d Civilians", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"Mine", // 0 + L"Argent", + L"Or", + L"Production quotidienne", + L"Production estimée", + L"Abandonnée", // 5 + L"Fermée", + L"Épuisée", + L"Production", + L"État", + L"Productivité", + L"Ressource", // 10 + L"Contrôle de la ville", + L"Loyauté de la ville", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"Forces ennemies ", + L"Secteur ", + L"Nombre d'objets ", + L"Inconnu", + + L"Contrôlé ", + L"Oui", + L"Non", + L"Status/Software status:", // TODO.Translate + + L"Additional Intel", // TODO:Translate +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s n'est pas assez près.", //Merc is in sector with item but not close enough + L"Sélection impossible.", //MARK CARTER + L"%s n'est pas dans le bon secteur.", + L"En combat, vous devez prendre les objets vous-même.", + L"En combat, vous devez abandonner les objets vous-même.", + L"%s n'est pas dans le bon secteur.", + L"Pendant le combat, vous ne pouvez pas recharger avec une caisse de munitions.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Lieu", // sector these items are in + L"Objets", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"Cliquez sur la colonne assignation pour affecter un mercenaire à une nouvelle tâche", + L"Cliquez sur la colonne destination pour ordonner à un mercenaire de se rendre dans un secteur", + L"Utilisez la compression du temps pour que le voyage du mercenaire vous paraisse moins long.", + L"Cliquez sur un secteur pour le sélectionner. Cliquez à nouveau pour donner un ordre de mouvement à un mercenaire ou effectuez un clic droit pour obtenir des informations sur le secteur.", + L"Appuyez sur \"H\" pour afficher l'aide en ligne.", + L"Test Texte", + L"Test Texte", + L"Test Texte", + L"Test Texte", + L"Cet écran ne vous est d'aucune utilité tant que vous n'êtes pas arrivé à Arulco. Une fois votre équipe constituée, cliquez sur le bouton de compression du temps en bas à droite. Le temps vous paraîtra moins long...", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"Déplacement", // title for movement box + L"Route", // done with movement menu, start plotting movement + L"Annuler", // cancel this menu + L"Autre", // title for group of mercs not on squads nor in vehicles + L"Select all", // Select all squads TODO: Translate +}; + + +STR16 pUpdateMercStrings[] = +{ + L"Oups :", // an error has occured + L"Expiration du contrat :", // this pop up came up due to a merc contract ending + L"Tâches accomplies :", // this pop up....due to more than one merc finishing assignments + L"Mercenaires disponibles :", // this pop up ....due to more than one merc waking up and returing to work + L"Mercenaires au repos :", // this pop up ....due to more than one merc being tired and going to sleep + L"Contrats arrivant à échéance :", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Villes (|W)", + L"Mines (|M)", + L"Escouades & Ennemis (|T)", + L"Espace aérien (|A)", + L"Objets (|I)", + L"Milice & Ennemis (|Z)", + L"Show |Disease Data", // TODO.Translate + L"Show Weathe|r", + L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Suivant (|.)", // next page + L"Précédent (|,)", // previous page + L"Quitter l'inventaire du secteur (|E|S|C)", // exit sector inventory + + L"Zoom inventaire", // HEAROCK HAM 5: Inventory Zoom Button + L"Empiler les mêmes objets", // HEADROCK HAM 5: Stack and Merge + L"|C|l|i|c |G|. : Trier munitions par caisse\n|C|l|i|c |D|. : Trier munitions par boîte", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|C|l|i|c |G|. : Ôter tous les accessoires des objets\n|C|l|i|c |D|. : empty LBE in sector", // HEADROCK HAM 5: Separate Attachments + L"Décharger toutes les armes", //HEADROCK HAM 5: Eject Ammo + L"|C|l|i|c |G|. : Voir tous les objets\n|C|l|i|c |D|. : Cacher tous les objets", // HEADROCK HAM 5: Filter Button + L"|C|l|i|c |G|. : Avec/sans armes\n|C|l|i|c |D|. : Voir que les armes", // HEADROCK HAM 5: Filter Button + L"|C|l|i|c |G|. : Avec/sans munitions\n|C|l|i|c |D|. : Voir que les munitions", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|C|l|i|c |G|. : Avec/sans explosifs\n|C|l|i|c |D|. : Voir que les explosifs", // HEADROCK HAM 5: Filter Button + L"|C|l|i|c |G|. : Avec/sans armes blanches\n|C|l|i|c |D|. : Voir que les armes blanches", // HEADROCK HAM 5: Filter Button + L"|C|l|i|c |G|. : Avec/sans protections\n|C|l|i|c |D|. : Voir que les protections", // HEADROCK HAM 5: Filter Button + L"|C|l|i|c |G|. : Avec/sans LBE\n|C|l|i|c |D|. : Voir que les LBE", // HEADROCK HAM 5: Filter Button + L"|C|l|i|c |G|. : Avec/sans kits\n|C|l|i|c |D|. : Voir que les kits", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|C|l|i|c |G|. : Avec/sans objets divers\n|C|l|i|c |D|. : Voir que les objets divers", // HEADROCK HAM 5: Filter Button + L"Pour afficher ou non les objets déplacés.", // Flugente: move item display + L"Save Gear Template", // TODO.Translate + L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"PC Portable (|L)", + L"Tactique (|E|C|H|A|P)", + L"Options (|O)", + L"Compression du temps (|+)", // time compress more + L"Compression du temps (|-)", // time compress less + L"Message précédent (|H|A|U|T)\nPage précédente (|P|g|U|p)", // previous message in scrollable list + L"Message suivant (|B|A|S)\nPage suivante (|P|g|D|n)", // next message in the scrollable list + L"Arrêter/Reprendre (|E|S|P|A|C|E)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Solde actuel", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s est mort(e).", +}; + + +STR16 pDayStrings[] = +{ + L"Jour", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; + +/* +{ + L"Enrico", + L"Psych Pro Inc", + L"Help Desk", + L"Psych Pro Inc", + L"Speck", + L"R.I.S.", //5 + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", //10 + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", //15 + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", //20 + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", //25 + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", //30 + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephan", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"M.I.S. Assurance", + L"Bobby Ray", + L"Kingpin", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"Précédent", + L"Suivant", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"Nouveaux messages...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"Effacer message ?", + L"Effacer message NON CONSULTÉ ?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"De :", + L"Sujet :", + L"Date :", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"Boîte mail", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Comptable Plus", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Crédit :", // credit (subtract from) to player's account + L"Débit :", // debit (add to) to player's account + L"Revenus (hier) :", + L"Dépôts (hier) :", + L"Dépenses (hier) :", + L"Solde (fin de journée) :", + L"Revenus (aujourd'hui) :", + L"Dépôts (aujourd'hui) :", + L"Dépenses (aujourd'hui) :", + L"Solde actuel :", + L"Revenus (prévision) :", + L"Solde (prévision) :", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"Jour", // the day column + L"Crédit", // the credits column (to ADD money to your account) + L"Débit", // the debits column (to SUBTRACT money from your account) + L"Transaction", // transaction type - see TransactionText below + L"Solde", // balance at this point in time + L"Page", // page number + L"Jour(s)", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"Intérêts cumulés", // interest the player has accumulated so far + L"Dépôt anonyme", + L"Commission", + L"Engagé", // Merc was hired + L"Achats Bobby Ray", // Bobby Ray is the name of an arms dealer + L"Règlement MERC", + L"Acompte médical pour %s", // medical deposit for merc + L"Analyse IMP", // IMP is the acronym for International Mercenary Profiling + L"Assurance pour %s", + L"Réduction d'assurance pour %s", + L"Extension d'assurance pour %s", // johnny contract extended + L"Annulation d'assurance pour %s", + L"Indemnisation pour %s", // insurance claim for merc + L"1 jour", // merc's contract extended for a day + L"1 semaine", // merc's contract extended for a week + L"2 semaines", // ... for 2 weeks + L"Revenus des mines", + L"", //String nuked + L"Achat de fleurs", + L"Remboursement médical pour %s", + L"Remb. médical partiel pour %s", + L"Pas de remb. médical pour %s", + L"Paiement à %s", // %s is the name of the npc being paid + L"Transfert de fonds pour %s", // transfer funds to a merc + L"Transfert de fonds de %s", // transfer funds from a merc + L"Coût milice de %s", // initial cost to equip a town's militia + L"Achats à %s.", //is used for the Shop keeper interface. The dealers name will be appended to the en d of the string. + L"Montant déposé par %s.", + L"Matériel vendu à la population", + L"Infrastucture utilisée", // HEADROCK HAM 3.6 + L"Entretien de la milice", // HEADROCK HAM 3.6 + L"Argent des prisonniers libérés", // Flugente: prisoner system + L"WHO data subscription", // Flugente: disease TODO.Translate + L"Payment to Kerberus", // Flugente: PMC + L"SAM site repair", // Flugente: SAM repair // TODO.Translate + L"Trained workers", // Flugente: train workers + L"Drill militia in %s", // Flugente: drill militia // TODO.Translate + L"Mini event", // rftr: mini events // TODO: translate + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Assurance pour", // insurance for a merc + L"Ext. contrat de %s (1 jour).", // entend mercs contract by a day + L"Ext. contrat de %s (1 semaine).", + L"Ext. contrat de %s (2 semaines).", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"Skyrider a reçu %d $", // skyrider was paid an amount of money + L"Skyrider attend toujours ses %d $", // skyrider is still owed an amount of money + L"Skyrider a fait le plein", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider est prêt à redécoller.", // Skyrider was grounded but has been freed + L"Skyrider n'a pas de passager. Si vous voulez envoyer des mercenaires dans un autre secteur, n'oubliez pas de les assigner à l'hélicoptère.", +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"Superbe", + L"Bon", + L"Stable", + L"Bas", + L"Paniqué", + L"Mauvais", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"L'équipement de %s est maintenant disponible à Omerta (A9).", + L"L'équipement de %s est maintenant disponible à Drassen (B13).", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"Santé", + L"Énergie", + L"Moral", + L"État", // the condition of the current vehicle (its "Santé") + L"Carburant", // the fuel level of the current vehicle (its "energy") + L"Poison", + L"Soif", // drink level + L"Faim", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Mercenaire précédent (|G|a|u|c|h|e)", // previous merc in the list + L"Mercenaire suivant (|D|r|o|i|t|e)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"HPA :", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"Vous ne le reverrez jamais. Vous êtes sûr de vous ?", // do you want to continue and lose the item forever + L"Cet objet a l'air VRAIMENT important. Vous êtes bien sûr (mais alors BIEN SÛR) de vouloir l'abandonner ?", // does the user REALLY want to trash this item +}; + + +STR16 pMapErrorString[] = +{ + L"L'escouade ne peut se déplacer, si l'un de ses membres se repose.", + +//1-5 + L"Déplacez d'abord votre escouade.", + L"Des ordres de mouvement ? C'est un secteur hostile !", + L"Les mercenaires doivent d'abord être assignés à une escouade ou un véhicule.", + L"Vous n'avez plus aucun membre dans votre escouade.", // you have non members, can't do anything + L"Le mercenaire ne peut obéir.", // merc can't comply with your order +//6-10 + L"doit être escorté. Mettez-le dans une escouade.", // merc can't move unescorted .. for a male + L"doit être escortée. Mettez-la dans une escouade.", // for a female + L"Ce mercenaire n'est pas encore arrivé à %s !", + L"Il faudrait d'abord revoir les termes du contrat...", + L"", +//11-15 + L"Des ordres de mouvement ? Vous êtes en plein combat !", + L"Vous êtes tombé dans une embuscade de chats sauvages dans le secteur %s !", + L"Vous venez d'entrer dans le repaire des chats sauvages (secteur %s) !", + L"", + L"Le site SAM en %s est sous contrôle ennemi.", +//16-20 + L"La mine en %s est sous contrôle ennemi. Votre revenu journalier est réduit à %s.", + L"L'ennemi vient de prendre le contrôle du secteur %s.", + L"L'un au moins de vos mercenaires ne peut effectuer cette tâche.", + L"%s ne peut rejoindre %s (plein).", + L"%s ne peut rejoindre %s (éloignement).", +//21-25 + L"La mine en %s a été reprise par les forces de Deidranna !", + L"Les forces de Deidranna viennent d'envahir le site SAM en %s", + L"Les forces de Deidranna viennent d'envahir %s", + L"Les forces de Deidranna ont été repérées en %s.", + L"Les forces de Deidranna viennent de prendre %s.", +//26-30 + L"L'un au moins de vos mercenaires n'est pas fatigué.", + L"L'un au moins de vos mercenaires ne peut être réveillé.", + L"La milice n'apparaît sur l'écran qu'une fois son entraînement achevé.", + L"%s ne peut recevoir d'ordre de mouvement pour le moment.", + L"Les miliciens qui ne se trouvent pas dans les limites d'une ville ne peuvent être déplacés.", +//31-35 + L"Vous ne pouvez pas entraîner de milice en %s.", + L"Un véhicule ne peut se déplacer, s'il est vide !", + L"L'état de santé de %s ne lui permet pas de voyager !", + L"Vous devez d'abord quitter le musée !", + L"%s est mort(e) !", +//36-40 + L"%s ne peut passer à %s (en mouvement)", + L"%s ne peut pas pénétrer dans le véhicule de cette façon", + L"%s ne peut rejoindre %s", + L"Vous devez d'abord engager des mercenaires !", + L"Ce véhicule ne peut circuler que sur les routes !", +//41-45 + L"Vous ne pouvez réaffecter des mercenaires qui sont en déplacement", + L"Plus d'essence !", + L"%s est trop fatigué(e) pour entreprendre ce voyage.", + L"Personne n'est capable de conduire ce véhicule.", + L"L'un au moins des membres de cette escouade ne peut se déplacer.", +//46-50 + L"L'un au moins des AUTRES mercenaires ne peut se déplacer.", + L"Le véhicule est trop endommagé !", + L"Deux mercenaires au plus peuvent être assignés à l'entraînement de la milice dans chaque secteur.", + L"Le robot ne peut se déplacer sans son contrôleur. Mettez-les ensemble dans la même escouade.", + L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate +// 51-55 + L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Cliquez à nouveau sur votre destination pour la confirmer ou cliquez sur d'autres secteurs pour définir de nouvelles étapes.", + L"Route confirmée.", + L"Destination inchangée.", + L"Route annulée.", + L"Route raccourcie.", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Cliquez sur la nouvelle destination de vos mercenaires.", + L"OK. Les mercenaires arriveront en %s", + L"Les mercenaires ne peuvent être déployés ici, l'espace aérien n'est pas sécurisé !", + L"Annulé. Secteur d'arrivée inchangé.", + L"L'espace aérien en %s n'est plus sûr ! Le secteur d'arrivée est maintenant %s.", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Inventaire (|E|N|T|R|É|E)", + L"Jeter objet", + L"Quitter Inventaire (|E|N|T|R|É|E)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"%s doit-il abandonner son paquetage sur place (%s) ou à (%s) avant de quitter ?", + L"%s est sur le point de partir et laissera son paquetage en %s.", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"%s doit-elle abandonner son paquetage sur place (%s) ou à (%s) avant de quitter ?", + L"%s est sur le point de partir et laissera son paquetage en %s.", +}; + + +STR16 pMercContractOverStrings[] = +{ + L"a rempli son contrat, il est rentré chez lui.", // merc's contract is over and has departed + L"a rempli son contrat, elle est rentrée chez elle.", // merc's contract is over and has departed + L"est parti, son contrat ayant été annulé.", // merc's contract has been terminated + L"est partie, son contrat ayant été annulé.", // merc's contract has been terminated + L"Vous devez trop d'argent à la MERC, %s quitte Arulco.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages + +// WDS: Allow flexible numbers of IMPs of each sex +// note: I only updated the English text to remove "three" below +STR16 pImpPopUpStrings[] = +{ + L"Code incorrect", + L"Vous allez établir un nouveau profil. Êtes-vous sûr de vouloir recommencer ?", + L"Veuillez entrer votre nom et votre sexe.", + L"Vous n'avez pas les moyens de vous offrir une analyse de profil.", + L"Option inaccessible pour le moment.", + L"Pour que cette analyse soit efficace, il doit vous rester au moins une place dans votre escouade.", + L"Profil déjà établi.", + L"Impossible de charger le profil.", + L"Vous avez déjà atteint le nombre maximum d'IMP.", + L"Vous avez déjà trois IMP du même sexe dans l'escouade.", + L"Vous n'avez pas les moyens.", // 10 + L"Le nouvel IMP a rejoint votre escouade.", + L"Vous avez déjà sélectionné le maximal de traits de caractères.", + L"No voicesets found.", // TODO.Translate +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"Nous", // about the IMP site + L"COMMENCER", // begin profiling + L"Personnalité", // personality section + L"Caractéristiques", // personal stats/attributes section + L"Apparence", // changed from portrait + L"Voix %d", // the voice selection + L"OK", // done profiling + L"Recommencer", // start over profiling + L"Oui, la réponse en surbrillance me convient.", + L"Oui", + L"Non", + L"Terminé", // finished answering questions + L"Préc.", // previous question..abbreviated form + L"Suiv.", // next question + L"OUI, JE SUIS SÛR.", // oui, I am certain + L"NON, JE VEUX RECOMMENCER.", // non, I want to start over the profiling process + L"OUI", + L"NON", + L"Retour", // back one page + L"Annuler", // cancel selection + L"Oui, je suis sûr.", + L"Non, je ne suis pas sûr.", + L"Registre", // the IMP site registry..when name and gender is selected + L"Analyse", // analyzing your profile results + L"OK", + L"Caractère", // Change from "Voice" + L"Aucune", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"Vos traits de caractères étant choisis, il est temps de choisir vos compétences.", + L"Pour compléter le processus, choisissez vos attributs.", + L"Pour commencer votre profil réel, choisissez un portrait, une voix et vos couleurs", + L"Maintenant que vous avez complété votre apparence, proccédons à l'analyse de votre personnage.", +}; + +STR16 pFilesTitle[] = +{ + L"Fichiers", +}; + +STR16 pFilesSenderList[] = +{ +#ifdef JA2UB +L"Rapport Tracona", // the recon report sent to the player. Recon is an abbreviation for reconissance +#else +L"Rapport Arulco", // the recon report sent to the player. Recon is an abbreviation for reconissance +#endif + L"Interception #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"Interception #2", // second intercept file + L"Interception #3", // third intercept file + L"Interception #4", // fourth intercept file + L"Interception #5", // fifth intercept file + L"Interception #6", // sixth intercept file +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"Historique", +}; + +STR16 pHistoryHeaders[] = +{ + L"Jour", // the day the history event occurred + L"Page", // the current page in the history report we are in + L"Jour", // the days the history report occurs over + L"Lieu", // location (in sector) the event occurred + L"Événement", // the event label +}; + +/* +// Externalized to "TableData\History.xml" +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"%s engagé(e) sur le site AIM.", // merc was hired from the aim site + L"%s engagé(e) sur le site MERC.", // merc was hired from the aim site + L"%s est mort(e).", // merc was killed + L"Versements MERC.", // paid outstanding bills at MERC + L"Ordre de mission de Chivaldori Enrico accepté", + //6-10 + L"IMP : Profil fait", + L"Souscription d'un contrat d'assurance pour %s.", // insurance contract purchased + L"Annulation du contrat d'assurance de %s.", // insurance contract canceled + L"Indemnité pour %s.", // insurance claim payout for merc + L"Extension du contrat de %s (1 jour).", // Extented "mercs name"'s for a day + //11-15 + L"Extension du contrat de %s (1 semaine).", // Extented "mercs name"'s for a week + L"Extension du contrat de %s (2 semaines).", // Extented "mercs name"'s 2 weeks + L"%s a été renvoyé(e).", // "merc's name" was dismissed. + L"%s a démissionné(e).", // "merc's name" quit. + L"quête commencée.", // a particular quest started + //16-20 + L"quête achevée.", + L"Entretien avec le chef des mineurs de %s", // talked to head miner of town + L"Libération de %s", + L"Activation du mode triche", + L"Le ravitaillement devrait arriver demain à Omerta", + //21-25 + L"%s a quitté l'escouade pour épouser Hick Daryl", + L"Expiration du contrat de %s.", + L"Recrutement de %s.", + L"Plainte d'Enrico pour manque de résultats", + L"Victoire", + //26-30 + L"La mine de %s commence à s'épuiser", + L"La mine de %s est épuisée", + L"La mine de %s a été fermée", + L"La mine de %s a été réouverte", + L"Une prison du nom de Tixa a été découverte.", + //31-35 + L"Rumeurs sur une usine d'armes secrètes : Orta.", + L"Les chercheurs d'Orta vous donnent des fusils à roquettes.", + L"Deidranna fait des expériences sur les cadavres.", + L"Frank parle de combats organisés à San Mona.", + L"Un témoin a aperçu quelque chose dans les mines.", + //36-40 + L"Rencontre avec Devin (vendeur d'explosifs).", + L"Rencontre avec Mike, le fameux ex-mercenaire de l'AIM !", + L"Rencontre avec Tony (vendeur d'armes).", + L"Fusil à roquettes récupéré auprès du sergent Krott.", + L"Acte de propriété du magasin d'Angel donné à Kyle.", + //41-45 + L"Foulab propose de construire un robot.", + L"Gabby fait des décoctions rendant invisible aux créatures.", + L"Keith est hors-jeu.", + L"Howard fournit du cyanure à la Reine Deidranna.", + L"Rencontre avec Keith (vendeur à Cambria).", + //46-50 + L"Rencontre avec Howard (pharmacien à Balime).", + L"Rencontre avec Perko (réparateur en tous genres).", + L"Rencontre avec Sam de Balime (vendeur de matériel).", + L"Franz vend du matériel électronique.", + L"Arnold tient un magasin de réparations à Grumm.", + //51-55 + L"Fredo répare le matériel électronique à Grumm.", + L"Don provenant d'un homme influent de Balime.", + L"Rencontre avec Jake, vendeur de pièces détachées.", + L"Clé électronique reçue.", + L"Corruption de Walter pour ouvrir l'accès aux sous-sols.", + //56-60 + L"Dave refait gratuitement le plein, s'il a du carburant.", + L"Pot-de-vin donné à Pablo.", + L"Caïd cache un trésor dans la mine de San Mona.", + L"Victoire de %s dans le combat extrème", + L"Défaite de %s dans le combat extrème", + //61-65 + L"Disqualification de %s dans le combat extrème", + L"Importante somme découverte dans la mine abandonnée.", + L"Rencontre avec un tueur engagé par Caïd.", + L"Perte du secteur", //ENEMY_INVASION_CODE + L"Secteur défendu", + //66-70 + L"Défaite", //ENEMY_ENCOUNTER_CODE + L"Embuscade", //ENEMY_AMBUSH_CODE + L"Embuscade ennemie déjouée", + L"Échec de l'attaque", //ENTERING_ENEMY_SECTOR_CODE + L"Réussite de l'attaque !", + //71-75 + L"Attaque de créatures", //CREATURE_ATTACK_CODE + L"Ambuscade de chats sauvages", //BLOODCAT_AMBUSH_CODE + L"Élimination des chats sauvages", + L"%s a été tué(e)", + L"Tête de terroriste donnée à Carmen", + //76-80 + L"Reste Slay", + L"%s a été tué(e)", + L"Rencontre avec Waldo, mécanicien aéronautique.", + L"Réparations de l'hélico ont débuté, temps estimé : %d h.", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"N/A", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"E-mail", + L"Favoris", + L"Finances", + L"Personnel", + L"Historique", + L"Fichiers", + L"Éteindre", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"AIM", + L"Bobby Ray", + L"IMP", + L"MERC", + L"Morgue", + L"Fleuriste", + L"Assurance", + L"Annuler", + L"Encyclopédie", + L"Briefing", + L"Comptes rendus", + L"MeLoDY", + L"WHO", + L"Kerberus", + L"Militia Overview", // TODO.Translate + L"R.I.S.", + L"Factories", // TODO.Translate +}; + +STR16 pBookmarkTitle[] = +{ + L"Favoris", + L"Faites un clic droit pour accéder plus tard à ce menu.", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"Téléchargement", + L"Chargement", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Prendre", // take money from merc + L"Donner", // give money to merc + L"Annuler", // cancel transaction + L"Effacer", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Transférer $ ", // transfer money to merc -- short form + L"Stats", // view stats of the merc + L"Inventaire", // view the inventory of the merc + L"Historique", +}; + +STR16 sATMText[ ]= +{ + L"Transférer les fonds ?", // transfer funds to merc? + L"Ok ?", // are we certain? + L"Entrer montant", // enter the amount you want to transfer to merc + L"Choix du type", // select the type of transfer to merc + L"Fonds insuffisants", // not enough money to transfer to merc + L"Le montant doit être un multiple de 10 $", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"Erreur", + L"Le serveur ne trouve pas l'entrée DNS.", + L"Vérifiez l'adresse URL et essayez à nouveau.", + L"OK", + L"Connexion à l'hôte.", +}; + + +STR16 pPersonnelString[] = +{ + L"Merc. :", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"AIM", + L"Membres AIM", + L"Galerie AIM", // a mug shot is another name for a portrait + L"Tri AIM", + L"AIM", + L"Anciens AIM", + L"Règlement AIM", + L"Historique AIM", + L"Liens AIM", + L"MERC", + L"Comptes MERC", + L"Enregistrement MERC", + L"Index MERC", + L"Bobby Ray", + L"Bobby Ray : Armes", + L"Bobby Ray : Munitions", + L"Bobby Ray : Protections", + L"Bobby Ray : Divers", //misc is an abbreviation for miscellaneous + L"Bobby Ray : Occasions", + L"Bobby Ray : Commande", + L"IMP", + L"IMP", + L"Service des Fleuristes Associés", + L"Service des Fleuristes Associés : Exposition", + L"Service des Fleuristes Associés : Bon de commande", + L"Service des Fleuristes Associés : Cartes", + L"Malleus, Incus & Stapes Courtiers", + L"Information", + L"Contrat", + L"Commentaires", + L"Morgue McGillicutty", + L"", + L"URL introuvable.", + L"%s, conseil de presse : Bilan du conflit", + L"%s, conseil de presse : Rapports", + L"%s, conseil de presse : Dernières nouvelles", + L"%s, conseil de presse : À propos de nous", + L"Mercs Love or Dislike You - About us", // TODO.Translate + L"Mercs Love or Dislike You - Analyze a team", + L"Mercs Love or Dislike You - Pairwise comparison", + L"Mercs Love or Dislike You - Personality", + L"WHO - About WHO", + L"WHO - Disease in Arulco", + L"WHO - Helpful Tips", + L"Kerberus - About Us", + L"Kerberus - Hire a Team", + L"Kerberus - Individual Contracts", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services - Information Requests", // TODO.Translate + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Factory Overview", // TODO.Translate + L"Bobby Ray : Dernières commandes", + L"Encyclopédie", + L"Encyclopédie : Données", + L"Salle de briefing", + L"Salle de briefing : Données", +}; + +STR16 pShowBookmarkString[] = +{ + L"Sir-Help", + L"Cliquez à nouveau pour accéder aux Favoris.", +}; + +STR16 pLaptopTitles[] = +{ + L"Boîte mail", + L"Fichiers", + L"Personnel", + L"Comptable Plus", + L"Historique", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"Mort en mission", + L"Parti(e)", + L"Autre", + L"Mariage", + L"Contrat terminé", + L"Quitter", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"Équipe actuelle", + L"Départs", + L"Coût quotidien :", + L"Coût maximum :", + L"Coût minimum :", + L"Morts en mission :", + L"Démissions :", + L"Autres :", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Minimum", + L"Moyenne", + L"Maximum", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"SAN", + L"AGI", + L"DEX", + L"FOR", + L"COM", + L"SAG", + L"NIV", + L"TIR", + L"TECH", + L"EXPL", + L"MÉD", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"Contrat", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"Continuer", + L"Stop", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"Vous avez été vaincu dans ce secteur !", + L"L'ennemi, sans aucune compassion, ne fait pas de quartier !", + L"Vos mercenaires inconscients ont été capturés !", + L"Vos mercenaires ont été faits prisonniers.", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"Précédent", + L"Suivant", + L"Accepter", + L"Annuler", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"Précédent", + L"Suivant", +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Autoriser", + L"Accueil", + L"Compte :", + L"Mercenaire", + L"Jours", + L"Taux", //5 + L"Montant", + L"Total :", + L"Désirez-vous autoriser le versement de %s ?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+gear)", // TODO.Translate +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Précédent", + L"Suivant", +}; + + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"Santé", + L"Agilité", + L"Dextérité", + L"Force", + L"Commandement", + L"Sagesse", + L"Niveau", + L"Tir", + L"Mécanique", + L"Explosifs", + L"Médecine", + + L"Précédent", + L"Engager", + L"Suivant", + L"Infos complémentaires", + L"Accueil", + L"Engagé(e)", + L"Salaire :", + L"Par jour", + L"Paquetage :", + L"Total :", + L"Décédé(e)", + + L"Vous ne pouvez engager plus de 18 mercenaires.", + L"Acheter paquetage ?", + L"Indisponible", + L"Payez sa solde", + L"Biographie", + L"Inventaire", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Ouvrir compte", + L"Annuler", + L"Vous ne possédez pas de compte. Désirez-vous en ouvrir un ?", +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Kline Speck T., fondateur", + L"Cliquez ici pour ouvrir un compte", + L"Cliquez ici pour voir votre compte", + L"Cliquez ici pour consulter les fichiers", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Le transfert a échoué. Aucun fonds disponible.", +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"Morgue McGillicutty : À votre écoute depuis 1983.", + L"McGillicutty Murray dit Pops, notre directeur bien aimé, est un ancien mercenaire de l'AIM. Sa spécialité : la mort des autres.", + L"Pops l'a côtoyée pendant si longtemps qu'il est un expert de la mort, à tous points de vue.", + L"La morgue McGillicutty vous offre un large éventail de services funéraires, depuis une écoute compréhensive jusqu'à la reconstitution des corps... dispersés.", + L"Laissez donc la morgue McGillicutty vous aider, pour que votre compagnon repose enfin en paix.", + + // Text for the various links available at the bottom of the page + L"ENVOYER FLEURS", + L"CERCUEILS & URNES", + L"CRÉMATION", + L"SERVICES FUNÉRAIRES", + L"NOTRE ÉTIQUETTE", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"Le concepteur de ce site s'est malheureusement absenté pour cause de décès familial. Il reviendra dès que possible pour rendre ce service encore plus efficace.", + L"Veuillez croire en nos sentiments les plus respectueux dans cette période qui doit vous être douloureuse.", +}; + +// Text for the florist Home page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Vitrine", + + //Address of United Florist + + L"\"Nous livrons partout dans le monde\"", + L"0-800-SENTMOI", + L"333 NoseGay Dr, Seedy City, CA USA 90210", + L"http://www.sentmoi.com", + + // detail of the florist page + + L"Rapides et efficaces !", + L"Livraison en 24 heures partout dans le monde (ou presque).", + L"Les prix les plus bas (ou presque) !", + L"Si vous trouvez moins cher, nous vous livrons gratuitement une douzaine de roses !", + L"Flore, Faune & Fleurs depuis 1981.", + L"Nos bombardiers (recyclés) vous livrent votre bouquet dans un rayon de 20 km (ou presque). N'importe quand... N'importe où !", + L"Nous répondons à tous vos besoins (ou presque) !", + L"Bruce, notre expert fleuriste-conseil, trouvera pour vous les plus belles fleurs et vous composera le plus beau bouquet que vous ayez vu !", + L"Et n'oubliez pas que si nous ne l'avons pas, nous pouvons le faire pousser... et vite !", +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"Retour", + L"Envoi", + L"Annuler", + L"Galerie", + + L"Nom du bouquet :", + L"Prix :", //5 + L"Référence :", + L"Date de livraison", + L"jour suivant", + L"dès que possible", + L"Lieu de livraison", //10 + L"Autres services", + L"Pot Pourri (10 $)", + L"Roses Noires (20 $)", + L"Nature Morte (10 $)", + L"Gâteau (si dispo)(10 $)", //15 + L"Carte personnelle :", + L"Veuillez écrire votre message en 75 caractères maximum...", + L"...ou utiliser l'une de nos", + + L"CARTES STANDARDS", + L"Informations",//20 + + //The text that goes beside the area where the user can enter their name + + L"Nom :", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"Préc.", //abbreviation for previous + L"Suiv.", //abbreviation for next + + L"Cliquez sur le bouquet que vous désirez commander.", + L"Note : les bouquets \"pot pourri\" et \"nature morte\" vous seront facturés 10 $ supplémentaires.", + + //text on the button + + L"Accueil", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"Faites votre choix", + L"Retour", +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"Commande", //Title of the page + L"Qté", // The number of items ordered + L"Poids (%s)", // The weight of the item + L"Description", // The name of the item + L"Prix unitaire", // the item's weight + L"Total", //5 // The total price of all of items of the same type + L"Sous-total", // The sub total of all the item totals added + L"Transport", // S&H is an acronym for Shipping and Handling + L"Total", // The grand total of all item totals + the shipping and handling + L"Lieu de livraison", + L"Type d'envoi", //10 // See below + L"Coût (par %s.)", // The cost to ship the items + L"Du jour au lendemain", // Gets deliverd the next day + L"2 c'est mieux qu'un", // Gets delivered in 2 days + L"Jamais 2 sans 3", // Gets delivered in 3 days + L"Effacer commande",//15 // Clears the order page + L"Confirmer commande", // Accept the order + L"Retour", // text on the button that returns to the previous page + L"Accueil", // Text on the button that returns to the home page + L"* Matériel d'occasion", // Disclaimer stating that the item is used + L"Vous n'avez pas les moyens.", //20 // A popup message that to warn of not enough money + L"", // Gets displayed when there is non valid city selected + L"Êtes-vous sûr de vouloir envoyer cette commande à %s ?", // A popup that asks if the city selected is the correct one + L"Poids total **", // Displays the weight of the package + L"** Pds Min.", // Disclaimer states that there is a minimum weight for the package + L"Envois", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"A/Poing", + L"PM", + L"Mitrail.", + L"Fusil", + L"Sniper", + L"F/Assaut", + L"FM", + L"F/Pompe", + L"A/Lourde", + + // Ammo + L"A/Poing", + L"PM", + L"Mitrail.", + L"Fusil", + L"Sniper", + L"F/Assaut", + L"FM", + L"F/Pompe", + + // Used + L"Arme", + L"Protection", + L"Mat. LBE", + L"Divers", + + // Armour + L"Casque", + L"Veste", + L"Pantalon", + L"Blindage", + + // Misc + L"A/blanche", + L"Arme/Jet", + L"Mêlée", + L"Grenade", + L"Explosif", + L"Médical", + L"Kit&Habit", + L"Mat. Face", + L"Mat. LBE", + L"Optique", // Madd: new BR filters + L"Pied&LAM", + L"Bouche", + L"Crosse", + L"Mag&Dét.", + L"Accessoire", + L"Divers", +}; + + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"Pour commander", // Title + // instructions on how to order + L"Cliquez sur les objets désirés. Cliquez à nouveau pour sélectionner plusieurs exemplaires d'un même objet. Effectuez un clic droit pour désélectionner un objet. Il ne vous reste plus qu'à passer commande.", + + //Text on the buttons to go the various links + + L" PRÉCÉDENT", // + L"Arme", //3 + L"Munition", //4 + L"Protection", //5 + L"Divers", //6 //misc is an abbreviation for miscellaneous + L"Occasion", //7 + L"SUIVANT", + L"COMMANDER", + L"Accueil", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"Votre escouade possède",//11 + L"arme(s) qui utilise(nt) ce type de munitions", //12 + + //The following lines provide information on the items + + L"Poids :", // Weight of all the items of the same type + L"Cal :", // the caliber of the gun + L"Chgr :", // number of rounds of ammo the Magazine can hold + L"Portée :", // The range of the gun + L"Dégâts :", // Damage of the weapon + L"CdT :", // Weapon's Rate Of Fire, acronym ROF + L"PA :", // Weapon's Action Points, acronym AP + L"Étourdis. :", // Weapon's Stun Damage + L"Prot. :", // Armour's Protection + L"Cam. :", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Prix :", // Cost of the item + L"Stock :", // The number of items still in the store's inventory + L"Quantité :", // The number of items on order + L"Endommagé", // If the item is damaged + L"Poids :", // the Weight of the item + L"Sous-total :", // The total cost of all items on order + L"* %% efficacité", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"Pas de chance ! Vous ne pouvez commander que " ,//First part + L" objets différents en une fois. Si vous désirez passer une commande plus importante, il vous faudra remplir un nouveau bon de commande.", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Nous sommes navrés, mais notre stock est vide. N'hésitez pas à revenir plus tard !", + + //A popup that tells the user that the store is temporarily sold out + + L"Nous sommes navrés, mais nous n'en avons plus en rayon.", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"Vous cherchez des armes et du matériel militaire ? Vous avez frappé à la bonne porte", + L"Un seul credo : force de frappe !", + L"Occasions et secondes mains", + + //Text for the various links to the sub pages + + L"Divers", + L"ARMES", + L"MUNITIONS", //5 + L"PROTECTIONS", + + //Details on the web site + + L"Si nous n'en vendons pas, c'est que ça n'existe pas !", + L"En construction", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"Membres AIM", // Title + // Title for the way to sort + L"Tri par :", + + // sort by... + + L"Prix", + L"Expérience", + L"Tir", + L"Mécanique", + L"Explosifs", + L"Médecine", + L"Santé", + L"Agilité", + L"Dextérité", + L"Force", + L"Commandement", + L"Sagesse", + L"Nom", + + //Text of the links to other AIM pages + + L"Afficher l'index de la galerie de portraits", + L"Consulter le fichier individuel", + L"Consulter la galerie des anciens de l'AIM", + + // text to display how the entries will be sorted + + L"Ascendant", + L"Descendant", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Précédent", + L"Accueil", + L"Index", + L"Suivant", + L"Je refuse", + L"J'accepte", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"Cliquez pour", + L"contacter le mercenaire.", + L"Clic droit pour", + L"afficher l'index.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Santé", + L"Agilité", + L"Dextérité", + L"Force", + L"Commandement", + L"Sagesse", + L"Niveau", + L"Tir", + L"Mécanique", + L"Explosifs", + L"Médecine", //10 + + // the contract expenses' area + + L"Tarif", + L"Contrat", + L"1 jour", + L"1 semaine", + L"2 semaines", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"Précédent", + L"Contacter", + L"Suivant", + + L"Info. complémentaires", // Title for the additional info for the merc's bio + L"Membres actifs", //20 // Title of the page + L"Matériel optionnel :", // Displays the optional gear cost + L"Paquetage", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's + L"Dépôt médical", // If the merc required a medical deposit, this is displayed + L"Kit 1", // Text on Starting Gear Selection Button 1 + L"Kit 2", // Text on Starting Gear Selection Button 2 + L"Kit 3", // Text on Starting Gear Selection Button 3 + L"Kit 4", // Text on Starting Gear Selection Button 4 + L"Kit 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"Contrat :", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"1 jour", + L"1 semaine", + L"2 semaines", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"Pas de paquetage", + L"Acheter paquetage", + + // Text on the Buttons + + L"TRANSFERT", // to actually hire the merc + L"Annuler", // go back to the previous menu + L"ENGAGER", // go to menu in which you can hire the merc + L"RACCROCHER", // stops talking with the merc + L"OK", + L"MESSAGE", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Conférence vidéo avec", + L"Connexion. . .", + + L"tout compris" // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"TRANSFERT ACCEPTÉ", // You hired the merc + L"TRANSFERT REFUSÉ", // Player doesn't have enough money, message 1 + L"FONDS INSUFFISANTS", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"En mission", + L"Veuillez laisser un message", + L"Décédé(e)", + + //If you try to hire more mercs than game can support + + L"Équipe de mercenaires déjà au complet.", + + L"Message pré-enregistré", + L"Message enregistré", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"Liens AIM", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"Historique AIM", //Title + + // Text on the buttons at the bottom of the page + + L"Précédent", + L"Accueil", + L"Anciens", + L"Suivant", +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Prix", + L"Expérience", + L"Tir", + L"Mécanique", + L"Explosifs", + L"Médecine", + L"Santé", + L"Agilité", + L"Dextérité", + L"Force", + L"Commandement", + L"Sagesse", + L"Nom", + + // The title of the page, the above text gets added at the end of this text + + L"Tri ascendant des membres de l'AIM par %s", + L"Tri descendant des membres de l'AIM par %s", + + // Instructions to the players on what to do + + L"Cliquez pour", + L"sélectionner le mercenaire", //10 + L"Clic droit pour", + L"les options de tri", + + // Gets displayed on top of the merc's portrait if they are... + + L"Absent(e)", + L"Décédé(e)", //14 + L"En mission", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"PAGE 1", + L"PAGE 2", + L"PAGE 3", + + L"Anciens", // Title of the page + + L"OK", // Stops displaying information on selected merc + L"Page suiv.", + +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"AIM et le logo A.I.M. sont des marques déposées dans la plupart des pays.", + L"N'espérez même pas nous copier !", + L"Copyright 2008-2009 A.I.M., Ltd. Tous droits réservés.", + + //Text for an advertisement that gets displayed on the AIM page + + L"Service des Fleuristes Associés", + L"\"Nous livrons partout dans le monde\"", //10 + L"Faites-le dans les règles de l'art", + L"... la première fois", + L"Si nous ne l'avons pas, c'est que vous n'en avez pas besoin.", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"Accueil", + L"Membres", + L"Anciens", + L"Règlement", + L"Historique", + L"Liens", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"MARCHANDISE EN STOCK", //Header for the merchandise available + L"PAGE", //The current store inventory page being displayed + L"COÛT TOTAL", //The total cost of the the items in the Dealer inventory area + L"VALEUR TOTALE", //The total value of items player wishes to sell + L"ÉVALUATION", //Button text for dealer to evaluate items the player wants to sell + L"TRANSACTION", //Button text which completes the deal. Makes the transaction. + L"OK", //Text for the button which will leave the shopkeeper interface. + L"COÛT RÉPARATION", //The amount the dealer will charge to repair the merc's goods + L"1 HEURE", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d HEURES", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"RÉPARÉ", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"Plus d'emplacements libres.", //Message box that tells the user there is non more room to put there stuff + L"%d MINUTES", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Objet lâché à terre.", + L"BUDGET", // TODO.Translate +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Prendre", // Take money from the player + L"Donner", // Give money to the player + L"Annuler", // Cancel the transfer + L"Effacer", // Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"Choix", // tells the user to select either to give or take from the merc + L"Montant", // Enter the amount to transfer + L"Transfert de fonds au mercenaire", // Giving money to the merc + L"Transfert de fonds du mercenaire", // Taking money from the merc + L"Fonds insuffisants", // Not enough money to transfer + L"Solde", // Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"Voulez-vous déduire %s de votre compte pour combler la différence ?", + L"Pas assez d'argent. Il vous manque %s", + L"Voulez-vous déduire %s de votre compte pour couvrir le coût ?", + L"Demander au vendeur de lancer la transaction", + L"Demander au vendeur de réparer les objets sélectionnés", + L"Terminer l'entretien", + L"Solde actuel", + + L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate + L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"Sauvegarder", + L"Charger", + L"Quitter", + L">>", + L"<<", + L"OK", + L"1.13 Features", + L"New in 1.13", + L"Options", + + //Text above the slider bars + L"Effets", + L"Dialogue", + L"Musique", + + //Confirmation pop when the user selects.. + L"Quitter la partie et revenir au menu principal ?", + + L"Activez le mode dialogue ou sous-titre.", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Enregistrer", + L"Charger partie", + L"Annuler", + L"Enregistrement", + L"Chargement", + + L"Enregistrement réussi", + L"ERREUR lors de la sauvegarde !", + L"Chargement réussi", + L"ERREUR lors du chargement !", + + L"La version de la sauvegarde est différente de celle du jeu. Désirez-vous continuer?", + L"Les fichiers de sauvegarde sont peut-être altérés. Voulez-vous les effacer?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"La version de la sauvegarde a changé. Désirez-vous continuer ?", +#else + L"Tentative de chargement d'une sauvegarde de version précédente. Voulez-vous effectuer une mise à jour ?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"La version de la sauvegarde a changé. Désirez-vous continuer?", +#else + L"Tentative de chargement d'une sauvegarde de version précédente. Voulez-vous effectuer une mise à jour?", +#endif + + L"Êtes-vous sûr de vouloir écraser la sauvegarde #%d ?", + L"Voulez-vous charger la sauvegarde #%d ?", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"Vous risquez de manquer d'espace. Il ne vous reste que %d Mo de libre alors que le jeu nécessite %d Mo d'espace libre.", + + L"Enregistrement", //When saving a game, a message box with this string appears on the screen + + L"Quelques armes", + L"Toutes armes", + L"Style réaliste", + L"Style SF", + + L"Difficulté", + L"Platinum Mode", //Placeholder English + + L"Qualité de Bobby Ray", + L"Bonne", + L"Meilleure", + L"Excellente", + L"Superbe", + + L"Le nouvel inventaire (NIV) ne peut se lancer en 640x480. Changez de résolution.", + L"Le nouvel inventaire (NIV) ne fonctionne pas depuis le dossier \"data\" original.", + + L"La taille de l'équipe de votre sauvegarde n'est pas supportée par la résolution actuelle de votre écran. Augmenter la résolution et ré-essayez.", + L"Stock de Bobby Ray", +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Niveau carte", + L"Vous n'avez pas de milice : vous devez entraîner les habitants de la ville.", + L"Revenu quotidien", + L"Assurance vie", + L"%s n'est pas fatigué(e).", + L"%s est en mouvement et ne peut dormir.", + L"%s est trop fatigué(e) pour obéir.", + L"%s conduit.", + L"L'escouade ne peut progresser, si l'un de ses membres se repose.", + + // stuff for contracts + L"Vous pouvez payer les honoraires de ce mercenaire, mais vous ne pouvez pas vous offrir son assurance.", + L"La prime d'assurance de %s coûte %s pour %d jour(s) supplémentaire(s). Voulez-vous la payer ?", + L"Inventaire du secteur", + L"Le mercenaire a un dépôt médical.", + + // other items + L"Docteurs", // people acting a field medics and bandaging wounded mercs + L"Patients", // people who are being bandaged by a medic + L"OK", // Continue on with the game after autobandage is complete + L"Stop", // Stop autobandaging of patients by medics now + L"Désolé. Cette option n'est pas disponible.", // informs player this option/button has been disabled in the demo + L"%s n'a pas de caisse à outils.", + L"%s n'a pas de trousse de soins.", + L"Il y a trop peu de volontaires pour l'entraînement.", + L"%s ne peut pas former plus de miliciens.", + L"Le mercenaire a un contrat déterminé.", + L"Ce mercenaire n'est pas assuré.", + L"Écran carte", // 24 + + // Flugente: disease texts describing what a map view does TODO.Translate + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate + + // Flugente: weather texts describing what a map view does + L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"L'escouade %d a remarqué quelque chose dans le secteur %s", + L"L'escouade %s a remarqué quelque chose dans le secteur %s", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"L'entraînement de la milice vous coûtera $ ", // telling player how much it will cost + L"Êtes-vous d'accord ?", // asking player if they wish to pay the amount requested + L"Vous n'en avez pas les moyens.", // telling the player they can't afford to train this town + L"Voulez-vous poursuivre l'entraînement de la milice à %s (%s %d) ?", // continue training this town? + + L"Coût $ ", // the cost in dollars to train militia + L"(O/N)", // abbreviated oui/non + L"", // unused + L"L'entraînement des milices dans %d secteurs vous coûtera %d $. %s", // cost to train sveral sectors at once + + L"Vous ne pouvez pas payer les %d $ nécessaires à l'entraînement.", + L"Vous ne pouvez poursuivre l'entraînement de la milice à %s que si cette ville est à niveau de loyauté de %d pour cent.", + L"Vous ne pouvez plus entraîner de milice à %s.", + L"libérer plus de secteurs d'une ville", + + L"libérer de nouveaux secteurs d'une ville", + L"libérer plus de villes", + L"reprendre vos secteurs perdus", + L"progresser dans votre avancée", + + L"recruter plus de rebelles", +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"Vous ne pouvez retirer que 20 000 $ à la fois.", + L"Êtes-vous sûr de vouloir déposer %s sur votre compte ?", +}; + +STR16 gzCopyrightText[] = +{ + L"Copyright (C) 1999 Sir-tech Canada Ltd. Tous droits réservés.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Dialogue", + L"Confirmations muettes", + L"Sous-titres", + L"Pause des dialogues", + L"Animation fumée", + L"Du sang et des tripes", + L"Ne pas toucher à ma souris !", + L"Ancienne méthode de sélection", + L"Afficher chemin", + L"Afficher tirs manqués", + L"Confirmation temps réel", + L"Notifications sommeil/réveil", + L"Système métrique", + L"Mettez en surbrillance les mercenaires", + L"Figer curseur sur mercenaires", + L"Figer curseur sur les portes", + L"Objets en surbrillance", + L"Afficher cimes", + L"Smart Tree Tops", // TODO. Translate + L"Affichage fil de fer", + L"Curseur toit", + L"Afficher chance de toucher", + L"Curseur raf. pour raf. lance G.", + L"Remarques des ennemis", // Changed from "Enemies Drop all Items" - SANDRO + L"Lance-grenades grand angle", + L"Autori. déplcmt silenci. tps réel", // Changed from "Restrict extra Aim Levels" - SANDRO + L"Espace pour escouade suivante", + L"Ombres objets", + L"Afficher portée armes en cases", + L"Balle traçante pour tir simple", + L"Son de pluie", + L"Afficher corbeaux", + L"Afficher infobulle soldat", + L"Sauvegarde auto", + L"Silence Skyrider !", + L"EDB (mod rajoutant info utiles)", + L"Mode tour par tour forcé", // add forced turn mode + L"Couleur alternative carte", // Change color scheme of Strategic Map + L"Montrer tirs alternatifs", // Show alternate bullet graphics (tracers) + L"Logical Bodytypes", + L"Afficher grade du mercenaire", // shows mercs ranks + L"Afficher équip. sur portrait", + L"Afficher icônes sur portrait", + L"Désactiver échange curseur", // Disable Cursor Swap + L"Entraîner en silence", // Madd: mercs don't say quotes while training + L"Réparer en silence", // Madd: mercs don't say quotes while repairing + L"Soigner en silence", // Madd: mercs don't say quotes while doctoring + L"Accélérer les tours ennemis", // Automatic fast forward through AI turns + L"Avec zombis", // Flugente Zombies + L"Propose objet/inventaire", // the_bob : enable popups for picking items from sector inv + L"Situer ennemi restant", + L"Afficher contenu LBE/DESC.", + L"Inverser molette/souris", + L"Déplacement tactique", // when multiple mercs are selected, they will try to keep their relative distances + L"Show enemy location", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Options mode triche--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Forcer envois Bobby Ray", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--OPTIONS DE DEBUG--", // an example options screen options header (pure text) + L"Afficher déviation balle", // Screen messages showing amount and direction of shot deviation. + L"Réinitialiser TOUTES les options du jeu", // failsafe show/hide option to reset all options + L"Voulez-vous vraiment réinitialiser ?", // a do once and reset self option (button like effect) + L"Autres Options de débug", // allow debugging in release or mapeditor + L"Afficher les options de débug", // an example option that will show/hide other options + L"Afficher zones souris activables", // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Activez cette option pour entendre vos mercenaires lorsqu'ils parlent.", + + //Mute Confirmation + L"Active/désactive les confirmations des mercenaires.", + + //Subtitles + L"Affichage des sous-titres à l'écran.", + + //Key to advance speech + L"Si les sous-titres s'affichent à l'écran,\ncette option vous permet de prendre le temps de les lire.", + + //Toggle smoke animation + L"Désactivez cette option, si votre machine n'est pas suffisamment puissante.", + + //Blood n Gore + L"Désactivez cette option, si le jeu vous paraît trop violent.", + + //Never move my mouse + L"Activez cette option pour que le curseur ne se place pas automatiquement sur les boutons qui s'affichent.", + + //Old selection method + L"Activez cette option pour retrouver vos automatismes de la version précédente.", + + //Show movement path + L"Activez cette option pour afficher le chemin suivi par les mercenaires.\nVous pouvez la désactiver et utiliser la touche |M|A|J en cours de jeu.", + + //show misses + L"Activez cette option pour voir où atterrissent tous vos tirs.", + + //Real Time Confirmation + L"Activez cette option pour afficher une confirmation de mouvement en temps réel.", + + //Sleep/Wake notification + L"Activez cette option pour être mis au courant de l'état de veille de vos mercenaires.", + + //Use the metric system + L"Activez cette option pour que le jeu utilise le système métrique.", + + //Highlight Mercs + L"Lorsqu'il est activé, le mercenaire est mis en surbrillance (invisible pour les ennemis).\nBasculer dans le jeu avec (|G)", + + //Smart cursor + L"Activez cette option pour que le curseur se positionne directement sur un mercenaire quand il est à proximité.", + + //snap cursor to the door + L"Activez cette option pour que le curseur se positionne directement sur une porte quand il est à proximité.", + + //glow items + L"Activez cette option pour mettre les objets en évidence. (|C|T|R|L+|A|L|T+||I)", + + //toggle tree tops + L"Activez cette option pour afficher la cime des arbres. (|T)", + + //smart tree tops + L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate + + //toggle wireframe + L"Activez cette option pour afficher les murs en fil de fer. (|C|T|R|L+|A|L|T+||W)", + + L"Activez cette option pour afficher le curseur toit. (|Début)", + + // Options for 1.13 + L"Si activé, affiche une barre de probabilités de succès sur le curseur.", + L"Si activé, les rafales de lance-grenades ont un curseur de rafale.", + L"Si activé, les ennemis feront de temps en temps des remarques sur certaines actions.", // Changed from Enemies Drop All Items - SANDRO + L"Si activé, les grenades des lance-grenades ont un grand angle (|A|l|t+|Q).", + L"Si activé, le mode tour par tour ne sera pas actif, si vous n'êtes pas vu ou entendu par l'ennemi à moins d'appuyer sur |C|t|r+|X.", // Changed from Restrict Extra Aim Levels - SANDRO + L"Si activé, |E|S|P|A|C|E sélectionne l'escouade suivante.", + L"Si activé, les ombres d'objets sont affichées.", + L"Si activé, la portée des armes est affichée en nombres de cases.", + L"Si activé, les effets de traçantes sont affichés pour les tirs simples.", + L"Si activé, le son de pluie est audible quand il pleut.", + L"Si activé, les corbeaux sont présents dans le jeu.", + L"Si activé, une fenêtre info-bulle apparaît lorsque vous appuyez sur |A|L|T et que le curseur est sur un ennemi.", + L"Si activé, le jeu est sauvegardé à chaque nouveau tour du joueur.", + L"Si activé, les confirmations insistantes de Skyrider cessent.", + 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+|T).", // add forced turn mode + L"Si activé, la carte stratégique sera colorée différemment selon l'exploration.", + L"Si activé, le graphisme des tirs alternatifs sera affiché quand vous tirerez.", + L"When ON, mercenary body graphic can change along with equipped gear.", // TODO.Translate + L"Si activée, le grade sera affiché devant le nom du merc. dans la carte stratégique.", + L"Si activé, vous verrez l'équipement du mercenaire à travers son portrait.", + L"Si activé, vous verrez les icônes 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é, les mercenaires ne feront pas de compte rendu des progrès pendant la formation.", + L"Si activé, les mercenaires ne feront pas de compte rendu des progrès sur les réparations.", + L"Si activé, les mercenaires ne feront pas de compte rendu des progrès sur les soins.", + L"Si activé, les tours de l'IA seront plus rapides.", + L"Si activé, les zombis seront présents. Soyez au courant !", // allow zombies + L"Si activé, ouvrir inventaire d'un mercenaire et celui du secteur.\nClic gauche sur un emplacement vide inv/obj/arme et une fenêtre \nproposera des choix.", + L"Si activé, la zone où se trouve le reste des ennemis dans le secteur, est mis en évidence.", + L"Si activé, montre le contenu d'un élément LBE quand la fenêtre de description est ouverte.", + L"Si activé, inverse le sens de la molette de la souris.", + L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate + L"When ON, shows last known enemy location.", //TODO.Translate + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Forcer tous les envois en attente de Bobby Ray", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g : Si activé, annoncera la distance de déviation de chaque tir à partir\ndu centre de la cible, en prenant en compte tous les facteurs du NSCDT.", + L"Cliquer ici pour corriger les paramètres de jeu corrompus", // failsafe show/hide option to reset all options + L"Cliquer ici pour corriger les paramètres de jeu corrompus", // a do once and reset self option (button like effect) + L"Autoriser les options de debug dans les releases ou les mapeditor", // allow debugging in release or mapeditor + L"Activer pour afficher les options de debug", // an example option that will show/hide other options + L"Essaye de rendre visible les zones souris en les encadrant", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + + +STR16 gzGIOScreenText[] = +{ + L"CONFIGURATION DU JEU", +#ifdef JA2UB + L"Texte de Manuel aléatoire", + L"Non", + L"Oui", +#else + L"Style de jeu", + L"Réaliste", + L"S-F", +#endif + L"Platinum", //Placeholder English + L"Armes disponibles", + L"Toutes", + L"Quelques-unes", + L"Difficulté", + L"Novice", + L"Expérimenté", + L"Expert", + L"INCROYABLE", + L"Commencer", + L"Annuler", + L"En combat", + L"Sauv. à volonté", + L"Iron Man", + L"Désactivé pour la démo", + L"Qualité de Bobby Ray", + L"Bonne", + L"Meilleure", + L"Excellente", + L"Superbe", + L"Inventaire/Accessoire", + L"NON UTILISÉ", + L"NON UTILISÉ", + L"Charge jeu multi", + L"CONFIGURATION DU JEU (Les paramètres serveur seulement prennent effet)", + // Added by SANDRO + L"Compétences (Traits)", + L"Anciennnes", + L"Nouvelles", + L"Nombre max. de merc IMP", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Objets lâchés par l'ennemi", + L"Non", + L"Oui", +#ifdef JA2UB + L"John et Tex", + L"Aléatoire", + L"Les deux", +#else + L"Nombre de terroristes", + L"Aléatoire", + L"Tous", +#endif + L"Cachettes d'armes secrètes", + L"Aléatoire", + L"Toutes", + L"Progression des objets", + L"Très lente", + L"Lente", + L"Normal", + L"Rapide", + L"Très rapide", + L"Ancien/Ancien", + L"Nouveau/Ancien", + L"Nouveau/Nouveau", + + // Squad Size + L"Taille max. de l'escouade", + L"6", + L"8", + L"10", + //L"Faster Bobby Ray Shipments", + L"Coût de l'inventaire en PA", + + L"Nouv. syst. chance de toucher", + L"Syst. amélioré d'interruption", + L"Passif des mercenaires", + L"Système alimentaire", + L"Stock de Bobby Ray", + + // anv: extra iron man modes + L"Soft Iron Man", // TODO.Translate + L"Extreme Iron Man", // TODO.Translate +}; + +STR16 gzMPJScreenText[] = +{ + L"MULTIJOUEURS", + L"Rejoindre", + L"Héberger", + L"Annuler", + L"Rafraichir", + L"Nom du joueur", + L"IP du serveur", + L"Port", + L"nom du serveur", + L"# Plrs", + L"Version", + L"Type de jeu", + L"Ping", + L"Vous devez entrer un nom de joueur", + L"Vous devez entrer une adresse IP de serveur valide. Par exemple : 84.114.195.239", + L"Vous devez entrer un port de serveur valide entre 1 et 65535.", +}; + + +STR16 gzMPJHelpText[] = +{ + L"Visiter http://webchat.quakenet.org/?channels=ja2-multiplayer pour trouver d'autres joueurs.", + L"Vous pouvez appuyer sur 'y' pour ouvrir la fenêtre de chat ingame, après avoir été connecté au serveur.", + + L"HÉBERGER", + L"Entrer '127.0.0.1' pour l'IP et un nombre plus grand que 60000 pour le port.", + L"Assurez vous que les ports (UDP, TCP) sont ouverts sur votre routeur. Pour plus d'informations visitez : http://portforward.com", + L"Vous devez envoyer (via IRC, MSN, ICQ, etc.) votre IP externe (http://www.whatismyip.com) et votre numéro de port aux autres joueurs.", + L"Cliquez sur \"Héberger\" pour héberger une nouvelle partie en multijoueurs.", + + L"REJOINDRE", + L"L'hébergeur doit vous envoyer (via IRC, MSN, ICQ, etc.) son IP externe ansi que son numéro de port.", + L"Entrez l'IP externe ainsi que le port du serveur.", + L"Cliquer sur \"Rejoindre\" pour rejoindre une partie multijoueurs déjà existante.", +}; + +STR16 gzMPHScreenText[] = +{ + L"HÉBERGER", + L"Commencer", + L"Annuler", + L"Nom du serveur", + L"Type de jeu", + L"À mort", + L"À mort/Équipe", + L"Coopératif", + L"Joueurs max.", + L"Mercs max.", + L"Sélection mercenaire", + L"Mercenaire embauché", + L"Embauché par les joueurs", + L"Départ avec argent", + L"Autoriser l'embauche d'un même mercenaire", + L"Reporter les mercenaires embauchés", + L"Bobby Ray", + L"Bord de départ", + L"Vous devez entrer un nom de serveur", + L"", + L"", + L"Départs", + L"", + L"", + L"Dégâts des armes", + L"", + L"Tounures prévues", + L"", + L"Activer les civils en CO-OP", + L"", + L"Maximum d'ennemis en CO-OP", + L"Synchroniser le répertoire du jeu", + L"MP Sync. Directory", + L"Vous devez entrer un répertoire de transfert de fichier.", + L"(Utilisez '/' au lieu '\\' pour délimiter les dossiers.)", + L"Le répertoire de synchronisation indiqué n'existe pas.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Oui", + L"Non", + // Starting Time + L"Matin", + L"Après-midi", + L"Nuit", + // Starting Cash + L"Faible", + L"Moyen", + L"Haut", + L"Illimité", + // Time Turns + L"Jamais", + L"Lent", + L"Moyen", + L"Rapide", + // Weapon Damage + L"Très lent", + L"Lent", + L"Normal", + // Merc Hire + L"Aléatoire", + L"Normal", + // Sector Edge + L"Aléatoire", + L"Sélectionnable", + // Bobby Ray / Hire same merc + L"Désactiver", + L"Autoriser", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Austin", //Austin, Texas, USA + L"Bagdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"Hong Kong", //Hong Kong, Hong Kong + L"Beyrouth", //Beirut, Lebanon (Middle East) + L"Londres", //London, England + L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Métavira", //The island of Metavira was the fictional location used by JA1 + L"Miami", //Miami, Florida, USA (SE corner of USA) + L"Moscou", //Moscow, USSR + L"New-York", //New York, New York, USA + L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Paris", //Paris, France + L"Tripoli", //Tripoli, Libya (eastern Mediterranean) + L"Tokyo", //Tokyo, Japan + L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Êtes-vous sûr de vous ? Une valeur de ZÉRO signifie que vous serez INCAPABLE d'utiliser cette compétence.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"(8 Caractères Max)", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"Analyse", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"Nous vous remercions, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Voix", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"Mort(e)", + L"Renvoyé(e)", + L"Autre", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Personnel", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Pause", + L"Reprendre (|P|a|u|s|e)", + L"Pause (|P|a|u|s|e)", +}; + + +STR16 pMessageStrings[] = +{ + L"Quitter la partie ?", + L"OK", + L"OUI", + L"NON", + L"Annuler", + L"CONTRAT", + L"MENT", + L"Sans description", //Save slots that don't have a description. + L"Partie sauvegardée.", + L"Partie sauvegardée.", + L"QuickSave", //The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"Jour", + L"Mercs", + L"Vide", //An empty save game slot + L"Démo", //Demo of JA2 + L"Debug", //State of development of a project (JA2) that is a debug build + L"Version", //Release build for JA2 + L"CpM", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"min", //Abbreviation for minute. + L"m", //One character abbreviation for meter (metric distance measurement unit). + L"cart.", //Abbreviation for rounds (# of bullets) + L"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"lb", //Abbreviation for pounds (Imperial weight measurement unit) + L"Accueil", //Home as in homepage on the internet. + L"USD", //Abbreviation to US dollars + L"n/a", //Lowercase acronym for not applicable. + L"Entre-temps", //Meanwhile + L"%s est arrivée dans le secteur %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying + //SirTech + L"Version", + L"Emplacement de sauvegarde rapide vide", + L"Cet emplacement est réservé aux sauvegardes rapides effectuées depuis l'écran tactique (ALT+S).", + L"Ouverte", + L"Fermée", + L"Espace disque insuffisant. Il ne vous reste que %s Mo de libre et Jagged Alliance 2 nécessite %s Mo.", + L"%s embauché(e) sur le site AIM", + L"%s prend %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s a pris %s.", //'Merc name' has taken the drug + L"%s n'a aucune compétence médicale.",//'Merc name' has non medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"L'intégrité du jeu n'est plus assurée.", + L"ERREUR : CD-ROM manquant", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"Pas assez de place !", + + //Can't change stance due to objects in the way... + L"Impossible de changer de position ici.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Lâcher", + L"Lancer", + L"Donner", + + L"%s donné à %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"Impossible de donner %s à %s.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" combiné(s)]", + + //Cheat modes + L"Triche niveau 1", + L"Triche niveau 2", + + //Toggling various stealth modes + L"Escouade en mode discrétion.", + L"Escouade en mode normal.", + L"%s en mode discrétion.", + L"%s en mode normal.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Fil de fer activé.", + L"Fil de fer désactivé.", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Impossible de remonter...", + L"Pas de niveau inférieur...", + L"Entrer dans le sous-sol %d...", + L"Sortir du sous-sol...", + + L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Mode poursuite désactivé.", + L"Mode poursuite activé.", + L"Curseur toit désactivé.", + L"Curseur toit activé.", + L"Escouade %d active.", + L"Vous ne pouvez pas payer le salaire de %s qui se monte à %s.", //first %s is the mercs name, the seconds is a string containing the salary + L"Passer", + L"%s ne peut sortir seul.", + L"Une sauvegarde a été crée (Partie249.sav). Renommez-la (Partie01 - Partie10) pour pouvoir la charger ultérieurement.", + L"%s a bu %s.", + L"Un colis vient d'arriver à Drassen.", + L"%s devrait arriver au point d'entrée (secteur %s) au jour %d vers %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival + L"Historique mis à jour.", + L"Curseur de visée pour raf. gre. (Dispersion activée).", + L"Curseur de trajectoire raf. gre. (Dispersion desact.).", + L"Infobulle soldat activée", // Changed from Drop All On - SANDRO + L"Infobulle soldat désactivée", // 80 // Changed from Drop All Off - SANDRO + L"Petit angle pour lance-grenades", + L"Grand angle pour lance-grenades", + // forced turn mode strings + L"Mode tour par tour forcé", + L"Mode tour par tour normal", + L"Mode de combat quitté", + L"Mode tour par tour forcé activé, mode de combat activé", + L"Partie enregistrée dans l'emplacement de sauvegarde automatique.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. + L"Client", + + L"Vous ne pouvez pas utiliser l'ancien système d'inventaire et le nouveau système d'accessoire en même temps.", + + L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID + L"Cet emplacement est réservé pour les sauvegardes automatiques et peut être activé/désactivé dans ja2_options.ini (AUTO_SAVE_EVERY_N_HOURS).", //92 // The text, when the user clicks on the save screen on an auto save + L"Emplacement vide auto #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveJeu", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"Save fin-tour #", // 95 // The text for the tactical end turn auto save + L"Enregistrement auto #", // 96 // The message box, when doing auto save + L"Enregistrement", // 97 // The message box, when doing end turn auto save + L"Emplacement fin-tour vide #", // 98 // The message box, when doing auto save + L"Cet emplacement est réservé pour les sauvegardes fin-tour et peut être activé/désactivé dans l'écran option.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) + L"Verrouiller le curseur pour qu'il reste dans la fenêtre.", // 104 + L"Libérer le curseur pour qu'il se déplace hors de la fenêtre.", // 105 + L"Déplacement tactique activé", + L"Déplacement tactique désactivé", + L"Éclairage du mercenaire activé", + L"Éclairage du mercenaire désactivé", + L"Squad %s active.", //TODO.Translate + L"%s smoked %s.", + L"Activate cheats?", + L"Deactivate cheats?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"OK", + L"Défilement haut", + L"Tout sélectionner", + L"Défilement bas", + L"Annuler", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s est trop loin pour être soigné.", + L"Impossible de soigner tout le monde.", +}; + +STR16 pMilitiaButtonsHelpText[] = +{ + L"Prendre (Clic droit)/poser (Clic gauche) Miliciens", // button help text informing player they can pick up or drop militia with this button + L"Prendre (Clic droit)/poser (Clic gauche) Soldats", + L"Prendre (Clic droit)/poser (Clic gauche) Vétérans", + L"Répartition automatique", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Allez sur le site de l'AIM et engagez des mercenaires (*Conseil* allez voir dans le Poste de travail)", // to inform the player to hired some mercs to get things going +#ifdef JA2UB + L"Cliquez sur le bouton de compression du temps pour faire avancer votre escouade sur le terrain.", // to inform the player to hit time compression to get the game underway +#else + L"Cliquez sur le bouton de compression du temps pour faire avancer votre escouade sur le terrain.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Erreur. Fichier manquant ou corrompu. L'application va s'arrêter.", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"Voir messages", + L"Consulter les sites Internet", + L"Consulter les documents attachés", + L"Lire le compte-rendu", + L"Afficher les infos de l'escouade", + L"Afficher les états financiers", + L"Fermer le Poste de travail", + + //Bottom task bar icons (if they exist): + L"Vous avez de nouveaux messages", + L"Vous avez reçu de nouveaux fichiers", + + //Bookmarks: + L"Association Internationale des Mercenaires", + L"Bobby Ray : Petits et Gros Calibres", + L"Institut des Mercenaires Professionnels", + L"Mouvement pour l'Entraînement et le Recrutement des Commandos", + L"Morgue McGillicutty", + L"Service des Fleuristes Associés", + L"Courtiers d'Assurance des Mercenaires de l'AIM", + //New Bookmarks + L"", + L"Encyclopédie", + L"Salle de briefing", + L"Comptes rendus", + L"Mercenaries Love or Dislike You", // TODO.Translate + L"World Health Organization", + L"Kerberus - Experience In Security", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services", // TODO.Translate + L"Controlled factories", // TODO.Translate +}; + + +STR16 gzHelpScreenText[] = +{ + L"Quitter l'écran d'aide", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"Vous êtes en plein combat. Vous pouvez donner l'ordre de retraite depuis l'écran tactique.", + L"Pénétrez dans le secteur pour reprendre le cours du combat. (|E)", + L"Résolution automatique du combat. (|A)", + L"Résolution automatique impossible lorsque vous êtes l'attaquant.", + L"Résolution automatique impossible lorsque vous êtes pris en embuscade.", + L"Résolution automatique impossible lorsque vous combattez des créatures dans les mines.", + L"Résolution automatique impossible en présence de civils hostiles.", + L"Résolution automatique impossible en présence de chats sauvages.", + L"COMBAT EN COURS", + L"Retraite impossible.", +}; + +STR16 gzMiscString[] = +{ + L"Votre milice continue le combat sans vos mercenaires...", + L"Ce véhicule n'a plus besoin de carburant pour le moment.", + L"Le réservoir est plein à %d%%.", + L"L'armée de Deidranna a repris le contrôle de %s.", + L"Vous avez perdu un site de ravitaillement.", +}; + +STR16 gzIntroScreen[] = +{ + L"Vidéo d'introduction introuvable", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s entend un bruit de %s %s.", + L"%s entend un bruit %s de MOUVEMENT %s.", + L"%s entend un GRINCEMENT %s %s.", + L"%s entend un CLAPOTIS %s %s.", + L"%s entend un IMPACT %s %s.", + L"%s entend un COUP DE FEU %s %s.", // anv: without this, all further noise notifications were off by 1! + L"%s entend une EXPLOSION %s %s.", + L"%s entend un CRI %s %s.", + L"%s entend un IMPACT %s %s.", + L"%s entend un IMPACT %s %s.", + L"%s entend un BRUIT %s %s.", + L"%s entend un BRUIT %s %s.", + L"", // anv: placeholder for silent alarm + L"%s entend une VOIX %s %s.", // anv: report enemy taunt to player +}; + + +STR16 pTauntUnknownVoice[] = +{ + L"Voix inconnue", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Tri par nom (|F|1)", + L"Tri par affectation (|F|2)", + L"Tri par état de veille (|F|3)", + L"Tri par lieu (|F|4)", + L"Tri par destination (|F|5)", + L"Tri par date de départ (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"Erreur 404", + L"Site introuvable.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"Derniers envois", + L"Commande #", + L"Quantité d'objets", + L"Commandé", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"Programmeur", // Chris Camfield + L"Co-designer/Écrivain", // Shaun Lyng + L"Systèmes stratégiques & Programmeur", //Kris Marnes + L"Producteur/Co-designer", // Ian Currie + L"Co-designer/Conception des cartes", // Linda Currie + L"Artiste", // Eric \"WTF\" Cheng + L"Coordination, Assistance", // Lynn Holowka + L"Artiste Extraordinaire", // Norman \"NRG\" Olsen + L"Gourou du son", // George Brooks + L"Conception écrans/Artiste", // Andrew Stacey + L"Artiste en chef/Animateur", // Scot Loving + L"Programmeur en chef", // Andrew \"Big Cheese Doddle\" Emmons + L"Programmeur", // Dave French + L"Systèmes stratégiques & Programmeur", // Alex Meduna + L"Portraits", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(ah, la ponctuation...)", // Shaun Lyng + L"(\"C'est bon, trois fois rien\")", //Kris \"The Cow Rape Man\" Marnes + L"(j'ai passé l'âge)", // Ian Currie + L"(et en plus je bosse sur Wizardry 8)", // Linda Currie + L"(on m'a forcé !)", // Eric \"WTF\" Cheng + L"(partie en cours de route...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(Tête de mort et fou de jazz)", // Andrew Stacey + L"(en fait il s'appelle Robert)", // Scot Loving + L"(la seule personne un peu responsable de l'équipe)", // Andrew \"Big Cheese Doddle\" Emmons + L"(bon, je vais pouvoir réparer ma moto)", // Dave French + L"(piqué à l'équipe de Wizardry 8)", // Alex Meduna + L"(conception des objets et des écrans de chargement !)", // Joey \"Joeker\" Whelan", +}; + +STR16 sRepairsDoneString[] = +{ + L"%s a terminé la réparation de ses objets.", + L"%s a terminé la réparation des armes & protections.", + L"%s a terminé la réparation des objets portés.", + L"%s a fini de réparer les grands objets portés par chacun.", + L"%s a fini de réparer les moyens objets portés par chacun.", + L"%s a fini de réparer les petits objets portés par chacun.", + L"%s a fini de réparer le mécanisme LBE de chacun.", + L"%s finished cleaning everyone's guns.", // TODO.Translate +}; + +STR16 zGioDifConfirmText[]= +{ + L"Vous avez choisi le mode de difficulté NOVICE. Ce mode de jeu est conseillé pour les joueurs qui découvrent Jagged Alliance, qui n'ont pas l'habitude de jouer à des jeux de stratégie ou qui souhaitent que les combats ne durent pas trop longtemps. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode Novice ?", + L"Vous avez choisi le mode de difficulté EXPÉRIMENTE. Ce mode de jeu est conseillé pour les joueurs qui ont déjà joué à Jagged Alliance ou des jeux de stratégie. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode Expérimenté ?", + L"Vous avez choisi le mode de difficulté EXPERT. Vous aurez été prévenu. Ne venez pas vous plaindre, si vos mercenaires quittent Arulco dans un cerceuil. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode Expert ?", + L"Vous avez choisi le mode de difficulté INCROYABLE. ATTENTION : Ne venez pas vous plaindre, si vos mercenaires quittent Arulco en petits morceaux... Deidranna va vous tuer. À coup sûr. Ce choix influe sur de nombreux paramètres du jeu. Êtes-vous certain de vouloir jouer en mode INCROYABLE ?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"Données de l'écran de chargement de %S introuvables...", + + //1-5 + L"Le robot ne peut quitter ce secteur par lui-même.", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"Compression du temps impossible. C'est bientôt le feu d'artifice !", + + //'Name' refuses to move. + L"%s refuse d'avancer.", + + //%s a merc name + L"%s n'a pas assez d'énergie pour changer de position.", + + //A message that pops up when a vehicle runs out of gas. + L"%s n'a plus de carburant ; le véhicule est bloqué à %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"au-dessus", + L"en-dessous", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"Aucun de vos mercenaires n'a de compétence médicale.", + L"Plus de bandages !", + L"Pas assez de bandages pour soigner tout le monde.", + L"Aucun de vos mercenaires n'a besoin de soins.", + L"Soins automatiques.", + L"Tous vos mercenaires ont été soignés.", + + //14 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + L"(toit)", + + L"Santé : %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d contre %d", + + L"Plus de place dans le %s !", //(ex "The ice cream truck is full") + + L"%s requiert des soins bien plus importants et/ou du repos.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s a été touché aux jambes ! Il ne peut plus se tenir debout !", + //Name can't speak right now. + L"%s ne peut pas parler pour le moment.", + + //22-24 plural versions + L"%d miliciens ont été promus vétérans.", + L"%d miliciens ont été promus soldats.", + L"%d soldats ont été promus vétérans.", + + //25 + L"Échanger", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s est devenu dingue !", + + //27-28 + //Messages why a player can't time compress. + L"Nous vous déconseillons d'utiliser la compression du temps ; vous avez des mercenaires dans le secteur %s.", + L"Nous vous déconseillons d'utiliser la compression du temps lorsque vos mercenaires se trouvent dans des mines infestées de créatures.", + + //29-31 singular versions + L"1 milicien a été promu vétéran.", + L"1 milicien a été promu soldat.", + L"1 soldat a été promu vétéran.", + + //32-34 + L"%s ne dit rien.", + L"Revenir à la surface ?", + L"(Escouade %d)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s a réparé pour %s : %s",//inverted order !!! Red has repaired the MP5 of Scope + + //36 + L"Chat", // Max. 9 Characters. Should be "bloodcat". + + //37-38 "Name trips and falls" + L"%s trébuche et tombe", + L"Cet objet ne peut être pris d'ici.", + + //39 + L"Il ne vous reste aucun mercenaire en état de se battre. La milice combattra les créatures seule.", + + //40-43 + //%s is the name of merc. + L"%s n'a plus de trousse de soins !", + L"%s n'a aucune compétence médicale !", + L"%s n'a plus de caisse à outils !", + L"%s n'a aucune compétence en mécanique !", + + //44-45 + L"Temps de réparation", + L"%s ne peut pas voir cette personne.", + + //46-48 + L"Le prolongateur de %s est tombé !", + L"Seulement %d personnes sont autorisées dans ce secteur pour former la milice mobile.", + L"Êtes-vous sûr ?", + + //49-50 + L"Compression du temps", + L"Le réservoir est plein.", + + //51-52 Fast help text in mapscreen. + L"Compression du temps (|E|S|P|A|C|E)", + L"Arrêt de la compression du temps (|E|C|H|A|P)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s a désenrayé : %s", + L"%s a désenrayé pour %s : %s",//inverted !!! magic has unjammed the g11 of raven + + //55 + L"Compression du temps impossible dans l'écran d'inventaire.", + + L"Le CD Play de Jagged Alliance 2 est introuvable. L'application va se terminer.", + + L"Objets associés.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Actuel/Maximum : %d%%/%d%%", + + L"Escorter John et Mary ?", + + //60 + L"Interrupteur activé.", + + L"%s : attachement de protection détruit !", + L"%s tire %d fois de plus que prévu !", + L"%s tire 1 fois de plus que prévu !", + + L"Vous devez d'abord fermer la fenêtre de description !", + + L"Compression du temps impossible avec des civils hostiles et/ou des chats sauvages dans ce secteur. ", // 65 +}; + +STR16 gzCWStrings[] = +{ + L"Faut-il appelez des renforts pour %s dans les secteurs adjacents ?", +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Emplacement : %d\n", + L"%s|Luminosité : %d/%d\n", + L"%s|Distance de la |Cible : %d\n", + L"%s|I|D : %d\n", + L"%s|Ordres : %d\n", + L"%s|Attitude : %d\n", + L"%s|P|A |Actuel : %d\n", + L"%s|Santé |Actuelle : %d\n", + L"%s|Énergie |Actuelle : %d\n", + L"%s|Moral |Actuel : %d\n", + L"%s|C|hoc |Actuel : %d\n", + L"%s|V|aleur de |S|uppression |Actuelle : %d\n", + // Full info + L"%s|Casque : %s\n", + L"%s|Veste : %s\n", + L"%s|Pantalon : %s\n", + // Limited, Basic + L"|Protection : ", + L"casque", + L"veste", + L"pantalon", + L"oui", + L"pas de protection", + L"%s|L|V|N : %s\n", + L"Pas de lunette de vision de nuit", + L"%s|Masque à |Gaz : %s\n", + L"pas de masque à gaz", + L"%s|Emplacement |1 |tête : %s\n", + L"%s|Emplacement |2 |tête : %s\n", + L"\n(dans le sac de transport) ", + L"%s|Arme : %s ", + L"pas d'arme", + L"Pistolet", + L"PM", + L"Fusil", + L"FM", + L"Fusil à pompe", + L"Arme blanche", + L"Armes lourdes", + L"pas de casque", + L"pas de veste", + L"pas de pantalon", + L"|Protection : %s\n", + // Added - SANDRO + L"%s|Compétence 1 : %s\n", + L"%s|Compétence 2 : %s\n", + L"%s|Compétence 3 : %s\n", + // Additional suppression effects - sevenfm + L"%s|P|A perdu(s) en raison de |S|uppression : %d\n", + L"%s|Tolérance de |Suppression : %d\n", + L"%s|Niveau |Effectif du |C|hoc : %d\n", + L"%s|Moral de l'|I|A : %d\n", +}; + +STR16 New113Message[] = +{ + L"La tempête débute.", + L"La tempête est finie.", + L"Il commence à pleuvoir.", + L"La pluie cesse.", + L"Attention aux tireurs isolés...", + L"Tir de couverture !", + L"RAF.", + L"AUTO", + L"LG", + L"RAF. LG", + L"LG AUTO", + L"S/CA", + L"S/CA R", + L"S/CA A", + L"BAÏONNETTE", + L"Tireur embusqué !", + L"Impossible de partager l'argent avec un objet sélectionné.", + L"Arrivée de nouvelles recrues est déroutée au secteur %s, car le point d'arrivée prévu %s est sous contrôle ennemi.", + L"Article supprimé", + L"A supprimé tous les articles de ce type", + L"Article vendu", + L"A vendu tous les articles de ce type", + L"Vous devriez vérifier si votre accessoire de vision convient bien à ce type de lieu", + // Real Time Mode messages + L"Encore en combat", + L"pas d'ennemi en vue", + L"Mode discrétion en temps réel désactivé", + L"Mode discrétion en temps réel activé", + L"Ennemis repérés !", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s a réussi son vol !", + L"%s n'avait pas assez de points d'action pour voler tous les articles choisis.", + L"Voulez-vous faire de la chirurgie sur %s avant de le bander ? (Vous pouvez lui guérir %i santé.)", + L"Voulez-vous faire de la chirurgie sur %s ? (Vous pouvez lui guérir %i santé.)", + L"Voulez-vous lui faire les premiers soins d'abord ? (%i patient(s))", + L"Voulez-vous faire les premiers soins sur ce patient d'abord ?", + L"Appliquez les premiers soins automatiquement avec chirurgie ou sans ?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"La chirurgie sur %s est finie.", + L"%s est touché(e) au torse et perd un maximum de points de vie !", + L"%s est touché(e) au torse et perd %d points de vie !", + L"%s est devenu(e) aveugle par le souffle de l'explosion !", + L"%s a regagné 1 point sur les %s perdus", + L"%s a regagné %d points sur les %s perdus", + L"Vos compétences de reconnaissance vous ont empêchés d'être pris en embuscade par l'ennemi !", + L"Grâce à vos compétences de reconnaissance vous avez réussi à éviter un groupe de félins !", + L"%s est frappé à l'aine et tombe de douleur !", + ////////////////////////////////////////////////////////////////////////////////////// + L"Attention : Cadavre ennemi trouvé !!!", + L"%s [%d cart]\n%s %1.1f %s", + L"PA insuffisant ! Coût %d et vous avez %d.", + L"Astuce : %s", + L"Moral du joueur : %d - Moral de l'ennemi : %6.0f", // Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"Compétence inutilisable dans ces conditions !", + L"Impossible de construire pendant que des ennemis sont dans le secteur !", + L"Impossible de faire un repérage radio à cet endroit !", + L"Numéro de grille incorrect pour un tir d'artillerie !", + L"Les fréquences radio sont brouillées. Pas de communications possibles !", + L"L'action radio a échoué !", + L"Pas assez d'obus de mortier dans le secteur pour un tir de barrage !", + L"Aucun obus éclairant trouvé dans Items.xml !", + L"No High-Explosive shell item found in Items.xml!", + L"Aucun mortier trouvé, tir de barrage impossible !", + L"Brouillage radio déjà en cours, inutile d'en lancer un autre !", + L"Écoute des sons alentour déjà en cours, inutile d'en lancer une autre !", + L"Repérage radio déjà en cours, inutile d'en lancer un autre !", + L"Balayage des fréquences déjà en cours, inutile d'en lancer un autre !", + L"%s n'a pas pu appliquer %s à %s.", + L"%s demande des renforts depuis %s.", + L"%s a épuisé la batterie de sa radio.", + L"une radio", + L"des jumelles", + L"de la patience", + L"%s's shield has been destroyed!", // TODO.Translate + L" DELAY", // TODO.Translate + L"Yes*", + L"Yes", + L"No", + L"%s applied %s to %s.", // TODO.Translate +}; + +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s sombre dans la peur !", + L"%s est cloué(e) au sol !", + L"%s tire plus de fois que désiré !", + L"Vous ne pouvez pas former de milice dans ce secteur.", + L"La milice prend %s.", + L"Vous ne pouvez pas former de milice, alors que des ennemis sont présents !", + // 6 - 10 + L"%s n'a pas assez de points en commandement pour former la milice.", + L"Seulement %d personnes sont autorisées dans ce secteur pour former la milice mobile.", + L"Aucune case de libre à %s ou autour pour de nouvelles milices mobiles !", + L"Vous devez avoir %d villes de milice dans chaque secteur libéré de %s pour pouvoir former une milice mobile.", + L"Aucune affectation ne peut être faite tant que les ennemis sont présents !", + // 11 - 15 + L"%s n'a pas assez en sagesse pour être affecté(e) à cette installation.", + L"L'installation : %s est déjà entièrement pourvue en personnel.", + L"Cela va coûter %d $ par heure pour cette affectation. Voulez-vous continuer ?", + L"À ce jour, vous n'avez pas assez d'argent pour payer toutes vos dépenses. Vos %d $ ont déjà été versés, mais vous devez encore %d $. Les habitants ne sont pas très patients...", + L"À ce jour, vous n'avez pas assez d'argent pour payer toutes vos dépenses. Vous devez %d $. Les habitants ne sont pas très patients...", + // 16 - 20 + L"Vous avez une dette échue de %d $ et pas d'argent pour la régler !", + L"Vous avez une dette échue de %d $. Vous ne pouvez pas donner cette affectation avant que vous n'ayez assez d'argent pour régler la dette entière.", + L"Vous avez une dette échue de %d $. Voulez-vous payer ?", + L"N/A à ce secteur", + L"Coût quotidien", + // 21 - 25 + L"Fonds insuffisants pour payer toute la milice enrôlée ! %d membres de la milice sont partis pour rentrer chez eux.", + L"Pour voir la description d'un objet pendant un combat, vous devez d'abord le prendre vous-même.", // HAM 5 + L"Pour attacher un objet à un autre pendant un combat, vous devez d'abord les prendre vous-même.", // HAM 5 + L"Pour combiner deux objets pendant un combat, vous devez d'abord les prendre vous-même.", // HAM 5 +}; + +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"Aucun choix disponible", + L"%s a été séparé(e) en plusieurs morceaux.", + L"%s a été séparé(e) en plusieurs morceaux. %s les a récupérés dans son inventaire.", + L"Il n'y avait pas suffisamment de place dans l'inventaire après la transformation, %s a dû poser des objets au sol.", + L"%s a été séparé(e) en plusieurs morceaux. Il n'y avait pas suffisamment de place dans l'inventaire, %s a dû poser des objets au sol.", + L"Voulez-vous transformer les %d objets dans ce tas ? (Pour transformer un seul objet, retirez-le du tas d'abord)", + // 6 - 10 + L"Compléter l'inventaire", + L"Conditionner en chargeurs %d coups", + L"%s a été conditionné en %d chargeurs %d coups.", + L"%s a été réparti dans l'inventaire de : %s.", + L"%s n'a plus de place dans son inventaire pour des chargeurs de ce calibre !", + L"Instant mode", // TODO.Translate + L"Delayed mode", + L"Instant mode (%d AP)", + L"Delayed mode (%d AP)", +}; + +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Nous vous informons que de par ses perfomances passées, Gaston voit ses honoraires augmentés. Personellement, je ne suis pas surpris. ± ± Kline Speck T ± ", + // Stogie: Text from Line 43 in Email.edt + L"Soyez informé qu'à paritr de maintenant, les honoraires de Stogie ont augmenté en accord avec ses compétences. ± ± Kline Speck T. ± ", + // Tex: Text from Line 45 in Email.edt + L"Sachez que l'expérience de Tex lui autorise une promotion. Son salaire a donc été ajusté pour refléter sa vraie valeur. ± ± Kline Speck T. ± ", + // Biggins: Text from Line 49 in Email.edt + L"Prenez note. De par ses performances accrues, Biggins voit le prix de ses services augmentés. ± ± Kline Speck T. ± ", +}; + +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk + L"TR du serveur AIM : Message de Kolesnikov Victor", + L"Salut. Ici Monk. Message reçu. Je suis disponible si vous voulez me voir. ± ± J’attends votre appel. ±", + + // Brain + L"TR du serveur AIM : Message de Allik Janno", + L"Je suis prêt à considérer votre offre. Il y a un temps et un lieu pour tout. ± ± Allik Janno ±", + + // Scream + L"TR du serveur AIM : Message de Vilde Lennart", + L"Vilde Lennart est maintenant disponible! ±", + + // Henning + L"TR du serveur AIM : Message de von Branitz Henning", + L"J’ai reçu votre message, merci. Pour parler d’embauche, contactez-moi sur le site web de l’AIM. ± ± Von Branitz Henning ±", + + // Luc + L"TR du serveur AIM : Message de Fabre Luc", + L"Message reçu, merci ! Je suis heureux de considérer votre proposition. Vous savez où me trouver. ± ± Au plaisir de vous entendre. ±", + + // Laura + L"TR du serveur AIM : Message du Dr Colin Laura", + L"Salutations ! Merci pour votre message, il semble intéressant. ± ± Visiter l’AIM à nouveau, je serais ravie d’en entendre plus. ± ± Cordialement ! ± ± Dr Colin Laura ±", + + // Grace + L"TR du serveur AIM : Message de Girelli Graziella", + L"Vous vouliez me contacter, mais vous n’avez pas réussi. ± ± Une réunion de famille. Je suis sûr que vous comprenez ? J’en ai maintenant assez de la famille et serais très heureuse si vous voulez me contacter de nouveau sur le site AIM. ± ± Ciao ! ±", + + // Rudolf + L"TR du serveur AIM : Message de Steiger Rudolf", + L"Vous savez combien j’ai d’appel par jour ? Tous les branleurs pensent pouvoir m’appeler. ± ± Mais je suis de retour, si vous avez quelque chose d’intéressant pour moi. ±", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"TR du serveur AIM : Message des disponibilités des mercs", + L"J'ai reçu votre message. J'attends votre appel. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Tireur d'élite : Des yeux de faucon, vous pouvez tirer les ailes d'une mouche à cent mètres ! ± ", + // Camouflage + L"Camouflage : Sans compter qu'à côté de vous, les buissons semblent synthétiques ! ± ", + // SANDRO - new strings for new traits added + // Ranger + L"Ranger : Vous êtes celui du désert du Texas, n'est-ce pas ! ± ", + // Gunslinger + L"Bandit : Avec un pistolet ou deux, vous pouvez être aussi mortel que Billy the Kid ! ± ", + // Squadleader + L"Commandant : Naturel leader et commandant, vous êtes le gros calibre, sans blague ! ± ", + // Technician + L"Technicien : Fixer des objets, retirer des pièges, poser des bombes, c'est ça votre boulot ! ± ", + // Doctor + L"Docteur : Vous pouvez faire une intervention chirurgicale avec un couteau suisse et un chewing gum et cela n'importe où ! ± ", + // Athletics + L"Athlétique : Votre vitesse et votre vitalité sont au top des possibilités actuelles ! ± ", + // Bodybuilding + L"Culturiste : Cette grande figure musclée qui ne peut pas être dominée, est en faite vous en réalité ! ± ", + // Demolitions + L"Sabotage : Vous pouvez réduire à néant toute une ville rien qu'avec des produits ménagers ! ± ", + // Scouting + L"Reconnaissance : Rien n'échappe à votre vigilance ! ± ", + // Covert ops + L"Déguisement : Vous ferez passer 007 pour un amateur ! ± ", + // Radio Operator + L"Opérateur radio : Votre maitrise des appareils de communication élargit le champs des compétences tactiques et stratégiques de votre équipe. ± ", + // Survival + L"Survival: Nature is a second home to you. ± ", // TODO.Translate +}; + +STR16 NewInvMessage[] = +{ + L"Le sac à dos ne peut être ramassé pour le moment", + L"Pas de place pour le sac à dos", + L"Sac à dos non trouvé", + L"La fermeture éclair fonctionne seulement en combat", + L"Ne peut se déplacer, si la fermeture éclair est ouverte", + L"Êtes-vous sûr de vouloir vendre tous les articles du secteur ?", + L"Êtes-vous sûr de vouloir supprimer tous les articles du secteur ?", + L"Ne peut pas escalader avec un sac à dos", + L"Tous les sacs à dos sont posés à terre", + L"Tous les sacs à dos sont ramassés", + L"%s drops backpack", + L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Initialisation du serveur RakNet...", + L"Le serveur a démarré, en attente de connexion...", + L"Vous devez maintenant vous connecter avec votre client sur le serveur en pressant '2'.", + L"Le serveur est déjà démarré.", + L"Le serveur n'a pas pu démarré. Terminé.", + // 5 + L"%d/%d clients sont déjà en mode realtime.", + L"Le serveur s'est déconnecté et s'est éteint.", + L"Le serveur n'est pas démarré.", + L"Les clients sont en cours de chargement, veuillez patienter...", + L"Vous ne pouvez pas changer de dropzone alors que le serveur vient de démarrer.", + // 10 + L"Fichier envoyé '%S' - 100/100", + L"Envoie de fichier fini pour '%S'.", + L"Départ d'envoie de fichier pour '%S'.", + L"Utilisez la vue aérienne pour sélectionner la carte que vous voulez jouer. Si vous voulez changer de carte, vous devez le faire avant de cliquer sur \"Démarrer la partie\".", +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Initialisation du client RakNet...", + L"Connexion à l'IP : %S ...", + L"Réception des optiosn de jeu :", + L"Vous êtes déjà connecté.", + L"Vous êtes déjà connecté...", + // 5 + L"Client #%d - '%S' a engagé '%s'.", + L"Client #%d - '%S' a engagé un autre mercenaire.", + L"Vous êtes prêt - Total prêts = %d/%d.", + L"Vous n'êtes pas encore prêts - Total prêt = %d/%d.", + L"Départ de bataille...", + // 10 + L"Client #%d - '%S' est prêt - Total prêts = %d/%d.", + L"Client #%d - '%S' n'est pas encore prêt - Total prêts = %d/%d", + L"Vous êtes prêt. En attente des autres clients... Cliquez sur 'OK', si vous n'êtes plus prêt.", + L"Laissez-nous, la bataille commence !", + L"Un client doit poser sa candidature pour démarrer la partie.", + // 15 + L"Le jeu ne peut démarrer. Aucun mercenaire n'a été engagé...", + L"En attente de 'OK' de la part du serveur pour ouvrir le portable...", + L"Interrompu", + L"Fin de l'interromption", + L"Coordonnées de réseau de souris :", + // 20 + L"X : %d, Y : %d", + L"Réseau numéro : %d", + L"Le serveur figure seulement", + L"Choissez les étapes à ignorer : ('1' - Activer portable/l'embauche) ('2' - lancer/charger level) ('3' - Unlock UI) ('4' - placement de finition)", + L"Secteur=%s, Clients max.=%d, Mercs max.=%d, Game_Mode=%d, Same Merc=%d, Multiplicateur de Dégâts=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Équip=%d, Dis Moral=%d, Testing=%d", + // 25 + L"", + L"Nouvelle conncetion : Client #%d - '%S'.", + L"Équipe : %d.",//not used any more + L"'%s' (client %d - '%S') a été tué par '%s' (client %d - '%S')", + L"Client kické #%d - '%S'", + // 30 + L"Début de manche pour les numéros de clients : #1: , #2: %S, #3: %S, #4: %S", + L"Début de manche pour le client #%d", + L"Requête pour le realtime...", + L"Commutation en mode realtime.", + L"Erreur lors de la commutation.", + // 35 + L"Dévérouiller le portable pour l'embauche ? (Tous les clients sont connectés ?)", + L"Le serveur a déverrouillé le portable pour l'embauche. Vous pouvez commencez a embauché !", + L"Interruption.", + L"Vous ne pouvez pas changer la dropzone, si vous êtes seulement un client et pas le gérant du serveur.", + L"Vous avez décliné l'offre de vous rendre, car vous êtes dans une partie multijoueur.", + // 40 + L"Tous vos mercenaires sont morts !", + L"Mode spectateur activé.", + L"Vous avez été vaincu !", + L"Désolé, escalader sur les toits est interdit en multijoueur.", + L"Vous avez embauché '%s'", + // 45 + L"Vous ne pouvez pas changer la carte une fois que l'achat a commencé", + L"Changement de carte : '%s'", + L"Le client '%s' s'est déconnecté, il a été retiré du jeu", + L"Vous avez été déconnecté du jeu, retourner au menu principal", + L"Connexion échouée, reconnexion dans 5 s. Encore %i tentatives...", + //50 + L"Connexion échouée, abandon de l'opération...", + L"Vous ne pouvez pas démarrer la partie tant qu'un autre joueur ne s'est pas connecté", + L"%s : %s", + L"Envoyer à tous", + L"Alliés seulement", + // 55 + L"Vous ne pouvez pas rejoindre cette partie car elle a déjà commencé.", + L"%s (équipe) : %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"Réception de tous les fichiers depuis le serveur.", + L"'%S' a fini de télécharger depuis le serveur.", + L"'%S' a commencé à télécharger depuis le serveur.", + L"Vous ne pouvez pas démarrer le jeu tant que tous les joueurs n'ont pas fini de recevoir les fichiers", + L"Ce serveur requiert des fichiers modifiés pour pouvoir jouer, voulez-vous continuer ?", + // 65 + L"Cliquez sur 'Ready' pour aller à l'écran tactique.", + L"Vous ne pouvez pas vous connecter car votre version %S est différente de celle du serveur %S.", + L"Vous avez tué un soldat ennemi.", + L"Vous ne pouvez pas commencer la partie car toutes les équipes sont les mêmes.", + L"Le serveur a choisi l'option du Nouvel Inventaire (NI), mais la résolution de votre écran ne le supporte pas.", + // 70 + L"Impossible de sauver les fichiers reçus '%S'", + L"La bombe de %s a été désamorcé par %s", + L"Vous avez perdu, quel honte !", // All over red rover + L"Mode spectateur désactivé", + L"Choisir le numéro du client a kické :", + // 75 + L"La team %s a été anéantie.", + L"Le client n'a pas réussi à démarrer. Terminé.", + L"Le client s'est déconnecté et s'est fermé.", + L"Le client n'est pas démarré.", + L"INFO : Si le jeu est bloqué (la barre de progression des adversaires ne se déplace pas), notifier le au serveur en appuyant sur ALT + E pour aller directement à votre tour de jeu !", + // 80 + L"Tour de l'IA - %d restant(s)", +}; + +STR16 gszMPEdgesText[] = +{ + L"N", + L"E", + L"S", + L"O", + L"C", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"Foxtrot", + L"Bravo", + L"Delta", + L"Charlie", + L"N/A", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Type de jeu : ", + L"Joueurs : ", + L"Merc pris : ", + L"Vous ne pouvez pas changer le bord de départ tant que le portable est ouvert.", + L"Vous ne pouvez pas changer d'équipe tant que le portable est ouvert.", + L"Merc aléatoire : ", + L"O", + L"Difficulté : ", + L"Version Serveur : ", +}; + +STR16 gzMPSScreenText[] = +{ + L"Tableaux des scores", + L"Continue", + L"Annulé", + L"Joueurs", + L"Tués", + L"Morts", + L"Armée de la Reine", + L"Touchés", + L"Ratés", + L"Précision", + L"Dégâts faits", + L"Dégâts reçus", + L"Attendez le serveur avant d'appuyer sur \"Continue\"." +}; + +STR16 gzMPCScreenText[] = +{ + L"Annulé", + L"Connexion au serveur", + L"Obtention des options du serveur", + L"Téléchargement des fichiers modifiés", + L"Appuyer sur \"ESC\" pour annulé ou \"Y\" pour parler", + L"Appuyer sur \"ESC\" pour annulé", + L"Prêt" +}; + +STR16 gzMPChatToggleText[] = +{ + L"Envoyer à tous", + L"Envoyer aux alliés seulement", +}; + +STR16 gzMPChatboxText[] = +{ + L"Chat multijoueurs", + L"\"ENTRÉE\" pour envoyer, \"ESC\" pour annuler", +}; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits + L"À la page suivante, vous allez choisir vos traits de compétence selon votre spécialisation professionnel comme un mercenaire. Pas plus de deux traits différents ou un trait expert peuvent être choisis.", + L"Vous pouvez aussi choisir seulement un ou même aucun trait, ce qui vous donnera un bonus à vos points d'attributs, une sorte de compensation. Notez que les compétences : mécanique, ambidextre et camouflage ne peuvent pas être prises aux niveaux experts.", + // For new major/minor traits + L"L'étape suivante est le choix de vos traits de compétences. À la première page vous pouvez choisir jusqu'à deux traits principaux qui représentent surtout votre rôle dans une escouade. Tandis qu'à la deuxième page, c'est la liste de vos traits mineurs qui représentent des exploits personnels.", + L"Pas plus de trois choix au total sont possibles. Ce qui signifie que si vous ne choisissez aucun trait principal, vous pourrez alors choisir trois traits secondaires. Si vous choisissez deux traits principaux (ou un en expert), vous pourrez alors choisir qu'un seul trait secondaire...", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Ajustez, s'il vous plaît, vos attributs physiques selon vos vraies capacités. Vous ne pouvez pas augmenter les scores au-dessus de", + L"IMP : Examen des attributs et compétences", + L"Points bonus :", + L"Départ au niveau", + // New strings for new traits + L"À la page suivante vous allez spécifier vos attributs physiques comme : la santé, la dextérité, l'agilité, la force et la sagesse. Les attributs ne peuvent pas aller plus bas que %d.", + L"Le reste est appelé \"habilités\" et à la différence des attributs, ils peuvent être mis à zéro signifiant que vous serez un incapable dans cette habilité !", + L"Tous les scores sont mis à un minimum au début. Notez que certains attributs sont mis a des valeurs spécifiques correspondant aux traits de compétence que vous avez choisis. Vous ne pouvez pas mettre ces attributs plus bas.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"IMP : Analyse du cacractère", + L"L'analyse de votre personnage est la prochaine étape. À la première page, on vous montrera une liste d'attitudes à choisir. Nous imaginons bien que vous pourriez vous identifier à plusieurs d'entre elles, mais vous ne pourrez en choisir qu'une seule. Choisissez celle qui vous correspond le plus.", + L"La deuxième page montre des handicaps que vous pourriez avoir. Si vous souffrez de n'importe lequel de ces handicaps, choisissez le (un seul choix est possible). Soyez honnête, pensez que c'est un entretien d'embauche et qu'il est toujours important de faire connaitre votre vraie personnalité.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Normal", + L"Amical", + L"Solitaire", + L"Optimiste", + L"Péssimiste", + L"Aggressif", + L"Arrogant", + L"Gros tireur", + L"Trou du cul", + L"Lâche", + L"IMP : Attitudes", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Sociable", + L"Solitaire", + L"Optimiste", + L"Assuré", + L"Intellectuel", + L"Primitif", + L"Aggressif", + L"Flegmatique", + L"Intrépide", + L"Pacifiste", + L"Malicieux", + L"Frimeur", + L"Coward", // TODO.Translate + L"IMP : Traits de caractère", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"IMP : Teint et musculature", + L"IMP : Couleurs", + L"Choisissez les couleurs respectives de votre peau, vos cheveux et vos habits. Ainsi que votre physionomie (traits physiques).", + L"Choisissez les couleurs respectives de votre peau, vos cheveux et vos habits.", + L"Cocher ici pour utiliser une prise en main alternative du fusil.", + L"\n(Attention : vous devez avoir une grande force pour l'utiliser.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Cheveux", + L"Teint", + L"T-shirt", + L"Pantalon", + L"Corps normal", + L"Corps musclé", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"Pas d'handicap", + L"Déteste la chaleur", + L"Nerveux", + L"Claustrophobe", + L"Mauvais nageur", + L"Peur des insectes", + L"Distrait", + L"Psychotique", + L"Mauvaise audition", + L"Mauvaise vue", + L"Hemophiliac", // TODO.Translate + L"Fear of Heights", + L"Self-Harming", + L"IMP : Handicaps", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] = +{ + L"Nous gageons que vous êtes heureux que ceci ne soit pas un message audio.", + L"Vous avez peut-être fréquenté trop de discothèques dans votre jeunesse ou vous avez été pris sous un bombardement... Ou vous êtes tout simplement vieux. Dans tous les cas, votre équipe ferait bien d'apprendre le langage des signes.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"Vous êtes foutu si vous perdez vos lunettes.", + L"C'est ce qui arrive lorsque l'on passe ses journées devant un écran. Vous auriez dû manger plus de carottes. Avez-vous déjà vu un lapin à lunettes ? Improbable, hein ?", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate +{ + L"Are you SURE this is the right job for you?", + L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate +{ + L"Let's just say you are a grounded person.", + L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Might want to make sure your knives are always clean.", + L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s n'a pas assez de force pour accomplir cette tâche.", + L"%s n'a pas assez de dextérité pour accomplir cette tâche.", + L"%s n'est pas assez agile pour accomplir cette tâche.", + L"%s n'est pas assez en bonne santé pour accomplir cette tâche.", + L"%s n'a pas assez de sagesse pour accomplir cette tâche.", + L"%s n'est pas assez bon tireur pour accomplir cette tâche.", + // 6 - 10 + L"%s n'est pas assez bon médecin pour accomplir cette tâche.", + L"%s n'est pas assez bon en mécanique pour accomplir cette tâche.", + L"%s n'est pas assez bon en commandement pour accomplir cette tâche.", + L"%s n'est pas assez bon en explosif pour accomplir cette tâche.", + L"%s n'a pas assez d'expérience pour accomplir cette tâche.", + // 11 - 15 + L"%s n'a pas assez de moral pour accomplir cette tâche.", + L"%s est trop épuisé pour effectuer cette tâche.", + L"Loyauté insuffisante à %s. Les habitants refusent de vous permettre de faire cette tâche.", + L"Il n'y a plus d'affectation possible pour : %s.", + L"Il n'y a plus d'affectation possible pour : %s.", + // 16 - 20 + L"%s n'a pas trouvé d'objets à réparer.", + L"%s a perdu %s, alors qu'il travaillait dans le secteur %s !", + L"%s a perdu %s, alors qu'il travaillait sur %s à %s !", + L"%s a été blessé, alors qu'il travaillait dans le secteur %s et nécessite des soins médicaux immédiats !", + L"%s a été blessé, alors qu'il travaillait %s à %s et nécessite des soins médicaux immédiats !", + // 21 - 25 + L"%s a été blessé, alors qu'il travaillait dans le secteur %s. Il ne semble pas être en trop mauvais état.", + L"%s a été blessé, alors qu'il travaillait sur %s à %s. Il ne semble pas être en trop mauvais état.", + L"Les résidents de %s semblent être excédés par la présence de %s.", + L"Les résidents de %s semblent être excédés par le travail de %s sur %s.", + L"Les actions de %s dans le secteur %s ont causé une perte de loyauté à travers la région !", + // 26 - 30 + L"Les actions de %s sur %s à %s ont causé une perte de loyauté à travers la région !", + L"%s est ivre.", // <--- This is a log message string. + L"%s est devenu gravement malade dans le secteur %s et commence à manquer à son devoir.", + L"%s est devenu gravement malade et ne peut continuer son travail sur %s à %s.", + L"%s a été blessé dans le secteur %s.", // <--- This is a log message string. + // 31 - 35 + L"%s a été gravement blessé dans le secteur %s.", //<--- This is a log message string. + L"Il y a actuellement des prisonniers qui ont connaissance de l'identité de : %s", + L"%s est actuellement trop connu(e) comme indic. Attendez au moins %d heures.", + + +}; + +STR16 gzFacilityRiskResultStrings[]= +{ + L"Force", + L"Agilité", + L"Dextérité", + L"Sagesse", + L"Santé", + L"Tir", + // 5-10 + L"Commandant", + L"Mécanique", + L"Médecin", + L"Explosif", +}; + +STR16 gzFacilityAssignmentStrings[]= +{ + L"AMBIENT", + L"Collecter renseignements", + L"Manger", + L"Repos", + L"Réparer les objets", + L"Réparer %s", // Vehicle name inserted here + L"Réparer le robot", + // 6-10 + L"Docteur", + L"Patient", + L"Apprendre Force", + L"Apprendre Dextérité", + L"Apprendre Agilité", + L"Apprendre Santé", + // 11-15 + L"Apprendre Tir", + L"Apprendre Médecin", + L"Apprendre Mécanique", + L"Apprendre Commandement", + L"Apprendre Explosif", + // 16-20 + L"Élève Force", + L"Élève Dextérité", + L"Élève Agilité", + L"Élève Santé", + L"Élève Tir", + // 21-25 + L"Élève Médecin", + L"Élève Mécanique", + L"Élève Commandement", + L"Élève Explosif", + L"Entraîneur Force", + // 26-30 + L"Entraîneur Dextérité", + L"Entraîneur Agilité", + L"Entraîneur Santé", + L"Entraîneur Tir", + L"Entraîneur Médecin", + // 30-35 + L"Entraîneur Mécanique", + L"Entraîneur Commandement", + L"Entraîneur Explosif", + L"Interroger prisonnier", // added by Flugente + L"Infiltré", + // 36-40 + L"Répand une propagande", + L"Fait de la propagande", // spread propaganda (globally) + L"Collecte les rumeurs", + L"Dirige la Milice", // militia movement orders +}; +STR16 Additional113Text[]= +{ + L"Jagged Alliance 2 v1.13 mode fenêtré exige une profondeur de couleur de 16 bit.", + L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate + L"Erreur interne en lisant %s emplacements depuis la sauvegarde : Le nombre d'emplacements dans la sauvegarde (%d) diffère des emplacements définis dans les paramètres de ja2_options.ini (%d)", + // WANNE: Savegame slots validation against INI file + L"Mercenaires (MAX_NUMBER_PLAYER_MERCS) / Véhicule (MAX_NUMBER_PLAYER_VEHICLES)", + L"Ennemis (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Créatures (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Milices (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Civils (MAX_NUMBER_CIVS_IN_TACTICAL)", +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +STR16 sEnemyTauntsFireGun[]= +{ + L"Suce-moi ça !", + L"Dis bonjour à ma pétoire !", + L"Viens par là !", + L"T'es à moi !", + L"Meurs !", + L"T'as peur enfoiré ?", + L"Ça va faire mal !", + L"Viens-là bâtard !", + L"Allez viens ! Je n'ai pas toute la vie !", + L"Viens voir papa !", + L"Je vais t'envoyer à six pieds sous terre dans peu de temps !", + L"Retourne chez ta mère, looserr !", + L"Hé, tu veux jouer ?", + L"T'aurais dû rester chez toi, salope !", + L"Enculé(e) !", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"C'est l'heure du barbecue !", + L"J'ai un cadeau pour toi !", + L"Paf !", + L"Souris, l'oiseau va sortir !", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Attrape !", + L"Et c'est parti !", + L"Prends-toi ça !", + L"Et un pour toi !", + L"Mouhahaha !", + L"Attrape ça sale porc !", + L"Ça va faire mal !", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"J'vais te trépaner !", + L"Viens voir papa !", + L"Montre-moi tes couilles !", + L"Je vais te découper en rondelles !", + L"Hannibal Lecter, ppfft tu ne me connais pas !", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"On est vraiment dans une grosse merde...", + L"Ils disent de rejoindre l'armée. Mais pas pour cette merde !", + L"J'en ai plein le cul !", + L"Oh mon Dieu !", + L"On n'est pas assez payé pour ce foutoir !", + L"C'est vraiment trop pour moi.", + L"Je vais chercher quelques potes !", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"T'as entendu !", + L"Qui est là ?", + L"Qu'est-ce que c'est ?", + L"Eh ! C'est quoi ce bordel ?", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"Ils sont là !", + L"Yeah, la partie peut commencer !", + L"J'espérais que ça n'arriverait jamais...", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"Aaaïe !", + L"Pouah !", + L"Ça... Ça fait mal !", + L"Enfoiré !", + L"Tu vas regret... uhh... ter ça.", + L"C'est quoi ce bordel ?", + L"Maintenant vous... m'avez énervé(e) !", + +}; + + +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Da'ffff... !", + L"Oh mon Dieu !", + L"Oh putain !", + L"Ennemi !!!", + L"Alerte ! Alerte !", + L"Ils sont là !", + L"Attaque !", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Description", + L"Général", + L"Avancés", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Desc", + L"Gén", + L"Ava", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Primaire", + L"Secondaire", + L"Coût PA", + L"Rafale/auto", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Prop.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|P|a|g|e |d|e |d|e|s|c|r|i|p|t|i|o|n :\n \nMontre les informations textuelles de base sur cet objet.", + L"|P|r|o|p|r|i|é|t|é|s |g|é|n|é|r|a|l|e|s :\n \nMontre les données spécifiques de cet objet.\n \nArmes : Cliquez à nouveau pour voir la deuxième page.", + L"|P|r|o|p|r|i|é|t|é|s |a|v|a|n|c|é|e|s :\n \nMontre les bonus donnés par cet objet.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|P|r|o|p|r|i|é|t|é|s |p|r|i|m|a|i|r|e|s :\n \nPropriétés et données liées à la classe de cet objet\n(Armes/Armures/ etc.).", + L"|P|r|o|p|r|i|é|t|é|s |s|e|c|o|n|d|a|i|r|e|s :\n \nLes caractéristiques supplémentaires de cet objet,\net/ou capacités secondaires possibles.", + L"|C|o|û|t |e|n |P|A :\n \nCoût en PA pour tirer ou manipuler cette arme.", + L"|R|a|f|a|l|e|/|A|u|t|o|m|a|t|i|q|u|e :\n \nDonnées liées au tir de cette arme en mode rafale ou auto.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|P|r|o|p|r|i|é|t|é |i|c|ô|n|e\n \nSurvol avec la souris pour révéler le nom de la propriété.", + L"|V|a|l|e|u|r |b|a|s|i|q|u|e\n \nValeurs de base données par cet objet, excluant\nles bonus ou pénalités liés aux accessoires ou munitions.", + L"|B|o|n|u|s |d|e|s |a|c|c|e|s|s|o|i|r|e|s\n \nBonus ou pénalités donnés par les munitions ou accessoires.", + L"|V|a|l|e|u|r |f|i|n|a|l|e\n \nValeur finale donnée par cette objet, incluant les\nbonus/pénalités des accessoires et munitions.", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Propriété icône (survoler avec la souris pour voir le nom).", + L"Bonus/pénalité donné |d|e|b|o|u|t.", + L"Bonus/pénalité donné |a|c|c|r|o|u|p|i.", + L"Bonus/pénalité donné |c|o|u|c|h|é.", + L"Bonus/pénalité donné", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|P|r|é|c|i|s|i|o|n", + L"|D|é|g|â|t", + L"|P|o|r|t|é|e", + L"|D|i|f|f|i|c|u|l|t|é |d|e |p|r|i|s|e |e|n |m|a|i|n", + L"|N|i|v|e|a|u |d|e |v|i|s|é|e", + L"|G|r|o|s|s|i|s|s|e|m|e|n|t |d|e |l|a |l|u|n|e|t|t|e", + L"|F|a|c|t|e|u|r |d|e |p|r|o|j|e|c|t|i|o|n", + L"|C|a|c|h|e|-|f|l|a|m|m|e", + L"|I|n|t|e|n|s|i|t|é", + L"|F|i|a|b|i|l|i|t|é", + L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", + L"|P|o|r|t|é|e |m|i|n|i|m|u|m |p|o|u|r |b|o|n|u|s |d|e |v|i|s|é|e", + L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s", + L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |m|e|t|t|r|e |e|n |j|o|u|e", + L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |t|i|r|e|r", + L"|N|o|m|b|r|e |d|e |P|A |t|i|r |e|n |r|a|f|a|l|e", + L"|N|o|m|b|r|e |d|e |P|A |t|i|r |e|n |a|u|t|o|m|a|t|i|q|u|e", + L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |r|e|c|h|a|r|g|e|r", + L"|N|o|m|b|r|e |d|e |P|A |p|o|u|r |r|e|c|h|a|r|g|e|r |m|a|n|u|e|l|l|e|m|e|n|t", + L"", // No longer used! + L"|R|e|c|u|l| |t|o|t|a|l", + L"|T|i|r |a|u|t|o|m|a|t|i|q|u|e |p|o|u|r |5 |P|A", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nDétermine si des balles tirées par cette arme dévieront\nloin de l'impact d'origine.\n \nÉchelle : 0-100.\nValeur élevée recommandée.", + L"\n \nDétermine la quantité moyenne de dégâts faits par\ndes balles tirées de cette arme, avant\n de tenir compte de l'armure et de la pénétration d'armure.\n \nValeur élevée recommandée.", + L"\n \nDistance maximale (en cases) que vont parcourir les balles\ntirées par cette arme avant de redescendre vers le sol.\n \nValeur élevée recommandée.", + L"\n \nDétermine la difficulté pour tenir cette arme au tir. Une difficulté de manipulation élevée réduit les chances de toucher en visant, mais particulièrement sans viser. Valeur faible recommandée.", + L"\n \nCeci est le nombre de niveau de visée supplémentaire que\nvous pouvez ajouter en visant avec cette arme.\n \nRéduire le nombre de niveau de visée signifie que chaque\nniveau ajoute proportionnellement plus de précision au tir.\nPar conséquent, avoir peu de niveaux de visée vous\npermettra de garder une bonne précision avec une vitesse\nde mise en joue élevée !\n \nValeur faible recommandée.", + L"\n \nUne valeur plus grande de *1.0, réduit proportionnellement\nles erreurs de visée à distance.\n \nN'oubliez pas qu'un trop gros zoom sur une cible\nproche vous pénalisera !\n \nLa valeur de 1.0 signifie qu'aucune lunette est installée.", + L"\n \nRéduit proportionnellement les erreurs de visée à distance.\n \nCes effets ne sont valables qu'à une distance donnée,\net se dissipent ou disparaissent\nà une longue distance.\n \nValeur élevée recommandée.", + L"\n \nQuand cette propriété est en vigueur, l'arme\nne produit pas d'éclair lors du tir.\n \nLes ennemis ne seront plus en mesure de vous repérer\nà cause de la flamme (mais ils\npourront toujours vous entendre !).", + L"\n \nDistance (en cases) de l'intensité sonore que fait votre arme\nlorsque vous tirez avec.\n \nLes ennemis placés en deçà de cette distance entendront\nvotre tir.\n \nValeur faible recommandée.", + L"\n \nDétermine la vitesse de déterioration de cette arme\nà l'usage.\n \nValeur élevée recommandée.", + L"\n \nDétermine la difficulté de réparation de cette arme.\n \nValeur élevée recommandée.", + L"\n \nPortée minimum où la lunette de visée fournit un bonus de visée.", + L"\n \nFacteur de chance de toucher accordé par un laser.", + L"\n \nLe nombre de PA requis pour mettre en joue.\n \nQuand cette arme est prête, vous pouvez tirez plusieurs fois\nsans avoir de coût supplémentaire.\n \nAnnule automatiquement cette opération, si vous faîtes des\nactions autre que pivoter ou tirer.\n \nValeur faible recommandée.", + L"\n \nLe nombre de PA requis pour effectuer\nune attaque simple avec cette arme.\n \nPour les fusils, c'est le coût pour un tir\nsimple sans niveau de visée.\n \nSi cette icône est grisée, les tirs simples\nne sont pas possible.\n \nValeur faible recommandée.", + L"\n \nLe nombre de PA requis pour tirer une Rafale.\n \nle nombre de balles tirées pour chaque rafale est\ndéterminé par l'arme elle-même, et indiqué\npar le nombre de balles sur cette icône.\n \nSi cette icône est grisée, le mode rafale\nn'est pas possible avec cette arme.\n \nValeur faible recommandée.", + L"\n \nLe nombre de PA requis pour tirer en Automatique.\n \nSi vous voulez tirez plus de balles,\ncela coûtera plus de PA.\n \nSi cette icône est grisée, le mode Auto\nn'est pas possible avec cette arme.\n \nValeur faible recommandée.", + L"\n \nLe nombre de PA requis pour recharger cette arme.\n \nValeur faible recommandée.", + L"\n \nLe nombre de PA requis pour recharger cette arme\nentre chaque tir.\n \nValeur faible recommandée.", + L"", // No longer used! + L"\n \nLa distance totale de la bouche de cette arme qui se\ndéplacera entre chaque balle en rafale ou en\nautomatique, si aucune force inverse n'est appliquée.\n \nValeur faible recommandée.", // HEADROCK HAM 5: Altered to reflect unified number. + L"\n \nIndique le nombre de balles qui seront ajoutées\nau mode auto tous les 5 PA que vous dépensez.\n \nValeur élevée recommandée.", + L"\n \nDétermine la difficulté à réparer une arme\net qui peut la réparer complètement.\n \nVert = N'importe qui peut la réparer.\n \nJaune = Seuls des PNJ spécialisés peuvent la\nréparer au-delà du seuil de réparation.\n \nRouge = L'arme ne peut pas être réparée.\n \nValeur élevée recommandée.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|V|a|l|e|u|r |d|e |p|r|o|t|e|c|t|i|o|n", + L"|C|o|u|v|e|r|t|u|r|e", + L"|T|a|u|x |d|e |d|é|g|r|a|d|a|t|i|o|n", + L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nCette propriété d'armure définit de combien elle\nabsorbe les dégâts de chaque attaque.\n \nN'oubliez pas que les attaques perforantes et\ndivers facteurs aléatoires peuvent altérer\nla réduction final des dégâts.\n \nValeur élevée recommandée.", + L"\n \nDétermine la protection de l'armure\nsur votre corps.\n \nSi la protection est inférieure à 100%, les attaques\nont une certaine chance de passer à travers l'armure\nen causant un maximum de dégâts.\n \nValeur élevée recommandée.", + L"\n \nIndique à quelle vitesse les conditions de l'armure\nvont chuter et qui est proportionnelle aux\ndégâts subis.\n \nValeur faible recommandée.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|T|a|u|x |d|e |p|é|n|é|t|r|a|t|i|o|n", + L"|É|c|r|a|s|e|m|e|n|t |d|e |l|a |b|a|l|l|e", + L"|E|x|p|l|o|s|i|o|n |a|v|a|n|t |i|m|p|a|c|t", + L"|T|e|m|p|é|r|a|t|u|r|e |d|u |t|i|r", + L"|T|a|u|x |d|'|e|m|p|o|i|s|o|n|n|e|m|e|n|t", + L"|E|n|c|r|a|s|s|e|m|e|n|t", +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nCeci est la capacité de la balle à pénétrer\nl'armure de la cible.\n \nAvec une valeur supérieure à 1.0, la balle réduiera fortement\nla valeur de protection de l'armure touchée.\n \nValeur élevée recommandée.", + L"\n \nDétermine le potentiel de la balle à faire des dégâts\nsur le corps après avoir traversée l'armure.\n \nAvec une valeur supérieure à 1.0, la balle fera de lourds dégâts\naprès pénétration\nAvec une valeur inférieure à 1.0, la balle fera des dégâts moindre\naprès pénétration.\n \nValeur élevée recommandée.", + L"\n \nMultiplicateur de potentiel de dégâts juste avant\nl'impact de la balle.\n \nAvec une valeur supérieure à 1.0, la balle fera de lourds dégâts.\nUne valeur inférieure à 1.0 fera des dégâts moindre.\n \nValeur élevée recommandée.", + L"\n \nTempérature additionnelle générée par ces munitions.\n \nValeur faible recommandée", + L"\n \nDétermine le pourcentage de dégâts d'une balle empoisonnée.\n \nValeur élevée recommandée.", + L"\n \nEncrassement additionnel généré par ces munitions.\n \nValeur faible recommandée", +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|D|é|g|â|t|s", + L"|D|é|g|â|t|s |é|t|o|u|r|d|i|s|s|a|n|t", + L"|E|x|p|l|o|s|i|o|n |à |l|'|i|m|p|a|c|t", // HEADROCK HAM 5 + L"|R|a|y|o|n |d|'|e|x|p|l|o|s|i|o|n", + L"|R|a|y|o|n |d|'|e|x|p|l|o|s|i|o|n |é|t|o|u|r|d|i|s|a|n|t|e", + L"|R|a|y|o|n |d|'|e|x|p|l|o|s|i|o|n |s|o|n|o|r|e", + L"|D|é|b|u|t |r|a|y|o|n |g|a|z |l|a|c|r|y|m|o|g|è|n|e", + L"|D|é|b|u|t |r|a|y|o|n |g|a|z |m|o|u|t|a|r|d|e", + L"|D|é|b|u|t |r|a|y|o|n |f|l|a|s|h |l|u|m|i|n|e|u|x", + L"|D|é|b|u|t |r|a|y|o|n |f|u|m|é|e", + L"|D|é|b|u|t |r|a|y|o|n |i|n|c|e|n|d|i|e", + L"|F|i|n |r|a|y|o|n |g|a|z |l|a|c|r|y|m|o|g|è|n|e", + L"|F|i|n |r|a|y|o|n |g|a|z |m|o|u|t|a|r|d|e", + L"|F|i|n |r|a|y|o|n |f|l|a|s|h |l|u|m|i|n|e|u|x", + L"|F|i|n |r|a|y|o|n |f|u|m|é|e", + L"|F|i|n |r|a|y|o|n |i|n|c|e|n|d|i|e", + L"|D|u|r|é|e |d|e |l|'|e|f|f|e|t", + // HEADROCK HAM 5: Fragmentation + L"|N|o|m|b|r|e |d|e |s|h|r|a|p|n|e|l|s", + L"|D|é|g|â|t|s |p|a|r |s|h|r|a|p|n|e|l", + L"|P|o|r|t|é|e |d|e|s |s|h|r|a|p|n|e|l|s", + // HEADROCK HAM 5: End Fragmentations + L"|I|n|t|e|n|s|i|t|é |s|o|n|o|r|e", + L"|V|o|l|a|t|i|l|i|t|é", + L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nLa quantité de dégâts causés par cet explosif.\n \nNotez que les explosifs de type \"explosion\" livrent des dégâts\nseulement une fois (quand ils explosent), tandis que les\nexplosifs à effets prolongés livrent cette quantité de dégâts\nà chaque tour jusqu'à ce que l'effet se dissipe.\n \nValeur élevée recommandée.", + L"\n \nLa quantité de dégâts non mortels (étourdissant) causés\npar cet explosif.\n \nNotez que les explosifs de type \"explosion\" livrent des\ndégâts seulement une fois (quand ils explosent), tandis\nque les explosifs à effets prolongés livrent cette\nquantité de dégâts d'étourdissement à chaque tour jusqu'à\nce que l'effet se dissipe.\n \nValeur élevée recommandée.", + L"\n \nCet explosif ne rebondit pas. Il explose dès qu'il touche un obstacle.", // HEADROCK HAM 5 + L"\n \nRayon de l'explosion causé par cet objet.\n \nPlus les ennemis seront loin du centre de l'explosion\nmoins ils subiront de dégâts.\n \nValeur élevée recommandée.", + L"\n \nRayon de l'onde de choc causé par cet objet.\n \nPlus les ennemis seront loin du centre de l'explosion\nmoins ils subiront de dégâts.\n \nValeur élevée recommandée.", + L"\n \nDistance du parcours du bruit causé par ce piège.\n Les ennemis placés en deçà de cette distance entendront\n votre piège et sonneront l'alerte.\n \nValeur faible recommandée.", + L"\n \nRayon de départ libéré par la lacrymogène.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", + L"\n \nRayon de départ libéré par le gaz moutarde.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", + L"\n \nRayon de départ émis par le flash lumineux.\n \nLes cases autours du centre de l'effet deviendront très\nlumineuses, quand celles autours ne seront que\nlégèrement plus lumineuse que la normale.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nÀ noter aussi que contrairement aux autres explosifs qui\nont une durée d'effet, le flash lumineux faiblit\nau cours du temps, avant de disparaître.\n \nValeur élevée recommandée.", + L"\n \nRayon de départ libéré par la fumée.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz. plus important,\nquiconque se trouvant à l'intérieur de la fumée aura des difficultés à se repérer,\net perdra aussi sa visibilité.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", + L"\n \nRayon de départ causés par les flammes.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour.\n \nÀ noter également la fin du rayon et la durée de\nl'effet (afficher ci-dessous).\n \nValeur élevée recommandée.", + L"\n \nRayon de fin libéré par la lacrymogène avant\nqu'il ne se dissipe.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également le début du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", + L"\n \nRayon de fin libéré par le gaz moutarde avant\nqu'il ne se dissipe.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz.\n \nÀ noter également le début du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", + L"\n \nRayon de fin émis par le flash lumineux.\n \nLes cases autours du centre de l'effet deviendront très\nlumineuses, quand celles autours ne seront que\nlégèrement plus lumineuse que la normale.\n \nÀ noter également la fin du rayon et la durée de\nl'effet.\n \nÀ noter aussi que contrairement aux autres explosifs qui\nont une durée d'effet, le flash lumineux faiblit\nau cours du temps, avant de disparaître.\n \nValeur élevée recommandée.", + L"\n \nRayon de fin libéré par la fumée.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour,\nà moins qu'ils portent un masque à gaz. plus important,\nquiconque se trouvant à l'intérieur de la fumée aura des difficultés à se repérer,\net perdra aussi sa visibilité.\n \nÀ noter également la fin du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", + L"\n \nRayon de départ causés par les flammes.\n \nLes ennemis placés en deçà de cette distance subiront\ndes dégâts et des étourdissements à chaque tour.\n \nÀ noter également la fin du rayon et la durée de\nl'effet.\n \nValeur élevée recommandée.", + L"\n \nDurée des effets de l'explosion.\n \nChaque tour, le rayon s'aggrandit d'une case dans\n toutes les directions, avant d'atteindre\nla valeur de fin de rayon indiquée.\n \nQuand la durée a été atteinte, les effets se\ndissipent complètement.\n \nÀ noter aussi que contrairement aux autres explosifs qui\nont une durée d'effet, le flash lumineux faiblit\nau cours du temps, avant de disparaître.\n \nValeur élevée recommandée.", + // HEADROCK HAM 5: Fragmentation + L"\n \nC'est le nombre de shrapnels qui seront\néjectés lors de l'explosion.\n \nLes shrapnels sont comme des balles et\ntoucheront toutes les personnes qui\nsont assez proche de l'explosion.\n \nValeur élevée recommandée.", + L"\n \nLe potentiel des dégâts causés par chaque shrapnel.\n \nValeur élevée recommandée.", + L"\n \nC'est la portée moyenne des shrapnels. Ils peuvent\ncouvrir plus ou moins loin de cette distance.\n \nValeur élevée recommandée.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nDistance (en cases) en deçà de laquelle chaque\nsoldat et mercenaire peuvent entendre l'explosion.\n \nLes ennemis qui entendent cette explosion peuvent alerter de\nvotre présence.\n \nValeur faible recommandée.", + L"\n \nCette valeur représente la chance (sur 100) que cette\nexplosif explose spontanément chaque fois qu'il est endommagé\n(Par exemple, quand il y a d'autres explosions à proximité).\n \nTransporter des explosifs hautement volatiles en combat\nest donc extrêmement risqué et devrait être évitée.\n \nÉchelle : 0-100.\nValeur faible recommandée.", + L"\n \nDétermine la difficulté à réparer complètement un explosif.\n \nVert = N'importe qui peut le réparer.\n \nRouge = Il ne peut pas être réparé.\n \nValeur élevée recommandée.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|F|a|c|i|l|i|t|é |d|e |r|é|p|a|r|a|t|i|o|n", + L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", // TODO.Translate + L"|V|o|l|u|m|e", // TODO.Translate +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nDétermine la difficulté à réparer complètement un objet.\n \nVert = N'importe qui peut le réparer.\n \nRouge = Il ne peut pas être réparé.\n \nValeur élevée recommandée.", + L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", // TODO.Translate + L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", // TODO.Translate +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|B|a|l|l|e|s |t|r|a|ç|a|n|t|e|s", + L"|M|u|n|i|t|i|o|n|s |a|n|t|i|-|c|h|a|r", + L"|I|g|n|o|r|e |l|'|a|r|m|u|r|e", + L"|M|u|n|i|t|i|o|n|s |a|c|i|d|e|s", + L"|M|u|n|i|t|i|o|n|s |c|a|s|s|a|n|t |s|e|r|r|u|r|e", + L"|R|é|s|i|s|t|a|n|t |a|u|x |e|x|p|l|o|s|i|f|s", + L"|É|t|a|n|c|h|é|i|t|é", + L"|É|l|e|c|t|r|o|n|i|q|u|e", + L"|M|a|s|q|u|e |à |g|a|z", + L"|B|e|s|o|i|n |d|e |p|i|l|e|s", + L"|P|e|u|t |c|r|o|c|h|e|t|e|r |l|e|s |s|e|r|r|u|r|e|s", + L"|P|e|u|t |c|o|u|p|e|r |d|e|s |f|i|l|s", + L"|P|e|u|t |c|a|s|s|e|r |l|e|s |v|e|r|r|o|u|s", + L"|D|é|t|e|c|t|e|u|r |d|e |m|é|t|a|l", + L"|D|é|c|l|e|n|c|h|e|u|r |à |d|i|s|t|a|n|c|e", + L"|D|é|t|o|n|a|t|e|u|r |à |d|i|s|t|a|n|c|e", + L"|M|i|n|u|t|e|r|i|e |d|e| |d|é|t|o|n|a|t|e|u|r", + L"|C|o|n|t|i|e|n|t |d|e |l|'|e|s|s|e|n|c|e", + L"|C|a|i|s|s|e |à |o|u|t|i|l|s", + L"|O|p|t|i|q|u|e|s |t|h|e|r|m|i|q|u|e|s", + L"|D|i|s|p|o|s|i|t|i|f |à |r|a|y|o|n|s |X", + L"|C|o|n|t|i|e|n|t |d|e |l|'|e|a|u |p|o|t|a|b|l|e", + L"|C|o|n|t|i|e|n|t |d|e |l|'|a|l|c|o|o|l", + L"|T|r|o|u|s|s|e |d|e |1|e|r |s|o|i|n|s", + L"|T|r|o|u|s|s|e |m|é|d|i|c|a|l|e", + L"|B|o|m|b|e |p|o|u|r |s|e|r|r|u|r|e |d|e |p|o|r|t|e", + L"|B|o|i|s|s|o|n", + L"|R|e|p|a|s", + L"|B|a|n|d|e|s |d|e |m|u|n|i|t|i|o|n|s", + L"|H|a|r|n|a|i|s |à |m|u|n|i|t|i|o|n|s", + L"|K|i|t |d|e |d|é|s|a|m|o|r|ç|a|g|e", + L"|O|b|j|e|t |d|i|s|s|i|m|u|l|a|b|l|e", + L"|N|e |p|e|u|t |ê|t|r|e |e|n|d|o|m|m|a|g|é", + L"|F|a|i|t |e|n |m|é|t|a|l", + L"|N|e |f|l|o|t|t|e |p|a|s", + L"|À |d|e|u|x |m|a|i|n|s", + L"|B|l|o|q|u|e |l|e |v|i|s|e|u|r", + L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate + L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|S|h|i|e|l|d", // TODO.Translate + L"|C|a|m|e|r|a", // TODO.Translate + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate + L"|B|l|o|o|d |B|a|g", // 44 + L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nCes munitions, en mode Auto ou rafale, ont la propriété d'être\ndes des balles traçantes.\n \nLa lumière qu'apporte les balles traçantes lors d'une rafale\npermet d'avoir une meilleur précision et d'être ainsi plus\nmortel malgré le recul de l'arme.\n \nDe plus, ces balles créent un halo lumineux permettant de\nrévéler l'ennemi pendant la nuit. Cependant, elles révèlent\naussi la position du tireur à l'ennemi !\n \nLes balles traçantes désactive automatiquement le\ncache-flamme installé sur l'arme utilisé.", + L"\n \nCes munitions peuvent faire des dégâts aux chars.\n \nLes munitions SANS cette propriété ne feront aucun dégât quel que\nsoit le char.\n \nMême avec cette propriété, n'oubliez pas que la plupart des armes\nne feront que peu de dégâts, donc n'en abusez pas.", + L"\n \nCes munitions ignorent complètement l'armure.\n \nQuand vous tirez sur un ennemi avec une armure, cela sera comme s'il\nn'en avait pas, permettant ainsi de faire un maximum de dégâts !", + L"\n \nLorsque cette munition frappe une cible avec une armure,\ncette dernière se dégradera très rapidement.\n \nCeci peut potentiellement retirer l'armure de la cible !", + L"\n \nCette munition est exceptionnelle pour casser les serrures.\n \nTirez directement sur la serrure de la porte ou du\ncoffre pour faire de lourds dégâts sur le mécanisme.", + L"\n \nCette armure est trois fois plus résistante contre les\nexplosifs que sa valeur indiquée.\n \nQuand une explosion heurte cette armure, la valeur de\nsa protection est considérée comme trois fois plus\nélevée que celle indiquée.", + L"\n \nCet objet est imperméable à l'eau. Il ne recevra pas de\ndégâts causés par l'eau.\n \nLes objets SANS cette propriété vont progressivement se\ndétériorer, si la personne nage avec.", + L"\n \nCet objet est de nature électronique et contient des\ncircuits complexes.\n \nLes objets électroniques sont intrinsèquement plus\ndifficiles à réparer, d'autant plus si vous n'avez pas\nles compétences nécessaires.", + L"\n \nLorsque cet objet est porté sur le visage, il le protègera\nde tous les gaz nocifs.\n \nNotez que certains gaz sont corrosifs et pourrait bien\npénétrer à travers le masque...", + L"\n \nCet objet requière des piles. Sans les piles, vous ne pouvez pas\nactiver ces principales caractéristiques.\n \nPour utiliser un jeu de piles, attachez-les à cette objet\ncomme si vous m'étiez une lunette de visée à votre arme.", + L"\n \nCet objet peut être utilisé pour crocheter des portes\nou des containers verrouillés.\n \nLe crochetage est silencieux, mais nécessite des\ncompétences en mécanique. Il améliore\nla chance au crochetage de ", //JMich_SkillsModifiers: needs to be followed by a number", + L"\n \nCet objet peut être utilisé pour couper les clôtures de fil.\n \nCela autorise le mercenaire a passé à travers des zones\nsécurisées, pour éventuellement surprendre l'ennemi !", + L"\n \nCet objet peut être utilisé pour forcer des portes\nou des coffres verrouillés.\n \nForcer des serrures, requière une grande force,\ngénère beaucoup de bruits et peut facilement\nvous épuisez. Cependant, c'est une bonne façon\nd'ouvrir une serrure sans avoir des talents en\nmécanique ou des outils adéquates. Il améliore\nvotre chance de ", //JMich_SkillsModifiers: needs to be followed by a number + L"\n \nCet objet peut être utilisé pour détecter des objets métalliques\nenfouis sous terre.\n \nNaturellement, sa fonction première est de détecter les mines\nsans que vous ayez les compétences nécessaires pour les repérer\nà l'œil nu.\n \nPeut-être trouverez-vous certains trésors cachés...", + L"\n \nCet objet peut être utilisé pour faire exploser une bombe\nqui aura été amorcée par un détonateur.\n \nPlantez la bombe en 1er, puis utilisez votre déclencheur\nà distance pour l'activer quand c'est le bon moment.", + L"\n \nQuand il est attaché à un dispositif explosif et positionné\ndans le bon sens, ce détonateur peut être déclenché par un\ndétonateur (séparé) à distance.\n \nLes détonateurs à distance sont excellents pour faire des\npièges, car ils se déclenchent quand vous le souhaitez.\n \nDe plus, vous avez tout le temps pour déguerpir !", + L"\n \nQuand il est attaché à un dispositif explosif et positionné\ndans le bon sens, ce détonateur va lancer un compte à\nrebours défini et explosera quand le temps sera écoulé.\n \nCes détonateurs avec minuterie sont pas chers et faciles à\ninstaller, mais vous aurez besoin de temps pour pouvoir\ndéguerpir de là !", + L"\n \nCet objet contient de l'essence.\n \nIl pourrait arriver à point nommé, si vous aviez besoin\nde remplir un réservoir d'essence...", + L"\n \nCet objet contient divers outils qui peuvent être utilisés\npour réparer d'autres objets.\n \nUne caisse à outils est toujours nécessaire lorsque vous\nêtes en mission de réparation. Il améliore\nl'efficacité en réparation de ", //JMich_SkillsModifiers: need to be followed by a number + L"\n \nQuand équipé sur le visage, cet objet donne la capacité de\nrepérer les ennemis à travers les murs, grâce à leur\nsignature thermique.", + L"\n \nCe merveilleux dispositif peut être utilisé pour repérer\nles ennemis en utilisant les rayons X.\n \nCela révélera tous les ennemis à une certaine distance\npour une courte période de temps.\n \nGardez cela loin de vos organes reproductifs !", + L"\n \nCet objet contient de l'eau potable bien fraiche.\nÀ boire lorsque vous êtes assoiffé.", + L"\n \nCet objet contient du digestif, gnôle, eau-de-vie, liqueur,\nqu'importe comment vous appelez cela.\n \nÀ prendre avec modération. Boire ou conduire !\nPeut causer une cirrhose du foie.", + L"\n \nIl s'agit d'un kit médical basic, contenant les ustensiles\nrequis pour faire une intervention médicale basic.\n \nIl peut être utilisé pour soigner un mercenaire blessé et\nempêcher le saignement.\n \nPour une guérison optimale, utilisez une véritable trousse\nde soins et/ou beaucoup de repos.", + L"\n \nIl s'agit d'un kit médical complet, qui peut être utilisé\npour une opération chirurgicale ou autre cas sérieux.\n \nUne trousse de soins est toujours nécessaire lorsque vous\nêtes en mission de docteur.", + L"\n \nCet objet peut être utilisé pour faire sauter les portes\nou coffres verrouillés.\n \nDes compétences en explosion sont nécessaires pour éviter\nune explosion prématurée.\n \nExploser les serrures, est relativement facile et rapide\nà faire. Cependant, c'est très bruyant et dangereux pour\nla plupart des mercenaires.", + L"\n \nCette boisson étanchera votre soif\nsi vous la buvez.", + L"\n \nCeci vous nourrira\nsi vous l'ingurgitez.", + L"\n \nVous alimenterez une mitrailleuse\navec ces bandes de munitions.", + L"\n \nVous nourrirez une mitrailleuse\navec ces munitions stockées dans\nce harnais.", + L"\n \nCet objet améliore votre chance de désamorçage de ", + L"\n \nCet objet est dissimulable,\ny compris ses accessoires.", + L"\n \nCet objet ne peut pas être endommagé.", + L"\n \nCet objet est en métal.\nIl prend moins de dégâts que les autres.", + L"\n \nCet objet coule dans l'eau.", + L"\n \nCet objet exige les deux mains pour être utilisé.", + L"\n \nCet Objet bloquera votre viseur\nde ce fait vous ne pouvez pas l'utiliser.", + L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate + L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", + L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", + L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate + L"\n \nYou can take photos with this.", // TODO.Translate + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate + L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|F|a|c|t|e|u|r |d|e |p|r|é|c|i|s|i|o|n", + L"|F|a|c|t|e|u|r |n|e|t |d|e |p|r|é|c|i|s|i|o|n |s|u|r |t|o|u|t |t|i|r", + L"|F|a|c|t|e|u|r |e|n |p|o|u|r|c|e|n|t|a|g|e |s|u|r |t|o|u|t |t|i|r", + L"|F|a|c|t|e|u|r |n|e|t |s|u|r |l|a |v|i|s|é|e", + L"|F|a|c|t|e|u|r |p|o|u|r|c|e|n|t|a|g|e |d|e |v|i|s|é|e", + L"|F|a|c|t|e|u|r |n|i|v|e|a|u |d|e |v|i|s|é|e |a|u|t|o|r|i|s|é|e", + L"|F|a|c|t|e|u|r |d|e |p|r|é|c|i|s|i|o|n |m|a|x|i|m|a|l|e", + L"|F|a|c|t|e|u|r |d|e |p|r|i|s|e |e|n |m|a|i|n |d|e |l|'|a|r|m|e", + L"|F|a|c|t|e|u|r |c|o|m|p|e|n|s|a|t|i|o|n |d|e |c|h|u|t|e", + L"|F|a|c|t|e|u|r |p|o|u|r|s|u|i|t|e |c|i|b|l|e", + L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s", + L"|F|a|c|t|e|u|r |d|e |d|é|g|â|t|s |d|e |m|ê|l|é|e", + L"|F|a|c|t|e|u|r |d|e |d|i|s|t|a|n|c|e", + L"|F|a|c|t|e|u|r |a|g|g|r|a|n|d|i|s|e|m|e|n|t |d|e |l|a |p|o|r|t|é|e", + L"|F|a|c|t|e|u|r |d|e |p|r|o|j|e|c|t|i|o|n", + L"|F|a|c|t|e|u|r |d|e |r|e|c|u|l |h|o|r|i|z|o|n|t|a|l", + L"|F|a|c|t|e|u|r |d|e |r|e|c|u|l |v|e|r|t|i|c|a|l", + L"|F|a|c|t|e|u|r |d|e |c|o|n|t|r|e|-|f|o|r|c|e |m|a|x|i|m|u|m", + L"|F|a|c|t|e|u|r |d|e |p|r|é|c|i|s|i|o|n |d|e |c|o|n|t|r|e|-|f|o|r|c|e", + L"|F|a|c|t|e|u|r |d|e |f|r|é|q|u|e|n|c|e |d|e |c|o|n|t|r|e|-|f|o|r|c|e", + L"|F|a|c|t|e|u|r |d|e |P|A |t|o|t|a|l", + L"|F|a|c|t|e|u|r |d|e |P|A |m|i|s|e |e|n |j|o|u|e", + L"|F|a|c|t|e|u|r |d|e |P|A |e|n |a|t|t|a|q|u|e |s|i|m|p|l|e", + L"|F|a|c|t|e|u|r |d|e |P|A |e|n |r|a|f|a|l|e", + L"|F|a|c|t|e|u|r |d|e |P|A |e|n |a|u|t|o", + L"|F|a|c|t|e|u|r |d|e |P|A |p|o|u|r |r|e|c|h|a|r|g|e|r", + L"|F|a|c|t|e|u|r |t|a|i|l|l|e |m|u|n|i|t|i|o|n", + L"|F|a|c|t|e|u|r |t|a|i|l|l|e |r|a|f|a|l|e", + L"|C|a|c|h|e|-|f|l|a|m|m|e", + L"|F|a|c|t|e|u|r |i|n|t|e|n|s|i|t|é |s|o|n|o|r|e", + L"|F|a|c|t|e|u|r |t|a|i|l|l|e |o|b|j|e|t", + L"|F|a|c|t|e|u|r |d|e |f|i|a|b|i|l|i|t|é", + L"|C|a|m|o|u|f|l|a|g|e |f|o|r|ê|t", + L"|C|a|m|o|u|f|l|a|g|e |u|r|b|a|i|n ", + L"|C|a|m|o|u|f|l|a|g|e |d|é|s|e|r|t", + L"|C|a|m|o|u|f|l|a|g|e |n|e|i|g|e", + L"|F|a|c|t|e|u|r |d|e |d|i|s|c|r|é|t|i|o|n", + L"|F|a|c|t|e|u|r |d|i|s|t|a|n|c|e |a|u|d|i|t|i|v|e", + L"|F|a|c|t|e|u|r |v|i|s|i|o|n |g|é|n|é|r|a|l|e", + L"|F|a|c|t|e|u|r |v|i|s|i|o|n |n|o|c|t|u|r|n|e", + L"|F|a|c|t|e|u|r |v|i|s|i|o|n |d|e |j|o|u|r", + L"|F|a|c|t|e|u|r |v|i|s|i|o|n |l|u|m|i|è|r|e |i|n|t|e|n|s|e", + L"|F|a|c|t|e|u|r |v|i|s|i|o|n |s|o|u|s|-|s|o|l", + L"|V|i|s|i|o|n |e|n |t|u|n|n|e|l ", + L"|C|o|n|t|r|e|-|f|o|r|c|e |m|a|x|i|m|u|m", + L"|F|r|é|q|u|e|n|c|e |C|o|n|t|r|e|-|f|o|r|c|e", + L"|B|o|n|u|s |c|h|a|n|c|e |d|e |t|o|u|c|h|e|r", + L"|B|o|n|u|s |d|e |v|i|s|é|e", + L"|T|e|m|p|é|r|a|t|u|r|e |t|i|r |u|n|i|q|u|e", + L"|T|a|u|x |d|e |R|e|f|r|o|i|d|i|s|s|e|m|e|n|t", + L"|S|e|u|i|l |d|'|e|n|r|a|y|e|m|e|n|t", + L"|S|e|u|i|l |d|é|t|é|r|i|o|r|a|t|i|o|n", + L"|F|a|c|t|e|u|r |d|e |t|e|m|p|é|r|a|t|u|r|e", + L"|F|a|c|t|e|u|r |d|e |r|e|f|r|o|i|d|i|s|s|e|m|e|n|t", + L"|F|a|c|t|e|u|r |d|u |S|e|u|i|l |d|'|e|n|r|a|y|e|m|e|n|t", + L"|F|a|c|t|e|u|r |d|u |S|e|u|i|l |d|é|t|é|r|i|o|r|a|t|i|o|n", + L"|T|a|u|x |d|e |p|o|i|s|o|n", + L"|F|a|c|t|e|u|r |d|'|e|n|c|r|a|s|s|e|m|e|n|t", + L"|F|a|c|t|e|u|r |d|e |P|o|i|s|o|n", + L"|V|a|l|e|u|r |d|'|A|l|i|m|e|n|t|a|t|i|o|n", + L"|V|a|l|e|u|r |d|'|H|y|d|r|a|t|a|t|i|o|n", + L"|T|a|i|l|l|e |d|e|s |Po|r|t|i|o|n|s", + L"|F|a|c|t|e|u|r |d|e |M|o|r|a|l", + 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 + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \nLorsque attaché à une arme de distance, cet objet modifie la\nvaleur de sa précision.\n \nLe gain en précision permet à l'arme de pouvoir toucher une\ncible à des distances plus élevées et plus souvent.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", + L"\n \nCet objet modifie la précision du tireur pour n'importe quel tir avec\nune arme de distance de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", + L"\n \nCet objet modifie la précision du tireur pour n'importe quel tir avec\nune arme de distance avec un pourcentage calculé à partir\nde sa précision initiale.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie le gain de précision, pris à chaque\nniveau de visée supplémentaire, de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", + L"\n \nCet objet modifie le gain de précision, pris à chaque\nniveau de visée, d'un pourcentage calculé à partir\nde sa précision initiale.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie le nombre de niveau de visée que cette arme\npeut avoir.\n \nRéduire le nombre de niveau de visée signifie que chaque\nniveau ajoute proportionnellement plus de précision au tir.\nPar conséquent, même les bas niveaux de visée vous\npermettrons de garder une bonne précision avec une vitesse\nélevée pour viser !\n \nValeur faible recommandée.", + L"\n \nCet objet modifie la précision maximale du tireur équipé d'une\narme de distance, avec un pourcentage basé sur sa précision\ninitiale.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet modifie sa\ndifficulté de manipulation.\n \nUne meilleure prise en main permet une meilleure précision\nde l'arme, avec ou sans niveaux de visée supplémentaires.\n \nNotez que c'est basé sur le facteur de prise en main des\narmes, qui est plus élevé pour les fusils et armes lourdes\nque les pistolets et armes légères.\n \nValeur faible recommandée.", + L"\n \nCet objet modifie la difficulté des tirs hors de la portée de l'arme.\n \nUne valeur élevée peut augmenter la portée maximale de l'arme de\nquelques cases.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie la difficulté de toucher une cible en mouvement\navec une arme de distance.\n \nUne valeur élevée peut vous aider à toucher une cible en\nmouvement, même à distance.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie la puissance d'impact de votre arme\nde la valeur suivante.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie la puissance d'impact de votre arme de mêlée\nde la valeur suivante.\n \nCeci s'applique uniquement aux armes de mêlée, tranchantes\nou contondantes.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie sa portée effective.\n \nLa portée maximale dicte essentiellement dans quelle mesure une balle\ntirée par l'arme peut voler avant de commencer à tomber\nbrusquement vers le sol.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nfournit un grossissement supplémentaire, réussissant des coups\nplus facilement que la normale.\n \nNotez qu'un facteur de grossissement trop élevé est préjudiciable\nquand la cible est plus PROCHE que la distance optimale.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nprojette un point sur la cible, rendant le tir plus facile.\n \nCette projection est seulement utile à une certaine distance,\nau-delà elle diminue puis éventuellement disparaît.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance ayant\ndes modes rafale ou auto, cet objet modifie\nle recul horizontal de l'arme par le\npourcentage suivant.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme de distance ayant\ndes modes rafale ou auto, cet objet modifie\nle recul vertical de l'arme par le\npourcentage suivant.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", + L"\n \nCet objet modifie la capacité du tireur à faire\nface au recul durant une salve en mode rafale ou auto.\n \nUne valeur élevée permet d'aider le tireur à contrôler une arme\navec un fort recul, même s'il a peu de force.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie la capacité du tireur à compenser\nle recul durant une salve en mode rafale ou auto.\n \nUne valeur élevée permet de corriger le recul pour garder le canon\nsur la cible, même à longue distance, rendant ainsi la salve\nplus précise.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie la capacité du tireur à adapter\nà chaque fréquence l'effort de compensation du recul durant une\nsalve en mode rafale ou auto.\n \nUne fréquence élevée de compensation permet une salve très précise\net ainsi permettre des tirs en rafale et auto à très longues portées.\n \nValeur élevée recommandée.", + L"\n \nCet objet modifie directement le nombre de PA\nque le mercenaire a durant chaque début de tour.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie le coût en PA pour mettre en joue.\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme, cet objet\nmodifie le coût en PA pour faire une attaque simple.\n \nNotez que pour les armes ayant un mode auto/rafale, le\ncoût est directement influencé par ce facteur !\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme de distance ayant\nun mode rafale, cet objet modifie le coût en PA d'un tir en rafale.\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme de distance ayant\nun mode auto, cet objet modifie le coût en PA d'un tir en auto.\n \nNotez que cela ne modifie pas le coût supplémentaire\npour ajouter des balles à la salve, mais seulement\nle coût initiale d'une salve.\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie le coût en PA pour recharger.\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nchange la taille des munitions qui peuvent être\nchargées dans l'arme.\n \nCette arme peut maintenant accepter des tailles plus ou moins grandes de munitions\nayant un même calibre.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie le nombre de balles tiré\npar cette arme en rafale.\n \nSi cette arme n'a pas de mode rafale et que la\nvaleur est positive, alors cet objet donnera à l'arme la possibilité\nde tirer en mode rafale.\n \nInversement, s'il y a un mode rafale\net une valeur négative, cela peut retirer le mode rafale.\n \nValeur élevée généralement recommandée. Gardez bien à l'esprit\nque le mode rafale est là pour conserver les munitions...", + L"\n \nLorsque attaché à une arme de distance, cet objet\nva cacher le flash du canon.\n \nCela permettra au tireur de ne pas se faire repérer\net de rester à couvert, s'il l'est.\nChose importante de nuit...", + L"\n \nLorsque attaché à une arme, cet objet\nmodifie la distance à laquelle un tir sera entendu par les\nennemis et les mercenaires.\n \nSi ce facteur modifie l'intensité sonore de l'arme à 0\n, elle deviendra alors indétectable.\n \nValeur faible recommandée.", + L"\n \nCet objet modifie la taille de n'importe quel objet\npouvant être attaché.\n \nLa taille est importante dans le nouveau système d'inventaire,\noù les poches n'acceptent qu'une taille et des formes spécifiques.\n \nAugmenter la taille d'un objet peut le rendre trop gros pour des poches.\n \nInversement, réduire sa taille peut permettre de l'insérer dans plus de poches\net les poches seront à même de contenir plus d'objets.\n \nValeur faible généralement recommandée.", + L"\n \nLorsque attaché à une arme, cet objet modifie la valeur\nde fiabilité de l'arme.\n \nSi positive, l'état de l'arme se détériore moins\nrapidement au combat. Mais hors combat elle se détériore\nplus rapidement.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone forestière du porteur.\n \nPour avoir un facteur de camouflage efficace en forêt,\nvous devez être près d'arbres ou d'herbes hautes.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone urbaine du porteur.\n \nPour avoir un facteur de camouflage efficace en zone urbaine,\nvous devez être près des bâtîments.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone désertique du porteur.\n \nPour avoir un facteur de camouflage efficace en zone désertique,\nvous devez être près du sable ou d'une végétation désertique.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie le camouflage en zone enneigée du porteur.\n \nPour avoir un facteur de camouflage efficace en zone enneigée,\nvous devez être près de cases enneigées.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie la discrétion du porteur en rendant le mercenaire\nplus difficile à entendre lorsqu'il se déplace en mode discrétion.\n \nNotez que cela ne change en rien sur la visibilité du mercenaire,\nmais seulement la quantité de sons émis lors d'un déplacement en silence.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet\nmodifie l'audition du porteur du pourcentage suivant.\n \nUne valeur positive rend possible l'écoute de sons\nprovenant de longues distances.\n \nInversement, une valeur négative détériore l'audition du porteur.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision dans toutes les conditions.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsqu'il y a peu de lumière ambiante.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsque l'intensité de la lumière\nest normale ou forte.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsque l'intensité de la lumière est très forte.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nla vision du porteur.\n \nModification de la vision lorsque vous êtes dans un sous-sol sombre.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché ou porté à un autre objet, cet objet modifie\nle champ de vision du porteur.\n \nRéduisant le champ de vision de chaque côté.\n \nValeur faible recommandée.", + L"\n \nHabilité du tireur à faire face au recul\nlors d'un tir en mode rafale ou auto.\n \nValeur élevée recommandée.", + L"\n \nFréquence de recalcule du tireur pour ajuster la force\nqu'il doit mettre pour contrer le recul de l'arme, lors d'un tir\nen mode rafale ou auto.\n \nUne fréquence faible rend la salve plus précise en supposant que\nle tireur puisse surmonter le recul correctement.\n \nValeur faible recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie sa chance de toucher la cible (CDT).\n \nAugmenter son CDT permet de toucher plus souvent\nune cible, en supposant que le tireur a bien visé.\n \nValeur élevée recommandée.", + L"\n \nLorsque attaché à une arme de distance, cet objet\nmodifie ses bonus de visée.\n \nAugmenter les bonus de visée, permet de toucher\nune cible à longue distance plus souvent, en supposant\nque le tireur a bien visé.\n \nValeur élevée recommandée.", + L"\n \nUn tir augmente la température de l'arme de cette valeur.\nLes munitions et certains accessoires peuvent\ninfluer sur cette valeur.\n \nValeur faible recommandée.", + L"\n \nÀ chaque tour, la température de l'arme diminue\nde cette valeur.\n \nValeur élevée recommandée.", + L"\n \nSi la température d'une arme dépasse cette valeur,\nelle s'enrayera plus souvent.\n \nValeur élevée recommandée.", + L"\n \nSi la température d'un objet dépasse cette valeur,\nil se détériorera plus facilement.\n \nValeur élevée recommandée.", + L"\n \nLa température d'un tir,\nest augmentée par ce pourcentage.\n \nValeur faible recommandée.", + L"\n \nLe facteur de refroidissement d'une arme,\nest augmenté par ce pourcentage.\n \nValeur élevée recommandée.", + L"\n \nLe seuil d'enrayement d'une arme,\nest augmenté par ce pourcentage.\n \nValeur élevée recommandée.", + L"\n \nLe seuil de détérioration d'une arme,\nest augmenté par ce pourcentage.\n \nValeur élevée recommandée.", + L"\n \nUn tir salit l'arme de cette valeur. Le type\ndes munitions et les accessoires peuvent\ninfluer sur cette valeur.\n \nValeur faible recommandée.", + L"\n \nLorsque cet aliment est mangé, il provoque un empoisonnement.\n \nValeur faible recommandée.", + L"\n \nValeur énergétique en kcal.\n \nValeur élevée recommandée.", + L"\n \nQuantité d'eau en litres.\n \nValeur élevée recommandée.", + 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"", + 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 + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nLa précision de cette arme a été modifiée\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAugmenter la précision permet de toucher une cible\nà longue distance plus souvent.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", + L"\n \nCette arme modifie la précision du tireur,\nde n'importe quel mode de tir, de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", + L"\n \nCette arme modifie la précision du tireur,\nde n'importe quel mode de tir, du pourcentage suivant.\nPourcentage basé sur la précision initiale du tireur.\n \nValeur élevée recommandée.", + L"\n \nCette arme modifie la quantité de précision gagnée\nà chaque niveau de visée de la valeur suivante.\n \nÉchelle : -100 à +100.\nValeur élevée recommandée.", + L"\n \nCette arme modifie la quantité de précision gagnée\nà chaque niveau de visée du pourcentage suivant.\nPourcentage basé sur la précision initiale du tireur.\n \nValeur élevée recommandée.", + L"\n \nLe nombre de niveaux de visée supplémentaires permis par\ncette arme, a été modifié par une munition, un accessoire\n ou bien intégré dans les attributs.\nSi le nombre de niveaux de visée a baissé, c'est que l'arme est\nplus rapide à viser sans perdre en précision.\n \nInversement, si le nombre de visée a augmenté, l'arme sera\nplus lente à viser sans perdre en précision.\n \nValeur faible recommandée.", + L"\n \nCette arme modifie la précision maximum du tireur\nbasé sur un pourcentage de la précision initiale maximale.\n \nValeur élevée recommandée.", + L"\n \nLes accessoires ou les caractéristiques de l'arme modifient\nsa difficulté de prise en main.\n \nUne meilleure prise en main, l'arme sera plus précise\navec ou sans niveaux de visée supplémentaires.\n \nNotez que c'est basé sur le facteur de prise en main des armes,\nqui est plus élevé pour les fusils et armes lourdes que\nles pistolets et armes légères.\n \nValeur faible recommandée.", + L"\n \nL'habilité de l'arme à compenser les tirs\nqui sont hors de portée est modifié par un\naccessoire ou les caractéristiques de l'arme.\n \nUne valeur élevée peut augmenter la portée maximale\nde l'arme de quelques cases.\n \nValeur élevée recommandée.", + L"\n \nL'habilité de l'arme à toucher une cible en mouvement\nà distance a été modifiée par un accessoire ou\nun attribut inhérent à l'arme.\n \nUne valeur élevée peut vous aider à toucher\nune cible en mouvement, même à distance.\n \nValeur élevée recommandée.", + L"\n \nLa puissance d'impact de votre arme a été modifiée\npar une munition, un accessoire ou attribut inhérent à l'arme.\n \nValeur élevée recommandée.", + L"\n \nLa puissance d'impact de votre arme de mêlée a été modifiée\npar un accessoire ou attribut inhérent à l'arme.\n \nCeci s'applique uniquement aux armes de mêlée, tranchantes\nou contondantes.\n \nValeur élevée recommandée.", + L"\n \nLa portée maximum de votre arme a été augmentée ou diminuée\ngrâce à une munition, un accessoire ou attribut inhérent à l'arme.\n \nLa portée maximale dicte essentiellement dans quelle mesure une balle\ntirée par l'arme peut voler avant de commencer à tomber\nbrusquement vers le sol.\n \nValeur élevée recommandée.", + L"\n \nCette arme est équipée d'une visée optique,\nrendant les tirs à distance plus facile à réaliser.\n \nNotez qu'un facteur de grossissement trop élevée est préjudiciable\nquand la cible est plus PROCHE que la distance optimale.\n \nValeur élevée recommandée.", + L"\n \nCette arme est équipée d'un système de projection\n(tel qu'un laser), qui projette un point sur la\ncible, rendant le tir plus facile.\n \nCette projection est seulement utile à une certaine distance\n, au-delà elle diminue puis éventuellement disparaît.\n \nValeur élevée recommandée.", + L"\n \nLe recul horizontal de cette arme a été modifié\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAucun effet, si l'arme ne possède pas de mode auto et/ou rafale.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", + L"\n \nLe recul vertical de cette arme a été modifié\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAucun effet, si l'arme ne possède pas de mode auto et/ou rafale.\n \nRéduire le recul permet de garder plus facilement le canon\npointé sur la cible pendant la salve.\n \nValeur faible recommandée.", + L"\n \nCette arme modifie la capacité du tireur à faire face\nau recul durant une salve en mode auto ou rafale,\ngrâce à une munition, un accessoire ou un attribut inhérent à l'arme.\n \nUne valeur élevée permet d'aider le tireur a contrôler une arme\navec un fort recul, même s'il a peu de force.\n \nValeur élevée recommandée.", + L"\n \nCette arme modifie la capacité du tireur à compenser\nle recul durant une salve en mode auto ou rafale,\ngrâce à une munition, un accessoire ou un attribut inhérent à l'arme.\n \nUne valeur élevée permet de corriger le recul pour garder le canon\nsur la cible, même à longue distance,\nrendant ainsi la salve plus précise.\n \nValeur élevée recommandée.", + L"\n \nCette arme modifie la capacité du tireur à adapter à chaque\nà chaque fréquence l'effort de compensation du recul durant\nune salve en mode auto ou rafale,\ngrâce à une munition, un accessoire ou un attribut inhérent à l'arme.\n \nUne fréquence élevée de compensation permet une salve très précise\net ainsi permettre des tirs en rafale et auto à très longues portées,\nen supposant que le tireur puisse couvrir le recul correctement.\n \nValeur élevée recommandée.", + L"\n \nLorsque tenue en main, cette arme modifie la quantité de\nPA que le mercenaire a au début de chaque tour.\n \nValeur élevée recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour mettre en joue avec cette arme, a été\nmodifié.\n \nValeur faible recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour faire une attaque simple avec cette arme,\na été modifié.\n \nNotez que les modes auto et rafale de l'arme,\nont leur coût directement influencé par ce facteur.\n \nValeur faible recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour faire une rafale avec cette arme,\na été modifié.\n \nValeur faible recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour faire une salve en auto avec cette arme,\na été modifié.\n \nNotez que cela ne modifie pas le coût supplémentaire en PA\nlorsque vous ajoutez des balles à la salve, mais\nseulement son coût initial.\n \nValeur faible recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle nombre de PA pour recharger cette arme,\na été modifié.\n \nValeur faible recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla taille des munitions qui peuvent être chargées sur cette arme,\na été modifiée.\n \nCette arme peut maintenant accepter des tailles plus ou moins grandes de munitions\nayant un même calibre.\n \nValeur élevée recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla quantité de balles tirées par cette arme en mode rafale,\na été modifiée.\n \nSi cette arme n'a pas de mode rafale et que la\nvaleur est positive, alors cet objet donnera à l'arme la possibilité\nde tirer en mode rafale.\n \nInversement, s'il y a un mode rafale\net une valeur négative, cela peut retirer le mode rafale.\n \nValeur élevée généralement recommandée. Gardez bien à l'esprit\nque le mode rafale est là pour conserver les munitions...", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\ncette arme ne produira pas de flash lors du tir.\n \nCela permettra au tireur de ne pas se faire repérer\net de rester à couvert, s'il l'est.\nChose importante de nuit...", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nle bruit généré par l'arme, a été modifié. La distance\nà laquelle les ennemis et mercenaires peuvent entendre votre tir, a changé.\n \nSi ce facteur de l'intensité sonore de l'arme a 0\n, elle deviendra alors indédectable.\n \nValeur faible recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla catégorie de la taille de cette arme a changé.\n \nLa taille est importante dans le nouveau système d'inventaire,\noù les poches n'acceptent qu'une taille et des formes spécifiques.\n \nAugmenter la taille d'un objet peut le rendre trop gros pour des poches.\n \nInversement, réduire sa taille peut permettre de l'insérer dans plus de poches\net les poches seront à même de contenir plus d'objets.\n \nValeur faible généralement recommandée.", + L"\n \nGrâce à une munition, un accessoire ou un attribut inhérent à l'arme,\nla fiabilité de cette arme a changé.\n \nSi positive, l'état de l'arme se détériore\nmoins rapidement, si utilisé en combat. Mais hors combat\nelle se détériore plus rapidement.\n \nValeur élevée recommandée.", + L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone forestière du porteur.\n \nPour avoir un facteur de camouflage efficace en forêt,\nvous devez être près d'arbres ou d'herbes hautes.\n \nValeur élevée recommandée.", + L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone urbaine du porteur.\n \nPour avoir un facteur de camouflage efficace en zone urbaine,\nvous devez être près de bâtîments.\n \nValeur élevée recommandée.", + L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone désertique du porteur.\n \nPour avoir un facteur de camouflage efficace en zone désertique,\nvous devez être près du sable ou d'une végétation désertique.\n \nValeur élevée recommandée.", + L"\n \nQuand cette arme est tenue à la main, elle modifie\nle camouflage en zone enneigée du porteur.\n \nPour avoir un facteur de camouflage efficace en zone enneigée,\nvous devez être près de cases enneigés.\n \nValeur élevée recommandée.", + L"\n \nQuand cette arme est tenue à la main, elle modifie\nla discrétion du porteur en rendant le mercenaire\nplus difficile à entendre lorsqu'il se déplace en mode discrétion.\n \nNotez que cela ne change en rien sur la visibilité du mercenaire,\nmais seulement la quantité de sons émis lors d'un déplacement en silence.\n \nValeur élevée recommandée.", + L"\n \nQuand cette arme est tenue à la main, elle modifie\nl'audition du porteur du pourcentage suivant.\n \nUne valeur positive rend possible l'écoute de sons\nprovenant de longues distances.\n \nInversement, une valeur négative détériore l'audition du porteur.\n \nValeur élevée recommandée.", + L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision dans toutes les conditions.\n \nValeur élevée recommandée.", + L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision de nuit lorsqu'il y a peu de lumière ambiante.\n \nValeur élevée recommandée.", + L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision de jour lorsque l'intensité de la lumière\nest normale ou forte.\n \nValeur élevée recommandée.", + L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision lorsque l'intensité de la lumière est très forte.\n \nValeur élevée recommandée.", + L"\n \nLorsque cette arme est prête à tirer,\nelle modifie la vision du porteur du pourcentage suivant,\ngrâce à un accessoire ou un attribut inhérent à l'arme.\n \nModification de la vision lorsque vous êtes dans un sous-sol sombre.\n \nValeur élevée recommandée.", + L"\n \nLorsque cette arme est prête à tirer,\nelle modifie le champ de vision du porteur.\n \nRéduisant le champ de vision de chaque côté.\n \nValeur faible recommandée.", + L"\n \nHabilité du tireur à faire face au recul\nlors d'un tir en mode rafale ou auto.\n \nValeur élevée recommandée.", + L"\n \nFréquence de recalcule du tireur pour ajuster la force\nqu'il doit mettre pour contrer le recul de l'arme, lors d'un tir\nen mode rafale ou auto.\n \nUne fréquence faible rend la salve plus précise en supposant que\nle tireur puisse surmonter le recul correctement.\n \nValeur faible recommandée.", + L"\n \nLa chance de toucher la cible avec cette arme,\na été modifiée par une munition, un accessoire ou\nun attribut inhérent à l'arme.\n \nAugmenter la chance de toucher permet de toucher plus souvent\nune cible, en supposant que le tireur a bien visé.\n \nValeur élevée recommandée.", + L"\n \nLes bonus de visée de cette arme, ont été modifiés\npar une munition, un accessoire ou un attribut inhérent à l'arme.\n \nAugmenter les bonus de visée, permet de toucher\nune cible à longue distance plus souvent, en supposant\nque le tireur a bien visé.\n \nValeur élevée recommandée.", + L"\n \nUn tir augmente la température de l'arme de cette valeur.\nLes munitions peuvent influer sur cette valeur.\n \nValeur faible recommandée.", + L"\n \nÀ chaque tour, la température de l'arme diminue\nde cette valeur.\nLes accessoires des armes peuvent influer\nsur cette valeur.\n \nValeur élevée recommandée.", + L"\n \nSi la température d'une arme dépasse cette valeur,\nelle s'enrayera plus souvent.", + L"\n \nSi la température d'une arme dépasse cette valeur,\nelle se détériorera plus facilement.", + L"\n \nLa force de recul de cette arme est modifiée par cette\nvaleur en pourcentage par ses munitions, ses objets attachés\nou ses caractéristiques. N'a aucun effet si l'arme n'a pas\nde mode rafale ni de mode automatique. Réduire le recul\npermet de mieux garder la bouche de l'arme pointée sur\nla cible lors d'une rafale.\n \nValeur faible recommandée.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"SIMPLE", + L"PA", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"Fin du tri des munitions par caisses/boîtes au secteur %c%d.", + L"Fin du démontage de tous les accessoires au secteur %c%d.", + L"Fin du déchargement des armes au secteur %c%d.", + L"Fin du classement et de l'empilage par type au secteur %c%d.", + // Bob: new strings for emptying LBE items + L"Finished emptying LBE items in sector %c%d.", + L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Tout voir", + L"Armes", + L"Munitions", + L"Explosifs", + L"Armes blanches", + L"Protections", + L"LBE", + L"Kits", + L"Objets divers", + L"Cacher tout", +}; + +STR16 gzMercCompare[] = +{ + L"???", + L"Base opinion:", + + L"Dislikes %s %s", + L"Likes %s %s", + + L"Strongly hates %s", + L"Hates %s", // 5 + + L"Deep racism against %s", + L"Racism against %s", + + L"Cares deeply about looks", + L"Cares about looks", + + L"Very sexist", // 10 + L"Sexist", + + L"Dislikes other background", + L"Dislikes other backgrounds", + + L"Past grievances", + L"____", // 15 + L"/", + L"* Opinion is always in [%d; %d]", // TODO.Translate +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = +{ + L"Température ", + L"très basse", + L"basse", + L"moyenne", + L"haute", + L"très haute", + L"dangereuse", + L"CRITIQUE", + L"EXTRÊME", + L"inconnue", + L"." +}; + +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"C'est ", + L"frais", + L"assez frais", + L"consommable", + L"périmé", + L"malsain", + L"nocif", + L"." +}; + +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Rc. ", //ExpLevel 1 + L"Sdt ", //ExpLevel 2 + L"Cpl ", //ExpLevel 3 + L"Sgt ", //ExpLevel 4 + L"Maj ", //ExpLevel 5 + L"Lt ", //ExpLevel 6 + L"Cne ", //ExpLevel 7 + L"Cdt ", //ExpLevel 8 + L"Col ", //ExpLevel 9 + L"Gal " //ExpLevel 10 +}; + +STR16 gzNewLaptopMessages[]= +{ + L"Renseignez-vous sur notre offre spéciale !", + L"Temporairement indisponible", + L"Un bref aperçu sur Jagged Alliance 2 : Unfinished Businessn, il contient six secteurs de la carte. La version finale du jeu proposera beaucoup plus. Lisez le fichier readme inclus pour plus de détails.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Distance cible: %d tiles, Brightness: %d/%d", + L"Vous reliez l'antenne de ce portable au vôtre.", + L"Vous n'avez pas les moyens d'engager %s", + L"Pour une durée limitée, les frais ci-dessus couvrent la mission entière, paquetage ci-dessous compris.", + L"Engagez %s et découvrez dès à présent notre prix \"tout compris\". Aussi inclus dans cette incroyable offre, le paquetage personnel du mercenaire sans frais supplémentaires.", + L"Frais", + L"Il y a quelqu'un d'autre dans le secteur...", + //L"Portée arme: %d tiles, de chances: %d pourcent", + L"Afficher couverture", + L"Champs de vision", + L"Les nouvelles recrues ne peuvent arriver ici.", + L"Comme votre portable n'a pas d'antenne, vous ne pouvez pas engager de nouvelles recrues. Revenez à une sauvegarde précédente et réessayez.", + L"%s entend le son de métal broyé provenant d'en dessous du corps de Jerry. On dirait que l'antenne de votre portable ne sert plus à rien.", //the %s is the name of a merc. @@@ Modified + L"Apres avoir scanné la note laissée par le commandant adjoint Morris, %s sent une oppurtinité. La note contient les coordonnées pour le lancement de missiles sur Arulco. Elle contient aussi l'emplacement de l'usine d'où les missiles proviennent.", + L"En examinant le panneau de contrôle, %s s'aperçoît que les chiffres peuvent être inversés pour que les missiles détruisent cette même usine. %s a besoin de trouver un chemin pour s'enfuir. L'ascenseur semble être la solution la plus rapide...", + L"Ceci est un jeu IRON MAN et vous ne pouvez pas sauvegarder, s'il y a des ennemis dans les parages.", // @@@ new text + L"(ne peut pas sauvegarder en plein combat)", //@@@@ new text + L"Le nom de la campagne actuelle est supérieur à 30 lettres.", // @@@ new text + L"La campagne actuelle est introuvable.", // @@@ new text + L"Campagne : Par défaut ( %S )", // @@@ new text + L"Campagne : %S", // @@@ new text + L"Vous avez choisi la campagne %S. Cette campagne est un mod d'Unfinished Business. Êtes-vous sûr de vouloir jouer la campagne %S ?", // @@@ new text + L"Pour pouvoir utiliser l'éditeur, veuillez choisir une autre campagne que celle par défaut.", ///@@new + // anv: extra iron man modes + L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", // TODO.Translate + L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", // TODO.Translate +}; + +// The_bob : pocket popup text defs +STR16 gszPocketPopupText[]= +{ + L"Lance-grenades", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Lance-roquettes", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Armes blanches", // POCKET_POPUP_MEELE_AND_THROWN + L"-Aucune munition-", //POCKET_POPUP_NO_AMMO + L"-Pas d'arme-", //POCKET_POPUP_NO_GUNS + L"plus...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features +STR16 szCovertTextStr[]= +{ + L"%s a du camouflage !", + L"%s a un sac à dos !", + L"%s est vu(e) en train de porter un corps !", + L"%s a un(e) %s suspect(e) !", + L"%s a un(e) %s considéré(e) comme du matériel militaire !", + L"%s transporte trop d'armes !", + L"%s a un(e) %s trop avancé(e) pour un soldat %s !", + L"%s a un(e) %s avec trop d'accessoires !", + L"%s a été repéré(e) en train de commettre des activités douteuses !", + L"%s ne ressemble pas à un civil !", + L"Le sang de %s, a été repéré !", + L"%s est trop ivre pour se comporter comme un soldat !", + L"Le déguisement de %s, ne tiendra pas la route à une inspection !", + L"%s n'est pas supposé(e) être là !", + L"%s n'est pas supposé(e) se trouver là à cette heure !", + L"%s a été trouvé(e) près d'un cadavre !", + L"L'équipement de %s, soulève quelques suspicions !", + L"%s est vu(e) en train de viser %s !", + L"%s a percé le déguisement : %s !", + L"Aucun habit trouvé dans Items.xml !", + L"Ça ne fonctionne pas avec l'ancien système de compétences !", + L"Pas assez de PA !", + L"Mauvaise palette trouvée !", + L"Vous avez besoin de la compétence \"Déguisement\" ou \"Espion\" pour le faire !", + L"Pas d'uniforme trouvé !", + L"%s est maintenant déguisé(e) en civil.", + L"%s est maintenant déguisé(e) en soldat.", + L"%s porte un uniforme dépareillé !", + L"En y repensant, demander une reddition avec un déguisement n'était pas la meilleure des idées...", + L"%%s a été découvert(e) !", + L"Le déguisement de %s a l'air d'aller...", + L"Le déguisement de %s ne marchera pas...", + L"%s a été pris en train de voler !", + L"%s a essayé d'accéder à l'inventaire de %s.", + L"An elite soldier did not recognize %s!", // TODO.Translate + L"A officer knew %s was unfamiliar!", +}; + +STR16 szCorpseTextStr[]= +{ + L"Aucune tête trouvée dans items.xml !", + L"Ce corps n'a plus de tête :", + L"Aucune nourriture trouvée dans Items.xml !", + L"Impossible, vous êtes malade ou une personne tordue !", + L"Aucun habit à prendre !", + L"%s ne peut pas prendre les habits du corps !", + L"Ce corps ne peut être pris !", + L"Pas de main libre pour le corps !", + L"Aucun corps trouvé dans Items.xml !", + L"Identité du corps invalide !", +}; + +STR16 szFoodTextStr[]= +{ + L"%s ne veut pas manger : %s", + L"%s ne veut pas boire : %s", + L"%s mange : %s", + L"%s boit : %s", + L"%s a sa force pénalisée par cause de suralimentation !", + L"%s a sa force pénalisée par cause de sous-alimentation !", + L"%s a sa santé pénalisée par cause de suralimentation !", + L"%s a sa santé pénalisée par cause de sous-alimentation !", + L"%s a sa force pénalisée par cause de hyperhydratation !", + L"%s a sa force pénalisée par cause de déshydratation !", + L"%s a sa santé pénalisée par cause de hyperhydratation !", + L"%s a sa santé pénalisée par cause de déshydratation !", + L"Le remplissage des gourdes n'est pas possible, si le système alimentaire n'est pas activé !" +}; + +STR16 szPrisonerTextStr[]= +{ + L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate + L"Gained $%d as ransom money.", // TODO.Translate + L"Prisonnier(s) ayant révélé les positions ennemies : %d.", + L"Prisonnier(s) ayant rejoint notre cause : %d officiers, %d élite(s), %d régulier(s) et %d administratif(s).", + L"Prisonnier(s) ayant commencé une émeute en %s !", + L"%d prisonnier(s) envoyé(s) en %s !", + L"Prisonnier(s) libéré(s) !", + L"L'armée a délivré la prison en %s et les prisonniers ont été libérés !", + L"L'ennemi refuse de se rendre !", + L"L'ennemi refuse votre reddition... Ils veulent vos têtes !", + L"Ce comportement est désactivé dans vos fichiers ini.", + L"%s a libéré %s !", + L"A high-ranking army officer in %s has been revealed!", // TODO.Translate + L"The enemy leader refuses to even consider surrender!", + L"%d prisoners volunteered to join our forces.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= +{ + L"rien, en fait.", + L"la construction d'une fortification", + L"le retrait d'une fortification", + L"hacking", // TODO.Translate + L"%s a dû arrêter... %s", + L"Cette sorte de barricade ne peut pas être construite dans ce secteur", +}; + +STR16 szInventoryArmTextStr[]= +{ + L"Faire exploser (%d PA)", + L"Faire exploser", + L"Armer (%d PA)", + L"Armer", + L"Désamorcer (%d PA)", + L"Désamorcer", +}; + + +STR16 szBackgroundText_Flags[]= +{ + L" peut consommer des drogues se trouvant dans son inventaire\n", + L" ne tient pas compte des autres passifs\n", + L" +1 Niveau dans les souterrains\n", + L" steals money from the locals sometimes\n", // TODO.Translate + + L" +1 Niveau pour poser des pièges\n", + L" répand la corruption aux mercenaires proches\n", + L" femme seulement", // won't show up, text exists for compatibility reasons + L" homme seulement", // won't show up, text exists for compatibility reasons + + L" huge loyality penalty in all towns if we die\n", // TODO.Translate + + L" refuses to attack animals\n", // TODO.Translate + L" refuses to attack members of the same group\n", // TODO.Translate +}; + + +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% de PA dans les secteurs polaires\n", + L" %s%d%% de PA dans les secteurs désertiques\n", + L" %s%d%% de PA dans les secteurs marécageux\n", + L" %s%d%% de PA dans les secteurs urbains\n", + L" %s%d%% APs in forest sectors\n", // TODO.Translate + L" %s%d%% APs in plain sectors\n", + L" %s%d%% de PA dans les secteurs fluviaux\n", + L" %s%d%% de PA dans les secteurs tropicaux\n", + L" %s%d%% de PA dans les secteurs côtiers\n", + L" %s%d%% de PA dans les secteurs montagneux\n", + + L" %s%d%% en agilité\n", + L" %s%d%% en dextérité\n", + L" %s%d%% en force\n", + L" %s%d%% en commandement\n", + L" %s%d%% au tir\n", + L" %s%d%% en mécanique\n", + L" %s%d%% en explosifs\n", + L" %s%d%% en médecine\n", + L" %s%d%% en sagesse\n", + + L" %s%d%% de PA sur les toits\n", + L" %s%d%% de PA nécessaire pour nager\n", + L" %s%d%% de PA nécessaire pour les actions de fortification\n", + L" %s%d%% de PA nécessaire pour utiliser un mortier\n", + L" %s%d%% de PA nécessaire pour utiliser l'inventaire\n", + L" toujours opérationnel après un parachutage\n %s%d%% de PA après un parachutage\n", + L" %s%d%% de PA au premier tour lors d'un assaut d'un secteur\n", + + L" %s%d%% de vitesse dans les voyages à pied\n", + L" %s%d%% de vitesse dans les voyages en véhicule\n", + L" %s%d%% de vitesse dans les voyages aériens\n", + L" %s%d%% de vitesse dans les voyages sur l'eau\n", + + L" %s%d%% de résistance à la peur\n", + L" %s%d%% de résistance au tir de couverture\n", + L" %s%d%% de résistance physique\n", + L" %s%d%% de résistance à l'alcool\n", + L" %s%d%% disease resistance\n", // TODO.Translate + + L" %s%d%% d'efficacité dans les interrogatoires\n", + L" %s%d%% d'efficacité comme gardien de prison\n", + L" %s%d%% meilleurs prix au marchandage d'armes et de munitions\n", + L" %s%d%% meilleurs prix au marchandage d'armures, de LBE, d'armes blanches, kits etc.\n", + L" %s%d%% à la force de capitulation de l'équipe, si nous menons les négociations\n", + L" %s%d%% plus rapide à la marche\n", + L" %s%d%% de vitesse de bandage\n", + L" %s%d%% breath regeneration\n", // TODO.Translate + L" %s%d%% de force pour porter des objets\n", + L" %s%d%% de besoins énergétiques (nourriture)\n", + L" %s%d%% de réhydratation nécessaire (eau)\n", + L" %s%d de besoin de sommeil\n", + L" %s%d%% de dégâts avec une arme de mêlée\n", + L" %s%d%% de chance de toucher avec des armes blanches\n", + L" %s%d%% d'efficacité dans le camouflage\n", + L" %s%d%% en discrétion\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 journée\n", + L" %s%d d'efficacité à désamorcer les pièges\n", + L" %s%d%% CTH with SAMs\n", // TODO.Translate + + 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 menaçante\n", + L" %s%d%% d'efficacité dans une approche de recrutement\n", + + L" %s%d%% de chance de succès avec les explosifs d'ouverture de porte\n", + L" %s%d%% de CDT avec des armes à feu contre les créatures\n", + L" %s%d%% du coût de l'assurance\n", + L" %s%d%% d'efficacité comme guetteur pour vos tireurs d'élite\n", + L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate + L" %s%d%% effectiveness at treating population against diseases\n", + L"Can spot tracks up to %d tiles away\n", + L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% chance to evade snake attacks\n", // TODO.Translate + + L" dislikes some other backgrounds\n", // TODO.Translate + L"Smoker", + L"Nonsmoker", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% building speed\n", + L" hacking skill: %s%d ", // TODO.Translate + L" %s%d%% burial speed\n", // TODO.Translate + L" %s%d%% administration effectiveness\n", // TODO.Translate + L" %s%d%% exploration effectiveness\n", // TODO.Translate +}; + +STR16 szBackgroundTitleText[] = +{ + L"IMP : Passif", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = +{ + L"IMP : Préjugés", +}; + +STR16 szPersonalityDisplayText[]= +{ + L"Vous êtes", + L"et l'apparence est", + L"importante pour vous.", + L"Vos", + L"sont", + L"essentielles.", + L"Vous êtes", + L"vous haïssez tout", + L".", + L"raciste envers les non-", + L".", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"Comment vous voyez-vous ?", + L"Quelle importance accordez-vous\nau regard des autres ?", + L"Quels sont vos manières ?", + L"Quelle est l'importance des manières des autres pour vous ?", + L"Quelle est votre nationalité ?", + L"Vous haïssez quelle nationalité ?", + L"À quel point les haïssez-vous ?", + L"À quel point êtes-vous raciste ?", + L"Quelle est votre race ? Et vous serez\nraciste contre toutes les autres.", + L"À quel point êtes-vous sexiste ?", +}; + +STR16 szRaceText[]= +{ + L"Blancs", + L"Noirs", + L"Asiatiques", + L"Esquimaux", + L"Hispaniques", +}; + +STR16 szAppearanceText[]= +{ + L"quelconque", + L"laid", + L"ordinaire", + L"attirant", + L"très beau", +}; + +STR16 szRefinementText[]= +{ + L"manières banales", + L"manières de plouc", + L"manières de snob", +}; + +STR16 szRefinementTextTypes[] = // TODO.Translate +{ + L"normal people", + L"slobs", + L"snobs", +}; + +STR16 szNationalityText[]= +{ + L"Américain", // 0 + L"Arabe", + L"Australien", + L"Anglais", + L"Canadien", + L"Cubain", // 5 + L"Danois", + L"Français", + L"Russe", + L"Traconian", + L"Suisse", // 10 + L"Jamaïcain", + L"Polonais", + L"Chinois", + L"Irlandais", + L"Sud Africain", // 15 + L"Hongrois", + L"Écossais", + L"Arulcain", + L"Allemand", + L"Africain", // 20 + L"Italien", + L"Néerlandais", + L"Roumain", + L"Métavirien", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"Belarusian", + L"Belge", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"Brésilien", + L"Bulgare", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"Estonien", + L"Ethiopian", + L"Filipino", // 50 + L"Finlandais", + L"Georgian", + L"Grec", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Indien", + L"Indonesian", + L"Iranien", + L"Irakien", // 60 + L"Islandic", + L"Israélien", + L"Japonais", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Mexicain", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Nigérian", + L"Nigerien", + L"Norvégien", + L"Pakistani", // 85 + L"Panamanian", + L"Portugais", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"Serbian", + L"Slovakian", + L"Slovenian", + L"Somali", + L"Espagnol", // 95 + L"Sudanese", + L"Suédois", + L"Syrien", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"Turc", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"Vénézuélien", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +STR16 szNationalityTextAdjective[] = // TODO.Translate +{ + L"americans", // 0 + L"arabs", + L"australians", + L"britains", + L"canadians", + L"cubans", // 5 + L"danes", + L"frenchmen", + L"russians", + L"traconians", + L"swiss", // 10 + L"jamaicans", + L"poles", + L"chinese", + L"irishmen", + L"south africans", // 15 + L"hungarians", + L"scotsmen", + L"arulcans", + L"germans", + L"africans", // 20 + L"italians", + L"dutchmen", + L"romanians", + L"metavirans", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"belarusians", + L"belgians", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"brasilians", + L"bulgarians", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"estonians", + L"ethiopians", + L"filipinos", // 50 + L"finns", + L"georgians", + L"greek", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"indians", + L"indonesians", + L"iranians", + L"iraqis", // 60 + L"islandics", + L"israelis", + L"japanese", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"mexicans", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"nigerians", + L"nigeriens", + L"norwegians", + L"pakistanis", // 85 + L"panamanians", + L"portoguese", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"serbians", + L"slovakians", + L"slovenians", + L"somali", + L"spaniards", // 95 + L"sudanese", + L"swedes", + L"syrians", + L"thais", + L"togolese", // 100 + L"tunisians", + L"turks", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"venezuelans", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"et n'haïssez aucune autre nationalité.", // used in personnel.cpp + L"apatride", // used in IMP generation +}; + +STR16 szCareLevelText[]= +{ + L"non", + L"vaguement", + L"bigrement", +}; + +STR16 szRacistText[]= +{ + L"pas", + L"un peu", + L"très", +}; + +STR16 szSexistText[]= +{ + L"pas sexiste", + L"un peu sexiste", + L"très sexiste", + L"un gentleman", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"État : ", + L"Chargée", + L"Bonne", + L"À moitié chargée", + L"Faible", + L"Morte", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= +{ + L"Mercenaire", + L"Milicien", + L"Soldat", + L"Vétéran", + + L"Civil", + + L"Administratif", + L"Soldat régulier", + L"Soldat d'élite", + L"Char", + + L"Animal", + L"Zombi", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"%s : Conseil de presse", + L"Ministère de l'information %s", + L"Mouvement révolutionnaire à %s", + L"The Times International", + L"International Times", + L"RIS (Renseignements Internationaux Spécialisés)", + + L"Recueille les articles de presse sur %s", + L"Nous sommes une source d'information neutre. Nous collectons différents articles d'actualité venant d'%s. Nous ne jugeons pas ces sources, nous nous contentons de les publier, pour que vous puissiez vous faire votre avis. Nous faisons paraitre des articles de différentes sources, venant :", + + L"Bilan du conflit", + L"Rapports", + L"News", + L"À propos de nous", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s en %s.", + + L"la guérilla", + L"l'armée", + + L"a attaqué", + L"a pris en embuscade", + L"héliportée a attaqué", + + L"L'attaque est venue %s.", + L"%s a eu des renforts venant %s.", + L"L'attaque est venue %s. %s a eu des renforts venant %s.", + L"du nord", + L"de l'est", + L"du sud", + L"de l'ouest", + L"et", + L"d'une direction inconnue", + + L"Des bâtiments ont été endommagés.", + L"Dans les combats, des bâtiments ont été endommagés. Il y a eu %d civil(s) tué(s) et %d blessé(s).", + L"Pendant l'attaque, %s et %s ont appelé des renforts.", + L"Pendant l'attaque, %s a appelé des renforts.", + L"Les témoins rapportent l'utilisation d'armes chimiques par les deux camps.", + L"Des armes chimiques ont été utilisées par %s.", + L"L'escalade du conflit s'aggrave ; les deux camps ont déployés des chars.", + L"Il y avait %d chars pour renforcer %s. %d d'entre eux ont été détruits dans des combats acharnés.", + L"Les deux camps avaient des tireurs d'élite.", + L"Des sources non vérifiées indiquent que des tireurs d'élite de %s ont été impliqués dans le combat.", + L"Ce secteur a une très grande importance stratégique, car il abrite l'une des rares batteries de missiles sol-air que l'armée %s possède. Des photographies aériennes montrent les dégâts du centre de commande. Ça laissera l'espace aérien %s sans défense pour le moment.", // TODO.Translate //A voir fini (to see finished) + L"La situation sur le terrain est devenue encore plus confuse, car il semble que le combat des rebelles a pris un nouveau virage. On a maintenant la confirmation qu'une milice rebelle s'est engagée activement avec les mercenaires étrangers.", + L"La position des royalistes semble plus précaire qu'on ne le pensait. Des rapports d'une scission au sein de l'armée ont fait surface, impliquant des échanges de feu au sein même du personnel militaire.", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"Tard dans la nuit", // 23 - 3 + L"À l'aube", // 3 - 6 + L"Tôt ce matin", // 6 - 8 + L"Dans la matinée", // 8 - 11 + L"À midi", // 11 - 14 + L"Dans l'après-midi", // 14 - 18 + L"Dans la soirée", // 18 - 21 + L"Dans la nuit", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Fond initial", + L"Revenu des mines", + L"Commerce", + L"Autres", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Munition", + L"Explosifs", + L"Nourriture", + L"Matériel médical", + L"Maintenance", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"Dans une bataille extrêmement meurtrière et inégale, l'armée a été anéantie sans trop de résistance.", + + L"Les rebelles ont facilement vaincu l'armée, infligeant de lourdes pertes.", + L"Sans trop d'effort, les rebelles ont infligé de lourdes pertes à l'armée et ont fait plusieurs prisonniers.", + + L"Dans un combat meurtrier, les rebelles ont réussi à écraser la partie adversaire. L'armée a subi des pertes sévères.", + L"Les rebelles ont subi des pertes, mais ont vaincu les royalistes. Des sources non vérifiées disent que plusieurs soldats auraient été faits prisonniers.", + + L"Dans une victoire à la Pyrrhus, les rebelles ont vaincu les royalistes, mais ils ont subi de lourdes pertes. Il n'est pour l'instant pas possible de dire s'ils arriveront à tenir position face à des assauts répétés.", + + L"La supériorité numérique de l'armée a été l'élément déterminant de ce combat. Les rebelles n'avaient aucune chance et ont dû se replier pour ne pas être tués ou capturés.", + L"Malgré le nombre élevé de rebelles dans ce secteur, l'armée les a facilement repoussés.", + + L"Les rebelles n'étaient clairement pas préparés à affronter la supériorité numérique de l'armée, ni son niveau d'équipement. Ils ont été aisément vaincus.", + L"Même si les rebelles étaient plus nombreux sur le terrain, l'armée était mieux équipée. Les rebelles ont évidemment perdu.", + + L"La violence des combats a fait des pertes considérables dans les deux camps, mais à la fin, la supériorité numérique l'armée a fait pencher la balance en sa faveur. La force rebelle a été anéantie. Il pourrait y avoir des survivants, mais nous ne pouvons pas confirmer cette source pour le moment.", + L"Lors d'une fusillade intense, l'entraînement supérieur de l'armée a fait pencher la balance en sa faveur. Les rebelles ont dû battre en retraite.", + + L"Aucun des deux camps n'était prêt à se soumettre. Alors que l'armée a finalement écarté la menace rebelle de la zone, leurs pertes conséquentes ont conduit l'unité à continuer d'exister uniquement de nom. Mais il est clair que les rebelles vont rapidement être à court d'hommes et de femmes si l'armée continue ce taux d'attrition.", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"Hors sujet", + L"Fait mineur", + L"Fait notable", + L"Fait marquant", + L"Fait significatif", + L"Fait intéressant", + L"Fait important", + L"Fait très important", + L"Fait grave", + L"Fait majeur", + L"Fait historique", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"Tué", + L"Blessé", + L"Prisonnier", + L"Tir", + + L"Compte", + L"Logistique", + L"Pertes", + L"Participant", + + L"Promotion", + L"Bilan", + L"Récit", + L"Précédent", + + L"Suivant", + L" :", + L"Jour", +}; + +STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate +{ + L"Glorious %s", + L"Mighty %s", + L"Awesome %s", + L"Intimidating %s", + + L"Powerful %s", + L"Earth-Shattering %s", + L"Insidious %s", + L"Swift %s", + + L"Violent %s", + L"Brutal %s", + L"Relentless %s", + L"Merciless %s", + + L"Cannibalistic %s", + L"Gorgeous %s", + L"Rogue %s", + L"Dubious %s", + + L"Sexually Ambigious %s", + L"Burning %s", + L"Enraged %s", + L"Visonary %s", + + // 20 + L"Gruesome %s", + L"International-law-ignoring %s", + L"Provoked %s", + L"Ceaseless %s", + + L"Inflexible %s", + L"Unyielding %s", + L"Regretless %s", + L"Remorseless %s", + + L"Choleric %s", + L"Unexpected %s", + L"Democratic %s", + L"Bursting %s", + + L"Bipartisan %s", + L"Bloodstained %s", + L"Rouge-wearing %s", + L"Innocent %s", + + L"Hateful %s", + L"Underwear-staining %s", + L"Civilian-devouring %s", + L"Unflinching %s", + + // 40 + L"Expect No Mercy From Our %s", + L"Very Mad %s", + L"Ultimate %s", + L"Furious %s", + + L"Its best to Avoid Our %s", + L"Fear the %s", + L"All Hail the %s!", + L"Protect the %s", + + L"Beware the %s", + L"Crush the %s", + L"Backstabbing %s", + L"Vicious %s", + + L"Sadistic %s", + L"Burning %s", + L"Wrathful %s", + L"Invincible %s", + + L"Guilt-ridden %s", + L"Rotting %s", + L"Sanitized %s", + L"Self-doubting %s", + + // 60 + L"Ancient %s", + L"Very Hungry %s", + L"Sleepy %s", + L"Demotivated %s", + + L"Cruel %s", + L"Annoying %s", + L"Huffy %s", + L"Bisexual %s", + + L"Screaming %s", + L"Hideous %s", + L"Praying %s", + L"Stalking %s", + + L"Cold-blooded %s", + L"Fearsome %s", + L"Trippin' %s", + L"Damned %s", + + L"Vegetarian %s", + L"Grotesque %s", + L"Backward %s", + L"Superior %s", + + // 80 + L"Inferior %s", + L"Okay-ish %s", + L"Porn-consuming %s", + L"Poisoned %s", + + L"Spontaneous %s", + L"Lethargic %s", + L"Tickled %s", + L"The %s is a dupe!", + + L"%s on Steroids", + L"%s vs. Predator", + L"A %s with a twist", + L"Self-Pleasuring %s", + + L"Man-%s hybrid", + L"Inane %s", + L"Overpriced %s", + L"Midnight %s", + + L"Capitalist %s", + L"Communist %s", + L"Intense %s", + L"Steadfast %s", + + // 100 + L"Narcoleptic %s", // TODO.Translate + L"Bleached %s", + L"Nail-biting %s", + L"Smite the %s", + + L"Bloodthirsty %s", + L"Obese %s", + L"Scheming %s", + L"Tree-Humping %s", + + L"Cheaply made %s", + L"Sanctified %s", + L"Falsely accused %s", + L"%s to the rescue", + + L"Crab-people vs. %s", + L"%s in Space!!!", + L"%s vs. Godzilla", + L"Untamed %s", + + L"Durable %s", + L"Brazen %s", + L"Greedy %s", + L"Midnight %s", + + // 120 + L"Confused %s", + L"Irritated %s", + L"Loathsome %s", + L"Manic %s", + + L"Ancient %s", + L"Sneaking %s", + L"%s of Doom", + L"%s's revenge", + + L"A %s on the run", + L"A %s out of time", + L"One with %s", + L"%s from hell", + + L"Super-%s", + L"Ultra-%s", + L"Mega-%s", + L"Giga-%s", + + L"A quantum of %s", + L"Her Majesties' %s", + L"Shivering %s", + L"Fearful %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Dragon", + L"Mountain Lion", + L"Copperhead Snake", + L"Jack Russell Terrier", + + L"Arch-Nemesis", + L"Basilisk", + L"Blade", + L"Shield", + + L"Hammer", + L"Spectre", + L"Congress", + L"Oilfield", + + L"Boyfriend", + L"Girlfriend", + L"Husband", + L"Stepmother", + + L"Sand Lizard", + L"Bankers", + L"Anaconda", + L"Kitten", + + // 20 + L"Congress", + L"Senate", + L"Cleric", + L"Badass", + + L"Bayonet", + L"Wolverine", + L"Soldier", + L"Tree Frog", + + L"Weasel", + L"Shrubbery", + L"Tar pit", + L"Sunset", + + L"Hurricane", + L"Ocelot", + L"Tiger", + L"Defense Industry", + + L"Snow Leopard", + L"Megademon", + L"Dragonfly", + L"Rottweiler", + + // 40 + L"Cousin", + L"Grandma", + L"Newborn", + L"Cultist", + + L"Disinfectant", + L"Democracy", + L"Warlord", + L"Doomsday Device", + + L"Minister", + L"Beaver", + L"Assassin", + L"Rain of Burning Death", + + L"Prophet", + L"Interloper", + L"Crusader", + L"Administration", + + L"Supernova", + L"Liberty", + L"Explosion", + L"Bird of Prey", + + // 60 + L"Manticore", + L"Frost Giant", + L"Celebrity", + L"Middle Class", + + L"Loudmouth", + L"Scape Goat", + L"Warhound", + L"Vengeance", + + L"Fortress", + L"Mime", + L"Conductor", + L"Job-Creator", + + L"Frenchman", + L"Superglue", + L"Newt", + L"Incompetency", + + L"Steppenwolf", + L"Iron Anvil", + L"Grand Lord", + L"Supreme Ruler", + + // 80 + L"Dictator", + L"Old Man Death", + L"Shredder", + L"Vacuum Cleaner", + + L"Hamster", + L"Hypno-Toad", + L"Discjockey", + L"Undertaker", + + L"Gorgon", + L"Child", + L"Mob", + L"Raptor", + + L"Goddess", + L"Gender Inequality", + L"Mole", + L"Baby Jesus", + + L"Gunship", + L"Citizen", + L"Lover", + L"Mutual Fund", + + // 100 + L"Uniform", // TODO.Translate + L"Saber", + L"Snow Leopard", + L"Panther", + + L"Centaur", + L"Scorpion", + L"Serpent", + L"Black Widow", + + L"Tarantula", + L"Vulture", + L"Heretic", + L"Zombie", + + L"Role-Model", + L"Hellhound", + L"Mongoose", + L"Nurse", + + L"Nun", + L"Space Ghost", + L"Viper", + L"Mamba", + + // 120 + L"Sinner", + L"Saint", + L"Comet", + L"Meteor", + + L"Can of worms", + L"Fish oil pills", + L"Breastmilk", + L"Tentacle", + + L"Insanity", + L"Madness", + L"Cough reflex", + L"Colon", + + L"King", + L"Queen", + L"Bishop", + L"Peasant", + + L"Tower", + L"Mansion", + L"Warhorse", + L"Referee", + + // 140 +}; + +STR16 szMercCompareWebSite[] = // TODO.Translate +{ + // main page + L"Mercs Love or Dislike You", + L"Your #1 teambuilding experts on the web", + + L"About us", + L"Analyse a team", + L"Pairwise comparison", + L"Customer voices", + + L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"Your team struggles with itself.", + L"Your employees waste time working against each other.", + L"Your workforce experiences a high fluctuation rate.", + L"You constantly receive low marks on workplace satisfaction ratings.", + L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"A few citations from our satisfied customers:", + L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G., Novelist-", + L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C., Corrective law enforcement-", + L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W., Snake charmer-", + L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L., SPK-", + L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C., NASA-", + L"I fully recommend this site!", + L"-Kasper H., H&C logistic Inc-", + L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke, Kerberus Inc-", + + // analyze + L"Choose your employee", + L"Choose your squad", + + // error messages + L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s shot me!", + L"%s is scheming behind my back", + L"%s interfered in my business", + L"%s is friends with my enemy", + + L"%s got a contract before I did", + L"%s ordered a shameful retreat", + L"%s massacred the innocent", + L"%s slows us down", + + L"%s doesn't share food", + L"%s jeopardizes the mission", + L"%s is a drug addict", + L"%s is thieving scum", + + L"%s is an incompetent commander", + L"%s is overpaid", + L"%s gets all the good stuff", + L"%s mounted a gun on me", + + L"%s treated my wounds", + L"Had a good drink with %s", + L"%s is fun to get wasted with", + L"%s is annoying when drunk", + + L"%s is an idiot when drunk", + L"%s opposed our view in an argument", + L"%s supported our position", + L"%s agrees to our reasoning", + + L"%s's beliefs are contrary to ours", + L"%s knows how to calm down people", + L"%s is insensitive", + L"%s puts people in their places", + + L"%s is way too impulsive", + L"%s is disease-ridden", + L"%s treated my diseases", + L"%s does not hold back in combat", + + L"%s enjoys combat a bit too much", + L"%s is a good teacher", + L"%s led us to victory", + L"%s saved my life", + + L"%s stole my kill", + L"%s and me fought well together", + L"%s made the enemy surrender", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"World Health Organization", + L"Bringing health to life", + + // links to other pages + L"About WHO", + L"Disease in Arulco", + L"About diseases", + + // text on the main page + L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", + L"You currently do not have access to WHO data on the arulcan plague.", + L"You have acquired detailed maps on the status of the disease.", + L"Subscribe to map updates", + L"Unsubscribe map updates", + + // helpful tips page + L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus", + L"Experience In Security", + + // links to other pages + L"What is Kerberus?", + L"Team Contracts", + L"Individual Contracts", + + // text on the main page + L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", + L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", + L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"You can select the type and number of personnel you want to hire here:", + L"Initial deployment", + L"Regular personnel", + L"Veteran personnel", + + L"%d available, %d$ each", + L"Hire: %d", + L"Cost: %d$", + + L"Select the initial operational area:", + L"Total Cost: %d$", + L"ETA: %02d:%02d", + L"Close Contract", + + L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus reinforcements have arrived in %s.", + L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"Manipulations de l'inventaire", + + L"LVN", + L"Recharger", + L"Réunir o.", + L"", + + L"Trier", + L"Fusionner", + L"Séparer", + L"Classer", + + L"Caisses", + L"Boîtes", + L"Poser S/D", + L"Mett. S/D", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Afficher couverture", + + L"Fermer", + L"Ennemi", + L"Merc.", + L"", + + L"Roles", // TODO.Translate + L"Fortification", // TODO.Translate + L"Tracker", + L"CTH mode", + + L"Pièges", + L"Réseau", + L"Détecteur", + L"", + + L"Réseau A", + L"Réseau B", + L"Réseau C", + L"Réseau D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Désactivation affichage couverture/pièges", + L"Afficher les zones dangereuses", + L"Afficher la vue du mercenaire", + L"", + + L"Display enemy role symbols", // TODO.Translate + L"Display planned fortifications", + L"Display enemy tracks", + L"", + + L"Afficher réseau (piège)", + L"Afficher les réseaux (pièges) par couleur", + L"Afficher les pièges à proximité", + L"", + + L"Afficher le réseau A", + L"Afficher le réseau B", + L"Afficher le réseau C", + L"Afficher le réseau D", +}; + +// TODO.Translate +STR16 szDynamicDialogueText[40][17] = // TODO.Translate +{ + // OPINIONEVENT_FRIENDLYFIRE + L"What the hell! $CAUSE$ attacked me!", + L"", + L"", + L"What? Me? No way, I'm engaging at the enemy!", + L"Oops.", + L"", + L"", + L"$CAUSE$ has attacked $VICTIM$. What do you do?", + L"Nah, that must have been enemy fire!", + L"Yeah, I saw it too!", + L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", + L"I saw it, it was clearly enemy fire!", + L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", + L"This is war! People get shot all the time! Speaking of... shoot more people, people!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"I would if you weren't such a wussy!", + L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"I'm doing my job. Get back to yours!", + L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"Patched together again? Good, now move!", + L"You're welcome.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'Even'? What does that mean?", + L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Nice one, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"Is there a difference?", + L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"What?!", + L"No!", + L"That is false!", + L"That is not true!", + + L"Lies, lies, lies. Nothing but lies!", + L"Liar!", + L"Traitor!", + L"You watch your mouth!", + + L"This is none of your business.", + L"Who ever invited you?", + L"Nobody asked for your opinion, $INTERJECTOR$.", + L"You stay away from me.", + + L"Why are you all against me?", + L"Why are you against me, $INTERJECTOR$?", + L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"Not listening...!", + + L"I hate this psycho circus.", + L"I hate this freak show.", + L"Back off!", + L"Lies, lies, lies...", + + L"No way!", + L"So not true.", + L"That is so not true.", + L"I know what I saw.", + + L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"Nope.", + L"You are mistaken.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"What $INTERJECTOR_GENDER$ said.", + + L"Thanks, $INTERJECTOR$!", + L"Once again I'm right!", + L"See, $CAUSE$? I am right!", + L"Once again $SPEAKER$ is right!", + + L"Aye.", + L"Yup.", + L"Yep", + L"Yes.", + + L"Indeed.", + L"True.", + L"Ha!", + L"See?", + + L"Exactly!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"That's right!", + L"Indeed!", + L"Exactly that.", + L"$CAUSE$ does that all the time.", + + L"$VICTIM$ is right!", + L"I was gonna' point that out, too!", + L"What $VICTIM$ said.", + L"That's our $CAUSE$!", + + L"Yeah!", + L"Now THIS is going to be interesting...", + L"You tell'em, $VICTIM$!", + L"Agreeing with $VICTIM$ here...", + + L"Classic $CAUSE$.", + L"I couldn't have said it better myself.", + L"That is exactly what happened.", + L"Agreed!", + + L"Yup.", + L"True.", + L"Bingo.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"Now wait a minute...", + L"Wait a sec, that's not what right...", + L"What? No.", + L"That is not what happened.", + + L"Hey, stop blaming $CAUSE$!", + L"Oh shut up, $VICTIM$!", + L"Nonono, you got that wrong.", + L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"And I suppose you never did, $VICTIM$?", + L"Hmmmm... no.", + L"Great. Let's have an argument. It's not like we have other things to do...", + L"You are mistaken!", + + L"You are wrong!", + L"Me and $CAUSE$ would never do such a thing.", + L"Nah, can't be.", + L"I don't think so.", + + L"Why bring that up now?", + L"Really, $VICTIM$? Is this necessary?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Keep silent", + L"Support $VICTIM$", + L"Support $CAUSE$", + L"Appeal to reason", + L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"he", + L"she", + L"him", + L"her", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% wisdom stat\n", + L" %s%d%% effective level\n", + + L" %s%d%% APs\n", + L" %s%d maximum breath\n", + L" %s%d%% strength to carry items\n", + L" %s%2.2f life regeneration/hour\n", + L" %s%d need for sleep\n", + L" %s%d%% water consumption\n", + L" %s%d%% food consumption\n", + + L"%s was diagnosed with %s!", + L"%s is cured of %s!", + + L"Diagnosis", + L"Treatment", + L"Burial", // TODO.Translate + L"Cancel", + + L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate + + L"High amount of distress can cause a personality split\n", // TODO.Translate + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", // TODO.Translate + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"Hide", // TODO.Translate + L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|F|o|o|d: %d%%\n", + + L"max morale altered by %s%d\n", + L" %s%d need for sleep\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% assignment efficiency\n", + L" %s%d%% chance to lose stats\n", +}; + +STR16 szIMPGearWebSiteText[] = // TODO.Translate +{ + // IMP Gear Entrance + L"How should gear be selected?", + L"Old method: Random gear according to your choices", + L"New method: Free selection of gear", + L"Old method", + L"New method", + + // IMP Gear Entrance + L"I.M.P. Equipment", + L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate +}; + +STR16 szIMPGearPocketText[] = +{ + L"Select helmet", + L"Select vest", + L"Select pants", + L"Select face gear", + L"Select face gear", + + L"Select main gun", + L"Select sidearm", + + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", + + L"Select launcher / rifle", + L"Select melee weapon", + + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"We cannot relay orders to this sector, militia command not possible.", + L"Unassigned", + L"Group No.", + L"Next", + + L"ETA", + L"Group %d (new)", + L"Group %d", + L"Final", + + L"Volunteers: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = // TODO.Translate +{ + L"Enemy helicopter shot down in %s!", + L"We... uhm... currently don't control that site, commander...", + L"The SAM does not need maintenance at the moment.", + L"We've already ordered the repair, this will take time.", + + L"We do not have enough resources to do that.", + L"Repair SAM site? This will cost %d$ and take %d hours.", + L"Enemy helicopter hit in %s.", + L"%s fires %s at enemy helicopter in %s.", + + L"SAM in %s fires at enemy helicopter in %s.", +}; + +STR16 szFortificationText[] = +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"Militia", + L"Militia Forces Overview", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Took part in Operation %s", + L"Recruited on Day %d, %d:%02d in %s", + L"Promoted on Day %d, %d:%02d", + L"KIA, Operation %s", + + L"Lightly wounded during Operation %s", + L"Heavily wounded during Operation %s", + L"Critically wounded during Operation %s", + L"Valiantly fought in Operation %s", + + L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", // TODO:Translate +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"All sectors", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"Merchant is hostile and does not want to trade.", + L"Merchant is in no state to do business.", + L"Merchant won't trade during combat.", + L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = // TODO.Translate +{ + L"normal", + L"rain", + L"thunderstorm", + L"sandstorm", + + L"snow", +}; + +STR16 szSnakeText[] = +{ + L"%s evaded a snake attack!", + L"%s was attacked by a snake!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"Converted %s into resources", + L"Guns: ", + L"Armour: ", + L"Misc: ", + + L"There are no volunteers left for militia!", + L"Not enough resources to train militia!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s starts hacking.", + L"%s accesses the computer, but finds nothing of interest.", + L"%s is not skilled enough to hack the computer.", + L"%s reads the file, but learns nothing new.", + + L"%s can't make sense out of this.", + L"%s couldn't use the watertap.", + L"%s has bought a %s.", + L"%s doesn't have enough money. That's just embarassing.", + + L"%s drank from water tap", + L"This machine doesn't seem to be working.", // TODO.Translate +}; + +STR16 szLaptopStatText[] = // TODO.Translate +{ + L"threaten effectiveness %d\n", + L"leadership %d\n", + L"approach modifier %.2f\n", + L"background modifier %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Good Guy", + L"%s eschews excessive violence and will refuse to attack non-hostiles.", + + L"Friendly approach", + L"Direct approach", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +STR16 szGearTemplateText[] = // TODO.Translate +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate +}; + +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +STR16 szFactoryText[] = // TODO.Translate +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +// TODO.Translate +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Space Available:", + L"MOLLE Space Required:", + L"MOLLE Small Slot Count:", + L"MOLLE Medium Slot Count:", + L"MOLLE Pouch Size: Small", + L"MOLLE Pouch Size: Medium", + L"MOLLE Pouch Size: Medium (Hydration)", + L"Thigh Rig", + L"Vest", + L"Combat Pack", + L"Backpack", // 10 + L"MOLLE Pouch", + L"Compatible backpacks:", + L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = // TODO.Translate +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = // TODO.Translate +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = // TODO.Translate +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = // TODO.Translate +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia\nthat appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = // TODO: Translate +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //FRENCH diff --git a/i18n/_GermanText.cpp b/i18n/_GermanText.cpp index 04b449d0..610af04b 100644 --- a/i18n/_GermanText.cpp +++ b/i18n/_GermanText.cpp @@ -1,12151 +1,12231 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("GERMAN") - - #ifdef GERMAN - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_GermanText_public_symbol(void){;} - -#ifdef GERMAN - - -/* -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL TOPWARE INSTRUCTIONS -- Always be aware that German strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of the German language when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for Topware problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by Topware to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -/* -LOOTF - Foot note. I've rewritten a whole lot of stuff and only marked specific lines and blocks. - That's where I'm either - - - not sure about the character limit (might not be mentioned but causes trouble when displaying texts?) - - not sure about the meaning - - not sure if people will like it (this concerns German speakers) - - not as creative as to find a perfect replacement - -I have also changed stuff people might have found okay, which only troubled me. -This includes - "Zurückziehen". Klingt einfach nicht. Hört sich an wie sich zur Nachtruhe begeben. -"Zurückgezogen" ist ein Waldschrat. Geändert auf "ausgewichen". -Ich hoffe nur, dass nicht irgendjemand dumm rumschwätzt wegen Kugeln ausweichen oder so. - -Anything else is a-ok and can be filtered out by comparing this cpp with the old version. -I have also added tabs and removed some where I thought it was appropriate (format-wise). -My comments are marked using LOOTF. -Comments for SANDRO are marked using LOOTF - SANDRO. -Remove any LOOTF comment that has been checked, except maybe for "alt." (alternative) stuff or stuff of that sort. - -07/2010 LootFragg -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; - -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Orte", // 0 - L"Personen", - L"Gegenstände", - L"Aufträge", - L"Menu 5", - L"Menu 6", //5 - L"Menu 7", - L"Menu 8", - L"Menu 9", - L"Menu 10", - L"Menu 11", //10 - L"Menu 12", - L"Menu 13", - L"Menu 14", - L"Menu 15", - L"Menu 15", // 15 - - //Briefing Room - L"Eintreten", -}; - -STR16 pOtherButtonsText[] = -{ - L"Auftrag", - L"Akzep.", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Einsatzbesprechung", - L"Auftrag annehmen", -}; - - -STR16 pLocationPageText[] = -{ - L"Vorherige Seite", - L"Foto", - L"Nächste Seite", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"Hauptseite", - L">>", - L"Typ: ", - L"Keine Daten", - L"Es gibt keine Missionen. Fügen Sie Missionen zu der Datei TableData\\BriefingRoom\\BriefingRoom.xml hinzu. Die erste Mission muss SICHTBAR sein. Setzen Sie den Wert Hidden = 0.", - L"Besprechungszimmer. Bitte drücken sie auf 'Eintreten'.", -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Unbekannt",// 0 - unknown - L"Stadt", //1 - cities - L"Luftwaffen Stützpunkt", //2 - SAM Site - L"Andere Örtlichkeiten", //3 - other location - L"Minen", //4 - mines - L"Militärstützpunkt", //5 - military complex - L"Labor", //6 - laboratory complex - L"Fabrik", //7 - factory complex - L"Spital", //8 - hospital - L"Gefängnis", //9 - prison - L"Flughafen", //10 - air port -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Alle anzeigen", - L"AIM anzeigen", - L"MERC anzeigen", - L"RPC anzeigen", - L"NPC anzeigen", - L"Fahrzeuge anzeigen", - L"BSE anzeigen", - L"EPC anzeigen", - L"Filter", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"Alle", - L"AIM", - L"MERC", - L"RPC", - L"NPC", - L"Veh.", - L"BSE", - L"EPC", - L"Filter", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Alles anzeigen", - L"Städte anzeigen", - L"Luftwaffenstützpunkte anzeigen", - L"Andere Örtlichkeiten anzeigen", - L"Minen anzeigen", - L"Militärstützpunkte anzeigen", - L"Labor-Komplexe anzeigen", - L"Fabriken anzeigen", - L"Spitäler anzeigen", - L"Gefängnisse anzeigen", - L"Flughäfen anzeigen", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"Alle", - L"Stadt", - L"SAM", - L"Andere", - L"Mine", - L"Mil.", - L"Lab.", - L"Fabr.", - L"Spit.", - L"Gefän.", - L"Flugh.", -}; - -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"Alle",//0 - L"Stadt", - L"SAM", - L"Mine", - L"Flugh.", - L"Wildn.", - L"Unterg.", - L"Gebäude", - L"andere", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Zeige Alle",//facility index + 1 - L"Zeige Stadtsektoren", - L"Zeige SAM's ", - L"Zeige Mine", - L"Zeige Flughäfen", - L"Zeige Sektoren in der Wildniss", - L"Zeige Untergrund", - L"Zeige wichtige Gebäude\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", - L"Zeige andere Sektoren", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; - -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"Alle",//0 - L"A.I.M.", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"Andere",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Zeige Alle",//Other index + 1 - L"Zeige A.I.M. Mitarbeiter", - L"Zeige M.E.R.C Mitarbeiter", - L"Zeige Rebellen", - L"Zeige Nichtspieler Charaktere", - L"Zeige Spieler Charaktere", - L"Zeige Andere\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", -}; - -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Fahrz.", - L"EPC", - L"",//reserved. Insert new Other filters above! -}; - -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"Alle",//0 - L"Hand.W.", - L"Muni.", - L"Rüstung", - L"LBE", - L"Zubeh.", - L"Versch.",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Zeige Alle",//misc index + 1 - L"Zeige Handfeuer Waffen\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", - L"Zeige Munition\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", - L"Zeige Rüstung\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", - L"Zeige LBE-Gepäck\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", - L"Zeige Zubehör\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", - L"Zeige Verschiedenes\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", -}; - -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"Pistole", - L"M.Pist.", - L"lei. MG", - L"Gewehr", - L"Scharfs", - L"Sturm G", - L"MG", - L"Schrot.", - L"Schwere", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"Pistole", - L"M.Pist.", - L"lei. MG", - L"Gewehr", - L"Scharfs", - L"Sturm G", - L"MG", - L"Schrot.", - L"Schwere", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Helm", - L"Weste", - L"Hose", - L"Platte", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Gürtel", - L"Weste", - L"Kampfg.", - L"Marsch.", - L"Tasche", - L"Andere", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Optik", - L"Seite", - L"Lauf", - L"Extern", - L"Intern", - L"Andere", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"Messer", - L"Wurf M.", - L"Schlag", - L"Kranate", - L"Sprengs", - L"Medikit", - L"Kit", - L"Kopf", - L"Andere", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; - -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"Alle", - L"Aktiv", - L"Abges.", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Zeige Alle",//misc index + 1 - L"Zeige Aktive Quests", - L"Zeige Abgeschlossene Quests", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"Alle", //0 - L"Waffen", - L"Mun.", - L"LBE", - L"Sonst.", - - L"Alle", //5 - L"Waffen", - L"Munition", - L"LBE Gegenstände", - L"Sonstige", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"Schwer", - L"Pistole", - L"M. Pist.", - L"SMG", - L"Gewehr", - L"S.Gew.", - L"A.Gew.", - L"MG", - L"Schrot.", - - // Ammo - L"Pistol", - L"M. Pist.", //10 - L"SMG", - L"Gewehr", - L"S.Gew", - L"A.Gew.", - L"MG", - L"Schrot.", - - // Used - L"Waffen", - L"Panz.", - L"LBE Ausr.", - L"Sonst.", //20 - - // Armour - L"Helme", - L"Westen", - L"Hosen", - L"Platten", - - // Misc - L"Klingen", - L"Wurfm.", - L"Nah.", - L"Gran.", - L"Bomb.", - L"Med.", //30 - L"Kits", - L"Gesicht", - L"LBE", - L"Sonst.", //34 -}; - -// TODO.Translate -STR16 QuestDescText[] = -{ - L"Deliver Letter", - L"Food Route", - L"Terrorists", - L"Kingpin Chalice", - L"Kingpin Money", - L"Runaway Joey", - L"Rescue Maria", - L"Chitzena Chalice", - L"Held in Alma", - L"Interogation", - - L"Hillbilly Problem", //10 - L"Find Scientist", - L"Deliver Video Camera", - L"Blood Cats", - L"Find Hermit", - L"Creatures", - L"Find Chopper Pilot", - L"Escort SkyRider", - L"Free Dynamo", - L"Escort Tourists", - - - L"Doreen", //20 - L"Leather Shop Dream", - L"Escort Shank", - L"No 23 Yet", - L"No 24 Yet", - L"Kill Deidranna", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", -}; - -// TODO.Translate -STR16 FactDescText[] = -{ - L"Omerta befreit", - L"Drassen befreit", - L"Sanmona befreit", - L"Cambria befreit", - L"Alma befreit", - L"Grumm befreit", - L"Tixa befreit", - L"Chitzena befreit", - L"Estoni befreit", - L"Balime befreit", - - L"Orta befreit", //10 - L"Meduna befreit", - L"Pacos approched", - L"Fatima Read note", - L"Fatima Walked away from player", - L"Dimitri (#60) is dead", - L"Fatima responded to Dimitri's supprise", - L"Carlo's exclaimed 'no one moves'", - L"Fatima described note", - L"Fatima arrives at final dest", - - L"Dimitri said Fatima has proof", //20 - L"Miguel overheard conversation", - L"Miguel asked for letter", - L"Miguel read note", - L"Ira comment on Miguel reading note", - L"Rebels are enemies", - L"Fatima spoken to before given note", - L"Start Drassen quest", - L"Miguel offered Ira", - L"Pacos hurt/Killed", - - L"Pacos is in A10", //30 - L"Current Sector is safe", - L"Bobby R Shpmnt in transit", - L"Bobby R Shpmnt in Drassen", - L"33 is TRUE and it arrived within 2 hours", - L"33 is TRUE 34 is false more then 2 hours", - L"Player has realized part of shipment is missing", - L"36 is TRUE and Pablo was injured by player", - L"Pablo admitted theft", - L"Pablo returned goods, set 37 false", - - L"Miguel will join team", //40 - L"Gave some cash to Pablo", - L"Skyrider is currently under escort", - L"Skyrider is close to his chopper in Drassen", - L"Skyrider explained deal", - L"Player has clicked on Heli in Mapscreen at least once", - L"NPC is owed money", - L"Npc is wounded", - L"Npc was wounded by Player", - L"Father J.Walker was told of food shortage", - - L"Ira is not in sector", //50 - L"Ira is doing the talking", - L"Food quest over", - L"Pablo stole something from last shpmnt", - L"Last shipment crashed", - L"Last shipment went to wrong airport", - L"24 hours elapsed since notified that shpment went to wrong airport", - L"Lost package arrived with damaged goods. 56 to False", - L"Lost package is lost permanently. Turn 56 False", - L"Next package can (random) be lost", - - L"Next package can(random) be delayed", //60 - L"Package is medium sized", - L"Package is largesized", - L"Doreen has conscience", - L"Player Spoke to Gordon", - L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo asked for first aid", - L"Dynamo can be recruited", - L"Npc is bleeding", - L"Shank wnts to join", - - L"NPC is bleeding", //70 - L"Player Team has head & Carmen in San Mona", - L"Player Team has head & Carmen in Cambria", - L"Player Team has head & Carmen in Drassen", - L"Father is drunk", - L"Player has wounded mercs within 8 tiles of NPC", - L"1 & only 1 merc wounded within 8 tiles of NPC", - L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda is in the store ", - L"Brenda is Dead", - - L"Brenda is at home", //80 - L"NPC is an enemy", - L"Speaker Strength >= 84 and < 3 males present", - L"Speaker Strength >= 84 and at least 3 males present", - L"Hans lets ou see Tony", - L"Hans is standing on 13523", - L"Tony isnt available Today", - L"Female is speaking to NPC", - L"Player has enjoyed the Brothel", - L"Carla is available", - - L"Cindy is available", //90 - L"Bambi is available", - L"No girls is available", - L"Player waited for girls", - L"Player paid right amount of money", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping expectingh visit from player", - L"Darren expecting money from player", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Delete", - L"Delete item (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"north", - L"northeast", - L"east", - L"southeast", - L"south", - L"southwest", - L"west", - L"northwest" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Toggle viewing of players", //0 - L"Toggle viewing of enemies", - L"Toggle viewing of creatures", - L"Toggle viewing of rebels", - L"Toggle viewing of civilians", - - L"Player", - L"Enemy", - L"Creature", - L"Rebels", - L"Civilian", - - L"DETAILED PLACEMENT", //10 - L"General information mode", - L"Physical appearance mode", - L"Attributes mode", - L"Inventory mode", - L"Profile ID mode", - L"Schedule mode", - L"Schedule mode", - L"DELETE", - L"Delete currently selected merc (|D|e|l)", - L"NEXT", //20 - L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", - L"Toggle priority existance", - L"Toggle whether or not placement\nhas access to all doors", - - //Orders - L"STATIONARY", - L"ON GUARD", - L"ON CALL", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", //30 - L"RND PT PATROL", - - //Attitudes - L"DEFENSIVE", - L"BRAVE SOLO", - L"BRAVE AID", - L"AGGRESSIVE", - L"CUNNING SOLO", - L"CUNNING AID", - - L"Set merc to face %s", - - L"Find", - L"BAD", //40 - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"BAD", - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"Previous color set", //50 - L"Next color set", - - L"Previous body type", - L"Next body type", - - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - - L"No action", - L"No action", - L"No action", //60 - L"No action", - - L"Clear Schedule", - - L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"ROOFS", //0 - L"WALLS", - L"ROOM INFO", - - L"Place walls using selection method", - L"Place doors using selection method", - L"Place roofs using selection method", - L"Place windows using selection method", - L"Place damaged walls using selection method.", - L"Place furniture using selection method", - L"Place wall decals using selection method", - L"Place floors using selection method", //10 - L"Place generic furniture using selection method", - L"Place walls using smart method", - L"Place doors using smart method", - L"Place windows using smart method", - L"Place damaged walls using smart method", - L"Lock or trap existing doors", - - L"Add a new room", - L"Edit cave walls.", - L"Remove an area from existing building.", - L"Remove a building", //20 - L"Add/replace building's roof with new flat roof.", - L"Copy a building", - L"Move a building", - L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", - L"Erase room numbers", - - L"Toggle |Erase mode", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Cycle brush size (|A/|Z)", - L"Roofs (|H)", - L"|Walls", //30 - L"Room Info (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Wpns", //0 - L"Ammo", - L"Armour", - L"LBE", - L"Exp", - L"E1", - L"E2", - L"E3", - L"Triggers", - L"Keys", - L"Rnd", //10 - L"Previous (|,)", // previous page - L"Next (|.)", // next page -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Add ambient light source", //0 - L"Toggle fake ambient lights.", - L"Add exit grids (r-clk to query existing).", - L"Cycle brush size (|A/|Z)", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", - L"Specify north point for validation purposes.", - L"Specify west point for validation purposes.", - L"Specify east point for validation purposes.", - L"Specify south point for validation purposes.", - L"Specify center point for validation purposes.", //10 - L"Specify isolated point for validation purposes.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"New outdoor level", //0 - L"New basement", - L"New cave level", - L"Save map (|C|t|r|l+|S)", - L"Load map (|C|t|r|l+|L)", - L"Select tileset", - L"Leave Editor mode", - L"Exit game (|A|l|t+|X)", - L"Create radar map", - L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", - L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Draw |Ground textures", //0 - L"Set map ground textures", - L"Place banks and |Cliffs", - L"Draw roads (|P)", - L"Draw |Debris", - L"Place |Trees & bushes", - L"Place |Rocks", - L"Place barrels & |Other junk", - L"Fill area", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", //10 - L"Cycle brush size (|A/|Z)", - L"Raise brush density (|])", - L"Lower brush density (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Terrain", //0 - L"Buildings", - L"Items", - L"Mercs", - L"Map Info", - L"Options", - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text - L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text - L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text - L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text - L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"North Entry Point", //0 - L"West Entry Point", - L"East Entry Point", - L"South Entry Point", - L"Center Entry Point", - L"Isolated Entry Point", - - L"Prime", - L"Night", - L"24Hour", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Panic Trigger1", //0 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", - - L"Pressure Action", - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"No Lock ID", //0 - L"Explosion Trap", - L"Electric Trap", - L"Siren Trap", - L"Silent Alarm", - L"Super Electric Trap", //5 - L"Brothel Siren Trap", - L"Trap Level %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 - L"No map currently loaded.", - L"File: %S, Current Tileset: %s", - L"Enlarge map on loading", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"TOGGLE", //0 - L"VIEWS", - L"SELECTION METHOD", - L"SMART METHOD", - L"BUILDING METHOD", - L"Room#", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Editing lock attributes at map index %d.", - L"Lock ID", - L"Trap Type", - L"Trap Level", - L"Locked", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Pressure Action", //0 - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", - - L"Panic Trigger1", //5 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Status Info Line 1", - L"Status Info Line 2", - L"Status Info Line 3", - L"Status Info Line 4", - L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Prime", - L"Night", - L"24Hrs", //5 - - L"Radius", - - L"Underground", - L"Light Level", - - L"Outdoors", - L"Basement", //10 - L"Caves", - - L"Restricted", - L"Scroll ID", - - L"Destination", - L"Sector", //15 - L"Destination", - L"Bsmt. Level", - L"Dest.", - L"GridNo", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"No action", - L"Lock door", - L"Unlock door", - L"Open door", - L"Close door", - L"Move to gridno", - L"Leave sector", - L"Enter sector", - L"Stay in sector", - L"Sleep", - L"Ignore this!" -}; - -STR16 zDiffNames[5] = -{ - L"Wimp", - L"Easy", - L"Average", - L"Tough", - L"Steroid Users Only" -}; - -STR16 EditMercStat[12] = -{ - L"Max Health", - L"Cur Health", - L"Strength", - L"Agility", - L"Dexterity", - L"Charisma", - L"Wisdom", - L"Marksmanship", - L"Explosives", - L"Medical", - L"Scientific", - L"Exp Level", -}; - - -STR16 EditMercOrders[8] = -{ - L"Stationary", - L"On Guard", - L"Close Patrol", - L"Far Patrol", - L"Point Patrol", - L"On Call", - L"Seek Enemy", - L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Defensive", - L"Brave Loner", - L"Brave Buddy", - L"Cunning Loner", - L"Cunning Buddy", - L"Aggressive", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Merc Name:", //0 - L"Orders:", - L"Combat Attitude:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Merc Colors", //0 - L"Done", - - L"Previous merc standing orders", - L"Next merc standing orders", - - L"Previous merc combat attitude", - L"Next merc combat attitude", //5 - - L"Decrease merc stat", - L"Increase merc stat", -}; - -// TODO.Translate -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Random", //0 - L"Reg Male", - L"Big Male", - L"Stocky Male", - L"Reg Female", - L"NE Tank", //5 - L"NW Tank", - L"Fat Civilian", - L"M Civilian", - L"Miniskirt", - L"F Civilian", //10 - L"Kid w/ Hat", - L"Humvee", - L"Eldorado", - L"Icecream Truck", - L"Jeep", //15 - L"Kid Civilian", - L"Domestic Cow", - L"Cripple", - L"Unarmed Robot", - L"Larvae", //20 - L"Infant", - L"Yng F Monster", - L"Yng M Monster", - L"Adt F Monster", - L"Adt M Monster", //25 - L"Queen Monster", - L"Bloodcat", - L"Humvee", -}; - -// TODO.Translate -STR16 pUpdateMercsInfoText[] = -{ - L" --=ORDERS=-- ", //0 - L"--=ATTITUDE=--", - - L"RELATIVE", - L"ATTRIBUTES", - - L"RELATIVE", - L"EQUIPMENT", - - L"RELATIVE", - L"ATTRIBUTES", - - L"Army", - L"Admin", - L"Elite", //10 - - L"Exp. Level", - L"Life", - L"LifeMax", - L"Marksmanship", - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Leadership", - L"Explosives", //20 - L"Medical", - L"Mechanical", - L"Morale", - - L"Hair color:", - L"Skin color:", - L"Vest color:", - L"Pant color:", - - L"RANDOM", - L"RANDOM", - L"RANDOM", //30 - L"RANDOM", - - L"By specifying a profile index, all of the information will be extracted from the profile ", - L"and override any values that you have edited. It will also disable the editing features ", - L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", - L"extract the number you have typed. A blank field will clear the profile. The current ", - L"number of profiles range from 0 to ", - - L"Current Profile: n/a ", - L"Current Profile: %s", - - L"STATIONARY", - L"ON CALL", //40 - L"ON GUARD", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", - L"RND PT PATROL", - - L"Action", - L"Time", - L"V", - L"GridNo 1", //50 - L"GridNo 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"lock", - L"unlock", - L"open", - L"close", - - L"Click on the gridno adjacent to the door that you wish to %s.", //60 - L"Click on the gridno where you wish to move after you %s the door.", - L"Click on the gridno where you wish to move to.", - L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", - L" Hit ESC to abort entering this line in the schedule.", -}; - -// TODO.Translate -CHAR16 pRenderMercStringsText[][100] = -{ - L"Slot #%d", - L"Patrol orders with no waypoints", - L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"Keine Aktion", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Platzierung wurde nicht kopiert, weil keine Platzierung ausgewählt wurde.", - L"Platzierung kopiert.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Platzierung wurde nicht eingefügt, weil keine Platzierung in den Speicher kopiert wurde.", - L"Platzierung eingefügt.", - L"Platzierung wurde nicht eingefügt, weil die Maximalanzahl für die Platzierungen des Teams erreicht wurde.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Editor beenden?", -}; - -// TODO.Translate -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Are you sure you wish to remove all lights?", //0 - L"Are you sure you wish to reverse the schedules?", - L"Are you sure you wish to clear all of the schedules?", - - L"Clicked Placement Enabled", - L"Clicked Placement Disabled", - - L"Draw High Ground Enabled", //5 - L"Draw High Ground Disabled", - - L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"Random Placement Enabled", - L"Random Placement Disabled", - - L"Removing Treetops", //10 - L"Showing Treetops", - - L"World Raise Reset", - - L"World Raise Set Old", - L"World Raise Set", -}; - -// TODO.Translate -STR16 pPerformSelectedActionText[] = -{ - L"Creating radar map for %S", //0 - - L"Delete current map and start a new basement level?", - L"Delete current map and start a new cave level?", - L"Delete current map and start a new outdoor level?", - - L" Wipe out ground textures? ", -}; - -// TODO.Translate -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 - L"Toggle fake editor lighting ON/OFF", - - L"INSERT", - L"Toggle fill mode ON/OFF", - - L"BKSPC", - L"Undo last change", - - L"DEL", - L"Quick erase object under mouse cursor", - - L"ESC", - L"Exit editor", - - L"PGUP/PGDN", //10 - L"Change object to be pasted", - - L"F1", - L"This help screen", - - L"F10", - L"Save current map", - - L"F11", - L"Load map as current", - - L"+/-", - L"Change shadow darkness by .01", - - L"SHFT +/-", //20 - L"Change shadow darkness by .05", - - L"0 - 9", - L"Change map/tileset filename", - - L"b", - L"Change brush size", - - L"d", - L"Draw debris", - - L"o", - L"Draw obstacle", - - L"r", //30 - L"Draw rocks", - - L"t", - L"Toggle trees display ON/OFF", - - L"g", - L"Draw ground textures", - - L"w", - L"Draw building walls", - - L"e", - L"Toggle erase mode ON/OFF", - - L"h", //40 - L"Toggle roofs ON/OFF", -}; - -// TODO.Translate -STR16 pAutoLoadMapText[] = -{ - L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -// TODO.Translate -STR16 pShowHighGroundText[] = -{ - L"Showing High Ground Markers", - L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = // NUM_ACTIONITEMS = 34 -{ - L"Klaxon Mine", - L"Flare Mine", - L"Teargas Explosion", - L"Stun Explosion", - L"Smoke Explosion", - L"Mustard Gas", - L"Land Mine", - L"Open Door", - L"Close Door", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Small Explosion", - L"Medium Explosion", - L"Large Explosion", - L"Toggle Door", - L"Toggle Action1s", - L"Toggle Action2s", - L"Toggle Action3s", - L"Toggle Action4s", - L"Enter Brothel", - L"Exit Brothel", - L"Kingpin Alarm", - L"Sex with Prostitute", - L"Reveal Room", - L"Local Alarm", - L"Global Alarm", - L"Klaxon Sound", - L"Unlock door", - L"Toggle lock", - L"Untrap door", - L"Tog pressure items", - L"Museum alarm", - L"Bloodcat alarm", - L"Big teargas", -}; -*/ - -// TODO.Translate -STR16 pUpdateItemStatsPanelText[] = -{ - L"Toggle hide flag", //0 - L"No item selected.", - L"Slot available for", - L"random generation.", - L"Keys not editable.", - L"ProfileID of owner", - L"Item class not implemented.", - L"Slot locked as empty.", - L"Status", - L"Rounds", - L"Trap Level", //10 - L"Quantity", - L"Trap Level", - L"Status", - L"Trap Level", - L"Status", - L"Quantity", - L"Trap Level", - L"Dollars", - L"Status", - L"Trap Level", //20 - L"Trap Level", - L"Tolerance", - L"Alarm Trigger", - L"Exist Chance", - L"B", - L"R", - L"S", -}; - -// TODO.Translate -STR16 pSetupGameTypeFlagsText[] = -{ - L"Item appears in both Sci-Fi and Realistic modes", //0 - L"Item appears in Realistic mode only", - L"Item appears in Sci-Fi mode only", -}; - -// TODO.Translate -STR16 pSetupGunGUIText[] = -{ - L"SILENCER", //0 - L"SNIPERSCOPE", - L"LASERSCOPE", - L"BIPOD", - L"DUCKBILL", - L"G-LAUNCHER", //5 -}; - -// TODO.Translate -STR16 pSetupArmourGUIText[] = -{ - L"CERAMIC PLATES", //0 -}; - -// TODO.Translate -STR16 pSetupExplosivesGUIText[] = -{ - L"DETONATOR", -}; - -// TODO.Translate -STR16 pSetupTriggersGUIText[] = -{ - L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp -// TODO.Translate -STR16 pCreateSummaryWindowText[]= -{ - L"Okay", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"LOAD", - L"SAVE", - L"Update", -}; - -// TODO.Translate -STR16 pRenderSectorInformationText[] = -{ - L"Tileset: %s", //0 - L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", - L"Number of items: %d", - L"Number of lights: %d", - L"Number of entry points: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"Number of rooms: %d", - L"Total map population: %d", - L"Enemies: %d", - L"Admins: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Troops: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Elites: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Civilians: %d", //20 - - L"(%d detailed, %d profile -- %d have priority existance)", - - L"Humans: %d", - L"Cows: %d", - L"Bloodcats: %d", - - L"Creatures: %d", - - L"Monsters: %d", - L"Bloodcats: %d", - - L"Number of locked and/or trapped doors: %d", - L"Locked: %d", - L"Trapped: %d", //30 - L"Locked & Trapped: %d", - - L"Civilians with schedules: %d", - - L"Too many exit grid destinations (more than 4)...", - L"ExitGrids: %d (%d with a long distance destination)", - L"ExitGrids: none", - L"ExitGrids: 1 destination using %d exitgrids", - L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 - L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"%d placements have patrol orders without any waypoints defined.", - L"%d placements have waypoints, but without any patrol orders.", - L"%d gridnos have questionable room numbers. Please validate.", - -}; - -// TODO.Translate -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Enemy", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"Panic1", - L"Panic2", - L"Panic3", - L"Norm1", - L"Norm2", - L"Norm3", - L"Norm4", //10 - L"Pressure Actions", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"PRIORITY ENEMY DROPPED ITEMS", - L"None", - - L"TOO MANY ITEMS TO DISPLAY!", - L"NORMAL ENEMY DROPPED ITEMS", - L"TOO MANY ITEMS TO DISPLAY!", - L"None", - L"TOO MANY ITEMS TO DISPLAY!", - L"ERROR: Can't load the items for this map. Reason unknown.", //20 -}; - -// TODO.Translate -STR16 pRenderSummaryWindowText[] = -{ - L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 - L"(NO MAP LOADED).", - L"You currently have %d outdated maps.", - L"The more maps that need to be updated, the longer it takes. It'll take ", - L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"depending on your computer, it may vary.", - L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"There is no sector currently selected.", - - L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"You need to either load an existing map or create a new map before being", - L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 - - L", ground level", - L", underground level 1", - L", underground level 2", - L", underground level 3", - L", alternate G level", - L", alternate B1 level", - L", alternate B2 level", - L", alternate B3 level", - - L"ITEM DETAILS -- sector %s", - L"Summary Information for sector %s:", //20 - - L"Summary Information for sector %s", - L"does not exist.", - - L"Summary Information for sector %s", - L"does not exist.", - - L"No information exists for sector %s.", - - L"No information exists for sector %s.", - - L"FILE: %s", - - L"FILE: %s", - - L"Override READONLY", - L"Overwrite File", //30 - - L"You currently have no summary data. By creating one, you will be able to keep track", - L"of information pertaining to all of the sectors you edit and save. The creation process", - L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"Do you wish to do this now (y/n)?", - - L"No summary info. Creation denied.", - - L"Grid", - L"Progress", //40 - L"Use Alternate Maps", - - L"Summary", - L"Items", -}; - -// TODO.Translate -STR16 pUpdateSectorSummaryText[] = -{ - L"Analyzing map: %s...", -}; - -// TODO.Translate -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Loading map: %s", -}; - -// TODO.Translate -STR16 pReportErrorText[] = -{ - L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -// TODO.Translate -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Generating map information", -}; - -// TODO.Translate -STR16 pSummaryUpdateCallbackText[] = -{ - L"Generating map summary", -}; - -// TODO.Translate -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MAJOR VERSION UPDATE", - L"There are %d maps requiring a major version update.", - L"Updating all outdated maps", -}; - -// TODO.Translate -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] from default tileset %s (%d, %S)", - L"File: %S, subindex: %d (%d, %S)", - L"Tileset: %s", -}; - -// TODO.Translate -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Accept selections (|E|n|t|e|r)", - L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", - L"Scroll window up (|U|p)", - L"Scroll window down (|D|o|w|n)", -}; - -// TODO.Translate -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Small", - L"Medium", - L"Large", - L"XLarge", - L"Width: xx", - L"Area" - }; - -//--- -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Seite 1/2", //0 - L"Seite 2/2", - - L"Seite 1/3", - L"Seite 2/3", - L"Seite 3/3", - - L"Seite 1/1", //5 -}; - -// by Jazz -CHAR16 zGrod[][500] = -{ - L"Roboter", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 Entwicklungsteam", - L"@T,C144,R134,{;Programmierung", - L"@T,C144,R134,{;Grafiken und Sounds", - L"@};(Verschiedene weitere Mods!)", - L"@T,C144,R134,{;Gegenstände", - L"@T,C144,R134,{;Weitere Mitwirkende", - L"@};(Alle weiteren Community-Mitglieder die Ideen und Feedback eingebracht haben!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L".38 Kal", -// L"9mm", -// L".45 Kal", -// L".357 Kal", -// L"12 Kal", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm NATO", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Rakete", -// L"", -// L"", -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L".38 Kal", -// L"9mm", -// L".45 Kal", -// L".357 Kal", -// L"12 Kal", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm N.", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monster", -// L"Rakete", -// L"", // dart -//}; - -CHAR16 WeaponType[][30] = -{ - L"Andere", - L"Pistole", - L"MP", - L"Schwere MP", - L"Gewehr", - L"SSG", - L"SG", - L"LMG", - L"Schrotflinte", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Spielzug Spieler", - L"Spielzug Gegner", - L"Spielzug Monster", - L"Spielzug Miliz", - L"Spielzug Zivilisten", - L"Player_Plan",// planning turn - L"Client #1",//hayden - L"Client #2",//hayden - L"Client #3",//hayden - L"Client #4",//hayden -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s am Kopf getroffen, verliert einen Weisheitspunkt!", - L"%s an der Schulter getroffen, verliert Geschicklichkeitspunkt!", - L"%s an der Brust getroffen, verliert einen Kraftpunkt!", - L"%s an den Beinen getroffen, verliert einen Beweglichkeitspunkt!", - L"%s am Kopf getroffen, verliert %d Weisheitspunkte!", - L"%s an der Schulter getroffen, verliert %d Geschicklichkeitspunkte!", - L"%s an der Brust getroffen, verliert %d Kraftpunkte!", - L"%s an den Beinen getroffen, verliert %d Beweglichkeitspunkte!", - L"Unterbrechung!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //obsolete - L"Verstärkung ist angekommen!", - - // In the following four lines, all %s's are merc names - - L"%s lädt nach.", - L"%s hat nicht genug Action-Punkte!", - L"%s leistet Erste Hilfe. (Rückgängig mit beliebiger Taste.)", - L"%s und %s leisten Erste Hilfe. (Rückgängig mit beliebiger Taste.)", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"zuverlässig", - L"unzuverlässig", - L"Reparatur leicht", - L"Reparatur schwer", - L"große Durchschlagskraft", - L"kleine Durchschlagskraft", - L"feuert schnell", - L"feuert langsam", - L"große Reichweite", - L"kurze Reichweite", - L"leicht", - L"schwer", - L"klein", - L"schneller Feuerstoß", - L"kein Feuerstoß", - L"großes Magazin", - L"kleines Magazin", - - // In the following two lines, all %s's are merc names - - L"%ss Tarnung hat sich abgenutzt.", - L"%ss Tarnung ist weggewaschen.", - - // The first %s is a merc name and the second %s is an item name - - L"Zweite Waffe hat keine Munition!", - L"%s hat %s gestohlen.", - - // The %s is a merc name - - L"%ss Waffe kann keinen Feuerstoß abgeben.", - - L"Sie haben schon eines davon angebracht.", - L"Gegenstände zusammenfügen?", - - // Both %s's are item names - - L"Sie können %s mit %s nicht kombinieren", - - L"Keine", - L"Waffen entladen", // = Removing ammo from weapons on the ground on pressing Shift + F if set in options. - L"Modifikationen", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and your gas mask at the same time. - L"Sie können %s nicht zusammen mit %s benutzen.", // - - L"Der Gegenstand in Ihrem Cursor kann mit anderen Gegenständen verbunden werden, indem Sie ihn in einer der vier Einbaustellen platzieren.", - L"Der Gegenstand in Ihrem Cursor kann mit anderen Gegenständen verbunden werden, indem Sie ihn in einer der vier Einbaustellen platzieren. (Aber in diesem Fall sind die Gegenstände nicht kompatibel.)", - L"Es sind noch Feinde im Sektor!", - L"Geben Sie %s %s", - L"%s am Kopf getroffen!", - L"Kampf abbrechen?", - L"Die Modifikation ist permanent. Weitermachen?", - L"%s fühlt sich frischer!", - L"%s ist auf Murmeln ausgerutscht!", - L"%s konnte %s nicht aus der Hand des Feindes stehlen!", - L"%s hat %s repariert", - L"Unterbrechung für ", - L"Ergeben?", - L"Diese Person will keine Hilfe.", - L"Lieber NICHT!", - L"Wenn Sie zu Skyriders Heli wollen, müssen Sie Söldner einem FAHRZEUG/HELIKOPTER ZUWEISEN.", - L"%s hat nur Zeit, EINE Waffe zu laden", - L"Spielzug Bloodcats", - L"Dauerfeuer", - L"kein Dauerfeuer", - L"genau", - L"ungenau", - L"kein Einzelschuss", - L"Der Feind besitzt keine Gegenstände mehr zum Stehlen!", - L"Der Feind hat keinen Gegenstand in seiner Hand!", - - L"%s's Wüstentarnung ist nicht mehr effektiv.", - L"%s's Wüstentarnung wurde herunter gewaschen.", - - L"%s's Waldtarnung ist nicht mehr effektiv.", - L"%s's Waldtarnung wurde herunter gewaschen.", - - L"%s's Stadttarnung ist nicht mehr effektiv.", - L"%s's Stadttarnung wurde herunter gewaschen.", - - L"%s's Schneetarnung ist nicht mehr effektiv.", - L"%s's Schneetarnung wurde herunter gewaschen.", - L"Sie können %s nicht an dieser Einbaustelle anbringen.", - L"%s passt in keine freie Einbaustelle.", - L"Für diese Tasche ist nicht mehr genug Platz.", - - L"%s hat %s so gut wie möglich repariert.", - L"%s hat %s's %s so gut wie möglich repariert.", - - L"%s hat %s gereinigt.", - L"%s hat %s's %s gereinigt.", - - L"Assignment not possible at the moment", // TODO.Translate - L"No militia that can be drilled present.", - - L"%s hat %s vollständig erkundet.", -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracona", - L"Traconian", -#else - L"Arulco", - L"Arulcan", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes -STR16 sTimeStrings[] = -{ - L"Pause", - L"Normal", - L"5 Min", - L"30 Min", - L"60 Min", - L"6 Std", -}; - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. -STR16 pAssignmentStrings[] = -{ - L"Trupp 1", - L"Trupp 2", - L"Trupp 3", - L"Trupp 4", - L"Trupp 5", - L"Trupp 6", - L"Trupp 7", - L"Trupp 8", - L"Trupp 9", - L"Trupp 10", - L"Trupp 11", - L"Trupp 12", - L"Trupp 13", - L"Trupp 14", - L"Trupp 15", - L"Trupp 16", - L"Trupp 17", - L"Trupp 18", - L"Trupp 19", - L"Trupp 20", - L"Dienst", // on active duty - L"Doktor", // administering medical aid - L"Patient", // getting medical aid - L"Fahrzeug", // in a vehicle - L"Transit", // in transit - abbreviated form - L"Repar.", // repairing - L"Radio Scan", // scanning for nearby patrols - L"Üben", // training themselves - L"Miliz", // training a town to revolt - L"M.Miliz", //training moving militia units - L"Trainer", // training a teammate - L"Rekrut", // being trained by someone else - L"Umzug", // move items - L"Betrieb", // operating a strategic facility - L"Essen", // eating at a facility (cantina etc.) - L"Pause", // Resting at a facility - L"Verhör", // Flugente: interrogate prisoners - L"Tot", // dead - L"Koma", // abbreviation for incapacitated //LOOTF - "Unfähig" klingt schlimm. Geändert auf Koma. Vorschläge? - L"Gefangen", // Prisoner of war - captured - L"Hospital", // patient in a hospital - L"Leer", //Vehicle is empty - L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate - L"Propag.", // facility: spread propaganda - L"Propag.", // facility: spread propaganda (globally) - L"Rumours", // facility: gather information - L"Propag.", // spread propaganda - L"Rumours", // gather information - L"Command", // militia movement orders - L"Diagnose", // disease diagnosis //TODO.Translate - L"Treat D.", // treat disease among the population - L"Doktor", // administering medical aid - L"Patient", // getting medical aid - L"Repar.", // repairing - L"Fortify", // build structures according to external layout // TODO.Translate - L"Train W.", - L"Hide", // TODO.Translate - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", // TODO.Translate - L"Explore", // TODO.Translate - L"Event",// rftr: merc is on a mini event // TODO: translate - L"Mission", // rftr: rebel command -}; - -STR16 pMilitiaString[] = -{ - L"Miliz", // the title of the militia box - L"Ohne Aufgabe", //the number of unassigned militia troops - L"Mit Feinden im Sektor können Sie keine Miliz einsetzen!", - L"Einige Milizen wurden keinem Sektor zugewiesen. Möchten Sie diese Einheiten auflösen?", -}; - -STR16 pMilitiaButtonString[] = -{ - L"Autom.", // auto place the militia troops for the player - L"Fertig", // done placing militia troops - L"Auflösen", // HEADROCK HAM 3.6: Disband militia - L"Zuordnungen aufh.", // move all milita troops to unassigned pool -}; - -STR16 pConditionStrings[] = -{ - L"Sehr gut", //the state of a soldier .. excellent health - L"Gut", // good health - L"Mittel", // fair health - L"Verwundet", // wounded health - L"Erschöpft", // tired - L"Verblutend", // bleeding to death - L"Bewusstlos", // knocked out - L"Stirbt", // near death - L"Tot", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"Dienst", // set merc on active duty - L"Patient", // set as a patient to receive medical aid - L"Fahrzeug", // tell merc to enter vehicle - L"Unbewacht", // let the escorted character go off on their own - L"Abbrechen", // close this menu -}; - -// look at pAssignmentString above for comments -STR16 pPersonnelAssignmentStrings[] = -{ - L"Trupp 1", - L"Trupp 2", - L"Trupp 3", - L"Trupp 4", - L"Trupp 5", - L"Trupp 6", - L"Trupp 7", - L"Trupp 8", - L"Trupp 9", - L"Trupp 10", - L"Trupp 11", - L"Trupp 12", - L"Trupp 13", - L"Trupp 14", - L"Trupp 15", - L"Trupp 16", - L"Trupp 17", - L"Trupp 18", - L"Trupp 19", - L"Trupp 20", - L"Dienst", - L"Doktor", - L"Patient", - L"Fahrzeug", - L"Transit", - L"Reparieren", - L"Radio Scan", // radio scan - L"Üben", - L"Miliz", - L"Trainiere Mobile Miliz", - L"Trainer", - L"Rekrut", - L"Gegenstand verschieben", - L"Betriebspersonal", - L"Essen", // eating at a facility (cantina etc.) - L"Betriebspause", - L"Gefangene verhören", // Flugente: interrogate prisoners - L"Tot", - L"Koma", //LOOTF - s.o. - L"Gefangen", - L"Hospital", - L"Leer", // Vehicle is empty - L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) - L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda - L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda (globally) - L"Gathering Rumours",// TODO.Translate // facility: gather rumours - L"Spreading Propaganda",// TODO.Translate // spread propaganda - L"Gathering Rumours",// TODO.Translate // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Doktor", - L"Patient", - L"Reparieren", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - -// refer to above for comments -STR16 pLongAssignmentStrings[] = -{ - L"Trupp 1", - L"Trupp 2", - L"Trupp 3", - L"Trupp 4", - L"Trupp 5", - L"Trupp 6", - L"Trupp 7", - L"Trupp 8", - L"Trupp 9", - L"Trupp 10", - L"Trupp 11", - L"Trupp 12", - L"Trupp 13", - L"Trupp 14", - L"Trupp 15", - L"Trupp 16", - L"Trupp 17", - L"Trupp 18", - L"Trupp 19", - L"Trupp 20", - L"Dienst", - L"Doktor", - L"Patient", - L"Fahrzeug", - L"Transit", - L"Reparieren", - L"Radio Scan", // radio scan - L"Üben", - L"Miliz", - L"Trainiere Mobile", - L"Trainer", - L"Rekrut", - L"Umzug", // move items - L"Betriebspersonal", - L"Betriebspause", - L"Gefangene verhören", // Flugente: interrogate prisoners - L"Tot", - L"Unfähig", - L"Gefangen", - L"Hospital", // patient in a hospital - L"Leer", // Vehicle is empty - L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) - L"Spread Propaganda",// TODO.Translate // facility: spread propaganda - L"Spread Propaganda",// TODO.Translate // facility: spread propaganda (globally) - L"Gather Rumours",// TODO.Translate // facility: gather rumours - L"Spread Propaganda",// TODO.Translate // spread propaganda - L"Gather Rumours",// TODO.Translate // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Doktor", - L"Patient", - L"Reparieren", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - -// the contract options -STR16 pContractStrings[] = -{ - L"Vertragsoptionen:", - L"", // a blank line, required - L"Einen Tag anbieten", // offer merc a one day contract extension - L"Eine Woche anbieten", // 1 week - L"Zwei Wochen anbieten", // 2 week - L"Entlassen", //end merc's contract (used to be "Terminate") - L"Abbrechen", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"gefangen", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"KRAFT", //The merc's strength attribute. Others below represent the other attributes. - L"GESCHICKLICHKEIT", - L"BEWEGLICHKEIT", - L"WEISHEIT", - L"TREFFSICHERHEIT", - L"MEDIZIN", - L"TECHNIK", - L"FÜHRUNGSQUALITÄT", - L"SPRENGSTOFFE", - L"ERFAHRUNGSSTUFE", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Rüstung", // the armor rating of the merc - L"Gew.", // the weight the merc is carrying - L"Tarn.", // the merc's camouflage rating - L"Tarnung:", - L"Rüstung:", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Bew", // the abbreviated version of : agility - L"Ges", // dexterity - L"Krf", // strength - L"Fhr", // leadership - L"Wsh", // wisdom - L"Erf", // experience level - L"Trf", // marksmanship skill - L"Tec", // mechanical skill - L"Spr", // explosive skill - L"Med", // medical skill -}; - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Aufgabe", // the mercs current assignment - L"Vertrag", // the contract info about the merc - L"Gesundh.", // the health level of the current merc - L"Moral", // the morale of the current merc - L"Zustand", // the condition of the current vehicle - L"Tank", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Üben", // tell merc to train self - L"Miliz", // tell merc to train town // - L"Trainer", // tell merc to act as trainer - L"Rekrut", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Schussrate:", // the allowable rate of fire for a merc who is guarding - L" Aggressiv feuern", // the merc can be aggressive in their choice of fire rates - L" Munition sparen", // conserve ammo - L" Nur bei Bedarf feuern", // fire only when the merc needs to - L"Andere Optionen:", // other options available to merc - L" Rückzug möglich", // merc can retreat - L" Deckung möglich", // merc is allowed to seek cover - L" Kann Kameraden helfen", // merc can assist teammates - L"Fertig", // done with this menu - L"Abbruch", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player -STR16 pOtherGuardMenuStrings[] = -{ - L"Schussrate:", - L" *Aggressiv feuern*", - L" *Munition sparen*", - L" *Nur bei Bedarf feuern*", - L"Andere Optionen:", - L" *Rückzug möglich*", - L" *Deckung möglich*", - L" *Kann Kameraden helfen*", - L"Fertig", - L"Abbruch", -}; - -STR16 pAssignMenuStrings[] = -{ - L"Dienst", // merc is on active duty - L"Doktor", // the merc is acting as a doctor - L"Disease", // merc is a doctor doing diagnosis TODO.Translate - L"Patient", // the merc is receiving medical attention - L"Fahrzeug", // the merc is in a vehicle - L"Repar.", // the merc is repairing items - L"Radio Scan", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"Snitch", // TODO.Translate // anv: snitch actions - L"Training", // the merc is training - L"Miliz", // all things militia - L"Umzug", // move items - L"Fortify", // fortify sector // TODO.Translate - L"Intel", // covert assignments // TODO.Translate - L"Administer", // TODO.Translate - L"Explore", // TODO.Translate - L"Betrieb", // the merc is using/staffing a facility - L"Abbrechen", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"Angreifen", // set militia to aggresive - L"Position halten", // set militia to stationary - L"Rückzug", // retreat militia - L"An meine Position", // retreat militia - L"Auf den Boden", // retreat militia - L"Ducken", - L"In Deckung gehen", - L"Move to", // TODO.Translate - L"Alle: Angreifen", - L"Alle: Position halten", - L"Alle: Rückzug", - L"Alle: An meine Position", - L"Alle: Ausschwärmen", - L"Alle: Auf den Boden", - L"Alle: Ducken", - L"Alle: In Deckung gehen", - //L"All: Find items", - L"Abbrechen", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = -{ - // radio operator - L"Artillerie befehligen", - L"Kommunikation stören", - L"Frequenzen scannen", - L"Abhöraktion starten", - L"Verstärkung rufen", - L"Radiogerät ausschalten", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", // TODO.Translate - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Spotter", - L"Fokus", - L"Greifen", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Artillerieschlag befehligen von einem Sektor...", - L"Alle Funkfrequenzen mit weißem Rauschen füllen, sodass eine Kommunikation nicht mehr möglich ist.", - L"Nach Störsignalen scannen.", - L"Das Radiogerät verwenden, um feindliche Bewegungen zu orten.", - L"Verstärkung aus dem Nachbarsektor anfordern.", - L"Radiogerät ausschalten.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", // TODO.Translate - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Bestimmtes Gebiet beobachten, damit Scharfschützen einen Bonus auf deren Treffsicherheit erhalten.", - L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Benötigt:\n", - L" - %d AP\n", - L" - %s\n", - L" - %s oder höher\n", - L" - %s oder höher oder\n", - L" - %d Minuten um fertig zu sein\n", - L" - Mörser Positionen in Nachbarsektoren\n", - L" - %s |o|d|e|r %s |u|n|d %s oder %s oder höher\n", - L" - besessen von einem Dämon", - L" - a gun-related trait\n", // TODO.Translate - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = // TODO.Translate -{ - L"Militia", - L"Other Squads", - L"Cancel", - L"%d Militia", - L"All Militia", - - L"More", // TODO.Translate - L"Corpse: %s", // TODO.Translate -}; - -// TODO.Translate -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Team Informant", - L"Town Assignment", - L"Cancel", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Discuss snitch's behaviour towards his teammates.", - L"Take an assignment in this sector.", - L"Cancel", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Report complaints", - L"Don't report", - L"Prevent misbehaviour", - L"Ignore misbehaviour", - L"Cancel", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Report any complaints you hear from other mercs to your commander.", - L"Don't report anything.", - L"Try to stop other mercs from getting wasted and scrounging.", - L"Don't care what other mercs do.", - L"Cancel", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Spread propaganda", - L"Gather rumours", - L"Cancel", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", - L"Keep an ear to the ground on any rumours about enemy forces activity.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = // TODO.Translate -{ - L"Interrogate admins", - L"Interrogate troops", - L"Interrogate elites", - L"Interrogate officers", - L"Interrogate generals", - L"Interrogate civilians", - L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s was exposed as a snitch but managed to notice it and get out alive.", - L"%s was exposed as a snitch but managed to defuse situation and get out alive.", - L"%s was exposed as a snitch but managed to avoid assassination attempt.", - L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", - - L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", - L"%s was exposed as a snitch and almost beaten to death before guards saved him.", - L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", - L"%s was exposed as a snitch and strangled to death before guards saved him.", - - L"%s was exposed as a snitch and drowned in toilet by other inmates.", - L"%s was exposed as a snitch and beaten to death by other inmates.", - L"%s was exposed as a snitch and shanked to death by other inmates.", - L"%s was exposed as a snitch and strangled to death by other inmates.", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s heard rumours about enemy activity in %d sectors.", - -}; -// /TODO.Translate - -STR16 pRemoveMercStrings[] ={ - L"Söldner entfernen", // remove dead merc from current team - L"Abbrechen", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Gesundheit", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Kraft", - L"Führungsqualität", - L"Treffsicherheit", - L"Technik", - L"Sprengstoffe", - L"Medizin", - L"Abbrechen", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Üben", // train yourself - L"Train workers", // TODO.Translate - L"Trainer", // train your teammates - L"Rekrut", // be trained by an instructor - L"Abbrechen", // cancel this menu -}; - -STR16 pSquadMenuStrings[] = -{ - L"Trupp 1", - L"Trupp 2", - L"Trupp 3", - L"Trupp 4", - L"Trupp 5", - L"Trupp 6", - L"Trupp 7", - L"Trupp 8", - L"Trupp 9", - L"Trupp 10", - L"Trupp 11", - L"Trupp 12", - L"Trupp 13", - L"Trupp 14", - L"Trupp 15", - L"Trupp 16", - L"Trupp 17", - L"Trupp 18", - L"Trupp 19", - L"Trupp 20", - L"Abbrechen", -}; - -STR16 pPersonnelTitle[] = -{ - L"Personal", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Gesundheit: ", // Stat: Health of merc - L"Beweglichkeit: ", // Stat: Agility - L"Geschicklichkeit: ", // Stat: Dexterity - L"Kraft: ", // Stat: Strength - L"Führungsqualität: ", // Stat: Leadership - L"Weisheit: ", // Stat: Wisdom - L"Erfahrungsstufe: ", // Stat: Experience level - L"Treffsicherheit: ", // Stat: Marksmanship - L"Technik: ", // Stat: Mechanical - L"Sprengstoffe: ", // Stat: Explosives - L"Medizin: ", // Stat: Medical - L"Med. Vorsorge: ", // amount of medical deposit put down on the merc - L"Laufzeit: ", // time remaining on current contract - L"Getötet: ", // number of kills by merc - L"Mithilfe: ", // number of assists on kills by merc - L"Tgl. Kosten:", // daily cost of merc - L"Gesamtkosten:", // total cost of merc - L"Vertrag:", // cost of current contract - L"Diensttage:", // total service rendered by merc - L"Schulden:", // amount left on MERC merc to be paid - L"Trefferquote:", // percentage of shots that hit target - L"Einsätze:", // number of battles fought - L"Verwundungen:", // number of times merc has been wounded - L"Fähigkeiten:", // Traits - L"Keine Fähigkeiten:", // No traits - L"Aktivitäten:", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - // GETÖTET - // 0 - L"Elite Soldaten: %d\n", - L"Reguläre Soldaten: %d\n", - L"Admin Soldaten: %d\n", - L"Feindliche Gruppen: %d\n", - L"Monster: %d\n", - L"Panzer: %d\n", - L"Andere: %d\n", - - // MITHILFE - // 7 - L"Söldner: %d\n", - L"Miliz: %d\n", - L"Andere: %d\n", - - // TREFFERQUOTE - // 10 - L"Schüsse gefeuert: %d\n", - L"Raketen gefeuert: %d\n", - L"Granaten geworfen: %d\n", - L"Messer geworfen: %d\n", - L"Klinge attakiert: %d\n", - L"Nahkampf attakiert: %d\n", - L"Gelandete Treffer: %d\n", - - // AKTIVITÄTEN - // 17 - L"Schlösser geknackt: %d\n", - L"Schlösser gebrochen: %d\n", - L"Fallen entschärft: %d\n", - L"Sprenstoffe entzündet: %d\n", - L"Gegenstände repariert: %d\n", - L"Gegenstände kombiniert: %d\n", - L"Gegenstände gestohlen: %d\n", - L"Miliz trainiert: %d\n", - L"Soldaten verbunden: %d\n", - L"Operation gemacht: %d\n", - L"Personen bekanntgemacht: %d\n", - L"Sektoren erkundet: %d\n", - L"Hinterhalte vermieden: %d\n", - L"Aufträge erledigt: %d\n", - - // EINSÄTZE - // 31 - L"Taktische Kämpfe: %d\n", - L"Automatische Kämpfe: %d\n", - L"Fluchtversuche: %d\n", - L"Erfolgreiche Hinterhalte: %d\n", - L"Schwerster Kampf: %d Feinde\n", - - // VERWUNDUNGEN - // 36 - L"Angeschossen: %d\n", - L"Angestochen: %d\n", - L"Geschlagen: %d\n", - L"Explosionsverletzungen: %d\n", - L"Schaden erlitten in Anlagen: %d\n", - L"Operationen ertragen: %d\n", - L"Unfälle in Anlagen: %d\n", - - // 43 - L"Charakter:", - L"Schwächen:", - - L"Persönlichkeit:", - - L"Zombies: %d\n", - - L"Werdegang:", - L"Personalität:", - - L"Prisoners interrogated: %d\n", // TODO.Translate - L"Diseases caught: %d\n", - L"Total damage received: %d\n", - L"Total damage caused: %d\n", - L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - L"Keine Fähigkeiten", - L"Schlösser knacken", - L"Nahkampf", - L"Elektronik", - L"Nachteinsatz", - L"Werfen", - L"Lehren", - L"Schwere Waffen", - L"Autom. Waffen", - L"Schleichen", - L"Geschickt", - L"Dieb", - L"Kampfsport", - L"Messer", - L"Scharfschütze", - L"Getarnt", - L"(Experte)", -}; - -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"Keine Fertigkeit", - - L"MG-Schütze", - L"Grenadier", - L"Präzisionsschütze", - L"Pfadfinder", - L"Pistolenschütze", - L"Faustkämpfer", - L"Gruppenführer", - L"Mechaniker", - L"Sanitäter", - // Minor traits - L"Beidhänder", - L"Messerkämpfer", - L"Messerwerfer", - L"Nachtmensch", - L"Schleicher", - L"Läufer", - L"Kraftsportler", - L"Sprengmeister", - L"Ausbilder", - L"Aufklärer", - // covert ops is a major trait that was added later - L"Geheimagent", - // new minor traits - L"Funker", // 21 - L"Snitch", // 22 // TODO.Translate - L"Survival", - - // second names for major skills - L"MG-Veteran", // 24 - L"Artillerist", - L"Scharfschütze", - L"Jäger", - L"Revolverheld", - L"Kampfsportler", - L"Zugführer", - L"Ingenieur", - L"Arzt", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"Spion", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch(minor trait) - L"Placeholder", // for survival (minor trait) - L"Mehr...", // 47 - L"Intel", // for INTEL // TODO.Translate - L"Disguise", // for DISGUISE - L"diverse", // for VARIOUSSKILLS - L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate -}; - -// This is pop up help text for the options that are available to the merc -STR16 pTacticalPopupButtonStrings[] = -{ - L"|Stehen/Gehen", - L"Kauern/Kauernd bewegen (|C)", - L"Stehen/|Rennen", - L"Hinlegen/Kriechen (|P)", - L"B|licken", - L"Aktion", - L"Reden", - L"Untersuchen (|C|t|r|l)", - - //Pop up door menu - L"Manuell öffnen", - L"Auf Fallen untersuchen", - L"Dietrich", - L"Mit Gewalt öffnen", - L"Falle entschärfen", - L"Abschließen", - L"Aufschließen", - L"Schloss aufsprengen", - L"Brecheisen benutzen", - L"Rückgängig (|E|s|c)", - L"Schließen", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. -STR16 pDoorTrapStrings[] = -{ - L"keine Falle", - L"eine Sprengstofffalle", - L"eine elektrische Falle", - L"eine Falle mit Sirene", - L"eine Falle mit stummem Alarm", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. -STR16 pContractExtendStrings[] = -{ - L"1 Tag", - L"1 Woche", - L"2 Wochen", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Charakter auswählen", - L"Söldner einteilen", - L"Marschroute", - - //The new 'c' key activates this option. Either reword this string to include a 'c' in it, or leave as is. - L"Vertrag für Söldner (|c)", - - L"Söldner entfernen", - L"Schlafen", -}; - -// volumes of noises -STR16 pNoiseVolStr[] = -{ - L"LEISE", - L"DEUTLICH", - L"LAUT", - L"SEHR LAUT", -}; - -// types of noises -STR16 pNoiseTypeStr[] = -{ - L"EIN UNBEKANNTES GERÄUSCH", - L"EINE BEWEGUNG", - L"EIN KNARREN", - L"EIN KLATSCHEN", - L"EINEN AUFSCHLAG", - L"EINEN SCHUSS", - L"EINE EXPLOSION", - L"EINEN SCHREI", - L"EINEN AUFSCHLAG", - L"EINEN AUFSCHLAG", - L"EIN ZERBRECHEN", - L"EIN ZERSCHMETTERN", -}; - -// Directions that are used throughout the code for identification. -STR16 pDirectionStr[] = -{ - L"NORDOSTEN", - L"OSTEN", - L"SÜDOSTEN", - L"SÜDEN", - L"SÜDWESTEN", - L"WESTEN", - L"NORDWESTEN", - L"NORDEN", -}; - -// These are the different terrain types. -STR16 pLandTypeStrings[] = -{ - L"Stadt", - L"Straße", - L"Ebene", - L"Wüste", - L"Lichter Wald", - L"Dichter Wald", - L"Sumpf", - L"See/Ozean", - L"Hügel", - L"Unpassierbar", - L"Fluss", //river from north to south - L"Fluss", //river from east to west - L"Fremdes Land", - //NONE of the following are used for directional travel, just for the sector description. - L"Tropen", - L"Farmland", - L"Ebene, Straße", - L"Wald, Straße", - L"Farm, Straße", - L"Tropen, Straße", - L"Wald, Straße", - L"Küste", - L"Berge, Straße", - L"Küste, Straße", - L"Wüste, Straße", - L"Sumpf, Straße", - L"Wald, Raketen", - L"Wüste, Raketen", - L"Tropen, Raketen", - L"Meduna, Raketen", - - //These are descriptions for special sectors - L"Cambria Hospital", - L"Drassen Flugplatz", - L"Meduna Flugplatz", - L"Raketen", - L"Tankstelle", // refuel site - L"Rebellenlager", //The rebel base underground in sector A10 - L"Tixa, Keller", //The basement of the Tixa Prison (J9) - L"Monsterhöhle", //Any mine sector with creatures in it - L"Orta, Keller", //The basement of Orta (K4) - L"Tunnel", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Bunker", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - // The first %s can either be bloodcats or enemies. - L"", //Unused - L"%s wurden entdeckt in Sektor %c%d und ein weiterer Trupp wird gleich ankommen.", //STR_DETECTED_SINGULAR - L"%s wurden entdeckt in Sektor %c%d und weitere Trupps werden gleich ankommen.", //STR_DETECTED_PLURAL - L"Gleichzeitige Ankunft koordinieren?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"Feind bietet die Chance zum Aufgeben an.", //STR_ENEMY_SURRENDER_OFFER - L"Feind hat restliche bewusstlose Söldner gefangen genommen.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Rückzug", //The retreat button //STR_AR_RETREAT_BUTTON - L"Fertig", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"VERTEIDIGUNG", //STR_AR_DEFEND_HEADER - L"ANGRIFF", //STR_AR_ATTACK_HEADER - L"BEGEGNUNG", //STR_AR_ENCOUNTER_HEADER - L"Sektor", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"SIEG!", //STR_AR_OVER_VICTORY - L"NIEDERLAGE!", //STR_AR_OVER_DEFEAT - L"AUFGEGEBEN!", //STR_AR_OVER_SURRENDERED - L"GEFANGENGENOMMEN!", //STR_AR_OVER_CAPTURED - L"AUSGEWICHEN!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Miliz", //STR_AR_MILITIA_NAME, - L"Elite", //STR_AR_ELITE_NAME, - L"Soldat", //STR_AR_TROOP_NAME, - L"Admin.", //STR_AR_ADMINISTRATOR_NAME, - L"Monster", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Zeit verstrichen", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"IST AUSGEWICHEN", //STR_AR_MERC_RETREATED, - L"WEICHT AUS", //STR_AR_MERC_RETREATING, - L"RÜCKZUG", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Autom. Kampf", //STR_PB_AUTORESOLVE_BTN, - L"Gehe zu Sektor", //STR_PB_GOTOSECTOR_BTN, - L"Rückzug", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"FEINDBEGEGNUNG", - L"FEINDLICHE INVASION", - L"FEINDLICHER HINTERHALT", - L"FEINDLICHEN SEKTOR BETRETEN", - L"MONSTERANGRIFF", - L"BLOODCAT-HINTERHALT", - L"BLOODCAT-HÖHLE BETRETEN", - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Ort", - L"Feinde", - L"Söldner", - L"Miliz", - L"Monster", - L"Bloodcats", - L"Sektor", - L"Keine", //If there are no uninvolved mercs in this fight. - L"n.a.", //Acronym of Not Applicable - L"T", //One letter abbreviation of day - L"h", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Räumen", - L"Verteilen", - L"Gruppieren", - L"Fertig", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"Söldner räumen ihre Positionen\n und können manuell neu platziert werden. (|C)", - L"Söldner |schwärmen in alle Richtungen aus\n wenn der Button gedrückt wird.", - L"Mit diesem Button können Sie wählen, wo die Söldner |gruppiert werden sollen.", - L"Klicken Sie auf diesen Button, wenn Sie die\n Positionen der Söldner gewählt haben. (|E|n|t|e|r)", - L"Sie müssen alle Söldner positionieren\n bevor die Schlacht beginnt.", - - //Various strings (translate word for word) - - L"Sektor", - L"Eintrittspunkte wählen", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"Das sieht nicht gut aus. Gelände ist unzugänglich. Versuchen Sie es an einer anderen Stelle.", - L"Platzieren Sie Ihre Söldner in den markierten Sektor auf der Karte.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"ist angekommen im Sektor", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"Entscheidet Schlacht |automatisch für Sie\nohne Karte zu laden.", - L"Sie können den PC-Kampf-Modus nicht benutzen, während Sie\neinen vom Feind verteidigten Ort angreifen.", - L"Sektor b|etreten und Feind in Kampf verwickeln.", - L"Gruppe zum vorigen Sektor zu|rückziehen.", //singular version - L"Alle Gruppen zum vorigen Sektor zu|rückziehen.", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"Feinde attackieren Ihre Miliz im Sektor %c%d.", - //%c%d is the sector -- ex: A9 - L"Monster attackieren Ihre Miliz im Sektor %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Monster attackieren und töten %d Zivilisten im Sektor %s.", - //%s is the sector -- ex: A9 - L"Feinde attackieren Ihre Söldner im Sektor %s. Alle Söldner sind bewusstlos!", - //%s is the sector -- ex: A9 - L"Monster attackieren Ihre Söldner im Sektor %s. Alle Söldner sind bewusstlos!", - - // Flugente: militia movement forbidden due to limited roaming // TODO.Translate - L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", - L"War room isn't staffed - militia move aborted!", - - L"Robot", //STR_AR_ROBOT_NAME, // TODO: translate - L"Panzer", //STR_AR_TANK_NAME, - L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate - - L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", // TODO.Translate - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"Tag", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2]= -{ - L"gefunden im Sektor:", - L"gefunden am:", -}; - -//The headers used to describe various weapon statistics. -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"Status:", - L"Gew.:", //weight - L"AP Kosten", - L"Reichw.:", // Range - L"Schaden:", - L"Anzahl:", // Number of bullets left in a magazine - L"AP:", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Genauigkeit:", //9 - L"Reichweite:", //10 - L"Schaden:", //11 - L"Gewicht:", //12 - L"Bet. Schaden:", //13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - L"Zubehör:", //14 // Attachments - L"AUTO/5:", //15 - L"Verf. Munition:", //16 - - L"Standard:", //17 //WarmSteel - So we can also display default attachments - L"Schmutz:", // 18 //added by Flugente - L"Platz:", // 19 //space left on Molle items - L"Streumuster:", // 20 - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box - -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - L"|R|e|i|c|h|w|e|i|t|e\n \nDie effektive Reichweite dieser Waffe\nAngriffe jenseits dieser Reichweite führt zu drastischen Genauigkeitseinbußen.\n \nHöher ist besser.", - L"|S|c|h|a|d|e|n\n \nDas Schadenspotential der Waffe.\nDie Waffe wird in der Regel diesen \n(oder ähnlichen) Schaden an ungeschützten Zielen verursachen.\n \nHöher ist besser.", - L"|G|e|n|a|u|i|g|k|e|i|t\n \nDieser Wert gibt die Exaktheit der Waffe\n(Trefferwahrscheinlichkeit) an, je nachdem,\nwie gut oder schlecht das Design der Waffe ist.\n \nHöher ist besser.", - L"|Z|i|e|l|g|e|n|a|u|i|g|k|e|i|t\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHöher ist besser.", - L"|Z|i|e|l|e|n|-|M|o|d|i|f|i|k|a|t|o|r\n \nEin Modifikator, welcher die Wirksamkeit\nder Waffe bei jedem Zielgenauigkeits-Klick verändert\n \nHöher ist besser.", - L"|M|i|n|. |R|e|i|c|h|w|e|i|t|e |f|ü|r |Z|i|e|l|e|n|-|B|o|n|u|s\n \nDer minimale Bereich zum Ziel welcher erforderlich ist,\num den Zielen-Modifikator verwenden zu können.\n \nNiedriger ist besser.", - L"|T|r|e|f|f|e|r|-|M|o|d|i|f|i|k|a|t|o|r\n \nEin Modifikator zur Trefferwahrscheinlichkeit\nbei jedem Schuss der mit dieser Waffe abgefeuert wird.\n \nHöher ist besser.", - L"|O|p|t|i|m|a|l|e |L|a|s|e|r |R|e|i|c|h|w|e|i|t|e\n \nDie Entfernung (in Felder) bei der die angebrachte Lasermarkierung\nauf der Waffe die beste Effektivität erreicht.\n \nHöher ist besser.", - L"|M|ü|n|d|u|n|g|s|f|e|u|e|r |U|n|t|e|r|d|r|ü|c|k|u|n|g\n \nWenn dieses Symbol erscheint, bedeutet dies, dass die Waffe\nkein Mündungsfeuer verursacht, wenn geschossen wird.", - L"|L|a|u|t|s|t|ä|r|k|e\n \nAngriffe mit dieser Waffe können bis zu der\nangezeigten Distanz (in Felder) gehört werden.\n \nNiedriger ist besser.", - L"|Z|u|v|e|r|l|ä|s|s|i|g|k|e|i|t\n \nDieser Wert zeigt an, wie schnell die Waffe\nim Kampf bei Benützung schadhaft werden kann.\n \nHöher ist besser.", - L"|R|e|p|a|r|a|t|u|r|l|e|i|c|h|t|i|g|k|e|i|t\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur Techniker und spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", - L"", //12 - L"APs zum Anlegen", - L"APs für Einzelschuss", - L"APs für Feuerstoß", - L"APs für Autofeuer", - L"APs zum Nachladen", - L"APs zum manuellen Nachladen", - L"Feuerstoß-Streuung (Niedriger ist besser)", //19 - L"Zweibein-Modifikator", - L"Autofeuer: Schüsse je 5 AP", - L"Autofeuer-Streuung (Niedriger ist besser)", - L"Burst/Auto-Streuung (Niedriger ist besser)", //23 - L"APs zum Werfen", - L"APs zum Abschießen", - L"APs zum Stechen", - L"Kein Einzelschuss!", - L"Kein Feuerstoß!", - L"Kein Autofeuer!", - L"APs zum Schlagen", - L"", - L"|R|e|p|a|r|a|t|u|r|l|e|i|c|h|t|i|g|k|e|i|t\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Gegenstandsgrößen-Modifikator (Niedriger ist besser)", - L"Zuverlässigkeits-Modifikator", - L"Schalldämpfung (Niedriger ist besser)", - L"Mündungsfeuerdämpfung", - L"Zweibein-Modifikator", - L"Reichweiten-Modifikator", - L"Treffer-Modifikator", - L"Beste Laser-Reichweite", - L"Zielen-Bonus-Modifikator", - L"Schusszahlmodifikator Feuerstoß", //LOOTF - geändert von "Feuerstoßgrößen-Modifikator" - L"Feuerstoßstreuungs-Modifikator", - L"Dauerfeuerstreuungs-Modifikator", - L"AP-Modifikator", - L"AP-Modifikator Feuerstoß (Niedriger ist besser)", //LOOTF - geändert von "AP für Feuerstoß Modifikator.." - L"AP-Modifikator Dauerfeuer (Niedriger ist besser)", //LOOTF - geändert von "AP für Autofeuer Modifikator.." - L"AP-Modifikator Waffenvorhalt", //LOOTF - geändert von "AP für Anlegen Modifikator" - L"AP-Modifikator Nachladen", //LOOTF - geändert von "AP für Nachladen Mofifikator" - L"Magazingrößen-Modifikator", - L"AP-Modifikator für Angriff", //LOOTF - geändert von "AP für Angriff Modifikator" - L"Schaden-Modifikator", - L"Nahkampf-Modifikator", - L"Waldtarnung", - L"Stadt-Tarnung", - L"Wüstentarnung", - L"Schneetarnung", - L"Anschleichen-Modifikator", - L"Hörweiten-Modifikator", - L"Sichtweiten-Modifikator", - L"Tagsichtweiten-Modifikator", - L"Nachtsichtweiten-Modifikator", - L"Grelles-Licht-Modifikator", - L"Höhlensicht-Modifikator", - L"Tunnelblick-Modifikator (Niedriger ist besser)", - L"Minimale Reichweite für Zielbonus", - L"Hold |C|t|r|l to compare items", // item compare help text // TODO.Translate - L"Gesamtgewicht: %4.1f kg", // 35 -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"In ", - L"PERFEKTEM", - L"EXZELLENTEM", - L"GUTEM", - L"NORMALEM", - L"NICHT GUTEM", - L"SCHLECHTEM", - L"SCHRECKLICHEM", - L" Zustand." -}; - -//The headers used for the merc's money. -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Betrag", - L"verbleibend:", //this is the overall balance - L"Betrag", - L"teilen:", // the amount he wants to separate from the overall balance to get two piles of money - - L"Konto", - L"Saldo:", - L"Betrag", - L"abheben:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. -CHAR16 zHealthStr[][13] = //used to be 10 -{ - L"STIRBT", // >= 0 - L"KRITISCH", // >= 15 - L"SCHLECHT", // >= 30 - L"VERWUNDET", // >= 45 - L"GESUND", // >= 60 - L"STARK", // >= 75 - L"SEHR GUT", // >= 90 - L"GEFANGEN", // added by Flugente -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"$1000", - L"$100", - L"$10", - L"OK", - L"Abheben", // Money from pile - L"Abheben", // Money from account -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"Pro:", -}; - -CHAR16 gzConsLabel[10] = -{ - L"Kont:", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Wie bitte?", //meaning "Repeat yourself" - L"Freundlich", //approach in a friendly - L"Direkt", //approach directly - let's get down to business - L"Drohen", //approach threateningly - talk now, or I'll blow your face off - L"Geben", - L"Rekrutieren", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Handeln", - L"Kaufen", - L"Verkaufen", - L"Reparieren", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"Fertig", -}; - -STR16 pVehicleStrings[] = -{ - L"Eldorado", - L"Hummer", // a hummer jeep/truck -- military vehicle - L"Eisverkaufswagen", - L"Jeep", - L"Panzer", - L"Helikopter", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Eldor.", - L"Hummer", // the HMVV - L"Laster", - L"Jeep", - L"Tank", - L"Heli", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Eldorado", - L"Hummer", //a military jeep. This is a brand name. - L"Laster", // Ice cream truck - L"Jeep", - L"Panzer", - L"Heli", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"You cannot shoot from this seat.", // TODO.Translate - L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate -}; - -//These are messages Used in the Tactical Screen -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Luftangriff", - L"Automatisch Erste Hilfe leisten?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s bemerkt, dass Teile aus der Lieferung fehlen.", - - // The %s is a string from pDoorTrapStrings - - L"Das Schloss hat %s.", - L"Es gibt kein Schloss.", - L"Erfolg!", - L"Fehlschlag.", - L"Erfolg!", - L"Fehlschlag.", - L"Das Schloss hat keine Falle.", - L"Erfolg!", - // The %s is a merc name - L"%s hat nicht den richtigen Schlüssel.", - L"Die Falle am Schloss ist entschärft.", - L"Das Schloss hat keine Falle.", - L"Geschl.", - L"TÜR", - L"FALLE AN", - L"Geschl.", - L"GEÖFFNET", - L"EINGETRETEN", - L"Hier ist ein Schalter. Betätigen?", - L"Falle entschärfen?", - L"Zurück...", - L"Weiter...", - L"Mehr...", - - // In the next 2 strings, %s is an item name - - L"%s liegt jetzt auf dem Boden.", - L"%s ist jetzt bei %s.", - - // In the next 2 strings, %s is a name - - L"%s hat den vollen Betrag erhalten.", - L"%s bekommt noch %d.", - L"Detonationsfrequenz auswählen:", //in this case, frequency refers to a radio signal - L"Wie viele Züge bis zur Explosion:", //how much time, in turns, until the bomb blows - L"Ferngesteuerte Zündung einstellen:", //in this case, frequency refers to a radio signal - L"Falle entschärfen?", - L"Blaue Flagge wegnehmen?", - L"Blaue Flagge hier aufstellen?", - L"Zug beenden", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"Wollen Sie %s wirklich angreifen?", - L"Fahrzeuge können ihre Haltung nicht ändern.", - L"Der Roboter kann seine Haltung nicht ändern.", - - // In the next 3 strings, %s is a name - - //%s can't change to that stance here - L"%s kann die Haltung hier nicht ändern.", - - L"%s kann hier nicht versorgt werden.", - L"%s braucht keine Erste Hilfe.", - L"Kann nicht dorthin gehen.", - L"Ihr Team ist komplett. Kein Platz mehr für Rekruten.", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s wird rekrutiert.", - - // Here %s is a name and %d is a number - - L"%s bekommt noch %d $.", - - // In the next string, %s is a name - - L"%s eskortieren?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"%s für %s pro Tag anheuern?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"Kämpfen?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"%s für %s kaufen?", - - // In the next string, %s is a name - - L"%s wird von Trupp %d eskortiert.", - - // These messages are displayed during play to alert the player to a particular situation - - L"KLEMMT", //weapon is jammed. - L"Roboter braucht Munition vom Kaliber %s.", //Robot is out of ammo - L"Dorthin werfen? Unmöglich.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Schleichen (|Z)", - L"Kartenbildschir|m", - L"Spielzug been|den", - L"Sprechen", - L"Stumm", - L"Aufrichten (|P|g|U|p)", - L"Ebene wechseln (|T|a|b)", - L"Klettern / Springen (|J)", - L"Ducken (|P|g|D|n)", - L"Untersuchen (|C|t|r|l)", - L"Voriger Söldner", - L"Nächster Söldner (|S|p|a|c|e)", - L"|Optionen", - L"Feuermodus (|B)", - L"B|lickrichtung", - L"Gesundheit: %d/%d\nEnergie: %d/%d\nMoral: %s", - L"Was?", //this means "what?" - L"Weiter", //an abbrieviation for "Continued" (displayed on merc portrait) - L"Schleichen aus für %s.", - L"Schleichen an für %s.", - L"Fahrer", - L"Fahrzeug verlassen", - L"Trupp wechseln", - L"Fahren", - L"n.a.", //this is an acronym for "Not Applicable." - L"Benutzen ( Faustkampf )", - L"Benutzen ( Feuerwaffe )", - L"Benutzen ( Hieb-/Stichwaffe )", - L"Benutzen ( Sprengstoff )", - L"Benutzen ( Verbandskasten )", - L"(Fangen)", - L"(Nachladen)", - L"(Geben)", - L"%s Falle wurde ausgelöst.", - L"%s ist angekommen.", - L"%s hat keine Action-Punkte mehr.", - L"%s ist nicht verfügbar.", - L"%s ist fertig verbunden.", - L"%s sind die Verbände ausgegangen.", - L"Feind im Sektor!", - L"Keine Feinde in Sicht.", - L"Nicht genug Action-Punkte.", - L"Niemand bedient die Fernbedienung.", - L"Feuerstoß hat Magazin geleert!", - L"SOLDAT", - L"MONSTER", - L"MILIZ", - L"ZIVILIST", - L"ZOMBIE", - L"PRISONER", - L"Sektor verlassen", - L"OK", - L"Abbruch", - L"Gewählter Söldner", - L"Ganzer Trupp", - L"Gehe zu Sektor", - - L"Gehe zu Karte", - - L"Sie können den Sektor von dieser Seite aus nicht verlassen.", - L"Sie können den Sektor nicht verlassen im Rundenmodus.", - L"%s ist zu weit weg.", - L"Baumkronen entfernen", - L"Baumkronen zeigen", - L"KRÄHE", //Crow, as in the large black bird - L"NACKEN", - L"KOPF", - L"TORSO", - L"BEINE", - L"Der Herrin sagen, was sie wissen will?", - L"Fingerabdruck-ID gespeichert", - L"Falsche Fingerabdruck-ID. Waffe außer Betrieb", - L"Ziel erfasst", - L"Weg blockiert", - L"Geld einzahlen/abheben", //Help text over the $ button on the Single Merc Panel - L"Niemand braucht Erste Hilfe.", - L"Klemmt.", //Short form of JAMMED, for small inv slots - L"Kann da nicht hin.", // used ( now ) for when we click on a cliff - L"Weg ist blockiert. Mit dieser Person den Platz tauschen?", - L"Person will sich nicht bewegen", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Mit der Zahlung von %s einverstanden?", - L"Gratisbehandlung akzeptieren?", - L"%s heiraten?", //Daryl - L"Schlüsselring", - L"Das ist mit einem EPC nicht möglich.", - L"%s verschonen?", //Krott - L"Außer Reichweite", - L"Arbeiter", //People that work in mines to extract precious metals - L"Fahrzeug kann nur zwischen Sektoren fahren", - L"Automatische Erste Hilfe nicht möglich", - L"Weg blockiert für %s", - L"Ihre von %s Truppe gefangenen Soldaten sind hier inhaftiert", //Deidrannas - L"Schloss getroffen", - L"Schloss zerstört", - L"Noch jemand an der Tür.", - L"Gesundh.: %d/%d\nTank: %d/%d", - L"%s kann %s nicht sehen.", // Cannot see person trying to talk to - L"Anbringung entfernt", - L"Sie können kein weiteres Fahrzeug mehr verwenden, da Sie bereits 2 haben", - - // added by Flugente for defusing/setting up trap networks - L"Detonations-Frequenz (1 - 4) oder Entschärfungs-Frequenz (A - D):", - L"Entschärfungs-Frequenz:", - L"Detonations-Frequenz (1 - 4) und die Entschärfungs-Frequenz (A - D):", - L"Detonations-Zeit (in Züge) (1 - 4) und die Entschärfungs-Frequenz (A - D):", - L"Stolperdraht-Hierarchie (1 - 4) und das Netzwerk (A - D):", - - // added by Flugente to display food status - L"Gesundheit: %d/%d\nAusdauer: %d/%d\nMoral: %s\nWasser: %d%s\nEssen: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"Was möchten Sie tun?", - L"Feldflasche auffüllen", - L"Waffen reinigen (Merc)", - L"Waffen reinigen (Team)", - L"Kleidung ausziehen", - L"Verkleidung loswerden", - L"Miliz inspizieren", - L"Miliz ausrüsten", - L"Verkleidung testen", - L"unused", - - // added by Flugente: decide what to do with the corpses - L"Was möchten Sie mit der Leiche tun?", - L"Enthaupten", - L"Ausweiden", - L"Kleidung nehmen", - L"Leiche nehmen", - - // Flugente: weapon cleaning - L"%s reinigte %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", // TODO.Translate - L"Field interrogation", - L"Wohin mit den %d Gefangenen?", - L"Freilassen", - L"Was möchten Sie tun?", - L"Kapitulation fordern", - L"Kapitulation anbieten", - L"Ablenken", - L"Sprechen", - L"Recruit Turncoat", // TODO: translate - - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Falle entschärfen", - L"Falle untersuchen", - L"Blaue Flagge entfernen", - L"Sprengen!", - L"Stolperdraht aktivieren", - L"Stolperdraht deaktivieren", - L"Stolperdraht freilegen", - L"Kein Zünder/Fernzünder gefunden!", - L"Diese Bombe ist bereits scharf!", - L"Sicher", - L"Fast sicher", - L"Riskant", - L"Gefährlich", - L"Höchst gefährlich!", - - L"Mask", // TODO.Translate - L"NVG", - L"Item", - - L"This feature works only with New Inventory System", - L"No item in your main hand", - L"Nowhere to place item from main hand", - L"No defined item for this quick slot", - L"No free hand for new item", - L"Item not found", - L"Cannot take item to main hand", - - L"Attempting to bandage travelling mercs...", //TODO.Translate - - L"Improve gear", - L"%s changed %s for superior version", - L"%s picked up %s", // TODO.Translate - - L"%s has stopped chatting with %s", // TODO.Translate -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"Der nächste Sektor wird sofort geladen, wenn Sie das Kästchen aktivieren.", - L"Sie kommen sofort zum Kartenbildschirm, wenn Sie das Kästchen aktivieren\nweil die Reise Zeit braucht.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"Der Sektor ist von Feinden besetzt. Sie können keine Söldner hier lassen.\nRegeln Sie das, bevor Sie neue Sektoren laden.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"Wenn die restlichen Söldner den Sektor verlassen,\nwird sofort der nächste Sektor geladen.", - L"Wenn die restlichen Söldner den Sektor verlassen,\nkommen Sie sofort zum Kartenbildschirm\nweil die Reise Zeit braucht.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s kann den Sektor nicht ohne Eskorte verlassen.", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s kann den Sektor nicht verlassen, weil er %s eskortiert.", //male singular - L"%s kann den Sektor nicht verlassen, weil sie %s eskortiert.", //female singular - L"%s kann den Sektor nicht verlassen, weil er mehrere Personen eskortiert.", //male plural - L"%s kann den Sektor nicht verlassen, weil sie mehrere Personen eskortiert.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"Alle Söldner müssen in der Nähe sein,\ndamit der Trupp weiterreisen kann.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"Bei aktiviertem Kästchen reist %s alleine und\nbildet automatisch wieder einen Trupp.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"Bei aktiviertem Kästchen reist der ausgewählte Trupp\nweiter und verlässt den Sektor.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s wird von Söldnern eskortiert und kann den Sektor nicht alleine verlassen. Die anderen Söldner müssen in der Nähe sein.", -}; - -STR16 pRepairStrings[] = -{ - L"Gegenstände", // tell merc to repair items in inventory - L"Raketenstützpunkt", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Abbruch", // cancel this menu - L"Roboter", // repair the robot -}; - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." -STR16 sPreStatBuildString[] = -{ - L"verliert", // the merc has lost a statistic - L"gewinnt", // the merc has gained a statistic - L"Punkt", // singular - L"Punkte", // plural - L"Level", // singular - L"Level", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"Gesundheit.", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Weisheit.", - L"an Medizinkenntnis.", - L"an Sprengstoffkenntnis.", - L"an Technikfähigkeit.", - L"an Treffsicherheit.", - L"Erfahrungsstufe(n).", - L"an Kraft.", - L"an Führungsqualität.", -}; - -STR16 pHelicopterEtaStrings[] = -{ - L"Gesamt: ", // total distance for helicopter to travel - L" Sicher: ", // Number of safe sectors - L" Unsicher:", // Number of unsafe sectors - L"Gesamtkosten: ", // total cost of trip by helicopter - L"Ank.: ", // ETA is an acronym for "estimated time of arrival" - - // warning that the sector the helicopter is going to use for refueling is under enemy control - L"Helikopter hat fast keinen Sprit mehr und muss im feindlichen Gebiet landen.", - L"Passagiere: ", - L"Skyrider oder Absprungsort auswählen?", - L"Skyrider", - L"Absprung", //make sure length doesn't exceed 8 characters (used to be "Absprungsort") - L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> // TODO.Translate - L"Helicopter will now return straight to base, do you want to drop down passengers before?", // TODO.Translate - L"Remaining Fuel:", // TODO.Translate - L"Dist. To Refuel Site:", // TODO.Translate -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", - L"Helicopter is currently disassembled. Wait until repairs are finished.", - L"Repairs completed. Helicopter is available again.", - L"Helicopter is fully refueled.", - - L"Helicopter has exceeded maximum range!", // TODO.Translate -}; - -STR16 sMapLevelString[] = -{ - L"Ebene:", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"Loyalität ", // the loyalty rating of a town ie : Loyal 53% -}; - -// error message for when player is trying to give a merc a travel order while he's underground. -STR16 gsUndergroundString[] = -{ - L"Ich kann unter der Erde keinen Marschbefehl empfangen.", -}; - -STR16 gsTimeStrings[] = -{ - L"h", // hours abbreviation - L"m", // minutes abbreviation - L"s", // seconds abbreviation - L"T", // days abbreviation -}; - -// text for the various facilities in the sector -STR16 sFacilitiesStrings[] = -{ - L"Keine", - L"Krankenhaus", - L"Fabrik", // Factory - L"Gefängnis", - L"Militär", - L"Flughafen", - L"Schießanlage", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button -STR16 pMapPopUpInventoryText[] = -{ - L"Inventar", - L"Exit", - L"Repair", // TODO.Translate - L"Factories", // TODO.Translate -}; - -// town strings -STR16 pwTownInfoStrings[] = -{ - L"Größe", // 0 // size of the town in sectors - L"", // blank line, required - L"unter Kontrolle", // how much of town is controlled - L"Keine", // none of this town - L"Mine", // mine associated with this town - L"Loyalität", // 5 // the loyalty level of this town - L"Trainiert", // the forces in the town trained by the player - L"", - L"Wichtigste Gebäude", // main facilities in this town - L"Level", // the training level of civilians in this town - L"Zivilistentraining", // 10 // state of civilian training in town - L"Miliz", // the state of the trained civilians in the town - - // Flugente: prisoner texts - L"Gefangene", - L"%d (max. %d)", - L"%d Hilfssoldaten", - L"%d Truppen", - L"%d Elite", - L"%d Offiziere", - L"%d Generele", - L"%d Zivilisten", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings -STR16 pwMineStrings[] = -{ - L"Mine", // 0 - L"Silber", - L"Gold", - L"Tagesproduktion", - L"Maximale Produktion", - L"Aufgegeben", // 5 - L"Geschlossen", - L"Fast erschöpft", - L"Produziert", - L"Status", - L"Produktionsrate", - L"Rohstoff", // 10 L"Erzart", - L"Kontrolle über Stadt", - L"Loyalität der Stadt", -}; - -// blank sector strings -STR16 pwMiscSectorStrings[] = -{ - L"Feindliche Verbände", - L"Sektor", - L"# der Gegenstände", - L"Unbekannt", - - L"Kontrolliert", - L"Ja", - L"Nein", - L"Status/Software Status:", - - L"Additional Intel", // TODO:Translate -}; - -// error strings for inventory -STR16 pMapInventoryErrorString[] = -{ - L"%s ist nicht nah genug.", //Merc is in sector with item but not close enough - L"Diesen Söldner können Sie nicht auswählen.", - L"%s ist nicht im Sektor.", - L"Während einer Schlacht müssen Sie Gegenstände manuell nehmen.", - L"Während einer Schlacht müssen Sie Gegenstände manuell fallenlassen.", - L"%s ist nicht im Sektor und kann Gegenstand nicht fallen lassen.", - L"Während des Kampfes können Sie die Munitionskiste nicht zum Nachladen verwenden.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Ort", // sector these items are in - L"Zahl der Gegenstände", // total number of items in sector -}; - -// help text for the user -STR16 pMapScreenFastHelpTextList[] = -{ - L"Um die Aufgabe eines Söldners zu ändern und ihn einem anderen Trupp, einem Reparatur- oder Ärzteteam zuzuweisen, klicken Sie in die 'Aufträge'-Spalte.", - L"Um einen Söldner an einen anderen Bestimmungsort zu versetzen, klicken Sie in die 'Aufträge'-Spalte.", - L"Wenn ein Söldner seinen Marschbefehl erhalten hat, kann er sich mit dem Zeitraffer schneller bewegen.", - L"Die linke Maustaste wählt den Sektor aus. Zweiter Klick auf die linke Maustaste erteilt Marschbefehl an Söldner. Mit der rechten Maustaste erhalten Sie Kurzinfos über den Sektor.", - L"Hilfe aufrufen mit Taste 'h'.", - L"Test-Text", - L"Test-Text", - L"Test-Text", - L"Test-Text", - L"In diesem Bildschirm können Sie nicht viel machen, bevor Sie in Arulco ankommen. Wenn Sie Ihr Team zusammengestellt haben, klicken Sie auf den Zeitraffer-Button unten rechts. Dadurch vergeht die Zeit schneller, bis Ihr Team in Arulco ankommt.", -}; - -// movement menu text -STR16 pMovementMenuStrings[] = -{ - L"Söldner in Sektor bewegen", // title for movement box - L"Route planen", // done with movement menu, start plotting movement - L"Abbruch", // cancel this menu - L"Andere", // title for group of mercs not on squads nor in vehicles - L"Select all", // Select all squads TODO: Translate -}; - -STR16 pUpdateMercStrings[] = -{ - L"Ups:", // an error has occured - L"Vertrag ist abgelaufen:", // this pop up came up due to a merc contract ending - L"Auftrag wurde ausgeführt:", // this pop up....due to more than one merc finishing assignments - L"Diese Söldner arbeiten wieder:", // this pop up ....due to more than one merc waking up and returing to work - L"Diese Söldner schlafen:", // this pop up ....due to more than one merc being tired and going to sleep - L"Vertrag bald abgelaufen:", //this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Städte zeigen (|W)", - L"|Minen zeigen", - L"|Teams & Feinde zeigen", - L"Luftr|aum zeigen", - L"Gegenstände zeigen (|I)", - L"Mili|z & Feinde zeigen", - L"Krankheitsdaten zeigen (|D)", - L"Wette|r zeigen", - L"Aufträge & Intel zeigen (|Q)", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Nächste (|.)", // next page - L"Vorherige (|,)", // previous page - L"Sektor Inventar schließen (|E|s|c)", // exit sector inventory - - L"Inventar zoomen", // HEAROCK HAM 5: Inventory Zoom Button - L"Gegenstände stapeln und verbinden", // HEADROCK HAM 5: Stack and Merge - L"|L|i|n|k|e|r |K|l|i|c|k: Munition in Kisten sortieren\n|R|e|c|h|t|e|r |K|l|i|c|k: Munition in Boxen sortieren", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|L|i|n|k|e|r |K|l|i|c|k: Alle Gegenstandsanbauten entfernen\n|R|e|c|h|t|e|r |K|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments - L"Munition aus allen Waffen entfernen", //HEADROCK HAM 5: Eject Ammo - L"|L|i|n|k|e|r |K|l|i|c|k: Alle Gegenstände anzeigen\n|R|e|c|h|t|e|r |K|l|i|c|k: Alle Gegenstände ausblenden", // HEADROCK HAM 5: Filter Button - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Waffen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Waffen anzeigen", // HEADROCK HAM 5: Filter Button - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Munition\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Munition anzeigen", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Sprengstoffe\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Sprengstoffe anzeigen", // HEADROCK HAM 5: Filter Button - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Nahkampfwaffen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Nahkampfwaffen anzeigen", // HEADROCK HAM 5: Filter Button - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Körperpanzerungen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Körperpanzerungen anzeigen", // HEADROCK HAM 5: Filter Button - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von LBEs\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur LBEs anzeigen", // HEADROCK HAM 5: Filter Button - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Ausrüstung\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Ausrüstung anzeigen", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von anderen Gegenständen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur andere Gegenstände anzeigen", // HEADROCK HAM 5: Filter Button - L"Ein-/Ausblenden von zu bewegenden Gegenständen", // Flugente: move item display - L"Speichere Ausrüstungsvorlage", - L"Lade Ausrüstungsvorlage...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"|Laptop", - L"Taktik (|E|s|c)", - L"|Optionen", - L"Zeitraffer (|+)", // time compress more - L"Zeitraffer (|-)", // time compress less - L"Vorige Nachricht (|U|p)\nSeite zurück (|P|g|U|p)", // previous message in scrollable list - L"Nächste Nachricht (|D|o|w|n)\nNächste Seite (|P|g|D|n)", // next message in the scrollable list - L"Zeit Start/Stop (|S|p|a|c|e)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Kontostand", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s ist tot.", -}; - -STR16 pDayStrings[] = -{ - L"Tag", -}; - -// the list of email sender names -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Enrico", - L"Psych Pro Inc.", - L"Online-Hilfe", - L"Psych Pro Inc.", - L"Speck", - L"R.I.S.", - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephan", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"H, A & S Versicherung", - L"Bobby Rays", - L"Kingpin", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings -STR16 pTraverseStrings[] = -{ - L"Vorige", - L"Nächste", -}; - -// new mail notify string -STR16 pNewMailStrings[] = -{ - L"Sie haben neue Mails...", -}; - -// confirm player's intent to delete messages -STR16 pDeleteMailStrings[] = -{ - L"Mail löschen?", - L"UNGELESENE Mail löschen?", -}; - -// the sort header strings -STR16 pEmailHeaders[] = -{ - L"Absender:", - L"Betreff:", - L"Datum:", -}; - -// email titlebar text -STR16 pEmailTitleText[] = -{ - L"Mailbox", -}; - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Buchhalter Plus", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Haben:", //the credits column (to ADD money to your account) - L"Soll:", //the debits column (to SUBTRACT money from your account) - L"Einkünfte vom Vortag:", - L"Sonstige Einzahlungen vom Vortag:", - L"Haben vom Vortag:", - L"Kontostand Ende des Tages:", - L"Tagessatz:", - L"Sonstige Einzahlungen von heute:", - L"Haben von heute:", - L"Kontostand:", - L"Voraussichtliche Einkünfte:", - L"Prognostizierter Kontostand:", // projected balance for player for tommorow -}; - -// headers to each list in financial screen -STR16 pFinanceHeaders[] = -{ - L"Tag", // the day column - L"Haben", //the credits column (to ADD money to your account) - L"Soll", //the debits column (to SUBTRACT money from your account) - L"Kontobewegungen", // transaction type - see TransactionText below - L"Kontostand", // balance at this point in time - L"Seite", // page number - L"Tag(e)", // the day(s) of transactions this page displays -}; - -STR16 pTransactionText[] = -{ - L"Aufgelaufene Zinsen", // interest the player has accumulated so far - L"Anonyme Einzahlung", - L"Bearbeitungsgebühr", - L"Angeheuert", // Merc was hired - L"Kauf bei Bobby Rays", // Bobby Ray is the name of an arms dealer - L"Ausgeglichene Konten bei M.E.R.C.", - L"Krankenversicherung für %s", // medical deposit for merc - L"B.S.E.-Profilanalyse", // IMP is the acronym for International Mercenary Profiling - L"Versicherung für %s abgeschlossen", - L"Versicherung für %s verringert", - L"Versicherung für %s verlängert", // johnny contract extended - L"Versicherung für %s gekündigt", - L"Versicherungsanspruch für %s", // insurance claim for merc - L"1 Tag", // merc's contract extended for a day - L"1 Woche", // merc's contract extended for a week - L"2 Wochen", // ... for 2 weeks - L"Minenertrag", - L"", - L"Blumen kaufen", - L"Volle Rückzahlung für %s", - L"Teilw. Rückzahlung für %s", - L"Keine Rückzahlung für %s", - L"Zahlung an %s", // %s is the name of the npc being paid - L"Überweisen an %s", // transfer funds to a merc - L"Überweisen von %s", // transfer funds from a merc - L"Miliz in %s ausbilden", // initial cost to equip a town's militia - L"Gegenstände von %s gekauft.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s hat Geld angelegt.", - L"Gegenstände an Bevölkerung verkauft", - L"Betriebskosten", // HEADROCK HAM 3.6 - L"Unterhaltskosten für Miliz", // HEADROCK HAM 3.6 - L"Lösegeld erpresst", // Flugente: prisoner system - L"WHO Daten abonnieren", // Flugente: disease - L"Zahlung an Kerberus", // Flugente: PMC - L"SAM reparieren", // Flugente: SAM repair - L"Arbeiter trainiert", // Flugente: train workers - L"Miliz in %s ausbilden", // Flugente: drill militia - L"Mini event", // rftr: mini events // TODO: translate - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Versicherung für", // insurance for a merc - L"%ss Vertrag verl. um 1 Tag", // entend mercs contract by a day - L"%ss Vertrag verl. um 1 Woche", - L"%ss Vertrag verl. um 2 Wochen", -}; - -// helicopter pilot payment -STR16 pSkyriderText[] = -{ - L"Skyrider wurden $%d gezahlt", // skyrider was paid an amount of money - L"Skyrider bekommt noch $%d", // skyrider is still owed an amount of money - L"Skyrider hat aufgetankt", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider ist bereit für weiteren Flug.", // Skyrider was grounded but has been freed - L"Skyrider hat keine Passagiere. Wenn Sie Söldner in den Sektor transportieren wollen, weisen Sie sie einem Fahrzeug/Helikopter zu.", -}; - -// strings for different levels of merc morale -STR16 pMoralStrings[] = -{ - L"Super", - L"Gut", - L"Stabil", - L"Schlecht", - L"Panik", - L"Mies", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. -STR16 pLeftEquipmentString[] = -{ - L"%ss Ausrüstung ist in Omerta angekommen (A9).", - L"%ss Ausrüstung ist in Drassen angekommen (B13).", -}; - -// Status that appears on the Map Screen -STR16 pMapScreenStatusStrings[] = -{ - L"Gesundheit", - L"Energie", - L"Moral", - L"Zustand", // the condition of the current vehicle (its "health") - L"Tank", // the fuel level of the current vehicle (its "energy") - L"Gift", - L"Wasser", // drink level - L"Essen", // food level -}; - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Voriger Söldner (|L|e|f|t)", // previous merc in the list - L"Nächster Söldner (|R|i|g|h|t)", // next merc in the list -}; - -STR16 pEtaString[] = -{ - L"Ank.:", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"Sie werden das Ding nie wiedersehen. Trotzdem wegwerfen?", // do you want to continue and lose the item forever - L"Dieser Gegenstand sieht SEHR wichtig aus. Sind Sie GANZ SICHER, dass Sie ihn wegwerfen wollen?", // does the user REALLY want to trash this item -}; - -STR16 pMapErrorString[] = -{ - L"Trupp kann nicht reisen, wenn einer schläft.", - -//1-5 - L"Wir müssen erst an die Oberfläche.", - L"Marschbefehl? Wir sind in einem feindlichen Sektor!", - L"Wenn Söldner reisen sollen, müssen sie einem Trupp oder Fahrzeug zugewiesen werden.", - L"Sie haben noch keine Teammitglieder.", // you have no members, can't do anything - L"Söldner kann Befehl nicht ausführen.", // merc can't comply with your order -//6-10 - L"braucht eine Eskorte. Platzieren Sie ihn in einem Trupp mit Eskorte.", // merc can't move unescorted .. for a male - L"braucht eine Eskorte. Platzieren Sie sie in einem Trupp mit Eskorte.", // for a female - L"Söldner ist noch nicht in %s!", - L"Erst mal Vertrag aushandeln!", - L"Marschbefehl ist nicht möglich. Luftangriffe finden statt.", -//11-15 - L"Marschbefehl? Hier tobt ein Kampf!", - L"Sie sind von Bloodcats umstellt in Sektor %s!", - L"Sie haben gerade eine Bloodcat-Höhle betreten in Sektor %s!", - L"", - L"Raketenstützpunkt in %s wurde erobert.", -//16-20 - L"Mine in %s wurde erobert. Ihre Tageseinnahmen wurden reduziert auf %s.", - L"Feind hat Sektor %s ohne Gegenwehr erobert.", - L"Mindestens ein Söldner konnte nicht eingeteilt werden.", - L"%s konnte sich nicht anschließen, weil %s voll ist", - L"%s konnte sich %s nicht anschließen, weil er zu weit weg ist.", -//21-25 - L"Die Mine in %s ist von Deidrannas Truppen erobert worden!", - L"Deidrannas Truppen sind gerade in den Raketenstützpunkt in %s eingedrungen", - L"Deidrannas Truppen sind gerade in %s eingedrungen", - L"Deidrannas Truppen wurden gerade in %s gesichtet.", - L"Deidrannas Truppen haben gerade %s erobert.", -//26-30 - L"Mindestens ein Söldner kann nicht schlafen.", - L"Mindestens ein Söldner ist noch nicht wach.", - L"Die Miliz kommt erst, wenn das Training beendet ist.", - L"%s kann im Moment keine Marschbefehle erhalten.", - L"Milizen außerhalb der Stadtgrenzen können nicht in andere Sektoren reisen.", -//31-35 - L"Sie können keine Milizen in %s haben.", - L"Leere Fahrzeuge fahren nicht!", - L"%s ist nicht transportfähig!", - L"Sie müssen erst das Museum verlassen!", - L"%s ist tot!", -//36-40 - L"%s kann nicht zu %s wechseln, weil der sich bewegt", - L"%s kann so nicht einsteigen", - L"%s kann sich %s nicht anschließen", - L"Sie können den Zeitraffer erst mit neuen Söldnern benutzen!", - L"Dieses Fahrzeug kann nur auf Straßen fahren!", -//41-45 - L"Reisenden Söldnern können Sie keine Aufträge erteilen.", - L"Kein Benzin mehr!", - L"%s ist zu müde.", - L"Keiner kann das Fahrzeug steuern.", - L"Ein oder mehrere Söldner dieses Trupps können sich jetzt nicht bewegen.", -//46-50 - L"Ein oder mehrere Söldner des ANDEREN Trupps können sich gerade nicht bewegen.", - L"Fahrzeug zu stark beschädigt!", - L"Nur zwei Söldner pro Sektor können Milizen trainieren.", - L"Roboter muss von jemandem bedient werden. Beide im selben Trupp platzieren.", - L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate -// 51-55 - L"%d Gegenstände von %s nach %s bewegt", -}; - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Klicken Sie noch einmal auf das Ziel, um die Route zu bestätigen. Klicken Sie auf andere Sektoren, um die Route zu ändern.", - L"Route bestätigt.", - L"Ziel unverändert.", - L"Route geändert.", - L"Route verkürzt.", -}; - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Klicken Sie auf den Sektor, in dem die Söldner stattdessen ankommen sollen.", - L"OK. Söldner werden in %s abgesetzt.", - L"Söldner können nicht dorthin fliegen. Luftraum nicht gesichert!", - L"Abbruch. Ankunftssektor unverändert,", - L"Luftraum über %s ist nicht mehr sicher! Ankunftssektor jetzt in %s.", -}; - -// help text for mouse regions -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Ins Inventar gehen (|E|n|t|e|r)", - L"Gegenstand wegwerfen", - L"Inventar verlassen (|E|n|t|e|r)", -}; - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"Soll %s seine Ausrüstung hier lassen (%s) oder in (%s), wenn er verlässt?", - L"%s geht bald und lässt seine Ausrüstung in %s.", -}; - -// female version -STR16 pMercSheLeaveString[] = -{ - L"Soll %s ihre Ausrüstung hier lassen (%s) oder in (%s), bevor sie verlässt?", - L"%s geht bald und lässt ihre Ausrüstung in %s.", -}; - -STR16 pMercContractOverStrings[] = -{ - L"s Vertrag war abgelaufen, und er ist nach Hause gegangen.", // merc's contract is over and has departed - L"s Vertrag war abgelaufen, und sie ist nach Hause gegangen.", // merc's contract is over and has departed - L"s Vertrag wurde gekündigt, und er ist weggegangen.", // merc's contract has been terminated - L"s Vertrag wurde gekündigt, und sie ist weggegangen.", // merc's contract has been terminated - L"Sie schulden M.E.R.C. zu viel, also ist %s gegangen.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages -STR16 pImpPopUpStrings[] = -{ - L"Ungültiger Code", - L"Sie wollen gerade den ganzen Evaluierungsprozess von vorn beginnen. Sind Sie sicher?", - L"Bitte Ihren vollen Namen und Ihr Geschlecht eingeben", - L"Die Überprüfung Ihrer finanziellen Mittel hat ergeben, dass Sie sich keine Evaluierung leisten können.", - L"Option zur Zeit nicht gültig.", - L"Um eine genaue Evaluierung durchzuführen, müssen Sie mindestens noch ein Teammitglied aufnehmen können.", - L"Evaluierung bereits durchgeführt.", - L"Fehler beim Laden des B.S.E.-Charakters.", - L"Sie haben bereits die maximale Anzahl an B.S.E.-Charakteren.", - L"Sie haben bereits drei B.S.E.-Charaktere mit dem gleichen Geschlecht.", - L"Sie können sich den B.S.E.-Charakter nicht leisten.", // 10 - L"Der neue B.S.E.-Charakter ist nun in ihrem Team.", - L"You have already selected the maximum number of traits.", // TODO.Translate - L"No voicesets found.", // TODO.Translate -}; - -// button labels used on the IMP site -STR16 pImpButtonText[] = -{ - L"Wir über uns", // about the IMP site - L"BEGINNEN", // begin profiling - L"Persönlichkeiten", // personality section - L"Eigenschaften", // personal stats/attributes section - L"Aussehen", // changed from portrait - L"Stimme %d", // the voice selection - L"Fertig", // done profiling - L"Von vorne anfangen", // start over profiling - L"Ja, die Antwort passt!", - L"Ja", - L"Nein", - L"Fertig", // finished answering questions - L"Zurück", // previous question..abbreviated form - L"Weiter", // next question - L"JA", // yes, I am certain - L"NEIN, ICH MÖCHTE VON VORNE ANFANGEN.", // no, I want to start over the profiling process - L"JA", - L"NEIN", - L"Zurück", // back one page - L"Abbruch", // cancel selection - L"Ja", - L"Nein, ich möchte es mir nochmal ansehen.", - L"Registrieren", // the IMP site registry..when name and gender is selected - L"Analyse wird durchgeführt", // analyzing your profile results - L"OK", - L"Charakter", // Change from "Voice" - L"Keine", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"Nach Festlegung Ihres Charakters können Sie Ihre Fertigkeit(en) auswählen.", - L"Um die Evaluierung erfolgreich abzuschließen, bestimmen Sie Ihre Eigenschaften.", - L"Um Ihr Profil zu erstellen, wählen Sie ein Portrait und eine Stimme aus und definieren Ihre äußere Erscheinung.", - L"Jetzt, da Sie Ihr Aussehen bestimmt haben, fahren wir mit der Charakter-Analyse fort.", -}; - -STR16 pFilesTitle[] = -{ - L"Akten einsehen", -}; - -STR16 pFilesSenderList[] = -{ - L"Aufklärungsbericht", // the recon report sent to the player. Recon is an abbreviation for reconissance - L"Abschnitt #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"Abschnitt #2", // second intercept file - L"Abschnitt #3", // third intercept file - L"Abschnitt #4", // fourth intercept file - L"Abschnitt #5", // fifth intercept file - L"Abschnitt #6", // sixth intercept file -}; - -// Text having to do with the History Log -STR16 pHistoryTitle[] = -{ - L"Logbuch", -}; - -STR16 pHistoryHeaders[] = -{ - L"Tag", // the day the history event occurred - L"Seite", // the current page in the history report we are in - L"Tag", // the days the history report occurs over - L"Ort", // location (in sector) the event occurred - L"Ereignis", // the event label -}; - -// Externalized to "TableData\History.xml" -/* -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"%s von A.I.M. angeheuert.", // merc was hired from the aim site - L"%s von M.E.R.C. angeheuert.", // merc was hired from the aim site - L"%s ist tot.", // merc was killed - L"Rechnung an M.E.R.C. bezahlt", // paid outstanding bills at MERC - L"Enrico Chivaldoris Auftrag akzeptiert", - //6-10 - L"B.S.E.-Profil erstellt", - L"Versicherung abgeschlossen für %s.", // insurance contract purchased - L"Versicherung gekündigt für %s.", // insurance contract canceled - L"Versicherung ausgezahlt für %s.", // insurance claim payout for merc - L"%ss Vertrag um 1 Tag verlängert.", // Extented "mercs name"'s for a day - //11-15 - L"%ss Vertrag um 1 Woche verlängert.", // Extented "mercs name"'s for a week - L"%ss Vertrag um 2 Wochen verlängert.", // Extented "mercs name"'s 2 weeks - L"%s entlassen.", // "merc's name" was dismissed. - L"%s geht.", // "merc's name" quit. - L"Quest begonnen.", // a particular quest started - //16-20 - L"Quest gelöst.", - L"Mit Vorarbeiter in %s geredet", // talked to head miner of town - L"%s befreit", - L"Cheat benutzt", - L"Essen ist morgen in Omerta", - //21-25 - L"%s heiratet Daryl Hick", - L"%ss Vertrag abgelaufen.", - L"%s rekrutiert.", - L"Enrico sieht kaum Fortschritte", - L"Schlacht gewonnen", - //26-30 - L"Mine in %s produziert weniger", - L"Mine in %s leer", - L"Mine in %s geschlossen", - L"Mine in %s wieder offen", - L"Etwas über Gefängnis in Tixa erfahren.", - //31-35 - L"Von Waffenfabrik in Orta gehört.", - L"Forscher in Orta gab uns viele Raketengewehre.", - L"Deidranna verfüttert Leichen.", - L"Frank erzählte von Kämpfen in San Mona.", - L"Patient denkt, er hat in den Minen etwas gesehen.", - //36-40 - L"Devin getroffen - verkauft Sprengstoff", - L"Berühmten Ex-AIM-Mann Mike getroffen!", - L"Tony getroffen - verkauft Waffen.", - L"Sergeant Krott gab mir Raketengewehr.", - L"Kyle die Urkunde für Angels Laden gegeben.", - //41-45 - L"Madlab will Roboter bauen.", - L"Gabby kann Tinktur gegen Käfer machen.", - L"Keith nicht mehr im Geschäft.", - L"Howard lieferte Gift an Deidranna.", - L"Keith getroffen - verkauft alles in Cambria.", - //46-50 - L"Howard getroffen - Apotheker in Balime", - L"Perko getroffen - hat kleinen Reparaturladen.", - L"Sam aus Balime getroffen - hat Computerladen.", - L"Franz hat Elektronik und andere Sachen.", - L"Arnold repariert Sachen in Grumm.", - //51-55 - L"Fredo repariert Elektronik in Grumm.", - L"Spende von Reichem aus Balime bekommen.", - L"Schrotthändler Jake getroffen.", - L"Ein Depp hat uns eine Codekarte gegeben.", - L"Walter bestochen, damit er Keller öffnet.", - //56-60 - L"Wenn Dave Sprit hat, bekommen wir's gratis.", - L"Pablo bestochen.", - L"Kingpin hat Geld in San Mona-Mine.", - L"%s gewinnt Extremkampf", - L"%s verliert Extremkampf", - //61-65 - L"%s beim Extremkampf disqualifiziert", - L"Viel Geld in verlassener Mine gefunden.", - L"Von Kingpin geschickten Mörder getroffen", - L"Kontrolle über Sektor verloren", - L"Sektor verteidigt", - //66-70 - L"Schlacht verloren", //ENEMY_ENCOUNTER_CODE - L"Tödlicher Hinterhalt", //ENEMY_AMBUSH_CODE - L"Hinterhalt ausgehoben", - L"Angriff fehlgeschlagen", //ENTERING_ENEMY_SECTOR_CODE - L"Angriff erfolgreich", - //71-75 - L"Monster angegriffen", //CREATURE_ATTACK_CODE - L"Von Bloodcats getötet", //BLOODCAT_AMBUSH_CODE - L"Bloodcats getötet", - L"%s wurde getötet", - L"Carmen den Kopf eines Terroristen gegeben", - //76-80 - L"Slay ist gegangen", //Slay is a merc and has left the team - L"%s getötet", //History log for when a merc kills an NPC or PC - L"Met Waldo - aircraft mechanic.", - L"Helicopter repairs started. Estimated time: %d hour(s).", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"n.a.", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop -STR16 pLaptopIcons[] = -{ - L"E-mail", - L"Web", - L"Finanzen", - L"Personal", - L"Logbuch", - L"Dateien", - L"Schließen", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added -STR16 pBookMarkStrings[] = -{ - L"A.I.M.", - L"Bobby Rays", - L"B.S.E.", - L"M.E.R.C.", - L"Bestatter", - L"Florist", - L"Versicherung", - L"Abbruch", - L"Enzyklopädie", - L"Besprechung", - L"Geschichte", - L"MeLoDY", - L"WHO", - L"Kerberus", - L"Militia Overview", // TODO.Translate - L"R.I.S.", - L"Factories", // TODO.Translate -}; - -STR16 pBookmarkTitle[] = -{ - L"Lesezeichen", - L"Rechts klicken, um in Zukunft in dieses Menü zu gelangen.", -}; - -// When loading or download a web page -STR16 pDownloadString[] = { - L"Download läuft", - L"Neuladen läuft", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Nehmen", // take money from merc - L"Geben", // give money to merc - L"Rückgängig", // cancel transaction - L"Löschen", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Überw $", // transfer money to merc -- short form - L"Statistik", // view stats of the merc - L"Inventar", // view the inventory of the merc - L"Anstellung", -}; - -STR16 sATMText[] = -{ - L"Geld überw.?", // transfer funds to merc? - L"Ok?", // are we certain? - L"Betrag eingeben", // enter the amount you want to transfer to merc - L"Art auswählen", // select the type of transfer to merc - L"Nicht genug Geld", // not enough money to transfer to merc - L"Betrag muss durch $10 teilbar sein", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use German equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator -STR16 pErrorStrings[] = -{ - L"Fehler", - L"Server hat keinen DNS-Eintrag.", - L"URL-Adresse überprüfen und nochmal versuchen.", - L"OK", - L"Verbindung zum Host wird dauernd unterbrochen. Mit längeren Übertragungszeiten ist zu rechnen.", -}; - -STR16 pPersonnelString[] = -{ - L"Söldner:", // mercs we have -}; - -STR16 pWebTitle[ ] = -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - -// The titles for the web program title bar, for each page loaded -STR16 pWebPagesTitles[] = -{ - L"A.I.M.", - L"A.I.M. Mitglieder", - L"A.I.M. Bilder", // a mug shot is another name for a portrait - L"A.I.M. Sortierfunktion", - L"A.I.M.", - L"A.I.M. Veteranen", - L"A.I.M. Politik", - L"A.I.M. Geschichte", - L"A.I.M. Links", - L"M.E.R.C.", - L"M.E.R.C. Konten", - L"M.E.R.C. Registrierung", - L"M.E.R.C. Index", - L"Bobby Rays", - L"Bobby Rays - Waffen", - L"Bobby Rays - Munition", - L"Bobby Rays - Rüstungen", - L"Bobby Rays - Sonstige", //misc is an abbreviation for miscellaneous - L"Bobby Rays - Gebraucht", - L"Bobby Rays - Versandauftrag", - L"B.S.E.", - L"B.S.E.", - L"Fleuropa", - L"Fleuropa - Gestecke", - L"Fleuropa - Bestellformular", - L"Fleuropa - Karten", - L"Hammer, Amboss & Steigbügel Versicherungsmakler", - L"Information", - L"Vertrag", - L"Bemerkungen", - L"McGillicuttys Bestattungen", - L"", - L"URL nicht gefunden.", - L"%s Presse Rat - Konflikt-Zusammenfassungen", - L"%s Presse Rat - Kampfberichte", - L"%s Presse Rat - Aktuellste Neuigkeiten", - L"%s Presse Rat - Über uns", - L"Mercs Love or Dislike You - About us", // TODO.Translate - L"Mercs Love or Dislike You - Analyze a team", - L"Mercs Love or Dislike You - Pairwise comparison", - L"Mercs Love or Dislike You - Personality", - L"WHO - About WHO", - L"WHO - Disease in Arulco", - L"WHO - Helpful Tips", - L"Kerberus - About Us", - L"Kerberus - Hire a Team", - L"Kerberus - Individual Contracts", - L"Miliz - Übersicht", - L"Recon Intelligence Services - Information Requests", // TODO.Translate - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Fabriken - Übersicht", - L"Bobby Rays - Letzte Lieferungen", - L"Enzyklopädie", - L"Enzyklopädie - Daten", - L"Einsatzbesprechung", - L"Einsatzbesprechung - Daten", -}; - -STR16 pShowBookmarkString[] = -{ - L"Sir-Help", - L"Erneut auf Web klicken für Lesezeichen.", -}; - -STR16 pLaptopTitles[] = -{ - L"E-Mail", - L"Dateien", - L"Söldner-Manager", - L"Buchhalter Plus", - L"Logbuch", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ //(careful not to exceed 18 characters total including spaces) - //reasons why a merc has left. - L"Getötet", - L"Entlassen", - L"Sonstiges", - L"Heirat", - L"Vertrag zu Ende", - L"Aufgehört", //LOOTF - Englisch "quit", welcher Kontext? = Slay Ruttwen? -}; - -// personnel strings appearing in the Personnel Manager on the laptop -STR16 pPersonelTeamStrings[] = -{ - L"Aktuelles Team", - L"Ausgeschieden", - L"Tgl. Kosten:", - L"Höchste Kosten:", - L"Niedrigste Kosten:", - L"Im Kampf getötet:", - L"Entlassen:", - L"Sonstiges:", -}; - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Schlechteste", - L"Durchsch.", - L"Beste", -}; - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"GSND", - L"BEW", - L"GES", - L"KRF", - L"FHR", - L"WSH", - L"ERF", - L"TRF", - L"TEC", - L"SPR", - L"MED", -}; - -// horizontal and vertical indices on the map screen -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button -STR16 pContractButtonString[] = -{ - L"Vertrag", -}; - -// text that appears on the update panel buttons -STR16 pUpdatePanelButtons[] = -{ - L"Weiter", - L"Stop", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"Sie sind in diesem Sektor geschlagen worden!", - L"Der Feind hat kein Erbarmen mit den Seelen Ihrer Teammitglieder und verschlingt jeden einzelnen.", //LOOTF - Auch im Englischen Kannibalismus. Was zum Henker? - L"Ihre bewusstlosen Teammitglieder wurden gefangen genommen!", - L"Ihre Teammitglieder wurden vom Feind gefangen genommen.", -}; - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. -STR16 InsContractText[] = -{ - L"Zurück", - L"Vor", - L"OK", - L"Löschen", -}; - -//Insurance Info -// Text on the buttons on the bottom of the screen -STR16 InsInfoText[] = -{ - L"Zurück", - L"Vor", -}; - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Befugnis ert.", - L"Startseite", - L"Konto #:", - L"Söldner", - L"Tage", - L"Tagessatz", //5 //LOOTF - "Rate" geändert auf "Tagessatz", ändern wenn Probleme, alt. "Sold" - L"Belasten", - L"Gesamt:", - L"Zahlung von %s wirklich genehmigen?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+gear)", // TODO.Translate -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Zurück", - L"Weiter", -}; - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary -STR16 MercInfo[] = -{ - L"Gesundheit", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Kraft", - L"Führungsqualität", - L"Weisheit", - L"Erfahrungsstufe", - L"Treffsicherheit", - L"Technik", - L"Sprengstoffe", - L"Medizin", - - L"Zurück", - L"Anheuern", - L"Weiter", - L"Zusatzinfo", - L"Startseite", - L"Angestellt", - L"Sold:", - L"Pro Tag", - L"Ausr.:", - L"Gesamt:", - L"Verstorben", - - L"Sie haben bereits ein vollständiges Team.", - L"Ausrüstung kaufen?", - L"nicht da", - L"Offene Beträge", - L"Bio", - L"Inv", - L"Special Offer!", -}; - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Konto eröffnen", - L"Rückgängig", - L"Sie haben kein Konto. Möchten Sie eins eröffnen?", -}; - -// For use at the M.E.R.C. web site. MERC Homepage -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Speck T. Kline, Gründer und Besitzer", - L"Hier klicken, um ein Konto zu eröffnen", - L"Hier klicken, um das Konto einzusehen", - L"Hier klicken, um Dateien einzusehen.", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Transfer fehlgeschlagen. Kein Geld vorhanden.", -}; - -// For use at MiGillicutty's Web Page. -STR16 sFuneralString[] = -{ - L"McGillicuttys Bestattungen: Wir trösten trauernde Familien seit 1983.", - L"Der Bestattungsunternehmer und frühere A.I.M.-Söldner Murray \"Pops\" McGillicutty ist ein ebenso versierter wie erfahrener Bestatter.", - L"Pops hat sein ganzes Leben mit Todes- und Trauerfällen verbracht. Deshalb weiß er aus erster Hand, wie schwierig das sein kann.", - L"Das Bestattungsunternehmen McGillicutty bietet Ihnen einen umfassenden Service, angefangen bei der Schulter zum Ausweinen bis hin zur kosmetischen Aufbereitung entstellter Körperteile.", - L"McGillicuttys Bestattungen - und Ihre Lieben ruhen in Frieden.", - - // Text for the various links available at the bottom of the page - L"BLUMEN", - L"SÄRGE UND URNEN", - L"FEUERBEST.", - L"GRÄBER", - L"PIETÄT", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"Leider ist diese Site aufgrund eines Todesfalles in der Familie noch nicht fertiggestellt. Sobald das Testament eröffnet worden und die Verteilung des Erbes geklärt ist, wird diese Site fertiggestellt.", - L"Unser Mitgefühl gilt trotzdem all jenen, die es diesmal versucht haben. Bis später.", -}; - -// Text for the florist Home page -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Galerie", - - //Address of United Florist - - L"\"Wir werfen überall per Fallschirm ab\"", - L"1-555-SCHNUPPER-MAL", - L"333 Duftmarke Dr, Aroma City, CA USA 90210", - L"http://www.schnupper-mal.com", - - // detail of the florist page - - L"Wir arbeiten schnell und effizient", - L"Lieferung am darauf folgenden Tag, in fast jedes Land der Welt. Ausnahmen sind möglich. ", - L"Wir haben die garantiert niedrigsten Preise weltweit!", - L"Wenn Sie anderswo einen niedrigeren Preis für irgend ein Arrangement sehen, bekommen Sie von uns ein Dutzend Rosen umsonst!", - L"Fliegende Flora, Fauna & Blumen seit 1981.", - L"Unsere hochdekorierten Ex-Bomber-Piloten werfen das Bouquet in einem Radius von zehn Meilen rund um den Bestimmungsort ab. Jederzeit!", - L"Mit uns werden Ihre blumigsten Fantasien wahr", - L"Bruce, unser weltberühmter Designer-Florist, verwendet nur die frischesten handverlesenen Blumen aus unserem eigenen Gewächshaus.", - L"Und denken Sie daran: Was wir nicht haben, pflanzen wir für Sie - und zwar schnell!", -}; - -//Florist OrderForm -STR16 sOrderFormText[] = -{ - - //Text on the buttons - - L"Zurück", - L"Senden", - L"Löschen", - L"Galerie", - - L"Name des Gestecks:", - L"Preis:", //5 - L"Bestellnr.:", - L"Liefertermin", - L"Morgen", - L"Egal", - L"Bestimmungsort", //10 - L"Extraservice", - L"Kaputtes Gesteck($10)", - L"Schwarze Rosen($20)", - L"Welkes Gesteck($10)", - L"Früchtekuchen (falls vorrätig)($10)", //15 - L"Persönliche Worte:", - L"Aufgrund der Kartengröße darf Ihre Botschaft nicht länger sein als 75 Zeichen.", - L"...oder wählen Sie eine unserer", - - L"STANDARD-KARTEN", - L"Rechnung für",//20 - - //The text that goes beside the area where the user can enter their name - - L"Name:", -}; - -//Florist Gallery.c -STR16 sFloristGalleryText[] = -{ - //text on the buttons - L"Zurück", //abbreviation for previous - L"Weiter", //abbreviation for next - L"Klicken Sie auf das Gesteck Ihrer Wahl", - L"Bitte beachten Sie, dass wir für jedes kaputte oder verwelkte Gesteck einen Aufpreis von $10 berechnen.", - L"Home", -}; - -STR16 sFloristCards[] = -{ - L"Klicken Sie auf das Gesteck Ihrer Wahl", - L"Zurück", -}; - -// Text for Bobby Ray's Mail Order Site -STR16 BobbyROrderFormText[] = -{ - L"Bestellformular", //Title of the page - L"St.", // The number of items ordered - L"Gew. (%s)", // The weight of the item - L"Artikel", // The name of the item - L"Preis", // the item's weight - L"Summe", //5 // The total price of all of items of the same type - L"Zwischensumme", // The sub total of all the item totals added - L"Versandkosten (vgl. Bestimmungsort)", // S&H is an acronym for Shipping and Handling - L"Endbetrag", // The grand total of all item totals + the shipping and handling - L"Bestimmungsort", - L"Liefergeschwindigkeit", //10 // See below - L"$ (pro %s)", // The cost to ship the items - L"Übernacht-Express", // Gets deliverd the next day - L"2 Arbeitstage", // Gets delivered in 2 days - L"Standard-Service", // Gets delivered in 3 days - L"Löschen", //15 // Clears the order page - L"Bestellen", // Accept the order - L"Zurück", // text on the button that returns to the previous page - L"Home", // Text on the button that returns to the home page - L"* Gebrauchter Gegenstand", // Disclaimer stating that the item is used - L"Sie haben nicht genug Geld.", //20 // A popup message that to warn of not enough money - L"", // Gets displayed when there is no valid city selected - L"Wollen Sie Ihre Bestellung wirklich nach %s schicken?", // A popup that asks if the city selected is the correct one - L"Packungsgewicht**", // Displays the weight of the package - L"** Mindestgewicht", // Disclaimer states that there is a minimum weight for the package - L"Lieferungen", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"Pistolen", - L"MPs", - L"SMGs", - L"Gewehre", - L"SSGs", - L"Sturmgew.", - L"MGs", - L"Schrotfl.", - L"Schwere W.", - - // Ammo - L"Pistole", - L"M.-Pistole", - L"SMG", - L"Gewehr", - L"SS-Gewehr", - L"Sturmgew.", - L"MG", - L"Schrotfl.", - - // Used - L"Feuerwfn.", - L"Rüstungen", - L"Trageausr.", - L"Sonstiges", - - // Armour - L"Helme", - L"Westen", - L"Hosen", - L"Platten", - - // Misc - L"Klingen", - L"Wurfmesser", - L"Schlagwaf.", - L"Granaten", - L"Bomben", - L"Verbandsk.", - L"Taschen", - L"Kopfausr.", - L"Trageausr.", - L"Optik", // Madd: new BR filters - L"Gri/Las", - L"Mündung", - L"Schaft", - L"Mag/Abz.", - L"Andere An.", - L"Sonstiges", -}; - -// This text is used when on the various Bobby Ray Web site pages that sell items -STR16 BobbyRText[] = -{ - L"Bestellen", // Title - L"Klicken Sie auf den gewünschten Gegenstand. Weiteres Klicken erhöht die Stückzahl. Rechte Maustaste verringert Stückzahl. Wenn Sie fertig sind, weiter mit dem Bestellformular.", // instructions on how to order - - //Text on the buttons to go the various links - - L"Zurück", // - L"Feuerwfn.", //3 - L"Munition", //4 - L"Rüstung", //5 - L"Sonstiges", //6 //misc is an abbreviation for miscellaneous - L"Gebraucht", //7 - L"Vor", - L"BESTELLEN", - L"Startseite", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"Ihr Team hat", //11 - L"Waffe(n), die diese Munition verschießen", //12 - - //The following lines provide information on the items - - L"Gewicht:", // Weight of all the items of the same type - L"Kal:", // the caliber of the gun - L"Mag:", // number of rounds of ammo the Magazine can hold - L"Reichw.:", // The range of the gun - L"Schaden:", // Damage of the weapon - L"Kadenz:", // Weapon's Rate Of Fire, acroymn ROF - L"AP:", // Weapon's Action Points, acronym AP - L"Bet.:", // Weapon's Stun Damage - L"Rüstung:", // Armour's Protection - L"Tarn.:", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Preis:", // Cost of the item - L"Vorrätig:", // The number of items still in the store's inventory - L"Bestellt:", // The number of items on order - L"Beschädigt", // If the item is damaged - L"Gew.:", // the Weight of the item - L"Summe:", // The total cost of all items on order - L"* %% funktionstüchtig", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - L"Mist! Mit diesem Formular können Sie nur " ,//First part - L" Sachen bestellen. Wenn Sie mehr wollen (was wir sehr hoffen), füllen Sie bitte noch ein Formular aus.", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Sorry. Davon haben wir leider im Moment nichts mehr auf Lager. Versuchen Sie es später noch einmal.", - - //A popup that tells the user that the store is temporarily sold out - - L"Es tut uns sehr leid, aber im Moment sind diese Sachen total ausverkauft.", - -}; - -// Text for Bobby Ray's Home Page -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"Dies ist die heißeste Seite für Waffen und militärische Ausrüstung aller Art", - L"Welchen Sprengstoff Sie auch immer brauchen - wir haben ihn.", - L"SECOND HAND", - - //Text for the various links to the sub pages - - L"SONSTIGES", - L"FEUERWAFFEN", - L"MUNITION", //5 - L"RÜSTUNG", - - //Details on the web site - - L"Was wir nicht haben, das hat auch kein anderer", - L"In Arbeit", -}; - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page -STR16 AimSortText[] = -{ - L"A.I.M. Mitglieder", // Title - L"Sortieren:", // Title for the way to sort - - // sort by... - - L"Preis", - L"Erfahrung", - L"Treffsicherheit", - L"Technik", - L"Sprengstoff", - L"Medizin", - L"Gesundheit", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Kraft", - L"Führungsqualität", - L"Weisheit", - L"Name", - - //Text of the links to other AIM pages - - L"Den Söldner-Kurzindex ansehen", - L"Personalakte der Söldner ansehen", - L"Die AIM-Veteranengalerie ansehen", - - // text to display how the entries will be sorted - - L"Aufsteigend", - L"Absteigend", -}; - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Zurück", - L"AIM HomePage", - L"Regel-Index", - L"Nächste Seite", - L"Ablehnen", - L"Zustimmen", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index -STR16 AimMemberText[] = -{ - L"Linksklick", - L"zum Kontaktieren.", - L"Rechtsklick", - L"zum Foto-Index.", -// L"Linksklick zum Kontaktieren. \nRechtsklick zum Foto-Index.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Gesundheit", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Kraft", - L"Führungsqualität", - L"Weisheit", - L"Erfahrungsstufe", - L"Treffsicherheit", - L"Technik", - L"Sprengstoff", - L"Medizin", //10 - - - // the contract expenses' area - - L"Preis", - L"Vertrag", - L"1 Tag", - L"1 Woche", - L"2 Wochen", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"Zurück", - L"Kontakt", - L"Weiter", - L"Zusatzinfo", // Title for the additional info for the merc's bio - L"Aktive Mitglieder", //20 // Title of the page - L"Zusätzl. Ausrüst:", // Displays the optional gear cost - L"Ausr.", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's - L"VERSICHERUNG erforderlich", // If the merc required a medical deposit, this is displayed - L"Kit 1", // Text on Starting Gear Selection Button 1 - L"Kit 2", // Text on Starting Gear Selection Button 2 - L"Kit 3", // Text on Starting Gear Selection Button 3 - L"Kit 4", // Text on Starting Gear Selection Button 4 - L"Kit 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - -//Aim Member.c -//The page in which the player's hires AIM mercenaries -//The following text is used with the video conference popup -STR16 VideoConfercingText[] = -{ - L"Vertragskosten:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"1 Tag", - L"1 Woche", - L"2 Wochen", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"Keine Ausrüstung", - L"Ausrüstung kaufen", - - // Text on the Buttons - - L"GELD ÜBERWEISEN", // to actually hire the merc - L"ABBRECHEN", // go back to the previous menu - L"ANHEUERN", // go to menu in which you can hire the merc - L"AUFLEGEN", // stops talking with the merc - L"OK", - L"NACHRICHT", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Videokonferenz mit", - L"Verbinde. . .", - - L"versichert", // Displays if you are hiring the merc with the medical deposit - -}; - -//Aim Member.c -//The page in which the player hires AIM mercenaries -// The text that pops up when you select the TRANSFER FUNDS button -STR16 AimPopUpText[] = -{ - L"ELEKTRONISCHE ÜBERWEISUNG AUSGEFÜHRT", // You hired the merc - L"ÜBERWEISUNG KANN NICHT BEARBEITET WERDEN", // Player doesn't have enough money, message 1 - L"NICHT GENUG GELD", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"Im Einsatz", - L"Bitte Nachricht hinterlassen", - L"Verstorben", - - //If you try to hire more mercs than game can support - - L"Sie haben bereits ein vollständiges Team.", - - L"Mailbox", - L"Nachricht aufgenommen", -}; - -//AIM Link.c -STR16 AimLinkText[] = -{ - L"A.I.M. Links", //The title of the AIM links page -}; - -//Aim History -// This page displays the history of AIM -STR16 AimHistoryText[] = -{ - L"Die Geschichte von A.I.M.", //Title - - // Text on the buttons at the bottom of the page - - L"Zurück", - L"Startseite", - L"Veteranen", - L"Weiter", -}; - -//Aim Mug Shot Index -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Preis", - L"Erfahrung", - L"Treffsicherheit", - L"Technik", - L"Sprengstoff", - L"Medizin", - L"Gesundheit", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Kraft", - L"Führungsqualität", - L"Weisheit", - L"Name", - - // The title of the page, the above text gets added at the end of this text - L"A.I.M.-Mitglieder ansteigend sortiert nach %s", - L"A.I.M.-Mitglieder absteigend sortiert nach %s", - - // Instructions to the players on what to do - - L"Linke Maustaste", - L"um Söldner auszuwählen", //10 - L"Rechte Maustaste", - L"um Optionen einzustellen", - - // Gets displayed on top of the merc's portrait if they are... - - //Please be careful not to increase the size of strings for following three - L"Abwesend", - L"Verstorben", //14 - L"Im Dienst", -}; - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM -STR16 AimAlumniText[] = -{ - // Text of the buttons - L"SEITE 1", - L"SEITE 2", - L"SEITE 3", - L"A.I.M.-Veteranen", // Title of the page - L"ENDE", // Stops displaying information on selected merc - L"Nächste", -}; - -//AIM Home Page -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"A.I.M. und das A.I.M.-Logo sind in den meisten Ländern eingetragene Warenzeichen.", - L"Also denken Sie nicht mal daran, uns nachzumachen.", - L"Copyright 1998-1999 A.I.M., Ltd. Alle Rechte vorbehalten.", - - //Text for an advertisement that gets displayed on the AIM page - - L"Fleuropa", - L"\"Wir werfen überall per Fallschirm ab\"", //10 - L"Treffen Sie gleich zu Anfang", - L"... die richtige Wahl.", - L"Was wir nicht haben, das brauchen Sie auch nicht.", -}; - -//Aim Home Page -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - - L"Home", - L"Mitglieder", - L"Veteranen", - L"Regeln", - L"Geschichte", - L"Links", -}; - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. -STR16 SKI_Text[] = -{ - L"WAREN VORRÄTIG", //Header for the merchandise available - L"SEITE", //The current store inventory page being displayed - L"KOSTEN", //The total cost of the the items in the Dealer inventory area - L"WERT", //The total value of items player wishes to sell - L"SCHÄTZUNG", //Button text for dealer to evaluate items the player wants to sell - L"TRANSAKTION", //Button text which completes the deal. Makes the transaction. - L"FERTIG", //Text for the button which will leave the shopkeeper interface. - L"KOSTEN", //The amount the dealer will charge to repair the merc's goods - L"1 STUNDE", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d STUNDEN", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"REPARIERT", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"Es ist kein Platz mehr, um Sachen anzubieten.", //Message box that tells the user there is no more room to put there stuff - L"%d MINUTEN", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Gegenstand fallenlassen.", - L"BUDGET", -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Nehmen", // Take money from the player - L"Geben", // Give money to the player - L"Abbruch", // Cancel the transfer - L"Löschen", // Clear the money display -}; - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - // Text on the bank machine panel that.... - L"Vorgang auswählen", // tells the user to select either to give or take from the merc - L"Betrag eingeben", // Enter the amount to transfer - L"Geld an Söldner überweisen", // Giving money to the merc - L"Geld von Söldner überweisen", // Taking money from the merc - L"Nicht genug Geld", // Not enough money to transfer - L"Kontostand", // Display the amount of money the player currently has -}; - -STR16 SkiMessageBoxText[] = -{ - L"Möchten Sie %s von Ihrem Konto abbuchen, um die Differenz zu begleichen?", - L"Nicht genug Geld. Ihnen fehlen %s.", - L"Möchten Sie %s von Ihrem Konto abbuchen, um die Kosten zu decken?", - L"Händler bitten, mit der Überweisung zu beginnen.", - L"Händler bitten, Gegenstände zu reparieren", - L"Unterhaltung beenden", - L"Kontostand", - - L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate - L"Do you want to transfer %s Intel to cover the cost?", -}; - -//OptionScreen.c -STR16 zOptionsText[] = -{ - //button Text - L"Spiel sichern", - L"Spiel laden", - L"Beenden", - L"Nächste", - L"Vorherige", - L"Fertig", - L"1.13 Features", - L"New in 1.13", - L"Options", - //Text above the slider bars - L"Effekte", - L"Sprache", - L"Musik", - //Confirmation pop when the user selects.. - L"Spiel verlassen und zurück zum Hauptmenü?", - L"Sprachoption oder Untertitel müssen aktiviert sein.", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Spiel sichern", - L"Spiel laden", - L"Abbrechen", - L"Auswahl speichern", - L"Auswahl laden", - - L"Spiel erfolgreich gespeichert", - L"FEHLER beim Speichern des Spiels!", - L"Spiel erfolgreich geladen", - L"FEHLER beim Laden des Spiels!", - - - L"Der gespeicherte Spielstand unterscheidet sich vom aktuellen Spielstand. Es kann wahrscheinlich nichts passieren. Weiter?", - L"Die gespeicherten Spielstände sind evtl. beschädigt. Wollen Sie sie alle löschen?", - - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Gespeicherte Version wurde geändert. Bitte melden Sie etwaige Probleme. Weiter?", -#else - L"Versuche, älteren Spielstand zu laden. Laden und automatisch aktualisieren?", -#endif - - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Spielstand und Spieleversion wurden geändert. Bitte melden Sie etwaige Probleme. Weiter?", -#else - L"Versuche, älteren Spielstand zu laden. Laden und automatisch aktualisieren?", -#endif - - L"Gespeichertes Spiel in Position #%d wirklich überschreiben?", - L"Wollen Sie das Spiel aus Position # speichern?", - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - // - L"Sie haben zu wenig Festplattenspeicher. Sie haben nur %d MB frei und JA2 benötigt mindestens %d MB.", - - - L"Speichere", //While the game is saving this message appears. - - L"Normale Waffen", - L"Zusatzwaffen", - L"Real-Stil", - L"SciFi-Stil", - L"Schwierigkeit", - L"Platinum Mode", //Placeholder English - L"Bobby Ray Qualität", - L"Normale Auswahl", - L"Große Auswahl", - L"Ausgezeichnete Auswahl", - L"Fantastische Auswahl", - - L"Neues Inventar funktioniert nicht in 640x480 Bildschirmauflösung. Wählen Sie eine höhere Bildschirmauflösung und versuchen Sie es erneut.", - L"Neues Inventar funktioniert nicht mit dem ausgewählten 'Data' Ordner.", - - L"Die gespeicherte Truppengröße im Spielstand wird nicht unterstützt bei der aktullen Bildschirmauflösung. Wählen Sie eine höhere Bildschirmauflösung und versuchen Sie es erneut.", - L"Bobby Ray Auswahl", -}; - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Map-Level", - L"Sie haben gar keine Miliz. Sie müssen Bewohner der Stadt trainieren, wenn Sie dort eine Miliz aufstellen wollen.", - L"Tägl. Einkommen", - L"Söldner hat Lebensversicherung", - L"%s ist nicht müde.", - L"%s ist unterwegs und kann nicht schlafen.", - L"%s ist zu müde. Versuchen Sie es ein bisschen später noch mal.", - L"%s fährt.", - L"Der Trupp kann nicht weiter, wenn einer der Söldner pennt.", - - - // stuff for contracts - L"Sie können zwar den Vertrag bezahlen, haben aber kein Geld für die Lebensversicherung.", - L"%s Lebensversicherungsprämien kosten %s pro %d Zusatztag(en). Wollen Sie das bezahlen?", - L"Gegenstände im Sektor", - - L"Söldner hat Krankenversicherung.", - - - // other items - L"Sanitäter", // people acting a field medics and bandaging wounded mercs - L"Patienten", // people who are being bandaged by a medic - L"Fertig", // Continue on with the game after autobandage is complete - L"Stop", // Stop autobandaging of patients by medics now - L"Sorry. Diese Option gibt es in der Demo nicht.", // informs player this option/button has been disabled in the demo - - L"%s hat kein Werkzeug.", - L"%s hat kein Verbandszeug.", - L"Es sind nicht genug Leute zum Training bereit.", - L"%s ist voller Milizen.", - L"Söldner hat begrenzten Vertrag.", - L"Vertrag des Söldners beinhaltet keine Versicherung.", - L"Kartenübersicht", // 24 - - // Flugente: disease texts describing what a map view does TODO.Translate - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate - - // Flugente: weather texts describing what a map view does - L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate -}; - -STR16 pLandMarkInSectorString[] = -{ - L"Trupp %d hat in Sektor %s jemanden bemerkt.", - L"Trupp %s hat in Sektor %s jemanden bemerkt.", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"Eine Milizeinheit für diese Stadt zu trainieren kostet $", // telling player how much it will cost - L"Ausgabe genehmigen?", // asking player if they wish to pay the amount requested - L"Sie haben nicht genug Geld.", // telling the player they can't afford to train this town - L"Miliz in %s (%s %d) weitertrainieren?", // continue training this town? - - L"Preis $", // the cost in dollars to train militia - L"( J/N )", // abbreviated yes/no - L"Miliz auf dem Raketenstützpunkt im Sektor %s (%s %d) weitertrainieren?", // continue trainign militia in SAM site sector - L"Milizen in %d Sektoren zu trainieren kostet $ %d. %s", // cost to train sveral sectors at once - - L"Sie können sich keine $%d für die Miliz hier leisten.", - L"%s benötigt eine Loyalität von %d Prozent, um mit dem Milizen-Training fortzufahren.", - L"Sie können die Miliz in %s nicht mehr trainieren.", - L"weitere Stadtteile befreien", - - L"neue Stadtteile befreien", - L"mehr Städte erobern", - L"den verlorenen Fortschritt wieder aufholen", - L"weiter fortschreiten", - - L"mehr Rebellen rekrutieren", -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"Sie können nur max. 20.000$ abheben.", - L"Wollen Sie wirklich %s auf Ihr Konto einzahlen?", -}; - -STR16 gzCopyrightText[] = -{ - L"Copyright (C) 1999 Sir-tech Canada Ltd. Alle Rechte vorbehalten.", // -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Sprache", - L"Stumme Bestätigungen", - L"Untertitel", - L"Dialoge Pause", - L"Rauch animieren", - L"Blut zeigen", - L"Cursor nicht bewegen", - L"Alte Auswahlmethode", - L"Weg vorzeichnen", - L"Fehlschüsse anzeigen", - L"Bestätigung bei Echtzeit", - L"Schlaf-/Wachmeldung anzeigen", - L"Metrisches System benutzen", - L"Markieren Sie Söldner", - L"Cursor autom. auf Söldner", - L"Cursor autom. auf Türen", - L"Gegenstände leuchten", - L"Baumkronen zeigen", - L"Smart Tree Tops", // TODO. Translate - L"Drahtgitter zeigen", - L"3D Cursor zeigen", - L"Trefferchance anzeigen", - L"GL Burst mit Burst Cursor", - L"Gegner-Spott aktiveren", // Changed from "Enemies Drop all Items" - SANDRO - L"Hohe Granatwerfer-Flugbahn", - L"Echtzeit-Schleichen aktivieren", // Changed from "Restrict extra Aim Levels" - SANDRO - L"Nächste Gruppe selektieren", - L"Gegenstände mit Schatten", - L"Waffenreichweite in Felder", - L"Leuchtspur für Einzelschüsse", - L"Regengeräusche", - L"Krähen erlauben", - L"Tooltips über Gegner", - L"Automatisch speichern", - L"Stummer Skyrider", - L"Erw. Gegenstandsinfo", - L"Erzwungener Runden-Modus", // add forced turn mode - L"Alternatives Kartenfarbschema", // Change color scheme of Strategic Map - L"Alternative Projektil-Grafik", // Show alternate bullet graphics (tracers) - L"Logical Bodytypes", - L"Söldnerrang anzeigen.", // shows mercs ranks - L"Gesichtsequipment-Grafiken", - L"Gesichtsequipment-Icons", - L"Cursor-Wechsel deaktivieren", // Disable Cursor Swap - L"Stummes Trainieren", // Madd: mercs don't say quotes while training - L"Stummes Reparieren", // Madd: mercs don't say quotes while repairing - L"Stumme Behandlung", // Madd: mercs don't say quotes while doctoring - L"Autom. schnelle Gegner-Züge", // Automatic fast forward through AI turns - L"Zombies erlauben", // Flugente Zombies - L"Inventar Popup-Menüs", // the_bob : enable popups for picking items from sector inv - L"Übrige Feinde markieren", - L"Tascheninhalt anzeigen", - L"Mausradrichtung umkehren", - L"Bewegung in Formation", // when multiple mercs are selected, they will try to keep their relative distances - L"Show enemy location", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Erzwinge BR Lieferung", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--DEBUG OPTIONS--", // an example options screen options header (pure text) - L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. - L"Reset ALL game options", // failsafe show/hide option to reset all options - L"Do you really want to reset?", // a do once and reset self option (button like effect) - L"Debug Options in other builds", // allow debugging in release or mapeditor - L"DEBUG Render Option group", // an example option that will show/hide other options - L"Render Mouse Regions", // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Wenn diese Funktion aktiviert ist, werden in Dialogen Stimmen wiedergegeben. Anderenfalls wird nur der Text angezeigt.", - - //Mute Confirmation - L"Schalten Sie mit dieser Funktion die gesprochenen Bestätigungen (wie \"Okay\" oder \"Bin dran\") aus, wenn sie stören.", - - //Subtitles - L"Wenn diese Funktion aktiviert ist, wird in Dialogen der entsprechende Text angezeigt.", - - //Key to advance speech - L"Schalten Sie diese Funktion AN, wenn Sie Dialoge von NPCs ganz in Ruhe lesen wollen. Untertitel müssen dazu AN sein.", - - //Toggle smoke animation - L"Schalten Sie diese Option ab, wenn animierter Rauch Ihre Bildwiederholrate verlangsamt.", - - //Blood n Gore - L"Diese Option abschalten, wenn Sie kein Blut sehen können.", - - //Never move my mouse - L"Schalten Sie diese Option ab, wenn Sie nicht möchten, dass Ihr Mauszeiger automatisch auf Pop-Up-Fenster springt.", - - //Old selection method - L"Mit dieser Option funktioniert die Auswahl der Söldner so wie in früheren JAGGED ALLIANCE-Spielen (also genau andersherum als jetzt).", - - //Show movement path - L"Diese Funktion anschalten, um die geplanten Wege der Söldner zum Cursor anzuzeigen\n(oder abgeschaltet lassen und bei gewünschter Anzeige die |S|h|i|f|t-Taste drücken).", - - //show misses - L"Wenn diese Funktion aktiviert ist, folgt die Spielkamera im Rundenmodus der Geschossflugbahn bis zu ihrem Ende. Ausschalten um das Spiel zu beschleunigen.", - - //Real Time Confirmation - L"Wenn diese Funktion aktiviert ist, wird für jede Aktion im Echtzeit-Modus ein zusätzlicher \"Sicherheits\"-Klick verlangt um versehentliche Befehle zu vermeiden.", - - //Sleep/Wake notification - L"Schalten Sie diese Option aus, wenn Sie kein Popup erhalten wollen, sobald zu einem Dienst eingeteilte Söldner schlafen gehen oder die Arbeit wieder aufnehmen.", - - //Use the metric system - L"Mit dieser Option wird im Spiel das metrische anstelle des imperialen Maßsystems verwendet (z.B. Meter und Kilogramm).", - - //Highlight Mercs - L"Wenn AN, wird der Söldner hervorgehoben (für Feinde nicht sichtbar).\nIm Spiel umschalten mit (|G)", - - //Smart cursor - L"Wenn diese Funktion aktiviert ist, springt der Cursor immer automatisch auf Söldner in seiner direkten Nähe.", - - //snap cursor to the door - L"Wenn diese Funktion aktiviert ist, springt der Cursor automatisch auf Türen in direkter Nähe des Mauszeigers.", - - //glow items - L"Wenn diese Funktion aktiviert ist, haben Gegenstände am Boden zur besseren Sichtbarkeit einen pulsierenden Rahmen (|C|t|r|l+|A|l|t+|I).", - - //toggle tree tops - L"Mit der Deaktivierung dieser Funktion lassen sich Baumkronen ausblenden um bessere Sicht auf das Geschehen zu ermöglichen (|T).", - - //smart tree tops - L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate - - //toggle wireframe - L"Wenn diese Funktion aktiviert ist, werden Drahtgitter verborgener Wände gezeigt um z.B. perspektivisch verdeckte Fenster zu erkennen (|C|t|r|l+|A|l|t+|W).", - - L"Wenn diese Funktion aktiviert ist, wird der Bewegungs-Cursor in 3D angezeigt (|H|o|m|e).", - - // Options for 1.13 - L"Wenn diese Funktion aktiviert ist, wird die Trefferwahrscheinlichkeit am Cursor angezeigt.", - L"Mit dieser Funktion lässt sich der Zielcursor für Granatwerfer-Feuerstöße umschalten. Der Burst-Cursor (wenn AN) ermöglicht den Beschuss einer größeren Fläche.", - L"Wenn diese Funktion aktiviert ist, beschimpfen Gegner den Spieler oder kommentieren ihre Situation mittels kleiner Pop-Ups.", // Changed from Enemies Drop All Items - SANDRO - L"Wenn diese Funktion aktiviert ist, können Granatwerfer Granaten in höherem Winkel abfeuern und so ihre volle Reichweite ausnutzen (|A|l|t+|Q).", - L"Wenn diese Funktion aktiviert ist, schaltet das Spiel für unbemerkt schleichende Söldner nicht automatisch in den Rundenmodus sobald Gegner in Sicht geraten, außer Sie drücken |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO - L"Wenn diese Funktion aktiviert ist, selektiert |S|p|a|c|e automatisch die nächste Gruppe statt den nächsten Söldner der Gruppe.", - L"Wenn diese Funktion aktiviert ist, werfen Gegenstände einen Schatten.", - L"Wenn diese Funktion aktiviert ist, werden Waffenreichweiten in Feldern angezeigt statt in z.B. Metern.", - L"Wenn diese Funktion aktiviert ist, wird auch für Einzelschüsse mit Leuchtspurmunition der grafische Effekt dazu angezeigt.", - L"Wenn diese Funktion aktiviert ist, werden Regengeräusche hörbar, sobald es regnet.", - L"Wenn diese Funktion aktiviert ist, sind Krähen im Spiel vorhanden und hacken lautstark an manchen Leichen herum, haben aber sonst keine großen Auswirkungen auf das Spiel.", - 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 Skyrider nichts mehr sagen. Verwenden Sie diese Option, wenn er Ihnen auf die Nüsse geht.", - 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+|T).", - 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"When ON, mercenary body graphic can change along with equipped gear.", // TODO.Translate - 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 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, 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 Reperaturfortschritt nicht mehr berichten.", - L"Wenn diese Funktion aktiviert ist, werden die Söldner über den ärztlichen Fortschritt nicht mehr berichten.", - L"Wenn diese Funktion aktiviert ist, werden gegnerische Züge schneller durchgeführt.", - - L"Wenn diese Funktion aktiviert ist, können Tote als Zombies wieder auferstehen. Seien Sie auf der Hut!", - L"Wenn diese Funktion aktiviert ist, und Sie mit der linken Maustaste auf einen freien Söldner-Inventarplatz klicken (während das Sektor-Inventar angezeigt wird), wird ein hilfreiches Popup-Menü eingeblendet.", - L"Wenn diese Funktion aktiviert ist, wird die ungefähre Postion der verbleibenden Feinde auf der Übersichtskarte schraffiert", - L"Wenn diese Funktion aktiviert ist, wird in der erweiterten Beschreibung von Taschen statt den Anbauteilen deren Inhalt angezeigt.", - L"Wenn diese Funktion aktiviert ist, wird die Mausradrichtung umgekehrt", - L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate - L"When ON, shows last known enemy location.", //TODO.Translate - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Force all pending Bobby Ray shipments", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: Wenn diese Funktion aktiviert ist, wird der Abstand den jede die Kugel vom Zielmittelpunkt abweicht, unter Berücksichtigung aller CTH-Faktoren, ausgegeben.", - L"Hier klicken, um fehlerhafte Optionseinstellungen zu beheben.", // failsafe show/hide option to reset all options - L"Hier klicken, um fehlerhafte Optionseinstellungen zu beheben.", // a do once and reset self option (button like effect) - L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor - L"Toggle to display debugging render options", // an example option that will show/hide other options - L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - -STR16 gzGIOScreenText[] = -{ - L"GRUNDEINSTELLUNGEN", -#ifdef JA2UB - L"Random Manuel texts", - L"Off", - L"On", -#else - L"Spielmodus", - L"Realistisch", - L"SciFi", -#endif - L"Platinum", //Placeholder English - L"Waffen", - L"Zus. Waffen", - L"Normal", - L"Schwierigkeitsgrad", - L"Einsteiger", - L"Profi", - L"Alter Hase", - L"WAHNSINNIG", - L"Starten", - L"Abbrechen", - L"Extra schwer", - L"Jederzeit speichern", - L"IRONMAN", - L"Option nicht verfügbar", - L"Bobby Ray Qualität", - L"Normal", - L"Groß", - L"Ausgezeichnet", - L"Fantastisch", - L"Inventar / Attachments", - L"NOT USED", // Alt (Original) - L"NOT USED", // Neu - mit Trageausr. - L"Lade MP Spiel", - L"GRUNDEINSTELLUNGEN (Nur Servereinstellungen werden verwendet)", - // Added by SANDRO - L"Fertigkeiten", - L"Alte", - L"Neue", - L"Max. BSE-Charaktere", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Tote Gegner lassen alles fallen", - L"Aus", - L"An", -#ifdef JA2UB - L"Tex and John", - L"Zufällig", - L"Alle vorhanden", -#else - L"Anzahl der Terroristen", - L"Zufällig", - L"Alle vorhanden", -#endif - L"Geheime Waffenlager", - L"Zufällig", - L"Alle vorhanden", - L"Fortschritt Waffenwahl", - L"Sehr langsam", - L"Langsam", - L"Normal", - L"Schnell", - L"Sehr schnell", - L"Alt / Alt", - L"Neu / Alt", - L"Neu / Neu", - - // Squad Size - L"Max. Truppengröße", - L"6", - L"8", - L"10", - //L"Schneller Bobby Ray Lieferungen", - L"Inventarzugriff kostet APs", - L"Neues Zielsystem", - L"Verbesserte Unterbrechungen", - L"Söldner-Hintergrundgeschichten", - L"Nahrungssystem", - L"Bobby Ray Auswahl", - - // anv: extra iron man modes - L"SOFT IRONMAN", - L"EXTREME IRONMAN", -}; - -STR16 gzMPJScreenText[] = -{ - L"MEHRSPIELER", - L"Teilnehmen", - L"Eröffnen", - L"Abbrechen", - L"Aktualisieren", - L"Spielername", - L"Server-IP", - L"Port", - L"Servername", - L"# Spieler", - L"Version", - L"Spieltyp", - L"Ping", - L"Sie müssen einen Spielernamen eingeben.", - L"Sie müssen eine gültie Server-IP-Adresse eingeben. Zum Beispiel: 84.114.195.239", - L"Sie müssen eine gültige Server-Portnummer zwischen 1 und 65535 eingeben.", -}; - -STR16 gzMPJHelpText[] = -{ - L"Besuchen Sie http://webchat.quakenet.org/?channels=ja2-multiplayer um sich mit anderen Spielern zu treffen.", - L"Drücken Sie 'y' um das Chat-Fenster im Spiel zu öffnen, nachdem Sie mit dem Server verbunden sind.", - - L"ERÖFFNEN", - L"Geben Sie '127.0.0.1' für die IP Adresse ein. Die Port Nummer sollte größer als 60000 sein.", - L"Vergewissern Sie sich, dass das Port (UDP, TCP) auf dem Router weitergeleitet wird. Siehe: http://portforward.com", - L"Sie müssen Ihre externe IP (http://www.whatismyip.com) und die Port Nummer an die anderen Spieler schicken (via IRC, ICQ, etc.).", - L"Klicken Sie auf 'Eröffnen', um ein neues Spiel zu eröffnen.", - - L"TEILNEHMEN", - L"Der Host muss Ihnen die externe IP Adresse und die Port Nummer schicken (via IRC, ICQ, etc.).", - L"Geben Sie die externe IP und die Port Nummer des Hosts ein.", - L"Klicken Sie auf 'Teilnehmen', um an einem bereits eröffneten Spiel teilzunehmen.", -}; - -STR16 gzMPHScreenText[] = -{ - L"ERÖFFNE SPIEL", - L"Starten", - L"Abbrechen", - L"Servername", - L"Spieltyp", - L"Deathmatch", - L"Team-Deathmatch", - L"Kooperativ", - L"Maximale Spieler", - L"Maximale Söldner", - L"Söldnerauswahl", - L"Söldnerrekrutierung", - L"Söldner selbst wählen", - L"Startkapital", - L"Gleiche Söldner erlaubt", - L"Angeheuerte Söldner anzeigen", - L"Bobby Ray", - L"Sektor Startzone", - L"Sie müssen einen Servernamen eingeben.", - L"", - L"", - L"Tageszeit", - L"", - L"" , - L"Waffenschaden", - L"", - L"Rundenzeitbegrenzung", - L"", - L"Erlaube Zivilisten in CO-OP", - L"", - L"Maximale KI-Gegner in CO-OP", - L"Synchronisiere Verzeichnisse", - L"Synchronisationsverzeichnis", - L"Sie müssen ein gültiges MP-Synchronisationsverzeichnis eingeben.", - L"(Benutzen Sie '/' anstelle von '\\' als Verzeichnistrennzeichen.)", - L"Das angegebene MP-Synch.-Verzeichnis existiert nicht.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Ja", - L"Nein", - // Starting Time - L"Morgen", - L"Nachmittag", - L"Nacht", - // Starting Cash - L"Wenig", - L"Mittel", - L"Viel", - L"Unendlich", - // Time Turns - L"Niemals", - L"Langsam", - L"Mittel", - L"Schnell", - // Weapon Damage - L"Sehr gering", - L"Gering", - L"Normal", - // Merc Hire - L"Zufällig", - L"Normal", - // Sector Edge - L"Zufällig", - L"Wählbar", - // Bobby Ray / Hire same merc - L"Verbieten", - L"Erlauben", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Austin", //Austin, Texas, USA - L"Bagdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns except Meduna are dummy names... - L"Hong Kong", //Hong Kong, Hong Kong - L"Beirut", //Beirut, Lebanon (Middle East) - L"London", //London, England - L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Metavira", //The island of Metavira was the fictional location used by JA1 - L"Miami", //Miami, Florida, USA (SE corner of USA) - L"Moskau", //Moscow, USSR - L"New York", //New York, New York, USA - L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Paris", //Paris, France - L"Tripolis", //Tripoli, Libya (eastern Mediterranean) - L"Tokio", //Tokyo, Japan - L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Sind Sie sicher? Ein Wert von 0 bedeutet, dass der Charakter diese Fähigkeit nicht nutzen kann.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"(max. 8 Buchstaben)", -}; - -STR16 pIMPFinishButtonText[] = -{ - L"Analyse wird durchgeführt", -}; - -STR16 pIMPFinishStrings[] = -{ - L"Danke, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Stimme", -}; - -STR16 pDepartedMercPortraitStrings[] = -{ - L"Im Einsatz getötet", - L"Entlassen", - L"Sonstiges", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Söldner-Manager", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Pause", - L"Zurück zum Spiel (|P|a|u|s|e)", - L"Pause (|P|a|u|s|e)", -}; - -STR16 pMessageStrings[] = -{ - L"Spiel beenden?", - L"OK", - L"JA", - L"NEIN", - L"ABBRECHEN", - L"ZURÜCK", - L"LÜGEN", - L"Keine Beschreibung", //Save slots that don't have a description. - L"Spiel gespeichert", - L"Spiel gespeichert", - L"QuickSave", //10 //The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"Tag", - L"Söldner", - L"Leere Spiel Position", //An empty save game slot - L"Demo", //Demo of JA2 - L"Debug", //State of development of a project (JA2) that is a debug build - L"Veröffentlichung", //Release build for JA2 - L"RpM", //20 //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. //LOOTF - KpM macht Augenkrebs, KpM gibt es einfach nicht. - L"min", //Abbreviation for minute. - L"m", //One character abbreviation for meter (metric distance measurement unit). - L"Kgln", //Abbreviation for rounds (# of bullets) //LOOTF - character limit? Kugeln = kacke, will ändern! - L"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"Pfd", //Abbreviation for pounds (Imperial weight measurement unit) - L"Home", //Home as in homepage on the internet. - L"US$", //Abbreviation for US Dollars - L"n.a.", //Lowercase acronym for not applicable. - L"Inzwischen", //Meanwhile - L"%s ist im Sektor %s%s angekommen", //30 //Name/Squad has arrived in sector A9. Order must not change without notifying SirTech - L"Version", - L"Leere Quick-Save Position", - L"Diese Position ist für Quick-Saves aus dem Karten- oder Taktik-Bildschirm reserviert. Speichern mit ALT+S.", - L"offen", - L"zu", - L"Ihr Festplattenspeicher ist knapp. Sie haben lediglich %sMB frei und Jagged Alliance 2 v1.13 benötigt %sMB.", - L"%s von AIM angeheuert", - L"%s hat %s gefangen.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - - L"%s hat %s eingenommen.", //'Merc name' has taken 'item name' - L"%s hat keine medizinischen Fähigkeiten",//40 //'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"Die Integrität des Spieles wurde beschädigt.", //The integrity of the game has been compromised - L"FEHLER: CD-ROM-Laufwerk schließen", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"Kein Platz, um von hier aus zu feuern.", - - //Can't change stance due to objects in the way... - L"Kann seine Position hier nicht ändern.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Ablegen", - L"Werfen", - L"Weitergeben", - - L"%s weitergegeben an %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise you must notify SirTech. - L"Kein Platz, um %s an %s weiterzugeben.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" angebracht )", // 50 - - //Cheat modes - L"Cheat-Level EINS erreicht", - L"Cheat-Level ZWEI erreicht", - - //Toggling various stealth modes - L"Schleichbewegung für Trupp ein.", - L"Schleichbewegung für Trupp aus.", - L"Schleichbewegung für %s ein.", - L"Schleichbewegung für %s aus.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Drahtgitter ein", - L"Drahtgitter aus", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Von dieser Ebene geht es nicht nach oben...", - L"Noch tiefere Ebenen gibt es nicht...", // 60 - L"Gewölbeebene %d betreten...", - L"Gewölbe verlassen...", - - L"s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Autoscrolling AUS.", - L"Autoscrolling AN.", - L"3D-Cursor AUS.", - L"3D-Cursor AN.", - L"Trupp %d aktiv.", - L"Sie können %ss Tagessold von %s nicht zahlen", //first %s is the mercs name, the second is a string containing the salary - L"Abbruch", // 70 - L"%s kann alleine nicht gehen.", - L"Spielstand namens SaveGame249.sav kreiert. Wenn nötig, in SaveGame01 - SaveGame10 umbennen und über die Option 'Laden' aufrufen.", - L"%s hat %s getrunken.", - L"Paket in Drassen angekommen.", - L"%s kommt am %d. um ca. %s am Zielort an (Sektor %s).", //first %s is mercs name(OK), next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival !!!7 It should be like this: first one is merc (OK), next is day of arrival (OK) , next is time of the day for ex. 07:00 (not OK, now it is still sector), next should be sector (not OK, now it is still time of the day) //LOOTF - is this still valid? I assume it's not. - L"Logbuch aktualisiert.", - L"Granatenwerfer-Feuerstöße verwenden Ziel-Cursor (Sperrfeuer aktiviert).", - L"Granatenwerfer-Feuerstöße verwenden Flugbahn-Cursor (Sperrfeuer deaktiviert).", - L"Soldaten-Kurzinfo (\"Tooltips\") aktiviert", // Changed from Drop All On - SANDRO - L"Soldaten-Kurzinfo (\"Tooltips\") deaktiviert", // 80 // Changed from Drop All Off - SANDRO - L"Granatwerfer schießen in flachem Winkel.", - L"Granatwerfer schießen in steilem Winkel.", - // forced turn mode strings - L"Erzwungener Rundenmodus", - L"Normaler Rundenmodus", - L"Verlasse Kampfmodus", - L"Erzwungener Rundenmodus ist aktiv, gehe in Kampfmodus", - L"Spiel erfolgreich in Position End Turn Auto Save gespeichert.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. - L"Client", - - L"Sie können nicht altes Inventar und neues Attachment System gleichzeitig verwenden.", - L"Automatischer Spielstandspeicherung #", //91 // Text des Auto Saves im Load Screen mit ID - L"Dieser Platz ist reserviert für Spielstände die automatisch gespeichert werden. Dies kann ein/ausgeschaltet werden in der Datei ja2_options.ini (AUTO_SAVE_EVERY_N_HOURS).", //92 // The text, when the user clicks on the save screen on an auto save - L"Leerer Platz für automatische Spielstandspeicherung #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSpielstand", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"Zugende Spielstand #", // 95 // The text for the tactical end turn auto save - L"Speichere Automatischen Spielstand #", // 96 // The message box, when doing auto save - L"Speichere", // 97 // The message box, when doing end turn auto save - L"Leere Platz für Spieler-Zugende Spielstandspeicherung #", // 98 // The message box, when doing auto save - L"Dieser Platz ist reserviert für Spielstände am Ende eines Spieler Zuges. Dies kann ein/ausgeschaltet werden in den Spieleinstellungen.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) - L"Mausberech begrenzen, damit Mauscursor innerhalb des Spielfensters bleibt.", // 104 - L"Mausbereich wieder freigeben, um uneingeschränkte Mausbewebung zu erhalten.", // 105 - L"In Formation bewegen - EINGESCHALTET", - L"In Formation bewegen - AUSGESCHALTET", - L"Artificial Merc Light ON", // TODO.Translate - L"Artificial Merc Light OFF", - L"Gruppe %s aktiv.", - L"%s hat %s geraucht.", - L"Cheats aktivieren?", - L"Cheats deaktivieren?", -}; - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"OK", - L"Hochscrollen", - L"Alle auswählen", - L"Runterscrollen", - L"Abbrechen", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s ist nicht nahe genug, um geheilt zu werden", - L"Ihre Mediziner haben noch nicht alle verbinden können.", -}; - -STR16 pMilitiaButtonsHelpText[] = -{ - L"Zuordnung auflösen (|R|e|c|h|t|s |K|l|i|c|k)\nZuordnen (|L|i|n|k|s |K|l|i|c|k)\nGrüne Miliz", // button help text informing player they can pick up or drop militia with this button - L"Zuordnung auflösen (|R|e|c|h|t|s |K|l|i|c|k)\nZuordnen (|L|i|n|k|s |K|l|i|c|k)\nReguläre Miliz", - L"Zuordnung auflösen (|R|e|c|h|t|s |K|l|i|c|k)\nZuordnen (|L|i|n|k|s |K|l|i|c|k)\nElite Miliz", - L"Verteile Miliz gleichwertig über alle Sektoren", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Zu AIM gehen und Söldner anheuern ( *Tip*: Befindet sich im Laptop )", // to inform the player to hire some mercs to get things going -#ifdef JA2UB - L"Sobald Sie für die Reise nach Tracona bereit sind, klicken Sie auf den Zeitraffer-Button unten rechts auf dem Bildschirm.", // to inform the player to hit time compression to get the game underway -#else - L"Sobald Sie für die Reise nach Arulco bereit sind, klicken Sie auf den Zeitraffer-Button unten rechts auf dem Bildschirm.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Fehler. Fehlende oder fehlerhafte Datei(en). Spiel wird beendet.", -}; - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"E-Mail einsehen", - L"Websites durchblättern", - L"Dateien und Anlagen einsehen", - L"Logbuch lesen", - L"Team-Info einsehen", - L"Finanzen und Notizen einsehen", - - L"Laptop schließen", - - //Bottom task bar icons (if they exist): - L"Sie haben neue Mail", - L"Sie haben neue Dateien", - - //Bookmarks: - L"Association of International Mercenaries", - L"Bobby Rays Online-Waffenversand", - L"Bundesinstitut für Söldnerevaluierung", - L"More Economic Recruiting Center", - L"McGillicuttys Bestattungen", - L"Fleuropa", - L"Versicherungsmakler für A.I.M.-Verträge", - //New Bookmarks - L"", - L"Enzyklopädie", - L"Einsatzbesprechung", - L"Geschichte", - L"Mercenaries Love or Dislike You", // TODO.Translate - L"World Health Organization", - L"Kerberus - Experience In Security", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services", // TODO.Translate - L"Controlled factories", // TODO.Translate -}; - -STR16 gzHelpScreenText[] = -{ - L"Helpscreen verlassen", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"Es tobt eine Schlacht. Sie können sich nur im Taktik-Bildschirm zurückziehen.", - L"Sektor betreten und Kampf fortsetzen (|E).", - L"Kampf durch PC entscheiden (|A).", - L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn Sie angreifen.", - L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn Sie in einem Hinterhalt sind.", - L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn Sie gegen Monster kämpfen.", - L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn feindliche Zivilisten da sind.", - L"Sie können einen Kampf nicht vom PC entscheiden lassen, wenn Bloodcats da sind.", - L"KAMPF IN GANGE", - L"Sie können sich nicht zurückziehen, wenn Sie in einem Hinterhalt sind.", -}; - -STR16 gzMiscString[] = -{ - L"Ihre Milizen kämpfen ohne die Hilfe der Söldner weiter...", - L"Das Fahrzeug muss nicht mehr aufgetankt werden.", - L"Der Tank ist %d%% voll.", - L"Deidrannas Armee hat wieder volle Kontrolle über %s.", - L"Sie haben ein Tanklager verloren.", -}; - - -STR16 gzIntroScreen[] = -{ - L"Kann Introvideo nicht finden", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - //There really isn't any difference between using "coming from" or "to". - //For the explosion case the string in English could be either: - // L"Gus hears a loud EXPLOSION 'to' the north.", - // L"Gus hears a loud EXPLOSION 'coming from' the north.", - //For certain idioms, it sounds better to use one over the other. It is a matter of preference. - L"%s hört %s aus dem %s.", - L"%s hört eine BEWEGUNG (%s) von %s.", - L"%s hört ein KNARREN (%s) von %s.", - L"%s hört ein KLATSCHEN (%s) von %s.", - L"%s hört einen AUFSCHLAG (%s) von %s.", - L"%s hört ein %s GESCHÜTZFEUER von %s.", // anv: without this, all further noise notifications were off by 1! - L"%s hört eine EXPLOSION (%s) von %s.", - L"%s hört einen SCHREI (%s) von %s.", - L"%s hört einen AUFSCHLAG (%s) von %s.", - L"%s hört einen AUFSCHLAG (%s) von %s.", - L"%s hört ein ZERBRECHEN (%s) von %s.", - L"%s hört ein ZERSCHMETTERN (%s) von %s.", - L"", // anv: placeholder for silent alarm - L"%s hört irgendeine %s STIMME von %s.", // anv: report enemy taunt to player -}; - -STR16 pTauntUnknownVoice[] = -{ - L"Unbekannte Stimme", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Sort. nach Name (|F|1)", - L"Sort. nach Auftrag (|F|2)", - L"Sort. nach wach/schlafend (|F|3)", - L"Sort. nach Ort (|F|4)", - L"Sort. nach Ziel (|F|5)", - L"Sort. nach Vertragsende (|F|6)", -}; - -STR16 BrokenLinkText[] = -{ - L"Error 404", - L"Seite nicht gefunden.", -}; - -STR16 gzBobbyRShipmentText[] = -{ - L"Letzte Lieferungen", - L"Bestellung #", - L"Artikelanzahl", - L"Bestellt am", -}; - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameTitle[]= -{ - L"Game Internals Programmer", // Chris Camfield - L"Co-designer/Writer", // Shaun Lyng - L"Strategic Systems & Editor Programmer", // Kris \"The Cow Rape Man\" Marnes - L"Producer/Co-designer", // Ian Currie - L"Co-designer/Map Designer", // Linda Currie - L"Artist", // Eric \"WTF\" Cheng - L"Beta Coordinator, Support", // Lynn Holowka - L"Artist Extraordinaire", // Norman \"NRG\" Olsen - L"Sound Guru", // George Brooks - L"Screen Designer/Artist", // Andrew Stacey - L"Lead Artist/Animator", // Scot Loving - L"Lead Programmer", // Andrew \"Big Cheese Doddle\" Emmons - L"Programmer", // Dave French - L"Strategic Systems & Game Balance Programmer", // Alex Meduna - L"Portraits Artist", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(still learning punctuation)", // Shaun Lyng - L"(\"It's done. I'm just fixing it\")", //Kris \"The Cow Rape Man\" Marnes - L"(getting much too old for this)", // Ian Currie - L"(and working on Wizardry 8)", // Linda Currie - L"(forced at gunpoint to also do QA)", // Eric \"WTF\" Cheng - L"(Left us for the CFSA - go figure...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(Dead Head and jazz lover)", // Andrew Stacey - L"(his real name is Robert)", // Scot Loving - L"(the only responsible person)", // Andrew \"Big Cheese Doddle\" Emmons - L"(can now get back to motocrossing)", // Dave French - L"(stolen from Wizardry 8)", // Alex Meduna - L"(did items and loading screens too!)", // Joey \"Joeker\" Whelan", -}; - -STR16 sRepairsDoneString[] = -{ - L"%s hat seine eigenen Gegenstände repariert.", - L"%s hat die Waffen und Rüstungen aller Teammitglieder repariert.", - L"%s hat die aktivierten Gegenstände aller Teammitglieder repariert.", - L"%s hat die großen mitgeführten Gegenstände aller Teammitglieder repariert.", - L"%s hat die mittelgroßen mitgeführten Gegenstände aller Teammitglieder repariert.", - L"%s hat die kleinen mitgeführten Gegenstände aller Teammitglieder repariert.", - L"%s hat die Trageausrüstung aller Teammitglieder repariert.", - L"%s hat die Waffen aller Teammitglieder gereinigt.", -}; - -STR16 zGioDifConfirmText[]= -{ - L"Sie haben sich für den Einsteiger-Modus entschieden. Dies ist die passende Einstellung für Spieler, die noch nie zuvor Jagged Alliance oder ähnliche Spiele gespielt haben oder für Spieler, die sich ganz einfach kürzere Schlachten wünschen. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im Einsteiger-Modus spielen wollen?", - L"Sie haben sich für den Profi-Modus entschieden. Dies ist die passende Einstellung für Spieler, die bereits Erfahrung mit Jagged Alliance oder ähnlichen Spielen haben. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im Profi-Modus spielen wollen?", - L"Sie haben sich für den Alter Hase-Modus entschieden. Na gut, wir haben Sie gewarnt. Machen Sie hinterher bloß nicht uns dafür verantwortlich, wenn Sie im Sarg nach Hause kommen. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im Alter Hase-Modus spielen wollen?", - L"Sie haben sich für den WAHNSINNIG-Modus entschieden. WARNUNG: Beschweren Sie sich nicht, wenn Sie in kleinen Stücken zurückkommen ... Deidranna wird Sie in den Allerwertesten treten und das schmerzhaft. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im WAHNSINNIG-Modus spielen wollen?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"%S Loadscreen-Daten nicht gefunden...", - - //1-5 - L"Der Roboter kann diesen Sektor nicht verlassen, wenn niemand die Fernbedienung benutzt.", - - L"Sie können den Zeitraffer jetzt nicht benutzen. Warten Sie das Feuerwerk ab!", - L"%s will sich nicht bewegen.", - L"%s hat nicht genug Energie, um die Position zu ändern.", - L"%s hat kein Benzin mehr und steckt in %c%d fest.", - - //6-10 - - // the following two strings are combined with the strings below to report noises - // heard above or below the merc - L"oben", - L"unten", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"Keiner der Söldner hat medizinische Fähigkeiten.", - L"Sie haben kein Verbandszeug.", - L"Sie haben nicht genug Verbandszeug, um alle zu verarzten.", - L"Keiner der Söldner muss verbunden werden.", - L"Söldner automatisch verbinden.", - L"Alle Söldner verarztet.", - - //14-16 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - L"(Dach)", - L"Gesundheit: %d/%d", - - //17 - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d gegen %d", - - //18-19 - L"%s ist voll!", //(ex "The ice cream truck is full") - L"%s braucht nicht eine schnelle Erste Hilfe, sondern eine richtige medizinische Betreuung und/oder Erholung.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s ist am Bein getroffen und hingefallen!", - //Name can't speak right now. - L"%s kann gerade nicht sprechen.", - - //22-24 plural versions - L"%d grüne Milizen wurden zu Elitemilizen befördert.", - L"%d grüne Milizen wurden zu regulären Milizen befördert.", - L"%d reguläre Milizen wurden zu Elitemilizen befördert.", - - //25 - L"Schalter", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s dreht durch!", - - //27-28 - //Messages why a player can't time compress. - L"Es ist momentan gefährlich den Zeitraffer zu betätigen, da Sie noch Söldner in Sektor %s haben.", - L"Es ist gefährlich den Zeitraffer zu betätigen, wenn Sie noch Söldner in den von Monstern verseuchten Minen haben.", - - //29-31 singular versions - L"1 grüne Miliz wurde zur Elitemiliz befördert.", - L"1 grüne Miliz wurde zur regulären Miliz befördert.", - L"1 reguläre Miliz wurde zur Elitemiliz befördert.", - - //32-34 - L"%s sagt überhaupt nichts.", - L"Zur Oberfläche gehen?", - L"(Trupp %d)", - - //35 - L"%s reparierte %ss %s", - - //36 - L"BLOODCAT", - - //37-38 "Name trips and falls" - L"%s stolpert und stürzt", - L"Dieser Gegenstand kann von hier aus nicht aufgehoben werden.", - - //39 - L"Keiner Ihrer übrigen Söldner ist in der Lage zu kämpfen. Die Miliz wird die Monster alleine bekämpfen", - - //40-43 - //%s is the name of merc. - L"%s hat keinen Erste-Hilfe-Kasten mehr!", - L"%s hat nicht das geringste Talent, jemanden zu verarzten!", - L"%s hat keinen Werkzeugkasten mehr!", - L"%s ist absolut unfähig dazu, irgendetwas zu reparieren!", - - //44 - L"Repar. Zeit", - L"%s kann diese Person nicht sehen.", - - //46-48 - L"%ss Gewehrlauf-Verlängerung fällt ab!", - L"Es sind nicht mehr als %d Miliz-Ausbilder in diesem Sektor erlaubt.", - L"Sind Sie sicher?", // - - //49-50 - L"Zeitraffer", //time compression - L"Der Fahrzeugtank ist jetzt voll.", - - //51-52 Fast help text in mapscreen. - L"Zeitraffer fortsetzen (|S|p|a|c|e)", - L"Zeitraffer anhalten (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s hat die Ladehemmung der %s behoben", - L"%s hat die Ladehemmung von %ss %s behoben", - - //55 - L"Die Zeit kann nicht komprimiert werden, während das Sektorinventar eingesehen wird.", - - L"Die Jagged Alliance 2 v1.13 PLAY CD wurde nicht gefunden. Das Programm wird jetzt beendet.", - - //L"Im Sektor sind Feinde entdeckt worden", //STR_DETECTED_SIMULTANEOUS_ARRIVAL - - L"Die Gegenstände wurden erfolgreich miteinander kombiniert.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Aktueller/Max. Fortschritt: %d%%/%d%%", - - //59 - L"John und Mary eskortieren?", - - L"Schalter aktiviert.", - - L"%s's Rüstungsverstärkung wurde zertrümmert!", - L"%s feuert %d Schüsse mehr als beabsichtigt!", - L"%s feuert einen Schuss mehr als beabsichtigt!", - - L"Sie müssen zuerst das Gegenstandsbeschreibungsfenster schließen!", - - L"Zeitraffer kann nicht betätigt werden - Feindliche Zivilisten/Bloodcats sind im Sektor.", // 65 -}; - -STR16 gzCWStrings[] = -{ - L"Verstärkung aus benachbarten Sektoren nach %s rufen?", -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Ort: %d\n", - L"%s|Helligkeit: %d / %d\n", - L"%s|Entfernung zum |Ziel: %d\n", - L"%s|I|D: %d\n", - L"%s|Befehle: %d\n", - L"%s|Gesinnung: %d\n", - L"%s|Aktuelle |A|Ps: %d\n", - L"%s|Aktuelle |Gesundheit: %d\n", - L"%s|Aktueller |Atem: %d\n", - L"%s|Aktuelle |Moral: %d\n", - L"%s|Aktueller |Schock: %d\n", - L"%s|Aktuelle |S|perrfeuer P.: %d\n", - // Full info - L"%s|Helm: %s\n", - L"%s|Weste: %s\n", - L"%s|Hose: %s\n", - // Limited, Basic - L"|Rüstung: ", - L"Helm", - L"Weste", - L"Hose", - L"getragen", - L"keine Rüstung", - L"%s|N|V|G: %s\n", - L"kein NVG", - L"%s|Gasmaske: %s\n", - L"keine Gasmaske", - L"%s|Kopf |Position |1: %s\n", - L"%s|Kopf |Position |2: %s\n", - L"\n(im Rucksack) ", - L"%s|Waffe: %s ", - L"keine Waffe", - L"Pistole", - L"SMG", - L"Gewehr", - L"MG", - L"Schrotflinte", - L"Messer", - L"Schwere Waffe", - L"kein Helm", - L"keine Weste", - L"keine Hose", - L"|Rüstung: %s\n", - // Added - SANDRO - L"%s|Fertigkeit 1: %s\n", - L"%s|Fertigkeit 2: %s\n", - L"%s|Fertigkeit 3: %s\n", - // Additional suppression effects - sevenfm - L"%s|A|Ps verloren aufgrund von |U|nterdrückung: %d\n", - L"%s|Unterdrückungs-|Toleranz: %d\n", - L"%s|Effektive |S|chock |Stufe: %d\n", - L"%s|K|I |Moral: %d\n", -}; - -STR16 New113Message[] = -{ - L"Sturm startet.", - L"Sturm endet.", - L"Regen startet.", - L"Regen endet.", - L"Vorsicht vor Scharfschützen...", - L"Unterdrückungsfeuer!", - L"BRST", - L"AUTO", - L"GL", - L"GL BRST", - L"GL AUTO", - L"UB", - L"UBRST", - L"UAUTO", - L"BAYONET", - L"Scharfschütze!", - L"Geld kann nicht aufgeteilt werden, weil ein Gegenstand am Cursor ist.", - L"Ankunft der neuen Söldner wurde in den Sektor %s verlegt, weil der geplante Sektor %s von Feinden belagert ist.", - L"Gegenstand gelöscht.", - L"Alle Gegenstände dieses Typs gelöscht.", - L"Gegenstand verkauft.", - L"Alle Gegenstände dieses Typs verkauft.", - L"Überprüfen Sie die Sichtgeräte Ihrer Söldner!", - // Real Time Mode messages - L"Sie sind bereits im Kampfmodus", - L"Keine Gegner in Sicht", - L"Echtzeit-Schleichmodus AUS", - L"Echtzeit-Schleichmodus AN", - //L"Gegner gesichtet! (Ctrl + x für Rundenmodus)", - L"Gegner gesichtet!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s hatte Erfolg beim Stehlen!", - L"%s hatte nicht genug Aktionspunkte um alles zu stehlen.", - L"Möchten Sie %s vor dem Bandagieren operativ behandeln? (Sie können etwa %i Lebenspunkte wiederherstellen.)", - L"Möchten Sie %s operativ behandeln? (Sie können etwa %i Lebenspunkte wiederherstellen.)", - L"Möchten Sie zuerst Operationen durchführen? (%i Patient(en))", - L"Möchten Sie an diesem Patienten zuerst eine Operation durchführen?", - L"Erste Hilfe automatisch mit entsprechender operativer Behandlung durchführen oder ohne?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"%s wurde erfolgreich operiert.", - L"%s ist am Torso getroffen und verliert einen Punkt maximaler Gesundheit!", - L"%s ist am Torso getroffen und verliert %d Punkte maximaler Gesundheit!", - L"%s is blinded by the blast!", // TODO.Translate - L"%s hat einen Punkt an %s wiedergewonnen.", - L"%s hat %d Punkte an %s wiedergewonnen.", - L"Ihre Späher-Fertigkeit hat Sie davor bewahrt, vom Gegner in einen Hinterhalt gelockt zu werden.", - L"Dank Ihrer Späher-Fertigkeit haben Sie erfolgreich ein Rudel Bloodcats umgangen.", - L"%s wurde in die Leiste getroffen und windet sich in Schmerzen!", - ////////////////////////////////////////////////////////////////////////////////////// - L"Warning: enemy corpse found!!!", - L"%s [%d rnds]\n%s %1.1f %s", - L"Zu wenig APs! Es werden %d APs benötigt, Sie haben aber nur %d APs.", - L"Tipp: %s", - L"Spieler Stärke: %d - Gegner Stärke: %6.0f", // Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"Cannot use skill!", // TODO.Translate - L"Cannot build while enemies are in this sector!", - L"Cannot spot that location!", - L"Incorrect GridNo for firing artillery!", - L"Radio frequencies are jammed. No communication possible!", - L"Radio action failed!", - L"Not enough mortar shells in sector to start a barrage!", - L"No signal shell item found in Items.xml!", - L"No High-Explosive shell item found in Items.xml!", - L"No mortars found, cannot commence barrage!", - L"Already jamming signal, no need to do so again!", - L"Already listening for nearby sounds, no need to do so again!", - L"Already trying to spot, no need to do so again!", - L"Already scanning for jam signals, no need to do so again!", - L"%s could not apply %s to %s.", - L"%s orders reinforcements from %s.", - L"%s radio set is out of energy.", - L"a working radio set", - L"a binocular", - L"patience", - L"%s's shield has been destroyed!", // TODO.Translate - L" DELAY", // TODO.Translate - L"Ja*", - L"Ja", - L"Nein", - L"%s applied %s to %s.", // TODO.Translate -}; - -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s zittert vor Angst!", - L"%s ist festgenagelt!", - L"%s feuert mehr Schüsse als beabsichtigt!", - L"Sie können keine Miliz in diesem Sektor ausbilden.", - L"Miliz hebt %s auf.", - L"Wenn Feinde im Sektor sind können Sie keine Miliz ausbilden!", - // 6 - 10 - L"%s hat nicht genug Führungsqualität um Milizen auszubilden.", - L"Pro Sektor sind nicht mehr als %d Milizausbilder erlaubt.", - L"Kein Platz für mobile Milizen in oder rund um %s!", - L"Sie benötigen %d Stadtmilizen in jedem von %ss befreiten Sektoren bevor Sie hier mobile Milizen ausbilden können.", - L"Anlage nicht nutzbar wenn Feinde in der Gegend sind!", - // 11 - 15 - L"%s hat nicht genügend Weisheit um diese Anlage betreiben zu können.", - L"%s ist schon voll besetzt.", - L"Diese Anlage zu betreiben kostet $%d pro Stunde. Weitermachen?", - L"Sie haben nicht genug Geld um alle heutigen Betriebskosten zu zahlen. $%d wurden bezahlt, $%d fehlen noch. Die Einwohner sind nicht erfreut.", - L"Sie haben nicht genug Geld um alle heutigen Betriebskosten zu zahlen. Es stehen $%d aus. Die Einwohner sind nicht erfreut.", - // 16 - 20 - L"Sie haben eine ausstehende Forderung von $%d für Betriebskosen und kein Geld um zu bezahlen!", - L"Sie haben eine ausstehende Forderung von $%d für Betriebskosen. Dieser Anlage können Sie keinen Söldner zuweisen bis Sie Ihre gesamten Schulden beglichen haben.", - L"Sie haben eine ausstehende Forderung von $%d für Betriebskosen. Möchten Sie diese Schuld begleichen?", - L"Nicht möglich in diesem Sektor", - L"Tagesausgaben", - // 21 - 25 - L"Nicht genug Geld für alle angeworbenen Milzen! %d Milzen wurden entlassen und sind heimgekehrt.", - L"Um sich den Status eines Gegenstandes während des Kampfes anzuschauen, müssen Sie den Gegenstand vorher aufheben.", // HAM 5 - L"Um einen Gegenstand an einen anderen anbringen zu können, müssen Sie beide Gegenstände vorher aufheben.", // HAM 5 - L"Um zwei Gegenstände miteinander zu verbinden, müssen Sie beide Gegenstände vorher aufheben.", // HAM 5 -}; - -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"Keine Umgestaltungsmöglichkeit vorhanden", - L"%s wurde in mehrere Teile umgewandelt.", - L"%s wurde in mehrere Teile umgewandelt. Prüfen Sie %s's Inventar für die daraus entstandenen Teile.", - L"Aufgrund des fehlendes Platzes im Inventar nach der Umgestaltung wurden einige von %s's Gegenstände auf den Boden abgelegt.", - L"%s wurde in mehrere Teile umgewandelt. Durch den Platzmangel im Inventar hat %s ein paar Gegenstände auf den Boden abgelegt.", - L"Möchsten Sie alle %d Gegenstände im Stapel umwandeln? (Um nur einen Gegenstand umzuwandeln, entferenen Sie diesen zuerst vom Stapel)", - // 6 - 10 - L"Aufteilen des Kisteninhaltes ins Inventar", - L"Aufteilen in %d-Schuss Magazine", - L"%s wurde aufgeteilt in %d Magazine, wobei jedes davon %d Schuss enthält.", - L"%s wurde aufgeteilt in %s's Inventar.", - L"Es ist nicht genügend Platz in %s's Inventar um die Magazine dieses Kalibers abzulegen!", - L"Sofortmodus", - L"Verzögerter Modus", - L"Sofortmodus (%d AP)", - L"Verzögerter Modus (%d AP)", -}; - -// WANNE: These are the email texts Speck sends when one of the 4 new 1.13 MERC mercs have levelled up -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Hiermit geben wir zur Kenntnis, dass aufgrund von Gastons guten Leistungen in der Vergangenheit sein Sold erhöht wurde. Ich persönlich bin darüber nicht überrascht. ± ± Speck T. Kline ± ", - // Stogie: Text from Line 43 in Email.edt - L"Bitte nehmen Sie zur Kenntnis, dass Stogies Bezüge für seine geleisteten Dienste mit sofortiger Wirkung erhöht werden in Anpassung an seine verbesserten Fähigkeiten. ± ± Speck T. Kline ± ", - // Tex: Text from Line 45 in Email.edt - L"Bitte nehmen Sie zur Kenntnis, dass Tex aufgrund seiner Erfahrung Anspruch auf eine angemessenere Entlohnung hat. Seine Bezüge werden daher ab sofort seinem Wert entsprechend erhöht. ± ± Speck T. Kline ± ", - // Biggins: Text from Line 49 in Email.edt - L"Zur Kenntnisnahme. Aufgrund seiner verbesserten Leistungen wurden Colonel Biggins' Dienstbezüge erhöht. ± ± Speck T. Kline ± ", -}; - -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk - L"Weitergeleitet von AIM-Server: Nachricht von Victor Kolesnikov", - L"Vielen Dank für Nachricht auf Anrufbeantworter. Nun stehe ich zur Verfügung. ± ± Allerdings bin ich wählerisch mit meine Komamandanten. Ich werde mich noch über Sie erkundigen.± ± V.K. ±", - - // Brain - L"Weitergeleitet von AIM-Server: Nachricht von Janno Allik", - L"Jetzt wäre ich bereit für einen Auftrag. Sie wissen schon, alles zu seiner Zeit. ± ± Janno Allik ±", - - // Scream - L"Weitergeleitet von AIM-Server: Nachricht von Lennart Vilde", - L"Vielen Dank für Ihre Kontaktaufnahme. Sagen Sie mir Bescheid, wenn die nächste Party steigen kann. Ab sofort erreichen Sie mich über die AIM page. ± ± Lennart Vilde.", - - // Henning - L"Weitergeleitet von AIM-Server: Nachricht von Henning von Branitz", - L"Ihre Nachricht hat mich erreicht, vielen Dank. Falls Sie mich engagieren möchten, kontaktieren Sie mich über die AIM Website. ± ± Bis die Tage! ± ± Henning von Branitz ±", - - // Luc - L"Weitergeleitet von AIM-Server: Nachricht von Luc Fabre", - L"Ich habe Ihre Nachricht erhalten, merci. Zur Zeit könnte ich gerne einen Auftrag annehmen. Sie wissen ja, wo Sie mich erreichen. ± ± Sicher hören wir bald von einander. ±", - - // Laura - L"Weitergeleitet von AIM-Server: Nachricht von Dr. Laura Colin", - L"Ich grüße Sie! Schön, dass Sie mir eine Nachricht hinterlassen haben. Es hörte sich interessant an. ± ± Wenn Sie wieder bei AIM vorbeischauen, würde ich mich freuen, von Ihnen zu hören. ± ± Noch viel Erfolg! ± ± Dr. Laura Colin ±", - - // Grace - L"Weitergeleitet von AIM-Server: Nachricht von Graziella Girelli", - L"Sie wollten mich kontaktieren, aber ich war leider nicht zu erreichen.± ± Ein Familientreffen. Sie kennen das ja sicher... Jetzt hab' ich erst mal wieder genug von Familie.± ± Jedenfalls freue ich mich, wenn Sie sich auf der AIM Site mit mir in Verbindung setzen. Ciao! ±", - - // Rudolf - L"Weitergeleitet von AIM-Server: Nachricht von Rudolf Steiger", - L"Wissen Sie eigentlich, wieviel Anrufe ich jeden Tag kriege? Jeder Pisser meint, er müsste hier anrufen. ± ± Aber gut, ich bin jetzt wieder da. Falls Sie einen interessanten Auftrag haben. ±", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"Weitergeleitet von AIM-Server: Nachricht über Söldner Verfügbarkeit", - L"Ich habe Ihre Nachricht erhalten und warte auf Ihren Rückruf. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Scharfschütze: Sie haben Augen wie ein Falke. Dadurch können sie sogar auf die Flügel einer Fliege aus hunderten von Metern schießen! ± ", - // Camouflage - L"Tarnung: Neben Ihnen schauen sogar Büsche synthetisch aus. ± ", - // Ranger - L"Jäger: Sie haben eine bemerkenswerte Affinität zu schwer passierbarem Gelände und Ihre unermüdlichen Beine tragen Sie im Handumdrehen über Stock und Stein. ± ", - // Gunslinger - L"Revolverheld: Sie beweisen enormes Talent im Umgang mit Pistolen und Revolvern aller Art. John Wayne lässt grüßen. ± ", - // Squadleader - L"Zugführer: Ihre Rhetorik hat uns ganz schön beeindruckt und Ihre generelle Erscheinung motiviert einfach. In Ihrer Nähe kann eigentlich nichts schiefgehen. ± ", - // Technician - L"Ingenieur: Sie können mit Hufeisen und altem Garn so gut wie alles reparieren, MacGyver würde vor Neid erblassen. ± ", - // Doctor - L"Arzt: Ärzte wie Sie braucht das Land! Sie können Kranke heilen wie ein junger Jesus. ± ", - // Athletics - L"Läufer: So schnell und ausdauernd wie Sie rennen, möchte ich annehmen, Sie sind mit dem Wort Marathon vertraut. Einholen wird Sie bestimmt keiner. ± ", - // Bodybuilding - L"Kraftsportler: Arnie? Was für ein Weichei! Sie könnten ihn selbst mit einer gebrochenen Hand zu Boden befördern. ± ", - // Demolitions - L"Sprengmeister: Nutzen Sie Ihre Begeisterung für alles, was mit mehrfacher Schallgeschwindigkeit expandiert um sich im Training mit Granaten und Sprengstoffen hervorzutun. ± ", - // Scouting - L"Aufklärer: Sie sind über die Maßen aufmerksam, haben ein sehr reges Auge und einen nimmermüden Geist. ± ", - // Covert ops - L"Geheimagent: Neben Ihnen schaut 007 wie der reinste Amateur aus! ± ", - // Radio Operator - L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate - // Survival - L"Survival: Nature is a second home to you. ± ", // TODO.Translate -}; - -STR16 NewInvMessage[] = -{ - L"Rucksack kann zur Zeit nicht aufgehoben werden", - L"Kein Platz zum Ablegen des Rucksacks", - L"Rucksack nicht gefunden", - L"Reißverschluss funktioniert nur im Kampf", - L"Bewegung nicht möglich, während Reißverschluss des Rucksacks offen ist", - L"Sind Sie sicher, dass Sie alle Gegenstände im Sektor verkaufen wollen?", - L"Sind Sie sicher, dass Sie alle Gegenstände im Sektor löschen wollen?", - L"Kann nicht beim Tragen eines Rucksacks klettern", - L"All backpacks dropped", // TODO.Translate - L"All owned backpacks picked up", - L"%s drops backpack", - L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Initialisiere RakNet Server...", - L"Server gestartet, warte auf Client-Verbindungen...", - L"Sie müssen sich nun als Client durch drücken von '2' mit dem Server verbinden.", - L"Server läuft bereits.", - L"Starten des Servers ist fehlgeschlagen. Abbruch.", - // 5 - L"%d/%d Clients sind bereit für Echtzeitmodus.", - L"Verbindung zum Server ist unterbrochen, wird heruntergefahren.", - L"Server läuft nicht.", - L"Clients sind noch am laden, bitte warten...", - L"Sie können die Absprungzone nicht ändern, wenn der Server bereits gestartet wurde.", - // 10 - L"Datei '%S' gesendet - 100/100", - L"Alle Dateien wurden an '%S' gesendet.", - L"Starte mit dem versenden der Dateien an '%S'.", - L"Verwenden Sie die Anzeige für die Absprungzone wenn Sie den Startsektor ändern möchten. Änderungen sind nur möglich, bevor Sie auf 'Starte Spiel' geklickt haben.", -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Initialisiere RakNet Client...", - L"Verbinde zur ausgewählten Server-IP...", - L"Erhalte Spieleinstellungen:", - L"Sie sind bereits verbunden.", - L"Sie verbinden sich bereits...", - // 5 - L"Client #%d - '%S' hat '%s' angeheuert.", - L"Client #%d - '%S' hat einen weiteren Söldner angeheuert.", - L"Sie sind bereit - Gesamt bereit = %d/%d", - L"Sie sind nicht mehr bereit - Gesamt bereit = %d/%d", - L"Starte Gefecht...", - // 10 - L"Client #%d - '%S' ist bereit - Gesamt bereit = %d/%d", - L"Client #%d - '%S' ist nicht mehr bereit - Gesamt bereit = %d/%d", - L"Sie sind bereit. Warte auf die anderen Clients... Drücken Sie 'OK' wenn Sie doch noch nicht bereit sind.", - L"Lass uns das Gefecht beginnen!", - L"Ein Client muss laufen, um das Spiel beginnen zu können.", //LOOTF - Hintergrund? Wenn kein Client aktiv ist, gibt es doch auch niemanden, der eine Aufforderung zum Spielstart setzt? oO - // 15 - L"Spiel kann nicht gestartet werden. Es sind noch keine Söldner angeheuert.", - L"Erwarte Freigabe vom Server für den Laptop...", - L"Unterbrochen", - L"Unterbrechung beendet", - L"Maus-Raster-Koordinaten:", - // 20 - L"X: %d, Y: %d", - L"Raster-Nummer: %d", - L"Aktion kann nur der Server durchführen.", - L"Wähle exklusive Server-Aktion: ('1' - Laptop freischalten/anheuern) ('2' - Gefecht starten/Sektor laden) ('3' - Interface freischalten ) ('4' - Söldner Platzierung abschließen) ", - L"Sektor=%s, Max. Clients=%d, Teamgröße=%d, Spieltyp=%d, Gleiche Söldner=%d, Schaden-Mult.=%f, Rundenzeitbeschr.=%d, Seks/Tik=%d, Kein Bobby Ray=%d, Keine Aim/Merc-Ausrüstung=%d, Keine Moral=%d, Testen=%d", //LOOTF - Was ist Seks/Tik? Lol. Sextick. Finde gut. Englisch = Secs/Tic, aber das sagt mir auch nix. - // 25 - L"Testmodus und Cheat-Funktion mit '9' ist freigeschaltet.", - L"Neue Verbindung: Client #%d - '%S'.", - L"Team: %d.", - L"'%s' (Client #%d - '%S') wurde getötet von '%s' (Client #%d - '%S')", - L"Werfe Client #%d - '%S' aus dem Spiel.", - // 30 - L"Starte neuen Spielzug für gewählten Client. #1: , #2: %S, #3: %S, #4: %S", - L"Starte Spielzug für Client #%d", - L"Anfrage auf Echtzeit-Modus...", - L"In Echtzeit-Modus gewechselt.", - L"Fehler: Es ist ein Fehler beim Zurückwechseln in den Echtzeit-Modus aufgetreten", - // 35 - L"Laptop freischalten um Söldner anzuheuern? (Sind alle Clients bereits verbunden?)", - L"Server hat den Laptop freigeschaltet. Söldner anheuern!", - L"Unterbrechung.", - L"Sie können die Absprungzone nicht ändern, wenn Sie nur der Client und nicht zusätzlich der Server sind.", - L"Sie haben das Angebot zur Kampfaufgabe abgelehnt.", - // 40 - L"Alle Ihre Söldner wurden getötet!", - L"Überwachungsmodus wurde eingeschaltet.", - L"Sie wurden besiegt!", - L"Auf Dächer klettern ist in einem Mehrspieler-Spiel nicht erlaubt.", - L"Sie haben '%s' angeheuert.", - // 45 - L"Sie können den Sektor nicht ändern, wenn bereits Einkäufe begonnen haben", - L"Sektor gewechselt zu '%s'", - L"Verbindung zu Client '%s' abgebrochen, entferne Client vom Spiel.", - L"Ihre Verbindung zum Spiel wurde unterbrochen, gehe zurück zum Hauptmenü.", - L"Verbindung fehlgeschlagen. Wiederholung des Verbindungsaufbaus in 5 Sekunden. %i Versuche übrig...", - //50 - L"Verbindung fehlgeschlagen, Abbruch...", - L"Sie können das Spiel nicht beginnen, solange sich noch kein weiterer Spieler verbunden hat.", - L"%s : %s", - L"Sende an alle", - L"Nur Verbündete", - // 55 - L"Spielbeitritt nicht möglich. Das Spiel ist bereits gestartet.", - L"%s (Team): %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"Alle Dateien vom Server erhalten.", - L"'%S' hat alle Dateien vom Server heruntergeladen.", - L"'%S' startet mit dem Download der Dateien.", - L"Starten des Spiels ist nicht möglich solange die Clients noch nicht alle Dateien erhalten haben.", - L"Dieser Server erfordert, dass sie modifizierte Dateien für das Spiel herunterladen. Möchten Sie fortfahren?", - // 65 - L"Drücken Sie 'Bereit' um in den taktischen Bildschirm zu gelangen.", - L"Kann keine Verbindung herstellen, weil Ihre Version %S unterschiedlich zur Server Version %S ist.", - L"Sie haben einen gegnerischen Soldaten getötet.", - L"Spiel kann nicht gestartet werden, weil es keine unterschiedlichen Teams gibt.", - L"Die Spieleinstellungen erfordern Neues Inventar (NIV), aber NIV ist aufgrund der Spielauflösung nicht verwendbar.", - // 70 - L"Kann erhaltene Datei '%S' nicht speichern", - L"%s's Sprengstoff wurde von %s entschärft", - L"Sie haben verloren. Was für eine Schande", // All over red rover - L"Überwachungsmodus wurde ausgeschaltet", - L"Wählen Sie den Client, der gekickt werden soll. #1: , #2: %S, #3: %S, #4: %S", - // 75 - L"Team %s wurde vernichtet", - L"Client konnte nicht gestartet werden. Beendigung.", - L"Client Verbindung aufgelöst und heruntergefahren.", - L"Client läuft nicht.", - L"INFO: Falls das Spiel hängen bleibt (die Statusanzeige beim Gegnerischen Zug bewegt sich nicht), informieren Sie den Server, dass dieser ALT + E drücken soll, um Ihnen den Spielzug wieder zu geben!", - // 80 - L"Gegnerischer Spielzug - %d übrig", -}; - -STR16 gszMPEdgesText[] = -{ - L"N", - L"O", - L"S", - L"W", - L"M", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"Foxtrot", - L"Bravo", - L"Delta", - L"Charlie", - L"n.a.", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Spieltyp: ", - L"Spieler: ", - L"Teamgröße: ", - L"Sie können die Startpositionen nicht mehr ändern, sobald der Laptop freigeschaltet ist.", - L"Sie können die Teams nicht mehr ändern, sobald der Laptop freigeschaltet ist.", - L"Zuf. Söldner: ", - L"J", - L"Schwierigkeit:", - L"Server Version:", -}; - -STR16 gzMPSScreenText[] = -{ - L"Kampfstatistik", - L"Weiter", - L"Abbrechen", - L"Spieler", - L"Tötungen", - L"Tote", - L"Gegnerische Armee", - L"Treffer", - L"Fehlschüsse", - L"Treffgenauigkeit", - L"Schaden verursacht", - L"Schaden erhalten", - L"Bitte warten Sie bis der Server auf 'Weiter' geklickt hat." -}; - -STR16 gzMPCScreenText[] = -{ - L"Abbrechen", - L"Verbindungsaufbau zum Server", - L"Erhalte Server Einstellungen", - L"Herunterladen von Dateien", - L"Drücke 'ESC' zum Verlassen oder 'Y' zum Chatten", - L"Drücke 'ESC' zum Verlassen", - L"Fertig" -}; - -STR16 gzMPChatToggleText[] = -{ - L"Sende an alle", - L"Sende nur an Verbündete", -}; - -STR16 gzMPChatboxText[] = -{ - L"Mehrspieler Chat", - L"Senden mit 'ENTER', Abbrechen mit 'ESC'", -}; - -// Following strings added - SANDRO -// Translated by Scheinworld -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits - L"Auf der nächsten Seite können Sie Ihre Fertigkeiten entsprechend Ihrer Spezialisierung als Söldner festlegen. Es können nicht mehr als zwei verschiedene Fertigkeiten oder eine Expertenfertigkeit gewählt werden.", - L"Sie können auch nur eine oder gar keine Fertigkeit auswählen. Sie erhalten dafür einen Bonus zu Ihren Attributpunkten als Gegenleistung. Beachten Sie, dass die Fertigkeiten 'Elektronik', 'Beidhändig geschickt' und 'Getarnt' keine Experten-Spezialisierung erhalten.", - // For new major/minor traits - L"Auf der nächsten Seite können Sie Ihre Fertigkeiten entsprechend Ihrer Spezialisierung festlegen. Auf der ersten Seite können Sie bis zu %d Hauptfertigkeiten auswählen, die Ihre Rolle in einem Team repräsentieren, während Sie auf der zweiten Seite eine Liste der möglichen Nebenfertigkeiten finden.", - L"Es können nicht mehr als insgesamt %d Fertigkeiten gewählt werden. Wenn Sie keine Hauptfertigkeiten nutzen wollen, können Sie dafür %d Nebenfertigkeiten wählen. Selektieren Sie zwei Hauptfertigkeiten (oder eine Spezialisierung), ist/sind noch %d Nebenfertigkeit(en) wählbar.", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"Bitte verteilen Sie nun Ihre Bonuspunkte auf die gewünschten Attribute. Der Wert kann dabei nicht höher sein als", - L"B.S.E. Eigenschaften und Fähigkeiten.", - L"Bonus Pkt.:", - L"Anfangs-Level", - // New strings for new traits - SANDRO - L"Im nächsten Schritt können Sie Ihre Attribute und Fähigkeiten festlegen. Attribute sind Gesundheit, Geschicklichkeit, Beweglichkeit, Stärke und Weisheit. Sie können nicht weniger als %d Punkte verteilen.", - L"Der Rest sind Ihre Fähigkeiten, die Sie auch auf 0 setzen können.", - L"Beachten Sie, dass bestimmte Attribute auf spezifische Minimalwerte gesetzt werden, die den Voraussetzungen der Fertigkeiten entsprechen. Sie können diese Werte nicht weiter senken.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"B.S.E. Charakter-Analyse", - L"Die Charakter-Analyse ist der nächste Schritt bei der Erstellung Ihres Profils. Auf der nun folgenden Seite steht eine Vielzahl von Charaktereigenschaften zur Auswahl. Wir können uns vorstellen, dass Sie sich mit mehreren verbunden fühlen, entscheiden Sie sich daher bitte für die zutreffendste. ", - L"Die zweite Seite dient der Erfassung Ihrer Unzulänglichkeiten, die Sie möglicherweise haben (wir glauben, dass jeder Mensch nur eine große Schwäche hat). Bitte seien Sie dabei ehrlich, damit potentielle Arbeitgeber über Ihr zukünftiges Einsatzfeld informiert werden können.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Neutral", - L"Freundlich", - L"Einzelgänger", - L"Optimist", - L"Pessimist", - L"Aggressiv", - L"Arrogant", - L"Bonze", - L"Arschloch", - L"Feigling", - L"B.S.E. - Persönlichkeit", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Neutral", - L"Umgänglich", //LOOTF - alt. "Extrovertiert" - L"Einzelgängerisch", - L"Optimistisch", - L"Selbstsicher", - L"Lernbegeistert", - L"Primitiv", - L"Aggressiv", - L"Phlegmatisch", - L"Tollkühn", - L"Pazifistisch", - L"Sadistisch", - L"Machohaft", //LOOTF - alt. "Angeberisch" - L"Feigling", - L"B.S.E. - Charakterzüge", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"Erscheinung und Äußeres", - L"Hautfarbe", - L"Bitte geben Sie Ihre Haar- und Hautfarbe, Ihre Statur, sowie Ihre bevorzugten Kleidungsfarben an.", - L"Bitte geben Sie Ihre Haar- und Hautfarbe, sowie Ihre bevorzugten Kleidungsfarben an.", - L"Eingeschaltet, wird ein Gewehr einhändig abgefeuert.", - L"\n(Warnung: Sie werden eine Menge Stärke dafür benötigen.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Haarfarbe", - L"Hautfarbe", - L"Hemdfarbe", - L"Hosenfarbe", - L"Normale Statur", - L"Kräftige Statur", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"Keine Schwäche", - L"Hitzeempfindlichkeit", - L"Nervosität", - L"Klaustrophobie", - L"Nichtschwimmer", - L"Angst vor Insekten", - L"Vergesslichkeit", - L"Psychopath", - L"Schwerhörigkeit", - L"Kurzsichtigkeit", - L"Bluter", - L"Höhenangst" - L"Selbstverletzend", - L"Ihre größte Schwäche", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] = -{ - L"Sie sind bestimmt froh, dass wir ihnen das hier nicht auf die Mailbox sprechen.", - L"Sie haben entweder in ihrer Jugend zuviele Diskos besucht, oder zu viele Bombardierungen von nahem erlebt. Oder sie sind einfach alt. Ihr Team sollte jedenfalls Gebärdensprache lernen.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"Ohne ihre Brille sind sie aufgeschmissen.", - L"Das passiert wenn man dauernd nur vor der Glotze rumhängt. Sie hätten mehr Karotten essen sollen. Schon mal einen Hasen mit Brille gesehen? Aha.", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate -{ - L"Are you SURE this is the right job for you?", - L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate -{ - L"Let's just say you are a grounded person.", - L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Might want to make sure your knives are always clean.", - L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s hat nicht genug Kraft um diese Aufgabe zu erledigen.", - L"%s ist nicht geschickt genug um diese Aufgabe zu erledigen.", - L"%s ist nicht beweglich genug um diese Aufgabe zu erledigen.", - L"%s hat keine ausreichende Gesundheit um diese Aufgabe zu erledigen.", - L"%s mangelt es an ausreichender Weisheit um diese Aufgabe zu erledigen.", - L"%s mangelt es an ausreichender Treffsicherheit um diese Aufgabe zu erledigen.", - // 6 - 10 - L"%s hat nicht genug Medizinkenntnis um diese Aufgabe zu erledigen.", - L"%s hat zu wenig technisches Verständnis um diese Aufgabe zu erledigen.", - L"%s mangelt es an ausreichender Führungsqualität um diese Aufgabe zu erledigen.", - L"%s hat nicht genug Sprengstoffkenntnis um diese Aufgabe zu erledigen.", - L"%s mangelt es an ausreichender Erfahrung um diese Aufgabe zu erledigen.", - // 11 - 15 - L"%s hat nicht genug Moral um diese Aufgabe zu erledigen.", - L"%s ist zu erschöpft um diese Aufgabe zu erledigen.", - L"Zu wenig Loyalität in %s. Die Einwohner lassen Sie diese Aufgabe nicht verrichten.", - L"Es arbeiten bereits zu viele Personen in %s.", - L"Zu viele Personen verrichten diese Aufgabe schon in %s.", - // 16 - 20 - L"%s findet nichts mehr zum Reparieren.", - L"%s verliert %s beim Arbeiten in %s.", - L"%s hat ein paar %s verloren beim Arbeiten in der %s in %s !", - L"%s wurde verletzt beim Arbeiten in Sektor %s und benötigt dringend medizinische Versorgung!", - L"%s wurde verletzt beim Arbeiten in der %s in %s und benötigt dringend medizinische Versorgung!", - // 21 - 25 - L"%s wurde verletzt beim Arbeiten in Sektor %s. Es scheint aber nichts Ernstes zu sein.", - L"%s wurde verletzt beim Arbeiten in der %s in %s. Es scheint aber nichts Ernstes zu sein.", - L"Die Einwohner von %s scheinen sich über die Anwesenheit von %s aufzuregen." - L"Die Einwohner von %s scheinen sich über die Arbeit von %s in der %s aufzuregen." - L"%ss Handeln im Sektor %s hat einen Loyalitätsverlust in der gesamten Region bewirkt!", - // 26 - 30 - L"%ss Handeln in der %s in %s hat einen Loyalitätsverlust in der gesamten Region bewirkt!", - L"%s ist betrunken.", // <--- This is a log message string. - L"%s ist ernsthaft krank geworden in Sektor %s und wurde vom Dienst freigestellt.", - L"%s ist ernsthaft krank geworden und kann keine seine Arbeiten in der %s in %s fortsetzen.", - L"%s wurde verletzt in Sektor %s.", // <--- This is a log message string. - // 31 - 35 - L"%s wurde ernsthaft im Sektor %s verletzt.", //<--- This is a log message string. - L"There are currently prisoners here who are aware of %s's identity.", // TODO.Translate - L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", // TODO.Translate - - -}; - -STR16 gzFacilityRiskResultStrings[]= -{ - L"Kraft", - L"Beweglichkeit", - L"Geschicklichkeit", - L"Weisheit", - L"Gesundheit", - L"Treffsicherheit", - // 5-10 - L"Führungsqualität", - L"Technik", - L"Medizin", - L"Sprengstoffe", -}; - -STR16 gzFacilityAssignmentStrings[]= -{ - - L"UMGEBUNG", - L"Betrieb", - L"Essen", - L"Pause", - L"Repariere Gegenstände", - L"Repariere %s", - L"Repariere Roboter", - // 6-10 - L"Arzt", - L"Patient", - L"Üben Kraft", - L"Üben Geschicklichkeit", - L"Üben Beweglichkeit", - L"Üben Gesundheit", - // 11-15 - L"Üben Treffsicherheit", - L"Üben Medizin", - L"Üben Technik", - L"Üben Führungsqualität", - L"Üben Sprengstoff", - // 16-20 - L"Rekrut Kraft", - L"Rekrut Geschicklichkeit", - L"Rekrut Beweglichkeit", - L"Rekrut Gesundheit", - L"Rekrut Treffsicherheit", - // 21-25 - L"Rekrut Medizin", - L"Rekrut Technik", - L"Rekrut Führungsqualität.", - L"Rekrut Sprengstoff", - L"Trainer Kraft", - // 26-30 - L"Trainer Geschicklichkeit", - L"Trainer Beweglichkeit", - L"Trainer Gesundheit", - L"Trainer Treffsicherheit", - L"Trainer Medizin", - // 30-35 - L"Trainer Technik", - L"Trainer Führungsqualität", - L"Trainer Sprengstoff", - L"Gefangene verhören", // added by Flugente - L"Undercover Snitch", // TODO.Translate - // 36-40 - L"Spread Propaganda", - L"Spread Propaganda", // spread propaganda (globally) - L"Gather Rumours", - L"Command Militia", // militia movement orders -}; - -STR16 Additional113Text[]= -{ - L"Für die korrekte Arbeit im Fenster-Modus benötigt Jagged Alliance 2 v1.13 16-bit Farbmodus.", //Jagged Alliance 2 v1.13 windowed mode requires a color depth of 16bpp or less. - L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate - L"Interner Fehler beim Auslesen der %s Slots des zu ladenden Spielstandes: Die Anzahl der Slots im Spielstand (%d) unterscheidet sich mit den definierten Slots in der Datei ja2_options.ini (%d)", - // WANNE: Savegame slots validation against INI file - L"Söldner (MAX_NUMBER_PLAYER_MERCS) / Fahrzeuge (MAX_NUMBER_PLAYER_VEHICLES)", - L"Gegner (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Monster (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Miliz (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Zivilisten (MAX_NUMBER_CIVS_IN_TACTICAL)", -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -STR16 sEnemyTauntsFireGun[]= -{ - L"Friss Blei!", - L"Duck dich!", - L"Komm und hol mich!", - L"Du gehörst mir!", - L"Stirb!", - L"Zeit zu sterben.", - L"Vorsicht, Kugel!", - L"Komm her, du Mistkerl!", - L"Rrraaaaaah!", - L"Komm zu Papa.", - L"Du kommst unter die Erde.", - L"Du kommst hier nicht lebend raus!", - L"Aufs Maul!", - L"Du hättest daheim bleiben sollen!", - L"Stirb doch!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"Wird Zeit den Ballermann aus dem Sack zu holen.", - L"Überraschung.", - L"Beenden wir das schmerzhaft.", - L"Bitte lächeln!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Hier, fang!", - L"Die ist für dich.", - L"Spiel doch damit!", - L"Hab da was fallen gelassen.", - L"Hahaha.", - L"Viel Spaß damit!", - L"Hrrmmgh... uff!", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"Ich hol mir deinen Skalp.", - L"Komma her, du.", - L"Zeig mir dein Innerstes.", - L"Ich schneid dich in Streifen.", - L"Hjaaaaah!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"Wir sitzen in der Scheiße! Raus hier!", - L"Komm zur Armee, haben sie gesagt... Tze!", - L"Aufklärung erfolgreich, Feind überlegen, weg hier!", - L"Ohmeingottohmeingottohmeingott.", - L"Ganze Kampfgruppe - Rückzug!", - L"Rückzug! Alle Mann Rückzug!", - L"Weg von hier, die machen uns platt!", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"Ich hab da was gehört.", - L"Wer ist da? Ist da einer?", - L"Was war das eben?", - L"Paul, bist du das? Alles in Ordnung?", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"Alarm! Feindkontakt!", - L"Es geht los! Da sind sie!", - L"Ich seh einen von ihnen hier drüben!", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"Argh!", - L"Hnngh!", - L"Der saß...", - L"Au! Du Penner!", - L"Das wirst du bereuen!", - L"Sanitäter!", - L"Ich hab doch gar nichts gemacht!", -}; - -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Da'ffff...!", - L"Oh mein Gott!", - L"Heilige Scheiße!", - L"Gegner!!!", - L"Alarm! Alarm!", - L"Hier ist einer!", - L"Angriff!", -}; - - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Beschreibung", - L"Allgemein", - L"Erweitert", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Bes.", - L"Allg.", - L"Erw.", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Primär", - L"Sekundär", - L"AP Kosten", - L"Feuerstoß/Autofeuer", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Eigensch.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|B|e|s|c|h|r|e|i|b|u|n|g:\n \nZeigt allgemeine Informationen über den Gegenstand.", - L"|A|l|l|g|e|m|e|i|n|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nZeigt typische Daten über den Gegenstand.\n \nWaffen: Nochmals klicken um zweite Seite anzuzeigen.", - L"|E|r|w|e|i|t|e|r|t|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nZeigt Vor-/Nachteile des Gegenstandes.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|P|r|i|m|ä|r|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nEigenschaften und Daten in Bezug auf die Gegenstandsklasse\n(Waffen / Rüstungen / usw.).", - L"|S|e|k|u|n|d|ä|r|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nZusätzliche Eigenschaften des Gegenstands,\nund/oder mögliche sekundäre Fähigkeiten.", - L"|A|P |K|o|s|t|e|n:\n \nDiverse AP Kosten in Bezug auf Abfeuern\noder Handhabung der Waffe.", - L"|F|e|u|e|r|s|t|o|ß|/|A|u|t|o|f|e|u|e|r |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nMit dem Abfeuern dieser Waffe verbundene Daten für\nFeuerstoß-/Autofeuermodus.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|E|i|g|e|n|s|c|h|a|f|t |S|y|m|b|o|l\n \nMaus-darüber um den Namen der Eigenschaft zu erfahren.", - L"|G|r|u|n|d|w|e|r|t\n \nDer normale Wert des Gegenstandes ausschließlich aller\nVor-/Nachteile von Erweiterungen oder Munition.", - L"|E|r|w|e|i|t|e|r|u|n|g|s|b|o|n|u|s\n \nVor-/Nachteile von Munition, Erweiterungen, \noder schlechtem Zustand des Gegenstandes.", - L"|E|n|d|w|e|r|t\n \nDer endgültige Wert des Gegenstandes, einschließlich aller \nVor-/Nachteile von Erweiterungen oder Munition.", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Eigenschaft Symbol (Maus-darüber zeigt den Namen).", - L"Vor-/Nachteil wenn |s|t|e|h|e|n|d.", - L"Vor-/Nachteil wenn |h|o|c|k|e|n|d.", - L"Vor-/Nachteil wenn |l|i|e|g|e|n|d.", - L"Gegebener Vor-/Nachteil", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|G|e|n|a|u|i|g|k|e|i|t", - L"|S|c|h|a|d|e|n", - L"|R|e|i|c|h|w|e|i|t|e", - L"|H|a|n|d|h|a|b|u|n|g|s|p|r|o|b|l|e|m|a|t|i|k", - L"|E|r|l|a|u|b|t|e |Z|i|e|l|s|t|u|f|e|n", - L"|V|e|r|g|r|ö|ß|e|r|u|n|g|s|f|a|k|t|o|r", - L"|P|r|o|j|e|k|t|i|o|n|s|f|a|k|t|o|r", - L"|U|n|t|e|r|b|u|n|d|e|n|e|s M|ü|n|d|u|n|g|s|f|e|u|e|r", - L"|L|a|u|t|s|t|ä|r|k|e", - L"|Z|u|v|e|r|l|ä|s|s|i|g|k|e|i|t", - L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", - L"|M|i|n|d|e|s|t |R|e|i|c|h|w|e|i|t|e |f|ü|r |Z|i|e|l|v|o|r|t|e|i|l", - L"|T|r|e|f|f|e|r |M|o|d|i|f|i|k|a|t|o|r", - L"|A|P|s |f|ü|r |A|n|l|e|g|e|n", - L"|A|P|s |f|ü|r |S|c|h|u|s|s", - L"|A|P|s |f|ü|r |Fe|u|e|r|s|t|o|ß ", - L"|A|P|s |f|ü|r |A|u|t|o|f|e|u|e|r", - L"|A|P|s |f|ü|r |N|a|c|h|l|a|d|e|n", - L"|A|P|s |f|ü|r |R|e|p|e|t|i|e|r|e|n", - L"", // No longer used! - L"|G|e|s|a|m|t|e|r| |R|ü|c|k|s|t|o|ß", - L"|A|u|t|o|f|e|u|e|r |p|r|o |5 |A|P|s", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nBestimmt ob Kugeln, welche von dieser Waffe gefeuert werden, vom\nZiel abweichen.\n \nMaßstab: 0-100.\nHöher ist besser.", - L"\n \nBestimmt den durchschnittlichen Schaden den von dieser Waffe gefeuerte Kugeln machen,\nbevor Berücksichtigung von Rüstung oder Rüstungsdurchdringen.\n \nHöher ist besser.", - L"\n \nDie gößte Entfernung (in Felder) die von dieser Waffe gefeuerte Kugel\nzurücklegen, bevor sie zu Boden fallen.\n \nHöher ist besser.", - L"\n \nBestimmt die Schwierigkeit für das Halten und Feuern der Waffe.\nEin höhere Wert resultiert in einer niedrigeren Trefferwahrscheinlichkeit.\n \nNiedriger ist besser.", - L"\n \nDas ist die Anzahl von extra Ziellevel welche Sie erhalten,\nwenn Sie mit der Waffe zielen.\n \nJe weniger Ziellevel erlaubt sind desto mehr\nLevel erhalten Sie. Deshalb, weniger Level zu haben,\nmacht die Waffe schneller ohne an Genauigkeit\nzu verlieren.\n \nNiedriger ist besser.", - L"\n \nWenn größer als 1.0, werden Zielfehler\nproportional zur Entfernung reduziert.\n \nZur Erinnernung hohe Zielfernrohrvergrößerungen sind schädlich wenn das Ziel zu nahe ist!\n \n Der Wert von 1.0 bedeutet kein Zielfernrohr wird benutzt.", - L"\n \nReduziert Zielfehler proportional zur Entfernung.\n \nDieser Effekt wirkt bis zu einer gegebenen Entfernung,\ndann löst er sich langsam auf und verschwindet evtl. bei ausreichender Entfernung.\n \nHöher ist besser.", - L"\n \nWenn diese Eigenschaft in Kraft ist, dann produziert die Waffe kein sichtbares Mündungsfeuer\nwenn abgefeuert.\n \nFeinde werden Sie nicht bloß beim Mündungsfeuer ausfindig machen können\n(aber Sie können Sie dennoch hören).", - L"\n \nBestimmt die Entfernung (in Felder) der erzeugten Lautstärke,\nwenn die Waffe geschossen wird.\n \nFeinde innerhalb dieser Entfernung hören den Schuss, Feinde außerhalb nicht.\n \nNiedriger ist besser.", - L"\n \nBestimmt, wie schnell sich diese Waffe bei Gebrauch abnutzt.\n \nHöher ist besser.", - L"\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur Techniker und spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", - L"\n \nDie minimale Entfernung um einen Zielvorteil zu erhalten.", - L"\n \nTreffermodifikator den eine Laservorrichtung gewährleistet.", - L"\n \nDie Anzahl von APs nötig um die Waffe anzulegen.\n \nSobald die Waffe angelegt ist, können Sie wiederholt feuern ohne diese Kosten erneut zu bezahlen.\n \nEine Waffe ist automatisch abgelegt wenn der Anwender irgendeine andere Aktivität ausübt,\nmit der Ausnahme von schießen oder ausrichten.\n \nNiedriger ist besser.", - L"\n \nDie Anzahl von APs nötig um einen einzelnen Angriff mit dieser Waffe durchzuführen.\n \nFür Schusswaffen ist dies der Aufwand für einen Einzelschuss ohne extra Zielen.\n \nWenn das Symbol 'grau' erscheint sind Einzelschüsse nicht möglich.\n \nNiedriger ist besser.", - L"\n \nDie Anzahl von APs die für einen Feuerstoß benötigt werden.\n \nDie Anzahl der Geschosse welche mit jedem Feuerstoß abgefeuert werden hängt von der Waffe selbst ab,\nund ist angedeutet bei der Anzahl der Kugeln neben dem Symbol.\n \nWenn das Symbol 'grau' erscheint ist ein Feuerstoss nicht möglich.\n \nNiedriger ist besser.", - L"\n \nDie Anzahl von APs die für eine Autofeuer Salve von genau 3 Kugeln benötigt werden.\nWenn das Symbol 'grau' erscheint ist Autofeuer nicht möglich.\n \nNiedriger ist besser.", - L"\n \nDie Anzahl von APs die für das Nachladen benötigt werden.\n \nNiedriger ist besser.", - L"\n \nDie Anzahl von APs die für das repetieren der Waffe benötigt werden.\n \nNiedriger ist besser.", - L"", // No longer used! - L"\n \nDie absolute Reichweite mit der sich das Mündungsfeuer\nausbreitet für jede Kugel die geschossen wird,\nwenn keine Gegenmaßnahme angewendet wird.\n \nNiedriger ist besser.", // HEADROCK HAM 5: Altered to reflect unified number. - L"\n \nZeigt die Anzahl der Kugeln an, welche zu einer Autofeuer Salve für jeweils 5 investierte AP addiert werden.\n \nHöher ist besser.", - L"\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|S|c|h|u|t|z |W|e|r|t", - L"|F|l|ä|c|h|e|n|d|e|c|k|u|n|g", - L"|Z|e|r|f|a|l|l |R|a|t|e", - L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nDiese grundlegende Rüstungseigenschaft bestimmt wie viel\nSchaden abgefangen wird.\nZur Erinnerung: Schutzdurchschlagende Angriffe und einige\nzufällige Faktoren können die Schadensreduzierung verändern.\n \nHöher ist besser.", - L"\n \nBestimmt wie viel des geschützten\nKörperteils durch die Rüstung abgedeckt wird.\n \nWenn weniger als 100% verdeckt wird, haben Angriffe\neine gewisse Chance die Rüstung schlichtweg\nzu umgehen, und höchsten Schaden\nauf das verdeckte Körperteil auszuüben.\n \nHöher ist besser.", - L"\n \nBestimmt wie schnell der Zustand der Rüstung abfällt,\nwenn sie getroffen wird, im Verhältnis zum\nSchaden durch einen Angriff.\n \nNiedriger ist besser.", - L"\n \nBestimmt, wie schwierig es ist, die Rüstung\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur Techniker und spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", - L"\n \nBestimmt, wie schwierig es ist, die Rüstung\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|R|ü|s|t|u|n|g|s|d|u|r|c|h|s|c|h|l|a|g", - L"|K|u|g|e|l|s|t|u|r|z", - L"|E|x|p|l|o|s|i|o|n |v|o|r |E|i|n|s|c|h|l|a|g", - L"|T|e|m|p|e|r|a|t|u|r |M|o|d|i|f|i|k|a|t|o|r", - L"|G|i|f|t|-|I|n|d|i|k|a|t|o|r", - L"|S|c|h|m|u|t|z |M|o|d|i|f|i|k|a|t|o|r", -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nDas ist die Fähigkeit der Kugel, in die Rüstung\neines Ziels einzudringen.\n \nWenn der Wert kleiner als 1.0 ist, reduziert die Kugel \nverhältnismäßig den Schutz jeglicher Rüstung auf die sie eintrifft.\n \nIst der Wert grösser als 1.0, tritt die Kugel weniger tief in die Rüstung des Ziels ein.\n \nKleiner ist besser.", - L"\n \nBestimmt eine verhältnismäßige Zunahme des Schadenspotentials,\nsobald die Kugel die Rüstung des Ziels\ndurchbricht und den Körper dahinter trifft.\n \nWerte über 1.0 erhöhen, Werte unter 1.0 reduzieren das Schadenspotential\nder durchbrochenen Kugel.\n \nHöher ist besser.", - L"\n \nEin Multiplikator zum Schadenspotential der Kugel,\nder vor dem Treffen des Zieles angewandt wird.\n \nWerte über 1.0 erhöhen, Werte unter 1.0 reduzieren den Schaden.\n \nHöher ist besser.", - L"\n \nProzentuale zusätzliche Hitze\ndurch diese Munitionsart.\n \nNiedriger ist besser.", - L"\n \nGibt die Anzahl in Prozent an,\nob der eingetretene Schaden einer Kugel auch eine Vergiftung verursacht.", - L"\n \nZusätzlicher Schmutz der entsteht durch diese Munition.\n \nNiedriger ist besser.", -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|S|c|h|a|d|e|n", - L"|B|e|t|ä|u|b|u|n|g|s|s|c|h|a|d|e|n", - L"|E|x|p|l|o|d|i|e|r|t |b|e|i|m |A|u|f|p|r|a|l|l", // HEADROCK HAM 5 - L"|R|a|d|i|u|s|-|D|r|u|c|k|w|e|l|l|e", - L"|R|a|d|i|u|s|-|B|e|t|ä|u|b|u|n|g|s|s|c|h|a|d|e|n", - L"|R|a|d|i|u|s|-|G|e|r|ä|u|s|c|h", - L"|S|t|a|r|t|r|a|d|i|u|s|-|T|r|ä|n|e|n|g|a|s", - L"|S|t|a|r|t|r|a|d|i|u|s|-|S|e|n|f|g|a|s", - L"|S|t|a|r|t|r|a|d|i|u|s|-|L|i|c|h|t", - L"|S|t|a|r|t|r|a|d|i|u|s|-|R|a|u|c|h", - L"|S|t|a|r|t|r|a|d|i|u|s|-|F|e|u|e|r", - L"|E|n|d|r|a|d|i|u|s|-|T|r|ä|n|e|n|g|a|s", - L"|E|n|d|r|a|d|i|u|s|-|S|e|n|f|g|a|s", - L"|E|n|d|r|a|d|i|u|s|-|L|i|c|h|t", - L"|E|n|d|r|a|d|i|u|s|-|R|a|u|c|h", - L"|E|n|d|r|a|d|i|u|s|-|F|e|u|e|r ", - L"|Z|e|i|t|d|a|u|e|r", - // HEADROCK HAM 5: Fragmentation - L"|A|n|z|a|h|l |a|n |F|r|a|g|m|e|n|t|e|n", - L"|S|c|h|a|d|e|n |p|r|o |F|r|a|g|m|e|n|t", - L"|F|r|a|g|m|e|n|t |R|e|i|c|h|w|e|i|t|e", - // HEADROCK HAM 5: End Fragmentations - L"|L|a|u|t|s|t|ä|r|k|e", - L"|U|n|b|e|s|t|ä|n|d|i|g|k|e|i|t", - L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nDer Schaden der durch diesen Sprengstoff\nverursacht wird.\n \nAnmerkung: Sprengstoffe die in einer Druckwelle explodieren liefern\nnur einmal Schaden (dann wenn Sie explodieren), während anhaltend wirkende\nSprengstoffe rundenübergreifend Schaden bis die Wirkung nachlässt.\n \nHöher ist besser.", - L"\n \nDer Betäubungschaden (nicht tödlich) der durch diesen\nSprengstoff verursacht wird.\n \nAnmerkung: Sprengstoffe die in einer Druckwelle explodieren liefern\nnur einmal Schaden (dann wenn Sie explodieren), während anhaltend wirkende\nSprengstoffe rundenübergreifend Schaden bis die Wirkung nachlässt.\n \nHöher ist besser.", - L"\n \nDieser Sprengstoff wird sobald er ein Hindernis\ntrifft explodieren (und nicht vorher noch abprallen).", // HEADROCK HAM 5 - L"\n \nDas ist der Radius der Explosionswelle den dieser\nSprengstoff hervorruft.\n \nZiele werden weniger Schaden erleiden desto weiter entfernt\nsie von der Mitte der Explosion sind.\n \nHöher ist besser.", - L"\n \nDas ist der Radius des Betäubungsschlags den dieser\nSprengstoff hervorruft.\n \nZiele werden weniger Schaden erleiden desto weiter entfernt\nsie von der Mitte der Explosion sind.\n \nHöher ist besser.", - L"\n \nDie Entfernung die das Geräusch der Explosion\nzurücklegen wird. Soldaten innerhalb der Entfernung \nsind fähig das Geräusch zu hören und werden gewarnt.\n \nHöher ist besser.", - L"\n \nDas ist der Startradius des Tränengas\nder durch diesen Sprengstoff freigesetzt wird.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Betäubungsschaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer der Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Startradius des Senfgas\nder durch diesen Sprengstoff freigesetzt wird.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer der Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Startradius des Lichts\nder durch den Sprengstoff freigesetzt wird.\n \nFelder in der Nähe der Wirkung leuchten \nsehr hell, Felder nahe zum Rand\nsind nur ein weniger heller als normal.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nZur Erinnerung: Im Unterschied zu anderen Sprengstoffen mit\nzietlich festgelegter Wirkung, wird die Wirkung des Lichts nach einiger\nZeit weniger, bis es verschwindet.\n \nHöher ist besser.", - L"\n \nDas ist der Startradius des Rauchs\nder durch diesen Sprengstoff freigesetzt wird.\n \nJeder innerhalb der Rauchwolke wird sehr schwer zu erkennen,\nund verliert ein ganzes Stück Sichtweite.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Startradius der Flammen\ndie durch den Sprengstoff freigesetzt werden.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jeden Zug.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Endradius den das Tränengas durch den\nSprengstoff vor dem Verschwinden freisetzt.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Betäubungsschaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Endradius den das Senfgas durch den\nSprengstoff vor dem Verschwinden freisetzt.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Endradius des Lichts der durch\nden Sprengstoff freigesetzt wird bevor er verschwindet.\n \nFelder in der Nähe der Wirkung leuchten \nsehr hell, Felder nah zum Rand\nsind nur ein weniger heller als normal.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nZur Erinnerung: Im Unterschied zu anderen Sprengstoffen mit\nzietlich festgelegter Wirkung, wird die Wirkung des Lichts nach einiger\nZeit weniger, bis es verschwindet.\n \nHöher ist besser.", - L"\n \nDas ist der Endradius den das Rauchs durch den\nSprengstoff vor dem Verschwinden freisetzt.\n \nJeder innerhalb der Rauchwolke ist sehr schwer zu erkennen,\nund verliert ein ganzes Stück Sichtweite.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist der Endradius den die Flammen dieses\nSprengstoffs einnehmen, bevor sie verschwinden.\n \nFeinde, die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jede Runde.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", - L"\n \nDas ist die Wirkungsdauer des Sprengstoffs.\n \nJeden Zug wird der Wirkungsradius wachsen, \nein Feld in jede Richtung, bis\nder angegebene Endradius erreicht ist.\n \nWird die maximale Dauer erreicht, verschwindet\ndie Wirkung vollständig.\n \nLicht freigesetzt durch Sprengstoffe\nnimmt ab, im Unterschied zu anderen Wirkungen.\n \nHöher ist besser.", - // HEADROCK HAM 5: Fragmentation - L"\n \nDies ist die Anzahl an Fragementen die von der\nExplosion ausgestoßen werden.\n \nDie Fragmente verhalten sich ähnlich wie Kugeln und können jeden treffen\nder sich nahe genug an der Explosion aufhält.\n \nHöher ist besser.", - L"\n \nDer potenzielle Schaden welcher durch die\nExplosion der ausgestoßenen Fragemente verursacht wird.\n \nHöher ist besser.", - L"\n \nDas ist die durchschnittliche Reichweite welche\ndie Fragmente einer Explosion fliegen können.\n \nEinige dieser Fragmente können jedoch weiter oder weniger weit fliegen.\n \nHöher ist besser.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nDie Reichweite in Feldern\nin der Feinde und Söldner die Explosion wahrnehmen.\n \nFeinde die die Explosion hören werden alarmiert.\n \nNiedriger ist besser.", - L"\n \nDieser Wert (außerhalb von 100) stellt eine Möglichkeit für den\nSprengstoff dar, spontan zu explodieren wenn er Schaden nimmt\n(z.B. durch Explosionen in der Nähe).\n \nDas Mitführen empfindlicher Sprengstoffe innerhalb des Kampfs\nist deshalb extrem riskant und sollte vermieden werden.\n \nSkala: 0-100.\nNiedriger ist besser.", - L"\n \nBestimmt, wie schwierig es ist, diesen Sprengsatz zu reparieren.\n \ngrün = Jeder kann ihn reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", - L"|V|e|r|f|ü|g|b|a|r|e|r |P|l|a|t|z", - L"|P|l|a|t|z|b|e|d|a|r|f", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nBestimmt, wie schwierig es ist, diesen Gegenstand zu reparieren.\n \ngrün = Jeder kann ihn reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", - L"\n \nBestimmt, wieviel Platz dieser MOLLE Träger für Taschen bietet.\n \nHöher ist besser.", - L"\n \nBestimmt, wieviel Platz diese Tasche auf einem MOLLE Träger einnimmt.\n \nNiedriger ist besser.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|L|e|u|c|h|t|s|p|u|r|m|u|n|i|t|i|o|n", - L"|A|n|t|i|-|P|a|n|z|e|r M|u|n|i|t|i|o|n", - L"|I|g|n|o|r|i|e|r|t |S|c|h|u|t|z", - L"|S|ä|u|r|e|h|a|l|t|i|g|e |M|u|n|i|t|i|o|n", - L"|T|ü|r|z|e|r|s|c|h|l|a|g|e|n|d|e |M|u|n|i|t|i|o|n", - L"|W|i|d|e|r|s|t|a|n|d|s|f|ä|h|i|g|k|e|i|t |g|e|g|e|n |S|p|r|e|n|g|s|t|o|f|f|e", - L"|W|a|s|s|e|r|s|i|c|h|e|r", - L"|E|le|k|t|r|o|n|i|k", - L"|G|a|s|m|a|s|k|e", - L"|B|e|n|ö|t|i|g|t |B|a|t|t|e|r|i|e|n", - L"|K|a|n|n |S|c|h|l|ö|s|s|e|r |K|n|a|c|k|e|n", - L"|K|a|n|n |D|r|a|h|t |d|u|r|c|h|t|r|e|n|n|e|n", - L"|K|a|n|n |S|c|h|l|ö|s|s|e|r |z|e|r|b|r|e|c|h|e|n", - L"|M|e|t|a|l|l|d|e|t|e|k|t|o|r", - L"|F|e|r|n|a|u|s|l|ö|s|e|r", - L"|F|e|r|n|z|ü|n|d|e|r", - L"|Z|e|i|t|z|ü|n|d|e|r", - L"|E|n|t|h|ä|l|t |B|e|n|z|i|n", - L"|W|e|r|k|z|e|u|g|k|a|s|t|e|n", - L"|W|ä|r|m|e|s|i|c|h|t", - L"|R|ö|n|t|g|e|n|g|e|r|ä|t", - L"|E|n|t|h|ä|l|t |D|r|i|n|k|w|a|s|s|e|r", - L"|E|n|t|h|ä|l|t |A|l|k|o|h|o|l", - L"|E|r|s|t|e|-|H|i|l|f|e|-|K|a|s|t|e|n", - L"|A|r|z|t|t|a|s|c|h|e", - L"|T|ü|r|s|p|r|e|n|g|s|a|t|z", - L"|W|a|s|s|e|r", - L"|N|a|h|r|u|n|g", - L"|M|u|n|i|t|i|o|n|s|g|u|r|t", - L"|M|u|n|i|t|i|o|n|s|w|e|s|t|e", - L"|E|n|t|s|c|h|ä|r|f|u|n|g|s|a|u|s|r|ü|s|t|u|n|g", - L"|V|e|r|d|e|c|k|t|e |G|e|g|e|n|s|t|a|n|d", - L"|K|a|n|n |n|i|c|h|t |b|e|s|c|h|ä|d|i|g|t |w|e|r|d|e|n", - L"|M|a|d|e |o|f |M|e|t|a|l", - L"|S|i|n|k|s", - L"|T|w|o|-|H|a|n|d|e|d", - L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", - L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate - L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|S|c|h|i||l|d", - L"|K|a|m|e|r|a", - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|B|l|u|t|b|e|u|t|e|l |(|l|e|e|r|)", - L"|B|l|u|t|b|e|u|t|e|l", // 44 - L"|W|i|d|e|r|s|t|a|n|d|s|f|ä|h|i|g|k|e|i|t |g|e|g|e|n |F|e|u|e|r", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nDiese Munition lässt eine Leuchtwirkung entstehen wenn sie abgefeuert wird.\n \nLeuchtfeuer hilft Salven genauer zu kontrollieren.\n \nLeuchtpatronen geben die Position bei Tag/Nacht preis\n \nund deaktivieren Gegenstände\ndie Mündungsfeuer unterdrücken.", - L"\n \nDiese Munition kann einen Panzer beschädigen.\n \nMunition ohne diese Eigenschaft bewirkt keinen Schaden\nan Panzern.", - L"\n \nDiese Munition ignoriert die Rüstung vollständig.\n \nDas bewirkt das eine geschützte Person\nbehandelt wird als hätte sie keine Rüstung!", - L"\n \nWenn diese Munition auf ein Ziel trifft,\nwird dessen Schutz dadurch schnell verschlechtert.\n \nMöglicherweise wird ein Ziel dadurch durch seinen eigenen Schutz getrennt!", - L"\n \nDiese Munitionstyp ist ausnahmslos im zerstören von Schlössern.\n \nDirekt auf eine verschlossene Tür oder einen Behälter\ngefeuert richtet er enormen Schaden an.", - L"\n \nDieser Schutz ist dreifach resistent\ngegen Sprengstoffe als es durch seinen gegebenen\nSchutzwert ersichtlich ist.\n \nWenn ein Sprengstoff den Schutz trifft, wird sein Schutzwert verdreifach.", - L"\n \nDieser Gegenstand ist gegen Wasser immun. Nicht aber,\nwenn er Schaden nimmt und untertaucht.\n \nGegenstände ohne diese Eigenschaft verschlechtern sich allmählich,\nwenn die Person sie zum Schwimmen mitnimmt.", - L"\n \nDieser Gegenstand ist Elektronik pur und beinhaltet\nkomplexe Schaltungen.\n \nElektronische Gegenstände sind von Natur aus schwer\nzu reparieren noch schwieriger ohne elektronische Fähigkeiten.", - L"\n \nWenn dieser Gegenstand am Gesicht der Person getragen wird,\nwird Sie von allen schädlichen Gasen beschützt.\n \nEinige Gase sind ätzend und können sich\ndurch die Gasmaske fressen!", - L"\n \nDieser Gegenstand benötigt Batterien. Ohne Batterien,\nkönnen seine primären Fähigkeiten nicht aktiviert werden.\n \nUm seine Fähigkeiten zu aktivieren\nbefestige Batterien an ihm.", - L"\n \nDieser Gegenstand kann kann dazu benutzt werden verschlossene\nTüren oder Behälter zu öffnen.\n \nSchlösser knacken ist leise, doch es benötigt\nreichlich technische Fähigkeiten \nauch für die einfachsten Schlösser. Dieser Gegenstand ändert\ndie Fähigkeit Schlösser zu knacken um ", //JMich_SkillsModifiers: needs to be followed by a number - L"\n \nDieser Gegenstand kann dazu benutzt werden Zäune zu zertrennen.\n \nDas ermöglicht einer Person schnell in abgezäuntes Gebiet\neinzudringen und den Feind möglicherweise zu überraschen!", - L"\n \nDieser Gegenstand kann kann zum zerschlagen von verschlossenen\nTüren oder Behälter benutzt werden.\n \nDas Zerschlagen von Schlössern benötigt reichlich Stärke,\nerzeugt eine Menge Lärm und bringt\neine Person schnell zur Ermüdung. Jedoch ist eine guter\nWeg hinter verschlossenes zu gelagen ohne\nhöhere Fertigkeiten oder\nkomplizierte Werkzeuge zu besitzen. Dieser Gegenstand steigert \ndie Wahrscheinlichkeit um ", //JMich_SkillsModifiers: needs to be followed by a number - L"\n \nDieser Gegenstand kann metallische Objekte\nim Boden aufspüren.\n \nSeine Funktion ist das aufspüren\nvon Minen ohne die nötigen Fähigkeiten zu besitzen diese\nmit blosen Auge zu erkennen.\n \nVielleicht finden Sie aber auch vergrabene Schätze.", - L"\n \nDieser Gegenstand kann dazu benutzt werden eine Bombe\nwelche mit einem Fernzünder versehen wurde zu zünden.\n \nZu erst setzt die Bombe, dann benutze den\nFernauslöer um sie zu zünden wenn\ndie richtige Zeit ist.", - L"\n \nWenn an einer Sprengstoffeinheit angebracht und eingestellt\n kann der Zünder durch eine\n separate Fernsteuerung ausgelöst werden.\n \nFernzünder sind bestens geeignet um Fallen zu stellen,\nweil Sie erst dann explodieren wenn sie es sollen.\n \nDarüber hinaus hat man genüge Zeit in Deckung zu gehen!", - L"\n \nWenn an einer Sprengstoffeinheit angebracht und eingestellt\n zählt der Zünder von der eingegeben\nMenge an Zeit nach unten und explodiert \nwenn die Zeit abgelaufen ist.\n \nZeitzünder sind billig und einfach zu Installieren,\naber sie müssen so eingestellt werden umd\nsich selbst rechtzeitig in Deckung zu bringen!", - L"\n \nDieser Gegenstand enthält Benzin.\n \nEs könnte praktisch sein\nwenn man einen Benzintank findet.", - L"\n \nDieser Gegenstand enthält verschiedene Gerätschaften die dazu\nbenutzt werden können andere Gegenstände zu reparieren.\n \nEin Werkzeugkasten wird dafür benötigt, wenn \neinem Söldner die Aufgabe Reparieren zugewiesen wird. Dieser Gegenstand ändert\ndie Effektivität der Reperatur um ", //JMich_SkillsModifiers: need to be followed by a number - L"\n \nWenn ans Gesicht angebracht, bietet der Gegenstand die Möglichkeit\nPersonen durch Wände zu sehen,\ndank ihrer Wärmestrahlung.", - L"\n \nDieses mächtige Gerät kann dazu benutzt werden\nnach Personen zu suchen.\n \nEs zeigt alle Personen innerhalb eines bestimmten Radius\nfür einen kurzen Zeitraum.\n \nVon Geschlechtsorganen fernhalten!", - L"\n \nDieser Gegenstand enthält frisches Wasser.\nGebrauchen Sie es wenn Sie durstig sind.", - L"\n \nDieser Gegenstand enthält Spirituosen, Alkohol, Schnaps\noder was immer Sie sich einbilden.\n \nMit Vorsicht zu genießen! Kein Alkohol am Steuer!\nKann ihrer Leber schaden!", - L"\n \nDas ist ein Erste-Hilfe-Kasten der\nGegenstände enthält die einfache medizinische Hilfe bieten.\n \nEr kann dazu benutzt werden verwundetet Personen zu bandagieren\nund Blutungen zu stoppen.\n \nFür richtige Heilung, benutze eine Arzttasche\nund/oder reichlich Ruhe.", - L"\n \nDas ist eine Arzttasche, die für\nOperationen und andere gravierende medizinische\nZwecke genutzt werden kann.\n \nEine Arzttasche wird dazu benötigt\neinem Söldner die Aufgabe Doktor zu geben.", - L"\n \nDieser Gegenstand kann dazu benutzt werden verschlossene\nTüren/Behälter zu sprengen.\n \nExplosionsfertigkeit ist erforderlich um\nvorzeitige Detonationen zu vermeiden.\n \nSchlösser zu sprengen ist der einfache Weg um schnell\ndurch verschlossene Türen/Behälter zu kommen. Wie auch immer,\nes ist laut und für die meisten Personen gefährlich.", - L"\n \nMan kann das trinken.", - L"\n \nMan kann das essen.", - L"\n \nEin externer Munitionsgurt für MGs.", - L"\n \nIn diese Weste passen auch Munitionsgurte.", - L"\n \nDieser Gegenstand verbessert die Chance Fallen zu entschärfen um ", - L"\n \nDieser Gegenstand und alles was daran angebracht/enthalten ist\nwird von neugierigen Augen verborgen bleiben.", - L"\n \nDieser Gegenstand kann nicht beschädigt werden.", - L"\n \nDieser Gegenstand ist aus Metall.\nEr nimmt weniger Schaden als andere Gegenstände.", - L"\n \nDieser Gegenstand versinkt in Wasser.", - L"\n \nDieser Gegenstand muß mit beiden Händen benutzt werden.", - L"\n \nDieser Gegenstand verhindert die Verwendung von Kimme und Korn.", - L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate - L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", - L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", - L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate - L"\n \nYou can take photos with this.", // TODO.Translate - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate - L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|n|a|u|i|g|k|e|i|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|M|o|m|e|n|t|a|u|f|n|a|h|m|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|M|o|m|e|n|t|a|u|f|n|a|h|m|e|-|P|r|o|z|e|n|t|u|e|l|l", - L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|e|n|-|P|r|o|z|e|n|t|u|e|l|l", - L"|M|o|d|i|f|i|k|a|t|o|r |- |E|r|l|a|u|b|t|e |Z|i|e|l|g|e|n|a|u|i|g|k|e|i|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|k|a|p|a|z|i|t|ä|t", - L"|M|o|d|i|f|i|k|a|t|o|r |- |W|a|f|f|e|n|h|a|n|d|h|a|b|u|n|g", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|b|s|e|n|k|u|n|g|s|k|o|m|p|e|n|s|i|e|r|u|n|g", - L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|a|u|f|s|p|ü|r|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|c|h|a|d|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|M|e|s|s|e|r|s|c|h|a|d|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|E|n|t|f|e|r|nu|n|g", - L"|F|a|k|t|o|r|-|V|e|r|g|ö|ß|e|r|u|n|g", - L"|F|a|k|t|o|r|-|V|e|r|b|r|e|i|t|e|r|u|n|g", - L"|M|o|d|i|f|i|k|a|t|o|r|-|R|ü|c|k|s|t|o|ß|-|H|o|r|i|z|o|n|t|a|l", - L"|M|o|d|i|f|i|k|a|t|o|r|-|R|ü|c|k|s|t|o|ß |- |V|e|r|t|i|k|a|l", - L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|w|i|r|k|e|n|-|M|a|x|i|m|u|m", - L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|w|i|r|k|e|n|-|G|e|n|a|u|i|g|k|e|i|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|w|i|r|k|e|n|-|H|ä|u|f|i|g|k|e|i|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|T|o|t|a|l", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|A|n|l|e|g|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|E|i|n|z|e|l|s|c|h|u|s|s", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|F|e|u|e|r|s|t|o|ß", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|A|u|t|o|f|e|u|e|r", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|N|a|c|h|l|a|d|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|M|a|g|a|z|i|n|g|r|ö|ß|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|F|e|u|e|r|s|t|o|ß|g|r|ö|ß|e", - L"|U|n|t|e|r|d|r|ü|c|k|t|e|s |M|ü|n|d|u|n|g|s|f|e|u|e|r", - L"|M|o|d|i|f|i|k|a|t|o|r|-|L|a|u|t|s|t|ä|r|k|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|s|t|a|n|d|g|r|ö|ß|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|u|v|e|r|l|ä|s|s|i|g|k|e|i|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|W|a|l|d", - L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|S|t|a|d|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|W|ü|s|t|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|S|c|h|n|e|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|c|h|l|e|i|c|h|e|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|H|ö|r|w|e|i|t|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|A|l|l|g|e|m|e|i|n", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|N|a|c|h|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|T|a|g", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|H|e|l|l|e|s |L|i|c|h|t", - L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|U|n|t|e|r|g|r|u|n|d", - L"|T|u|n|n|e|l|s|i|c|h|t", - L"|G|e|g|e|n|w|i|r|k|e|n|-|M|a|x|i|m|u|m", - L"|G|e|g|e|n|w|i|r|k|e|n|-|H|ä|u|f|i|g|k|e|i|t", - L"|T|r|e|f|f|e|r|b|o|n|u|s", - L"|Z|i|e|l|b|o|n|u|s", - L"|E|r|z|e|u|g|t|e |H|i|t|z|e", - L"|A|b|k|ü|h|l|f|a|k|t|o|r", - L"|L|a|d|e|h|e|m|m|u|n|g|s|s|c|h|r|a|n|k|e", - L"|H|i|t|z|e|s|c|h|a|d|e|n|s|s|c|h|r|a|n|k|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|E|r|z|e|u|g|t|e |H|i|t|z|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|A|b|k|ü|h|l|f|a|k|t|o|r", - L"|M|o|d|i|f|i|k|a|t|o|r|-|L|a|d|e|h|e|m|m|u|n|g|s|s|c|h|r|a|n|k|e", - L"|M|o|d|i|f|i|k|a|t|o|r|-|H|i|t|z|e|s|c|h|a|d|e|n|s|s|c|h|r|a|n|k|e", - L"|G|i|f|t|-|I|n|d|i|k|a|t|o|r", - L"|S|c|h|m|u|t|z |M|o|d|i|f|i|k|a|t|o|r", - L"|G|i|f|t|i|g|k|e|i|t", - L"|N|a|h|r|u|n|g|s |P|u|n|k|t|e", - L"|T|r|i|n|k |P|u|n|k|t|e", - L"|P|o|r|t|i|o|n|s |G|r|ö|s|s|e", - L"|M|o|r|a|l |M|o|d|i|f|i|k|a|t|o|r", - 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 - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", // TODO.Translate -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -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.", - L"\n \nDieser Gegenstand verändert die Genauigkeit\nfür jede Art von Feuermodus für diese Fernwaffe um den angegebenen Prozentsatz mit Bezug auf die ursprünglichen Genauigkeit.\n \nMaßstab: -100 bis +100.\nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Genauigkeit,\nwelche die Waffe mit jedem zusätzlichen Punkt durch genaueres Zielen erhält um den genannten Wert.\n \nMaßstab: -100 bis +100.\nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Genauigkeit,\ndie die Waffe mit jedem zusätzlichen Punkt durch genaueres Zielen erhält um den genannten Prozentsatz der ursprünglichen Genauigkeit.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Anzahl der möglichen zusätzlichen Zielpunkte dieser Waffe. \n \nEine niedrigere Anzahl von möglichen zusätzlichen Zielpunkten bedeutet,\n daß jeder Zielpunkt proportional mehr Genauigkeit zum Schuss beiträgt.\n\nDies bedeutet, das weniger mögliche zusätzliche Zielpunkte ein schnelleres Zielen mit dieser Waffen erlauben, ohne die Genauigkeit zu reduzieren!\n \nNiedriger ist besser.", - L"\n \nDieser Gengenstand verändert den Höchstwert für Genauigkeit des Schützen mit Fernwaffen\num den angegebenen Prozentsatz seiner ursprünglichen maximalen Genauigkeit.\n \nHöher ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Schwierigkeit der Handhabung der Waffe.\nEine bessere Handhabung macht die Waffe genauer zu feuern; mit oder ohne zusätzliches Zielen.\n Der Wert bezieht sich dabei auf den ursprüngliche Handhabungs-Wert der Waffe,\nwelcher höher ist für Gewehre und schwere Waffen,\nund niedriger bei Pistolen und leichten Waffen.\n \nNiedriger ist besser", - L"\n \nDieser Gegenstand verändert die Schwierigkeit,\nmit einer Waffe auch jenseits ihrer effektiven Reichweite zu treffen.\n \nEin hoher Wert kann durchaus\ndie tatsächliche effektive Reichweite dieser Waffe\num einige Felder verlängern.\nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Schwierigkeit,\nein sich bewegendes Ziel zu treffen.\nEin hoher Wert kann es einfacher machen,\nsich bewegende Ziele auch in großer Entfernung zu treffen.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand verändert den Schaden,\nwelchen diese Waffe anrichtet.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand verändert den Schaden,\nden eine Handwaffe anrichtet, um den angegebenen Wert.\n \n Dies bezieht sich sowohl auf Klingen als auch auf Schlagwaffen.\n \nHöher ist besser", - L"\n \nWenn befestigt an einer Fernwaffe verändert\ndieser Gegenstand die größte effektive Reichweite.\n \nDie größte effektive Reichweite bestimmt,\nwie weit eine Kugel fliegt, bevor sie schnell in Richtung Boden fällt.\n \nHöher ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe bietet\ndieser Gegenstand eine zusätzlich Zielvergrößerung an,\nwas Schüsse auf große Entfernung vergleichsweise einfacher macht.\n \nEin hoher Vergrößerungsfaktor wirkt sich allerdings nachteilig aus\nbei Zielen, die näher als die optimale Entfernung sind.\n\nHöher ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe blendet\ndieser Gegenstand einen Punkt über das Ziel ein,\nwas das Treffen deutlich vereinfacht.\n\nDieser Effekt ist nur bis zu einer bestimmten Entfernung nützlich, darüber hinaus vermindert und schließlich verschwindet der Effekt.\n \nHöher ist besser.", - L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand den horizontalen Rückstoß um den genannten Wert.\n\n Ein geringerer Rückstoß macht es einfacher, die Waffe im Dauerfeuer auf das Ziel gerichtet zu halten.\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand den vertikalen Rückstoß um den genannten Wert.\n\n Ein geringerer Rückstoß macht es einfacher, die Waffe im Dauerfeuer auf das Ziel gerichtet zu halten.\n \nNiedriger ist besser.", - L"\n \nDieser Gegenstand verändert die Fähigkeit des Schützen,\nseine Waffe im Feuerstoß oder Dauerfeuer unter Kontrolle zu behalten.\n\n Ein hoher Wert kann auch körperlich schwachen Schützen helfen, Waffen mit starkem Rückstoß zu kontrollieren. \n \nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Fähigkeit des Schützen,\ndem Rückstoß der Waffe im Feuerstoß oder Dauerfeuer wirksam entgegenzuwirken.\n\n Ein hoher Wert erlaubt dem Schützen,\n die Waffe besser auf das Ziel auszurichten,\n was im Ergebnis die Genauigkeit von Feuerstößen erhöht. \n \nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Fähigkeit des Schützen,\ndie Kraft, welche er benötigt, um dem Rückstoß im Feuerstoß oder Dauerfeuer entgegenzuwirken, öfter anzupassen.\n\n Ein höherer Wert macht Feuerstöße generell genauer,\n insbesondere lange Feuerstöße,\nvorausgesetzt, der Schütze kann dem Rückstoß wirksam entgegenwirken. \n \nHöher ist besser.", - L"\n \nDieser Gegenstand verändert die Anzahl der Aktionspunkte,\nwelche der Charakter zu Beginn jeder Runde bekommt. \n \nHöher ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie benötigt werden,\num die Waffe in Anschlag zu bringen.\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an irgendeiner Waffe verändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie für einen Angriff mit der Waffe benötigt werden.\n\n Dies bezieht sich auch auf Feuerstoß oder Dauerfeuer fähige Waffen.\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie für die Abgabe eines Feuerstoßes benötigt werden.\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie für das Schießen im Dauerfeuer Modus benötigt werden.\n\n Dies bezieht sich allerdings nicht auf die AP, die benötigt werden,\num zusätzliche Schüsse im Feuerstoß abzugeben. .\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie benötigt werden, um die Waffe zu laden.\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand\ndie Magazinkapazität von Magazinen welche in die Waffe geladen werden können. \n \nHöher ist besser.", - L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Anzahl der Kugeln,\ndie pro Feuerstoß abgegeben werden.\n\n Wenn die Waffe ursprünglich nicht für Feuerstöße angelegt war,\nkann ein positiver Faktor die Abgabe von Feuerstößen ermöglichen.\n\nIm Gegensatz kann eine Waffe mit einer solchen Funktion diese bei einem entsprechend negativem Faktor verlieren. \n \nHöher ist - gewöhnlich – besser. Allerdings ist Munitionssparen ein Grund für kontrollierte Feuerstöße.", - L"\n \nAn die Waffe angebracht beeinflusst der Gegenstand\nein Verbergen des Mündungsfeuers.\n \nDadruch wird es schwieriger den Schützen zu entdecken.", - L"\n \nAn die Waffe angebracht beeinflusst der Gegenstand\ndie Lautstärke der Waffe.\n \nNiedriger ist besser.", - L"\n \nDieser Gegenstand beeinflusst die Größe des Gegenstands\nan den er angebracht ist.\n \nDie Größe des Gegenstands bestimmt wie oft und worin er\nbefördert werden kann.\n \nNiedriger ist besser.", - L"\n \nAn die Waffe angebracht beeinflusst der Gegenstand\nden Zuverlässigkeitswert.\n \nEin positiver Wert bewirkt ein verlangsamte,\nein negativer Wert eine verschnellert Verschlechterung.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Waldgebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Stadtgebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Wüstenebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", - 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 \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.", - L"\n \nDieser Gegenstand beeinflusst die Trefferchance\n, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", - L"\n \nDieser Gegenstand beeinflusst den Zielbonus\n, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", - L"\n \nEin Schuss erzeugt soviel Hitze. Munitionstypen und Anbauten können diesen Wert verändern.\n \nNiedriger ist besser.", - L"\n \nIn jedem Zug wird die Temperatur um diesen Wert gesenkt.\n \nHöher ist besser.", - L"\n \nWenn die Temperatur diesen Wert überschreitet, kommt es leichter zu Ladehemmungen.\n \nHöher ist besser.", - L"\n \nWenn die Temperatur diesen Wert überschreitet, wird der Gegenstand leichter beschädigt.\n \nHöher ist besser.", - L"\n \nErzeugte Hitze wird um diesen Prozentsatz erhöht.\n \nNiedriger ist besser.", - L"\n \nAbkühlung wird um diesen Prozentsatz erhöht.\n \nHöher ist besser.", - L"\n \nLadehemmungsschranke wird um diesen Prozentsatz erhöht.\n \nHöher ist besser.", - L"\n \nHitzeschadensschranke wird um diesen Prozentsatz erhöht.\n \nHöher is besser.", - L"\n \nDies ist der prozentuelle Schaden der durch\nden vergifteten Gegenstand verursacht wird.\n\nDieser Schaden hängt natürlich davon ab,\noder der Feind eine Gift-Resistenz hat oder nicht.", - L"\n \nEin einziger Schuss verursacht diesen Schmutz.\nUnterschiedliche Munition und Waffen-Anbauten\nkönnen diesen Wert verändern.\n \nNiedriger ist besser.", - L"\n \nDies zu Essen verursacht soviel Vergiftung.\n \nNiedriger ist besser.", - L"\n \nMenge an Energy in kcal.\n \nHöher ist besser.", - L"\n \nWasseranteil in Litern.\n \nHöher ist besser.", - 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"", - 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 - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", // TODO.Translate -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nDie Genauigkeit wurde verändert durch\nMunition, Erweiterungen oder inhärenter Fähigkeiten.\n \nErhöhte Genauigkeit erlaubt es Ziele die weiter entfernt sind\nöfter zu treffen, sofern \ngut gezielt wird.\n \nSkala: -100 bis +100.\nHöher ist besser.", - L"\n \nDie Waffe verändert die Genauigkeit des Schützen\nmit jedem Schuss durch den angegebenen Wert.\n \nSkala: -100 bis +100.\nHöher ist besser.", - L"\n \nDie Waffe verändert die Genauigkeit des Schützen\nmit jedem Schuss prozentual zur \nursprünglichen Genauigkeit des Schützen.\n \nHöher ist besser.", - L"\n \nDie Waffe verändert den Betrag an Genauigkeit\ndurch jedes zusätzlich investierte Ziellevel.\n \nSkala: -100 bis +100.\nHöher ist besser.", - L"\n \nDie Waffe verändert den Betrag an Genauigkeit\ndurch jedes zusätzlich investierte Ziellevel\nprozentual zur\nursprünglichen Genauigkeit des Schützen.\n \nHöher ist besser.", - L"\n \nDie Anzahl an zusätzlich erlaubter Ziellevel\nfür diese Waffe wurden geändert durch Munition,\nErweiterungen oder inhärenter Fähigkeiten.\nWird die Anzahl an Ziellevel reduziert, is das Zielen mit\nder Waffe schneller bei gleicher Genauigkeit.\n \nGleiches gilt für die Erhöhung der Anzahl an Ziellevel.\n \nNiedriger ist besser.", - L"\n \nDie Waffe ändert die maximale Genauigkeit des Schützen\nprozentual zu der ursprünglichen Genauigkeit des Schützen.\n \nHöher ist besser.", - L"\n \nErweiterungen oder inhärente Fähigkeiten der Waffe\nverändern ihr Handhabung.\n \nLeichtere Handhabung lässt die Waffe genauer werden.\n \nNiedriger ist besser.", - L"\n \nDie Fähigkeit Schüsse außerhalb\nder maximalen Reichweite zu gewährleisten wurde durch Erweiterungen\n oder inhärenter Fähigkeiten geändert.\n \nHöher ist besser.", - L"\n \nDie Fähigkeit entfernte, bewegende Ziele zu treffen\nwurde durch Erweiterungen\noder inhärenter Fähigkeiten geändert.\n \nHöher ist besser.", - L"\n \nDas Schadensergebnis wurde durch\nMunition oder Erweiterungen geändert.\n \nHöher ist besser.", - L"\n \nDer Messerschaden wurde durch\nErweiterungen oder inhärente Fähigkeiten geändert.\n \nHöher ist besser.", - L"\n \nDie maximale Reichweite wurde verbessert/verschlechtert durch Munition,\nErweiterungen oder inhärenter Fähigkeiten.\n \nHöher ist besser.", - L"\n \nWurde durch optische Vergrößerungen ausgerüstet,\num entfernte Ziele leichter zu treffen.\n \nZielen mit hoher Vergrößerungen außerhalb der optimalen Entfernung ist schädlich.\n \nHöher ist besser.", - L"\n \nMit einem Projektionsgerät ausgestattet\ndas einen Punkt (innerhalb der Reichweite) auf das Ziel projiziert\nund somit das Treffen erleichtert.\n \nHöher ist besser.", - L"\n \nDer horizontale Rückstoß wurde geändert\ndurch Munition, Erweiterungen oder inhärenter\nFähigkeiten.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin reduzierter Rückstoß erleichtert es bei einer Salve die\nMündung auf das Ziel zu richten!\n \nNiedriger ist besser.", - L"\n \nDer vertikale Rückstoß wurde geändert\ndurch Munition, Erweiterungen oder inhärenter\nFähigkeiten.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin reduzierter Rückstoß erleichtert es bei einer Salve die\nMündung auf das Ziel zu richten!.\n \nNiedriger ist besser.", - L"\n \nÄndert die Fertigkeit des Schützen, Rückstoß bei\nFeuerstoß-/Autofeuer zu bewältigen.\n \nEin hoher Wert hilft dem Schützen seine Waffe bei starkem Rückstoß\nzu kontrollieren selbst dann, wenn er wenig Kraft besitzt.\n \nHöher ist besser.", - L"\n \nÄndert die Fertigkeit des Schützen\nRückstöße genauer auszugleichen.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin hoher Wert hilft dem Schützen die Mündung der Waffe\nbei Salven genauer auf das Ziel zu richten.\n \nHöher ist besser.", - L"\n \nÄndert die Fertigkeit des Schützen\neinzuschätzen wie viel Kraft zum ausgleichen des Rückstoßes benötigt wird.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nHöhere Frequenzen machen Salven im ganzen genauer,\nlängere Salven werden genauer sofern\nder Schütze den Rückstoß bewältigen kann.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, ändert die Waffe die Menge an AP\ndie der Soldat zu Anfang einer Runde bekommt.\n \nHöher ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten zum Anlegen der Waffe\ngeändert.\n \nNiedriger ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für einen Einzelangriff\ngeändert.\n \nNiedriger ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für einen Feuerstoß\ngeändert.\n \nDies hat keine Wirkung bei Einzelschüssen!.\n \nNiedriger ist besser.", - L"\n \nDurch Munition, Erweiterung oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für eine Salve geändert.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nNiedriger ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für Nachladen geändert.\n \nNiedriger ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die größe der fassbaren Magazine geändert.\n \nHöher ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Anzahl der Patronen die abgefeuert werden\nkönnen geändert.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nentsteht kein Mündungsfeuer.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Lautstärke geändert. \n \nNiedriger ist besser.", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Waffengröße geändert. Die größe des Gegenstands bestimmt wie oft und worin er\nbefördert werden kann", - L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Zuverlässigkeit geändert.\n \nEin positiver Wert bewirkt ein verlangsamte,\nein negativer Wert eine vergröbert Verschlechterung.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Waldgebieten.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Stadtgebieten.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Wüstengebieten.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Schneegebieten.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, verändert sich\ndie Fähigkeit des Soldaten sich leise zu bewegen.\n \nHöher ist besser.", - L"\n \nWenn in der Hand gehalten, verändert sich\ndie Hörfähigkeit (in Felder) des Soldaten.\n \nHöher ist besser.", - L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser allgemeine Modifikator wirkt unter allen Bedingungen.\n \nHöher ist besser.", - L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Nachsicht-Modifikator wirk nur, wenn die Beleuchtung sehr niedrig ist.\n \nHigher is better.", - L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Tagsicht-Modifikator wird nur, wenn die Beleuchtung durchchnittlich öder höher ist.\n \nHöher ist besser.", - L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Hellighekits-Modifikator funktioniert nur, wenn die Beleuchtung extrem hell ist wie zum Beispiel bei Leuchtstäben.\n \nHöher ist besser.", - L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Höhlen-Modifikator wirkt nur im Dunkeln und unterirdisch.\n \nHöher ist besser.", - L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite.\n \nDie Seitensicht wird durch eine Art Tunnelblick eingegrenzt.\n \nHöher ist besser.", - L"\n \nDas ist die Fähigkeit des Schützen Rückstoß\nwährend der Feuerstoß-/Autofeuersalven zu bewältigen.\n \nHöher ist besser.", - L"\n \nDas ist die Fähigkeit des Schützen Rückstöße\ngenauer auszugleichen.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin hoher Wert hilft dem Schützen die Mündung der Waffe\nbei Salven genauer auf das Ziel zu richten.\n \nNiedriger ist besser.", - L"\n \nDer Treffer Modifikator wird verändert durch\nMunition, Erweiterungen oder eingebauter Attribute.\n \nEin erhöhter Treffer Modifikator erlaubt es entfernte Ziele\n öfter zu treffen sofern\nanständig gezielt wird.\n \nHöher ist besser.", - L"\n \nDer Zielbonus wird verändert durch\nMunition, Erweiterungen oder eingebauter Attribute.\n \nEin erhöhter Zielbonus erlaubt es entfernte Ziele\n öfter zu treffen sofern\nanständig gezielt wird.\n \nHöher ist besser.", - L"\n \nEin einziger Schuss dieser Waffe\nkann diese Hitze erzeugen.\nUnterschiedliche Munition kann diesen Wert beeinflussen.\n \nNiedriger ist besser.", - L"\n \nIn jeder Runde kühlt die Temperatur um diesen Wert ab.\nAnbauten an der Waffe können diesen Wert beinflussen.\n \nHöher ist besser.", - L"\n \nWenn die Temperatur der Waffe über diese Wert steigt,\nkann die Waffe leicht blockieren.", - L"\n \nWenn die Temperatur der Waffe über diesen Wert steigt,\nkann die Waffe Schaden davon tragen.", - L"\n \nDer horizontale Rückstoß wurde prozentual geändert\ndurch Munition, Erweiterungen oder inhärenter\nFähigkeiten.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin reduzierter Rückstoß erleichtert es bei einer Salve die\nMündung auf das Ziel zu richten!\n \nNiedriger ist besser.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"EINZEL", - L"AP", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -// TODO.Translate -STR16 gzMapInventorySortingMessage[] = -{ - L"Das Sortieren der Munition in Kisten im Sektor %c%d wurde fertiggestellt.", - L"Das Entfernen von Gegenstandsanbauten im Sektor %c%d wurde fertiggestellt.", - L"Das Entfernen von Munition der Waffen im Sektor %c%d wurde fertiggestellt.", - L"Das Stapeln und Zusammenführen von Gegenständen im Sektor %c%d wurde fertiggestellt.", - // Bob: new strings for emptying LBE items - L"Finished emptying LBE items in sector %c%d.", - L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Alle anzeigen", - L"Waffen", - L"Munition", - L"Sprengstoffe", - L"Nahkampfwaffen", - L"Rüstung", - L"LBE", - L"Ausrüstung", - L"Andere Gegenstände", - L"Alle ausblenden", -}; - -// TODO.Translate -STR16 gzMercCompare[] = -{ - L"???", - L"Base opinion:", - - L"Dislikes %s %s", - L"Likes %s %s", - - L"Strongly hates %s", - L"Hates %s", // 5 - - L"Deep racism against %s", - L"Racism against %s", - - L"Cares deeply about looks", - L"Cares about looks", - - L"Very sexist", // 10 - L"Sexist", - - L"Dislikes other background", - L"Dislikes other backgrounds", - - L"Past grievances", - L"____", // 15 - L"/", - L"* Opinion is always in [%d; %d]", // TODO.Translate -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = -{ - L"Temperatur ist ", - L"sehr niedrig", - L"niedrig", - L"mittel", - L"hoch", - L"sehr hoch", - L"gefährlich", - L"KRITISCH", - L"DRAMATISCH", - L"unbekannt", - L"." -}; - -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"Nahrung ist ", - L"frisch", - L"gut", - L"in Ordnung", - L"alt", - L"ranzig", - L"verdorben", - L"." -}; - -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Rekr. ", //ExpLevel 1 - L"Gfr. ", //ExpLevel 2 - L"Kpl. ", //ExpLevel 3 - L"Zgf. ", //ExpLevel 4 - L"Lt. ", //ExpLevel 5 - L"Hptm. ", //ExpLevel 6 - L"Mjr. ", //ExpLevel 7 - L"Bgdr. ", //ExpLevel 8 - L"GenLt. ", //ExpLevel 9 - L"Gen. " //ExpLevel 10 -}; - -// TODO.Translate -STR16 gzNewLaptopMessages[]= -{ - L"Ask about our special offer!", - L"Temporarily Unavailable", - L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Entfernung zum Ziel: %d Felder, Helligkeit: %d/%d", - L"Verbinden Sie den Transmitter mit Ihrem Laptop-Computer.", - L"Sie haben nicht genug Geld, um %s anzuheuern", - L"Das obenstehende Honorar deckt für einen begrenzten Zeitraum die Kosten der Gesamtmission, und schließt untenstehendes Equipment mit ein.", - L"Engagieren Sie %s jetzt und nutzen Sie den Vorteil unseres beispiellosen 'Ein Betrag für alles'-Honorars. Das persönliche Equipment des Söldners ist gratis in diesem Preis mit inbegriffen.", - L"Honorar", - L"Da ist noch jemand im Sektor...", - //L"Waffen-Rchwt.: %d Felder, Trefferwahrsch.: %d Prozent", - L"Deckung anzeigen", - L"Sichtfeld", - L"Neue Rekruten können dort nicht hinkommen.", - L"Da Ihr Laptop keinen Transmitter besitzt, können Sie keine neuen Teammitglieder anheuern. Vielleicht ist dies eine guter Zeitpunkt, ein gespeichertes Spiel zu laden oder ein neues zu starten!", - L"%s hört das Geräusch knirschenden Metalls unter Jerry hervordringen. Es klingt grässlich - die Antenne ihres Laptop-Computers ist zerstört.", //the %s is the name of a merc. @@@ Modified - L"Nach Ansehen des Hinweises, den Commander Morris hinterließ, erkennt %s eine einmalige Gelegenheit. Der Hinweis enthält Koordinaten für den Start von Raketen gegen verschiedene Städte in Arulco. Aber er enthält auch die Koordinaten des Startpunktes - der Raketenanlage.", - L"Das Kontroll-Board studierend, entdeckt %s, dass die Zahlen umgedreht werden könnten, so dass die Raketen diese Anlage selbst zerstören. %s muss nun einen Fluchtweg finden. Der Aufzug scheint die schnellstmögliche Route zu bieten...", //!!! The original reads: L"Noticing the control panel %s, figures the numbers can be reversed..." That sounds odd for me, but I think the comma is placed one word too late... (correct?) - L"Dies ist der IRONMAN-Modus und es kann nicht gespeichert werden, wenn sich Gegner in der Nähe befinden.", - L"(Kann während Kampf nicht speichern)", - L"Der Name der aktuellen Kampagne enthält mehr als 30 Buchstaben.", - L"Die aktuelle Kampagne kann nicht gefunden werden.", - L"Kampagne: Standard ( %S )", - L"Kampagne: %S", - L"Sie haben die Kampagne %S gewählt. Diese ist eine vom Spieler modifizierte Version der Originalkampagne von JA2UB. Möchten Sie die Kampagne %S spielen?", - L"Um den Editor zu benutzen, müssen Sie eine andere als die Standardkampgane auswählen.", - // anv: extra iron man modes - L"Das ist der SOFT IRONMAN-Modus und es kann während des taktischen Rundenkampfes nicht gespeichert werden.", - L"Das ist der EXTREME IRONMAN-Modus und es kann nur einmal am Tag gespeichert werden, um %02d:00.", -}; - -// The_bob : pocket popup text defs -STR16 gszPocketPopupText[]= -{ - L"Granatwerfer", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Raketenwerfer", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Hand- & Wurfwaffen", // POCKET_POPUP_MEELE_AND_THROWN - L"- keine passende Munition -", //POCKET_POPUP_NO_AMMO - L"- keine Waffen im Inventar -", //POCKET_POPUP_NO_GUNS - L"weitere...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features -STR16 szCovertTextStr[]= -{ - L"%s hat Feldtarnung!", - L"%s hat einen Rucksack!", - L"%s wurde gesichtet beim Tragen einer Leiche!", - L"%s's %s ist verdächtig!", - L"%s's %s ist eine militärische Ausrüstung!", - L"%s trägt zu viele Waffen!", - L"%s's %s ist zu fortgeschritten für einen %s Soldat!", - L"%s's %s hat zu viele Anbauten!", - L"%s wurde gesichtet bei verdächtigen Handlungen!", - L"%s schaut nicht wie ein Zivilist aus!", - L"%s Blutung wurde entdeckt!", - L"%s ist betrunken und verhält sich deshalb nicht wie ein Soldat!", - L"Bei genauerer Betrachtungweise ist %s's Verkleidung nicht wirksam!", - L"%s sollte nicht hier sein!", - L"%s sollte um diese Uhrzeit nicht hier sein!", - L"%s wurde in der Nähe einer frischen Leiche gesichtet!", - L"%s Ausrüstung sorgt für Erstaunen!", - L"%s visiert %s an!", - L"%s hat durch %s's Verkleidung gesehen!", - L"In der Items.xml wurde keine Kleidung gefunden!", - L"Dies funktioniert nicht mit dem alten Fertigkeitensystem!", - L"Zu wenig Bewegungspunkte!", - L"Fehlerhafte Farbpalette!", - L"Sie brauchen die Geheimagent-Fertigkeit um dies zu tun!", - L"Keine Uniform gefunden!", - L"%s ist jetzt verkleidet als ein Zivilist.", - L"%s ist jetzt verkleidet als ein Soldat.", - L"%s trägt keine korrekte Uniform!", - L"Verkleidet zur Kapitulation aufzufordern, war im Nachhinein nicht ganz so klug ...", - L"%s wurde enttarnt!", - L"%s's Verkleidung sollte überzeugen", - L"%s's Verkleidung wird auffliegen!", - L"%s wurde beim Stehlen erwischt!", - L"%s hat versucht, %s's Azsrüstung zu verändern.", - L"Einem Elitesoldat schien %s verdächtig!", - L"Ein Offizier hat %s erkannt!", -}; - -STR16 szCorpseTextStr[]= -{ - L"Kein Kopf-Gegenstand in der Datei Items.xml!", - L"Leiche kann nicht enthauptet werden!", - L"Kein Fleisch-Gegenstand in der Datei Items.xml!", - L"Nicht möglich, sie krankes Individuum!", - L"Keine Kleidung vorhanden zum Nehmen!", - L"%s kann der Leiche nicht die Kleidung entwenden!", - L"Diese Leiche kann nicht genommen werden!", - L"Keine freie Hand vorhanden um die Leiche zu nehmen!", - L"Kein Leiche-Gegenstand vorhanden in der Datei Items.xml!", - L"Ungültige Leiche-ID!", -}; - -STR16 szFoodTextStr[]= -{ - L"%s möchte nicht %s essen", - L"%s möchte nicht %s trinken", - L"%s hat %s gegessen", - L"%s hat %s getrunken", - L"%s's Kraft wurde weniger, weil überfüttert!", - L"%s's Kraft wurde weniger, wegen Nahrungsmangel!", - L"%s's Gesundheit wurde angegriffen, weil überfüttert!", - L"%s's Gesundheit wurde angegriffen, wegen Nahrungsmangel!", - L"%s's Kraft wurde weniger, durch exzessives Trinken!", - L"%s's Kraft wurde weniger, durch Mangel an Wasser!", - L"%s's Gesundeheit wurde angegriffen, durch exzessives Trinken!", - L"%s's Gesundeheit wurde angegriffen, durch Mangel an Wasser!", - L"Sektorübergreifendes Befüllen der Feldflaschen ist nicht möglich, weil Nahrungssystem nicht aktiv ist!" -}; - -STR16 szPrisonerTextStr[]= -{ - L"%d Offiziere, %d Elite-, %d Reguläre, %d Hilfssoldaten, %d Generäle und %d Zivilisten wurden verhört.", - L"$%d als Lösegeld erhalten.", - L"%d Gefangene haben uns Truppenstandorte verraten.", - L"%d Offiziere, %d Elite-, %d Reguläre und %d Hilfssoldaten laufen zu uns über.", - L"Gefangenenaufstand in %s!", - L"%d Gefangene wurden nach %s geschickt!", - L"Gefangene freigelassen!", - L"Die Armee hat das Gefängnis in %s besetzt, die Gefangenen wurden befreit!", - L"Der Gegner weigert sich aufzugeben!", - L"Der Feind weigert sich, Sie als Gefangenen zu nehmen - Er möchte Sie tod sehen!", - L"Dieses Verhalten ist ausgeschaltet in der ja2_options.ini Datei.", - L"%s hat %s befreit!", - L"Ein ranghoher Offizier in %s wurde enttarnt!", - L"Der feindliche Anführer denkt nicht mal an Kapitulation!", - L"%d Gefangene sind uns als Freiwillige beigetreten.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= -{ - L"nichts", - L"baue eine Befestigung", - L"entferne eine Befestigung", - L"hacking", - L"%s musste %s stoppen.", - L"Die gewählte Barrikade kann in diesem Sektor nicht gebaut werden", -}; - -STR16 szInventoryArmTextStr[]= -{ - L"Sprengen (%d AP)", - L"Sprengen", - L"Scharf machen (%d AP)", - L"Scharf machen", - L"Entschärfen (%d AP)", - L"Entschärfen", -}; - -// TODO.Translate -STR16 szBackgroundText_Flags[]= -{ - L" might consume drugs in inventory\n", - L" disregard for all other backgrounds\n", - L" +1 level in underground sectors\n", - L" steals money from the locals sometimes\n", - - 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 - - L" huge loyality penalty in all towns if we die\n", - - L" refuses to attack animals\n", - L" refuses to attack members of the same group\n", -}; - -// TODO.Translate -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% APs in polar sectors\n", - L" %s%d%% APs in desert sectors\n", - L" %s%d%% APs in swamp sectors\n", - L" %s%d%% APs in urban sectors\n", - L" %s%d%% APs in forest sectors\n", - L" %s%d%% APs in plain sectors\n", - L" %s%d%% APs in river sectors\n", - L" %s%d%% APs in tropical sectors\n", - L" %s%d%% APs in coastal sectors\n", - L" %s%d%% APs in mountainous sectors\n", - - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% leadership stat\n", - L" %s%d%% marksmanship stat\n", - 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", - L" %s%d%% APs needed for fortification actions\n", - L" %s%d%% APs needed for mortars\n", - L" %s%d%% APs needed to access inventory\n", - L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", - L" %s%d%% APs on first turn when assaulting a sector\n", - - L" %s%d%% travel speed on foot\n", - L" %s%d%% travel speed on land vehicles\n", - L" %s%d%% travel speed on air vehicles\n", - L" %s%d%% travel speed on water vehicles\n", - - L" %s%d%% fear resistance\n", - L" %s%d%% suppression resistance\n", - L" %s%d%% physical resistance\n", - L" %s%d%% alcohol resistance\n", - L" %s%d%% disease resistance\n", - - L" %s%d%% interrogation effectiveness\n", - L" %s%d%% prison guard strength\n", - L" %s%d%% better prices when trading guns and ammo\n", - L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", - L" %s%d%% team capitulation strength if we lead negotiations\n", - L" %s%d%% faster running\n", - L" %s%d%% bandaging speed\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% strength to carry items\n", - L" %s%d%% food consumption\n", - L" %s%d%% water consumption\n", - L" %s%d need for sleep\n", - L" %s%d%% melee damage\n", - L" %s%d%% cth with blades\n", - L" %s%d%% camo effectiveness\n", - L" %s%d%% stealth\n", - L" %s%d%% max CTH\n", - L" %s%d hearing range during the night\n", - L" %s%d hearing range during the day\n", - L" %s%d effectivity at disarming traps\n", - L" %s%d%% CTH with SAMs\n", - - L" %s%d%% effectiveness to friendly approach\n", - L" %s%d%% effectiveness to direct approach\n", - L" %s%d%% effectiveness to threaten approach\n", - 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", - L" %s%d%% insurance cost\n", - L" %s%d%% effectiveness as spotter for fellow snipers\n", - L" %s%d%% effectiveness at diagnosing diseases\n", - L" %s%d%% effectiveness at treating population against diseases\n", - L"Can spot tracks up to %d tiles away\n", - L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% chance to evade snake attacks\n", - - L" dislikes some other backgrounds\n", - L"Smoker", - L"Nonsmoker", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% building speed\n", - L" hacking skill: %s%d ", - L" %s%d%% burial speed\n", - L" %s%d%% administration effectiveness\n", - L" %s%d%% exploration effectiveness\n", -}; - -// TODO.Translate -STR16 szBackgroundTitleText[] = -{ - L"I.M.P. Background", -}; - -// Flugente: personality -// TODO.Translate -STR16 szPersonalityTitleText[] = -{ - L"I.M.P. Prejudices", -}; - -// TODO.Translate -STR16 szPersonalityDisplayText[]= -{ - L"You look", - L"and appearance is", - L"important to you.", - L"You have", - L"and care", - L"about that.", - L"You are", - L"and hate everyone", - L".", - L"racist against non-", - L"people.", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -// TODO.Translate -STR16 szPersonalityHelpText[]= -{ - L"How do you look?", - L"How important are the looks of others to you?", - L"What are your manners?", - L"How important are the manners of other people to you?", - L"What is your nationality?", - L"What nation o you dislike?", - L"How much do you dislike that nation?", - L"How racist are you?", - L"What is your race? You will be\nracist against all other races.", - L"How sexist are you against the other gender?", -}; - -// TODO.Translate -STR16 szRaceText[]= -{ - L"white", - L"black", - L"asian", - L"eskimo", - L"hispanic", -}; - -// TODO.Translate -STR16 szAppearanceText[]= -{ - L"average", - L"ugly", - L"homely", - L"attractive", - L"like a babe", -}; - -// TODO.Translate -STR16 szRefinementText[]= -{ - L"average manners", - L"manners of a slob", - L"manners of a snob", -}; - -// TODO.Translate -STR16 szRefinementTextTypes[] = -{ - L"normal people", - L"slobs", - L"snobs", -}; - -// TODO.Translate -STR16 szNationalityText[]= -{ - L"American", // 0 - L"Arab", - L"Australian", - L"British", - L"Canadian", - L"Cuban", // 5 - L"Danish", - L"French", - L"Russian", - L"Traconian", - L"Swiss", // 10 - L"Jamaican", - L"Polish", - L"Chinese", - L"Irish", - L"South African", // 15 - L"Hungarian", - L"Scottish", - L"Arulcan", - L"German", - L"African", // 20 - L"Italian", - L"Dutch", - L"Romanian", - L"Metaviran", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"Belarusian", - L"Belgian", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"Brasilian", - L"Bulgarian", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"Estonian", - L"Ethiopian", - L"Filipino", // 50 - L"Finnish", - L"Georgian", - L"Greek", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Indian", - L"Indonesian", - L"Iranian", - L"Iraqi", // 60 - L"Islandic", - L"Israeli", - L"Japanese", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Mexican", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Nigerian", - L"Nigerien", - L"Norwegian", - L"Pakistani", // 85 - L"Panamanian", - L"Portoguese", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"Serbian", - L"Slovakian", - L"Slovenian", - L"Somali", - L"Spanish", // 95 - L"Sudanese", - L"Swedish", - L"Syrian", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"Turkish", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"Venezuelan", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -// TODO.Translate -STR16 szNationalityTextAdjective[] = -{ - L"americans", // 0 - L"arabs", - L"australians", - L"britains", - L"canadians", - L"cubans", // 5 - L"danes", - L"frenchmen", - L"russians", - L"traconians", - L"swiss", // 10 - L"jamaicans", - L"poles", - L"chinese", - L"irishmen", - L"south africans", // 15 - L"hungarians", - L"scotsmen", - L"arulcans", - L"germans", - L"africans", // 20 - L"italians", - L"dutchmen", - L"romanians", - L"metavirans", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"belarusians", - L"belgians", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"brasilians", - L"bulgarians", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"estonians", - L"ethiopians", - L"filipinos", // 50 - L"finns", - L"georgians", - L"greek", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"indians", - L"indonesians", - L"iranians", - L"iraqis", // 60 - L"islandics", - L"israelis", - L"japanese", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"mexicans", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"nigerians", - L"nigeriens", - L"norwegians", - L"pakistanis", // 85 - L"panamanians", - L"portoguese", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"serbians", - L"slovakians", - L"slovenians", - L"somali", - L"spaniards", // 95 - L"sudanese", - L"swedes", - L"syrians", - L"thais", - L"togolese", // 100 - L"tunisians", - L"turks", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"venezuelans", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -// TODO.Translate -STR16 szNationalityText_Special[]= -{ - L"and do not hate any other nationality.", // used in personnel.cpp - L"of no origin", // used in IMP generation -}; - -// TODO.Translate -STR16 szCareLevelText[]= -{ - L"not", - L"somewhat", - L"extremely", -}; - -// TODO.Translate -STR16 szRacistText[]= -{ - L"not", - L"somewhat", - L"very", -}; - -// TODO.Translate -STR16 szSexistText[]= -{ - L"no sexist", - L"somewhat sexist", - L"very sexist", - L"a Gentleman", -}; - -// Flugente: power pack texts -// TODO.Translate -STR16 gPowerPackDesc[] = -{ - L"Batteries are ", - L"full", - L"good", - L"at half", - L"low", - L"depleted", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -// TODO.Translate -STR16 szSoldierClassName[]= -{ - L"Mercenary", - L"Green militia", - L"Regular militia", - L"Elite militia", - - L"Civilian", - - L"Administrator", - L"Army Soldier", - L"Elite Soldier", - L"Tank", - - L"Creature", - L"Zombie", -}; - -// TODO.Translate -STR16 szCampaignHistoryWebSite[]= -{ - L"%s Press Council", - L"Ministry for %s Information Distribution", - L"%s Revolutionary Movement", - L"The Times International", - L"International Times", - L"R.I.S. (Recon Intelligence Service)", - - L"A collection of press sources from %s", - L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", - - L"Conflict Summary", - L"Battle reports", - L"News", - L"About us", -}; - -// TODO.Translate -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s in %s.", - - L"rebel forces", - L"the army", - - L"attacked", - L"ambushed", - L"airdropped", - - L"The attack came from %s.", - L"%s were reinforced from %s.", - L"The attack came from %s, %s were reinforced from %s.", - L"north", - L"east", - L"south", - L"west", - L"and", - L"an unknown location", // TODO.Translate - - L"Buildings in the sector were damaged.", // TODO.Translate - L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", - L"During the attack, %s and %s called reinforcements.", - L"During the attack, %s called reinforcements.", - L"Eyewitnesses report the use of chemical weapons from both sides.", - L"Chemical weapons were used by %s.", - L"In a serious escalation of the conflict, both sides deployed tanks.", - L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", - L"Both sides are said to have used snipers.", - L"Unverified reports indicate %s snipers were involved in the firefight.", - L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", - L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", - L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", -}; - -// TODO.Translate -STR16 szCampaignHistoryTimeString[]= -{ - L"Deep in the night", // 23 - 3 - L"At dawn", // 3 - 6 - L"Early in the morning", // 6 - 8 - L"In the morning hours", // 8 - 11 - L"At noon", // 11 - 14 - L"On the afternoon", // 14 - 18 - L"On the evening", // 18 - 21 - L"During the night", // 21 - 23 -}; - -// TODO.Translate -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Initial funding", - L"Mine income", - L"Trade", - L"Other sources", -}; - -// TODO.Translate -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Ammunition", - L"Explosives", - L"Food", - L"Medical gear", - L"Item maintenance", -}; - -// TODO.Translate -STR16 szCampaignHistoryResultString[]= -{ - L"In an extremely one-sided battle, the army force was wiped out without much resistance.", - - L"The rebels easily defeated the army, inflicting heavy losses.", - L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", - - L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", - L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", - - L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", - - L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", - L"Despite the high number of rebels in this sector, the army easily dispatched them.", - - L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", - L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", - - L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", - L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", - - L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", -}; - -// TODO.Translate -STR16 szCampaignHistoryImportanceString[]= -{ - L"Irrelevant", - L"Insignificant", - L"Notable", - L"Noteworthy", - L"Significant", - L"Interesting", - L"Important", - L"Very important", - L"Grave", - L"Major", - L"Momentous", -}; - -// TODO.Translate -STR16 szCampaignHistoryWebpageString[]= -{ - L"Killed", - L"Wounded", - L"Prisoners", - L"Shots fired", - - L"Money earned", - L"Consumption", - L"Losses", - L"Participants", - - L"Promotions", - L"Summary", - L"Detail", - L"Previous", - - L"Next", - L"Incident", - L"Day", -}; - -// TODO.Translate -STR16 szCampaignStatsOperationPrefix[] = -{ - L"Glorious %s", - L"Mighty %s", - L"Awesome %s", - L"Intimidating %s", - - L"Powerful %s", - L"Earth-Shattering %s", - L"Insidious %s", - L"Swift %s", - - L"Violent %s", - L"Brutal %s", - L"Relentless %s", - L"Merciless %s", - - L"Cannibalistic %s", - L"Gorgeous %s", - L"Rogue %s", - L"Dubious %s", - - L"Sexually Ambigious %s", - L"Burning %s", - L"Enraged %s", - L"Visonary %s", - - // 20 - L"Gruesome %s", - L"International-law-ignoring %s", - L"Provoked %s", - L"Ceaseless %s", - - L"Inflexible %s", - L"Unyielding %s", - L"Regretless %s", - L"Remorseless %s", - - L"Choleric %s", - L"Unexpected %s", - L"Democratic %s", - L"Bursting %s", - - L"Bipartisan %s", - L"Bloodstained %s", - L"Rouge-wearing %s", - L"Innocent %s", - - L"Hateful %s", - L"Underwear-staining %s", - L"Civilian-devouring %s", - L"Unflinching %s", - - // 40 - L"Expect No Mercy From Our %s", - L"Very Mad %s", - L"Ultimate %s", - L"Furious %s", - - L"Its best to Avoid Our %s", - L"Fear the %s", - L"All Hail the %s!", - L"Protect the %s", - - L"Beware the %s", - L"Crush the %s", - L"Backstabbing %s", - L"Vicious %s", - - L"Sadistic %s", - L"Burning %s", - L"Wrathful %s", - L"Invincible %s", - - L"Guilt-ridden %s", - L"Rotting %s", - L"Sanitized %s", - L"Self-doubting %s", - - // 60 - L"Ancient %s", - L"Very Hungry %s", - L"Sleepy %s", - L"Demotivated %s", - - L"Cruel %s", - L"Annoying %s", - L"Huffy %s", - L"Bisexual %s", - - L"Screaming %s", - L"Hideous %s", - L"Praying %s", - L"Stalking %s", - - L"Cold-blooded %s", - L"Fearsome %s", - L"Trippin' %s", - L"Damned %s", - - L"Vegetarian %s", - L"Grotesque %s", - L"Backward %s", - L"Superior %s", - - // 80 - L"Inferior %s", - L"Okay-ish %s", - L"Porn-consuming %s", - L"Poisoned %s", - - L"Spontaneous %s", - L"Lethargic %s", - L"Tickled %s", - L"The %s is a dupe!", - - L"%s on Steroids", - L"%s vs. Predator", - L"A %s with a twist", - L"Self-Pleasuring %s", - - L"Man-%s hybrid", - L"Inane %s", - L"Overpriced %s", - L"Midnight %s", - - L"Capitalist %s", - L"Communist %s", - L"Intense %s", - L"Steadfast %s", - - // 100 - L"Narcoleptic %s", - L"Bleached %s", - L"Nail-biting %s", - L"Smite the %s", - - L"Bloodthirsty %s", - L"Obese %s", - L"Scheming %s", - L"Tree-Humping %s", - - L"Cheaply made %s", - L"Sanctified %s", - L"Falsely accused %s", - L"%s to the rescue", - - L"Crab-people vs. %s", - L"%s in Space!!!", - L"%s vs. Godzilla", - L"Untamed %s", - - L"Durable %s", - L"Brazen %s", - L"Greedy %s", - L"Midnight %s", - - // 120 - L"Confused %s", - L"Irritated %s", - L"Loathsome %s", - L"Manic %s", - - L"Ancient %s", - L"Sneaking %s", - L"%s of Doom", - L"%s's revenge", - - L"A %s on the run", - L"A %s out of time", - L"One with %s", - L"%s from hell", - - L"Super-%s", - L"Ultra-%s", - L"Mega-%s", - L"Giga-%s", - - L"A quantum of %s", - L"Her Majesties' %s", - L"Shivering %s", - L"Fearful %s", - - // 140 -}; - -// TODO.Translate -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Dragon", - L"Mountain Lion", - L"Copperhead Snake", - L"Jack Russell Terrier", - - L"Arch-Nemesis", - L"Basilisk", - L"Blade", - L"Shield", - - L"Hammer", - L"Spectre", - L"Congress", - L"Oilfield", - - L"Boyfriend", - L"Girlfriend", - L"Husband", - L"Stepmother", - - L"Sand Lizard", - L"Bankers", - L"Anaconda", - L"Kitten", - - // 20 - L"Congress", - L"Senate", - L"Cleric", - L"Badass", - - L"Bayonet", - L"Wolverine", - L"Soldier", - L"Tree Frog", - - L"Weasel", - L"Shrubbery", - L"Tar pit", - L"Sunset", - - L"Hurricane", - L"Ocelot", - L"Tiger", - L"Defense Industry", - - L"Snow Leopard", - L"Megademon", - L"Dragonfly", - L"Rottweiler", - - // 40 - L"Cousin", - L"Grandma", - L"Newborn", - L"Cultist", - - L"Disinfectant", - L"Democracy", - L"Warlord", - L"Doomsday Device", - - L"Minister", - L"Beaver", - L"Assassin", - L"Rain of Burning Death", - - L"Prophet", - L"Interloper", - L"Crusader", - L"Administration", - - L"Supernova", - L"Liberty", - L"Explosion", - L"Bird of Prey", - - // 60 - L"Manticore", - L"Frost Giant", - L"Celebrity", - L"Middle Class", - - L"Loudmouth", - L"Scape Goat", - L"Warhound", - L"Vengeance", - - L"Fortress", - L"Mime", - L"Conductor", - L"Job-Creator", - - L"Frenchman", - L"Superglue", - L"Newt", - L"Incompetency", - - L"Steppenwolf", - L"Iron Anvil", - L"Grand Lord", - L"Supreme Ruler", - - // 80 - L"Dictator", - L"Old Man Death", - L"Shredder", - L"Vacuum Cleaner", - - L"Hamster", - L"Hypno-Toad", - L"Discjockey", - L"Undertaker", - - L"Gorgon", - L"Child", - L"Mob", - L"Raptor", - - L"Goddess", - L"Gender Inequality", - L"Mole", - L"Baby Jesus", - - L"Gunship", - L"Citizen", - L"Lover", - L"Mutual Fund", - - // 100 - L"Uniform", - L"Saber", - L"Snow Leopard", - L"Panther", - - L"Centaur", - L"Scorpion", - L"Serpent", - L"Black Widow", - - L"Tarantula", - L"Vulture", - L"Heretic", - L"Zombie", - - L"Role-Model", - L"Hellhound", - L"Mongoose", - L"Nurse", - - L"Nun", - L"Space Ghost", - L"Viper", - L"Mamba", - - // 120 - L"Sinner", - L"Saint", - L"Comet", - L"Meteor", - - L"Can of worms", - L"Fish oil pills", - L"Breastmilk", - L"Tentacle", - - L"Insanity", - L"Madness", - L"Cough reflex", - L"Colon", - - L"King", - L"Queen", - L"Bishop", - L"Peasant", - - L"Tower", - L"Mansion", - L"Warhorse", - L"Referee", - - // 140 -}; - -// TODO.Translate -STR16 szMercCompareWebSite[] = -{ - // main page - L"Mercs Love or Dislike You", - L"Your #1 teambuilding experts on the web", - - L"About us", - L"Analyse a team", - L"Pairwise comparison", - L"Customer voices", - - L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"Your team struggles with itself.", - L"Your employees waste time working against each other.", - L"Your workforce experiences a high fluctuation rate.", - L"You constantly receive low marks on workplace satisfaction ratings.", - L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"A few citations from our satisfied customers:", - L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G., Novelist-", - L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C., Corrective law enforcement-", - L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W., Snake charmer-", - L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L., SPK-", - L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C., NASA-", - L"I fully recommend this site!", - L"-Kasper H., H&C logistic Inc-", - L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke, Kerberus Inc-", - - // analyze - L"Choose your employee", - L"Choose your squad", - - // error messages - L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -// TODO.Translate -STR16 szMercCompareEventText[]= -{ - L"%s shot me!", - L"%s is scheming behind my back", - L"%s interfered in my business", - L"%s is friends with my enemy", - - L"%s got a contract before I did", - L"%s ordered a shameful retreat", - L"%s massacred the innocent", - L"%s slows us down", - - L"%s doesn't share food", - L"%s jeopardizes the mission", - L"%s is a drug addict", - L"%s is thieving scum", - - L"%s is an incompetent commander", - L"%s is overpaid", - L"%s gets all the good stuff", - L"%s mounted a gun on me", - - L"%s treated my wounds", - L"Had a good drink with %s", - L"%s is fun to get wasted with", - L"%s is annoying when drunk", - - L"%s is an idiot when drunk", - L"%s opposed our view in an argument", - L"%s supported our position", - L"%s agrees to our reasoning", - - L"%s's beliefs are contrary to ours", - L"%s knows how to calm down people", - L"%s is insensitive", - L"%s puts people in their places", - - L"%s is way too impulsive", - L"%s is disease-ridden", - L"%s treated my diseases", - L"%s does not hold back in combat", - - L"%s enjoys combat a bit too much", - L"%s is a good teacher", - L"%s led us to victory", - L"%s saved my life", - - L"%s stole my kill", - L"%s and me fought well together", - L"%s made the enemy surrender", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"World Health Organization", - L"Bringing health to life", - - // links to other pages - L"About WHO", - L"Disease in Arulco", - L"About diseases", - - // text on the main page - L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", - L"You currently do not have access to WHO data on the arulcan plague.", - L"You have acquired detailed maps on the status of the disease.", - L"Subscribe to map updates", - L"Unsubscribe map updates", - - // helpful tips page - L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -// TODO.Translate -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus", - L"Erfahrung in Sicherheit", - - // links to other pages - L"Was ist Kerberus?", - L"Team Verträge", - L"Individuelle Verträge", - - // text on the main page - L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", - L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", - L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"You can select the type and number of personnel you want to hire here:", - L"Initial deployment", - L"Regular personnel", - L"Veteran personnel", - - L"%d available, %d$ each", - L"Hire: %d", - L"Cost: %d$", - - L"Select the initial operational area:", - L"Total Cost: %d$", - L"ETA: %02d:%02d", - L"Close Contract", - - L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus reinforcements have arrived in %s.", - L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -// TODO.Translate -STR16 szTacticalInventoryDialogString[]= -{ - L"Inventory Manipulations", - - L"NVG", - L"Reload All", - L"Move", // TODO.Translate - L"", - - L"Sort", - L"Merge", - L"Separate", - L"Organize", - - L"Crates", - L"Boxes", - L"Drop B/P", - L"Pickup B/P", - - L"", - L"", - L"", - L"", -}; - -// TODO.Translate -STR16 szTacticalCoverDialogString[]= -{ - L"Cover Display Mode", - - L"Off", - L"Enemy", - L"Merc", - L"", - - L"Roles", - L"Fortification", - L"Tracker", - L"CTH mode", - - L"Traps", - L"Network", - L"Detector", - L"", - - L"Net A", - L"Net B", - L"Net C", - L"Net D", -}; - -// TODO.Translate -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Turning off cover/traps display", - L"Showing danger zones", - L"Showing merc view", - L"", - - L"Display enemy role symbols", - L"Display planned fortifications", - L"Display enemy tracks", - L"", - - L"Display trap network", - L"Display trap network colouring", - L"Display nearby traps", - L"", - - L"Display trap network A", - L"Display trap network B", - L"Display trap network C", - L"Display trap network D", -}; - -// TODO.Translate -STR16 szDynamicDialogueText[40][17] = -{ - // OPINIONEVENT_FRIENDLYFIRE - L"What the hell! $CAUSE$ attacked me!", - L"", - L"", - L"What? Me? No way, I'm engaging at the enemy!", - L"Oops.", - L"", - L"", - L"$CAUSE$ has attacked $VICTIM$. What do you do?", - L"Nah, that must have been enemy fire!", - L"Yeah, I saw it too!", - L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", - L"I saw it, it was clearly enemy fire!", - L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", - L"This is war! People get shot all the time! Speaking of... shoot more people, people!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"I would if you weren't such a wussy!", - L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"I'm doing my job. Get back to yours!", - L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"Patched together again? Good, now move!", - L"You're welcome.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'Even'? What does that mean?", - L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Nice one, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"Is there a difference?", - L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - -// TODO.Translate -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"What?!", - L"No!", - L"That is false!", - L"That is not true!", - - L"Lies, lies, lies. Nothing but lies!", - L"Liar!", - L"Traitor!", - L"You watch your mouth!", - - L"This is none of your business.", - L"Who ever invited you?", - L"Nobody asked for your opinion, $INTERJECTOR$.", - L"You stay away from me.", - - L"Why are you all against me?", - L"Why are you against me, $INTERJECTOR$?", - L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"Not listening...!", - - L"I hate this psycho circus.", - L"I hate this freak show.", - L"Back off!", - L"Lies, lies, lies...", - - L"No way!", - L"So not true.", - L"That is so not true.", - L"I know what I saw.", - - L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"Nope.", - L"You are mistaken.", -}; - -// TODO.Translate -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"What $INTERJECTOR_GENDER$ said.", - - L"Thanks, $INTERJECTOR$!", - L"Once again I'm right!", - L"See, $CAUSE$? I am right!", - L"Once again $SPEAKER$ is right!", - - L"Aye.", - L"Yup.", - L"Yep", - L"Yes.", - - L"Indeed.", - L"True.", - L"Ha!", - L"See?", - - L"Exactly!", -}; - -// TODO.Translate -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"That's right!", - L"Indeed!", - L"Exactly that.", - L"$CAUSE$ does that all the time.", - - L"$VICTIM$ is right!", - L"I was gonna' point that out, too!", - L"What $VICTIM$ said.", - L"That's our $CAUSE$!", - - L"Yeah!", - L"Now THIS is going to be interesting...", - L"You tell'em, $VICTIM$!", - L"Agreeing with $VICTIM$ here...", - - L"Classic $CAUSE$.", - L"I couldn't have said it better myself.", - L"That is exactly what happened.", - L"Agreed!", - - L"Yup.", - L"True.", - L"Bingo.", -}; - -// TODO.Translate -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"Now wait a minute...", - L"Wait a sec, that's not what right...", - L"What? No.", - L"That is not what happened.", - - L"Hey, stop blaming $CAUSE$!", - L"Oh shut up, $VICTIM$!", - L"Nonono, you got that wrong.", - L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"And I suppose you never did, $VICTIM$?", - L"Hmmmm... no.", - L"Great. Let's have an argument. It's not like we have other things to do...", - L"You are mistaken!", - - L"You are wrong!", - L"Me and $CAUSE$ would never do such a thing.", - L"Nah, can't be.", - L"I don't think so.", - - L"Why bring that up now?", - L"Really, $VICTIM$? Is this necessary?", -}; - -// TODO.Translate -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Keep silent", - L"Support $VICTIM$", - L"Support $CAUSE$", - L"Appeal to reason", - L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"er", - L"sie", - L"seine", - L"ihre", -}; - -// TODO.Translate -STR16 szDiseaseText[] = -{ - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% wisdom stat\n", - L" %s%d%% effective level\n", - - L" %s%d%% APs\n", - L" %s%d maximum breath\n", - L" %s%d%% strength to carry items\n", - L" %s%2.2f life regeneration/hour\n", - L" %s%d need for sleep\n", - L" %s%d%% water consumption\n", - L" %s%d%% food consumption\n", - - L"%s was diagnosed with %s!", - L"%s is cured of %s!", - - L"Diagnosis", - L"Treatment", - L"Burial", - L"Cancel", - - L"\n\n%s (undiagnosed) - %d / %d\n", - - L"High amount of distress can cause a personality split\n", - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -// TODO.Translate -STR16 szSpyText[] = -{ - L"Hide", - L"Get Intel", -}; - -// TODO.Translate -STR16 szFoodText[] = -{ - L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|F|o|o|d: %d%%\n", - - L"max morale altered by %s%d\n", - L" %s%d need for sleep\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% assignment efficiency\n", - L" %s%d%% chance to lose stats\n", -}; - -// TODO.Translate -STR16 szIMPGearWebSiteText[] = -{ - // IMP Gear Entrance - L"How should gear be selected?", - L"Old method: Random gear according to your choices", - L"New method: Free selection of gear", - L"Old method", - L"New method", - - // IMP Gear Entrance - L"I.M.P. Equipment", - L"Additional Cost: %d$ (%d$ prepaid)", -}; - -// TODO.Translate -STR16 szIMPGearPocketText[] = -{ - L"Select helmet", - L"Select vest", - L"Select pants", - L"Select face gear", - L"Select face gear", - - L"Select main gun", - L"Select sidearm", - - L"Select LBE vest", - L"Select left LBE holster", - L"Select right LBE holster", - L"Select LBE combat pack", - L"Select LBE backpack", - - L"Select launcher / rifle", - L"Select melee weapon", - - L"Select additional items", //BIGPOCK1POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select medkit", //MEDPOCK1POS - L"Select medkit", - L"Select medkit", - L"Select medkit", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select additional items", //SMALLPOCK19POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -// TODO.Translate -STR16 szMilitiaStrategicMovementText[] = -{ - L"We cannot relay orders to this sector, militia command not possible.", - L"Unassigned", - L"Group No.", - L"Next", - - L"ETA", - L"Group %d (new)", - L"Group %d", - L"Final", - - L"Volunteers: %d (+%5.3f)", -}; - -// TODO.Translate -STR16 szEnemyHeliText[] = -{ - L"Enemy helicopter shot down in %s!", - L"We... uhm... currently don't control that site, commander...", - L"The SAM does not need maintenance at the moment.", - L"We've already ordered the repair, this will take time.", - - L"We do not have enough resources to do that.", - L"Repair SAM site? This will cost %d$ and take %d hours.", - L"Enemy helicopter hit in %s.", - L"%s fires %s at enemy helicopter in %s.", - - L"SAM in %s fires at enemy helicopter in %s.", -}; - -// TODO.Translate -STR16 szFortificationText[] = -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -// TODO.Translate -STR16 szMilitiaWebSite[] = -{ - // main page - L"Militia", - L"Militia Forces Overview", -}; - -// TODO.Translate -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Took part in Operation %s", - L"Recruited on Day %d, %d:%02d in %s", - L"Promoted on Day %d, %d:%02d", - L"KIA, Operation %s", - - L"Lightly wounded during Operation %s", - L"Heavily wounded during Operation %s", - L"Critically wounded during Operation %s", - L"Valiantly fought in Operation %s", - - L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", -}; - -// TODO.Translate -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -// TODO.Translate -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", // TODO:Translate -}; - -// TODO.Translate -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -// TODO.Translate -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -// TODO.Translate -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"Alle Sektoren", -}; - -// TODO.Translate -STR16 szNonProfileMerchantText[] = -{ - L"Merchant is hostile and does not want to trade.", - L"Merchant is in no state to do business.", - L"Merchant won't trade during combat.", - L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = -{ - L"Normal", - L"Regen", - L"Gewitter", - L"Sandsturm", - L"Schnee", -}; - -STR16 szSnakeText[] = -{ - L"%s weicht Schlangenangriff aus!", - L"%s wurde von Schlange angegriffen!", -}; - -// TODO.Translate -STR16 szSMilitiaResourceText[] = -{ - L"Converted %s into resources", - L"Guns: ", - L"Armour: ", - L"Misc: ", - - L"There are no volunteers left for militia!", - L"Not enough resources to train militia!", -}; - -// TODO.Translate -STR16 szInteractiveActionText[] = -{ - L"%s starts hacking.", - L"%s accesses the computer, but finds nothing of interest.", - L"%s is not skilled enough to hack the computer.", - L"%s reads the file, but learns nothing new.", - - L"%s can't make sense out of this.", - L"%s couldn't use the watertap.", - L"%s has bought a %s.", - L"%s doesn't have enough money. That's just embarassing.", - - L"%s drank from water tap", - L"This machine doesn't seem to be working.", -}; - -// TODO.Translate -STR16 szLaptopStatText[] = -{ - L"threaten effectiveness %d\n", - L"leadership %d\n", - L"approach modifier %.2f\n", - L"background modifier %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Good Guy", - L"%s eschews excessive violence and will refuse to attack non-hostiles.", - - L"Friendly approach", - L"Direct approach", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -// TODO.Translate -STR16 szGearTemplateText[] = // TODO.Translate -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate -}; - -// TODO.Translate -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -// TODO.Translate -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -// TODO.Translate -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -// TODO.Translate -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -// TODO.Translate -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -// TODO.Translate -STR16 szFactoryText[] = -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -// TODO.Translate -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -// TODO.Translate -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Space Available:", - L"MOLLE Space Required:", - L"MOLLE Small Slot Count:", - L"MOLLE Medium Slot Count:", - L"MOLLE Pouch Size: Small", - L"MOLLE Pouch Size: Medium", - L"MOLLE Pouch Size: Medium (Hydration)", - L"Thigh Rig", - L"Vest", - L"Combat Pack", - L"Backpack", // 10 - L"MOLLE Pouch", - L"Compatible backpacks:", - L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = // TODO.Translate -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = // TODO.Translate -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = // TODO.Translate -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = // TODO.Translate -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia\nthat appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = // TODO: Translate -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //GERMAN +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("GERMAN") + + #ifdef GERMAN + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_GermanText_public_symbol(void){;} + +#ifdef GERMAN + + +/* +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL TOPWARE INSTRUCTIONS +- Always be aware that German strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of the German language when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for Topware problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by Topware to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +/* +LOOTF - Foot note. I've rewritten a whole lot of stuff and only marked specific lines and blocks. + That's where I'm either + + - not sure about the character limit (might not be mentioned but causes trouble when displaying texts?) + - not sure about the meaning + - not sure if people will like it (this concerns German speakers) + - not as creative as to find a perfect replacement + +I have also changed stuff people might have found okay, which only troubled me. +This includes + "Zurückziehen". Klingt einfach nicht. Hört sich an wie sich zur Nachtruhe begeben. +"Zurückgezogen" ist ein Waldschrat. Geändert auf "ausgewichen". +Ich hoffe nur, dass nicht irgendjemand dumm rumschwätzt wegen Kugeln ausweichen oder so. + +Anything else is a-ok and can be filtered out by comparing this cpp with the old version. +I have also added tabs and removed some where I thought it was appropriate (format-wise). +My comments are marked using LOOTF. +Comments for SANDRO are marked using LOOTF - SANDRO. +Remove any LOOTF comment that has been checked, except maybe for "alt." (alternative) stuff or stuff of that sort. + +07/2010 LootFragg +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; + +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Orte", // 0 + L"Personen", + L"Gegenstände", + L"Aufträge", + L"Menu 5", + L"Menu 6", //5 + L"Menu 7", + L"Menu 8", + L"Menu 9", + L"Menu 10", + L"Menu 11", //10 + L"Menu 12", + L"Menu 13", + L"Menu 14", + L"Menu 15", + L"Menu 15", // 15 + + //Briefing Room + L"Eintreten", +}; + +STR16 pOtherButtonsText[] = +{ + L"Auftrag", + L"Akzep.", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Einsatzbesprechung", + L"Auftrag annehmen", +}; + + +STR16 pLocationPageText[] = +{ + L"Vorherige Seite", + L"Foto", + L"Nächste Seite", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"Hauptseite", + L">>", + L"Typ: ", + L"Keine Daten", + L"Es gibt keine Missionen. Fügen Sie Missionen zu der Datei TableData\\BriefingRoom\\BriefingRoom.xml hinzu. Die erste Mission muss SICHTBAR sein. Setzen Sie den Wert Hidden = 0.", + L"Besprechungszimmer. Bitte drücken sie auf 'Eintreten'.", +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Unbekannt",// 0 - unknown + L"Stadt", //1 - cities + L"Luftwaffen Stützpunkt", //2 - SAM Site + L"Andere Örtlichkeiten", //3 - other location + L"Minen", //4 - mines + L"Militärstützpunkt", //5 - military complex + L"Labor", //6 - laboratory complex + L"Fabrik", //7 - factory complex + L"Spital", //8 - hospital + L"Gefängnis", //9 - prison + L"Flughafen", //10 - air port +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Alle anzeigen", + L"AIM anzeigen", + L"MERC anzeigen", + L"RPC anzeigen", + L"NPC anzeigen", + L"Fahrzeuge anzeigen", + L"BSE anzeigen", + L"EPC anzeigen", + L"Filter", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"Alle", + L"AIM", + L"MERC", + L"RPC", + L"NPC", + L"Veh.", + L"BSE", + L"EPC", + L"Filter", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Alles anzeigen", + L"Städte anzeigen", + L"Luftwaffenstützpunkte anzeigen", + L"Andere Örtlichkeiten anzeigen", + L"Minen anzeigen", + L"Militärstützpunkte anzeigen", + L"Labor-Komplexe anzeigen", + L"Fabriken anzeigen", + L"Spitäler anzeigen", + L"Gefängnisse anzeigen", + L"Flughäfen anzeigen", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"Alle", + L"Stadt", + L"SAM", + L"Andere", + L"Mine", + L"Mil.", + L"Lab.", + L"Fabr.", + L"Spit.", + L"Gefän.", + L"Flugh.", +}; + +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"Alle",//0 + L"Stadt", + L"SAM", + L"Mine", + L"Flugh.", + L"Wildn.", + L"Unterg.", + L"Gebäude", + L"andere", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Zeige Alle",//facility index + 1 + L"Zeige Stadtsektoren", + L"Zeige SAM's ", + L"Zeige Mine", + L"Zeige Flughäfen", + L"Zeige Sektoren in der Wildniss", + L"Zeige Untergrund", + L"Zeige wichtige Gebäude\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", + L"Zeige andere Sektoren", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; + +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"Alle",//0 + L"A.I.M.", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"Andere",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Zeige Alle",//Other index + 1 + L"Zeige A.I.M. Mitarbeiter", + L"Zeige M.E.R.C Mitarbeiter", + L"Zeige Rebellen", + L"Zeige Nichtspieler Charaktere", + L"Zeige Spieler Charaktere", + L"Zeige Andere\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", +}; + +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Fahrz.", + L"EPC", + L"",//reserved. Insert new Other filters above! +}; + +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"Alle",//0 + L"Hand.W.", + L"Muni.", + L"Rüstung", + L"LBE", + L"Zubeh.", + L"Versch.",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Zeige Alle",//misc index + 1 + L"Zeige Handfeuer Waffen\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", + L"Zeige Munition\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", + L"Zeige Rüstung\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", + L"Zeige LBE-Gepäck\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", + L"Zeige Zubehör\n[|L|MT] ändere Filter\n[|R|MT] Filter zurücksetzen", + L"Zeige Verschiedenes\n[|L|MT] ändere Filter\n[|R|MT] F. zurücksetzen", +}; + +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"Pistole", + L"M.Pist.", + L"lei. MG", + L"Gewehr", + L"Scharfs", + L"Sturm G", + L"MG", + L"Schrot.", + L"Schwere", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"Pistole", + L"M.Pist.", + L"lei. MG", + L"Gewehr", + L"Scharfs", + L"Sturm G", + L"MG", + L"Schrot.", + L"Schwere", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Helm", + L"Weste", + L"Hose", + L"Platte", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Gürtel", + L"Weste", + L"Kampfg.", + L"Marsch.", + L"Tasche", + L"Andere", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Optik", + L"Seite", + L"Lauf", + L"Extern", + L"Intern", + L"Andere", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"Messer", + L"Wurf M.", + L"Schlag", + L"Kranate", + L"Sprengs", + L"Medikit", + L"Kit", + L"Kopf", + L"Andere", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; + +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"Alle", + L"Aktiv", + L"Abges.", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Zeige Alle",//misc index + 1 + L"Zeige Aktive Quests", + L"Zeige Abgeschlossene Quests", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"Alle", //0 + L"Waffen", + L"Mun.", + L"LBE", + L"Sonst.", + + L"Alle", //5 + L"Waffen", + L"Munition", + L"LBE Gegenstände", + L"Sonstige", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"Schwer", + L"Pistole", + L"M. Pist.", + L"SMG", + L"Gewehr", + L"S.Gew.", + L"A.Gew.", + L"MG", + L"Schrot.", + + // Ammo + L"Pistol", + L"M. Pist.", //10 + L"SMG", + L"Gewehr", + L"S.Gew", + L"A.Gew.", + L"MG", + L"Schrot.", + + // Used + L"Waffen", + L"Panz.", + L"LBE Ausr.", + L"Sonst.", //20 + + // Armour + L"Helme", + L"Westen", + L"Hosen", + L"Platten", + + // Misc + L"Klingen", + L"Wurfm.", + L"Nah.", + L"Gran.", + L"Bomb.", + L"Med.", //30 + L"Kits", + L"Gesicht", + L"LBE", + L"Sonst.", //34 +}; + +// TODO.Translate +STR16 QuestDescText[] = +{ + L"Deliver Letter", + L"Food Route", + L"Terrorists", + L"Kingpin Chalice", + L"Kingpin Money", + L"Runaway Joey", + L"Rescue Maria", + L"Chitzena Chalice", + L"Held in Alma", + L"Interogation", + + L"Hillbilly Problem", //10 + L"Find Scientist", + L"Deliver Video Camera", + L"Blood Cats", + L"Find Hermit", + L"Creatures", + L"Find Chopper Pilot", + L"Escort SkyRider", + L"Free Dynamo", + L"Escort Tourists", + + + L"Doreen", //20 + L"Leather Shop Dream", + L"Escort Shank", + L"No 23 Yet", + L"No 24 Yet", + L"Kill Deidranna", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", +}; + +// TODO.Translate +STR16 FactDescText[] = +{ + L"Omerta befreit", + L"Drassen befreit", + L"Sanmona befreit", + L"Cambria befreit", + L"Alma befreit", + L"Grumm befreit", + L"Tixa befreit", + L"Chitzena befreit", + L"Estoni befreit", + L"Balime befreit", + + L"Orta befreit", //10 + L"Meduna befreit", + L"Pacos approched", + L"Fatima Read note", + L"Fatima Walked away from player", + L"Dimitri (#60) is dead", + L"Fatima responded to Dimitri's supprise", + L"Carlo's exclaimed 'no one moves'", + L"Fatima described note", + L"Fatima arrives at final dest", + + L"Dimitri said Fatima has proof", //20 + L"Miguel overheard conversation", + L"Miguel asked for letter", + L"Miguel read note", + L"Ira comment on Miguel reading note", + L"Rebels are enemies", + L"Fatima spoken to before given note", + L"Start Drassen quest", + L"Miguel offered Ira", + L"Pacos hurt/Killed", + + L"Pacos is in A10", //30 + L"Current Sector is safe", + L"Bobby R Shpmnt in transit", + L"Bobby R Shpmnt in Drassen", + L"33 is TRUE and it arrived within 2 hours", + L"33 is TRUE 34 is false more then 2 hours", + L"Player has realized part of shipment is missing", + L"36 is TRUE and Pablo was injured by player", + L"Pablo admitted theft", + L"Pablo returned goods, set 37 false", + + L"Miguel will join team", //40 + L"Gave some cash to Pablo", + L"Skyrider is currently under escort", + L"Skyrider is close to his chopper in Drassen", + L"Skyrider explained deal", + L"Player has clicked on Heli in Mapscreen at least once", + L"NPC is owed money", + L"Npc is wounded", + L"Npc was wounded by Player", + L"Father J.Walker was told of food shortage", + + L"Ira is not in sector", //50 + L"Ira is doing the talking", + L"Food quest over", + L"Pablo stole something from last shpmnt", + L"Last shipment crashed", + L"Last shipment went to wrong airport", + L"24 hours elapsed since notified that shpment went to wrong airport", + L"Lost package arrived with damaged goods. 56 to False", + L"Lost package is lost permanently. Turn 56 False", + L"Next package can (random) be lost", + + L"Next package can(random) be delayed", //60 + L"Package is medium sized", + L"Package is largesized", + L"Doreen has conscience", + L"Player Spoke to Gordon", + L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo asked for first aid", + L"Dynamo can be recruited", + L"Npc is bleeding", + L"Shank wnts to join", + + L"NPC is bleeding", //70 + L"Player Team has head & Carmen in San Mona", + L"Player Team has head & Carmen in Cambria", + L"Player Team has head & Carmen in Drassen", + L"Father is drunk", + L"Player has wounded mercs within 8 tiles of NPC", + L"1 & only 1 merc wounded within 8 tiles of NPC", + L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda is in the store ", + L"Brenda is Dead", + + L"Brenda is at home", //80 + L"NPC is an enemy", + L"Speaker Strength >= 84 and < 3 males present", + L"Speaker Strength >= 84 and at least 3 males present", + L"Hans lets ou see Tony", + L"Hans is standing on 13523", + L"Tony isnt available Today", + L"Female is speaking to NPC", + L"Player has enjoyed the Brothel", + L"Carla is available", + + L"Cindy is available", //90 + L"Bambi is available", + L"No girls is available", + L"Player waited for girls", + L"Player paid right amount of money", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping expectingh visit from player", + L"Darren expecting money from player", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Delete", + L"Delete item (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"north", + L"northeast", + L"east", + L"southeast", + L"south", + L"southwest", + L"west", + L"northwest" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Toggle viewing of players", //0 + L"Toggle viewing of enemies", + L"Toggle viewing of creatures", + L"Toggle viewing of rebels", + L"Toggle viewing of civilians", + + L"Player", + L"Enemy", + L"Creature", + L"Rebels", + L"Civilian", + + L"DETAILED PLACEMENT", //10 + L"General information mode", + L"Physical appearance mode", + L"Attributes mode", + L"Inventory mode", + L"Profile ID mode", + L"Schedule mode", + L"Schedule mode", + L"DELETE", + L"Delete currently selected merc (|D|e|l)", + L"NEXT", //20 + L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", + L"Toggle priority existance", + L"Toggle whether or not placement\nhas access to all doors", + + //Orders + L"STATIONARY", + L"ON GUARD", + L"ON CALL", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", //30 + L"RND PT PATROL", + + //Attitudes + L"DEFENSIVE", + L"BRAVE SOLO", + L"BRAVE AID", + L"AGGRESSIVE", + L"CUNNING SOLO", + L"CUNNING AID", + + L"Set merc to face %s", + + L"Find", + L"BAD", //40 + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"BAD", + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"Previous color set", //50 + L"Next color set", + + L"Previous body type", + L"Next body type", + + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + + L"No action", + L"No action", + L"No action", //60 + L"No action", + + L"Clear Schedule", + + L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"ROOFS", //0 + L"WALLS", + L"ROOM INFO", + + L"Place walls using selection method", + L"Place doors using selection method", + L"Place roofs using selection method", + L"Place windows using selection method", + L"Place damaged walls using selection method.", + L"Place furniture using selection method", + L"Place wall decals using selection method", + L"Place floors using selection method", //10 + L"Place generic furniture using selection method", + L"Place walls using smart method", + L"Place doors using smart method", + L"Place windows using smart method", + L"Place damaged walls using smart method", + L"Lock or trap existing doors", + + L"Add a new room", + L"Edit cave walls.", + L"Remove an area from existing building.", + L"Remove a building", //20 + L"Add/replace building's roof with new flat roof.", + L"Copy a building", + L"Move a building", + L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", + L"Erase room numbers", + + L"Toggle |Erase mode", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Cycle brush size (|A/|Z)", + L"Roofs (|H)", + L"|Walls", //30 + L"Room Info (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Wpns", //0 + L"Ammo", + L"Armour", + L"LBE", + L"Exp", + L"E1", + L"E2", + L"E3", + L"Triggers", + L"Keys", + L"Rnd", //10 + L"Previous (|,)", // previous page + L"Next (|.)", // next page +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Add ambient light source", //0 + L"Toggle fake ambient lights.", + L"Add exit grids (r-clk to query existing).", + L"Cycle brush size (|A/|Z)", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", + L"Specify north point for validation purposes.", + L"Specify west point for validation purposes.", + L"Specify east point for validation purposes.", + L"Specify south point for validation purposes.", + L"Specify center point for validation purposes.", //10 + L"Specify isolated point for validation purposes.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"New outdoor level", //0 + L"New basement", + L"New cave level", + L"Save map (|C|t|r|l+|S)", + L"Load map (|C|t|r|l+|L)", + L"Select tileset", + L"Leave Editor mode", + L"Exit game (|A|l|t+|X)", + L"Create radar map", + L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", + L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Draw |Ground textures", //0 + L"Set map ground textures", + L"Place banks and |Cliffs", + L"Draw roads (|P)", + L"Draw |Debris", + L"Place |Trees & bushes", + L"Place |Rocks", + L"Place barrels & |Other junk", + L"Fill area", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", //10 + L"Cycle brush size (|A/|Z)", + L"Raise brush density (|])", + L"Lower brush density (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Terrain", //0 + L"Buildings", + L"Items", + L"Mercs", + L"Map Info", + L"Options", + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text + L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text + L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text + L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text + L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"North Entry Point", //0 + L"West Entry Point", + L"East Entry Point", + L"South Entry Point", + L"Center Entry Point", + L"Isolated Entry Point", + + L"Prime", + L"Night", + L"24Hour", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Panic Trigger1", //0 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", + + L"Pressure Action", + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"No Lock ID", //0 + L"Explosion Trap", + L"Electric Trap", + L"Siren Trap", + L"Silent Alarm", + L"Super Electric Trap", //5 + L"Brothel Siren Trap", + L"Trap Level %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 + L"No map currently loaded.", + L"File: %S, Current Tileset: %s", + L"Enlarge map on loading", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"TOGGLE", //0 + L"VIEWS", + L"SELECTION METHOD", + L"SMART METHOD", + L"BUILDING METHOD", + L"Room#", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Editing lock attributes at map index %d.", + L"Lock ID", + L"Trap Type", + L"Trap Level", + L"Locked", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Pressure Action", //0 + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", + + L"Panic Trigger1", //5 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Status Info Line 1", + L"Status Info Line 2", + L"Status Info Line 3", + L"Status Info Line 4", + L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Prime", + L"Night", + L"24Hrs", //5 + + L"Radius", + + L"Underground", + L"Light Level", + + L"Outdoors", + L"Basement", //10 + L"Caves", + + L"Restricted", + L"Scroll ID", + + L"Destination", + L"Sector", //15 + L"Destination", + L"Bsmt. Level", + L"Dest.", + L"GridNo", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"No action", + L"Lock door", + L"Unlock door", + L"Open door", + L"Close door", + L"Move to gridno", + L"Leave sector", + L"Enter sector", + L"Stay in sector", + L"Sleep", + L"Ignore this!" +}; + +STR16 zDiffNames[5] = +{ + L"Wimp", + L"Easy", + L"Average", + L"Tough", + L"Steroid Users Only" +}; + +STR16 EditMercStat[12] = +{ + L"Max Health", + L"Cur Health", + L"Strength", + L"Agility", + L"Dexterity", + L"Charisma", + L"Wisdom", + L"Marksmanship", + L"Explosives", + L"Medical", + L"Scientific", + L"Exp Level", +}; + + +STR16 EditMercOrders[8] = +{ + L"Stationary", + L"On Guard", + L"Close Patrol", + L"Far Patrol", + L"Point Patrol", + L"On Call", + L"Seek Enemy", + L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Defensive", + L"Brave Loner", + L"Brave Buddy", + L"Cunning Loner", + L"Cunning Buddy", + L"Aggressive", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Merc Name:", //0 + L"Orders:", + L"Combat Attitude:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Merc Colors", //0 + L"Done", + + L"Previous merc standing orders", + L"Next merc standing orders", + + L"Previous merc combat attitude", + L"Next merc combat attitude", //5 + + L"Decrease merc stat", + L"Increase merc stat", +}; + +// TODO.Translate +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Random", //0 + L"Reg Male", + L"Big Male", + L"Stocky Male", + L"Reg Female", + L"NE Tank", //5 + L"NW Tank", + L"Fat Civilian", + L"M Civilian", + L"Miniskirt", + L"F Civilian", //10 + L"Kid w/ Hat", + L"Humvee", + L"Eldorado", + L"Icecream Truck", + L"Jeep", //15 + L"Kid Civilian", + L"Domestic Cow", + L"Cripple", + L"Unarmed Robot", + L"Larvae", //20 + L"Infant", + L"Yng F Monster", + L"Yng M Monster", + L"Adt F Monster", + L"Adt M Monster", //25 + L"Queen Monster", + L"Bloodcat", + L"Humvee", +}; + +// TODO.Translate +STR16 pUpdateMercsInfoText[] = +{ + L" --=ORDERS=-- ", //0 + L"--=ATTITUDE=--", + + L"RELATIVE", + L"ATTRIBUTES", + + L"RELATIVE", + L"EQUIPMENT", + + L"RELATIVE", + L"ATTRIBUTES", + + L"Army", + L"Admin", + L"Elite", //10 + + L"Exp. Level", + L"Life", + L"LifeMax", + L"Marksmanship", + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Leadership", + L"Explosives", //20 + L"Medical", + L"Mechanical", + L"Morale", + + L"Hair color:", + L"Skin color:", + L"Vest color:", + L"Pant color:", + + L"RANDOM", + L"RANDOM", + L"RANDOM", //30 + L"RANDOM", + + L"By specifying a profile index, all of the information will be extracted from the profile ", + L"and override any values that you have edited. It will also disable the editing features ", + L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", + L"extract the number you have typed. A blank field will clear the profile. The current ", + L"number of profiles range from 0 to ", + + L"Current Profile: n/a ", + L"Current Profile: %s", + + L"STATIONARY", + L"ON CALL", //40 + L"ON GUARD", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", + L"RND PT PATROL", + + L"Action", + L"Time", + L"V", + L"GridNo 1", //50 + L"GridNo 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"lock", + L"unlock", + L"open", + L"close", + + L"Click on the gridno adjacent to the door that you wish to %s.", //60 + L"Click on the gridno where you wish to move after you %s the door.", + L"Click on the gridno where you wish to move to.", + L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", + L" Hit ESC to abort entering this line in the schedule.", +}; + +// TODO.Translate +CHAR16 pRenderMercStringsText[][100] = +{ + L"Slot #%d", + L"Patrol orders with no waypoints", + L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"Keine Aktion", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Platzierung wurde nicht kopiert, weil keine Platzierung ausgewählt wurde.", + L"Platzierung kopiert.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Platzierung wurde nicht eingefügt, weil keine Platzierung in den Speicher kopiert wurde.", + L"Platzierung eingefügt.", + L"Platzierung wurde nicht eingefügt, weil die Maximalanzahl für die Platzierungen des Teams erreicht wurde.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Editor beenden?", +}; + +// TODO.Translate +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Are you sure you wish to remove all lights?", //0 + L"Are you sure you wish to reverse the schedules?", + L"Are you sure you wish to clear all of the schedules?", + + L"Clicked Placement Enabled", + L"Clicked Placement Disabled", + + L"Draw High Ground Enabled", //5 + L"Draw High Ground Disabled", + + L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"Random Placement Enabled", + L"Random Placement Disabled", + + L"Removing Treetops", //10 + L"Showing Treetops", + + L"World Raise Reset", + + L"World Raise Set Old", + L"World Raise Set", +}; + +// TODO.Translate +STR16 pPerformSelectedActionText[] = +{ + L"Creating radar map for %S", //0 + + L"Delete current map and start a new basement level?", + L"Delete current map and start a new cave level?", + L"Delete current map and start a new outdoor level?", + + L" Wipe out ground textures? ", +}; + +// TODO.Translate +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 + L"Toggle fake editor lighting ON/OFF", + + L"INSERT", + L"Toggle fill mode ON/OFF", + + L"BKSPC", + L"Undo last change", + + L"DEL", + L"Quick erase object under mouse cursor", + + L"ESC", + L"Exit editor", + + L"PGUP/PGDN", //10 + L"Change object to be pasted", + + L"F1", + L"This help screen", + + L"F10", + L"Save current map", + + L"F11", + L"Load map as current", + + L"+/-", + L"Change shadow darkness by .01", + + L"SHFT +/-", //20 + L"Change shadow darkness by .05", + + L"0 - 9", + L"Change map/tileset filename", + + L"b", + L"Change brush size", + + L"d", + L"Draw debris", + + L"o", + L"Draw obstacle", + + L"r", //30 + L"Draw rocks", + + L"t", + L"Toggle trees display ON/OFF", + + L"g", + L"Draw ground textures", + + L"w", + L"Draw building walls", + + L"e", + L"Toggle erase mode ON/OFF", + + L"h", //40 + L"Toggle roofs ON/OFF", +}; + +// TODO.Translate +STR16 pAutoLoadMapText[] = +{ + L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +// TODO.Translate +STR16 pShowHighGroundText[] = +{ + L"Showing High Ground Markers", + L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = // NUM_ACTIONITEMS = 34 +{ + L"Klaxon Mine", + L"Flare Mine", + L"Teargas Explosion", + L"Stun Explosion", + L"Smoke Explosion", + L"Mustard Gas", + L"Land Mine", + L"Open Door", + L"Close Door", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Small Explosion", + L"Medium Explosion", + L"Large Explosion", + L"Toggle Door", + L"Toggle Action1s", + L"Toggle Action2s", + L"Toggle Action3s", + L"Toggle Action4s", + L"Enter Brothel", + L"Exit Brothel", + L"Kingpin Alarm", + L"Sex with Prostitute", + L"Reveal Room", + L"Local Alarm", + L"Global Alarm", + L"Klaxon Sound", + L"Unlock door", + L"Toggle lock", + L"Untrap door", + L"Tog pressure items", + L"Museum alarm", + L"Bloodcat alarm", + L"Big teargas", +}; +*/ + +// TODO.Translate +STR16 pUpdateItemStatsPanelText[] = +{ + L"Toggle hide flag", //0 + L"No item selected.", + L"Slot available for", + L"random generation.", + L"Keys not editable.", + L"ProfileID of owner", + L"Item class not implemented.", + L"Slot locked as empty.", + L"Status", + L"Rounds", + L"Trap Level", //10 + L"Quantity", + L"Trap Level", + L"Status", + L"Trap Level", + L"Status", + L"Quantity", + L"Trap Level", + L"Dollars", + L"Status", + L"Trap Level", //20 + L"Trap Level", + L"Tolerance", + L"Alarm Trigger", + L"Exist Chance", + L"B", + L"R", + L"S", +}; + +// TODO.Translate +STR16 pSetupGameTypeFlagsText[] = +{ + L"Item appears in both Sci-Fi and Realistic modes", //0 + L"Item appears in Realistic mode only", + L"Item appears in Sci-Fi mode only", +}; + +// TODO.Translate +STR16 pSetupGunGUIText[] = +{ + L"SILENCER", //0 + L"SNIPERSCOPE", + L"LASERSCOPE", + L"BIPOD", + L"DUCKBILL", + L"G-LAUNCHER", //5 +}; + +// TODO.Translate +STR16 pSetupArmourGUIText[] = +{ + L"CERAMIC PLATES", //0 +}; + +// TODO.Translate +STR16 pSetupExplosivesGUIText[] = +{ + L"DETONATOR", +}; + +// TODO.Translate +STR16 pSetupTriggersGUIText[] = +{ + L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp +// TODO.Translate +STR16 pCreateSummaryWindowText[]= +{ + L"Okay", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"LOAD", + L"SAVE", + L"Update", +}; + +// TODO.Translate +STR16 pRenderSectorInformationText[] = +{ + L"Tileset: %s", //0 + L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", + L"Number of items: %d", + L"Number of lights: %d", + L"Number of entry points: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"Number of rooms: %d", + L"Total map population: %d", + L"Enemies: %d", + L"Admins: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Troops: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Elites: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Civilians: %d", //20 + + L"(%d detailed, %d profile -- %d have priority existance)", + + L"Humans: %d", + L"Cows: %d", + L"Bloodcats: %d", + + L"Creatures: %d", + + L"Monsters: %d", + L"Bloodcats: %d", + + L"Number of locked and/or trapped doors: %d", + L"Locked: %d", + L"Trapped: %d", //30 + L"Locked & Trapped: %d", + + L"Civilians with schedules: %d", + + L"Too many exit grid destinations (more than 4)...", + L"ExitGrids: %d (%d with a long distance destination)", + L"ExitGrids: none", + L"ExitGrids: 1 destination using %d exitgrids", + L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 + L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"%d placements have patrol orders without any waypoints defined.", + L"%d placements have waypoints, but without any patrol orders.", + L"%d gridnos have questionable room numbers. Please validate.", + +}; + +// TODO.Translate +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Enemy", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"Panic1", + L"Panic2", + L"Panic3", + L"Norm1", + L"Norm2", + L"Norm3", + L"Norm4", //10 + L"Pressure Actions", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"PRIORITY ENEMY DROPPED ITEMS", + L"None", + + L"TOO MANY ITEMS TO DISPLAY!", + L"NORMAL ENEMY DROPPED ITEMS", + L"TOO MANY ITEMS TO DISPLAY!", + L"None", + L"TOO MANY ITEMS TO DISPLAY!", + L"ERROR: Can't load the items for this map. Reason unknown.", //20 +}; + +// TODO.Translate +STR16 pRenderSummaryWindowText[] = +{ + L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 + L"(NO MAP LOADED).", + L"You currently have %d outdated maps.", + L"The more maps that need to be updated, the longer it takes. It'll take ", + L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"depending on your computer, it may vary.", + L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"There is no sector currently selected.", + + L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"You need to either load an existing map or create a new map before being", + L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 + + L", ground level", + L", underground level 1", + L", underground level 2", + L", underground level 3", + L", alternate G level", + L", alternate B1 level", + L", alternate B2 level", + L", alternate B3 level", + + L"ITEM DETAILS -- sector %s", + L"Summary Information for sector %s:", //20 + + L"Summary Information for sector %s", + L"does not exist.", + + L"Summary Information for sector %s", + L"does not exist.", + + L"No information exists for sector %s.", + + L"No information exists for sector %s.", + + L"FILE: %s", + + L"FILE: %s", + + L"Override READONLY", + L"Overwrite File", //30 + + L"You currently have no summary data. By creating one, you will be able to keep track", + L"of information pertaining to all of the sectors you edit and save. The creation process", + L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"Do you wish to do this now (y/n)?", + + L"No summary info. Creation denied.", + + L"Grid", + L"Progress", //40 + L"Use Alternate Maps", + + L"Summary", + L"Items", +}; + +// TODO.Translate +STR16 pUpdateSectorSummaryText[] = +{ + L"Analyzing map: %s...", +}; + +// TODO.Translate +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Loading map: %s", +}; + +// TODO.Translate +STR16 pReportErrorText[] = +{ + L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +// TODO.Translate +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Generating map information", +}; + +// TODO.Translate +STR16 pSummaryUpdateCallbackText[] = +{ + L"Generating map summary", +}; + +// TODO.Translate +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MAJOR VERSION UPDATE", + L"There are %d maps requiring a major version update.", + L"Updating all outdated maps", +}; + +// TODO.Translate +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] from default tileset %s (%d, %S)", + L"File: %S, subindex: %d (%d, %S)", + L"Tileset: %s", +}; + +// TODO.Translate +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Accept selections (|E|n|t|e|r)", + L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", + L"Scroll window up (|U|p)", + L"Scroll window down (|D|o|w|n)", +}; + +// TODO.Translate +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Small", + L"Medium", + L"Large", + L"XLarge", + L"Width: xx", + L"Area" + }; + +//--- +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Seite 1/2", //0 + L"Seite 2/2", + + L"Seite 1/3", + L"Seite 2/3", + L"Seite 3/3", + + L"Seite 1/1", //5 +}; + +// by Jazz +CHAR16 zGrod[][500] = +{ + L"Roboter", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 Entwicklungsteam", + L"@T,C144,R134,{;Programmierung", + L"@T,C144,R134,{;Grafiken und Sounds", + L"@};(Verschiedene weitere Mods!)", + L"@T,C144,R134,{;Gegenstände", + L"@T,C144,R134,{;Weitere Mitwirkende", + L"@};(Alle weiteren Community-Mitglieder die Ideen und Feedback eingebracht haben!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L".38 Kal", +// L"9mm", +// L".45 Kal", +// L".357 Kal", +// L"12 Kal", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm NATO", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Rakete", +// L"", +// L"", +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L".38 Kal", +// L"9mm", +// L".45 Kal", +// L".357 Kal", +// L"12 Kal", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm N.", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monster", +// L"Rakete", +// L"", // dart +//}; + +CHAR16 WeaponType[][30] = +{ + L"Andere", + L"Pistole", + L"MP", + L"Schwere MP", + L"Gewehr", + L"SSG", + L"SG", + L"LMG", + L"Schrotflinte", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Spielzug Spieler", + L"Spielzug Gegner", + L"Spielzug Monster", + L"Spielzug Miliz", + L"Spielzug Zivilisten", + L"Player_Plan",// planning turn + L"Client #1",//hayden + L"Client #2",//hayden + L"Client #3",//hayden + L"Client #4",//hayden +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s am Kopf getroffen, verliert einen Weisheitspunkt!", + L"%s an der Schulter getroffen, verliert Geschicklichkeitspunkt!", + L"%s an der Brust getroffen, verliert einen Kraftpunkt!", + L"%s an den Beinen getroffen, verliert einen Beweglichkeitspunkt!", + L"%s am Kopf getroffen, verliert %d Weisheitspunkte!", + L"%s an der Schulter getroffen, verliert %d Geschicklichkeitspunkte!", + L"%s an der Brust getroffen, verliert %d Kraftpunkte!", + L"%s an den Beinen getroffen, verliert %d Beweglichkeitspunkte!", + L"Unterbrechung!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //obsolete + L"Verstärkung ist angekommen!", + + // In the following four lines, all %s's are merc names + + L"%s lädt nach.", + L"%s hat nicht genug Action-Punkte!", + L"%s leistet Erste Hilfe. (Rückgängig mit beliebiger Taste.)", + L"%s und %s leisten Erste Hilfe. (Rückgängig mit beliebiger Taste.)", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"zuverlässig", + L"unzuverlässig", + L"Reparatur leicht", + L"Reparatur schwer", + L"große Durchschlagskraft", + L"kleine Durchschlagskraft", + L"feuert schnell", + L"feuert langsam", + L"große Reichweite", + L"kurze Reichweite", + L"leicht", + L"schwer", + L"klein", + L"schneller Feuerstoß", + L"kein Feuerstoß", + L"großes Magazin", + L"kleines Magazin", + + // In the following two lines, all %s's are merc names + + L"%ss Tarnung hat sich abgenutzt.", + L"%ss Tarnung ist weggewaschen.", + + // The first %s is a merc name and the second %s is an item name + + L"Zweite Waffe hat keine Munition!", + L"%s hat %s gestohlen.", + + // The %s is a merc name + + L"%ss Waffe kann keinen Feuerstoß abgeben.", + + L"Sie haben schon eines davon angebracht.", + L"Gegenstände zusammenfügen?", + + // Both %s's are item names + + L"Sie können %s mit %s nicht kombinieren", + + L"Keine", + L"Waffen entladen", // = Removing ammo from weapons on the ground on pressing Shift + F if set in options. + L"Modifikationen", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and your gas mask at the same time. + L"Sie können %s nicht zusammen mit %s benutzen.", // + + L"Der Gegenstand in Ihrem Cursor kann mit anderen Gegenständen verbunden werden, indem Sie ihn in einer der vier Einbaustellen platzieren.", + L"Der Gegenstand in Ihrem Cursor kann mit anderen Gegenständen verbunden werden, indem Sie ihn in einer der vier Einbaustellen platzieren. (Aber in diesem Fall sind die Gegenstände nicht kompatibel.)", + L"Es sind noch Feinde im Sektor!", + L"Geben Sie %s %s", + L"%s am Kopf getroffen!", + L"Kampf abbrechen?", + L"Die Modifikation ist permanent. Weitermachen?", + L"%s fühlt sich frischer!", + L"%s ist auf Murmeln ausgerutscht!", + L"%s konnte %s nicht aus der Hand des Feindes stehlen!", + L"%s hat %s repariert", + L"Unterbrechung für ", + L"Ergeben?", + L"Diese Person will keine Hilfe.", + L"Lieber NICHT!", + L"Wenn Sie zu Skyriders Heli wollen, müssen Sie Söldner einem FAHRZEUG/HELIKOPTER ZUWEISEN.", + L"%s hat nur Zeit, EINE Waffe zu laden", + L"Spielzug Bloodcats", + L"Dauerfeuer", + L"kein Dauerfeuer", + L"genau", + L"ungenau", + L"kein Einzelschuss", + L"Der Feind besitzt keine Gegenstände mehr zum Stehlen!", + L"Der Feind hat keinen Gegenstand in seiner Hand!", + + L"%s's Wüstentarnung ist nicht mehr effektiv.", + L"%s's Wüstentarnung wurde herunter gewaschen.", + + L"%s's Waldtarnung ist nicht mehr effektiv.", + L"%s's Waldtarnung wurde herunter gewaschen.", + + L"%s's Stadttarnung ist nicht mehr effektiv.", + L"%s's Stadttarnung wurde herunter gewaschen.", + + L"%s's Schneetarnung ist nicht mehr effektiv.", + L"%s's Schneetarnung wurde herunter gewaschen.", + L"Sie können %s nicht an dieser Einbaustelle anbringen.", + L"%s passt in keine freie Einbaustelle.", + L"Für diese Tasche ist nicht mehr genug Platz.", + + L"%s hat %s so gut wie möglich repariert.", + L"%s hat %s's %s so gut wie möglich repariert.", + + L"%s hat %s gereinigt.", + L"%s hat %s's %s gereinigt.", + + L"Assignment not possible at the moment", // TODO.Translate + L"No militia that can be drilled present.", + + L"%s hat %s vollständig erkundet.", +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracona", + L"Traconian", +#else + L"Arulco", + L"Arulcan", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes +STR16 sTimeStrings[] = +{ + L"Pause", + L"Normal", + L"5 Min", + L"30 Min", + L"60 Min", + L"6 Std", +}; + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. +STR16 pAssignmentStrings[] = +{ + L"Trupp 1", + L"Trupp 2", + L"Trupp 3", + L"Trupp 4", + L"Trupp 5", + L"Trupp 6", + L"Trupp 7", + L"Trupp 8", + L"Trupp 9", + L"Trupp 10", + L"Trupp 11", + L"Trupp 12", + L"Trupp 13", + L"Trupp 14", + L"Trupp 15", + L"Trupp 16", + L"Trupp 17", + L"Trupp 18", + L"Trupp 19", + L"Trupp 20", + L"Trupp 21", + L"Trupp 22", + L"Trupp 23", + L"Trupp 24", + L"Trupp 25", + L"Trupp 26", + L"Trupp 27", + L"Trupp 28", + L"Trupp 29", + L"Trupp 30", + L"Trupp 31", + L"Trupp 32", + L"Trupp 33", + L"Trupp 34", + L"Trupp 35", + L"Trupp 36", + L"Trupp 37", + L"Trupp 38", + L"Trupp 39", + L"Trupp 40", + L"Dienst", // on active duty + L"Doktor", // administering medical aid + L"Patient", // getting medical aid + L"Fahrzeug", // in a vehicle + L"Transit", // in transit - abbreviated form + L"Repar.", // repairing + L"Radio Scan", // scanning for nearby patrols + L"Üben", // training themselves + L"Miliz", // training a town to revolt + L"M.Miliz", //training moving militia units + L"Trainer", // training a teammate + L"Rekrut", // being trained by someone else + L"Umzug", // move items + L"Betrieb", // operating a strategic facility + L"Essen", // eating at a facility (cantina etc.) + L"Pause", // Resting at a facility + L"Verhör", // Flugente: interrogate prisoners + L"Tot", // dead + L"Koma", // abbreviation for incapacitated //LOOTF - "Unfähig" klingt schlimm. Geändert auf Koma. Vorschläge? + L"Gefangen", // Prisoner of war - captured + L"Hospital", // patient in a hospital + L"Leer", //Vehicle is empty + L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate + L"Propag.", // facility: spread propaganda + L"Propag.", // facility: spread propaganda (globally) + L"Rumours", // facility: gather information + L"Propag.", // spread propaganda + L"Rumours", // gather information + L"Command", // militia movement orders + L"Diagnose", // disease diagnosis //TODO.Translate + L"Treat D.", // treat disease among the population + L"Doktor", // administering medical aid + L"Patient", // getting medical aid + L"Repar.", // repairing + L"Fortify", // build structures according to external layout // TODO.Translate + L"Train W.", + L"Hide", // TODO.Translate + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", // TODO.Translate + L"Explore", // TODO.Translate + L"Event",// rftr: merc is on a mini event // TODO: translate + L"Mission", // rftr: rebel command +}; + +STR16 pMilitiaString[] = +{ + L"Miliz", // the title of the militia box + L"Ohne Aufgabe", //the number of unassigned militia troops + L"Mit Feinden im Sektor können Sie keine Miliz einsetzen!", + L"Einige Milizen wurden keinem Sektor zugewiesen. Möchten Sie diese Einheiten auflösen?", +}; + +STR16 pMilitiaButtonString[] = +{ + L"Autom.", // auto place the militia troops for the player + L"Fertig", // done placing militia troops + L"Auflösen", // HEADROCK HAM 3.6: Disband militia + L"Zuordnungen aufh.", // move all milita troops to unassigned pool +}; + +STR16 pConditionStrings[] = +{ + L"Sehr gut", //the state of a soldier .. excellent health + L"Gut", // good health + L"Mittel", // fair health + L"Verwundet", // wounded health + L"Erschöpft", // tired + L"Verblutend", // bleeding to death + L"Bewusstlos", // knocked out + L"Stirbt", // near death + L"Tot", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"Dienst", // set merc on active duty + L"Patient", // set as a patient to receive medical aid + L"Fahrzeug", // tell merc to enter vehicle + L"Unbewacht", // let the escorted character go off on their own + L"Abbrechen", // close this menu +}; + +// look at pAssignmentString above for comments +STR16 pPersonnelAssignmentStrings[] = +{ + L"Trupp 1", + L"Trupp 2", + L"Trupp 3", + L"Trupp 4", + L"Trupp 5", + L"Trupp 6", + L"Trupp 7", + L"Trupp 8", + L"Trupp 9", + L"Trupp 10", + L"Trupp 11", + L"Trupp 12", + L"Trupp 13", + L"Trupp 14", + L"Trupp 15", + L"Trupp 16", + L"Trupp 17", + L"Trupp 18", + L"Trupp 19", + L"Trupp 20", + L"Trupp 21", + L"Trupp 22", + L"Trupp 23", + L"Trupp 24", + L"Trupp 25", + L"Trupp 26", + L"Trupp 27", + L"Trupp 28", + L"Trupp 29", + L"Trupp 30", + L"Trupp 31", + L"Trupp 32", + L"Trupp 33", + L"Trupp 34", + L"Trupp 35", + L"Trupp 36", + L"Trupp 37", + L"Trupp 38", + L"Trupp 39", + L"Trupp 40", + L"Dienst", + L"Doktor", + L"Patient", + L"Fahrzeug", + L"Transit", + L"Reparieren", + L"Radio Scan", // radio scan + L"Üben", + L"Miliz", + L"Trainiere Mobile Miliz", + L"Trainer", + L"Rekrut", + L"Gegenstand verschieben", + L"Betriebspersonal", + L"Essen", // eating at a facility (cantina etc.) + L"Betriebspause", + L"Gefangene verhören", // Flugente: interrogate prisoners + L"Tot", + L"Koma", //LOOTF - s.o. + L"Gefangen", + L"Hospital", + L"Leer", // Vehicle is empty + L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) + L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda + L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda (globally) + L"Gathering Rumours",// TODO.Translate // facility: gather rumours + L"Spreading Propaganda",// TODO.Translate // spread propaganda + L"Gathering Rumours",// TODO.Translate // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Doktor", + L"Patient", + L"Reparieren", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + +// refer to above for comments +STR16 pLongAssignmentStrings[] = +{ + L"Trupp 1", + L"Trupp 2", + L"Trupp 3", + L"Trupp 4", + L"Trupp 5", + L"Trupp 6", + L"Trupp 7", + L"Trupp 8", + L"Trupp 9", + L"Trupp 10", + L"Trupp 11", + L"Trupp 12", + L"Trupp 13", + L"Trupp 14", + L"Trupp 15", + L"Trupp 16", + L"Trupp 17", + L"Trupp 18", + L"Trupp 19", + L"Trupp 20", + L"Trupp 21", + L"Trupp 22", + L"Trupp 23", + L"Trupp 24", + L"Trupp 25", + L"Trupp 26", + L"Trupp 27", + L"Trupp 28", + L"Trupp 29", + L"Trupp 30", + L"Trupp 31", + L"Trupp 32", + L"Trupp 33", + L"Trupp 34", + L"Trupp 35", + L"Trupp 36", + L"Trupp 37", + L"Trupp 38", + L"Trupp 39", + L"Trupp 40", + L"Dienst", + L"Doktor", + L"Patient", + L"Fahrzeug", + L"Transit", + L"Reparieren", + L"Radio Scan", // radio scan + L"Üben", + L"Miliz", + L"Trainiere Mobile", + L"Trainer", + L"Rekrut", + L"Umzug", // move items + L"Betriebspersonal", + L"Betriebspause", + L"Gefangene verhören", // Flugente: interrogate prisoners + L"Tot", + L"Unfähig", + L"Gefangen", + L"Hospital", // patient in a hospital + L"Leer", // Vehicle is empty + L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) + L"Spread Propaganda",// TODO.Translate // facility: spread propaganda + L"Spread Propaganda",// TODO.Translate // facility: spread propaganda (globally) + L"Gather Rumours",// TODO.Translate // facility: gather rumours + L"Spread Propaganda",// TODO.Translate // spread propaganda + L"Gather Rumours",// TODO.Translate // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Doktor", + L"Patient", + L"Reparieren", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + +// the contract options +STR16 pContractStrings[] = +{ + L"Vertragsoptionen:", + L"", // a blank line, required + L"Einen Tag anbieten", // offer merc a one day contract extension + L"Eine Woche anbieten", // 1 week + L"Zwei Wochen anbieten", // 2 week + L"Entlassen", //end merc's contract (used to be "Terminate") + L"Abbrechen", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"gefangen", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"KRAFT", //The merc's strength attribute. Others below represent the other attributes. + L"GESCHICKLICHKEIT", + L"BEWEGLICHKEIT", + L"WEISHEIT", + L"TREFFSICHERHEIT", + L"MEDIZIN", + L"TECHNIK", + L"FÜHRUNGSQUALITÄT", + L"SPRENGSTOFFE", + L"ERFAHRUNGSSTUFE", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Rüstung", // the armor rating of the merc + L"Gew.", // the weight the merc is carrying + L"Tarn.", // the merc's camouflage rating + L"Tarnung:", + L"Rüstung:", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Bew", // the abbreviated version of : agility + L"Ges", // dexterity + L"Krf", // strength + L"Fhr", // leadership + L"Wsh", // wisdom + L"Erf", // experience level + L"Trf", // marksmanship skill + L"Tec", // mechanical skill + L"Spr", // explosive skill + L"Med", // medical skill +}; + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Aufgabe", // the mercs current assignment + L"Vertrag", // the contract info about the merc + L"Gesundh.", // the health level of the current merc + L"Moral", // the morale of the current merc + L"Zustand", // the condition of the current vehicle + L"Tank", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Üben", // tell merc to train self + L"Miliz", // tell merc to train town // + L"Trainer", // tell merc to act as trainer + L"Rekrut", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Schussrate:", // the allowable rate of fire for a merc who is guarding + L" Aggressiv feuern", // the merc can be aggressive in their choice of fire rates + L" Munition sparen", // conserve ammo + L" Nur bei Bedarf feuern", // fire only when the merc needs to + L"Andere Optionen:", // other options available to merc + L" Rückzug möglich", // merc can retreat + L" Deckung möglich", // merc is allowed to seek cover + L" Kann Kameraden helfen", // merc can assist teammates + L"Fertig", // done with this menu + L"Abbruch", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player +STR16 pOtherGuardMenuStrings[] = +{ + L"Schussrate:", + L" *Aggressiv feuern*", + L" *Munition sparen*", + L" *Nur bei Bedarf feuern*", + L"Andere Optionen:", + L" *Rückzug möglich*", + L" *Deckung möglich*", + L" *Kann Kameraden helfen*", + L"Fertig", + L"Abbruch", +}; + +STR16 pAssignMenuStrings[] = +{ + L"Dienst", // merc is on active duty + L"Doktor", // the merc is acting as a doctor + L"Disease", // merc is a doctor doing diagnosis TODO.Translate + L"Patient", // the merc is receiving medical attention + L"Fahrzeug", // the merc is in a vehicle + L"Repar.", // the merc is repairing items + L"Radio Scan", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"Snitch", // TODO.Translate // anv: snitch actions + L"Training", // the merc is training + L"Miliz", // all things militia + L"Umzug", // move items + L"Fortify", // fortify sector // TODO.Translate + L"Intel", // covert assignments // TODO.Translate + L"Administer", // TODO.Translate + L"Explore", // TODO.Translate + L"Betrieb", // the merc is using/staffing a facility + L"Abbrechen", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"Angreifen", // set militia to aggresive + L"Position halten", // set militia to stationary + L"Rückzug", // retreat militia + L"An meine Position", // retreat militia + L"Auf den Boden", // retreat militia + L"Ducken", + L"In Deckung gehen", + L"Move to", // TODO.Translate + L"Alle: Angreifen", + L"Alle: Position halten", + L"Alle: Rückzug", + L"Alle: An meine Position", + L"Alle: Ausschwärmen", + L"Alle: Auf den Boden", + L"Alle: Ducken", + L"Alle: In Deckung gehen", + //L"All: Find items", + L"Abbrechen", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = +{ + // radio operator + L"Artillerie befehligen", + L"Kommunikation stören", + L"Frequenzen scannen", + L"Abhöraktion starten", + L"Verstärkung rufen", + L"Radiogerät ausschalten", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", // TODO.Translate + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Spotter", + L"Fokus", + L"Greifen", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Artillerieschlag befehligen von einem Sektor...", + L"Alle Funkfrequenzen mit weißem Rauschen füllen, sodass eine Kommunikation nicht mehr möglich ist.", + L"Nach Störsignalen scannen.", + L"Das Radiogerät verwenden, um feindliche Bewegungen zu orten.", + L"Verstärkung aus dem Nachbarsektor anfordern.", + L"Radiogerät ausschalten.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", // TODO.Translate + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Bestimmtes Gebiet beobachten, damit Scharfschützen einen Bonus auf deren Treffsicherheit erhalten.", + L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Benötigt:\n", + L" - %d AP\n", + L" - %s\n", + L" - %s oder höher\n", + L" - %s oder höher oder\n", + L" - %d Minuten um fertig zu sein\n", + L" - Mörser Positionen in Nachbarsektoren\n", + L" - %s |o|d|e|r %s |u|n|d %s oder %s oder höher\n", + L" - besessen von einem Dämon", + L" - a gun-related trait\n", // TODO.Translate + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = // TODO.Translate +{ + L"Militia", + L"Other Squads", + L"Cancel", + L"%d Militia", + L"All Militia", + + L"More", // TODO.Translate + L"Corpse: %s", // TODO.Translate +}; + +// TODO.Translate +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Team Informant", + L"Town Assignment", + L"Cancel", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Discuss snitch's behaviour towards his teammates.", + L"Take an assignment in this sector.", + L"Cancel", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Report complaints", + L"Don't report", + L"Prevent misbehaviour", + L"Ignore misbehaviour", + L"Cancel", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Report any complaints you hear from other mercs to your commander.", + L"Don't report anything.", + L"Try to stop other mercs from getting wasted and scrounging.", + L"Don't care what other mercs do.", + L"Cancel", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Spread propaganda", + L"Gather rumours", + L"Cancel", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", + L"Keep an ear to the ground on any rumours about enemy forces activity.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = // TODO.Translate +{ + L"Interrogate admins", + L"Interrogate troops", + L"Interrogate elites", + L"Interrogate officers", + L"Interrogate generals", + L"Interrogate civilians", + L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s was exposed as a snitch but managed to notice it and get out alive.", + L"%s was exposed as a snitch but managed to defuse situation and get out alive.", + L"%s was exposed as a snitch but managed to avoid assassination attempt.", + L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", + + L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", + L"%s was exposed as a snitch and almost beaten to death before guards saved him.", + L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", + L"%s was exposed as a snitch and strangled to death before guards saved him.", + + L"%s was exposed as a snitch and drowned in toilet by other inmates.", + L"%s was exposed as a snitch and beaten to death by other inmates.", + L"%s was exposed as a snitch and shanked to death by other inmates.", + L"%s was exposed as a snitch and strangled to death by other inmates.", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s heard rumours about enemy activity in %d sectors.", + +}; +// /TODO.Translate + +STR16 pRemoveMercStrings[] ={ + L"Söldner entfernen", // remove dead merc from current team + L"Abbrechen", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Gesundheit", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Kraft", + L"Führungsqualität", + L"Treffsicherheit", + L"Technik", + L"Sprengstoffe", + L"Medizin", + L"Abbrechen", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Üben", // train yourself + L"Train workers", // TODO.Translate + L"Trainer", // train your teammates + L"Rekrut", // be trained by an instructor + L"Abbrechen", // cancel this menu +}; + +STR16 pSquadMenuStrings[] = +{ + L"Trupp 1", + L"Trupp 2", + L"Trupp 3", + L"Trupp 4", + L"Trupp 5", + L"Trupp 6", + L"Trupp 7", + L"Trupp 8", + L"Trupp 9", + L"Trupp 10", + L"Trupp 11", + L"Trupp 12", + L"Trupp 13", + L"Trupp 14", + L"Trupp 15", + L"Trupp 16", + L"Trupp 17", + L"Trupp 18", + L"Trupp 19", + L"Trupp 20", + L"Trupp 21", + L"Trupp 22", + L"Trupp 23", + L"Trupp 24", + L"Trupp 25", + L"Trupp 26", + L"Trupp 27", + L"Trupp 28", + L"Trupp 29", + L"Trupp 30", + L"Trupp 31", + L"Trupp 32", + L"Trupp 33", + L"Trupp 34", + L"Trupp 35", + L"Trupp 36", + L"Trupp 37", + L"Trupp 38", + L"Trupp 39", + L"Trupp 40", + L"Abbrechen", +}; + +STR16 pPersonnelTitle[] = +{ + L"Personal", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Gesundheit: ", // Stat: Health of merc + L"Beweglichkeit: ", // Stat: Agility + L"Geschicklichkeit: ", // Stat: Dexterity + L"Kraft: ", // Stat: Strength + L"Führungsqualität: ", // Stat: Leadership + L"Weisheit: ", // Stat: Wisdom + L"Erfahrungsstufe: ", // Stat: Experience level + L"Treffsicherheit: ", // Stat: Marksmanship + L"Technik: ", // Stat: Mechanical + L"Sprengstoffe: ", // Stat: Explosives + L"Medizin: ", // Stat: Medical + L"Med. Vorsorge: ", // amount of medical deposit put down on the merc + L"Laufzeit: ", // time remaining on current contract + L"Getötet: ", // number of kills by merc + L"Mithilfe: ", // number of assists on kills by merc + L"Tgl. Kosten:", // daily cost of merc + L"Gesamtkosten:", // total cost of merc + L"Vertrag:", // cost of current contract + L"Diensttage:", // total service rendered by merc + L"Schulden:", // amount left on MERC merc to be paid + L"Trefferquote:", // percentage of shots that hit target + L"Einsätze:", // number of battles fought + L"Verwundungen:", // number of times merc has been wounded + L"Fähigkeiten:", // Traits + L"Keine Fähigkeiten:", // No traits + L"Aktivitäten:", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + // GETÖTET + // 0 + L"Elite Soldaten: %d\n", + L"Reguläre Soldaten: %d\n", + L"Admin Soldaten: %d\n", + L"Feindliche Gruppen: %d\n", + L"Monster: %d\n", + L"Panzer: %d\n", + L"Andere: %d\n", + + // MITHILFE + // 7 + L"Söldner: %d\n", + L"Miliz: %d\n", + L"Andere: %d\n", + + // TREFFERQUOTE + // 10 + L"Schüsse gefeuert: %d\n", + L"Raketen gefeuert: %d\n", + L"Granaten geworfen: %d\n", + L"Messer geworfen: %d\n", + L"Klinge attakiert: %d\n", + L"Nahkampf attakiert: %d\n", + L"Gelandete Treffer: %d\n", + + // AKTIVITÄTEN + // 17 + L"Schlösser geknackt: %d\n", + L"Schlösser gebrochen: %d\n", + L"Fallen entschärft: %d\n", + L"Sprenstoffe entzündet: %d\n", + L"Gegenstände repariert: %d\n", + L"Gegenstände kombiniert: %d\n", + L"Gegenstände gestohlen: %d\n", + L"Miliz trainiert: %d\n", + L"Soldaten verbunden: %d\n", + L"Operation gemacht: %d\n", + L"Personen bekanntgemacht: %d\n", + L"Sektoren erkundet: %d\n", + L"Hinterhalte vermieden: %d\n", + L"Aufträge erledigt: %d\n", + + // EINSÄTZE + // 31 + L"Taktische Kämpfe: %d\n", + L"Automatische Kämpfe: %d\n", + L"Fluchtversuche: %d\n", + L"Erfolgreiche Hinterhalte: %d\n", + L"Schwerster Kampf: %d Feinde\n", + + // VERWUNDUNGEN + // 36 + L"Angeschossen: %d\n", + L"Angestochen: %d\n", + L"Geschlagen: %d\n", + L"Explosionsverletzungen: %d\n", + L"Schaden erlitten in Anlagen: %d\n", + L"Operationen ertragen: %d\n", + L"Unfälle in Anlagen: %d\n", + + // 43 + L"Charakter:", + L"Schwächen:", + + L"Persönlichkeit:", + + L"Zombies: %d\n", + + L"Werdegang:", + L"Personalität:", + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", + L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + L"Keine Fähigkeiten", + L"Schlösser knacken", + L"Nahkampf", + L"Elektronik", + L"Nachteinsatz", + L"Werfen", + L"Lehren", + L"Schwere Waffen", + L"Autom. Waffen", + L"Schleichen", + L"Geschickt", + L"Dieb", + L"Kampfsport", + L"Messer", + L"Scharfschütze", + L"Getarnt", + L"(Experte)", +}; + +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"Keine Fertigkeit", + + L"MG-Schütze", + L"Grenadier", + L"Präzisionsschütze", + L"Pfadfinder", + L"Pistolenschütze", + L"Faustkämpfer", + L"Gruppenführer", + L"Mechaniker", + L"Sanitäter", + // Minor traits + L"Beidhänder", + L"Messerkämpfer", + L"Messerwerfer", + L"Nachtmensch", + L"Schleicher", + L"Läufer", + L"Kraftsportler", + L"Sprengmeister", + L"Ausbilder", + L"Aufklärer", + // covert ops is a major trait that was added later + L"Geheimagent", + // new minor traits + L"Funker", // 21 + L"Snitch", // 22 // TODO.Translate + L"Survival", + + // second names for major skills + L"MG-Veteran", // 24 + L"Artillerist", + L"Scharfschütze", + L"Jäger", + L"Revolverheld", + L"Kampfsportler", + L"Zugführer", + L"Ingenieur", + L"Arzt", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"Spion", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch(minor trait) + L"Placeholder", // for survival (minor trait) + L"Mehr...", // 47 + L"Intel", // for INTEL // TODO.Translate + L"Disguise", // for DISGUISE + L"diverse", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate +}; + +// This is pop up help text for the options that are available to the merc +STR16 pTacticalPopupButtonStrings[] = +{ + L"|Stehen/Gehen", + L"Kauern/Kauernd bewegen (|C)", + L"Stehen/|Rennen", + L"Hinlegen/Kriechen (|P)", + L"B|licken", + L"Aktion", + L"Reden", + L"Untersuchen (|C|t|r|l)", + + //Pop up door menu + L"Manuell öffnen", + L"Auf Fallen untersuchen", + L"Dietrich", + L"Mit Gewalt öffnen", + L"Falle entschärfen", + L"Abschließen", + L"Aufschließen", + L"Schloss aufsprengen", + L"Brecheisen benutzen", + L"Rückgängig (|E|s|c)", + L"Schließen", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. +STR16 pDoorTrapStrings[] = +{ + L"keine Falle", + L"eine Sprengstofffalle", + L"eine elektrische Falle", + L"eine Falle mit Sirene", + L"eine Falle mit stummem Alarm", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. +STR16 pContractExtendStrings[] = +{ + L"1 Tag", + L"1 Woche", + L"2 Wochen", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Charakter auswählen", + L"Söldner einteilen", + L"Marschroute", + + //The new 'c' key activates this option. Either reword this string to include a 'c' in it, or leave as is. + L"Vertrag für Söldner (|c)", + + L"Söldner entfernen", + L"Schlafen", +}; + +// volumes of noises +STR16 pNoiseVolStr[] = +{ + L"LEISE", + L"DEUTLICH", + L"LAUT", + L"SEHR LAUT", +}; + +// types of noises +STR16 pNoiseTypeStr[] = +{ + L"EIN UNBEKANNTES GERÄUSCH", + L"EINE BEWEGUNG", + L"EIN KNARREN", + L"EIN KLATSCHEN", + L"EINEN AUFSCHLAG", + L"EINEN SCHUSS", + L"EINE EXPLOSION", + L"EINEN SCHREI", + L"EINEN AUFSCHLAG", + L"EINEN AUFSCHLAG", + L"EIN ZERBRECHEN", + L"EIN ZERSCHMETTERN", +}; + +// Directions that are used throughout the code for identification. +STR16 pDirectionStr[] = +{ + L"NORDOSTEN", + L"OSTEN", + L"SÜDOSTEN", + L"SÜDEN", + L"SÜDWESTEN", + L"WESTEN", + L"NORDWESTEN", + L"NORDEN", +}; + +// These are the different terrain types. +STR16 pLandTypeStrings[] = +{ + L"Stadt", + L"Straße", + L"Ebene", + L"Wüste", + L"Lichter Wald", + L"Dichter Wald", + L"Sumpf", + L"See/Ozean", + L"Hügel", + L"Unpassierbar", + L"Fluss", //river from north to south + L"Fluss", //river from east to west + L"Fremdes Land", + //NONE of the following are used for directional travel, just for the sector description. + L"Tropen", + L"Farmland", + L"Ebene, Straße", + L"Wald, Straße", + L"Farm, Straße", + L"Tropen, Straße", + L"Wald, Straße", + L"Küste", + L"Berge, Straße", + L"Küste, Straße", + L"Wüste, Straße", + L"Sumpf, Straße", + L"Wald, Raketen", + L"Wüste, Raketen", + L"Tropen, Raketen", + L"Meduna, Raketen", + + //These are descriptions for special sectors + L"Cambria Hospital", + L"Drassen Flugplatz", + L"Meduna Flugplatz", + L"Raketen", + L"Tankstelle", // refuel site + L"Rebellenlager", //The rebel base underground in sector A10 + L"Tixa, Keller", //The basement of the Tixa Prison (J9) + L"Monsterhöhle", //Any mine sector with creatures in it + L"Orta, Keller", //The basement of Orta (K4) + L"Tunnel", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Bunker", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + // The first %s can either be bloodcats or enemies. + L"", //Unused + L"%s wurden entdeckt in Sektor %c%d und ein weiterer Trupp wird gleich ankommen.", //STR_DETECTED_SINGULAR + L"%s wurden entdeckt in Sektor %c%d und weitere Trupps werden gleich ankommen.", //STR_DETECTED_PLURAL + L"Gleichzeitige Ankunft koordinieren?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"Feind bietet die Chance zum Aufgeben an.", //STR_ENEMY_SURRENDER_OFFER + L"Feind hat restliche bewusstlose Söldner gefangen genommen.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Rückzug", //The retreat button //STR_AR_RETREAT_BUTTON + L"Fertig", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"VERTEIDIGUNG", //STR_AR_DEFEND_HEADER + L"ANGRIFF", //STR_AR_ATTACK_HEADER + L"BEGEGNUNG", //STR_AR_ENCOUNTER_HEADER + L"Sektor", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"SIEG!", //STR_AR_OVER_VICTORY + L"NIEDERLAGE!", //STR_AR_OVER_DEFEAT + L"AUFGEGEBEN!", //STR_AR_OVER_SURRENDERED + L"GEFANGENGENOMMEN!", //STR_AR_OVER_CAPTURED + L"AUSGEWICHEN!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Miliz", //STR_AR_MILITIA_NAME, + L"Elite", //STR_AR_ELITE_NAME, + L"Soldat", //STR_AR_TROOP_NAME, + L"Admin.", //STR_AR_ADMINISTRATOR_NAME, + L"Monster", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Zeit verstrichen", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"IST AUSGEWICHEN", //STR_AR_MERC_RETREATED, + L"WEICHT AUS", //STR_AR_MERC_RETREATING, + L"RÜCKZUG", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Autom. Kampf", //STR_PB_AUTORESOLVE_BTN, + L"Gehe zu Sektor", //STR_PB_GOTOSECTOR_BTN, + L"Rückzug", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"FEINDBEGEGNUNG", + L"FEINDLICHE INVASION", + L"FEINDLICHER HINTERHALT", + L"FEINDLICHEN SEKTOR BETRETEN", + L"MONSTERANGRIFF", + L"BLOODCAT-HINTERHALT", + L"BLOODCAT-HÖHLE BETRETEN", + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Ort", + L"Feinde", + L"Söldner", + L"Miliz", + L"Monster", + L"Bloodcats", + L"Sektor", + L"Keine", //If there are no uninvolved mercs in this fight. + L"n.a.", //Acronym of Not Applicable + L"T", //One letter abbreviation of day + L"h", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Räumen", + L"Verteilen", + L"Gruppieren", + L"Fertig", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"Söldner räumen ihre Positionen\n und können manuell neu platziert werden. (|C)", + L"Söldner |schwärmen in alle Richtungen aus\n wenn der Button gedrückt wird.", + L"Mit diesem Button können Sie wählen, wo die Söldner |gruppiert werden sollen.", + L"Klicken Sie auf diesen Button, wenn Sie die\n Positionen der Söldner gewählt haben. (|E|n|t|e|r)", + L"Sie müssen alle Söldner positionieren\n bevor die Schlacht beginnt.", + + //Various strings (translate word for word) + + L"Sektor", + L"Eintrittspunkte wählen", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"Das sieht nicht gut aus. Gelände ist unzugänglich. Versuchen Sie es an einer anderen Stelle.", + L"Platzieren Sie Ihre Söldner in den markierten Sektor auf der Karte.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"ist angekommen im Sektor", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"Entscheidet Schlacht |automatisch für Sie\nohne Karte zu laden.", + L"Sie können den PC-Kampf-Modus nicht benutzen, während Sie\neinen vom Feind verteidigten Ort angreifen.", + L"Sektor b|etreten und Feind in Kampf verwickeln.", + L"Gruppe zum vorigen Sektor zu|rückziehen.", //singular version + L"Alle Gruppen zum vorigen Sektor zu|rückziehen.", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"Feinde attackieren Ihre Miliz im Sektor %c%d.", + //%c%d is the sector -- ex: A9 + L"Monster attackieren Ihre Miliz im Sektor %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Monster attackieren und töten %d Zivilisten im Sektor %s.", + //%s is the sector -- ex: A9 + L"Feinde attackieren Ihre Söldner im Sektor %s. Alle Söldner sind bewusstlos!", + //%s is the sector -- ex: A9 + L"Monster attackieren Ihre Söldner im Sektor %s. Alle Söldner sind bewusstlos!", + + // Flugente: militia movement forbidden due to limited roaming // TODO.Translate + L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", + L"War room isn't staffed - militia move aborted!", + + L"Robot", //STR_AR_ROBOT_NAME, // TODO: translate + L"Panzer", //STR_AR_TANK_NAME, + L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate + + L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", // TODO.Translate + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"Tag", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2]= +{ + L"gefunden im Sektor:", + L"gefunden am:", +}; + +//The headers used to describe various weapon statistics. +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"Status:", + L"Gew.:", //weight + L"AP Kosten", + L"Reichw.:", // Range + L"Schaden:", + L"Anzahl:", // Number of bullets left in a magazine + L"AP:", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Genauigkeit:", //9 + L"Reichweite:", //10 + L"Schaden:", //11 + L"Gewicht:", //12 + L"Bet. Schaden:", //13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + L"Zubehör:", //14 // Attachments + L"AUTO/5:", //15 + L"Verf. Munition:", //16 + + L"Standard:", //17 //WarmSteel - So we can also display default attachments + L"Schmutz:", // 18 //added by Flugente + L"Platz:", // 19 //space left on Molle items + L"Streumuster:", // 20 + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box + +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + L"|R|e|i|c|h|w|e|i|t|e\n \nDie effektive Reichweite dieser Waffe\nAngriffe jenseits dieser Reichweite führt zu drastischen Genauigkeitseinbußen.\n \nHöher ist besser.", + L"|S|c|h|a|d|e|n\n \nDas Schadenspotential der Waffe.\nDie Waffe wird in der Regel diesen \n(oder ähnlichen) Schaden an ungeschützten Zielen verursachen.\n \nHöher ist besser.", + L"|G|e|n|a|u|i|g|k|e|i|t\n \nDieser Wert gibt die Exaktheit der Waffe\n(Trefferwahrscheinlichkeit) an, je nachdem,\nwie gut oder schlecht das Design der Waffe ist.\n \nHöher ist besser.", + L"|Z|i|e|l|g|e|n|a|u|i|g|k|e|i|t\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHöher ist besser.", + L"|Z|i|e|l|e|n|-|M|o|d|i|f|i|k|a|t|o|r\n \nEin Modifikator, welcher die Wirksamkeit\nder Waffe bei jedem Zielgenauigkeits-Klick verändert\n \nHöher ist besser.", + L"|M|i|n|. |R|e|i|c|h|w|e|i|t|e |f|ü|r |Z|i|e|l|e|n|-|B|o|n|u|s\n \nDer minimale Bereich zum Ziel welcher erforderlich ist,\num den Zielen-Modifikator verwenden zu können.\n \nNiedriger ist besser.", + L"|T|r|e|f|f|e|r|-|M|o|d|i|f|i|k|a|t|o|r\n \nEin Modifikator zur Trefferwahrscheinlichkeit\nbei jedem Schuss der mit dieser Waffe abgefeuert wird.\n \nHöher ist besser.", + L"|O|p|t|i|m|a|l|e |L|a|s|e|r |R|e|i|c|h|w|e|i|t|e\n \nDie Entfernung (in Felder) bei der die angebrachte Lasermarkierung\nauf der Waffe die beste Effektivität erreicht.\n \nHöher ist besser.", + L"|M|ü|n|d|u|n|g|s|f|e|u|e|r |U|n|t|e|r|d|r|ü|c|k|u|n|g\n \nWenn dieses Symbol erscheint, bedeutet dies, dass die Waffe\nkein Mündungsfeuer verursacht, wenn geschossen wird.", + L"|L|a|u|t|s|t|ä|r|k|e\n \nAngriffe mit dieser Waffe können bis zu der\nangezeigten Distanz (in Felder) gehört werden.\n \nNiedriger ist besser.", + L"|Z|u|v|e|r|l|ä|s|s|i|g|k|e|i|t\n \nDieser Wert zeigt an, wie schnell die Waffe\nim Kampf bei Benützung schadhaft werden kann.\n \nHöher ist besser.", + L"|R|e|p|a|r|a|t|u|r|l|e|i|c|h|t|i|g|k|e|i|t\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur Techniker und spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", + L"", //12 + L"APs zum Anlegen", + L"APs für Einzelschuss", + L"APs für Feuerstoß", + L"APs für Autofeuer", + L"APs zum Nachladen", + L"APs zum manuellen Nachladen", + L"Feuerstoß-Streuung (Niedriger ist besser)", //19 + L"Zweibein-Modifikator", + L"Autofeuer: Schüsse je 5 AP", + L"Autofeuer-Streuung (Niedriger ist besser)", + L"Burst/Auto-Streuung (Niedriger ist besser)", //23 + L"APs zum Werfen", + L"APs zum Abschießen", + L"APs zum Stechen", + L"Kein Einzelschuss!", + L"Kein Feuerstoß!", + L"Kein Autofeuer!", + L"APs zum Schlagen", + L"", + L"|R|e|p|a|r|a|t|u|r|l|e|i|c|h|t|i|g|k|e|i|t\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Gegenstandsgrößen-Modifikator (Niedriger ist besser)", + L"Zuverlässigkeits-Modifikator", + L"Schalldämpfung (Niedriger ist besser)", + L"Mündungsfeuerdämpfung", + L"Zweibein-Modifikator", + L"Reichweiten-Modifikator", + L"Treffer-Modifikator", + L"Beste Laser-Reichweite", + L"Zielen-Bonus-Modifikator", + L"Schusszahlmodifikator Feuerstoß", //LOOTF - geändert von "Feuerstoßgrößen-Modifikator" + L"Feuerstoßstreuungs-Modifikator", + L"Dauerfeuerstreuungs-Modifikator", + L"AP-Modifikator", + L"AP-Modifikator Feuerstoß (Niedriger ist besser)", //LOOTF - geändert von "AP für Feuerstoß Modifikator.." + L"AP-Modifikator Dauerfeuer (Niedriger ist besser)", //LOOTF - geändert von "AP für Autofeuer Modifikator.." + L"AP-Modifikator Waffenvorhalt", //LOOTF - geändert von "AP für Anlegen Modifikator" + L"AP-Modifikator Nachladen", //LOOTF - geändert von "AP für Nachladen Mofifikator" + L"Magazingrößen-Modifikator", + L"AP-Modifikator für Angriff", //LOOTF - geändert von "AP für Angriff Modifikator" + L"Schaden-Modifikator", + L"Nahkampf-Modifikator", + L"Waldtarnung", + L"Stadt-Tarnung", + L"Wüstentarnung", + L"Schneetarnung", + L"Anschleichen-Modifikator", + L"Hörweiten-Modifikator", + L"Sichtweiten-Modifikator", + L"Tagsichtweiten-Modifikator", + L"Nachtsichtweiten-Modifikator", + L"Grelles-Licht-Modifikator", + L"Höhlensicht-Modifikator", + L"Tunnelblick-Modifikator (Niedriger ist besser)", + L"Minimale Reichweite für Zielbonus", + L"Hold |C|t|r|l to compare items", // item compare help text // TODO.Translate + L"Gesamtgewicht: %4.1f kg", // 35 +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"In ", + L"PERFEKTEM", + L"EXZELLENTEM", + L"GUTEM", + L"NORMALEM", + L"NICHT GUTEM", + L"SCHLECHTEM", + L"SCHRECKLICHEM", + L" Zustand." +}; + +//The headers used for the merc's money. +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Betrag", + L"verbleibend:", //this is the overall balance + L"Betrag", + L"teilen:", // the amount he wants to separate from the overall balance to get two piles of money + + L"Konto", + L"Saldo:", + L"Betrag", + L"abheben:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. +CHAR16 zHealthStr[][13] = //used to be 10 +{ + L"STIRBT", // >= 0 + L"KRITISCH", // >= 15 + L"SCHLECHT", // >= 30 + L"VERWUNDET", // >= 45 + L"GESUND", // >= 60 + L"STARK", // >= 75 + L"SEHR GUT", // >= 90 + L"GEFANGEN", // added by Flugente +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"$1000", + L"$100", + L"$10", + L"OK", + L"Abheben", // Money from pile + L"Abheben", // Money from account +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"Pro:", +}; + +CHAR16 gzConsLabel[10] = +{ + L"Kont:", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Wie bitte?", //meaning "Repeat yourself" + L"Freundlich", //approach in a friendly + L"Direkt", //approach directly - let's get down to business + L"Drohen", //approach threateningly - talk now, or I'll blow your face off + L"Geben", + L"Rekrutieren", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Handeln", + L"Kaufen", + L"Verkaufen", + L"Reparieren", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"Fertig", +}; + +STR16 pVehicleStrings[] = +{ + L"Eldorado", + L"Hummer", // a hummer jeep/truck -- military vehicle + L"Eisverkaufswagen", + L"Jeep", + L"Panzer", + L"Helikopter", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Eldor.", + L"Hummer", // the HMVV + L"Laster", + L"Jeep", + L"Tank", + L"Heli", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Eldorado", + L"Hummer", //a military jeep. This is a brand name. + L"Laster", // Ice cream truck + L"Jeep", + L"Panzer", + L"Heli", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"You cannot shoot from this seat.", // TODO.Translate + L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate +}; + +//These are messages Used in the Tactical Screen +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Luftangriff", + L"Automatisch Erste Hilfe leisten?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s bemerkt, dass Teile aus der Lieferung fehlen.", + + // The %s is a string from pDoorTrapStrings + + L"Das Schloss hat %s.", + L"Es gibt kein Schloss.", + L"Erfolg!", + L"Fehlschlag.", + L"Erfolg!", + L"Fehlschlag.", + L"Das Schloss hat keine Falle.", + L"Erfolg!", + // The %s is a merc name + L"%s hat nicht den richtigen Schlüssel.", + L"Die Falle am Schloss ist entschärft.", + L"Das Schloss hat keine Falle.", + L"Geschl.", + L"TÜR", + L"FALLE AN", + L"Geschl.", + L"GEÖFFNET", + L"EINGETRETEN", + L"Hier ist ein Schalter. Betätigen?", + L"Falle entschärfen?", + L"Zurück...", + L"Weiter...", + L"Mehr...", + + // In the next 2 strings, %s is an item name + + L"%s liegt jetzt auf dem Boden.", + L"%s ist jetzt bei %s.", + + // In the next 2 strings, %s is a name + + L"%s hat den vollen Betrag erhalten.", + L"%s bekommt noch %d.", + L"Detonationsfrequenz auswählen:", //in this case, frequency refers to a radio signal + L"Wie viele Züge bis zur Explosion:", //how much time, in turns, until the bomb blows + L"Ferngesteuerte Zündung einstellen:", //in this case, frequency refers to a radio signal + L"Falle entschärfen?", + L"Blaue Flagge wegnehmen?", + L"Blaue Flagge hier aufstellen?", + L"Zug beenden", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"Wollen Sie %s wirklich angreifen?", + L"Fahrzeuge können ihre Haltung nicht ändern.", + L"Der Roboter kann seine Haltung nicht ändern.", + + // In the next 3 strings, %s is a name + + //%s can't change to that stance here + L"%s kann die Haltung hier nicht ändern.", + + L"%s kann hier nicht versorgt werden.", + L"%s braucht keine Erste Hilfe.", + L"Kann nicht dorthin gehen.", + L"Ihr Team ist komplett. Kein Platz mehr für Rekruten.", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s wird rekrutiert.", + + // Here %s is a name and %d is a number + + L"%s bekommt noch %d $.", + + // In the next string, %s is a name + + L"%s eskortieren?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"%s für %s pro Tag anheuern?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"Kämpfen?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"%s für %s kaufen?", + + // In the next string, %s is a name + + L"%s wird von Trupp %d eskortiert.", + + // These messages are displayed during play to alert the player to a particular situation + + L"KLEMMT", //weapon is jammed. + L"Roboter braucht Munition vom Kaliber %s.", //Robot is out of ammo + L"Dorthin werfen? Unmöglich.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Schleichen (|Z)", + L"Kartenbildschir|m", + L"Spielzug been|den", + L"Sprechen", + L"Stumm", + L"Aufrichten (|P|g|U|p)", + L"Ebene wechseln (|T|a|b)", + L"Klettern / Springen (|J)", + L"Ducken (|P|g|D|n)", + L"Untersuchen (|C|t|r|l)", + L"Voriger Söldner", + L"Nächster Söldner (|S|p|a|c|e)", + L"|Optionen", + L"Feuermodus (|B)", + L"B|lickrichtung", + L"Gesundheit: %d/%d\nEnergie: %d/%d\nMoral: %s", + L"Was?", //this means "what?" + L"Weiter", //an abbrieviation for "Continued" (displayed on merc portrait) + L"Schleichen aus für %s.", + L"Schleichen an für %s.", + L"Fahrer", + L"Fahrzeug verlassen", + L"Trupp wechseln", + L"Fahren", + L"n.a.", //this is an acronym for "Not Applicable." + L"Benutzen ( Faustkampf )", + L"Benutzen ( Feuerwaffe )", + L"Benutzen ( Hieb-/Stichwaffe )", + L"Benutzen ( Sprengstoff )", + L"Benutzen ( Verbandskasten )", + L"(Fangen)", + L"(Nachladen)", + L"(Geben)", + L"%s Falle wurde ausgelöst.", + L"%s ist angekommen.", + L"%s hat keine Action-Punkte mehr.", + L"%s ist nicht verfügbar.", + L"%s ist fertig verbunden.", + L"%s sind die Verbände ausgegangen.", + L"Feind im Sektor!", + L"Keine Feinde in Sicht.", + L"Nicht genug Action-Punkte.", + L"Niemand bedient die Fernbedienung.", + L"Feuerstoß hat Magazin geleert!", + L"SOLDAT", + L"MONSTER", + L"MILIZ", + L"ZIVILIST", + L"ZOMBIE", + L"PRISONER", + L"Sektor verlassen", + L"OK", + L"Abbruch", + L"Gewählter Söldner", + L"Ganzer Trupp", + L"Gehe zu Sektor", + + L"Gehe zu Karte", + + L"Sie können den Sektor von dieser Seite aus nicht verlassen.", + L"Sie können den Sektor nicht verlassen im Rundenmodus.", + L"%s ist zu weit weg.", + L"Baumkronen entfernen", + L"Baumkronen zeigen", + L"KRÄHE", //Crow, as in the large black bird + L"NACKEN", + L"KOPF", + L"TORSO", + L"BEINE", + L"Der Herrin sagen, was sie wissen will?", + L"Fingerabdruck-ID gespeichert", + L"Falsche Fingerabdruck-ID. Waffe außer Betrieb", + L"Ziel erfasst", + L"Weg blockiert", + L"Geld einzahlen/abheben", //Help text over the $ button on the Single Merc Panel + L"Niemand braucht Erste Hilfe.", + L"Klemmt.", //Short form of JAMMED, for small inv slots + L"Kann da nicht hin.", // used ( now ) for when we click on a cliff + L"Weg ist blockiert. Mit dieser Person den Platz tauschen?", + L"Person will sich nicht bewegen", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Mit der Zahlung von %s einverstanden?", + L"Gratisbehandlung akzeptieren?", + L"%s heiraten?", //Daryl + L"Schlüsselring", + L"Das ist mit einem EPC nicht möglich.", + L"%s verschonen?", //Krott + L"Außer Reichweite", + L"Arbeiter", //People that work in mines to extract precious metals + L"Fahrzeug kann nur zwischen Sektoren fahren", + L"Automatische Erste Hilfe nicht möglich", + L"Weg blockiert für %s", + L"Ihre von %s Truppe gefangenen Soldaten sind hier inhaftiert", //Deidrannas + L"Schloss getroffen", + L"Schloss zerstört", + L"Noch jemand an der Tür.", + L"Gesundh.: %d/%d\nTank: %d/%d", + L"%s kann %s nicht sehen.", // Cannot see person trying to talk to + L"Anbringung entfernt", + L"Sie können kein weiteres Fahrzeug mehr verwenden, da Sie bereits 2 haben", + + // added by Flugente for defusing/setting up trap networks + L"Detonations-Frequenz (1 - 4) oder Entschärfungs-Frequenz (A - D):", + L"Entschärfungs-Frequenz:", + L"Detonations-Frequenz (1 - 4) und die Entschärfungs-Frequenz (A - D):", + L"Detonations-Zeit (in Züge) (1 - 4) und die Entschärfungs-Frequenz (A - D):", + L"Stolperdraht-Hierarchie (1 - 4) und das Netzwerk (A - D):", + + // added by Flugente to display food status + L"Gesundheit: %d/%d\nAusdauer: %d/%d\nMoral: %s\nWasser: %d%s\nEssen: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"Was möchten Sie tun?", + L"Feldflasche auffüllen", + L"Waffen reinigen (Merc)", + L"Waffen reinigen (Team)", + L"Kleidung ausziehen", + L"Verkleidung loswerden", + L"Miliz inspizieren", + L"Miliz ausrüsten", + L"Verkleidung testen", + L"unused", + + // added by Flugente: decide what to do with the corpses + L"Was möchten Sie mit der Leiche tun?", + L"Enthaupten", + L"Ausweiden", + L"Kleidung nehmen", + L"Leiche nehmen", + + // Flugente: weapon cleaning + L"%s reinigte %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", // TODO.Translate + L"Field interrogation", + L"Wohin mit den %d Gefangenen?", + L"Freilassen", + L"Was möchten Sie tun?", + L"Kapitulation fordern", + L"Kapitulation anbieten", + L"Ablenken", + L"Sprechen", + L"Recruit Turncoat", // TODO: translate + + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Falle entschärfen", + L"Falle untersuchen", + L"Blaue Flagge entfernen", + L"Sprengen!", + L"Stolperdraht aktivieren", + L"Stolperdraht deaktivieren", + L"Stolperdraht freilegen", + L"Kein Zünder/Fernzünder gefunden!", + L"Diese Bombe ist bereits scharf!", + L"Sicher", + L"Fast sicher", + L"Riskant", + L"Gefährlich", + L"Höchst gefährlich!", + + L"Mask", // TODO.Translate + L"NVG", + L"Item", + + L"This feature works only with New Inventory System", + L"No item in your main hand", + L"Nowhere to place item from main hand", + L"No defined item for this quick slot", + L"No free hand for new item", + L"Item not found", + L"Cannot take item to main hand", + + L"Attempting to bandage travelling mercs...", //TODO.Translate + + L"Improve gear", + L"%s changed %s for superior version", + L"%s picked up %s", // TODO.Translate + + L"%s has stopped chatting with %s", // TODO.Translate +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"Der nächste Sektor wird sofort geladen, wenn Sie das Kästchen aktivieren.", + L"Sie kommen sofort zum Kartenbildschirm, wenn Sie das Kästchen aktivieren\nweil die Reise Zeit braucht.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"Der Sektor ist von Feinden besetzt. Sie können keine Söldner hier lassen.\nRegeln Sie das, bevor Sie neue Sektoren laden.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"Wenn die restlichen Söldner den Sektor verlassen,\nwird sofort der nächste Sektor geladen.", + L"Wenn die restlichen Söldner den Sektor verlassen,\nkommen Sie sofort zum Kartenbildschirm\nweil die Reise Zeit braucht.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s kann den Sektor nicht ohne Eskorte verlassen.", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s kann den Sektor nicht verlassen, weil er %s eskortiert.", //male singular + L"%s kann den Sektor nicht verlassen, weil sie %s eskortiert.", //female singular + L"%s kann den Sektor nicht verlassen, weil er mehrere Personen eskortiert.", //male plural + L"%s kann den Sektor nicht verlassen, weil sie mehrere Personen eskortiert.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"Alle Söldner müssen in der Nähe sein,\ndamit der Trupp weiterreisen kann.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"Bei aktiviertem Kästchen reist %s alleine und\nbildet automatisch wieder einen Trupp.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"Bei aktiviertem Kästchen reist der ausgewählte Trupp\nweiter und verlässt den Sektor.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s wird von Söldnern eskortiert und kann den Sektor nicht alleine verlassen. Die anderen Söldner müssen in der Nähe sein.", +}; + +STR16 pRepairStrings[] = +{ + L"Gegenstände", // tell merc to repair items in inventory + L"Raketenstützpunkt", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Abbruch", // cancel this menu + L"Roboter", // repair the robot +}; + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." +STR16 sPreStatBuildString[] = +{ + L"verliert", // the merc has lost a statistic + L"gewinnt", // the merc has gained a statistic + L"Punkt", // singular + L"Punkte", // plural + L"Level", // singular + L"Level", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"Gesundheit.", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Weisheit.", + L"an Medizinkenntnis.", + L"an Sprengstoffkenntnis.", + L"an Technikfähigkeit.", + L"an Treffsicherheit.", + L"Erfahrungsstufe(n).", + L"an Kraft.", + L"an Führungsqualität.", +}; + +STR16 pHelicopterEtaStrings[] = +{ + L"Gesamt: ", // total distance for helicopter to travel + L" Sicher: ", // Number of safe sectors + L" Unsicher:", // Number of unsafe sectors + L"Gesamtkosten: ", // total cost of trip by helicopter + L"Ank.: ", // ETA is an acronym for "estimated time of arrival" + + // warning that the sector the helicopter is going to use for refueling is under enemy control + L"Helikopter hat fast keinen Sprit mehr und muss im feindlichen Gebiet landen.", + L"Passagiere: ", + L"Skyrider oder Absprungsort auswählen?", + L"Skyrider", + L"Absprung", //make sure length doesn't exceed 8 characters (used to be "Absprungsort") + L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> // TODO.Translate + L"Helicopter will now return straight to base, do you want to drop down passengers before?", // TODO.Translate + L"Remaining Fuel:", // TODO.Translate + L"Dist. To Refuel Site:", // TODO.Translate +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", + L"Helicopter is currently disassembled. Wait until repairs are finished.", + L"Repairs completed. Helicopter is available again.", + L"Helicopter is fully refueled.", + + L"Helicopter has exceeded maximum range!", // TODO.Translate +}; + +STR16 sMapLevelString[] = +{ + L"Ebene:", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"Loyalität ", // the loyalty rating of a town ie : Loyal 53% +}; + +// error message for when player is trying to give a merc a travel order while he's underground. +STR16 gsUndergroundString[] = +{ + L"Ich kann unter der Erde keinen Marschbefehl empfangen.", +}; + +STR16 gsTimeStrings[] = +{ + L"h", // hours abbreviation + L"m", // minutes abbreviation + L"s", // seconds abbreviation + L"T", // days abbreviation +}; + +// text for the various facilities in the sector +STR16 sFacilitiesStrings[] = +{ + L"Keine", + L"Krankenhaus", + L"Fabrik", // Factory + L"Gefängnis", + L"Militär", + L"Flughafen", + L"Schießanlage", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button +STR16 pMapPopUpInventoryText[] = +{ + L"Inventar", + L"Exit", + L"Repair", // TODO.Translate + L"Factories", // TODO.Translate +}; + +// town strings +STR16 pwTownInfoStrings[] = +{ + L"Größe", // 0 // size of the town in sectors + L"", // blank line, required + L"unter Kontrolle", // how much of town is controlled + L"Keine", // none of this town + L"Mine", // mine associated with this town + L"Loyalität", // 5 // the loyalty level of this town + L"Trainiert", // the forces in the town trained by the player + L"", + L"Wichtigste Gebäude", // main facilities in this town + L"Level", // the training level of civilians in this town + L"Zivilistentraining", // 10 // state of civilian training in town + L"Miliz", // the state of the trained civilians in the town + + // Flugente: prisoner texts + L"Gefangene", + L"%d (max. %d)", + L"%d Hilfssoldaten", + L"%d Truppen", + L"%d Elite", + L"%d Offiziere", + L"%d Generele", + L"%d Zivilisten", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings +STR16 pwMineStrings[] = +{ + L"Mine", // 0 + L"Silber", + L"Gold", + L"Tagesproduktion", + L"Maximale Produktion", + L"Aufgegeben", // 5 + L"Geschlossen", + L"Fast erschöpft", + L"Produziert", + L"Status", + L"Produktionsrate", + L"Rohstoff", // 10 L"Erzart", + L"Kontrolle über Stadt", + L"Loyalität der Stadt", +}; + +// blank sector strings +STR16 pwMiscSectorStrings[] = +{ + L"Feindliche Verbände", + L"Sektor", + L"# der Gegenstände", + L"Unbekannt", + + L"Kontrolliert", + L"Ja", + L"Nein", + L"Status/Software Status:", + + L"Additional Intel", // TODO:Translate +}; + +// error strings for inventory +STR16 pMapInventoryErrorString[] = +{ + L"%s ist nicht nah genug.", //Merc is in sector with item but not close enough + L"Diesen Söldner können Sie nicht auswählen.", + L"%s ist nicht im Sektor.", + L"Während einer Schlacht müssen Sie Gegenstände manuell nehmen.", + L"Während einer Schlacht müssen Sie Gegenstände manuell fallenlassen.", + L"%s ist nicht im Sektor und kann Gegenstand nicht fallen lassen.", + L"Während des Kampfes können Sie die Munitionskiste nicht zum Nachladen verwenden.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Ort", // sector these items are in + L"Zahl der Gegenstände", // total number of items in sector +}; + +// help text for the user +STR16 pMapScreenFastHelpTextList[] = +{ + L"Um die Aufgabe eines Söldners zu ändern und ihn einem anderen Trupp, einem Reparatur- oder Ärzteteam zuzuweisen, klicken Sie in die 'Aufträge'-Spalte.", + L"Um einen Söldner an einen anderen Bestimmungsort zu versetzen, klicken Sie in die 'Aufträge'-Spalte.", + L"Wenn ein Söldner seinen Marschbefehl erhalten hat, kann er sich mit dem Zeitraffer schneller bewegen.", + L"Die linke Maustaste wählt den Sektor aus. Zweiter Klick auf die linke Maustaste erteilt Marschbefehl an Söldner. Mit der rechten Maustaste erhalten Sie Kurzinfos über den Sektor.", + L"Hilfe aufrufen mit Taste 'h'.", + L"Test-Text", + L"Test-Text", + L"Test-Text", + L"Test-Text", + L"In diesem Bildschirm können Sie nicht viel machen, bevor Sie in Arulco ankommen. Wenn Sie Ihr Team zusammengestellt haben, klicken Sie auf den Zeitraffer-Button unten rechts. Dadurch vergeht die Zeit schneller, bis Ihr Team in Arulco ankommt.", +}; + +// movement menu text +STR16 pMovementMenuStrings[] = +{ + L"Söldner in Sektor bewegen", // title for movement box + L"Route planen", // done with movement menu, start plotting movement + L"Abbruch", // cancel this menu + L"Andere", // title for group of mercs not on squads nor in vehicles + L"Select all", // Select all squads TODO: Translate +}; + +STR16 pUpdateMercStrings[] = +{ + L"Ups:", // an error has occured + L"Vertrag ist abgelaufen:", // this pop up came up due to a merc contract ending + L"Auftrag wurde ausgeführt:", // this pop up....due to more than one merc finishing assignments + L"Diese Söldner arbeiten wieder:", // this pop up ....due to more than one merc waking up and returing to work + L"Diese Söldner schlafen:", // this pop up ....due to more than one merc being tired and going to sleep + L"Vertrag bald abgelaufen:", //this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Städte zeigen (|W)", + L"|Minen zeigen", + L"|Teams & Feinde zeigen", + L"Luftr|aum zeigen", + L"Gegenstände zeigen (|I)", + L"Mili|z & Feinde zeigen", + L"Krankheitsdaten zeigen (|D)", + L"Wette|r zeigen", + L"Aufträge & Intel zeigen (|Q)", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Nächste (|.)", // next page + L"Vorherige (|,)", // previous page + L"Sektor Inventar schließen (|E|s|c)", // exit sector inventory + + L"Inventar zoomen", // HEAROCK HAM 5: Inventory Zoom Button + L"Gegenstände stapeln und verbinden", // HEADROCK HAM 5: Stack and Merge + L"|L|i|n|k|e|r |K|l|i|c|k: Munition in Kisten sortieren\n|R|e|c|h|t|e|r |K|l|i|c|k: Munition in Boxen sortieren", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|L|i|n|k|e|r |K|l|i|c|k: Alle Gegenstandsanbauten entfernen\n|R|e|c|h|t|e|r |K|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments + L"Munition aus allen Waffen entfernen", //HEADROCK HAM 5: Eject Ammo + L"|L|i|n|k|e|r |K|l|i|c|k: Alle Gegenstände anzeigen\n|R|e|c|h|t|e|r |K|l|i|c|k: Alle Gegenstände ausblenden", // HEADROCK HAM 5: Filter Button + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Waffen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Waffen anzeigen", // HEADROCK HAM 5: Filter Button + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Munition\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Munition anzeigen", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Sprengstoffe\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Sprengstoffe anzeigen", // HEADROCK HAM 5: Filter Button + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Nahkampfwaffen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Nahkampfwaffen anzeigen", // HEADROCK HAM 5: Filter Button + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Körperpanzerungen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Körperpanzerungen anzeigen", // HEADROCK HAM 5: Filter Button + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von LBEs\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur LBEs anzeigen", // HEADROCK HAM 5: Filter Button + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von Ausrüstung\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur Ausrüstung anzeigen", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|L|i|n|k|e|r |K|l|i|c|k: Ein-/Ausblenden von anderen Gegenständen\n|R|e|c|h|t|e|r |K|l|i|c|k: Nur andere Gegenstände anzeigen", // HEADROCK HAM 5: Filter Button + L"Ein-/Ausblenden von zu bewegenden Gegenständen", // Flugente: move item display + L"Speichere Ausrüstungsvorlage", + L"Lade Ausrüstungsvorlage...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"|Laptop", + L"Taktik (|E|s|c)", + L"|Optionen", + L"Zeitraffer (|+)", // time compress more + L"Zeitraffer (|-)", // time compress less + L"Vorige Nachricht (|U|p)\nSeite zurück (|P|g|U|p)", // previous message in scrollable list + L"Nächste Nachricht (|D|o|w|n)\nNächste Seite (|P|g|D|n)", // next message in the scrollable list + L"Zeit Start/Stop (|S|p|a|c|e)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Kontostand", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s ist tot.", +}; + +STR16 pDayStrings[] = +{ + L"Tag", +}; + +// the list of email sender names +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Enrico", + L"Psych Pro Inc.", + L"Online-Hilfe", + L"Psych Pro Inc.", + L"Speck", + L"R.I.S.", + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephan", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"H, A & S Versicherung", + L"Bobby Rays", + L"Kingpin", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings +STR16 pTraverseStrings[] = +{ + L"Vorige", + L"Nächste", +}; + +// new mail notify string +STR16 pNewMailStrings[] = +{ + L"Sie haben neue Mails...", +}; + +// confirm player's intent to delete messages +STR16 pDeleteMailStrings[] = +{ + L"Mail löschen?", + L"UNGELESENE Mail löschen?", +}; + +// the sort header strings +STR16 pEmailHeaders[] = +{ + L"Absender:", + L"Betreff:", + L"Datum:", +}; + +// email titlebar text +STR16 pEmailTitleText[] = +{ + L"Mailbox", +}; + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Buchhalter Plus", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Haben:", //the credits column (to ADD money to your account) + L"Soll:", //the debits column (to SUBTRACT money from your account) + L"Einkünfte vom Vortag:", + L"Sonstige Einzahlungen vom Vortag:", + L"Haben vom Vortag:", + L"Kontostand Ende des Tages:", + L"Tagessatz:", + L"Sonstige Einzahlungen von heute:", + L"Haben von heute:", + L"Kontostand:", + L"Voraussichtliche Einkünfte:", + L"Prognostizierter Kontostand:", // projected balance for player for tommorow +}; + +// headers to each list in financial screen +STR16 pFinanceHeaders[] = +{ + L"Tag", // the day column + L"Haben", //the credits column (to ADD money to your account) + L"Soll", //the debits column (to SUBTRACT money from your account) + L"Kontobewegungen", // transaction type - see TransactionText below + L"Kontostand", // balance at this point in time + L"Seite", // page number + L"Tag(e)", // the day(s) of transactions this page displays +}; + +STR16 pTransactionText[] = +{ + L"Aufgelaufene Zinsen", // interest the player has accumulated so far + L"Anonyme Einzahlung", + L"Bearbeitungsgebühr", + L"Angeheuert", // Merc was hired + L"Kauf bei Bobby Rays", // Bobby Ray is the name of an arms dealer + L"Ausgeglichene Konten bei M.E.R.C.", + L"Krankenversicherung für %s", // medical deposit for merc + L"B.S.E.-Profilanalyse", // IMP is the acronym for International Mercenary Profiling + L"Versicherung für %s abgeschlossen", + L"Versicherung für %s verringert", + L"Versicherung für %s verlängert", // johnny contract extended + L"Versicherung für %s gekündigt", + L"Versicherungsanspruch für %s", // insurance claim for merc + L"1 Tag", // merc's contract extended for a day + L"1 Woche", // merc's contract extended for a week + L"2 Wochen", // ... for 2 weeks + L"Minenertrag", + L"", + L"Blumen kaufen", + L"Volle Rückzahlung für %s", + L"Teilw. Rückzahlung für %s", + L"Keine Rückzahlung für %s", + L"Zahlung an %s", // %s is the name of the npc being paid + L"Überweisen an %s", // transfer funds to a merc + L"Überweisen von %s", // transfer funds from a merc + L"Miliz in %s ausbilden", // initial cost to equip a town's militia + L"Gegenstände von %s gekauft.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s hat Geld angelegt.", + L"Gegenstände an Bevölkerung verkauft", + L"Betriebskosten", // HEADROCK HAM 3.6 + L"Unterhaltskosten für Miliz", // HEADROCK HAM 3.6 + L"Lösegeld erpresst", // Flugente: prisoner system + L"WHO Daten abonnieren", // Flugente: disease + L"Zahlung an Kerberus", // Flugente: PMC + L"SAM reparieren", // Flugente: SAM repair + L"Arbeiter trainiert", // Flugente: train workers + L"Miliz in %s ausbilden", // Flugente: drill militia + L"Mini event", // rftr: mini events // TODO: translate + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Versicherung für", // insurance for a merc + L"%ss Vertrag verl. um 1 Tag", // entend mercs contract by a day + L"%ss Vertrag verl. um 1 Woche", + L"%ss Vertrag verl. um 2 Wochen", +}; + +// helicopter pilot payment +STR16 pSkyriderText[] = +{ + L"Skyrider wurden $%d gezahlt", // skyrider was paid an amount of money + L"Skyrider bekommt noch $%d", // skyrider is still owed an amount of money + L"Skyrider hat aufgetankt", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider ist bereit für weiteren Flug.", // Skyrider was grounded but has been freed + L"Skyrider hat keine Passagiere. Wenn Sie Söldner in den Sektor transportieren wollen, weisen Sie sie einem Fahrzeug/Helikopter zu.", +}; + +// strings for different levels of merc morale +STR16 pMoralStrings[] = +{ + L"Super", + L"Gut", + L"Stabil", + L"Schlecht", + L"Panik", + L"Mies", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. +STR16 pLeftEquipmentString[] = +{ + L"%ss Ausrüstung ist in Omerta angekommen (A9).", + L"%ss Ausrüstung ist in Drassen angekommen (B13).", +}; + +// Status that appears on the Map Screen +STR16 pMapScreenStatusStrings[] = +{ + L"Gesundheit", + L"Energie", + L"Moral", + L"Zustand", // the condition of the current vehicle (its "health") + L"Tank", // the fuel level of the current vehicle (its "energy") + L"Gift", + L"Wasser", // drink level + L"Essen", // food level +}; + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Voriger Söldner (|L|e|f|t)", // previous merc in the list + L"Nächster Söldner (|R|i|g|h|t)", // next merc in the list +}; + +STR16 pEtaString[] = +{ + L"Ank.:", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"Sie werden das Ding nie wiedersehen. Trotzdem wegwerfen?", // do you want to continue and lose the item forever + L"Dieser Gegenstand sieht SEHR wichtig aus. Sind Sie GANZ SICHER, dass Sie ihn wegwerfen wollen?", // does the user REALLY want to trash this item +}; + +STR16 pMapErrorString[] = +{ + L"Trupp kann nicht reisen, wenn einer schläft.", + +//1-5 + L"Wir müssen erst an die Oberfläche.", + L"Marschbefehl? Wir sind in einem feindlichen Sektor!", + L"Wenn Söldner reisen sollen, müssen sie einem Trupp oder Fahrzeug zugewiesen werden.", + L"Sie haben noch keine Teammitglieder.", // you have no members, can't do anything + L"Söldner kann Befehl nicht ausführen.", // merc can't comply with your order +//6-10 + L"braucht eine Eskorte. Platzieren Sie ihn in einem Trupp mit Eskorte.", // merc can't move unescorted .. for a male + L"braucht eine Eskorte. Platzieren Sie sie in einem Trupp mit Eskorte.", // for a female + L"Söldner ist noch nicht in %s!", + L"Erst mal Vertrag aushandeln!", + L"Marschbefehl ist nicht möglich. Luftangriffe finden statt.", +//11-15 + L"Marschbefehl? Hier tobt ein Kampf!", + L"Sie sind von Bloodcats umstellt in Sektor %s!", + L"Sie haben gerade eine Bloodcat-Höhle betreten in Sektor %s!", + L"", + L"Raketenstützpunkt in %s wurde erobert.", +//16-20 + L"Mine in %s wurde erobert. Ihre Tageseinnahmen wurden reduziert auf %s.", + L"Feind hat Sektor %s ohne Gegenwehr erobert.", + L"Mindestens ein Söldner konnte nicht eingeteilt werden.", + L"%s konnte sich nicht anschließen, weil %s voll ist", + L"%s konnte sich %s nicht anschließen, weil er zu weit weg ist.", +//21-25 + L"Die Mine in %s ist von Deidrannas Truppen erobert worden!", + L"Deidrannas Truppen sind gerade in den Raketenstützpunkt in %s eingedrungen", + L"Deidrannas Truppen sind gerade in %s eingedrungen", + L"Deidrannas Truppen wurden gerade in %s gesichtet.", + L"Deidrannas Truppen haben gerade %s erobert.", +//26-30 + L"Mindestens ein Söldner kann nicht schlafen.", + L"Mindestens ein Söldner ist noch nicht wach.", + L"Die Miliz kommt erst, wenn das Training beendet ist.", + L"%s kann im Moment keine Marschbefehle erhalten.", + L"Milizen außerhalb der Stadtgrenzen können nicht in andere Sektoren reisen.", +//31-35 + L"Sie können keine Milizen in %s haben.", + L"Leere Fahrzeuge fahren nicht!", + L"%s ist nicht transportfähig!", + L"Sie müssen erst das Museum verlassen!", + L"%s ist tot!", +//36-40 + L"%s kann nicht zu %s wechseln, weil der sich bewegt", + L"%s kann so nicht einsteigen", + L"%s kann sich %s nicht anschließen", + L"Sie können den Zeitraffer erst mit neuen Söldnern benutzen!", + L"Dieses Fahrzeug kann nur auf Straßen fahren!", +//41-45 + L"Reisenden Söldnern können Sie keine Aufträge erteilen.", + L"Kein Benzin mehr!", + L"%s ist zu müde.", + L"Keiner kann das Fahrzeug steuern.", + L"Ein oder mehrere Söldner dieses Trupps können sich jetzt nicht bewegen.", +//46-50 + L"Ein oder mehrere Söldner des ANDEREN Trupps können sich gerade nicht bewegen.", + L"Fahrzeug zu stark beschädigt!", + L"Nur zwei Söldner pro Sektor können Milizen trainieren.", + L"Roboter muss von jemandem bedient werden. Beide im selben Trupp platzieren.", + L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate +// 51-55 + L"%d Gegenstände von %s nach %s bewegt", +}; + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Klicken Sie noch einmal auf das Ziel, um die Route zu bestätigen. Klicken Sie auf andere Sektoren, um die Route zu ändern.", + L"Route bestätigt.", + L"Ziel unverändert.", + L"Route geändert.", + L"Route verkürzt.", +}; + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Klicken Sie auf den Sektor, in dem die Söldner stattdessen ankommen sollen.", + L"OK. Söldner werden in %s abgesetzt.", + L"Söldner können nicht dorthin fliegen. Luftraum nicht gesichert!", + L"Abbruch. Ankunftssektor unverändert,", + L"Luftraum über %s ist nicht mehr sicher! Ankunftssektor jetzt in %s.", +}; + +// help text for mouse regions +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Ins Inventar gehen (|E|n|t|e|r)", + L"Gegenstand wegwerfen", + L"Inventar verlassen (|E|n|t|e|r)", +}; + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"Soll %s seine Ausrüstung hier lassen (%s) oder in (%s), wenn er verlässt?", + L"%s geht bald und lässt seine Ausrüstung in %s.", +}; + +// female version +STR16 pMercSheLeaveString[] = +{ + L"Soll %s ihre Ausrüstung hier lassen (%s) oder in (%s), bevor sie verlässt?", + L"%s geht bald und lässt ihre Ausrüstung in %s.", +}; + +STR16 pMercContractOverStrings[] = +{ + L"s Vertrag war abgelaufen, und er ist nach Hause gegangen.", // merc's contract is over and has departed + L"s Vertrag war abgelaufen, und sie ist nach Hause gegangen.", // merc's contract is over and has departed + L"s Vertrag wurde gekündigt, und er ist weggegangen.", // merc's contract has been terminated + L"s Vertrag wurde gekündigt, und sie ist weggegangen.", // merc's contract has been terminated + L"Sie schulden M.E.R.C. zu viel, also ist %s gegangen.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages +STR16 pImpPopUpStrings[] = +{ + L"Ungültiger Code", + L"Sie wollen gerade den ganzen Evaluierungsprozess von vorn beginnen. Sind Sie sicher?", + L"Bitte Ihren vollen Namen und Ihr Geschlecht eingeben", + L"Die Überprüfung Ihrer finanziellen Mittel hat ergeben, dass Sie sich keine Evaluierung leisten können.", + L"Option zur Zeit nicht gültig.", + L"Um eine genaue Evaluierung durchzuführen, müssen Sie mindestens noch ein Teammitglied aufnehmen können.", + L"Evaluierung bereits durchgeführt.", + L"Fehler beim Laden des B.S.E.-Charakters.", + L"Sie haben bereits die maximale Anzahl an B.S.E.-Charakteren.", + L"Sie haben bereits drei B.S.E.-Charaktere mit dem gleichen Geschlecht.", + L"Sie können sich den B.S.E.-Charakter nicht leisten.", // 10 + L"Der neue B.S.E.-Charakter ist nun in ihrem Team.", + L"You have already selected the maximum number of traits.", // TODO.Translate + L"No voicesets found.", // TODO.Translate +}; + +// button labels used on the IMP site +STR16 pImpButtonText[] = +{ + L"Wir über uns", // about the IMP site + L"BEGINNEN", // begin profiling + L"Persönlichkeiten", // personality section + L"Eigenschaften", // personal stats/attributes section + L"Aussehen", // changed from portrait + L"Stimme %d", // the voice selection + L"Fertig", // done profiling + L"Von vorne anfangen", // start over profiling + L"Ja, die Antwort passt!", + L"Ja", + L"Nein", + L"Fertig", // finished answering questions + L"Zurück", // previous question..abbreviated form + L"Weiter", // next question + L"JA", // yes, I am certain + L"NEIN, ICH MÖCHTE VON VORNE ANFANGEN.", // no, I want to start over the profiling process + L"JA", + L"NEIN", + L"Zurück", // back one page + L"Abbruch", // cancel selection + L"Ja", + L"Nein, ich möchte es mir nochmal ansehen.", + L"Registrieren", // the IMP site registry..when name and gender is selected + L"Analyse wird durchgeführt", // analyzing your profile results + L"OK", + L"Charakter", // Change from "Voice" + L"Keine", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"Nach Festlegung Ihres Charakters können Sie Ihre Fertigkeit(en) auswählen.", + L"Um die Evaluierung erfolgreich abzuschließen, bestimmen Sie Ihre Eigenschaften.", + L"Um Ihr Profil zu erstellen, wählen Sie ein Portrait und eine Stimme aus und definieren Ihre äußere Erscheinung.", + L"Jetzt, da Sie Ihr Aussehen bestimmt haben, fahren wir mit der Charakter-Analyse fort.", +}; + +STR16 pFilesTitle[] = +{ + L"Akten einsehen", +}; + +STR16 pFilesSenderList[] = +{ + L"Aufklärungsbericht", // the recon report sent to the player. Recon is an abbreviation for reconissance + L"Abschnitt #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"Abschnitt #2", // second intercept file + L"Abschnitt #3", // third intercept file + L"Abschnitt #4", // fourth intercept file + L"Abschnitt #5", // fifth intercept file + L"Abschnitt #6", // sixth intercept file +}; + +// Text having to do with the History Log +STR16 pHistoryTitle[] = +{ + L"Logbuch", +}; + +STR16 pHistoryHeaders[] = +{ + L"Tag", // the day the history event occurred + L"Seite", // the current page in the history report we are in + L"Tag", // the days the history report occurs over + L"Ort", // location (in sector) the event occurred + L"Ereignis", // the event label +}; + +// Externalized to "TableData\History.xml" +/* +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"%s von A.I.M. angeheuert.", // merc was hired from the aim site + L"%s von M.E.R.C. angeheuert.", // merc was hired from the aim site + L"%s ist tot.", // merc was killed + L"Rechnung an M.E.R.C. bezahlt", // paid outstanding bills at MERC + L"Enrico Chivaldoris Auftrag akzeptiert", + //6-10 + L"B.S.E.-Profil erstellt", + L"Versicherung abgeschlossen für %s.", // insurance contract purchased + L"Versicherung gekündigt für %s.", // insurance contract canceled + L"Versicherung ausgezahlt für %s.", // insurance claim payout for merc + L"%ss Vertrag um 1 Tag verlängert.", // Extented "mercs name"'s for a day + //11-15 + L"%ss Vertrag um 1 Woche verlängert.", // Extented "mercs name"'s for a week + L"%ss Vertrag um 2 Wochen verlängert.", // Extented "mercs name"'s 2 weeks + L"%s entlassen.", // "merc's name" was dismissed. + L"%s geht.", // "merc's name" quit. + L"Quest begonnen.", // a particular quest started + //16-20 + L"Quest gelöst.", + L"Mit Vorarbeiter in %s geredet", // talked to head miner of town + L"%s befreit", + L"Cheat benutzt", + L"Essen ist morgen in Omerta", + //21-25 + L"%s heiratet Daryl Hick", + L"%ss Vertrag abgelaufen.", + L"%s rekrutiert.", + L"Enrico sieht kaum Fortschritte", + L"Schlacht gewonnen", + //26-30 + L"Mine in %s produziert weniger", + L"Mine in %s leer", + L"Mine in %s geschlossen", + L"Mine in %s wieder offen", + L"Etwas über Gefängnis in Tixa erfahren.", + //31-35 + L"Von Waffenfabrik in Orta gehört.", + L"Forscher in Orta gab uns viele Raketengewehre.", + L"Deidranna verfüttert Leichen.", + L"Frank erzählte von Kämpfen in San Mona.", + L"Patient denkt, er hat in den Minen etwas gesehen.", + //36-40 + L"Devin getroffen - verkauft Sprengstoff", + L"Berühmten Ex-AIM-Mann Mike getroffen!", + L"Tony getroffen - verkauft Waffen.", + L"Sergeant Krott gab mir Raketengewehr.", + L"Kyle die Urkunde für Angels Laden gegeben.", + //41-45 + L"Madlab will Roboter bauen.", + L"Gabby kann Tinktur gegen Käfer machen.", + L"Keith nicht mehr im Geschäft.", + L"Howard lieferte Gift an Deidranna.", + L"Keith getroffen - verkauft alles in Cambria.", + //46-50 + L"Howard getroffen - Apotheker in Balime", + L"Perko getroffen - hat kleinen Reparaturladen.", + L"Sam aus Balime getroffen - hat Computerladen.", + L"Franz hat Elektronik und andere Sachen.", + L"Arnold repariert Sachen in Grumm.", + //51-55 + L"Fredo repariert Elektronik in Grumm.", + L"Spende von Reichem aus Balime bekommen.", + L"Schrotthändler Jake getroffen.", + L"Ein Depp hat uns eine Codekarte gegeben.", + L"Walter bestochen, damit er Keller öffnet.", + //56-60 + L"Wenn Dave Sprit hat, bekommen wir's gratis.", + L"Pablo bestochen.", + L"Kingpin hat Geld in San Mona-Mine.", + L"%s gewinnt Extremkampf", + L"%s verliert Extremkampf", + //61-65 + L"%s beim Extremkampf disqualifiziert", + L"Viel Geld in verlassener Mine gefunden.", + L"Von Kingpin geschickten Mörder getroffen", + L"Kontrolle über Sektor verloren", + L"Sektor verteidigt", + //66-70 + L"Schlacht verloren", //ENEMY_ENCOUNTER_CODE + L"Tödlicher Hinterhalt", //ENEMY_AMBUSH_CODE + L"Hinterhalt ausgehoben", + L"Angriff fehlgeschlagen", //ENTERING_ENEMY_SECTOR_CODE + L"Angriff erfolgreich", + //71-75 + L"Monster angegriffen", //CREATURE_ATTACK_CODE + L"Von Bloodcats getötet", //BLOODCAT_AMBUSH_CODE + L"Bloodcats getötet", + L"%s wurde getötet", + L"Carmen den Kopf eines Terroristen gegeben", + //76-80 + L"Slay ist gegangen", //Slay is a merc and has left the team + L"%s getötet", //History log for when a merc kills an NPC or PC + L"Met Waldo - aircraft mechanic.", + L"Helicopter repairs started. Estimated time: %d hour(s).", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"n.a.", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop +STR16 pLaptopIcons[] = +{ + L"E-mail", + L"Web", + L"Finanzen", + L"Personal", + L"Logbuch", + L"Dateien", + L"Schließen", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added +STR16 pBookMarkStrings[] = +{ + L"A.I.M.", + L"Bobby Rays", + L"B.S.E.", + L"M.E.R.C.", + L"Bestatter", + L"Florist", + L"Versicherung", + L"Abbruch", + L"Enzyklopädie", + L"Besprechung", + L"Geschichte", + L"MeLoDY", + L"WHO", + L"Kerberus", + L"Militia Overview", // TODO.Translate + L"R.I.S.", + L"Factories", // TODO.Translate +}; + +STR16 pBookmarkTitle[] = +{ + L"Lesezeichen", + L"Rechts klicken, um in Zukunft in dieses Menü zu gelangen.", +}; + +// When loading or download a web page +STR16 pDownloadString[] = { + L"Download läuft", + L"Neuladen läuft", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Nehmen", // take money from merc + L"Geben", // give money to merc + L"Rückgängig", // cancel transaction + L"Löschen", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Überw $", // transfer money to merc -- short form + L"Statistik", // view stats of the merc + L"Inventar", // view the inventory of the merc + L"Anstellung", +}; + +STR16 sATMText[] = +{ + L"Geld überw.?", // transfer funds to merc? + L"Ok?", // are we certain? + L"Betrag eingeben", // enter the amount you want to transfer to merc + L"Art auswählen", // select the type of transfer to merc + L"Nicht genug Geld", // not enough money to transfer to merc + L"Betrag muss durch $10 teilbar sein", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use German equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator +STR16 pErrorStrings[] = +{ + L"Fehler", + L"Server hat keinen DNS-Eintrag.", + L"URL-Adresse überprüfen und nochmal versuchen.", + L"OK", + L"Verbindung zum Host wird dauernd unterbrochen. Mit längeren Übertragungszeiten ist zu rechnen.", +}; + +STR16 pPersonnelString[] = +{ + L"Söldner:", // mercs we have +}; + +STR16 pWebTitle[ ] = +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + +// The titles for the web program title bar, for each page loaded +STR16 pWebPagesTitles[] = +{ + L"A.I.M.", + L"A.I.M. Mitglieder", + L"A.I.M. Bilder", // a mug shot is another name for a portrait + L"A.I.M. Sortierfunktion", + L"A.I.M.", + L"A.I.M. Veteranen", + L"A.I.M. Politik", + L"A.I.M. Geschichte", + L"A.I.M. Links", + L"M.E.R.C.", + L"M.E.R.C. Konten", + L"M.E.R.C. Registrierung", + L"M.E.R.C. Index", + L"Bobby Rays", + L"Bobby Rays - Waffen", + L"Bobby Rays - Munition", + L"Bobby Rays - Rüstungen", + L"Bobby Rays - Sonstige", //misc is an abbreviation for miscellaneous + L"Bobby Rays - Gebraucht", + L"Bobby Rays - Versandauftrag", + L"B.S.E.", + L"B.S.E.", + L"Fleuropa", + L"Fleuropa - Gestecke", + L"Fleuropa - Bestellformular", + L"Fleuropa - Karten", + L"Hammer, Amboss & Steigbügel Versicherungsmakler", + L"Information", + L"Vertrag", + L"Bemerkungen", + L"McGillicuttys Bestattungen", + L"", + L"URL nicht gefunden.", + L"%s Presse Rat - Konflikt-Zusammenfassungen", + L"%s Presse Rat - Kampfberichte", + L"%s Presse Rat - Aktuellste Neuigkeiten", + L"%s Presse Rat - Über uns", + L"Mercs Love or Dislike You - About us", // TODO.Translate + L"Mercs Love or Dislike You - Analyze a team", + L"Mercs Love or Dislike You - Pairwise comparison", + L"Mercs Love or Dislike You - Personality", + L"WHO - About WHO", + L"WHO - Disease in Arulco", + L"WHO - Helpful Tips", + L"Kerberus - About Us", + L"Kerberus - Hire a Team", + L"Kerberus - Individual Contracts", + L"Miliz - Übersicht", + L"Recon Intelligence Services - Information Requests", // TODO.Translate + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Fabriken - Übersicht", + L"Bobby Rays - Letzte Lieferungen", + L"Enzyklopädie", + L"Enzyklopädie - Daten", + L"Einsatzbesprechung", + L"Einsatzbesprechung - Daten", +}; + +STR16 pShowBookmarkString[] = +{ + L"Sir-Help", + L"Erneut auf Web klicken für Lesezeichen.", +}; + +STR16 pLaptopTitles[] = +{ + L"E-Mail", + L"Dateien", + L"Söldner-Manager", + L"Buchhalter Plus", + L"Logbuch", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ //(careful not to exceed 18 characters total including spaces) + //reasons why a merc has left. + L"Getötet", + L"Entlassen", + L"Sonstiges", + L"Heirat", + L"Vertrag zu Ende", + L"Aufgehört", //LOOTF - Englisch "quit", welcher Kontext? = Slay Ruttwen? +}; + +// personnel strings appearing in the Personnel Manager on the laptop +STR16 pPersonelTeamStrings[] = +{ + L"Aktuelles Team", + L"Ausgeschieden", + L"Tgl. Kosten:", + L"Höchste Kosten:", + L"Niedrigste Kosten:", + L"Im Kampf getötet:", + L"Entlassen:", + L"Sonstiges:", +}; + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Schlechteste", + L"Durchsch.", + L"Beste", +}; + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"GSND", + L"BEW", + L"GES", + L"KRF", + L"FHR", + L"WSH", + L"ERF", + L"TRF", + L"TEC", + L"SPR", + L"MED", +}; + +// horizontal and vertical indices on the map screen +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button +STR16 pContractButtonString[] = +{ + L"Vertrag", +}; + +// text that appears on the update panel buttons +STR16 pUpdatePanelButtons[] = +{ + L"Weiter", + L"Stop", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"Sie sind in diesem Sektor geschlagen worden!", + L"Der Feind hat kein Erbarmen mit den Seelen Ihrer Teammitglieder und verschlingt jeden einzelnen.", //LOOTF - Auch im Englischen Kannibalismus. Was zum Henker? + L"Ihre bewusstlosen Teammitglieder wurden gefangen genommen!", + L"Ihre Teammitglieder wurden vom Feind gefangen genommen.", +}; + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. +STR16 InsContractText[] = +{ + L"Zurück", + L"Vor", + L"OK", + L"Löschen", +}; + +//Insurance Info +// Text on the buttons on the bottom of the screen +STR16 InsInfoText[] = +{ + L"Zurück", + L"Vor", +}; + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Befugnis ert.", + L"Startseite", + L"Konto #:", + L"Söldner", + L"Tage", + L"Tagessatz", //5 //LOOTF - "Rate" geändert auf "Tagessatz", ändern wenn Probleme, alt. "Sold" + L"Belasten", + L"Gesamt:", + L"Zahlung von %s wirklich genehmigen?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+gear)", // TODO.Translate +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Zurück", + L"Weiter", +}; + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary +STR16 MercInfo[] = +{ + L"Gesundheit", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Kraft", + L"Führungsqualität", + L"Weisheit", + L"Erfahrungsstufe", + L"Treffsicherheit", + L"Technik", + L"Sprengstoffe", + L"Medizin", + + L"Zurück", + L"Anheuern", + L"Weiter", + L"Zusatzinfo", + L"Startseite", + L"Angestellt", + L"Sold:", + L"Pro Tag", + L"Ausr.:", + L"Gesamt:", + L"Verstorben", + + L"Sie haben bereits ein vollständiges Team.", + L"Ausrüstung kaufen?", + L"nicht da", + L"Offene Beträge", + L"Bio", + L"Inv", + L"Special Offer!", +}; + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Konto eröffnen", + L"Rückgängig", + L"Sie haben kein Konto. Möchten Sie eins eröffnen?", +}; + +// For use at the M.E.R.C. web site. MERC Homepage +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Speck T. Kline, Gründer und Besitzer", + L"Hier klicken, um ein Konto zu eröffnen", + L"Hier klicken, um das Konto einzusehen", + L"Hier klicken, um Dateien einzusehen.", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Transfer fehlgeschlagen. Kein Geld vorhanden.", +}; + +// For use at MiGillicutty's Web Page. +STR16 sFuneralString[] = +{ + L"McGillicuttys Bestattungen: Wir trösten trauernde Familien seit 1983.", + L"Der Bestattungsunternehmer und frühere A.I.M.-Söldner Murray \"Pops\" McGillicutty ist ein ebenso versierter wie erfahrener Bestatter.", + L"Pops hat sein ganzes Leben mit Todes- und Trauerfällen verbracht. Deshalb weiß er aus erster Hand, wie schwierig das sein kann.", + L"Das Bestattungsunternehmen McGillicutty bietet Ihnen einen umfassenden Service, angefangen bei der Schulter zum Ausweinen bis hin zur kosmetischen Aufbereitung entstellter Körperteile.", + L"McGillicuttys Bestattungen - und Ihre Lieben ruhen in Frieden.", + + // Text for the various links available at the bottom of the page + L"BLUMEN", + L"SÄRGE UND URNEN", + L"FEUERBEST.", + L"GRÄBER", + L"PIETÄT", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"Leider ist diese Site aufgrund eines Todesfalles in der Familie noch nicht fertiggestellt. Sobald das Testament eröffnet worden und die Verteilung des Erbes geklärt ist, wird diese Site fertiggestellt.", + L"Unser Mitgefühl gilt trotzdem all jenen, die es diesmal versucht haben. Bis später.", +}; + +// Text for the florist Home page +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Galerie", + + //Address of United Florist + + L"\"Wir werfen überall per Fallschirm ab\"", + L"1-555-SCHNUPPER-MAL", + L"333 Duftmarke Dr, Aroma City, CA USA 90210", + L"http://www.schnupper-mal.com", + + // detail of the florist page + + L"Wir arbeiten schnell und effizient", + L"Lieferung am darauf folgenden Tag, in fast jedes Land der Welt. Ausnahmen sind möglich. ", + L"Wir haben die garantiert niedrigsten Preise weltweit!", + L"Wenn Sie anderswo einen niedrigeren Preis für irgend ein Arrangement sehen, bekommen Sie von uns ein Dutzend Rosen umsonst!", + L"Fliegende Flora, Fauna & Blumen seit 1981.", + L"Unsere hochdekorierten Ex-Bomber-Piloten werfen das Bouquet in einem Radius von zehn Meilen rund um den Bestimmungsort ab. Jederzeit!", + L"Mit uns werden Ihre blumigsten Fantasien wahr", + L"Bruce, unser weltberühmter Designer-Florist, verwendet nur die frischesten handverlesenen Blumen aus unserem eigenen Gewächshaus.", + L"Und denken Sie daran: Was wir nicht haben, pflanzen wir für Sie - und zwar schnell!", +}; + +//Florist OrderForm +STR16 sOrderFormText[] = +{ + + //Text on the buttons + + L"Zurück", + L"Senden", + L"Löschen", + L"Galerie", + + L"Name des Gestecks:", + L"Preis:", //5 + L"Bestellnr.:", + L"Liefertermin", + L"Morgen", + L"Egal", + L"Bestimmungsort", //10 + L"Extraservice", + L"Kaputtes Gesteck($10)", + L"Schwarze Rosen($20)", + L"Welkes Gesteck($10)", + L"Früchtekuchen (falls vorrätig)($10)", //15 + L"Persönliche Worte:", + L"Aufgrund der Kartengröße darf Ihre Botschaft nicht länger sein als 75 Zeichen.", + L"...oder wählen Sie eine unserer", + + L"STANDARD-KARTEN", + L"Rechnung für",//20 + + //The text that goes beside the area where the user can enter their name + + L"Name:", +}; + +//Florist Gallery.c +STR16 sFloristGalleryText[] = +{ + //text on the buttons + L"Zurück", //abbreviation for previous + L"Weiter", //abbreviation for next + L"Klicken Sie auf das Gesteck Ihrer Wahl", + L"Bitte beachten Sie, dass wir für jedes kaputte oder verwelkte Gesteck einen Aufpreis von $10 berechnen.", + L"Home", +}; + +STR16 sFloristCards[] = +{ + L"Klicken Sie auf das Gesteck Ihrer Wahl", + L"Zurück", +}; + +// Text for Bobby Ray's Mail Order Site +STR16 BobbyROrderFormText[] = +{ + L"Bestellformular", //Title of the page + L"St.", // The number of items ordered + L"Gew. (%s)", // The weight of the item + L"Artikel", // The name of the item + L"Preis", // the item's weight + L"Summe", //5 // The total price of all of items of the same type + L"Zwischensumme", // The sub total of all the item totals added + L"Versandkosten (vgl. Bestimmungsort)", // S&H is an acronym for Shipping and Handling + L"Endbetrag", // The grand total of all item totals + the shipping and handling + L"Bestimmungsort", + L"Liefergeschwindigkeit", //10 // See below + L"$ (pro %s)", // The cost to ship the items + L"Übernacht-Express", // Gets deliverd the next day + L"2 Arbeitstage", // Gets delivered in 2 days + L"Standard-Service", // Gets delivered in 3 days + L"Löschen", //15 // Clears the order page + L"Bestellen", // Accept the order + L"Zurück", // text on the button that returns to the previous page + L"Home", // Text on the button that returns to the home page + L"* Gebrauchter Gegenstand", // Disclaimer stating that the item is used + L"Sie haben nicht genug Geld.", //20 // A popup message that to warn of not enough money + L"", // Gets displayed when there is no valid city selected + L"Wollen Sie Ihre Bestellung wirklich nach %s schicken?", // A popup that asks if the city selected is the correct one + L"Packungsgewicht**", // Displays the weight of the package + L"** Mindestgewicht", // Disclaimer states that there is a minimum weight for the package + L"Lieferungen", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"Pistolen", + L"MPs", + L"SMGs", + L"Gewehre", + L"SSGs", + L"Sturmgew.", + L"MGs", + L"Schrotfl.", + L"Schwere W.", + + // Ammo + L"Pistole", + L"M.-Pistole", + L"SMG", + L"Gewehr", + L"SS-Gewehr", + L"Sturmgew.", + L"MG", + L"Schrotfl.", + + // Used + L"Feuerwfn.", + L"Rüstungen", + L"Trageausr.", + L"Sonstiges", + + // Armour + L"Helme", + L"Westen", + L"Hosen", + L"Platten", + + // Misc + L"Klingen", + L"Wurfmesser", + L"Schlagwaf.", + L"Granaten", + L"Bomben", + L"Verbandsk.", + L"Taschen", + L"Kopfausr.", + L"Trageausr.", + L"Optik", // Madd: new BR filters + L"Gri/Las", + L"Mündung", + L"Schaft", + L"Mag/Abz.", + L"Andere An.", + L"Sonstiges", +}; + +// This text is used when on the various Bobby Ray Web site pages that sell items +STR16 BobbyRText[] = +{ + L"Bestellen", // Title + L"Klicken Sie auf den gewünschten Gegenstand. Weiteres Klicken erhöht die Stückzahl. Rechte Maustaste verringert Stückzahl. Wenn Sie fertig sind, weiter mit dem Bestellformular.", // instructions on how to order + + //Text on the buttons to go the various links + + L"Zurück", // + L"Feuerwfn.", //3 + L"Munition", //4 + L"Rüstung", //5 + L"Sonstiges", //6 //misc is an abbreviation for miscellaneous + L"Gebraucht", //7 + L"Vor", + L"BESTELLEN", + L"Startseite", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"Ihr Team hat", //11 + L"Waffe(n), die diese Munition verschießen", //12 + + //The following lines provide information on the items + + L"Gewicht:", // Weight of all the items of the same type + L"Kal:", // the caliber of the gun + L"Mag:", // number of rounds of ammo the Magazine can hold + L"Reichw.:", // The range of the gun + L"Schaden:", // Damage of the weapon + L"Kadenz:", // Weapon's Rate Of Fire, acroymn ROF + L"AP:", // Weapon's Action Points, acronym AP + L"Bet.:", // Weapon's Stun Damage + L"Rüstung:", // Armour's Protection + L"Tarn.:", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Preis:", // Cost of the item + L"Vorrätig:", // The number of items still in the store's inventory + L"Bestellt:", // The number of items on order + L"Beschädigt", // If the item is damaged + L"Gew.:", // the Weight of the item + L"Summe:", // The total cost of all items on order + L"* %% funktionstüchtig", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + L"Mist! Mit diesem Formular können Sie nur " ,//First part + L" Sachen bestellen. Wenn Sie mehr wollen (was wir sehr hoffen), füllen Sie bitte noch ein Formular aus.", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Sorry. Davon haben wir leider im Moment nichts mehr auf Lager. Versuchen Sie es später noch einmal.", + + //A popup that tells the user that the store is temporarily sold out + + L"Es tut uns sehr leid, aber im Moment sind diese Sachen total ausverkauft.", + +}; + +// Text for Bobby Ray's Home Page +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"Dies ist die heißeste Seite für Waffen und militärische Ausrüstung aller Art", + L"Welchen Sprengstoff Sie auch immer brauchen - wir haben ihn.", + L"SECOND HAND", + + //Text for the various links to the sub pages + + L"SONSTIGES", + L"FEUERWAFFEN", + L"MUNITION", //5 + L"RÜSTUNG", + + //Details on the web site + + L"Was wir nicht haben, das hat auch kein anderer", + L"In Arbeit", +}; + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page +STR16 AimSortText[] = +{ + L"A.I.M. Mitglieder", // Title + L"Sortieren:", // Title for the way to sort + + // sort by... + + L"Preis", + L"Erfahrung", + L"Treffsicherheit", + L"Technik", + L"Sprengstoff", + L"Medizin", + L"Gesundheit", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Kraft", + L"Führungsqualität", + L"Weisheit", + L"Name", + + //Text of the links to other AIM pages + + L"Den Söldner-Kurzindex ansehen", + L"Personalakte der Söldner ansehen", + L"Die AIM-Veteranengalerie ansehen", + + // text to display how the entries will be sorted + + L"Aufsteigend", + L"Absteigend", +}; + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Zurück", + L"AIM HomePage", + L"Regel-Index", + L"Nächste Seite", + L"Ablehnen", + L"Zustimmen", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index +STR16 AimMemberText[] = +{ + L"Linksklick", + L"zum Kontaktieren.", + L"Rechtsklick", + L"zum Foto-Index.", +// L"Linksklick zum Kontaktieren. \nRechtsklick zum Foto-Index.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Gesundheit", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Kraft", + L"Führungsqualität", + L"Weisheit", + L"Erfahrungsstufe", + L"Treffsicherheit", + L"Technik", + L"Sprengstoff", + L"Medizin", //10 + + + // the contract expenses' area + + L"Preis", + L"Vertrag", + L"1 Tag", + L"1 Woche", + L"2 Wochen", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"Zurück", + L"Kontakt", + L"Weiter", + L"Zusatzinfo", // Title for the additional info for the merc's bio + L"Aktive Mitglieder", //20 // Title of the page + L"Zusätzl. Ausrüst:", // Displays the optional gear cost + L"Ausr.", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's + L"VERSICHERUNG erforderlich", // If the merc required a medical deposit, this is displayed + L"Kit 1", // Text on Starting Gear Selection Button 1 + L"Kit 2", // Text on Starting Gear Selection Button 2 + L"Kit 3", // Text on Starting Gear Selection Button 3 + L"Kit 4", // Text on Starting Gear Selection Button 4 + L"Kit 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + +//Aim Member.c +//The page in which the player's hires AIM mercenaries +//The following text is used with the video conference popup +STR16 VideoConfercingText[] = +{ + L"Vertragskosten:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"1 Tag", + L"1 Woche", + L"2 Wochen", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"Keine Ausrüstung", + L"Ausrüstung kaufen", + + // Text on the Buttons + + L"GELD ÜBERWEISEN", // to actually hire the merc + L"ABBRECHEN", // go back to the previous menu + L"ANHEUERN", // go to menu in which you can hire the merc + L"AUFLEGEN", // stops talking with the merc + L"OK", + L"NACHRICHT", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Videokonferenz mit", + L"Verbinde. . .", + + L"versichert", // Displays if you are hiring the merc with the medical deposit + +}; + +//Aim Member.c +//The page in which the player hires AIM mercenaries +// The text that pops up when you select the TRANSFER FUNDS button +STR16 AimPopUpText[] = +{ + L"ELEKTRONISCHE ÜBERWEISUNG AUSGEFÜHRT", // You hired the merc + L"ÜBERWEISUNG KANN NICHT BEARBEITET WERDEN", // Player doesn't have enough money, message 1 + L"NICHT GENUG GELD", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"Im Einsatz", + L"Bitte Nachricht hinterlassen", + L"Verstorben", + + //If you try to hire more mercs than game can support + + L"Sie haben bereits ein vollständiges Team.", + + L"Mailbox", + L"Nachricht aufgenommen", +}; + +//AIM Link.c +STR16 AimLinkText[] = +{ + L"A.I.M. Links", //The title of the AIM links page +}; + +//Aim History +// This page displays the history of AIM +STR16 AimHistoryText[] = +{ + L"Die Geschichte von A.I.M.", //Title + + // Text on the buttons at the bottom of the page + + L"Zurück", + L"Startseite", + L"Veteranen", + L"Weiter", +}; + +//Aim Mug Shot Index +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Preis", + L"Erfahrung", + L"Treffsicherheit", + L"Technik", + L"Sprengstoff", + L"Medizin", + L"Gesundheit", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Kraft", + L"Führungsqualität", + L"Weisheit", + L"Name", + + // The title of the page, the above text gets added at the end of this text + L"A.I.M.-Mitglieder ansteigend sortiert nach %s", + L"A.I.M.-Mitglieder absteigend sortiert nach %s", + + // Instructions to the players on what to do + + L"Linke Maustaste", + L"um Söldner auszuwählen", //10 + L"Rechte Maustaste", + L"um Optionen einzustellen", + + // Gets displayed on top of the merc's portrait if they are... + + //Please be careful not to increase the size of strings for following three + L"Abwesend", + L"Verstorben", //14 + L"Im Dienst", +}; + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM +STR16 AimAlumniText[] = +{ + // Text of the buttons + L"SEITE 1", + L"SEITE 2", + L"SEITE 3", + L"A.I.M.-Veteranen", // Title of the page + L"ENDE", // Stops displaying information on selected merc + L"Nächste", +}; + +//AIM Home Page +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"A.I.M. und das A.I.M.-Logo sind in den meisten Ländern eingetragene Warenzeichen.", + L"Also denken Sie nicht mal daran, uns nachzumachen.", + L"Copyright 1998-1999 A.I.M., Ltd. Alle Rechte vorbehalten.", + + //Text for an advertisement that gets displayed on the AIM page + + L"Fleuropa", + L"\"Wir werfen überall per Fallschirm ab\"", //10 + L"Treffen Sie gleich zu Anfang", + L"... die richtige Wahl.", + L"Was wir nicht haben, das brauchen Sie auch nicht.", +}; + +//Aim Home Page +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + + L"Home", + L"Mitglieder", + L"Veteranen", + L"Regeln", + L"Geschichte", + L"Links", +}; + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. +STR16 SKI_Text[] = +{ + L"WAREN VORRÄTIG", //Header for the merchandise available + L"SEITE", //The current store inventory page being displayed + L"KOSTEN", //The total cost of the the items in the Dealer inventory area + L"WERT", //The total value of items player wishes to sell + L"SCHÄTZUNG", //Button text for dealer to evaluate items the player wants to sell + L"TRANSAKTION", //Button text which completes the deal. Makes the transaction. + L"FERTIG", //Text for the button which will leave the shopkeeper interface. + L"KOSTEN", //The amount the dealer will charge to repair the merc's goods + L"1 STUNDE", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d STUNDEN", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"REPARIERT", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"Es ist kein Platz mehr, um Sachen anzubieten.", //Message box that tells the user there is no more room to put there stuff + L"%d MINUTEN", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Gegenstand fallenlassen.", + L"BUDGET", +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Nehmen", // Take money from the player + L"Geben", // Give money to the player + L"Abbruch", // Cancel the transfer + L"Löschen", // Clear the money display +}; + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + // Text on the bank machine panel that.... + L"Vorgang auswählen", // tells the user to select either to give or take from the merc + L"Betrag eingeben", // Enter the amount to transfer + L"Geld an Söldner überweisen", // Giving money to the merc + L"Geld von Söldner überweisen", // Taking money from the merc + L"Nicht genug Geld", // Not enough money to transfer + L"Kontostand", // Display the amount of money the player currently has +}; + +STR16 SkiMessageBoxText[] = +{ + L"Möchten Sie %s von Ihrem Konto abbuchen, um die Differenz zu begleichen?", + L"Nicht genug Geld. Ihnen fehlen %s.", + L"Möchten Sie %s von Ihrem Konto abbuchen, um die Kosten zu decken?", + L"Händler bitten, mit der Überweisung zu beginnen.", + L"Händler bitten, Gegenstände zu reparieren", + L"Unterhaltung beenden", + L"Kontostand", + + L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate + L"Do you want to transfer %s Intel to cover the cost?", +}; + +//OptionScreen.c +STR16 zOptionsText[] = +{ + //button Text + L"Spiel sichern", + L"Spiel laden", + L"Beenden", + L"Nächste", + L"Vorherige", + L"Fertig", + L"1.13 Features", + L"New in 1.13", + L"Options", + //Text above the slider bars + L"Effekte", + L"Sprache", + L"Musik", + //Confirmation pop when the user selects.. + L"Spiel verlassen und zurück zum Hauptmenü?", + L"Sprachoption oder Untertitel müssen aktiviert sein.", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Spiel sichern", + L"Spiel laden", + L"Abbrechen", + L"Auswahl speichern", + L"Auswahl laden", + + L"Spiel erfolgreich gespeichert", + L"FEHLER beim Speichern des Spiels!", + L"Spiel erfolgreich geladen", + L"FEHLER beim Laden des Spiels!", + + + L"Der gespeicherte Spielstand unterscheidet sich vom aktuellen Spielstand. Es kann wahrscheinlich nichts passieren. Weiter?", + L"Die gespeicherten Spielstände sind evtl. beschädigt. Wollen Sie sie alle löschen?", + + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Gespeicherte Version wurde geändert. Bitte melden Sie etwaige Probleme. Weiter?", +#else + L"Versuche, älteren Spielstand zu laden. Laden und automatisch aktualisieren?", +#endif + + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Spielstand und Spieleversion wurden geändert. Bitte melden Sie etwaige Probleme. Weiter?", +#else + L"Versuche, älteren Spielstand zu laden. Laden und automatisch aktualisieren?", +#endif + + L"Gespeichertes Spiel in Position #%d wirklich überschreiben?", + L"Wollen Sie das Spiel aus Position # speichern?", + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + // + L"Sie haben zu wenig Festplattenspeicher. Sie haben nur %d MB frei und JA2 benötigt mindestens %d MB.", + + + L"Speichere", //While the game is saving this message appears. + + L"Normale Waffen", + L"Zusatzwaffen", + L"Real-Stil", + L"SciFi-Stil", + L"Schwierigkeit", + L"Platinum Mode", //Placeholder English + L"Bobby Ray Qualität", + L"Normale Auswahl", + L"Große Auswahl", + L"Ausgezeichnete Auswahl", + L"Fantastische Auswahl", + + L"Neues Inventar funktioniert nicht in 640x480 Bildschirmauflösung. Wählen Sie eine höhere Bildschirmauflösung und versuchen Sie es erneut.", + L"Neues Inventar funktioniert nicht mit dem ausgewählten 'Data' Ordner.", + + L"Die gespeicherte Truppengröße im Spielstand wird nicht unterstützt bei der aktullen Bildschirmauflösung. Wählen Sie eine höhere Bildschirmauflösung und versuchen Sie es erneut.", + L"Bobby Ray Auswahl", +}; + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Map-Level", + L"Sie haben gar keine Miliz. Sie müssen Bewohner der Stadt trainieren, wenn Sie dort eine Miliz aufstellen wollen.", + L"Tägl. Einkommen", + L"Söldner hat Lebensversicherung", + L"%s ist nicht müde.", + L"%s ist unterwegs und kann nicht schlafen.", + L"%s ist zu müde. Versuchen Sie es ein bisschen später noch mal.", + L"%s fährt.", + L"Der Trupp kann nicht weiter, wenn einer der Söldner pennt.", + + + // stuff for contracts + L"Sie können zwar den Vertrag bezahlen, haben aber kein Geld für die Lebensversicherung.", + L"%s Lebensversicherungsprämien kosten %s pro %d Zusatztag(en). Wollen Sie das bezahlen?", + L"Gegenstände im Sektor", + + L"Söldner hat Krankenversicherung.", + + + // other items + L"Sanitäter", // people acting a field medics and bandaging wounded mercs + L"Patienten", // people who are being bandaged by a medic + L"Fertig", // Continue on with the game after autobandage is complete + L"Stop", // Stop autobandaging of patients by medics now + L"Sorry. Diese Option gibt es in der Demo nicht.", // informs player this option/button has been disabled in the demo + + L"%s hat kein Werkzeug.", + L"%s hat kein Verbandszeug.", + L"Es sind nicht genug Leute zum Training bereit.", + L"%s ist voller Milizen.", + L"Söldner hat begrenzten Vertrag.", + L"Vertrag des Söldners beinhaltet keine Versicherung.", + L"Kartenübersicht", // 24 + + // Flugente: disease texts describing what a map view does TODO.Translate + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate + + // Flugente: weather texts describing what a map view does + L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate +}; + +STR16 pLandMarkInSectorString[] = +{ + L"Trupp %d hat in Sektor %s jemanden bemerkt.", + L"Trupp %s hat in Sektor %s jemanden bemerkt.", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"Eine Milizeinheit für diese Stadt zu trainieren kostet $", // telling player how much it will cost + L"Ausgabe genehmigen?", // asking player if they wish to pay the amount requested + L"Sie haben nicht genug Geld.", // telling the player they can't afford to train this town + L"Miliz in %s (%s %d) weitertrainieren?", // continue training this town? + + L"Preis $", // the cost in dollars to train militia + L"( J/N )", // abbreviated yes/no + L"Miliz auf dem Raketenstützpunkt im Sektor %s (%s %d) weitertrainieren?", // continue trainign militia in SAM site sector + L"Milizen in %d Sektoren zu trainieren kostet $ %d. %s", // cost to train sveral sectors at once + + L"Sie können sich keine $%d für die Miliz hier leisten.", + L"%s benötigt eine Loyalität von %d Prozent, um mit dem Milizen-Training fortzufahren.", + L"Sie können die Miliz in %s nicht mehr trainieren.", + L"weitere Stadtteile befreien", + + L"neue Stadtteile befreien", + L"mehr Städte erobern", + L"den verlorenen Fortschritt wieder aufholen", + L"weiter fortschreiten", + + L"mehr Rebellen rekrutieren", +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"Sie können nur max. 20.000$ abheben.", + L"Wollen Sie wirklich %s auf Ihr Konto einzahlen?", +}; + +STR16 gzCopyrightText[] = +{ + L"Copyright (C) 1999 Sir-tech Canada Ltd. Alle Rechte vorbehalten.", // +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Sprache", + L"Stumme Bestätigungen", + L"Untertitel", + L"Dialoge Pause", + L"Rauch animieren", + L"Blut zeigen", + L"Cursor nicht bewegen", + L"Alte Auswahlmethode", + L"Weg vorzeichnen", + L"Fehlschüsse anzeigen", + L"Bestätigung bei Echtzeit", + L"Schlaf-/Wachmeldung anzeigen", + L"Metrisches System benutzen", + L"Markieren Sie Söldner", + L"Cursor autom. auf Söldner", + L"Cursor autom. auf Türen", + L"Gegenstände leuchten", + L"Baumkronen zeigen", + L"Smart Tree Tops", // TODO. Translate + L"Drahtgitter zeigen", + L"3D Cursor zeigen", + L"Trefferchance anzeigen", + L"GL Burst mit Burst Cursor", + L"Gegner-Spott aktiveren", // Changed from "Enemies Drop all Items" - SANDRO + L"Hohe Granatwerfer-Flugbahn", + L"Echtzeit-Schleichen aktivieren", // Changed from "Restrict extra Aim Levels" - SANDRO + L"Nächste Gruppe selektieren", + L"Gegenstände mit Schatten", + L"Waffenreichweite in Felder", + L"Leuchtspur für Einzelschüsse", + L"Regengeräusche", + L"Krähen erlauben", + L"Tooltips über Gegner", + L"Automatisch speichern", + L"Stummer Skyrider", + L"Erw. Gegenstandsinfo", + L"Erzwungener Runden-Modus", // add forced turn mode + L"Alternatives Kartenfarbschema", // Change color scheme of Strategic Map + L"Alternative Projektil-Grafik", // Show alternate bullet graphics (tracers) + L"Logical Bodytypes", + L"Söldnerrang anzeigen.", // shows mercs ranks + L"Gesichtsequipment-Grafiken", + L"Gesichtsequipment-Icons", + L"Cursor-Wechsel deaktivieren", // Disable Cursor Swap + L"Stummes Trainieren", // Madd: mercs don't say quotes while training + L"Stummes Reparieren", // Madd: mercs don't say quotes while repairing + L"Stumme Behandlung", // Madd: mercs don't say quotes while doctoring + L"Autom. schnelle Gegner-Züge", // Automatic fast forward through AI turns + L"Zombies erlauben", // Flugente Zombies + L"Inventar Popup-Menüs", // the_bob : enable popups for picking items from sector inv + L"Übrige Feinde markieren", + L"Tascheninhalt anzeigen", + L"Mausradrichtung umkehren", + L"Bewegung in Formation", // when multiple mercs are selected, they will try to keep their relative distances + L"Show enemy location", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Erzwinge BR Lieferung", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--DEBUG OPTIONS--", // an example options screen options header (pure text) + L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. + L"Reset ALL game options", // failsafe show/hide option to reset all options + L"Do you really want to reset?", // a do once and reset self option (button like effect) + L"Debug Options in other builds", // allow debugging in release or mapeditor + L"DEBUG Render Option group", // an example option that will show/hide other options + L"Render Mouse Regions", // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Wenn diese Funktion aktiviert ist, werden in Dialogen Stimmen wiedergegeben. Anderenfalls wird nur der Text angezeigt.", + + //Mute Confirmation + L"Schalten Sie mit dieser Funktion die gesprochenen Bestätigungen (wie \"Okay\" oder \"Bin dran\") aus, wenn sie stören.", + + //Subtitles + L"Wenn diese Funktion aktiviert ist, wird in Dialogen der entsprechende Text angezeigt.", + + //Key to advance speech + L"Schalten Sie diese Funktion AN, wenn Sie Dialoge von NPCs ganz in Ruhe lesen wollen. Untertitel müssen dazu AN sein.", + + //Toggle smoke animation + L"Schalten Sie diese Option ab, wenn animierter Rauch Ihre Bildwiederholrate verlangsamt.", + + //Blood n Gore + L"Diese Option abschalten, wenn Sie kein Blut sehen können.", + + //Never move my mouse + L"Schalten Sie diese Option ab, wenn Sie nicht möchten, dass Ihr Mauszeiger automatisch auf Pop-Up-Fenster springt.", + + //Old selection method + L"Mit dieser Option funktioniert die Auswahl der Söldner so wie in früheren JAGGED ALLIANCE-Spielen (also genau andersherum als jetzt).", + + //Show movement path + L"Diese Funktion anschalten, um die geplanten Wege der Söldner zum Cursor anzuzeigen\n(oder abgeschaltet lassen und bei gewünschter Anzeige die |S|h|i|f|t-Taste drücken).", + + //show misses + L"Wenn diese Funktion aktiviert ist, folgt die Spielkamera im Rundenmodus der Geschossflugbahn bis zu ihrem Ende. Ausschalten um das Spiel zu beschleunigen.", + + //Real Time Confirmation + L"Wenn diese Funktion aktiviert ist, wird für jede Aktion im Echtzeit-Modus ein zusätzlicher \"Sicherheits\"-Klick verlangt um versehentliche Befehle zu vermeiden.", + + //Sleep/Wake notification + L"Schalten Sie diese Option aus, wenn Sie kein Popup erhalten wollen, sobald zu einem Dienst eingeteilte Söldner schlafen gehen oder die Arbeit wieder aufnehmen.", + + //Use the metric system + L"Mit dieser Option wird im Spiel das metrische anstelle des imperialen Maßsystems verwendet (z.B. Meter und Kilogramm).", + + //Highlight Mercs + L"Wenn AN, wird der Söldner hervorgehoben (für Feinde nicht sichtbar).\nIm Spiel umschalten mit (|G)", + + //Smart cursor + L"Wenn diese Funktion aktiviert ist, springt der Cursor immer automatisch auf Söldner in seiner direkten Nähe.", + + //snap cursor to the door + L"Wenn diese Funktion aktiviert ist, springt der Cursor automatisch auf Türen in direkter Nähe des Mauszeigers.", + + //glow items + L"Wenn diese Funktion aktiviert ist, haben Gegenstände am Boden zur besseren Sichtbarkeit einen pulsierenden Rahmen (|C|t|r|l+|A|l|t+|I).", + + //toggle tree tops + L"Mit der Deaktivierung dieser Funktion lassen sich Baumkronen ausblenden um bessere Sicht auf das Geschehen zu ermöglichen (|T).", + + //smart tree tops + L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate + + //toggle wireframe + L"Wenn diese Funktion aktiviert ist, werden Drahtgitter verborgener Wände gezeigt um z.B. perspektivisch verdeckte Fenster zu erkennen (|C|t|r|l+|A|l|t+|W).", + + L"Wenn diese Funktion aktiviert ist, wird der Bewegungs-Cursor in 3D angezeigt (|H|o|m|e).", + + // Options for 1.13 + L"Wenn diese Funktion aktiviert ist, wird die Trefferwahrscheinlichkeit am Cursor angezeigt.", + L"Mit dieser Funktion lässt sich der Zielcursor für Granatwerfer-Feuerstöße umschalten. Der Burst-Cursor (wenn AN) ermöglicht den Beschuss einer größeren Fläche.", + L"Wenn diese Funktion aktiviert ist, beschimpfen Gegner den Spieler oder kommentieren ihre Situation mittels kleiner Pop-Ups.", // Changed from Enemies Drop All Items - SANDRO + L"Wenn diese Funktion aktiviert ist, können Granatwerfer Granaten in höherem Winkel abfeuern und so ihre volle Reichweite ausnutzen (|A|l|t+|Q).", + L"Wenn diese Funktion aktiviert ist, schaltet das Spiel für unbemerkt schleichende Söldner nicht automatisch in den Rundenmodus sobald Gegner in Sicht geraten, außer Sie drücken |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO + L"Wenn diese Funktion aktiviert ist, selektiert |S|p|a|c|e automatisch die nächste Gruppe statt den nächsten Söldner der Gruppe.", + L"Wenn diese Funktion aktiviert ist, werfen Gegenstände einen Schatten.", + L"Wenn diese Funktion aktiviert ist, werden Waffenreichweiten in Feldern angezeigt statt in z.B. Metern.", + L"Wenn diese Funktion aktiviert ist, wird auch für Einzelschüsse mit Leuchtspurmunition der grafische Effekt dazu angezeigt.", + L"Wenn diese Funktion aktiviert ist, werden Regengeräusche hörbar, sobald es regnet.", + L"Wenn diese Funktion aktiviert ist, sind Krähen im Spiel vorhanden und hacken lautstark an manchen Leichen herum, haben aber sonst keine großen Auswirkungen auf das Spiel.", + 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 Skyrider nichts mehr sagen. Verwenden Sie diese Option, wenn er Ihnen auf die Nüsse geht.", + 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+|T).", + 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"When ON, mercenary body graphic can change along with equipped gear.", // TODO.Translate + 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 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, 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 Reperaturfortschritt nicht mehr berichten.", + L"Wenn diese Funktion aktiviert ist, werden die Söldner über den ärztlichen Fortschritt nicht mehr berichten.", + L"Wenn diese Funktion aktiviert ist, werden gegnerische Züge schneller durchgeführt.", + + L"Wenn diese Funktion aktiviert ist, können Tote als Zombies wieder auferstehen. Seien Sie auf der Hut!", + L"Wenn diese Funktion aktiviert ist, und Sie mit der linken Maustaste auf einen freien Söldner-Inventarplatz klicken (während das Sektor-Inventar angezeigt wird), wird ein hilfreiches Popup-Menü eingeblendet.", + L"Wenn diese Funktion aktiviert ist, wird die ungefähre Postion der verbleibenden Feinde auf der Übersichtskarte schraffiert", + L"Wenn diese Funktion aktiviert ist, wird in der erweiterten Beschreibung von Taschen statt den Anbauteilen deren Inhalt angezeigt.", + L"Wenn diese Funktion aktiviert ist, wird die Mausradrichtung umgekehrt", + L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate + L"When ON, shows last known enemy location.", //TODO.Translate + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Force all pending Bobby Ray shipments", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: Wenn diese Funktion aktiviert ist, wird der Abstand den jede die Kugel vom Zielmittelpunkt abweicht, unter Berücksichtigung aller CTH-Faktoren, ausgegeben.", + L"Hier klicken, um fehlerhafte Optionseinstellungen zu beheben.", // failsafe show/hide option to reset all options + L"Hier klicken, um fehlerhafte Optionseinstellungen zu beheben.", // a do once and reset self option (button like effect) + L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor + L"Toggle to display debugging render options", // an example option that will show/hide other options + L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + +STR16 gzGIOScreenText[] = +{ + L"GRUNDEINSTELLUNGEN", +#ifdef JA2UB + L"Random Manuel texts", + L"Off", + L"On", +#else + L"Spielmodus", + L"Realistisch", + L"SciFi", +#endif + L"Platinum", //Placeholder English + L"Waffen", + L"Zus. Waffen", + L"Normal", + L"Schwierigkeitsgrad", + L"Einsteiger", + L"Profi", + L"Alter Hase", + L"WAHNSINNIG", + L"Starten", + L"Abbrechen", + L"Extra schwer", + L"Jederzeit speichern", + L"IRONMAN", + L"Option nicht verfügbar", + L"Bobby Ray Qualität", + L"Normal", + L"Groß", + L"Ausgezeichnet", + L"Fantastisch", + L"Inventar / Attachments", + L"NOT USED", // Alt (Original) + L"NOT USED", // Neu - mit Trageausr. + L"Lade MP Spiel", + L"GRUNDEINSTELLUNGEN (Nur Servereinstellungen werden verwendet)", + // Added by SANDRO + L"Fertigkeiten", + L"Alte", + L"Neue", + L"Max. BSE-Charaktere", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Tote Gegner lassen alles fallen", + L"Aus", + L"An", +#ifdef JA2UB + L"Tex and John", + L"Zufällig", + L"Alle vorhanden", +#else + L"Anzahl der Terroristen", + L"Zufällig", + L"Alle vorhanden", +#endif + L"Geheime Waffenlager", + L"Zufällig", + L"Alle vorhanden", + L"Fortschritt Waffenwahl", + L"Sehr langsam", + L"Langsam", + L"Normal", + L"Schnell", + L"Sehr schnell", + L"Alt / Alt", + L"Neu / Alt", + L"Neu / Neu", + + // Squad Size + L"Max. Truppengröße", + L"6", + L"8", + L"10", + //L"Schneller Bobby Ray Lieferungen", + L"Inventarzugriff kostet APs", + L"Neues Zielsystem", + L"Verbesserte Unterbrechungen", + L"Söldner-Hintergrundgeschichten", + L"Nahrungssystem", + L"Bobby Ray Auswahl", + + // anv: extra iron man modes + L"SOFT IRONMAN", + L"EXTREME IRONMAN", +}; + +STR16 gzMPJScreenText[] = +{ + L"MEHRSPIELER", + L"Teilnehmen", + L"Eröffnen", + L"Abbrechen", + L"Aktualisieren", + L"Spielername", + L"Server-IP", + L"Port", + L"Servername", + L"# Spieler", + L"Version", + L"Spieltyp", + L"Ping", + L"Sie müssen einen Spielernamen eingeben.", + L"Sie müssen eine gültie Server-IP-Adresse eingeben. Zum Beispiel: 84.114.195.239", + L"Sie müssen eine gültige Server-Portnummer zwischen 1 und 65535 eingeben.", +}; + +STR16 gzMPJHelpText[] = +{ + L"Besuchen Sie http://webchat.quakenet.org/?channels=ja2-multiplayer um sich mit anderen Spielern zu treffen.", + L"Drücken Sie 'y' um das Chat-Fenster im Spiel zu öffnen, nachdem Sie mit dem Server verbunden sind.", + + L"ERÖFFNEN", + L"Geben Sie '127.0.0.1' für die IP Adresse ein. Die Port Nummer sollte größer als 60000 sein.", + L"Vergewissern Sie sich, dass das Port (UDP, TCP) auf dem Router weitergeleitet wird. Siehe: http://portforward.com", + L"Sie müssen Ihre externe IP (http://www.whatismyip.com) und die Port Nummer an die anderen Spieler schicken (via IRC, ICQ, etc.).", + L"Klicken Sie auf 'Eröffnen', um ein neues Spiel zu eröffnen.", + + L"TEILNEHMEN", + L"Der Host muss Ihnen die externe IP Adresse und die Port Nummer schicken (via IRC, ICQ, etc.).", + L"Geben Sie die externe IP und die Port Nummer des Hosts ein.", + L"Klicken Sie auf 'Teilnehmen', um an einem bereits eröffneten Spiel teilzunehmen.", +}; + +STR16 gzMPHScreenText[] = +{ + L"ERÖFFNE SPIEL", + L"Starten", + L"Abbrechen", + L"Servername", + L"Spieltyp", + L"Deathmatch", + L"Team-Deathmatch", + L"Kooperativ", + L"Maximale Spieler", + L"Maximale Söldner", + L"Söldnerauswahl", + L"Söldnerrekrutierung", + L"Söldner selbst wählen", + L"Startkapital", + L"Gleiche Söldner erlaubt", + L"Angeheuerte Söldner anzeigen", + L"Bobby Ray", + L"Sektor Startzone", + L"Sie müssen einen Servernamen eingeben.", + L"", + L"", + L"Tageszeit", + L"", + L"" , + L"Waffenschaden", + L"", + L"Rundenzeitbegrenzung", + L"", + L"Erlaube Zivilisten in CO-OP", + L"", + L"Maximale KI-Gegner in CO-OP", + L"Synchronisiere Verzeichnisse", + L"Synchronisationsverzeichnis", + L"Sie müssen ein gültiges MP-Synchronisationsverzeichnis eingeben.", + L"(Benutzen Sie '/' anstelle von '\\' als Verzeichnistrennzeichen.)", + L"Das angegebene MP-Synch.-Verzeichnis existiert nicht.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Ja", + L"Nein", + // Starting Time + L"Morgen", + L"Nachmittag", + L"Nacht", + // Starting Cash + L"Wenig", + L"Mittel", + L"Viel", + L"Unendlich", + // Time Turns + L"Niemals", + L"Langsam", + L"Mittel", + L"Schnell", + // Weapon Damage + L"Sehr gering", + L"Gering", + L"Normal", + // Merc Hire + L"Zufällig", + L"Normal", + // Sector Edge + L"Zufällig", + L"Wählbar", + // Bobby Ray / Hire same merc + L"Verbieten", + L"Erlauben", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Austin", //Austin, Texas, USA + L"Bagdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns except Meduna are dummy names... + L"Hong Kong", //Hong Kong, Hong Kong + L"Beirut", //Beirut, Lebanon (Middle East) + L"London", //London, England + L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Metavira", //The island of Metavira was the fictional location used by JA1 + L"Miami", //Miami, Florida, USA (SE corner of USA) + L"Moskau", //Moscow, USSR + L"New York", //New York, New York, USA + L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Paris", //Paris, France + L"Tripolis", //Tripoli, Libya (eastern Mediterranean) + L"Tokio", //Tokyo, Japan + L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Sind Sie sicher? Ein Wert von 0 bedeutet, dass der Charakter diese Fähigkeit nicht nutzen kann.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"(max. 8 Buchstaben)", +}; + +STR16 pIMPFinishButtonText[] = +{ + L"Analyse wird durchgeführt", +}; + +STR16 pIMPFinishStrings[] = +{ + L"Danke, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Stimme", +}; + +STR16 pDepartedMercPortraitStrings[] = +{ + L"Im Einsatz getötet", + L"Entlassen", + L"Sonstiges", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Söldner-Manager", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Pause", + L"Zurück zum Spiel (|P|a|u|s|e)", + L"Pause (|P|a|u|s|e)", +}; + +STR16 pMessageStrings[] = +{ + L"Spiel beenden?", + L"OK", + L"JA", + L"NEIN", + L"ABBRECHEN", + L"ZURÜCK", + L"LÜGEN", + L"Keine Beschreibung", //Save slots that don't have a description. + L"Spiel gespeichert", + L"Spiel gespeichert", + L"QuickSave", //10 //The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"Tag", + L"Söldner", + L"Leere Spiel Position", //An empty save game slot + L"Demo", //Demo of JA2 + L"Debug", //State of development of a project (JA2) that is a debug build + L"Veröffentlichung", //Release build for JA2 + L"RpM", //20 //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. //LOOTF - KpM macht Augenkrebs, KpM gibt es einfach nicht. + L"min", //Abbreviation for minute. + L"m", //One character abbreviation for meter (metric distance measurement unit). + L"Kgln", //Abbreviation for rounds (# of bullets) //LOOTF - character limit? Kugeln = kacke, will ändern! + L"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"Pfd", //Abbreviation for pounds (Imperial weight measurement unit) + L"Home", //Home as in homepage on the internet. + L"US$", //Abbreviation for US Dollars + L"n.a.", //Lowercase acronym for not applicable. + L"Inzwischen", //Meanwhile + L"%s ist im Sektor %s%s angekommen", //30 //Name/Squad has arrived in sector A9. Order must not change without notifying SirTech + L"Version", + L"Leere Quick-Save Position", + L"Diese Position ist für Quick-Saves aus dem Karten- oder Taktik-Bildschirm reserviert. Speichern mit ALT+S.", + L"offen", + L"zu", + L"Ihr Festplattenspeicher ist knapp. Sie haben lediglich %sMB frei und Jagged Alliance 2 v1.13 benötigt %sMB.", + L"%s von AIM angeheuert", + L"%s hat %s gefangen.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + + L"%s hat %s eingenommen.", //'Merc name' has taken 'item name' + L"%s hat keine medizinischen Fähigkeiten",//40 //'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"Die Integrität des Spieles wurde beschädigt.", //The integrity of the game has been compromised + L"FEHLER: CD-ROM-Laufwerk schließen", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"Kein Platz, um von hier aus zu feuern.", + + //Can't change stance due to objects in the way... + L"Kann seine Position hier nicht ändern.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Ablegen", + L"Werfen", + L"Weitergeben", + + L"%s weitergegeben an %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise you must notify SirTech. + L"Kein Platz, um %s an %s weiterzugeben.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" angebracht )", // 50 + + //Cheat modes + L"Cheat-Level EINS erreicht", + L"Cheat-Level ZWEI erreicht", + + //Toggling various stealth modes + L"Schleichbewegung für Trupp ein.", + L"Schleichbewegung für Trupp aus.", + L"Schleichbewegung für %s ein.", + L"Schleichbewegung für %s aus.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Drahtgitter ein", + L"Drahtgitter aus", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Von dieser Ebene geht es nicht nach oben...", + L"Noch tiefere Ebenen gibt es nicht...", // 60 + L"Gewölbeebene %d betreten...", + L"Gewölbe verlassen...", + + L"s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Autoscrolling AUS.", + L"Autoscrolling AN.", + L"3D-Cursor AUS.", + L"3D-Cursor AN.", + L"Trupp %d aktiv.", + L"Sie können %ss Tagessold von %s nicht zahlen", //first %s is the mercs name, the second is a string containing the salary + L"Abbruch", // 70 + L"%s kann alleine nicht gehen.", + L"Spielstand namens SaveGame249.sav kreiert. Wenn nötig, in SaveGame01 - SaveGame10 umbennen und über die Option 'Laden' aufrufen.", + L"%s hat %s getrunken.", + L"Paket in Drassen angekommen.", + L"%s kommt am %d. um ca. %s am Zielort an (Sektor %s).", //first %s is mercs name(OK), next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival !!!7 It should be like this: first one is merc (OK), next is day of arrival (OK) , next is time of the day for ex. 07:00 (not OK, now it is still sector), next should be sector (not OK, now it is still time of the day) //LOOTF - is this still valid? I assume it's not. + L"Logbuch aktualisiert.", + L"Granatenwerfer-Feuerstöße verwenden Ziel-Cursor (Sperrfeuer aktiviert).", + L"Granatenwerfer-Feuerstöße verwenden Flugbahn-Cursor (Sperrfeuer deaktiviert).", + L"Soldaten-Kurzinfo (\"Tooltips\") aktiviert", // Changed from Drop All On - SANDRO + L"Soldaten-Kurzinfo (\"Tooltips\") deaktiviert", // 80 // Changed from Drop All Off - SANDRO + L"Granatwerfer schießen in flachem Winkel.", + L"Granatwerfer schießen in steilem Winkel.", + // forced turn mode strings + L"Erzwungener Rundenmodus", + L"Normaler Rundenmodus", + L"Verlasse Kampfmodus", + L"Erzwungener Rundenmodus ist aktiv, gehe in Kampfmodus", + L"Spiel erfolgreich in Position End Turn Auto Save gespeichert.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. + L"Client", + + L"Sie können nicht altes Inventar und neues Attachment System gleichzeitig verwenden.", + L"Automatischer Spielstandspeicherung #", //91 // Text des Auto Saves im Load Screen mit ID + L"Dieser Platz ist reserviert für Spielstände die automatisch gespeichert werden. Dies kann ein/ausgeschaltet werden in der Datei ja2_options.ini (AUTO_SAVE_EVERY_N_HOURS).", //92 // The text, when the user clicks on the save screen on an auto save + L"Leerer Platz für automatische Spielstandspeicherung #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSpielstand", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"Zugende Spielstand #", // 95 // The text for the tactical end turn auto save + L"Speichere Automatischen Spielstand #", // 96 // The message box, when doing auto save + L"Speichere", // 97 // The message box, when doing end turn auto save + L"Leere Platz für Spieler-Zugende Spielstandspeicherung #", // 98 // The message box, when doing auto save + L"Dieser Platz ist reserviert für Spielstände am Ende eines Spieler Zuges. Dies kann ein/ausgeschaltet werden in den Spieleinstellungen.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) + L"Mausberech begrenzen, damit Mauscursor innerhalb des Spielfensters bleibt.", // 104 + L"Mausbereich wieder freigeben, um uneingeschränkte Mausbewebung zu erhalten.", // 105 + L"In Formation bewegen - EINGESCHALTET", + L"In Formation bewegen - AUSGESCHALTET", + L"Artificial Merc Light ON", // TODO.Translate + L"Artificial Merc Light OFF", + L"Gruppe %s aktiv.", + L"%s hat %s geraucht.", + L"Cheats aktivieren?", + L"Cheats deaktivieren?", +}; + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"OK", + L"Hochscrollen", + L"Alle auswählen", + L"Runterscrollen", + L"Abbrechen", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s ist nicht nahe genug, um geheilt zu werden", + L"Ihre Mediziner haben noch nicht alle verbinden können.", +}; + +STR16 pMilitiaButtonsHelpText[] = +{ + L"Zuordnung auflösen (|R|e|c|h|t|s |K|l|i|c|k)\nZuordnen (|L|i|n|k|s |K|l|i|c|k)\nGrüne Miliz", // button help text informing player they can pick up or drop militia with this button + L"Zuordnung auflösen (|R|e|c|h|t|s |K|l|i|c|k)\nZuordnen (|L|i|n|k|s |K|l|i|c|k)\nReguläre Miliz", + L"Zuordnung auflösen (|R|e|c|h|t|s |K|l|i|c|k)\nZuordnen (|L|i|n|k|s |K|l|i|c|k)\nElite Miliz", + L"Verteile Miliz gleichwertig über alle Sektoren", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Zu AIM gehen und Söldner anheuern ( *Tip*: Befindet sich im Laptop )", // to inform the player to hire some mercs to get things going +#ifdef JA2UB + L"Sobald Sie für die Reise nach Tracona bereit sind, klicken Sie auf den Zeitraffer-Button unten rechts auf dem Bildschirm.", // to inform the player to hit time compression to get the game underway +#else + L"Sobald Sie für die Reise nach Arulco bereit sind, klicken Sie auf den Zeitraffer-Button unten rechts auf dem Bildschirm.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Fehler. Fehlende oder fehlerhafte Datei(en). Spiel wird beendet.", +}; + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"E-Mail einsehen", + L"Websites durchblättern", + L"Dateien und Anlagen einsehen", + L"Logbuch lesen", + L"Team-Info einsehen", + L"Finanzen und Notizen einsehen", + + L"Laptop schließen", + + //Bottom task bar icons (if they exist): + L"Sie haben neue Mail", + L"Sie haben neue Dateien", + + //Bookmarks: + L"Association of International Mercenaries", + L"Bobby Rays Online-Waffenversand", + L"Bundesinstitut für Söldnerevaluierung", + L"More Economic Recruiting Center", + L"McGillicuttys Bestattungen", + L"Fleuropa", + L"Versicherungsmakler für A.I.M.-Verträge", + //New Bookmarks + L"", + L"Enzyklopädie", + L"Einsatzbesprechung", + L"Geschichte", + L"Mercenaries Love or Dislike You", // TODO.Translate + L"World Health Organization", + L"Kerberus - Experience In Security", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services", // TODO.Translate + L"Controlled factories", // TODO.Translate +}; + +STR16 gzHelpScreenText[] = +{ + L"Helpscreen verlassen", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"Es tobt eine Schlacht. Sie können sich nur im Taktik-Bildschirm zurückziehen.", + L"Sektor betreten und Kampf fortsetzen (|E).", + L"Kampf durch PC entscheiden (|A).", + L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn Sie angreifen.", + L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn Sie in einem Hinterhalt sind.", + L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn Sie gegen Monster kämpfen.", + L"Sie können den Kampf nicht vom PC entscheiden lassen, wenn feindliche Zivilisten da sind.", + L"Sie können einen Kampf nicht vom PC entscheiden lassen, wenn Bloodcats da sind.", + L"KAMPF IN GANGE", + L"Sie können sich nicht zurückziehen, wenn Sie in einem Hinterhalt sind.", +}; + +STR16 gzMiscString[] = +{ + L"Ihre Milizen kämpfen ohne die Hilfe der Söldner weiter...", + L"Das Fahrzeug muss nicht mehr aufgetankt werden.", + L"Der Tank ist %d%% voll.", + L"Deidrannas Armee hat wieder volle Kontrolle über %s.", + L"Sie haben ein Tanklager verloren.", +}; + + +STR16 gzIntroScreen[] = +{ + L"Kann Introvideo nicht finden", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + //There really isn't any difference between using "coming from" or "to". + //For the explosion case the string in English could be either: + // L"Gus hears a loud EXPLOSION 'to' the north.", + // L"Gus hears a loud EXPLOSION 'coming from' the north.", + //For certain idioms, it sounds better to use one over the other. It is a matter of preference. + L"%s hört %s aus dem %s.", + L"%s hört eine BEWEGUNG (%s) von %s.", + L"%s hört ein KNARREN (%s) von %s.", + L"%s hört ein KLATSCHEN (%s) von %s.", + L"%s hört einen AUFSCHLAG (%s) von %s.", + L"%s hört ein %s GESCHÜTZFEUER von %s.", // anv: without this, all further noise notifications were off by 1! + L"%s hört eine EXPLOSION (%s) von %s.", + L"%s hört einen SCHREI (%s) von %s.", + L"%s hört einen AUFSCHLAG (%s) von %s.", + L"%s hört einen AUFSCHLAG (%s) von %s.", + L"%s hört ein ZERBRECHEN (%s) von %s.", + L"%s hört ein ZERSCHMETTERN (%s) von %s.", + L"", // anv: placeholder for silent alarm + L"%s hört irgendeine %s STIMME von %s.", // anv: report enemy taunt to player +}; + +STR16 pTauntUnknownVoice[] = +{ + L"Unbekannte Stimme", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Sort. nach Name (|F|1)", + L"Sort. nach Auftrag (|F|2)", + L"Sort. nach wach/schlafend (|F|3)", + L"Sort. nach Ort (|F|4)", + L"Sort. nach Ziel (|F|5)", + L"Sort. nach Vertragsende (|F|6)", +}; + +STR16 BrokenLinkText[] = +{ + L"Error 404", + L"Seite nicht gefunden.", +}; + +STR16 gzBobbyRShipmentText[] = +{ + L"Letzte Lieferungen", + L"Bestellung #", + L"Artikelanzahl", + L"Bestellt am", +}; + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameTitle[]= +{ + L"Game Internals Programmer", // Chris Camfield + L"Co-designer/Writer", // Shaun Lyng + L"Strategic Systems & Editor Programmer", // Kris \"The Cow Rape Man\" Marnes + L"Producer/Co-designer", // Ian Currie + L"Co-designer/Map Designer", // Linda Currie + L"Artist", // Eric \"WTF\" Cheng + L"Beta Coordinator, Support", // Lynn Holowka + L"Artist Extraordinaire", // Norman \"NRG\" Olsen + L"Sound Guru", // George Brooks + L"Screen Designer/Artist", // Andrew Stacey + L"Lead Artist/Animator", // Scot Loving + L"Lead Programmer", // Andrew \"Big Cheese Doddle\" Emmons + L"Programmer", // Dave French + L"Strategic Systems & Game Balance Programmer", // Alex Meduna + L"Portraits Artist", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(still learning punctuation)", // Shaun Lyng + L"(\"It's done. I'm just fixing it\")", //Kris \"The Cow Rape Man\" Marnes + L"(getting much too old for this)", // Ian Currie + L"(and working on Wizardry 8)", // Linda Currie + L"(forced at gunpoint to also do QA)", // Eric \"WTF\" Cheng + L"(Left us for the CFSA - go figure...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(Dead Head and jazz lover)", // Andrew Stacey + L"(his real name is Robert)", // Scot Loving + L"(the only responsible person)", // Andrew \"Big Cheese Doddle\" Emmons + L"(can now get back to motocrossing)", // Dave French + L"(stolen from Wizardry 8)", // Alex Meduna + L"(did items and loading screens too!)", // Joey \"Joeker\" Whelan", +}; + +STR16 sRepairsDoneString[] = +{ + L"%s hat seine eigenen Gegenstände repariert.", + L"%s hat die Waffen und Rüstungen aller Teammitglieder repariert.", + L"%s hat die aktivierten Gegenstände aller Teammitglieder repariert.", + L"%s hat die großen mitgeführten Gegenstände aller Teammitglieder repariert.", + L"%s hat die mittelgroßen mitgeführten Gegenstände aller Teammitglieder repariert.", + L"%s hat die kleinen mitgeführten Gegenstände aller Teammitglieder repariert.", + L"%s hat die Trageausrüstung aller Teammitglieder repariert.", + L"%s hat die Waffen aller Teammitglieder gereinigt.", +}; + +STR16 zGioDifConfirmText[]= +{ + L"Sie haben sich für den Einsteiger-Modus entschieden. Dies ist die passende Einstellung für Spieler, die noch nie zuvor Jagged Alliance oder ähnliche Spiele gespielt haben oder für Spieler, die sich ganz einfach kürzere Schlachten wünschen. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im Einsteiger-Modus spielen wollen?", + L"Sie haben sich für den Profi-Modus entschieden. Dies ist die passende Einstellung für Spieler, die bereits Erfahrung mit Jagged Alliance oder ähnlichen Spielen haben. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im Profi-Modus spielen wollen?", + L"Sie haben sich für den Alter Hase-Modus entschieden. Na gut, wir haben Sie gewarnt. Machen Sie hinterher bloß nicht uns dafür verantwortlich, wenn Sie im Sarg nach Hause kommen. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im Alter Hase-Modus spielen wollen?", + L"Sie haben sich für den WAHNSINNIG-Modus entschieden. WARNUNG: Beschweren Sie sich nicht, wenn Sie in kleinen Stücken zurückkommen ... Deidranna wird Sie in den Allerwertesten treten und das schmerzhaft. Ihre Wahl wird den Verlauf des ganzen Spiels beeinflussen. Treffen Sie also eine sorgfältige Wahl. Sind Sie ganz sicher, dass Sie im WAHNSINNIG-Modus spielen wollen?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"%S Loadscreen-Daten nicht gefunden...", + + //1-5 + L"Der Roboter kann diesen Sektor nicht verlassen, wenn niemand die Fernbedienung benutzt.", + + L"Sie können den Zeitraffer jetzt nicht benutzen. Warten Sie das Feuerwerk ab!", + L"%s will sich nicht bewegen.", + L"%s hat nicht genug Energie, um die Position zu ändern.", + L"%s hat kein Benzin mehr und steckt in %c%d fest.", + + //6-10 + + // the following two strings are combined with the strings below to report noises + // heard above or below the merc + L"oben", + L"unten", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"Keiner der Söldner hat medizinische Fähigkeiten.", + L"Sie haben kein Verbandszeug.", + L"Sie haben nicht genug Verbandszeug, um alle zu verarzten.", + L"Keiner der Söldner muss verbunden werden.", + L"Söldner automatisch verbinden.", + L"Alle Söldner verarztet.", + + //14-16 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + L"(Dach)", + L"Gesundheit: %d/%d", + + //17 + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d gegen %d", + + //18-19 + L"%s ist voll!", //(ex "The ice cream truck is full") + L"%s braucht nicht eine schnelle Erste Hilfe, sondern eine richtige medizinische Betreuung und/oder Erholung.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s ist am Bein getroffen und hingefallen!", + //Name can't speak right now. + L"%s kann gerade nicht sprechen.", + + //22-24 plural versions + L"%d grüne Milizen wurden zu Elitemilizen befördert.", + L"%d grüne Milizen wurden zu regulären Milizen befördert.", + L"%d reguläre Milizen wurden zu Elitemilizen befördert.", + + //25 + L"Schalter", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s dreht durch!", + + //27-28 + //Messages why a player can't time compress. + L"Es ist momentan gefährlich den Zeitraffer zu betätigen, da Sie noch Söldner in Sektor %s haben.", + L"Es ist gefährlich den Zeitraffer zu betätigen, wenn Sie noch Söldner in den von Monstern verseuchten Minen haben.", + + //29-31 singular versions + L"1 grüne Miliz wurde zur Elitemiliz befördert.", + L"1 grüne Miliz wurde zur regulären Miliz befördert.", + L"1 reguläre Miliz wurde zur Elitemiliz befördert.", + + //32-34 + L"%s sagt überhaupt nichts.", + L"Zur Oberfläche gehen?", + L"(Trupp %d)", + + //35 + L"%s reparierte %ss %s", + + //36 + L"BLOODCAT", + + //37-38 "Name trips and falls" + L"%s stolpert und stürzt", + L"Dieser Gegenstand kann von hier aus nicht aufgehoben werden.", + + //39 + L"Keiner Ihrer übrigen Söldner ist in der Lage zu kämpfen. Die Miliz wird die Monster alleine bekämpfen", + + //40-43 + //%s is the name of merc. + L"%s hat keinen Erste-Hilfe-Kasten mehr!", + L"%s hat nicht das geringste Talent, jemanden zu verarzten!", + L"%s hat keinen Werkzeugkasten mehr!", + L"%s ist absolut unfähig dazu, irgendetwas zu reparieren!", + + //44 + L"Repar. Zeit", + L"%s kann diese Person nicht sehen.", + + //46-48 + L"%ss Gewehrlauf-Verlängerung fällt ab!", + L"Es sind nicht mehr als %d Miliz-Ausbilder in diesem Sektor erlaubt.", + L"Sind Sie sicher?", // + + //49-50 + L"Zeitraffer", //time compression + L"Der Fahrzeugtank ist jetzt voll.", + + //51-52 Fast help text in mapscreen. + L"Zeitraffer fortsetzen (|S|p|a|c|e)", + L"Zeitraffer anhalten (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s hat die Ladehemmung der %s behoben", + L"%s hat die Ladehemmung von %ss %s behoben", + + //55 + L"Die Zeit kann nicht komprimiert werden, während das Sektorinventar eingesehen wird.", + + L"Die Jagged Alliance 2 v1.13 PLAY CD wurde nicht gefunden. Das Programm wird jetzt beendet.", + + //L"Im Sektor sind Feinde entdeckt worden", //STR_DETECTED_SIMULTANEOUS_ARRIVAL + + L"Die Gegenstände wurden erfolgreich miteinander kombiniert.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Aktueller/Max. Fortschritt: %d%%/%d%%", + + //59 + L"John und Mary eskortieren?", + + L"Schalter aktiviert.", + + L"%s's Rüstungsverstärkung wurde zertrümmert!", + L"%s feuert %d Schüsse mehr als beabsichtigt!", + L"%s feuert einen Schuss mehr als beabsichtigt!", + + L"Sie müssen zuerst das Gegenstandsbeschreibungsfenster schließen!", + + L"Zeitraffer kann nicht betätigt werden - Feindliche Zivilisten/Bloodcats sind im Sektor.", // 65 +}; + +STR16 gzCWStrings[] = +{ + L"Verstärkung aus benachbarten Sektoren nach %s rufen?", +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Ort: %d\n", + L"%s|Helligkeit: %d / %d\n", + L"%s|Entfernung zum |Ziel: %d\n", + L"%s|I|D: %d\n", + L"%s|Befehle: %d\n", + L"%s|Gesinnung: %d\n", + L"%s|Aktuelle |A|Ps: %d\n", + L"%s|Aktuelle |Gesundheit: %d\n", + L"%s|Aktueller |Atem: %d\n", + L"%s|Aktuelle |Moral: %d\n", + L"%s|Aktueller |Schock: %d\n", + L"%s|Aktuelle |S|perrfeuer P.: %d\n", + // Full info + L"%s|Helm: %s\n", + L"%s|Weste: %s\n", + L"%s|Hose: %s\n", + // Limited, Basic + L"|Rüstung: ", + L"Helm", + L"Weste", + L"Hose", + L"getragen", + L"keine Rüstung", + L"%s|N|V|G: %s\n", + L"kein NVG", + L"%s|Gasmaske: %s\n", + L"keine Gasmaske", + L"%s|Kopf |Position |1: %s\n", + L"%s|Kopf |Position |2: %s\n", + L"\n(im Rucksack) ", + L"%s|Waffe: %s ", + L"keine Waffe", + L"Pistole", + L"SMG", + L"Gewehr", + L"MG", + L"Schrotflinte", + L"Messer", + L"Schwere Waffe", + L"kein Helm", + L"keine Weste", + L"keine Hose", + L"|Rüstung: %s\n", + // Added - SANDRO + L"%s|Fertigkeit 1: %s\n", + L"%s|Fertigkeit 2: %s\n", + L"%s|Fertigkeit 3: %s\n", + // Additional suppression effects - sevenfm + L"%s|A|Ps verloren aufgrund von |U|nterdrückung: %d\n", + L"%s|Unterdrückungs-|Toleranz: %d\n", + L"%s|Effektive |S|chock |Stufe: %d\n", + L"%s|K|I |Moral: %d\n", +}; + +STR16 New113Message[] = +{ + L"Sturm startet.", + L"Sturm endet.", + L"Regen startet.", + L"Regen endet.", + L"Vorsicht vor Scharfschützen...", + L"Unterdrückungsfeuer!", + L"BRST", + L"AUTO", + L"GL", + L"GL BRST", + L"GL AUTO", + L"UB", + L"UBRST", + L"UAUTO", + L"BAYONET", + L"Scharfschütze!", + L"Geld kann nicht aufgeteilt werden, weil ein Gegenstand am Cursor ist.", + L"Ankunft der neuen Söldner wurde in den Sektor %s verlegt, weil der geplante Sektor %s von Feinden belagert ist.", + L"Gegenstand gelöscht.", + L"Alle Gegenstände dieses Typs gelöscht.", + L"Gegenstand verkauft.", + L"Alle Gegenstände dieses Typs verkauft.", + L"Überprüfen Sie die Sichtgeräte Ihrer Söldner!", + // Real Time Mode messages + L"Sie sind bereits im Kampfmodus", + L"Keine Gegner in Sicht", + L"Echtzeit-Schleichmodus AUS", + L"Echtzeit-Schleichmodus AN", + //L"Gegner gesichtet! (Ctrl + x für Rundenmodus)", + L"Gegner gesichtet!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s hatte Erfolg beim Stehlen!", + L"%s hatte nicht genug Aktionspunkte um alles zu stehlen.", + L"Möchten Sie %s vor dem Bandagieren operativ behandeln? (Sie können etwa %i Lebenspunkte wiederherstellen.)", + L"Möchten Sie %s operativ behandeln? (Sie können etwa %i Lebenspunkte wiederherstellen.)", + L"Möchten Sie zuerst Operationen durchführen? (%i Patient(en))", + L"Möchten Sie an diesem Patienten zuerst eine Operation durchführen?", + L"Erste Hilfe automatisch mit entsprechender operativer Behandlung durchführen oder ohne?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"%s wurde erfolgreich operiert.", + L"%s ist am Torso getroffen und verliert einen Punkt maximaler Gesundheit!", + L"%s ist am Torso getroffen und verliert %d Punkte maximaler Gesundheit!", + L"%s is blinded by the blast!", // TODO.Translate + L"%s hat einen Punkt an %s wiedergewonnen.", + L"%s hat %d Punkte an %s wiedergewonnen.", + L"Ihre Späher-Fertigkeit hat Sie davor bewahrt, vom Gegner in einen Hinterhalt gelockt zu werden.", + L"Dank Ihrer Späher-Fertigkeit haben Sie erfolgreich ein Rudel Bloodcats umgangen.", + L"%s wurde in die Leiste getroffen und windet sich in Schmerzen!", + ////////////////////////////////////////////////////////////////////////////////////// + L"Warning: enemy corpse found!!!", + L"%s [%d rnds]\n%s %1.1f %s", + L"Zu wenig APs! Es werden %d APs benötigt, Sie haben aber nur %d APs.", + L"Tipp: %s", + L"Spieler Stärke: %d - Gegner Stärke: %6.0f", // Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"Cannot use skill!", // TODO.Translate + L"Cannot build while enemies are in this sector!", + L"Cannot spot that location!", + L"Incorrect GridNo for firing artillery!", + L"Radio frequencies are jammed. No communication possible!", + L"Radio action failed!", + L"Not enough mortar shells in sector to start a barrage!", + L"No signal shell item found in Items.xml!", + L"No High-Explosive shell item found in Items.xml!", + L"No mortars found, cannot commence barrage!", + L"Already jamming signal, no need to do so again!", + L"Already listening for nearby sounds, no need to do so again!", + L"Already trying to spot, no need to do so again!", + L"Already scanning for jam signals, no need to do so again!", + L"%s could not apply %s to %s.", + L"%s orders reinforcements from %s.", + L"%s radio set is out of energy.", + L"a working radio set", + L"a binocular", + L"patience", + L"%s's shield has been destroyed!", // TODO.Translate + L" DELAY", // TODO.Translate + L"Ja*", + L"Ja", + L"Nein", + L"%s applied %s to %s.", // TODO.Translate +}; + +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s zittert vor Angst!", + L"%s ist festgenagelt!", + L"%s feuert mehr Schüsse als beabsichtigt!", + L"Sie können keine Miliz in diesem Sektor ausbilden.", + L"Miliz hebt %s auf.", + L"Wenn Feinde im Sektor sind können Sie keine Miliz ausbilden!", + // 6 - 10 + L"%s hat nicht genug Führungsqualität um Milizen auszubilden.", + L"Pro Sektor sind nicht mehr als %d Milizausbilder erlaubt.", + L"Kein Platz für mobile Milizen in oder rund um %s!", + L"Sie benötigen %d Stadtmilizen in jedem von %ss befreiten Sektoren bevor Sie hier mobile Milizen ausbilden können.", + L"Anlage nicht nutzbar wenn Feinde in der Gegend sind!", + // 11 - 15 + L"%s hat nicht genügend Weisheit um diese Anlage betreiben zu können.", + L"%s ist schon voll besetzt.", + L"Diese Anlage zu betreiben kostet $%d pro Stunde. Weitermachen?", + L"Sie haben nicht genug Geld um alle heutigen Betriebskosten zu zahlen. $%d wurden bezahlt, $%d fehlen noch. Die Einwohner sind nicht erfreut.", + L"Sie haben nicht genug Geld um alle heutigen Betriebskosten zu zahlen. Es stehen $%d aus. Die Einwohner sind nicht erfreut.", + // 16 - 20 + L"Sie haben eine ausstehende Forderung von $%d für Betriebskosen und kein Geld um zu bezahlen!", + L"Sie haben eine ausstehende Forderung von $%d für Betriebskosen. Dieser Anlage können Sie keinen Söldner zuweisen bis Sie Ihre gesamten Schulden beglichen haben.", + L"Sie haben eine ausstehende Forderung von $%d für Betriebskosen. Möchten Sie diese Schuld begleichen?", + L"Nicht möglich in diesem Sektor", + L"Tagesausgaben", + // 21 - 25 + L"Nicht genug Geld für alle angeworbenen Milzen! %d Milzen wurden entlassen und sind heimgekehrt.", + L"Um sich den Status eines Gegenstandes während des Kampfes anzuschauen, müssen Sie den Gegenstand vorher aufheben.", // HAM 5 + L"Um einen Gegenstand an einen anderen anbringen zu können, müssen Sie beide Gegenstände vorher aufheben.", // HAM 5 + L"Um zwei Gegenstände miteinander zu verbinden, müssen Sie beide Gegenstände vorher aufheben.", // HAM 5 +}; + +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"Keine Umgestaltungsmöglichkeit vorhanden", + L"%s wurde in mehrere Teile umgewandelt.", + L"%s wurde in mehrere Teile umgewandelt. Prüfen Sie %s's Inventar für die daraus entstandenen Teile.", + L"Aufgrund des fehlendes Platzes im Inventar nach der Umgestaltung wurden einige von %s's Gegenstände auf den Boden abgelegt.", + L"%s wurde in mehrere Teile umgewandelt. Durch den Platzmangel im Inventar hat %s ein paar Gegenstände auf den Boden abgelegt.", + L"Möchsten Sie alle %d Gegenstände im Stapel umwandeln? (Um nur einen Gegenstand umzuwandeln, entferenen Sie diesen zuerst vom Stapel)", + // 6 - 10 + L"Aufteilen des Kisteninhaltes ins Inventar", + L"Aufteilen in %d-Schuss Magazine", + L"%s wurde aufgeteilt in %d Magazine, wobei jedes davon %d Schuss enthält.", + L"%s wurde aufgeteilt in %s's Inventar.", + L"Es ist nicht genügend Platz in %s's Inventar um die Magazine dieses Kalibers abzulegen!", + L"Sofortmodus", + L"Verzögerter Modus", + L"Sofortmodus (%d AP)", + L"Verzögerter Modus (%d AP)", +}; + +// WANNE: These are the email texts Speck sends when one of the 4 new 1.13 MERC mercs have levelled up +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Hiermit geben wir zur Kenntnis, dass aufgrund von Gastons guten Leistungen in der Vergangenheit sein Sold erhöht wurde. Ich persönlich bin darüber nicht überrascht. ± ± Speck T. Kline ± ", + // Stogie: Text from Line 43 in Email.edt + L"Bitte nehmen Sie zur Kenntnis, dass Stogies Bezüge für seine geleisteten Dienste mit sofortiger Wirkung erhöht werden in Anpassung an seine verbesserten Fähigkeiten. ± ± Speck T. Kline ± ", + // Tex: Text from Line 45 in Email.edt + L"Bitte nehmen Sie zur Kenntnis, dass Tex aufgrund seiner Erfahrung Anspruch auf eine angemessenere Entlohnung hat. Seine Bezüge werden daher ab sofort seinem Wert entsprechend erhöht. ± ± Speck T. Kline ± ", + // Biggins: Text from Line 49 in Email.edt + L"Zur Kenntnisnahme. Aufgrund seiner verbesserten Leistungen wurden Colonel Biggins' Dienstbezüge erhöht. ± ± Speck T. Kline ± ", +}; + +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk + L"Weitergeleitet von AIM-Server: Nachricht von Victor Kolesnikov", + L"Vielen Dank für Nachricht auf Anrufbeantworter. Nun stehe ich zur Verfügung. ± ± Allerdings bin ich wählerisch mit meine Komamandanten. Ich werde mich noch über Sie erkundigen.± ± V.K. ±", + + // Brain + L"Weitergeleitet von AIM-Server: Nachricht von Janno Allik", + L"Jetzt wäre ich bereit für einen Auftrag. Sie wissen schon, alles zu seiner Zeit. ± ± Janno Allik ±", + + // Scream + L"Weitergeleitet von AIM-Server: Nachricht von Lennart Vilde", + L"Vielen Dank für Ihre Kontaktaufnahme. Sagen Sie mir Bescheid, wenn die nächste Party steigen kann. Ab sofort erreichen Sie mich über die AIM page. ± ± Lennart Vilde.", + + // Henning + L"Weitergeleitet von AIM-Server: Nachricht von Henning von Branitz", + L"Ihre Nachricht hat mich erreicht, vielen Dank. Falls Sie mich engagieren möchten, kontaktieren Sie mich über die AIM Website. ± ± Bis die Tage! ± ± Henning von Branitz ±", + + // Luc + L"Weitergeleitet von AIM-Server: Nachricht von Luc Fabre", + L"Ich habe Ihre Nachricht erhalten, merci. Zur Zeit könnte ich gerne einen Auftrag annehmen. Sie wissen ja, wo Sie mich erreichen. ± ± Sicher hören wir bald von einander. ±", + + // Laura + L"Weitergeleitet von AIM-Server: Nachricht von Dr. Laura Colin", + L"Ich grüße Sie! Schön, dass Sie mir eine Nachricht hinterlassen haben. Es hörte sich interessant an. ± ± Wenn Sie wieder bei AIM vorbeischauen, würde ich mich freuen, von Ihnen zu hören. ± ± Noch viel Erfolg! ± ± Dr. Laura Colin ±", + + // Grace + L"Weitergeleitet von AIM-Server: Nachricht von Graziella Girelli", + L"Sie wollten mich kontaktieren, aber ich war leider nicht zu erreichen.± ± Ein Familientreffen. Sie kennen das ja sicher... Jetzt hab' ich erst mal wieder genug von Familie.± ± Jedenfalls freue ich mich, wenn Sie sich auf der AIM Site mit mir in Verbindung setzen. Ciao! ±", + + // Rudolf + L"Weitergeleitet von AIM-Server: Nachricht von Rudolf Steiger", + L"Wissen Sie eigentlich, wieviel Anrufe ich jeden Tag kriege? Jeder Pisser meint, er müsste hier anrufen. ± ± Aber gut, ich bin jetzt wieder da. Falls Sie einen interessanten Auftrag haben. ±", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"Weitergeleitet von AIM-Server: Nachricht über Söldner Verfügbarkeit", + L"Ich habe Ihre Nachricht erhalten und warte auf Ihren Rückruf. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Scharfschütze: Sie haben Augen wie ein Falke. Dadurch können sie sogar auf die Flügel einer Fliege aus hunderten von Metern schießen! ± ", + // Camouflage + L"Tarnung: Neben Ihnen schauen sogar Büsche synthetisch aus. ± ", + // Ranger + L"Jäger: Sie haben eine bemerkenswerte Affinität zu schwer passierbarem Gelände und Ihre unermüdlichen Beine tragen Sie im Handumdrehen über Stock und Stein. ± ", + // Gunslinger + L"Revolverheld: Sie beweisen enormes Talent im Umgang mit Pistolen und Revolvern aller Art. John Wayne lässt grüßen. ± ", + // Squadleader + L"Zugführer: Ihre Rhetorik hat uns ganz schön beeindruckt und Ihre generelle Erscheinung motiviert einfach. In Ihrer Nähe kann eigentlich nichts schiefgehen. ± ", + // Technician + L"Ingenieur: Sie können mit Hufeisen und altem Garn so gut wie alles reparieren, MacGyver würde vor Neid erblassen. ± ", + // Doctor + L"Arzt: Ärzte wie Sie braucht das Land! Sie können Kranke heilen wie ein junger Jesus. ± ", + // Athletics + L"Läufer: So schnell und ausdauernd wie Sie rennen, möchte ich annehmen, Sie sind mit dem Wort Marathon vertraut. Einholen wird Sie bestimmt keiner. ± ", + // Bodybuilding + L"Kraftsportler: Arnie? Was für ein Weichei! Sie könnten ihn selbst mit einer gebrochenen Hand zu Boden befördern. ± ", + // Demolitions + L"Sprengmeister: Nutzen Sie Ihre Begeisterung für alles, was mit mehrfacher Schallgeschwindigkeit expandiert um sich im Training mit Granaten und Sprengstoffen hervorzutun. ± ", + // Scouting + L"Aufklärer: Sie sind über die Maßen aufmerksam, haben ein sehr reges Auge und einen nimmermüden Geist. ± ", + // Covert ops + L"Geheimagent: Neben Ihnen schaut 007 wie der reinste Amateur aus! ± ", + // Radio Operator + L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate + // Survival + L"Survival: Nature is a second home to you. ± ", // TODO.Translate +}; + +STR16 NewInvMessage[] = +{ + L"Rucksack kann zur Zeit nicht aufgehoben werden", + L"Kein Platz zum Ablegen des Rucksacks", + L"Rucksack nicht gefunden", + L"Reißverschluss funktioniert nur im Kampf", + L"Bewegung nicht möglich, während Reißverschluss des Rucksacks offen ist", + L"Sind Sie sicher, dass Sie alle Gegenstände im Sektor verkaufen wollen?", + L"Sind Sie sicher, dass Sie alle Gegenstände im Sektor löschen wollen?", + L"Kann nicht beim Tragen eines Rucksacks klettern", + L"All backpacks dropped", // TODO.Translate + L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Initialisiere RakNet Server...", + L"Server gestartet, warte auf Client-Verbindungen...", + L"Sie müssen sich nun als Client durch drücken von '2' mit dem Server verbinden.", + L"Server läuft bereits.", + L"Starten des Servers ist fehlgeschlagen. Abbruch.", + // 5 + L"%d/%d Clients sind bereit für Echtzeitmodus.", + L"Verbindung zum Server ist unterbrochen, wird heruntergefahren.", + L"Server läuft nicht.", + L"Clients sind noch am laden, bitte warten...", + L"Sie können die Absprungzone nicht ändern, wenn der Server bereits gestartet wurde.", + // 10 + L"Datei '%S' gesendet - 100/100", + L"Alle Dateien wurden an '%S' gesendet.", + L"Starte mit dem versenden der Dateien an '%S'.", + L"Verwenden Sie die Anzeige für die Absprungzone wenn Sie den Startsektor ändern möchten. Änderungen sind nur möglich, bevor Sie auf 'Starte Spiel' geklickt haben.", +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Initialisiere RakNet Client...", + L"Verbinde zur ausgewählten Server-IP...", + L"Erhalte Spieleinstellungen:", + L"Sie sind bereits verbunden.", + L"Sie verbinden sich bereits...", + // 5 + L"Client #%d - '%S' hat '%s' angeheuert.", + L"Client #%d - '%S' hat einen weiteren Söldner angeheuert.", + L"Sie sind bereit - Gesamt bereit = %d/%d", + L"Sie sind nicht mehr bereit - Gesamt bereit = %d/%d", + L"Starte Gefecht...", + // 10 + L"Client #%d - '%S' ist bereit - Gesamt bereit = %d/%d", + L"Client #%d - '%S' ist nicht mehr bereit - Gesamt bereit = %d/%d", + L"Sie sind bereit. Warte auf die anderen Clients... Drücken Sie 'OK' wenn Sie doch noch nicht bereit sind.", + L"Lass uns das Gefecht beginnen!", + L"Ein Client muss laufen, um das Spiel beginnen zu können.", //LOOTF - Hintergrund? Wenn kein Client aktiv ist, gibt es doch auch niemanden, der eine Aufforderung zum Spielstart setzt? oO + // 15 + L"Spiel kann nicht gestartet werden. Es sind noch keine Söldner angeheuert.", + L"Erwarte Freigabe vom Server für den Laptop...", + L"Unterbrochen", + L"Unterbrechung beendet", + L"Maus-Raster-Koordinaten:", + // 20 + L"X: %d, Y: %d", + L"Raster-Nummer: %d", + L"Aktion kann nur der Server durchführen.", + L"Wähle exklusive Server-Aktion: ('1' - Laptop freischalten/anheuern) ('2' - Gefecht starten/Sektor laden) ('3' - Interface freischalten ) ('4' - Söldner Platzierung abschließen) ", + L"Sektor=%s, Max. Clients=%d, Teamgröße=%d, Spieltyp=%d, Gleiche Söldner=%d, Schaden-Mult.=%f, Rundenzeitbeschr.=%d, Seks/Tik=%d, Kein Bobby Ray=%d, Keine Aim/Merc-Ausrüstung=%d, Keine Moral=%d, Testen=%d", //LOOTF - Was ist Seks/Tik? Lol. Sextick. Finde gut. Englisch = Secs/Tic, aber das sagt mir auch nix. + // 25 + L"Testmodus und Cheat-Funktion mit '9' ist freigeschaltet.", + L"Neue Verbindung: Client #%d - '%S'.", + L"Team: %d.", + L"'%s' (Client #%d - '%S') wurde getötet von '%s' (Client #%d - '%S')", + L"Werfe Client #%d - '%S' aus dem Spiel.", + // 30 + L"Starte neuen Spielzug für gewählten Client. #1: , #2: %S, #3: %S, #4: %S", + L"Starte Spielzug für Client #%d", + L"Anfrage auf Echtzeit-Modus...", + L"In Echtzeit-Modus gewechselt.", + L"Fehler: Es ist ein Fehler beim Zurückwechseln in den Echtzeit-Modus aufgetreten", + // 35 + L"Laptop freischalten um Söldner anzuheuern? (Sind alle Clients bereits verbunden?)", + L"Server hat den Laptop freigeschaltet. Söldner anheuern!", + L"Unterbrechung.", + L"Sie können die Absprungzone nicht ändern, wenn Sie nur der Client und nicht zusätzlich der Server sind.", + L"Sie haben das Angebot zur Kampfaufgabe abgelehnt.", + // 40 + L"Alle Ihre Söldner wurden getötet!", + L"Überwachungsmodus wurde eingeschaltet.", + L"Sie wurden besiegt!", + L"Auf Dächer klettern ist in einem Mehrspieler-Spiel nicht erlaubt.", + L"Sie haben '%s' angeheuert.", + // 45 + L"Sie können den Sektor nicht ändern, wenn bereits Einkäufe begonnen haben", + L"Sektor gewechselt zu '%s'", + L"Verbindung zu Client '%s' abgebrochen, entferne Client vom Spiel.", + L"Ihre Verbindung zum Spiel wurde unterbrochen, gehe zurück zum Hauptmenü.", + L"Verbindung fehlgeschlagen. Wiederholung des Verbindungsaufbaus in 5 Sekunden. %i Versuche übrig...", + //50 + L"Verbindung fehlgeschlagen, Abbruch...", + L"Sie können das Spiel nicht beginnen, solange sich noch kein weiterer Spieler verbunden hat.", + L"%s : %s", + L"Sende an alle", + L"Nur Verbündete", + // 55 + L"Spielbeitritt nicht möglich. Das Spiel ist bereits gestartet.", + L"%s (Team): %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"Alle Dateien vom Server erhalten.", + L"'%S' hat alle Dateien vom Server heruntergeladen.", + L"'%S' startet mit dem Download der Dateien.", + L"Starten des Spiels ist nicht möglich solange die Clients noch nicht alle Dateien erhalten haben.", + L"Dieser Server erfordert, dass sie modifizierte Dateien für das Spiel herunterladen. Möchten Sie fortfahren?", + // 65 + L"Drücken Sie 'Bereit' um in den taktischen Bildschirm zu gelangen.", + L"Kann keine Verbindung herstellen, weil Ihre Version %S unterschiedlich zur Server Version %S ist.", + L"Sie haben einen gegnerischen Soldaten getötet.", + L"Spiel kann nicht gestartet werden, weil es keine unterschiedlichen Teams gibt.", + L"Die Spieleinstellungen erfordern Neues Inventar (NIV), aber NIV ist aufgrund der Spielauflösung nicht verwendbar.", + // 70 + L"Kann erhaltene Datei '%S' nicht speichern", + L"%s's Sprengstoff wurde von %s entschärft", + L"Sie haben verloren. Was für eine Schande", // All over red rover + L"Überwachungsmodus wurde ausgeschaltet", + L"Wählen Sie den Client, der gekickt werden soll. #1: , #2: %S, #3: %S, #4: %S", + // 75 + L"Team %s wurde vernichtet", + L"Client konnte nicht gestartet werden. Beendigung.", + L"Client Verbindung aufgelöst und heruntergefahren.", + L"Client läuft nicht.", + L"INFO: Falls das Spiel hängen bleibt (die Statusanzeige beim Gegnerischen Zug bewegt sich nicht), informieren Sie den Server, dass dieser ALT + E drücken soll, um Ihnen den Spielzug wieder zu geben!", + // 80 + L"Gegnerischer Spielzug - %d übrig", +}; + +STR16 gszMPEdgesText[] = +{ + L"N", + L"O", + L"S", + L"W", + L"M", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"Foxtrot", + L"Bravo", + L"Delta", + L"Charlie", + L"n.a.", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Spieltyp: ", + L"Spieler: ", + L"Teamgröße: ", + L"Sie können die Startpositionen nicht mehr ändern, sobald der Laptop freigeschaltet ist.", + L"Sie können die Teams nicht mehr ändern, sobald der Laptop freigeschaltet ist.", + L"Zuf. Söldner: ", + L"J", + L"Schwierigkeit:", + L"Server Version:", +}; + +STR16 gzMPSScreenText[] = +{ + L"Kampfstatistik", + L"Weiter", + L"Abbrechen", + L"Spieler", + L"Tötungen", + L"Tote", + L"Gegnerische Armee", + L"Treffer", + L"Fehlschüsse", + L"Treffgenauigkeit", + L"Schaden verursacht", + L"Schaden erhalten", + L"Bitte warten Sie bis der Server auf 'Weiter' geklickt hat." +}; + +STR16 gzMPCScreenText[] = +{ + L"Abbrechen", + L"Verbindungsaufbau zum Server", + L"Erhalte Server Einstellungen", + L"Herunterladen von Dateien", + L"Drücke 'ESC' zum Verlassen oder 'Y' zum Chatten", + L"Drücke 'ESC' zum Verlassen", + L"Fertig" +}; + +STR16 gzMPChatToggleText[] = +{ + L"Sende an alle", + L"Sende nur an Verbündete", +}; + +STR16 gzMPChatboxText[] = +{ + L"Mehrspieler Chat", + L"Senden mit 'ENTER', Abbrechen mit 'ESC'", +}; + +// Following strings added - SANDRO +// Translated by Scheinworld +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits + L"Auf der nächsten Seite können Sie Ihre Fertigkeiten entsprechend Ihrer Spezialisierung als Söldner festlegen. Es können nicht mehr als zwei verschiedene Fertigkeiten oder eine Expertenfertigkeit gewählt werden.", + L"Sie können auch nur eine oder gar keine Fertigkeit auswählen. Sie erhalten dafür einen Bonus zu Ihren Attributpunkten als Gegenleistung. Beachten Sie, dass die Fertigkeiten 'Elektronik', 'Beidhändig geschickt' und 'Getarnt' keine Experten-Spezialisierung erhalten.", + // For new major/minor traits + L"Auf der nächsten Seite können Sie Ihre Fertigkeiten entsprechend Ihrer Spezialisierung festlegen. Auf der ersten Seite können Sie bis zu %d Hauptfertigkeiten auswählen, die Ihre Rolle in einem Team repräsentieren, während Sie auf der zweiten Seite eine Liste der möglichen Nebenfertigkeiten finden.", + L"Es können nicht mehr als insgesamt %d Fertigkeiten gewählt werden. Wenn Sie keine Hauptfertigkeiten nutzen wollen, können Sie dafür %d Nebenfertigkeiten wählen. Selektieren Sie zwei Hauptfertigkeiten (oder eine Spezialisierung), ist/sind noch %d Nebenfertigkeit(en) wählbar.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Bitte verteilen Sie nun Ihre Bonuspunkte auf die gewünschten Attribute. Der Wert kann dabei nicht höher sein als", + L"B.S.E. Eigenschaften und Fähigkeiten.", + L"Bonus Pkt.:", + L"Anfangs-Level", + // New strings for new traits - SANDRO + L"Im nächsten Schritt können Sie Ihre Attribute und Fähigkeiten festlegen. Attribute sind Gesundheit, Geschicklichkeit, Beweglichkeit, Stärke und Weisheit. Sie können nicht weniger als %d Punkte verteilen.", + L"Der Rest sind Ihre Fähigkeiten, die Sie auch auf 0 setzen können.", + L"Beachten Sie, dass bestimmte Attribute auf spezifische Minimalwerte gesetzt werden, die den Voraussetzungen der Fertigkeiten entsprechen. Sie können diese Werte nicht weiter senken.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"B.S.E. Charakter-Analyse", + L"Die Charakter-Analyse ist der nächste Schritt bei der Erstellung Ihres Profils. Auf der nun folgenden Seite steht eine Vielzahl von Charaktereigenschaften zur Auswahl. Wir können uns vorstellen, dass Sie sich mit mehreren verbunden fühlen, entscheiden Sie sich daher bitte für die zutreffendste. ", + L"Die zweite Seite dient der Erfassung Ihrer Unzulänglichkeiten, die Sie möglicherweise haben (wir glauben, dass jeder Mensch nur eine große Schwäche hat). Bitte seien Sie dabei ehrlich, damit potentielle Arbeitgeber über Ihr zukünftiges Einsatzfeld informiert werden können.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Neutral", + L"Freundlich", + L"Einzelgänger", + L"Optimist", + L"Pessimist", + L"Aggressiv", + L"Arrogant", + L"Bonze", + L"Arschloch", + L"Feigling", + L"B.S.E. - Persönlichkeit", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Neutral", + L"Umgänglich", //LOOTF - alt. "Extrovertiert" + L"Einzelgängerisch", + L"Optimistisch", + L"Selbstsicher", + L"Lernbegeistert", + L"Primitiv", + L"Aggressiv", + L"Phlegmatisch", + L"Tollkühn", + L"Pazifistisch", + L"Sadistisch", + L"Machohaft", //LOOTF - alt. "Angeberisch" + L"Feigling", + L"B.S.E. - Charakterzüge", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"Erscheinung und Äußeres", + L"Hautfarbe", + L"Bitte geben Sie Ihre Haar- und Hautfarbe, Ihre Statur, sowie Ihre bevorzugten Kleidungsfarben an.", + L"Bitte geben Sie Ihre Haar- und Hautfarbe, sowie Ihre bevorzugten Kleidungsfarben an.", + L"Eingeschaltet, wird ein Gewehr einhändig abgefeuert.", + L"\n(Warnung: Sie werden eine Menge Stärke dafür benötigen.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Haarfarbe", + L"Hautfarbe", + L"Hemdfarbe", + L"Hosenfarbe", + L"Normale Statur", + L"Kräftige Statur", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"Keine Schwäche", + L"Hitzeempfindlichkeit", + L"Nervosität", + L"Klaustrophobie", + L"Nichtschwimmer", + L"Angst vor Insekten", + L"Vergesslichkeit", + L"Psychopath", + L"Schwerhörigkeit", + L"Kurzsichtigkeit", + L"Bluter", + L"Höhenangst" + L"Selbstverletzend", + L"Ihre größte Schwäche", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] = +{ + L"Sie sind bestimmt froh, dass wir ihnen das hier nicht auf die Mailbox sprechen.", + L"Sie haben entweder in ihrer Jugend zuviele Diskos besucht, oder zu viele Bombardierungen von nahem erlebt. Oder sie sind einfach alt. Ihr Team sollte jedenfalls Gebärdensprache lernen.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"Ohne ihre Brille sind sie aufgeschmissen.", + L"Das passiert wenn man dauernd nur vor der Glotze rumhängt. Sie hätten mehr Karotten essen sollen. Schon mal einen Hasen mit Brille gesehen? Aha.", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate +{ + L"Are you SURE this is the right job for you?", + L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate +{ + L"Let's just say you are a grounded person.", + L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Might want to make sure your knives are always clean.", + L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s hat nicht genug Kraft um diese Aufgabe zu erledigen.", + L"%s ist nicht geschickt genug um diese Aufgabe zu erledigen.", + L"%s ist nicht beweglich genug um diese Aufgabe zu erledigen.", + L"%s hat keine ausreichende Gesundheit um diese Aufgabe zu erledigen.", + L"%s mangelt es an ausreichender Weisheit um diese Aufgabe zu erledigen.", + L"%s mangelt es an ausreichender Treffsicherheit um diese Aufgabe zu erledigen.", + // 6 - 10 + L"%s hat nicht genug Medizinkenntnis um diese Aufgabe zu erledigen.", + L"%s hat zu wenig technisches Verständnis um diese Aufgabe zu erledigen.", + L"%s mangelt es an ausreichender Führungsqualität um diese Aufgabe zu erledigen.", + L"%s hat nicht genug Sprengstoffkenntnis um diese Aufgabe zu erledigen.", + L"%s mangelt es an ausreichender Erfahrung um diese Aufgabe zu erledigen.", + // 11 - 15 + L"%s hat nicht genug Moral um diese Aufgabe zu erledigen.", + L"%s ist zu erschöpft um diese Aufgabe zu erledigen.", + L"Zu wenig Loyalität in %s. Die Einwohner lassen Sie diese Aufgabe nicht verrichten.", + L"Es arbeiten bereits zu viele Personen in %s.", + L"Zu viele Personen verrichten diese Aufgabe schon in %s.", + // 16 - 20 + L"%s findet nichts mehr zum Reparieren.", + L"%s verliert %s beim Arbeiten in %s.", + L"%s hat ein paar %s verloren beim Arbeiten in der %s in %s !", + L"%s wurde verletzt beim Arbeiten in Sektor %s und benötigt dringend medizinische Versorgung!", + L"%s wurde verletzt beim Arbeiten in der %s in %s und benötigt dringend medizinische Versorgung!", + // 21 - 25 + L"%s wurde verletzt beim Arbeiten in Sektor %s. Es scheint aber nichts Ernstes zu sein.", + L"%s wurde verletzt beim Arbeiten in der %s in %s. Es scheint aber nichts Ernstes zu sein.", + L"Die Einwohner von %s scheinen sich über die Anwesenheit von %s aufzuregen." + L"Die Einwohner von %s scheinen sich über die Arbeit von %s in der %s aufzuregen." + L"%ss Handeln im Sektor %s hat einen Loyalitätsverlust in der gesamten Region bewirkt!", + // 26 - 30 + L"%ss Handeln in der %s in %s hat einen Loyalitätsverlust in der gesamten Region bewirkt!", + L"%s ist betrunken.", // <--- This is a log message string. + L"%s ist ernsthaft krank geworden in Sektor %s und wurde vom Dienst freigestellt.", + L"%s ist ernsthaft krank geworden und kann keine seine Arbeiten in der %s in %s fortsetzen.", + L"%s wurde verletzt in Sektor %s.", // <--- This is a log message string. + // 31 - 35 + L"%s wurde ernsthaft im Sektor %s verletzt.", //<--- This is a log message string. + L"There are currently prisoners here who are aware of %s's identity.", // TODO.Translate + L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", // TODO.Translate + + +}; + +STR16 gzFacilityRiskResultStrings[]= +{ + L"Kraft", + L"Beweglichkeit", + L"Geschicklichkeit", + L"Weisheit", + L"Gesundheit", + L"Treffsicherheit", + // 5-10 + L"Führungsqualität", + L"Technik", + L"Medizin", + L"Sprengstoffe", +}; + +STR16 gzFacilityAssignmentStrings[]= +{ + + L"UMGEBUNG", + L"Betrieb", + L"Essen", + L"Pause", + L"Repariere Gegenstände", + L"Repariere %s", + L"Repariere Roboter", + // 6-10 + L"Arzt", + L"Patient", + L"Üben Kraft", + L"Üben Geschicklichkeit", + L"Üben Beweglichkeit", + L"Üben Gesundheit", + // 11-15 + L"Üben Treffsicherheit", + L"Üben Medizin", + L"Üben Technik", + L"Üben Führungsqualität", + L"Üben Sprengstoff", + // 16-20 + L"Rekrut Kraft", + L"Rekrut Geschicklichkeit", + L"Rekrut Beweglichkeit", + L"Rekrut Gesundheit", + L"Rekrut Treffsicherheit", + // 21-25 + L"Rekrut Medizin", + L"Rekrut Technik", + L"Rekrut Führungsqualität.", + L"Rekrut Sprengstoff", + L"Trainer Kraft", + // 26-30 + L"Trainer Geschicklichkeit", + L"Trainer Beweglichkeit", + L"Trainer Gesundheit", + L"Trainer Treffsicherheit", + L"Trainer Medizin", + // 30-35 + L"Trainer Technik", + L"Trainer Führungsqualität", + L"Trainer Sprengstoff", + L"Gefangene verhören", // added by Flugente + L"Undercover Snitch", // TODO.Translate + // 36-40 + L"Spread Propaganda", + L"Spread Propaganda", // spread propaganda (globally) + L"Gather Rumours", + L"Command Militia", // militia movement orders +}; + +STR16 Additional113Text[]= +{ + L"Für die korrekte Arbeit im Fenster-Modus benötigt Jagged Alliance 2 v1.13 16-bit Farbmodus.", //Jagged Alliance 2 v1.13 windowed mode requires a color depth of 16bpp or less. + L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate + L"Interner Fehler beim Auslesen der %s Slots des zu ladenden Spielstandes: Die Anzahl der Slots im Spielstand (%d) unterscheidet sich mit den definierten Slots in der Datei ja2_options.ini (%d)", + // WANNE: Savegame slots validation against INI file + L"Söldner (MAX_NUMBER_PLAYER_MERCS) / Fahrzeuge (MAX_NUMBER_PLAYER_VEHICLES)", + L"Gegner (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Monster (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Miliz (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Zivilisten (MAX_NUMBER_CIVS_IN_TACTICAL)", +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +STR16 sEnemyTauntsFireGun[]= +{ + L"Friss Blei!", + L"Duck dich!", + L"Komm und hol mich!", + L"Du gehörst mir!", + L"Stirb!", + L"Zeit zu sterben.", + L"Vorsicht, Kugel!", + L"Komm her, du Mistkerl!", + L"Rrraaaaaah!", + L"Komm zu Papa.", + L"Du kommst unter die Erde.", + L"Du kommst hier nicht lebend raus!", + L"Aufs Maul!", + L"Du hättest daheim bleiben sollen!", + L"Stirb doch!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"Wird Zeit den Ballermann aus dem Sack zu holen.", + L"Überraschung.", + L"Beenden wir das schmerzhaft.", + L"Bitte lächeln!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Hier, fang!", + L"Die ist für dich.", + L"Spiel doch damit!", + L"Hab da was fallen gelassen.", + L"Hahaha.", + L"Viel Spaß damit!", + L"Hrrmmgh... uff!", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"Ich hol mir deinen Skalp.", + L"Komma her, du.", + L"Zeig mir dein Innerstes.", + L"Ich schneid dich in Streifen.", + L"Hjaaaaah!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"Wir sitzen in der Scheiße! Raus hier!", + L"Komm zur Armee, haben sie gesagt... Tze!", + L"Aufklärung erfolgreich, Feind überlegen, weg hier!", + L"Ohmeingottohmeingottohmeingott.", + L"Ganze Kampfgruppe - Rückzug!", + L"Rückzug! Alle Mann Rückzug!", + L"Weg von hier, die machen uns platt!", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"Ich hab da was gehört.", + L"Wer ist da? Ist da einer?", + L"Was war das eben?", + L"Paul, bist du das? Alles in Ordnung?", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"Alarm! Feindkontakt!", + L"Es geht los! Da sind sie!", + L"Ich seh einen von ihnen hier drüben!", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"Argh!", + L"Hnngh!", + L"Der saß...", + L"Au! Du Penner!", + L"Das wirst du bereuen!", + L"Sanitäter!", + L"Ich hab doch gar nichts gemacht!", +}; + +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Da'ffff...!", + L"Oh mein Gott!", + L"Heilige Scheiße!", + L"Gegner!!!", + L"Alarm! Alarm!", + L"Hier ist einer!", + L"Angriff!", +}; + + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Beschreibung", + L"Allgemein", + L"Erweitert", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Bes.", + L"Allg.", + L"Erw.", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Primär", + L"Sekundär", + L"AP Kosten", + L"Feuerstoß/Autofeuer", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Eigensch.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|B|e|s|c|h|r|e|i|b|u|n|g:\n \nZeigt allgemeine Informationen über den Gegenstand.", + L"|A|l|l|g|e|m|e|i|n|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nZeigt typische Daten über den Gegenstand.\n \nWaffen: Nochmals klicken um zweite Seite anzuzeigen.", + L"|E|r|w|e|i|t|e|r|t|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nZeigt Vor-/Nachteile des Gegenstandes.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|P|r|i|m|ä|r|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nEigenschaften und Daten in Bezug auf die Gegenstandsklasse\n(Waffen / Rüstungen / usw.).", + L"|S|e|k|u|n|d|ä|r|e |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nZusätzliche Eigenschaften des Gegenstands,\nund/oder mögliche sekundäre Fähigkeiten.", + L"|A|P |K|o|s|t|e|n:\n \nDiverse AP Kosten in Bezug auf Abfeuern\noder Handhabung der Waffe.", + L"|F|e|u|e|r|s|t|o|ß|/|A|u|t|o|f|e|u|e|r |E|i|g|e|n|s|c|h|a|f|t|e|n:\n \nMit dem Abfeuern dieser Waffe verbundene Daten für\nFeuerstoß-/Autofeuermodus.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|E|i|g|e|n|s|c|h|a|f|t |S|y|m|b|o|l\n \nMaus-darüber um den Namen der Eigenschaft zu erfahren.", + L"|G|r|u|n|d|w|e|r|t\n \nDer normale Wert des Gegenstandes ausschließlich aller\nVor-/Nachteile von Erweiterungen oder Munition.", + L"|E|r|w|e|i|t|e|r|u|n|g|s|b|o|n|u|s\n \nVor-/Nachteile von Munition, Erweiterungen, \noder schlechtem Zustand des Gegenstandes.", + L"|E|n|d|w|e|r|t\n \nDer endgültige Wert des Gegenstandes, einschließlich aller \nVor-/Nachteile von Erweiterungen oder Munition.", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Eigenschaft Symbol (Maus-darüber zeigt den Namen).", + L"Vor-/Nachteil wenn |s|t|e|h|e|n|d.", + L"Vor-/Nachteil wenn |h|o|c|k|e|n|d.", + L"Vor-/Nachteil wenn |l|i|e|g|e|n|d.", + L"Gegebener Vor-/Nachteil", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|G|e|n|a|u|i|g|k|e|i|t", + L"|S|c|h|a|d|e|n", + L"|R|e|i|c|h|w|e|i|t|e", + L"|H|a|n|d|h|a|b|u|n|g|s|p|r|o|b|l|e|m|a|t|i|k", + L"|E|r|l|a|u|b|t|e |Z|i|e|l|s|t|u|f|e|n", + L"|V|e|r|g|r|ö|ß|e|r|u|n|g|s|f|a|k|t|o|r", + L"|P|r|o|j|e|k|t|i|o|n|s|f|a|k|t|o|r", + L"|U|n|t|e|r|b|u|n|d|e|n|e|s M|ü|n|d|u|n|g|s|f|e|u|e|r", + L"|L|a|u|t|s|t|ä|r|k|e", + L"|Z|u|v|e|r|l|ä|s|s|i|g|k|e|i|t", + L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", + L"|M|i|n|d|e|s|t |R|e|i|c|h|w|e|i|t|e |f|ü|r |Z|i|e|l|v|o|r|t|e|i|l", + L"|T|r|e|f|f|e|r |M|o|d|i|f|i|k|a|t|o|r", + L"|A|P|s |f|ü|r |A|n|l|e|g|e|n", + L"|A|P|s |f|ü|r |S|c|h|u|s|s", + L"|A|P|s |f|ü|r |Fe|u|e|r|s|t|o|ß ", + L"|A|P|s |f|ü|r |A|u|t|o|f|e|u|e|r", + L"|A|P|s |f|ü|r |N|a|c|h|l|a|d|e|n", + L"|A|P|s |f|ü|r |R|e|p|e|t|i|e|r|e|n", + L"", // No longer used! + L"|G|e|s|a|m|t|e|r| |R|ü|c|k|s|t|o|ß", + L"|A|u|t|o|f|e|u|e|r |p|r|o |5 |A|P|s", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nBestimmt ob Kugeln, welche von dieser Waffe gefeuert werden, vom\nZiel abweichen.\n \nMaßstab: 0-100.\nHöher ist besser.", + L"\n \nBestimmt den durchschnittlichen Schaden den von dieser Waffe gefeuerte Kugeln machen,\nbevor Berücksichtigung von Rüstung oder Rüstungsdurchdringen.\n \nHöher ist besser.", + L"\n \nDie gößte Entfernung (in Felder) die von dieser Waffe gefeuerte Kugel\nzurücklegen, bevor sie zu Boden fallen.\n \nHöher ist besser.", + L"\n \nBestimmt die Schwierigkeit für das Halten und Feuern der Waffe.\nEin höhere Wert resultiert in einer niedrigeren Trefferwahrscheinlichkeit.\n \nNiedriger ist besser.", + L"\n \nDas ist die Anzahl von extra Ziellevel welche Sie erhalten,\nwenn Sie mit der Waffe zielen.\n \nJe weniger Ziellevel erlaubt sind desto mehr\nLevel erhalten Sie. Deshalb, weniger Level zu haben,\nmacht die Waffe schneller ohne an Genauigkeit\nzu verlieren.\n \nNiedriger ist besser.", + L"\n \nWenn größer als 1.0, werden Zielfehler\nproportional zur Entfernung reduziert.\n \nZur Erinnernung hohe Zielfernrohrvergrößerungen sind schädlich wenn das Ziel zu nahe ist!\n \n Der Wert von 1.0 bedeutet kein Zielfernrohr wird benutzt.", + L"\n \nReduziert Zielfehler proportional zur Entfernung.\n \nDieser Effekt wirkt bis zu einer gegebenen Entfernung,\ndann löst er sich langsam auf und verschwindet evtl. bei ausreichender Entfernung.\n \nHöher ist besser.", + L"\n \nWenn diese Eigenschaft in Kraft ist, dann produziert die Waffe kein sichtbares Mündungsfeuer\nwenn abgefeuert.\n \nFeinde werden Sie nicht bloß beim Mündungsfeuer ausfindig machen können\n(aber Sie können Sie dennoch hören).", + L"\n \nBestimmt die Entfernung (in Felder) der erzeugten Lautstärke,\nwenn die Waffe geschossen wird.\n \nFeinde innerhalb dieser Entfernung hören den Schuss, Feinde außerhalb nicht.\n \nNiedriger ist besser.", + L"\n \nBestimmt, wie schnell sich diese Waffe bei Gebrauch abnutzt.\n \nHöher ist besser.", + L"\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur Techniker und spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", + L"\n \nDie minimale Entfernung um einen Zielvorteil zu erhalten.", + L"\n \nTreffermodifikator den eine Laservorrichtung gewährleistet.", + L"\n \nDie Anzahl von APs nötig um die Waffe anzulegen.\n \nSobald die Waffe angelegt ist, können Sie wiederholt feuern ohne diese Kosten erneut zu bezahlen.\n \nEine Waffe ist automatisch abgelegt wenn der Anwender irgendeine andere Aktivität ausübt,\nmit der Ausnahme von schießen oder ausrichten.\n \nNiedriger ist besser.", + L"\n \nDie Anzahl von APs nötig um einen einzelnen Angriff mit dieser Waffe durchzuführen.\n \nFür Schusswaffen ist dies der Aufwand für einen Einzelschuss ohne extra Zielen.\n \nWenn das Symbol 'grau' erscheint sind Einzelschüsse nicht möglich.\n \nNiedriger ist besser.", + L"\n \nDie Anzahl von APs die für einen Feuerstoß benötigt werden.\n \nDie Anzahl der Geschosse welche mit jedem Feuerstoß abgefeuert werden hängt von der Waffe selbst ab,\nund ist angedeutet bei der Anzahl der Kugeln neben dem Symbol.\n \nWenn das Symbol 'grau' erscheint ist ein Feuerstoss nicht möglich.\n \nNiedriger ist besser.", + L"\n \nDie Anzahl von APs die für eine Autofeuer Salve von genau 3 Kugeln benötigt werden.\nWenn das Symbol 'grau' erscheint ist Autofeuer nicht möglich.\n \nNiedriger ist besser.", + L"\n \nDie Anzahl von APs die für das Nachladen benötigt werden.\n \nNiedriger ist besser.", + L"\n \nDie Anzahl von APs die für das repetieren der Waffe benötigt werden.\n \nNiedriger ist besser.", + L"", // No longer used! + L"\n \nDie absolute Reichweite mit der sich das Mündungsfeuer\nausbreitet für jede Kugel die geschossen wird,\nwenn keine Gegenmaßnahme angewendet wird.\n \nNiedriger ist besser.", // HEADROCK HAM 5: Altered to reflect unified number. + L"\n \nZeigt die Anzahl der Kugeln an, welche zu einer Autofeuer Salve für jeweils 5 investierte AP addiert werden.\n \nHöher ist besser.", + L"\n \nBestimmt, wie schwierig es ist, die Waffe\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|S|c|h|u|t|z |W|e|r|t", + L"|F|l|ä|c|h|e|n|d|e|c|k|u|n|g", + L"|Z|e|r|f|a|l|l |R|a|t|e", + L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nDiese grundlegende Rüstungseigenschaft bestimmt wie viel\nSchaden abgefangen wird.\nZur Erinnerung: Schutzdurchschlagende Angriffe und einige\nzufällige Faktoren können die Schadensreduzierung verändern.\n \nHöher ist besser.", + L"\n \nBestimmt wie viel des geschützten\nKörperteils durch die Rüstung abgedeckt wird.\n \nWenn weniger als 100% verdeckt wird, haben Angriffe\neine gewisse Chance die Rüstung schlichtweg\nzu umgehen, und höchsten Schaden\nauf das verdeckte Körperteil auszuüben.\n \nHöher ist besser.", + L"\n \nBestimmt wie schnell der Zustand der Rüstung abfällt,\nwenn sie getroffen wird, im Verhältnis zum\nSchaden durch einen Angriff.\n \nNiedriger ist besser.", + L"\n \nBestimmt, wie schwierig es ist, die Rüstung\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur Techniker und spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", + L"\n \nBestimmt, wie schwierig es ist, die Rüstung\nzu reparieren und wer sie vollständig reparieren kann.\n \ngrün = Jeder kann sie reparieren.\n \ngelb = Nur spezielle NPCs können\nsie über die Reparaturschwelle hinaus reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|R|ü|s|t|u|n|g|s|d|u|r|c|h|s|c|h|l|a|g", + L"|K|u|g|e|l|s|t|u|r|z", + L"|E|x|p|l|o|s|i|o|n |v|o|r |E|i|n|s|c|h|l|a|g", + L"|T|e|m|p|e|r|a|t|u|r |M|o|d|i|f|i|k|a|t|o|r", + L"|G|i|f|t|-|I|n|d|i|k|a|t|o|r", + L"|S|c|h|m|u|t|z |M|o|d|i|f|i|k|a|t|o|r", +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nDas ist die Fähigkeit der Kugel, in die Rüstung\neines Ziels einzudringen.\n \nWenn der Wert kleiner als 1.0 ist, reduziert die Kugel \nverhältnismäßig den Schutz jeglicher Rüstung auf die sie eintrifft.\n \nIst der Wert grösser als 1.0, tritt die Kugel weniger tief in die Rüstung des Ziels ein.\n \nKleiner ist besser.", + L"\n \nBestimmt eine verhältnismäßige Zunahme des Schadenspotentials,\nsobald die Kugel die Rüstung des Ziels\ndurchbricht und den Körper dahinter trifft.\n \nWerte über 1.0 erhöhen, Werte unter 1.0 reduzieren das Schadenspotential\nder durchbrochenen Kugel.\n \nHöher ist besser.", + L"\n \nEin Multiplikator zum Schadenspotential der Kugel,\nder vor dem Treffen des Zieles angewandt wird.\n \nWerte über 1.0 erhöhen, Werte unter 1.0 reduzieren den Schaden.\n \nHöher ist besser.", + L"\n \nProzentuale zusätzliche Hitze\ndurch diese Munitionsart.\n \nNiedriger ist besser.", + L"\n \nGibt die Anzahl in Prozent an,\nob der eingetretene Schaden einer Kugel auch eine Vergiftung verursacht.", + L"\n \nZusätzlicher Schmutz der entsteht durch diese Munition.\n \nNiedriger ist besser.", +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|S|c|h|a|d|e|n", + L"|B|e|t|ä|u|b|u|n|g|s|s|c|h|a|d|e|n", + L"|E|x|p|l|o|d|i|e|r|t |b|e|i|m |A|u|f|p|r|a|l|l", // HEADROCK HAM 5 + L"|R|a|d|i|u|s|-|D|r|u|c|k|w|e|l|l|e", + L"|R|a|d|i|u|s|-|B|e|t|ä|u|b|u|n|g|s|s|c|h|a|d|e|n", + L"|R|a|d|i|u|s|-|G|e|r|ä|u|s|c|h", + L"|S|t|a|r|t|r|a|d|i|u|s|-|T|r|ä|n|e|n|g|a|s", + L"|S|t|a|r|t|r|a|d|i|u|s|-|S|e|n|f|g|a|s", + L"|S|t|a|r|t|r|a|d|i|u|s|-|L|i|c|h|t", + L"|S|t|a|r|t|r|a|d|i|u|s|-|R|a|u|c|h", + L"|S|t|a|r|t|r|a|d|i|u|s|-|F|e|u|e|r", + L"|E|n|d|r|a|d|i|u|s|-|T|r|ä|n|e|n|g|a|s", + L"|E|n|d|r|a|d|i|u|s|-|S|e|n|f|g|a|s", + L"|E|n|d|r|a|d|i|u|s|-|L|i|c|h|t", + L"|E|n|d|r|a|d|i|u|s|-|R|a|u|c|h", + L"|E|n|d|r|a|d|i|u|s|-|F|e|u|e|r ", + L"|Z|e|i|t|d|a|u|e|r", + // HEADROCK HAM 5: Fragmentation + L"|A|n|z|a|h|l |a|n |F|r|a|g|m|e|n|t|e|n", + L"|S|c|h|a|d|e|n |p|r|o |F|r|a|g|m|e|n|t", + L"|F|r|a|g|m|e|n|t |R|e|i|c|h|w|e|i|t|e", + // HEADROCK HAM 5: End Fragmentations + L"|L|a|u|t|s|t|ä|r|k|e", + L"|U|n|b|e|s|t|ä|n|d|i|g|k|e|i|t", + L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nDer Schaden der durch diesen Sprengstoff\nverursacht wird.\n \nAnmerkung: Sprengstoffe die in einer Druckwelle explodieren liefern\nnur einmal Schaden (dann wenn Sie explodieren), während anhaltend wirkende\nSprengstoffe rundenübergreifend Schaden bis die Wirkung nachlässt.\n \nHöher ist besser.", + L"\n \nDer Betäubungschaden (nicht tödlich) der durch diesen\nSprengstoff verursacht wird.\n \nAnmerkung: Sprengstoffe die in einer Druckwelle explodieren liefern\nnur einmal Schaden (dann wenn Sie explodieren), während anhaltend wirkende\nSprengstoffe rundenübergreifend Schaden bis die Wirkung nachlässt.\n \nHöher ist besser.", + L"\n \nDieser Sprengstoff wird sobald er ein Hindernis\ntrifft explodieren (und nicht vorher noch abprallen).", // HEADROCK HAM 5 + L"\n \nDas ist der Radius der Explosionswelle den dieser\nSprengstoff hervorruft.\n \nZiele werden weniger Schaden erleiden desto weiter entfernt\nsie von der Mitte der Explosion sind.\n \nHöher ist besser.", + L"\n \nDas ist der Radius des Betäubungsschlags den dieser\nSprengstoff hervorruft.\n \nZiele werden weniger Schaden erleiden desto weiter entfernt\nsie von der Mitte der Explosion sind.\n \nHöher ist besser.", + L"\n \nDie Entfernung die das Geräusch der Explosion\nzurücklegen wird. Soldaten innerhalb der Entfernung \nsind fähig das Geräusch zu hören und werden gewarnt.\n \nHöher ist besser.", + L"\n \nDas ist der Startradius des Tränengas\nder durch diesen Sprengstoff freigesetzt wird.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Betäubungsschaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer der Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Startradius des Senfgas\nder durch diesen Sprengstoff freigesetzt wird.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer der Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Startradius des Lichts\nder durch den Sprengstoff freigesetzt wird.\n \nFelder in der Nähe der Wirkung leuchten \nsehr hell, Felder nahe zum Rand\nsind nur ein weniger heller als normal.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nZur Erinnerung: Im Unterschied zu anderen Sprengstoffen mit\nzietlich festgelegter Wirkung, wird die Wirkung des Lichts nach einiger\nZeit weniger, bis es verschwindet.\n \nHöher ist besser.", + L"\n \nDas ist der Startradius des Rauchs\nder durch diesen Sprengstoff freigesetzt wird.\n \nJeder innerhalb der Rauchwolke wird sehr schwer zu erkennen,\nund verliert ein ganzes Stück Sichtweite.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Startradius der Flammen\ndie durch den Sprengstoff freigesetzt werden.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jeden Zug.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Endradius den das Tränengas durch den\nSprengstoff vor dem Verschwinden freisetzt.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Betäubungsschaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Endradius den das Senfgas durch den\nSprengstoff vor dem Verschwinden freisetzt.\n \nFeinde die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jeden Zug,\nbis Sie Gasmasken tragen.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Endradius des Lichts der durch\nden Sprengstoff freigesetzt wird bevor er verschwindet.\n \nFelder in der Nähe der Wirkung leuchten \nsehr hell, Felder nah zum Rand\nsind nur ein weniger heller als normal.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nZur Erinnerung: Im Unterschied zu anderen Sprengstoffen mit\nzietlich festgelegter Wirkung, wird die Wirkung des Lichts nach einiger\nZeit weniger, bis es verschwindet.\n \nHöher ist besser.", + L"\n \nDas ist der Endradius den das Rauchs durch den\nSprengstoff vor dem Verschwinden freisetzt.\n \nJeder innerhalb der Rauchwolke ist sehr schwer zu erkennen,\nund verliert ein ganzes Stück Sichtweite.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist der Endradius den die Flammen dieses\nSprengstoffs einnehmen, bevor sie verschwinden.\n \nFeinde, die innerhalb des Radius erfasst werden erleiden\nden angegebenen Schaden jede Runde.\n \nAchte auf Endradius und Dauer\nder Wirkung.\n \nHöher ist besser.", + L"\n \nDas ist die Wirkungsdauer des Sprengstoffs.\n \nJeden Zug wird der Wirkungsradius wachsen, \nein Feld in jede Richtung, bis\nder angegebene Endradius erreicht ist.\n \nWird die maximale Dauer erreicht, verschwindet\ndie Wirkung vollständig.\n \nLicht freigesetzt durch Sprengstoffe\nnimmt ab, im Unterschied zu anderen Wirkungen.\n \nHöher ist besser.", + // HEADROCK HAM 5: Fragmentation + L"\n \nDies ist die Anzahl an Fragementen die von der\nExplosion ausgestoßen werden.\n \nDie Fragmente verhalten sich ähnlich wie Kugeln und können jeden treffen\nder sich nahe genug an der Explosion aufhält.\n \nHöher ist besser.", + L"\n \nDer potenzielle Schaden welcher durch die\nExplosion der ausgestoßenen Fragemente verursacht wird.\n \nHöher ist besser.", + L"\n \nDas ist die durchschnittliche Reichweite welche\ndie Fragmente einer Explosion fliegen können.\n \nEinige dieser Fragmente können jedoch weiter oder weniger weit fliegen.\n \nHöher ist besser.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nDie Reichweite in Feldern\nin der Feinde und Söldner die Explosion wahrnehmen.\n \nFeinde die die Explosion hören werden alarmiert.\n \nNiedriger ist besser.", + L"\n \nDieser Wert (außerhalb von 100) stellt eine Möglichkeit für den\nSprengstoff dar, spontan zu explodieren wenn er Schaden nimmt\n(z.B. durch Explosionen in der Nähe).\n \nDas Mitführen empfindlicher Sprengstoffe innerhalb des Kampfs\nist deshalb extrem riskant und sollte vermieden werden.\n \nSkala: 0-100.\nNiedriger ist besser.", + L"\n \nBestimmt, wie schwierig es ist, diesen Sprengsatz zu reparieren.\n \ngrün = Jeder kann ihn reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|R|e|p|a|r|i|e|r|f|ä|h|i|g|k|e|i|t", + L"|V|e|r|f|ü|g|b|a|r|e|r |P|l|a|t|z", + L"|P|l|a|t|z|b|e|d|a|r|f", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nBestimmt, wie schwierig es ist, diesen Gegenstand zu reparieren.\n \ngrün = Jeder kann ihn reparieren.\n \nrot = Dieser Gegenstand kann nicht repariert werden.\n \nHöher ist besser.", + L"\n \nBestimmt, wieviel Platz dieser MOLLE Träger für Taschen bietet.\n \nHöher ist besser.", + L"\n \nBestimmt, wieviel Platz diese Tasche auf einem MOLLE Träger einnimmt.\n \nNiedriger ist besser.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|L|e|u|c|h|t|s|p|u|r|m|u|n|i|t|i|o|n", + L"|A|n|t|i|-|P|a|n|z|e|r M|u|n|i|t|i|o|n", + L"|I|g|n|o|r|i|e|r|t |S|c|h|u|t|z", + L"|S|ä|u|r|e|h|a|l|t|i|g|e |M|u|n|i|t|i|o|n", + L"|T|ü|r|z|e|r|s|c|h|l|a|g|e|n|d|e |M|u|n|i|t|i|o|n", + L"|W|i|d|e|r|s|t|a|n|d|s|f|ä|h|i|g|k|e|i|t |g|e|g|e|n |S|p|r|e|n|g|s|t|o|f|f|e", + L"|W|a|s|s|e|r|s|i|c|h|e|r", + L"|E|le|k|t|r|o|n|i|k", + L"|G|a|s|m|a|s|k|e", + L"|B|e|n|ö|t|i|g|t |B|a|t|t|e|r|i|e|n", + L"|K|a|n|n |S|c|h|l|ö|s|s|e|r |K|n|a|c|k|e|n", + L"|K|a|n|n |D|r|a|h|t |d|u|r|c|h|t|r|e|n|n|e|n", + L"|K|a|n|n |S|c|h|l|ö|s|s|e|r |z|e|r|b|r|e|c|h|e|n", + L"|M|e|t|a|l|l|d|e|t|e|k|t|o|r", + L"|F|e|r|n|a|u|s|l|ö|s|e|r", + L"|F|e|r|n|z|ü|n|d|e|r", + L"|Z|e|i|t|z|ü|n|d|e|r", + L"|E|n|t|h|ä|l|t |B|e|n|z|i|n", + L"|W|e|r|k|z|e|u|g|k|a|s|t|e|n", + L"|W|ä|r|m|e|s|i|c|h|t", + L"|R|ö|n|t|g|e|n|g|e|r|ä|t", + L"|E|n|t|h|ä|l|t |D|r|i|n|k|w|a|s|s|e|r", + L"|E|n|t|h|ä|l|t |A|l|k|o|h|o|l", + L"|E|r|s|t|e|-|H|i|l|f|e|-|K|a|s|t|e|n", + L"|A|r|z|t|t|a|s|c|h|e", + L"|T|ü|r|s|p|r|e|n|g|s|a|t|z", + L"|W|a|s|s|e|r", + L"|N|a|h|r|u|n|g", + L"|M|u|n|i|t|i|o|n|s|g|u|r|t", + L"|M|u|n|i|t|i|o|n|s|w|e|s|t|e", + L"|E|n|t|s|c|h|ä|r|f|u|n|g|s|a|u|s|r|ü|s|t|u|n|g", + L"|V|e|r|d|e|c|k|t|e |G|e|g|e|n|s|t|a|n|d", + L"|K|a|n|n |n|i|c|h|t |b|e|s|c|h|ä|d|i|g|t |w|e|r|d|e|n", + L"|M|a|d|e |o|f |M|e|t|a|l", + L"|S|i|n|k|s", + L"|T|w|o|-|H|a|n|d|e|d", + L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", + L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate + L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|S|c|h|i||l|d", + L"|K|a|m|e|r|a", + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|B|l|u|t|b|e|u|t|e|l |(|l|e|e|r|)", + L"|B|l|u|t|b|e|u|t|e|l", // 44 + L"|W|i|d|e|r|s|t|a|n|d|s|f|ä|h|i|g|k|e|i|t |g|e|g|e|n |F|e|u|e|r", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nDiese Munition lässt eine Leuchtwirkung entstehen wenn sie abgefeuert wird.\n \nLeuchtfeuer hilft Salven genauer zu kontrollieren.\n \nLeuchtpatronen geben die Position bei Tag/Nacht preis\n \nund deaktivieren Gegenstände\ndie Mündungsfeuer unterdrücken.", + L"\n \nDiese Munition kann einen Panzer beschädigen.\n \nMunition ohne diese Eigenschaft bewirkt keinen Schaden\nan Panzern.", + L"\n \nDiese Munition ignoriert die Rüstung vollständig.\n \nDas bewirkt das eine geschützte Person\nbehandelt wird als hätte sie keine Rüstung!", + L"\n \nWenn diese Munition auf ein Ziel trifft,\nwird dessen Schutz dadurch schnell verschlechtert.\n \nMöglicherweise wird ein Ziel dadurch durch seinen eigenen Schutz getrennt!", + L"\n \nDiese Munitionstyp ist ausnahmslos im zerstören von Schlössern.\n \nDirekt auf eine verschlossene Tür oder einen Behälter\ngefeuert richtet er enormen Schaden an.", + L"\n \nDieser Schutz ist dreifach resistent\ngegen Sprengstoffe als es durch seinen gegebenen\nSchutzwert ersichtlich ist.\n \nWenn ein Sprengstoff den Schutz trifft, wird sein Schutzwert verdreifach.", + L"\n \nDieser Gegenstand ist gegen Wasser immun. Nicht aber,\nwenn er Schaden nimmt und untertaucht.\n \nGegenstände ohne diese Eigenschaft verschlechtern sich allmählich,\nwenn die Person sie zum Schwimmen mitnimmt.", + L"\n \nDieser Gegenstand ist Elektronik pur und beinhaltet\nkomplexe Schaltungen.\n \nElektronische Gegenstände sind von Natur aus schwer\nzu reparieren noch schwieriger ohne elektronische Fähigkeiten.", + L"\n \nWenn dieser Gegenstand am Gesicht der Person getragen wird,\nwird Sie von allen schädlichen Gasen beschützt.\n \nEinige Gase sind ätzend und können sich\ndurch die Gasmaske fressen!", + L"\n \nDieser Gegenstand benötigt Batterien. Ohne Batterien,\nkönnen seine primären Fähigkeiten nicht aktiviert werden.\n \nUm seine Fähigkeiten zu aktivieren\nbefestige Batterien an ihm.", + L"\n \nDieser Gegenstand kann kann dazu benutzt werden verschlossene\nTüren oder Behälter zu öffnen.\n \nSchlösser knacken ist leise, doch es benötigt\nreichlich technische Fähigkeiten \nauch für die einfachsten Schlösser. Dieser Gegenstand ändert\ndie Fähigkeit Schlösser zu knacken um ", //JMich_SkillsModifiers: needs to be followed by a number + L"\n \nDieser Gegenstand kann dazu benutzt werden Zäune zu zertrennen.\n \nDas ermöglicht einer Person schnell in abgezäuntes Gebiet\neinzudringen und den Feind möglicherweise zu überraschen!", + L"\n \nDieser Gegenstand kann kann zum zerschlagen von verschlossenen\nTüren oder Behälter benutzt werden.\n \nDas Zerschlagen von Schlössern benötigt reichlich Stärke,\nerzeugt eine Menge Lärm und bringt\neine Person schnell zur Ermüdung. Jedoch ist eine guter\nWeg hinter verschlossenes zu gelagen ohne\nhöhere Fertigkeiten oder\nkomplizierte Werkzeuge zu besitzen. Dieser Gegenstand steigert \ndie Wahrscheinlichkeit um ", //JMich_SkillsModifiers: needs to be followed by a number + L"\n \nDieser Gegenstand kann metallische Objekte\nim Boden aufspüren.\n \nSeine Funktion ist das aufspüren\nvon Minen ohne die nötigen Fähigkeiten zu besitzen diese\nmit blosen Auge zu erkennen.\n \nVielleicht finden Sie aber auch vergrabene Schätze.", + L"\n \nDieser Gegenstand kann dazu benutzt werden eine Bombe\nwelche mit einem Fernzünder versehen wurde zu zünden.\n \nZu erst setzt die Bombe, dann benutze den\nFernauslöer um sie zu zünden wenn\ndie richtige Zeit ist.", + L"\n \nWenn an einer Sprengstoffeinheit angebracht und eingestellt\n kann der Zünder durch eine\n separate Fernsteuerung ausgelöst werden.\n \nFernzünder sind bestens geeignet um Fallen zu stellen,\nweil Sie erst dann explodieren wenn sie es sollen.\n \nDarüber hinaus hat man genüge Zeit in Deckung zu gehen!", + L"\n \nWenn an einer Sprengstoffeinheit angebracht und eingestellt\n zählt der Zünder von der eingegeben\nMenge an Zeit nach unten und explodiert \nwenn die Zeit abgelaufen ist.\n \nZeitzünder sind billig und einfach zu Installieren,\naber sie müssen so eingestellt werden umd\nsich selbst rechtzeitig in Deckung zu bringen!", + L"\n \nDieser Gegenstand enthält Benzin.\n \nEs könnte praktisch sein\nwenn man einen Benzintank findet.", + L"\n \nDieser Gegenstand enthält verschiedene Gerätschaften die dazu\nbenutzt werden können andere Gegenstände zu reparieren.\n \nEin Werkzeugkasten wird dafür benötigt, wenn \neinem Söldner die Aufgabe Reparieren zugewiesen wird. Dieser Gegenstand ändert\ndie Effektivität der Reperatur um ", //JMich_SkillsModifiers: need to be followed by a number + L"\n \nWenn ans Gesicht angebracht, bietet der Gegenstand die Möglichkeit\nPersonen durch Wände zu sehen,\ndank ihrer Wärmestrahlung.", + L"\n \nDieses mächtige Gerät kann dazu benutzt werden\nnach Personen zu suchen.\n \nEs zeigt alle Personen innerhalb eines bestimmten Radius\nfür einen kurzen Zeitraum.\n \nVon Geschlechtsorganen fernhalten!", + L"\n \nDieser Gegenstand enthält frisches Wasser.\nGebrauchen Sie es wenn Sie durstig sind.", + L"\n \nDieser Gegenstand enthält Spirituosen, Alkohol, Schnaps\noder was immer Sie sich einbilden.\n \nMit Vorsicht zu genießen! Kein Alkohol am Steuer!\nKann ihrer Leber schaden!", + L"\n \nDas ist ein Erste-Hilfe-Kasten der\nGegenstände enthält die einfache medizinische Hilfe bieten.\n \nEr kann dazu benutzt werden verwundetet Personen zu bandagieren\nund Blutungen zu stoppen.\n \nFür richtige Heilung, benutze eine Arzttasche\nund/oder reichlich Ruhe.", + L"\n \nDas ist eine Arzttasche, die für\nOperationen und andere gravierende medizinische\nZwecke genutzt werden kann.\n \nEine Arzttasche wird dazu benötigt\neinem Söldner die Aufgabe Doktor zu geben.", + L"\n \nDieser Gegenstand kann dazu benutzt werden verschlossene\nTüren/Behälter zu sprengen.\n \nExplosionsfertigkeit ist erforderlich um\nvorzeitige Detonationen zu vermeiden.\n \nSchlösser zu sprengen ist der einfache Weg um schnell\ndurch verschlossene Türen/Behälter zu kommen. Wie auch immer,\nes ist laut und für die meisten Personen gefährlich.", + L"\n \nMan kann das trinken.", + L"\n \nMan kann das essen.", + L"\n \nEin externer Munitionsgurt für MGs.", + L"\n \nIn diese Weste passen auch Munitionsgurte.", + L"\n \nDieser Gegenstand verbessert die Chance Fallen zu entschärfen um ", + L"\n \nDieser Gegenstand und alles was daran angebracht/enthalten ist\nwird von neugierigen Augen verborgen bleiben.", + L"\n \nDieser Gegenstand kann nicht beschädigt werden.", + L"\n \nDieser Gegenstand ist aus Metall.\nEr nimmt weniger Schaden als andere Gegenstände.", + L"\n \nDieser Gegenstand versinkt in Wasser.", + L"\n \nDieser Gegenstand muß mit beiden Händen benutzt werden.", + L"\n \nDieser Gegenstand verhindert die Verwendung von Kimme und Korn.", + L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate + L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", + L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", + L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate + L"\n \nYou can take photos with this.", // TODO.Translate + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate + L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|n|a|u|i|g|k|e|i|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|M|o|m|e|n|t|a|u|f|n|a|h|m|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|M|o|m|e|n|t|a|u|f|n|a|h|m|e|-|P|r|o|z|e|n|t|u|e|l|l", + L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|e|n|-|P|r|o|z|e|n|t|u|e|l|l", + L"|M|o|d|i|f|i|k|a|t|o|r |- |E|r|l|a|u|b|t|e |Z|i|e|l|g|e|n|a|u|i|g|k|e|i|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|k|a|p|a|z|i|t|ä|t", + L"|M|o|d|i|f|i|k|a|t|o|r |- |W|a|f|f|e|n|h|a|n|d|h|a|b|u|n|g", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|b|s|e|n|k|u|n|g|s|k|o|m|p|e|n|s|i|e|r|u|n|g", + L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|i|e|l|a|u|f|s|p|ü|r|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|c|h|a|d|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|M|e|s|s|e|r|s|c|h|a|d|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|E|n|t|f|e|r|nu|n|g", + L"|F|a|k|t|o|r|-|V|e|r|g|ö|ß|e|r|u|n|g", + L"|F|a|k|t|o|r|-|V|e|r|b|r|e|i|t|e|r|u|n|g", + L"|M|o|d|i|f|i|k|a|t|o|r|-|R|ü|c|k|s|t|o|ß|-|H|o|r|i|z|o|n|t|a|l", + L"|M|o|d|i|f|i|k|a|t|o|r|-|R|ü|c|k|s|t|o|ß |- |V|e|r|t|i|k|a|l", + L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|w|i|r|k|e|n|-|M|a|x|i|m|u|m", + L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|w|i|r|k|e|n|-|G|e|n|a|u|i|g|k|e|i|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|w|i|r|k|e|n|-|H|ä|u|f|i|g|k|e|i|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|T|o|t|a|l", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|A|n|l|e|g|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|E|i|n|z|e|l|s|c|h|u|s|s", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|F|e|u|e|r|s|t|o|ß", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|A|u|t|o|f|e|u|e|r", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|P|-|N|a|c|h|l|a|d|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|M|a|g|a|z|i|n|g|r|ö|ß|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|F|e|u|e|r|s|t|o|ß|g|r|ö|ß|e", + L"|U|n|t|e|r|d|r|ü|c|k|t|e|s |M|ü|n|d|u|n|g|s|f|e|u|e|r", + L"|M|o|d|i|f|i|k|a|t|o|r|-|L|a|u|t|s|t|ä|r|k|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|G|e|g|e|n|s|t|a|n|d|g|r|ö|ß|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|Z|u|v|e|r|l|ä|s|s|i|g|k|e|i|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|W|a|l|d", + L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|S|t|a|d|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|W|ü|s|t|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|T|a|r|n|u|n|g|-|S|c|h|n|e|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|c|h|l|e|i|c|h|e|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|H|ö|r|w|e|i|t|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|A|l|l|g|e|m|e|i|n", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|N|a|c|h|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|T|a|g", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|H|e|l|l|e|s |L|i|c|h|t", + L"|M|o|d|i|f|i|k|a|t|o|r|-|S|i|c|h|t|w|e|i|t|e|-|U|n|t|e|r|g|r|u|n|d", + L"|T|u|n|n|e|l|s|i|c|h|t", + L"|G|e|g|e|n|w|i|r|k|e|n|-|M|a|x|i|m|u|m", + L"|G|e|g|e|n|w|i|r|k|e|n|-|H|ä|u|f|i|g|k|e|i|t", + L"|T|r|e|f|f|e|r|b|o|n|u|s", + L"|Z|i|e|l|b|o|n|u|s", + L"|E|r|z|e|u|g|t|e |H|i|t|z|e", + L"|A|b|k|ü|h|l|f|a|k|t|o|r", + L"|L|a|d|e|h|e|m|m|u|n|g|s|s|c|h|r|a|n|k|e", + L"|H|i|t|z|e|s|c|h|a|d|e|n|s|s|c|h|r|a|n|k|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|E|r|z|e|u|g|t|e |H|i|t|z|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|A|b|k|ü|h|l|f|a|k|t|o|r", + L"|M|o|d|i|f|i|k|a|t|o|r|-|L|a|d|e|h|e|m|m|u|n|g|s|s|c|h|r|a|n|k|e", + L"|M|o|d|i|f|i|k|a|t|o|r|-|H|i|t|z|e|s|c|h|a|d|e|n|s|s|c|h|r|a|n|k|e", + L"|G|i|f|t|-|I|n|d|i|k|a|t|o|r", + L"|S|c|h|m|u|t|z |M|o|d|i|f|i|k|a|t|o|r", + L"|G|i|f|t|i|g|k|e|i|t", + L"|N|a|h|r|u|n|g|s |P|u|n|k|t|e", + L"|T|r|i|n|k |P|u|n|k|t|e", + L"|P|o|r|t|i|o|n|s |G|r|ö|s|s|e", + L"|M|o|r|a|l |M|o|d|i|f|i|k|a|t|o|r", + 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 + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", // TODO.Translate +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +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.", + L"\n \nDieser Gegenstand verändert die Genauigkeit\nfür jede Art von Feuermodus für diese Fernwaffe um den angegebenen Prozentsatz mit Bezug auf die ursprünglichen Genauigkeit.\n \nMaßstab: -100 bis +100.\nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Genauigkeit,\nwelche die Waffe mit jedem zusätzlichen Punkt durch genaueres Zielen erhält um den genannten Wert.\n \nMaßstab: -100 bis +100.\nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Genauigkeit,\ndie die Waffe mit jedem zusätzlichen Punkt durch genaueres Zielen erhält um den genannten Prozentsatz der ursprünglichen Genauigkeit.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Anzahl der möglichen zusätzlichen Zielpunkte dieser Waffe. \n \nEine niedrigere Anzahl von möglichen zusätzlichen Zielpunkten bedeutet,\n daß jeder Zielpunkt proportional mehr Genauigkeit zum Schuss beiträgt.\n\nDies bedeutet, das weniger mögliche zusätzliche Zielpunkte ein schnelleres Zielen mit dieser Waffen erlauben, ohne die Genauigkeit zu reduzieren!\n \nNiedriger ist besser.", + L"\n \nDieser Gengenstand verändert den Höchstwert für Genauigkeit des Schützen mit Fernwaffen\num den angegebenen Prozentsatz seiner ursprünglichen maximalen Genauigkeit.\n \nHöher ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Schwierigkeit der Handhabung der Waffe.\nEine bessere Handhabung macht die Waffe genauer zu feuern; mit oder ohne zusätzliches Zielen.\n Der Wert bezieht sich dabei auf den ursprüngliche Handhabungs-Wert der Waffe,\nwelcher höher ist für Gewehre und schwere Waffen,\nund niedriger bei Pistolen und leichten Waffen.\n \nNiedriger ist besser", + L"\n \nDieser Gegenstand verändert die Schwierigkeit,\nmit einer Waffe auch jenseits ihrer effektiven Reichweite zu treffen.\n \nEin hoher Wert kann durchaus\ndie tatsächliche effektive Reichweite dieser Waffe\num einige Felder verlängern.\nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Schwierigkeit,\nein sich bewegendes Ziel zu treffen.\nEin hoher Wert kann es einfacher machen,\nsich bewegende Ziele auch in großer Entfernung zu treffen.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand verändert den Schaden,\nwelchen diese Waffe anrichtet.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand verändert den Schaden,\nden eine Handwaffe anrichtet, um den angegebenen Wert.\n \n Dies bezieht sich sowohl auf Klingen als auch auf Schlagwaffen.\n \nHöher ist besser", + L"\n \nWenn befestigt an einer Fernwaffe verändert\ndieser Gegenstand die größte effektive Reichweite.\n \nDie größte effektive Reichweite bestimmt,\nwie weit eine Kugel fliegt, bevor sie schnell in Richtung Boden fällt.\n \nHöher ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe bietet\ndieser Gegenstand eine zusätzlich Zielvergrößerung an,\nwas Schüsse auf große Entfernung vergleichsweise einfacher macht.\n \nEin hoher Vergrößerungsfaktor wirkt sich allerdings nachteilig aus\nbei Zielen, die näher als die optimale Entfernung sind.\n\nHöher ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe blendet\ndieser Gegenstand einen Punkt über das Ziel ein,\nwas das Treffen deutlich vereinfacht.\n\nDieser Effekt ist nur bis zu einer bestimmten Entfernung nützlich, darüber hinaus vermindert und schließlich verschwindet der Effekt.\n \nHöher ist besser.", + L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand den horizontalen Rückstoß um den genannten Wert.\n\n Ein geringerer Rückstoß macht es einfacher, die Waffe im Dauerfeuer auf das Ziel gerichtet zu halten.\n \nNiedriger ist besser.", + L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand den vertikalen Rückstoß um den genannten Wert.\n\n Ein geringerer Rückstoß macht es einfacher, die Waffe im Dauerfeuer auf das Ziel gerichtet zu halten.\n \nNiedriger ist besser.", + L"\n \nDieser Gegenstand verändert die Fähigkeit des Schützen,\nseine Waffe im Feuerstoß oder Dauerfeuer unter Kontrolle zu behalten.\n\n Ein hoher Wert kann auch körperlich schwachen Schützen helfen, Waffen mit starkem Rückstoß zu kontrollieren. \n \nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Fähigkeit des Schützen,\ndem Rückstoß der Waffe im Feuerstoß oder Dauerfeuer wirksam entgegenzuwirken.\n\n Ein hoher Wert erlaubt dem Schützen,\n die Waffe besser auf das Ziel auszurichten,\n was im Ergebnis die Genauigkeit von Feuerstößen erhöht. \n \nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Fähigkeit des Schützen,\ndie Kraft, welche er benötigt, um dem Rückstoß im Feuerstoß oder Dauerfeuer entgegenzuwirken, öfter anzupassen.\n\n Ein höherer Wert macht Feuerstöße generell genauer,\n insbesondere lange Feuerstöße,\nvorausgesetzt, der Schütze kann dem Rückstoß wirksam entgegenwirken. \n \nHöher ist besser.", + L"\n \nDieser Gegenstand verändert die Anzahl der Aktionspunkte,\nwelche der Charakter zu Beginn jeder Runde bekommt. \n \nHöher ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie benötigt werden,\num die Waffe in Anschlag zu bringen.\n \nNiedriger ist besser.", + L"\n \nWenn befestigt an irgendeiner Waffe verändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie für einen Angriff mit der Waffe benötigt werden.\n\n Dies bezieht sich auch auf Feuerstoß oder Dauerfeuer fähige Waffen.\n \nNiedriger ist besser.", + L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie für die Abgabe eines Feuerstoßes benötigt werden.\n \nNiedriger ist besser.", + L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie für das Schießen im Dauerfeuer Modus benötigt werden.\n\n Dies bezieht sich allerdings nicht auf die AP, die benötigt werden,\num zusätzliche Schüsse im Feuerstoß abzugeben. .\n \nNiedriger ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Anzahl der Aktionspunkte,\ndie benötigt werden, um die Waffe zu laden.\n \nNiedriger ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand\ndie Magazinkapazität von Magazinen welche in die Waffe geladen werden können. \n \nHöher ist besser.", + L"\n \nWenn befestigt an einer Fernwaffe verändert dieser Gegenstand die Anzahl der Kugeln,\ndie pro Feuerstoß abgegeben werden.\n\n Wenn die Waffe ursprünglich nicht für Feuerstöße angelegt war,\nkann ein positiver Faktor die Abgabe von Feuerstößen ermöglichen.\n\nIm Gegensatz kann eine Waffe mit einer solchen Funktion diese bei einem entsprechend negativem Faktor verlieren. \n \nHöher ist - gewöhnlich – besser. Allerdings ist Munitionssparen ein Grund für kontrollierte Feuerstöße.", + L"\n \nAn die Waffe angebracht beeinflusst der Gegenstand\nein Verbergen des Mündungsfeuers.\n \nDadruch wird es schwieriger den Schützen zu entdecken.", + L"\n \nAn die Waffe angebracht beeinflusst der Gegenstand\ndie Lautstärke der Waffe.\n \nNiedriger ist besser.", + L"\n \nDieser Gegenstand beeinflusst die Größe des Gegenstands\nan den er angebracht ist.\n \nDie Größe des Gegenstands bestimmt wie oft und worin er\nbefördert werden kann.\n \nNiedriger ist besser.", + L"\n \nAn die Waffe angebracht beeinflusst der Gegenstand\nden Zuverlässigkeitswert.\n \nEin positiver Wert bewirkt ein verlangsamte,\nein negativer Wert eine verschnellert Verschlechterung.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Waldgebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Stadtgebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Wüstenebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", + 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 \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.", + L"\n \nDieser Gegenstand beeinflusst die Trefferchance\n, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", + L"\n \nDieser Gegenstand beeinflusst den Zielbonus\n, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", + L"\n \nEin Schuss erzeugt soviel Hitze. Munitionstypen und Anbauten können diesen Wert verändern.\n \nNiedriger ist besser.", + L"\n \nIn jedem Zug wird die Temperatur um diesen Wert gesenkt.\n \nHöher ist besser.", + L"\n \nWenn die Temperatur diesen Wert überschreitet, kommt es leichter zu Ladehemmungen.\n \nHöher ist besser.", + L"\n \nWenn die Temperatur diesen Wert überschreitet, wird der Gegenstand leichter beschädigt.\n \nHöher ist besser.", + L"\n \nErzeugte Hitze wird um diesen Prozentsatz erhöht.\n \nNiedriger ist besser.", + L"\n \nAbkühlung wird um diesen Prozentsatz erhöht.\n \nHöher ist besser.", + L"\n \nLadehemmungsschranke wird um diesen Prozentsatz erhöht.\n \nHöher ist besser.", + L"\n \nHitzeschadensschranke wird um diesen Prozentsatz erhöht.\n \nHöher is besser.", + L"\n \nDies ist der prozentuelle Schaden der durch\nden vergifteten Gegenstand verursacht wird.\n\nDieser Schaden hängt natürlich davon ab,\noder der Feind eine Gift-Resistenz hat oder nicht.", + L"\n \nEin einziger Schuss verursacht diesen Schmutz.\nUnterschiedliche Munition und Waffen-Anbauten\nkönnen diesen Wert verändern.\n \nNiedriger ist besser.", + L"\n \nDies zu Essen verursacht soviel Vergiftung.\n \nNiedriger ist besser.", + L"\n \nMenge an Energy in kcal.\n \nHöher ist besser.", + L"\n \nWasseranteil in Litern.\n \nHöher ist besser.", + 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"", + 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 + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", // TODO.Translate +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nDie Genauigkeit wurde verändert durch\nMunition, Erweiterungen oder inhärenter Fähigkeiten.\n \nErhöhte Genauigkeit erlaubt es Ziele die weiter entfernt sind\nöfter zu treffen, sofern \ngut gezielt wird.\n \nSkala: -100 bis +100.\nHöher ist besser.", + L"\n \nDie Waffe verändert die Genauigkeit des Schützen\nmit jedem Schuss durch den angegebenen Wert.\n \nSkala: -100 bis +100.\nHöher ist besser.", + L"\n \nDie Waffe verändert die Genauigkeit des Schützen\nmit jedem Schuss prozentual zur \nursprünglichen Genauigkeit des Schützen.\n \nHöher ist besser.", + L"\n \nDie Waffe verändert den Betrag an Genauigkeit\ndurch jedes zusätzlich investierte Ziellevel.\n \nSkala: -100 bis +100.\nHöher ist besser.", + L"\n \nDie Waffe verändert den Betrag an Genauigkeit\ndurch jedes zusätzlich investierte Ziellevel\nprozentual zur\nursprünglichen Genauigkeit des Schützen.\n \nHöher ist besser.", + L"\n \nDie Anzahl an zusätzlich erlaubter Ziellevel\nfür diese Waffe wurden geändert durch Munition,\nErweiterungen oder inhärenter Fähigkeiten.\nWird die Anzahl an Ziellevel reduziert, is das Zielen mit\nder Waffe schneller bei gleicher Genauigkeit.\n \nGleiches gilt für die Erhöhung der Anzahl an Ziellevel.\n \nNiedriger ist besser.", + L"\n \nDie Waffe ändert die maximale Genauigkeit des Schützen\nprozentual zu der ursprünglichen Genauigkeit des Schützen.\n \nHöher ist besser.", + L"\n \nErweiterungen oder inhärente Fähigkeiten der Waffe\nverändern ihr Handhabung.\n \nLeichtere Handhabung lässt die Waffe genauer werden.\n \nNiedriger ist besser.", + L"\n \nDie Fähigkeit Schüsse außerhalb\nder maximalen Reichweite zu gewährleisten wurde durch Erweiterungen\n oder inhärenter Fähigkeiten geändert.\n \nHöher ist besser.", + L"\n \nDie Fähigkeit entfernte, bewegende Ziele zu treffen\nwurde durch Erweiterungen\noder inhärenter Fähigkeiten geändert.\n \nHöher ist besser.", + L"\n \nDas Schadensergebnis wurde durch\nMunition oder Erweiterungen geändert.\n \nHöher ist besser.", + L"\n \nDer Messerschaden wurde durch\nErweiterungen oder inhärente Fähigkeiten geändert.\n \nHöher ist besser.", + L"\n \nDie maximale Reichweite wurde verbessert/verschlechtert durch Munition,\nErweiterungen oder inhärenter Fähigkeiten.\n \nHöher ist besser.", + L"\n \nWurde durch optische Vergrößerungen ausgerüstet,\num entfernte Ziele leichter zu treffen.\n \nZielen mit hoher Vergrößerungen außerhalb der optimalen Entfernung ist schädlich.\n \nHöher ist besser.", + L"\n \nMit einem Projektionsgerät ausgestattet\ndas einen Punkt (innerhalb der Reichweite) auf das Ziel projiziert\nund somit das Treffen erleichtert.\n \nHöher ist besser.", + L"\n \nDer horizontale Rückstoß wurde geändert\ndurch Munition, Erweiterungen oder inhärenter\nFähigkeiten.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin reduzierter Rückstoß erleichtert es bei einer Salve die\nMündung auf das Ziel zu richten!\n \nNiedriger ist besser.", + L"\n \nDer vertikale Rückstoß wurde geändert\ndurch Munition, Erweiterungen oder inhärenter\nFähigkeiten.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin reduzierter Rückstoß erleichtert es bei einer Salve die\nMündung auf das Ziel zu richten!.\n \nNiedriger ist besser.", + L"\n \nÄndert die Fertigkeit des Schützen, Rückstoß bei\nFeuerstoß-/Autofeuer zu bewältigen.\n \nEin hoher Wert hilft dem Schützen seine Waffe bei starkem Rückstoß\nzu kontrollieren selbst dann, wenn er wenig Kraft besitzt.\n \nHöher ist besser.", + L"\n \nÄndert die Fertigkeit des Schützen\nRückstöße genauer auszugleichen.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin hoher Wert hilft dem Schützen die Mündung der Waffe\nbei Salven genauer auf das Ziel zu richten.\n \nHöher ist besser.", + L"\n \nÄndert die Fertigkeit des Schützen\neinzuschätzen wie viel Kraft zum ausgleichen des Rückstoßes benötigt wird.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nHöhere Frequenzen machen Salven im ganzen genauer,\nlängere Salven werden genauer sofern\nder Schütze den Rückstoß bewältigen kann.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, ändert die Waffe die Menge an AP\ndie der Soldat zu Anfang einer Runde bekommt.\n \nHöher ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten zum Anlegen der Waffe\ngeändert.\n \nNiedriger ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für einen Einzelangriff\ngeändert.\n \nNiedriger ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für einen Feuerstoß\ngeändert.\n \nDies hat keine Wirkung bei Einzelschüssen!.\n \nNiedriger ist besser.", + L"\n \nDurch Munition, Erweiterung oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für eine Salve geändert.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nNiedriger ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurden die AP-Kosten für Nachladen geändert.\n \nNiedriger ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die größe der fassbaren Magazine geändert.\n \nHöher ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Anzahl der Patronen die abgefeuert werden\nkönnen geändert.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nentsteht kein Mündungsfeuer.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Lautstärke geändert. \n \nNiedriger ist besser.", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Waffengröße geändert. Die größe des Gegenstands bestimmt wie oft und worin er\nbefördert werden kann", + L"\n \nDurch Munition, Erweiterungen oder inhärenter Fähigkeiten,\nwurde die Zuverlässigkeit geändert.\n \nEin positiver Wert bewirkt ein verlangsamte,\nein negativer Wert eine vergröbert Verschlechterung.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Waldgebieten.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Stadtgebieten.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Wüstengebieten.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, verändert sich\ndie Tarnung des Soldaten in Schneegebieten.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, verändert sich\ndie Fähigkeit des Soldaten sich leise zu bewegen.\n \nHöher ist besser.", + L"\n \nWenn in der Hand gehalten, verändert sich\ndie Hörfähigkeit (in Felder) des Soldaten.\n \nHöher ist besser.", + L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser allgemeine Modifikator wirkt unter allen Bedingungen.\n \nHöher ist besser.", + L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Nachsicht-Modifikator wirk nur, wenn die Beleuchtung sehr niedrig ist.\n \nHigher is better.", + L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Tagsicht-Modifikator wird nur, wenn die Beleuchtung durchchnittlich öder höher ist.\n \nHöher ist besser.", + L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Hellighekits-Modifikator funktioniert nur, wenn die Beleuchtung extrem hell ist wie zum Beispiel bei Leuchtstäben.\n \nHöher ist besser.", + L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Höhlen-Modifikator wirkt nur im Dunkeln und unterirdisch.\n \nHöher ist besser.", + L"\n \nWenn diese Waffe zum Schießen angelegt wird,\nverändert dies die Sichtweite.\n \nDie Seitensicht wird durch eine Art Tunnelblick eingegrenzt.\n \nHöher ist besser.", + L"\n \nDas ist die Fähigkeit des Schützen Rückstoß\nwährend der Feuerstoß-/Autofeuersalven zu bewältigen.\n \nHöher ist besser.", + L"\n \nDas ist die Fähigkeit des Schützen Rückstöße\ngenauer auszugleichen.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin hoher Wert hilft dem Schützen die Mündung der Waffe\nbei Salven genauer auf das Ziel zu richten.\n \nNiedriger ist besser.", + L"\n \nDer Treffer Modifikator wird verändert durch\nMunition, Erweiterungen oder eingebauter Attribute.\n \nEin erhöhter Treffer Modifikator erlaubt es entfernte Ziele\n öfter zu treffen sofern\nanständig gezielt wird.\n \nHöher ist besser.", + L"\n \nDer Zielbonus wird verändert durch\nMunition, Erweiterungen oder eingebauter Attribute.\n \nEin erhöhter Zielbonus erlaubt es entfernte Ziele\n öfter zu treffen sofern\nanständig gezielt wird.\n \nHöher ist besser.", + L"\n \nEin einziger Schuss dieser Waffe\nkann diese Hitze erzeugen.\nUnterschiedliche Munition kann diesen Wert beeinflussen.\n \nNiedriger ist besser.", + L"\n \nIn jeder Runde kühlt die Temperatur um diesen Wert ab.\nAnbauten an der Waffe können diesen Wert beinflussen.\n \nHöher ist besser.", + L"\n \nWenn die Temperatur der Waffe über diese Wert steigt,\nkann die Waffe leicht blockieren.", + L"\n \nWenn die Temperatur der Waffe über diesen Wert steigt,\nkann die Waffe Schaden davon tragen.", + L"\n \nDer horizontale Rückstoß wurde prozentual geändert\ndurch Munition, Erweiterungen oder inhärenter\nFähigkeiten.\n \nDies hat keine Wirkung bei Einzelschüssen!\n \nEin reduzierter Rückstoß erleichtert es bei einer Salve die\nMündung auf das Ziel zu richten!\n \nNiedriger ist besser.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"EINZEL", + L"AP", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +// TODO.Translate +STR16 gzMapInventorySortingMessage[] = +{ + L"Das Sortieren der Munition in Kisten im Sektor %c%d wurde fertiggestellt.", + L"Das Entfernen von Gegenstandsanbauten im Sektor %c%d wurde fertiggestellt.", + L"Das Entfernen von Munition der Waffen im Sektor %c%d wurde fertiggestellt.", + L"Das Stapeln und Zusammenführen von Gegenständen im Sektor %c%d wurde fertiggestellt.", + // Bob: new strings for emptying LBE items + L"Finished emptying LBE items in sector %c%d.", + L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Alle anzeigen", + L"Waffen", + L"Munition", + L"Sprengstoffe", + L"Nahkampfwaffen", + L"Rüstung", + L"LBE", + L"Ausrüstung", + L"Andere Gegenstände", + L"Alle ausblenden", +}; + +// TODO.Translate +STR16 gzMercCompare[] = +{ + L"???", + L"Base opinion:", + + L"Dislikes %s %s", + L"Likes %s %s", + + L"Strongly hates %s", + L"Hates %s", // 5 + + L"Deep racism against %s", + L"Racism against %s", + + L"Cares deeply about looks", + L"Cares about looks", + + L"Very sexist", // 10 + L"Sexist", + + L"Dislikes other background", + L"Dislikes other backgrounds", + + L"Past grievances", + L"____", // 15 + L"/", + L"* Opinion is always in [%d; %d]", // TODO.Translate +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = +{ + L"Temperatur ist ", + L"sehr niedrig", + L"niedrig", + L"mittel", + L"hoch", + L"sehr hoch", + L"gefährlich", + L"KRITISCH", + L"DRAMATISCH", + L"unbekannt", + L"." +}; + +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"Nahrung ist ", + L"frisch", + L"gut", + L"in Ordnung", + L"alt", + L"ranzig", + L"verdorben", + L"." +}; + +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Rekr. ", //ExpLevel 1 + L"Gfr. ", //ExpLevel 2 + L"Kpl. ", //ExpLevel 3 + L"Zgf. ", //ExpLevel 4 + L"Lt. ", //ExpLevel 5 + L"Hptm. ", //ExpLevel 6 + L"Mjr. ", //ExpLevel 7 + L"Bgdr. ", //ExpLevel 8 + L"GenLt. ", //ExpLevel 9 + L"Gen. " //ExpLevel 10 +}; + +// TODO.Translate +STR16 gzNewLaptopMessages[]= +{ + L"Ask about our special offer!", + L"Temporarily Unavailable", + L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Entfernung zum Ziel: %d Felder, Helligkeit: %d/%d", + L"Verbinden Sie den Transmitter mit Ihrem Laptop-Computer.", + L"Sie haben nicht genug Geld, um %s anzuheuern", + L"Das obenstehende Honorar deckt für einen begrenzten Zeitraum die Kosten der Gesamtmission, und schließt untenstehendes Equipment mit ein.", + L"Engagieren Sie %s jetzt und nutzen Sie den Vorteil unseres beispiellosen 'Ein Betrag für alles'-Honorars. Das persönliche Equipment des Söldners ist gratis in diesem Preis mit inbegriffen.", + L"Honorar", + L"Da ist noch jemand im Sektor...", + //L"Waffen-Rchwt.: %d Felder, Trefferwahrsch.: %d Prozent", + L"Deckung anzeigen", + L"Sichtfeld", + L"Neue Rekruten können dort nicht hinkommen.", + L"Da Ihr Laptop keinen Transmitter besitzt, können Sie keine neuen Teammitglieder anheuern. Vielleicht ist dies eine guter Zeitpunkt, ein gespeichertes Spiel zu laden oder ein neues zu starten!", + L"%s hört das Geräusch knirschenden Metalls unter Jerry hervordringen. Es klingt grässlich - die Antenne ihres Laptop-Computers ist zerstört.", //the %s is the name of a merc. @@@ Modified + L"Nach Ansehen des Hinweises, den Commander Morris hinterließ, erkennt %s eine einmalige Gelegenheit. Der Hinweis enthält Koordinaten für den Start von Raketen gegen verschiedene Städte in Arulco. Aber er enthält auch die Koordinaten des Startpunktes - der Raketenanlage.", + L"Das Kontroll-Board studierend, entdeckt %s, dass die Zahlen umgedreht werden könnten, so dass die Raketen diese Anlage selbst zerstören. %s muss nun einen Fluchtweg finden. Der Aufzug scheint die schnellstmögliche Route zu bieten...", //!!! The original reads: L"Noticing the control panel %s, figures the numbers can be reversed..." That sounds odd for me, but I think the comma is placed one word too late... (correct?) + L"Dies ist der IRONMAN-Modus und es kann nicht gespeichert werden, wenn sich Gegner in der Nähe befinden.", + L"(Kann während Kampf nicht speichern)", + L"Der Name der aktuellen Kampagne enthält mehr als 30 Buchstaben.", + L"Die aktuelle Kampagne kann nicht gefunden werden.", + L"Kampagne: Standard ( %S )", + L"Kampagne: %S", + L"Sie haben die Kampagne %S gewählt. Diese ist eine vom Spieler modifizierte Version der Originalkampagne von JA2UB. Möchten Sie die Kampagne %S spielen?", + L"Um den Editor zu benutzen, müssen Sie eine andere als die Standardkampgane auswählen.", + // anv: extra iron man modes + L"Das ist der SOFT IRONMAN-Modus und es kann während des taktischen Rundenkampfes nicht gespeichert werden.", + L"Das ist der EXTREME IRONMAN-Modus und es kann nur einmal am Tag gespeichert werden, um %02d:00.", +}; + +// The_bob : pocket popup text defs +STR16 gszPocketPopupText[]= +{ + L"Granatwerfer", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Raketenwerfer", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Hand- & Wurfwaffen", // POCKET_POPUP_MEELE_AND_THROWN + L"- keine passende Munition -", //POCKET_POPUP_NO_AMMO + L"- keine Waffen im Inventar -", //POCKET_POPUP_NO_GUNS + L"weitere...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features +STR16 szCovertTextStr[]= +{ + L"%s hat Feldtarnung!", + L"%s hat einen Rucksack!", + L"%s wurde gesichtet beim Tragen einer Leiche!", + L"%s's %s ist verdächtig!", + L"%s's %s ist eine militärische Ausrüstung!", + L"%s trägt zu viele Waffen!", + L"%s's %s ist zu fortgeschritten für einen %s Soldat!", + L"%s's %s hat zu viele Anbauten!", + L"%s wurde gesichtet bei verdächtigen Handlungen!", + L"%s schaut nicht wie ein Zivilist aus!", + L"%s Blutung wurde entdeckt!", + L"%s ist betrunken und verhält sich deshalb nicht wie ein Soldat!", + L"Bei genauerer Betrachtungweise ist %s's Verkleidung nicht wirksam!", + L"%s sollte nicht hier sein!", + L"%s sollte um diese Uhrzeit nicht hier sein!", + L"%s wurde in der Nähe einer frischen Leiche gesichtet!", + L"%s Ausrüstung sorgt für Erstaunen!", + L"%s visiert %s an!", + L"%s hat durch %s's Verkleidung gesehen!", + L"In der Items.xml wurde keine Kleidung gefunden!", + L"Dies funktioniert nicht mit dem alten Fertigkeitensystem!", + L"Zu wenig Bewegungspunkte!", + L"Fehlerhafte Farbpalette!", + L"Sie brauchen die Geheimagent-Fertigkeit um dies zu tun!", + L"Keine Uniform gefunden!", + L"%s ist jetzt verkleidet als ein Zivilist.", + L"%s ist jetzt verkleidet als ein Soldat.", + L"%s trägt keine korrekte Uniform!", + L"Verkleidet zur Kapitulation aufzufordern, war im Nachhinein nicht ganz so klug ...", + L"%s wurde enttarnt!", + L"%s's Verkleidung sollte überzeugen", + L"%s's Verkleidung wird auffliegen!", + L"%s wurde beim Stehlen erwischt!", + L"%s hat versucht, %s's Azsrüstung zu verändern.", + L"Einem Elitesoldat schien %s verdächtig!", + L"Ein Offizier hat %s erkannt!", +}; + +STR16 szCorpseTextStr[]= +{ + L"Kein Kopf-Gegenstand in der Datei Items.xml!", + L"Leiche kann nicht enthauptet werden!", + L"Kein Fleisch-Gegenstand in der Datei Items.xml!", + L"Nicht möglich, sie krankes Individuum!", + L"Keine Kleidung vorhanden zum Nehmen!", + L"%s kann der Leiche nicht die Kleidung entwenden!", + L"Diese Leiche kann nicht genommen werden!", + L"Keine freie Hand vorhanden um die Leiche zu nehmen!", + L"Kein Leiche-Gegenstand vorhanden in der Datei Items.xml!", + L"Ungültige Leiche-ID!", +}; + +STR16 szFoodTextStr[]= +{ + L"%s möchte nicht %s essen", + L"%s möchte nicht %s trinken", + L"%s hat %s gegessen", + L"%s hat %s getrunken", + L"%s's Kraft wurde weniger, weil überfüttert!", + L"%s's Kraft wurde weniger, wegen Nahrungsmangel!", + L"%s's Gesundheit wurde angegriffen, weil überfüttert!", + L"%s's Gesundheit wurde angegriffen, wegen Nahrungsmangel!", + L"%s's Kraft wurde weniger, durch exzessives Trinken!", + L"%s's Kraft wurde weniger, durch Mangel an Wasser!", + L"%s's Gesundeheit wurde angegriffen, durch exzessives Trinken!", + L"%s's Gesundeheit wurde angegriffen, durch Mangel an Wasser!", + L"Sektorübergreifendes Befüllen der Feldflaschen ist nicht möglich, weil Nahrungssystem nicht aktiv ist!" +}; + +STR16 szPrisonerTextStr[]= +{ + L"%d Offiziere, %d Elite-, %d Reguläre, %d Hilfssoldaten, %d Generäle und %d Zivilisten wurden verhört.", + L"$%d als Lösegeld erhalten.", + L"%d Gefangene haben uns Truppenstandorte verraten.", + L"%d Offiziere, %d Elite-, %d Reguläre und %d Hilfssoldaten laufen zu uns über.", + L"Gefangenenaufstand in %s!", + L"%d Gefangene wurden nach %s geschickt!", + L"Gefangene freigelassen!", + L"Die Armee hat das Gefängnis in %s besetzt, die Gefangenen wurden befreit!", + L"Der Gegner weigert sich aufzugeben!", + L"Der Feind weigert sich, Sie als Gefangenen zu nehmen - Er möchte Sie tod sehen!", + L"Dieses Verhalten ist ausgeschaltet in der ja2_options.ini Datei.", + L"%s hat %s befreit!", + L"Ein ranghoher Offizier in %s wurde enttarnt!", + L"Der feindliche Anführer denkt nicht mal an Kapitulation!", + L"%d Gefangene sind uns als Freiwillige beigetreten.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= +{ + L"nichts", + L"baue eine Befestigung", + L"entferne eine Befestigung", + L"hacking", + L"%s musste %s stoppen.", + L"Die gewählte Barrikade kann in diesem Sektor nicht gebaut werden", +}; + +STR16 szInventoryArmTextStr[]= +{ + L"Sprengen (%d AP)", + L"Sprengen", + L"Scharf machen (%d AP)", + L"Scharf machen", + L"Entschärfen (%d AP)", + L"Entschärfen", +}; + +// TODO.Translate +STR16 szBackgroundText_Flags[]= +{ + L" might consume drugs in inventory\n", + L" disregard for all other backgrounds\n", + L" +1 level in underground sectors\n", + L" steals money from the locals sometimes\n", + + 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 + + L" huge loyality penalty in all towns if we die\n", + + L" refuses to attack animals\n", + L" refuses to attack members of the same group\n", +}; + +// TODO.Translate +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% APs in polar sectors\n", + L" %s%d%% APs in desert sectors\n", + L" %s%d%% APs in swamp sectors\n", + L" %s%d%% APs in urban sectors\n", + L" %s%d%% APs in forest sectors\n", + L" %s%d%% APs in plain sectors\n", + L" %s%d%% APs in river sectors\n", + L" %s%d%% APs in tropical sectors\n", + L" %s%d%% APs in coastal sectors\n", + L" %s%d%% APs in mountainous sectors\n", + + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% leadership stat\n", + L" %s%d%% marksmanship stat\n", + 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", + L" %s%d%% APs needed for fortification actions\n", + L" %s%d%% APs needed for mortars\n", + L" %s%d%% APs needed to access inventory\n", + L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", + L" %s%d%% APs on first turn when assaulting a sector\n", + + L" %s%d%% travel speed on foot\n", + L" %s%d%% travel speed on land vehicles\n", + L" %s%d%% travel speed on air vehicles\n", + L" %s%d%% travel speed on water vehicles\n", + + L" %s%d%% fear resistance\n", + L" %s%d%% suppression resistance\n", + L" %s%d%% physical resistance\n", + L" %s%d%% alcohol resistance\n", + L" %s%d%% disease resistance\n", + + L" %s%d%% interrogation effectiveness\n", + L" %s%d%% prison guard strength\n", + L" %s%d%% better prices when trading guns and ammo\n", + L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", + L" %s%d%% team capitulation strength if we lead negotiations\n", + L" %s%d%% faster running\n", + L" %s%d%% bandaging speed\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% strength to carry items\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", + L" %s%d need for sleep\n", + L" %s%d%% melee damage\n", + L" %s%d%% cth with blades\n", + L" %s%d%% camo effectiveness\n", + L" %s%d%% stealth\n", + L" %s%d%% max CTH\n", + L" %s%d hearing range during the night\n", + L" %s%d hearing range during the day\n", + L" %s%d effectivity at disarming traps\n", + L" %s%d%% CTH with SAMs\n", + + L" %s%d%% effectiveness to friendly approach\n", + L" %s%d%% effectiveness to direct approach\n", + L" %s%d%% effectiveness to threaten approach\n", + 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", + L" %s%d%% insurance cost\n", + L" %s%d%% effectiveness as spotter for fellow snipers\n", + L" %s%d%% effectiveness at diagnosing diseases\n", + L" %s%d%% effectiveness at treating population against diseases\n", + L"Can spot tracks up to %d tiles away\n", + L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% chance to evade snake attacks\n", + + L" dislikes some other backgrounds\n", + L"Smoker", + L"Nonsmoker", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% building speed\n", + L" hacking skill: %s%d ", + L" %s%d%% burial speed\n", + L" %s%d%% administration effectiveness\n", + L" %s%d%% exploration effectiveness\n", +}; + +// TODO.Translate +STR16 szBackgroundTitleText[] = +{ + L"I.M.P. Background", +}; + +// Flugente: personality +// TODO.Translate +STR16 szPersonalityTitleText[] = +{ + L"I.M.P. Prejudices", +}; + +// TODO.Translate +STR16 szPersonalityDisplayText[]= +{ + L"You look", + L"and appearance is", + L"important to you.", + L"You have", + L"and care", + L"about that.", + L"You are", + L"and hate everyone", + L".", + L"racist against non-", + L"people.", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +// TODO.Translate +STR16 szPersonalityHelpText[]= +{ + L"How do you look?", + L"How important are the looks of others to you?", + L"What are your manners?", + L"How important are the manners of other people to you?", + L"What is your nationality?", + L"What nation o you dislike?", + L"How much do you dislike that nation?", + L"How racist are you?", + L"What is your race? You will be\nracist against all other races.", + L"How sexist are you against the other gender?", +}; + +// TODO.Translate +STR16 szRaceText[]= +{ + L"white", + L"black", + L"asian", + L"eskimo", + L"hispanic", +}; + +// TODO.Translate +STR16 szAppearanceText[]= +{ + L"average", + L"ugly", + L"homely", + L"attractive", + L"like a babe", +}; + +// TODO.Translate +STR16 szRefinementText[]= +{ + L"average manners", + L"manners of a slob", + L"manners of a snob", +}; + +// TODO.Translate +STR16 szRefinementTextTypes[] = +{ + L"normal people", + L"slobs", + L"snobs", +}; + +// TODO.Translate +STR16 szNationalityText[]= +{ + L"American", // 0 + L"Arab", + L"Australian", + L"British", + L"Canadian", + L"Cuban", // 5 + L"Danish", + L"French", + L"Russian", + L"Traconian", + L"Swiss", // 10 + L"Jamaican", + L"Polish", + L"Chinese", + L"Irish", + L"South African", // 15 + L"Hungarian", + L"Scottish", + L"Arulcan", + L"German", + L"African", // 20 + L"Italian", + L"Dutch", + L"Romanian", + L"Metaviran", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"Belarusian", + L"Belgian", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"Brasilian", + L"Bulgarian", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"Estonian", + L"Ethiopian", + L"Filipino", // 50 + L"Finnish", + L"Georgian", + L"Greek", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Indian", + L"Indonesian", + L"Iranian", + L"Iraqi", // 60 + L"Islandic", + L"Israeli", + L"Japanese", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Mexican", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Nigerian", + L"Nigerien", + L"Norwegian", + L"Pakistani", // 85 + L"Panamanian", + L"Portoguese", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"Serbian", + L"Slovakian", + L"Slovenian", + L"Somali", + L"Spanish", // 95 + L"Sudanese", + L"Swedish", + L"Syrian", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"Turkish", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"Venezuelan", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +// TODO.Translate +STR16 szNationalityTextAdjective[] = +{ + L"americans", // 0 + L"arabs", + L"australians", + L"britains", + L"canadians", + L"cubans", // 5 + L"danes", + L"frenchmen", + L"russians", + L"traconians", + L"swiss", // 10 + L"jamaicans", + L"poles", + L"chinese", + L"irishmen", + L"south africans", // 15 + L"hungarians", + L"scotsmen", + L"arulcans", + L"germans", + L"africans", // 20 + L"italians", + L"dutchmen", + L"romanians", + L"metavirans", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"belarusians", + L"belgians", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"brasilians", + L"bulgarians", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"estonians", + L"ethiopians", + L"filipinos", // 50 + L"finns", + L"georgians", + L"greek", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"indians", + L"indonesians", + L"iranians", + L"iraqis", // 60 + L"islandics", + L"israelis", + L"japanese", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"mexicans", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"nigerians", + L"nigeriens", + L"norwegians", + L"pakistanis", // 85 + L"panamanians", + L"portoguese", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"serbians", + L"slovakians", + L"slovenians", + L"somali", + L"spaniards", // 95 + L"sudanese", + L"swedes", + L"syrians", + L"thais", + L"togolese", // 100 + L"tunisians", + L"turks", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"venezuelans", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +// TODO.Translate +STR16 szNationalityText_Special[]= +{ + L"and do not hate any other nationality.", // used in personnel.cpp + L"of no origin", // used in IMP generation +}; + +// TODO.Translate +STR16 szCareLevelText[]= +{ + L"not", + L"somewhat", + L"extremely", +}; + +// TODO.Translate +STR16 szRacistText[]= +{ + L"not", + L"somewhat", + L"very", +}; + +// TODO.Translate +STR16 szSexistText[]= +{ + L"no sexist", + L"somewhat sexist", + L"very sexist", + L"a Gentleman", +}; + +// Flugente: power pack texts +// TODO.Translate +STR16 gPowerPackDesc[] = +{ + L"Batteries are ", + L"full", + L"good", + L"at half", + L"low", + L"depleted", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +// TODO.Translate +STR16 szSoldierClassName[]= +{ + L"Mercenary", + L"Green militia", + L"Regular militia", + L"Elite militia", + + L"Civilian", + + L"Administrator", + L"Army Soldier", + L"Elite Soldier", + L"Tank", + + L"Creature", + L"Zombie", +}; + +// TODO.Translate +STR16 szCampaignHistoryWebSite[]= +{ + L"%s Press Council", + L"Ministry for %s Information Distribution", + L"%s Revolutionary Movement", + L"The Times International", + L"International Times", + L"R.I.S. (Recon Intelligence Service)", + + L"A collection of press sources from %s", + L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", + + L"Conflict Summary", + L"Battle reports", + L"News", + L"About us", +}; + +// TODO.Translate +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s in %s.", + + L"rebel forces", + L"the army", + + L"attacked", + L"ambushed", + L"airdropped", + + L"The attack came from %s.", + L"%s were reinforced from %s.", + L"The attack came from %s, %s were reinforced from %s.", + L"north", + L"east", + L"south", + L"west", + L"and", + L"an unknown location", // TODO.Translate + + L"Buildings in the sector were damaged.", // TODO.Translate + L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", + L"During the attack, %s and %s called reinforcements.", + L"During the attack, %s called reinforcements.", + L"Eyewitnesses report the use of chemical weapons from both sides.", + L"Chemical weapons were used by %s.", + L"In a serious escalation of the conflict, both sides deployed tanks.", + L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", + L"Both sides are said to have used snipers.", + L"Unverified reports indicate %s snipers were involved in the firefight.", + L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", + L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", + L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", +}; + +// TODO.Translate +STR16 szCampaignHistoryTimeString[]= +{ + L"Deep in the night", // 23 - 3 + L"At dawn", // 3 - 6 + L"Early in the morning", // 6 - 8 + L"In the morning hours", // 8 - 11 + L"At noon", // 11 - 14 + L"On the afternoon", // 14 - 18 + L"On the evening", // 18 - 21 + L"During the night", // 21 - 23 +}; + +// TODO.Translate +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Initial funding", + L"Mine income", + L"Trade", + L"Other sources", +}; + +// TODO.Translate +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Ammunition", + L"Explosives", + L"Food", + L"Medical gear", + L"Item maintenance", +}; + +// TODO.Translate +STR16 szCampaignHistoryResultString[]= +{ + L"In an extremely one-sided battle, the army force was wiped out without much resistance.", + + L"The rebels easily defeated the army, inflicting heavy losses.", + L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", + + L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", + L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", + + L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", + + L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", + L"Despite the high number of rebels in this sector, the army easily dispatched them.", + + L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", + L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", + + L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", + L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", + + L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", +}; + +// TODO.Translate +STR16 szCampaignHistoryImportanceString[]= +{ + L"Irrelevant", + L"Insignificant", + L"Notable", + L"Noteworthy", + L"Significant", + L"Interesting", + L"Important", + L"Very important", + L"Grave", + L"Major", + L"Momentous", +}; + +// TODO.Translate +STR16 szCampaignHistoryWebpageString[]= +{ + L"Killed", + L"Wounded", + L"Prisoners", + L"Shots fired", + + L"Money earned", + L"Consumption", + L"Losses", + L"Participants", + + L"Promotions", + L"Summary", + L"Detail", + L"Previous", + + L"Next", + L"Incident", + L"Day", +}; + +// TODO.Translate +STR16 szCampaignStatsOperationPrefix[] = +{ + L"Glorious %s", + L"Mighty %s", + L"Awesome %s", + L"Intimidating %s", + + L"Powerful %s", + L"Earth-Shattering %s", + L"Insidious %s", + L"Swift %s", + + L"Violent %s", + L"Brutal %s", + L"Relentless %s", + L"Merciless %s", + + L"Cannibalistic %s", + L"Gorgeous %s", + L"Rogue %s", + L"Dubious %s", + + L"Sexually Ambigious %s", + L"Burning %s", + L"Enraged %s", + L"Visonary %s", + + // 20 + L"Gruesome %s", + L"International-law-ignoring %s", + L"Provoked %s", + L"Ceaseless %s", + + L"Inflexible %s", + L"Unyielding %s", + L"Regretless %s", + L"Remorseless %s", + + L"Choleric %s", + L"Unexpected %s", + L"Democratic %s", + L"Bursting %s", + + L"Bipartisan %s", + L"Bloodstained %s", + L"Rouge-wearing %s", + L"Innocent %s", + + L"Hateful %s", + L"Underwear-staining %s", + L"Civilian-devouring %s", + L"Unflinching %s", + + // 40 + L"Expect No Mercy From Our %s", + L"Very Mad %s", + L"Ultimate %s", + L"Furious %s", + + L"Its best to Avoid Our %s", + L"Fear the %s", + L"All Hail the %s!", + L"Protect the %s", + + L"Beware the %s", + L"Crush the %s", + L"Backstabbing %s", + L"Vicious %s", + + L"Sadistic %s", + L"Burning %s", + L"Wrathful %s", + L"Invincible %s", + + L"Guilt-ridden %s", + L"Rotting %s", + L"Sanitized %s", + L"Self-doubting %s", + + // 60 + L"Ancient %s", + L"Very Hungry %s", + L"Sleepy %s", + L"Demotivated %s", + + L"Cruel %s", + L"Annoying %s", + L"Huffy %s", + L"Bisexual %s", + + L"Screaming %s", + L"Hideous %s", + L"Praying %s", + L"Stalking %s", + + L"Cold-blooded %s", + L"Fearsome %s", + L"Trippin' %s", + L"Damned %s", + + L"Vegetarian %s", + L"Grotesque %s", + L"Backward %s", + L"Superior %s", + + // 80 + L"Inferior %s", + L"Okay-ish %s", + L"Porn-consuming %s", + L"Poisoned %s", + + L"Spontaneous %s", + L"Lethargic %s", + L"Tickled %s", + L"The %s is a dupe!", + + L"%s on Steroids", + L"%s vs. Predator", + L"A %s with a twist", + L"Self-Pleasuring %s", + + L"Man-%s hybrid", + L"Inane %s", + L"Overpriced %s", + L"Midnight %s", + + L"Capitalist %s", + L"Communist %s", + L"Intense %s", + L"Steadfast %s", + + // 100 + L"Narcoleptic %s", + L"Bleached %s", + L"Nail-biting %s", + L"Smite the %s", + + L"Bloodthirsty %s", + L"Obese %s", + L"Scheming %s", + L"Tree-Humping %s", + + L"Cheaply made %s", + L"Sanctified %s", + L"Falsely accused %s", + L"%s to the rescue", + + L"Crab-people vs. %s", + L"%s in Space!!!", + L"%s vs. Godzilla", + L"Untamed %s", + + L"Durable %s", + L"Brazen %s", + L"Greedy %s", + L"Midnight %s", + + // 120 + L"Confused %s", + L"Irritated %s", + L"Loathsome %s", + L"Manic %s", + + L"Ancient %s", + L"Sneaking %s", + L"%s of Doom", + L"%s's revenge", + + L"A %s on the run", + L"A %s out of time", + L"One with %s", + L"%s from hell", + + L"Super-%s", + L"Ultra-%s", + L"Mega-%s", + L"Giga-%s", + + L"A quantum of %s", + L"Her Majesties' %s", + L"Shivering %s", + L"Fearful %s", + + // 140 +}; + +// TODO.Translate +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Dragon", + L"Mountain Lion", + L"Copperhead Snake", + L"Jack Russell Terrier", + + L"Arch-Nemesis", + L"Basilisk", + L"Blade", + L"Shield", + + L"Hammer", + L"Spectre", + L"Congress", + L"Oilfield", + + L"Boyfriend", + L"Girlfriend", + L"Husband", + L"Stepmother", + + L"Sand Lizard", + L"Bankers", + L"Anaconda", + L"Kitten", + + // 20 + L"Congress", + L"Senate", + L"Cleric", + L"Badass", + + L"Bayonet", + L"Wolverine", + L"Soldier", + L"Tree Frog", + + L"Weasel", + L"Shrubbery", + L"Tar pit", + L"Sunset", + + L"Hurricane", + L"Ocelot", + L"Tiger", + L"Defense Industry", + + L"Snow Leopard", + L"Megademon", + L"Dragonfly", + L"Rottweiler", + + // 40 + L"Cousin", + L"Grandma", + L"Newborn", + L"Cultist", + + L"Disinfectant", + L"Democracy", + L"Warlord", + L"Doomsday Device", + + L"Minister", + L"Beaver", + L"Assassin", + L"Rain of Burning Death", + + L"Prophet", + L"Interloper", + L"Crusader", + L"Administration", + + L"Supernova", + L"Liberty", + L"Explosion", + L"Bird of Prey", + + // 60 + L"Manticore", + L"Frost Giant", + L"Celebrity", + L"Middle Class", + + L"Loudmouth", + L"Scape Goat", + L"Warhound", + L"Vengeance", + + L"Fortress", + L"Mime", + L"Conductor", + L"Job-Creator", + + L"Frenchman", + L"Superglue", + L"Newt", + L"Incompetency", + + L"Steppenwolf", + L"Iron Anvil", + L"Grand Lord", + L"Supreme Ruler", + + // 80 + L"Dictator", + L"Old Man Death", + L"Shredder", + L"Vacuum Cleaner", + + L"Hamster", + L"Hypno-Toad", + L"Discjockey", + L"Undertaker", + + L"Gorgon", + L"Child", + L"Mob", + L"Raptor", + + L"Goddess", + L"Gender Inequality", + L"Mole", + L"Baby Jesus", + + L"Gunship", + L"Citizen", + L"Lover", + L"Mutual Fund", + + // 100 + L"Uniform", + L"Saber", + L"Snow Leopard", + L"Panther", + + L"Centaur", + L"Scorpion", + L"Serpent", + L"Black Widow", + + L"Tarantula", + L"Vulture", + L"Heretic", + L"Zombie", + + L"Role-Model", + L"Hellhound", + L"Mongoose", + L"Nurse", + + L"Nun", + L"Space Ghost", + L"Viper", + L"Mamba", + + // 120 + L"Sinner", + L"Saint", + L"Comet", + L"Meteor", + + L"Can of worms", + L"Fish oil pills", + L"Breastmilk", + L"Tentacle", + + L"Insanity", + L"Madness", + L"Cough reflex", + L"Colon", + + L"King", + L"Queen", + L"Bishop", + L"Peasant", + + L"Tower", + L"Mansion", + L"Warhorse", + L"Referee", + + // 140 +}; + +// TODO.Translate +STR16 szMercCompareWebSite[] = +{ + // main page + L"Mercs Love or Dislike You", + L"Your #1 teambuilding experts on the web", + + L"About us", + L"Analyse a team", + L"Pairwise comparison", + L"Customer voices", + + L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"Your team struggles with itself.", + L"Your employees waste time working against each other.", + L"Your workforce experiences a high fluctuation rate.", + L"You constantly receive low marks on workplace satisfaction ratings.", + L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"A few citations from our satisfied customers:", + L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G., Novelist-", + L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C., Corrective law enforcement-", + L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W., Snake charmer-", + L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L., SPK-", + L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C., NASA-", + L"I fully recommend this site!", + L"-Kasper H., H&C logistic Inc-", + L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke, Kerberus Inc-", + + // analyze + L"Choose your employee", + L"Choose your squad", + + // error messages + L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +// TODO.Translate +STR16 szMercCompareEventText[]= +{ + L"%s shot me!", + L"%s is scheming behind my back", + L"%s interfered in my business", + L"%s is friends with my enemy", + + L"%s got a contract before I did", + L"%s ordered a shameful retreat", + L"%s massacred the innocent", + L"%s slows us down", + + L"%s doesn't share food", + L"%s jeopardizes the mission", + L"%s is a drug addict", + L"%s is thieving scum", + + L"%s is an incompetent commander", + L"%s is overpaid", + L"%s gets all the good stuff", + L"%s mounted a gun on me", + + L"%s treated my wounds", + L"Had a good drink with %s", + L"%s is fun to get wasted with", + L"%s is annoying when drunk", + + L"%s is an idiot when drunk", + L"%s opposed our view in an argument", + L"%s supported our position", + L"%s agrees to our reasoning", + + L"%s's beliefs are contrary to ours", + L"%s knows how to calm down people", + L"%s is insensitive", + L"%s puts people in their places", + + L"%s is way too impulsive", + L"%s is disease-ridden", + L"%s treated my diseases", + L"%s does not hold back in combat", + + L"%s enjoys combat a bit too much", + L"%s is a good teacher", + L"%s led us to victory", + L"%s saved my life", + + L"%s stole my kill", + L"%s and me fought well together", + L"%s made the enemy surrender", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"World Health Organization", + L"Bringing health to life", + + // links to other pages + L"About WHO", + L"Disease in Arulco", + L"About diseases", + + // text on the main page + L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", + L"You currently do not have access to WHO data on the arulcan plague.", + L"You have acquired detailed maps on the status of the disease.", + L"Subscribe to map updates", + L"Unsubscribe map updates", + + // helpful tips page + L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +// TODO.Translate +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus", + L"Erfahrung in Sicherheit", + + // links to other pages + L"Was ist Kerberus?", + L"Team Verträge", + L"Individuelle Verträge", + + // text on the main page + L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", + L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", + L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"You can select the type and number of personnel you want to hire here:", + L"Initial deployment", + L"Regular personnel", + L"Veteran personnel", + + L"%d available, %d$ each", + L"Hire: %d", + L"Cost: %d$", + + L"Select the initial operational area:", + L"Total Cost: %d$", + L"ETA: %02d:%02d", + L"Close Contract", + + L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus reinforcements have arrived in %s.", + L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +// TODO.Translate +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"Move", // TODO.Translate + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +// TODO.Translate +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"Roles", + L"Fortification", + L"Tracker", + L"CTH mode", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +// TODO.Translate +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"Display enemy role symbols", + L"Display planned fortifications", + L"Display enemy tracks", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + +// TODO.Translate +STR16 szDynamicDialogueText[40][17] = +{ + // OPINIONEVENT_FRIENDLYFIRE + L"What the hell! $CAUSE$ attacked me!", + L"", + L"", + L"What? Me? No way, I'm engaging at the enemy!", + L"Oops.", + L"", + L"", + L"$CAUSE$ has attacked $VICTIM$. What do you do?", + L"Nah, that must have been enemy fire!", + L"Yeah, I saw it too!", + L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", + L"I saw it, it was clearly enemy fire!", + L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", + L"This is war! People get shot all the time! Speaking of... shoot more people, people!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"I would if you weren't such a wussy!", + L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"I'm doing my job. Get back to yours!", + L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"Patched together again? Good, now move!", + L"You're welcome.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'Even'? What does that mean?", + L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Nice one, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"Is there a difference?", + L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + +// TODO.Translate +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"What?!", + L"No!", + L"That is false!", + L"That is not true!", + + L"Lies, lies, lies. Nothing but lies!", + L"Liar!", + L"Traitor!", + L"You watch your mouth!", + + L"This is none of your business.", + L"Who ever invited you?", + L"Nobody asked for your opinion, $INTERJECTOR$.", + L"You stay away from me.", + + L"Why are you all against me?", + L"Why are you against me, $INTERJECTOR$?", + L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"Not listening...!", + + L"I hate this psycho circus.", + L"I hate this freak show.", + L"Back off!", + L"Lies, lies, lies...", + + L"No way!", + L"So not true.", + L"That is so not true.", + L"I know what I saw.", + + L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"Nope.", + L"You are mistaken.", +}; + +// TODO.Translate +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"What $INTERJECTOR_GENDER$ said.", + + L"Thanks, $INTERJECTOR$!", + L"Once again I'm right!", + L"See, $CAUSE$? I am right!", + L"Once again $SPEAKER$ is right!", + + L"Aye.", + L"Yup.", + L"Yep", + L"Yes.", + + L"Indeed.", + L"True.", + L"Ha!", + L"See?", + + L"Exactly!", +}; + +// TODO.Translate +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"That's right!", + L"Indeed!", + L"Exactly that.", + L"$CAUSE$ does that all the time.", + + L"$VICTIM$ is right!", + L"I was gonna' point that out, too!", + L"What $VICTIM$ said.", + L"That's our $CAUSE$!", + + L"Yeah!", + L"Now THIS is going to be interesting...", + L"You tell'em, $VICTIM$!", + L"Agreeing with $VICTIM$ here...", + + L"Classic $CAUSE$.", + L"I couldn't have said it better myself.", + L"That is exactly what happened.", + L"Agreed!", + + L"Yup.", + L"True.", + L"Bingo.", +}; + +// TODO.Translate +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"Now wait a minute...", + L"Wait a sec, that's not what right...", + L"What? No.", + L"That is not what happened.", + + L"Hey, stop blaming $CAUSE$!", + L"Oh shut up, $VICTIM$!", + L"Nonono, you got that wrong.", + L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"And I suppose you never did, $VICTIM$?", + L"Hmmmm... no.", + L"Great. Let's have an argument. It's not like we have other things to do...", + L"You are mistaken!", + + L"You are wrong!", + L"Me and $CAUSE$ would never do such a thing.", + L"Nah, can't be.", + L"I don't think so.", + + L"Why bring that up now?", + L"Really, $VICTIM$? Is this necessary?", +}; + +// TODO.Translate +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Keep silent", + L"Support $VICTIM$", + L"Support $CAUSE$", + L"Appeal to reason", + L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"er", + L"sie", + L"seine", + L"ihre", +}; + +// TODO.Translate +STR16 szDiseaseText[] = +{ + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% wisdom stat\n", + L" %s%d%% effective level\n", + + L" %s%d%% APs\n", + L" %s%d maximum breath\n", + L" %s%d%% strength to carry items\n", + L" %s%2.2f life regeneration/hour\n", + L" %s%d need for sleep\n", + L" %s%d%% water consumption\n", + L" %s%d%% food consumption\n", + + L"%s was diagnosed with %s!", + L"%s is cured of %s!", + + L"Diagnosis", + L"Treatment", + L"Burial", + L"Cancel", + + L"\n\n%s (undiagnosed) - %d / %d\n", + + L"High amount of distress can cause a personality split\n", + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +// TODO.Translate +STR16 szSpyText[] = +{ + L"Hide", + L"Get Intel", +}; + +// TODO.Translate +STR16 szFoodText[] = +{ + L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|F|o|o|d: %d%%\n", + + L"max morale altered by %s%d\n", + L" %s%d need for sleep\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% assignment efficiency\n", + L" %s%d%% chance to lose stats\n", +}; + +// TODO.Translate +STR16 szIMPGearWebSiteText[] = +{ + // IMP Gear Entrance + L"How should gear be selected?", + L"Old method: Random gear according to your choices", + L"New method: Free selection of gear", + L"Old method", + L"New method", + + // IMP Gear Entrance + L"I.M.P. Equipment", + L"Additional Cost: %d$ (%d$ prepaid)", +}; + +// TODO.Translate +STR16 szIMPGearPocketText[] = +{ + L"Select helmet", + L"Select vest", + L"Select pants", + L"Select face gear", + L"Select face gear", + + L"Select main gun", + L"Select sidearm", + + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", + + L"Select launcher / rifle", + L"Select melee weapon", + + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +// TODO.Translate +STR16 szMilitiaStrategicMovementText[] = +{ + L"We cannot relay orders to this sector, militia command not possible.", + L"Unassigned", + L"Group No.", + L"Next", + + L"ETA", + L"Group %d (new)", + L"Group %d", + L"Final", + + L"Volunteers: %d (+%5.3f)", +}; + +// TODO.Translate +STR16 szEnemyHeliText[] = +{ + L"Enemy helicopter shot down in %s!", + L"We... uhm... currently don't control that site, commander...", + L"The SAM does not need maintenance at the moment.", + L"We've already ordered the repair, this will take time.", + + L"We do not have enough resources to do that.", + L"Repair SAM site? This will cost %d$ and take %d hours.", + L"Enemy helicopter hit in %s.", + L"%s fires %s at enemy helicopter in %s.", + + L"SAM in %s fires at enemy helicopter in %s.", +}; + +// TODO.Translate +STR16 szFortificationText[] = +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +// TODO.Translate +STR16 szMilitiaWebSite[] = +{ + // main page + L"Militia", + L"Militia Forces Overview", +}; + +// TODO.Translate +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Took part in Operation %s", + L"Recruited on Day %d, %d:%02d in %s", + L"Promoted on Day %d, %d:%02d", + L"KIA, Operation %s", + + L"Lightly wounded during Operation %s", + L"Heavily wounded during Operation %s", + L"Critically wounded during Operation %s", + L"Valiantly fought in Operation %s", + + L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", +}; + +// TODO.Translate +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +// TODO.Translate +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", // TODO:Translate +}; + +// TODO.Translate +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +// TODO.Translate +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +// TODO.Translate +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"Alle Sektoren", +}; + +// TODO.Translate +STR16 szNonProfileMerchantText[] = +{ + L"Merchant is hostile and does not want to trade.", + L"Merchant is in no state to do business.", + L"Merchant won't trade during combat.", + L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = +{ + L"Normal", + L"Regen", + L"Gewitter", + L"Sandsturm", + L"Schnee", +}; + +STR16 szSnakeText[] = +{ + L"%s weicht Schlangenangriff aus!", + L"%s wurde von Schlange angegriffen!", +}; + +// TODO.Translate +STR16 szSMilitiaResourceText[] = +{ + L"Converted %s into resources", + L"Guns: ", + L"Armour: ", + L"Misc: ", + + L"There are no volunteers left for militia!", + L"Not enough resources to train militia!", +}; + +// TODO.Translate +STR16 szInteractiveActionText[] = +{ + L"%s starts hacking.", + L"%s accesses the computer, but finds nothing of interest.", + L"%s is not skilled enough to hack the computer.", + L"%s reads the file, but learns nothing new.", + + L"%s can't make sense out of this.", + L"%s couldn't use the watertap.", + L"%s has bought a %s.", + L"%s doesn't have enough money. That's just embarassing.", + + L"%s drank from water tap", + L"This machine doesn't seem to be working.", +}; + +// TODO.Translate +STR16 szLaptopStatText[] = +{ + L"threaten effectiveness %d\n", + L"leadership %d\n", + L"approach modifier %.2f\n", + L"background modifier %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Good Guy", + L"%s eschews excessive violence and will refuse to attack non-hostiles.", + + L"Friendly approach", + L"Direct approach", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +// TODO.Translate +STR16 szGearTemplateText[] = // TODO.Translate +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate +}; + +// TODO.Translate +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +// TODO.Translate +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +// TODO.Translate +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +// TODO.Translate +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +// TODO.Translate +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +// TODO.Translate +STR16 szFactoryText[] = +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +// TODO.Translate +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +// TODO.Translate +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Space Available:", + L"MOLLE Space Required:", + L"MOLLE Small Slot Count:", + L"MOLLE Medium Slot Count:", + L"MOLLE Pouch Size: Small", + L"MOLLE Pouch Size: Medium", + L"MOLLE Pouch Size: Medium (Hydration)", + L"Thigh Rig", + L"Vest", + L"Combat Pack", + L"Backpack", // 10 + L"MOLLE Pouch", + L"Compatible backpacks:", + L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = // TODO.Translate +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = // TODO.Translate +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = // TODO.Translate +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = // TODO.Translate +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia\nthat appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = // TODO: Translate +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //GERMAN diff --git a/i18n/_ItalianText.cpp b/i18n/_ItalianText.cpp index a5e2b340..b5e654fd 100644 --- a/i18n/_ItalianText.cpp +++ b/i18n/_ItalianText.cpp @@ -1,12238 +1,12318 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("ITALIAN") - - #if defined( ITALIAN ) - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_ItalianText_public_symbol(void){;} - -#ifdef ITALIAN - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Locations", // 0 - L"Characters", - L"Items", - L"Quests", - L"Menu 5", - L"Menu 6", //5 - L"Menu 7", - L"Menu 8", - L"Menu 9", - L"Menu 10", - L"Menu 11", //10 - L"Menu 12", - L"Menu 13", - L"Menu 14", - L"Menu 15", - L"Menu 15", // 15 - - //Briefing Room - L"Enter", // TODO.Translate -}; - -STR16 pOtherButtonsText[] = -{ - L"Briefing", - L"Accept", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Briefing", - L"Accept missions", -}; - - -STR16 pLocationPageText[] = -{ - L"Prev page", - L"Photo", - L"Next page", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"Main page", - L">>", - L"Type: ", - L"Empty data", - L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", - L"Briefing Room. Please click the 'Enter' button.", // TODO.Translate -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Unknown",// 0 - unknown - L"City", //1 - cities - L"SAM Site", //2 - SAM Site - L"Other location", //3 - other location - L"Mines", //4 - mines - L"Military complex", //5 - military complex - L"Laboratory complex", //6 - laboratory complex - L"Factory complex", //7 - factory complex - L"Hospital", //8 - hospital - L"Prison", //9 - prison - L"Airport", //10 - air port -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Show all", - L"Show AIM", - L"Show MERC", - L"Show RPC", - L"Show NPC", - L"Show Pojazd", - L"Show IMP", - L"Show EPC", - L"Filter", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"All", - L"AIM", - L"MERC", - L"RPC", - L"NPC", - L"Veh.", - L"IMP", - L"EPC", - L"Filter", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Show all", - L"Show cities", - L"Show SAM Sites", - L"Show other location", - L"Show mines", - L"Show military complex", - L"Show laboratory complex", - L"Show Factory complex", - L"Show hospital", - L"Show prison", - L"Show air port", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"All", - L"City", - L"SAM", - L"Other", - L"Mine", - L"Mil.", - L"Lab.", - L"Fact.", - L"Hosp.", - L"Prison", - L"Air.", -}; - -// TODO.Translate -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"All",//0 - L"City", - L"SAM", - L"Mine", - L"Airport", - L"Wilder.", - L"Underg.", - L"Facil.", - L"Other", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//facility index + 1 - L"Show Cities", - L"Show SAM sites", - L"Show mines", - L"Show airports", - L"Show sectors in wilderness", - L"Show underground sectors", - L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", - L"Show Other sectors", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; -// TODO.Translate -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"All",//0 - L"A.I.M.", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"Other",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//Other index + 1 - L"Show A.I.M. members", - L"Show M.E.R.C staff", - L"Show Rebels", - L"Show Non-hirable Characters", - L"Show Player created Characters", - L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", -}; -// TODO.Translate -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Vehic.", - L"EPC", - L"",//reserved. Insert new Other filters above! -}; -// TODO.Translate -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"All",//0 - L"Gun", - L"Ammo", - L"Armor", - L"LBE", - L"Attach.", - L"Misc",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", -}; -// TODO.Translate -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Helmet", - L"Vest", - L"Pant", - L"Plate", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Tight", - L"Vest", - L"Combat", - L"Backp.", - L"Pocket", - L"Other", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Optic", - L"Side", - L"Muzzle", - L"Extern.", - L"Intern.", - L"Other", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"Blade", - L"T.Knife", - L"Punch", - L"Grenade", - L"Bomb", - L"Medikit", - L"Kit", - L"Face", - L"Other", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; -// TODO.Translate -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"All", - L"Active", - L"Compl.", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Active Quests", - L"Show Completed Quests", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"All", //0 - L"Gun", - L"Ammo", - L"LBE", - L"Misc", - - L"All", //5 - L"Gun", - L"Ammo", - L"LBE Gear", - L"Misc", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"Heavy", - L"Pistol", - L"M. Pist.", - L"SMG", - L"Rifle", - L"S. Rifle", - L"A. Rifle", - L"MG", - L"Shotgun", - - // Ammo - L"Pistol", - L"M. Pist.", //10 - L"SMG", - L"Rifle", - L"S. Rifle", - L"A. Rifle", - L"MG", - L"Shotgun", - - // Used - L"Guns", - L"Armor", - L"LBE Gear", - L"Misc", //20 - - // Armour - L"Helmets", - L"Vests", - L"Leggings", - L"Plates", - - // Misc - L"Blades", - L"Th. Knife", - L"Melee", - L"Grenades", - L"Bombs", - L"Med.", //30 - L"Kits", - L"Face", - L"LBE", - L"Misc.", //34 -}; - -// TODO.Translate -STR16 QuestDescText[] = -{ - L"Deliver Letter", - L"Food Route", - L"Terrorists", - L"Kingpin Chalice", - L"Kingpin Money", - L"Runaway Joey", - L"Rescue Maria", - L"Chitzena Chalice", - L"Held in Alma", - L"Interogation", - - L"Hillbilly Problem", //10 - L"Find Scientist", - L"Deliver Video Camera", - L"Blood Cats", - L"Find Hermit", - L"Creatures", - L"Find Chopper Pilot", - L"Escort SkyRider", - L"Free Dynamo", - L"Escort Tourists", - - - L"Doreen", //20 - L"Leather Shop Dream", - L"Escort Shank", - L"No 23 Yet", - L"No 24 Yet", - L"Kill Deidranna", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", -}; - -// TODO.Translate -STR16 FactDescText[] = -{ - L"Omerta Liberated", - L"Drassen Liberated", - L"Sanmona Liberated", - L"Cambria Liberated", - L"Alma Liberated", - L"Grumm Liberated", - L"Tixa Liberated", - L"Chitzena Liberated", - L"Estoni Liberated", - L"Balime Liberated", - - L"Orta Liberated", //10 - L"Meduna Liberated", - L"Pacos approched", - L"Fatima Read note", - L"Fatima Walked away from player", - L"Dimitri (#60) is dead", - L"Fatima responded to Dimitri's supprise", - L"Carlo's exclaimed 'no one moves'", - L"Fatima described note", - L"Fatima arrives at final dest", - - L"Dimitri said Fatima has proof", //20 - L"Miguel overheard conversation", - L"Miguel asked for letter", - L"Miguel read note", - L"Ira comment on Miguel reading note", - L"Rebels are enemies", - L"Fatima spoken to before given note", - L"Start Drassen quest", - L"Miguel offered Ira", - L"Pacos hurt/Killed", - - L"Pacos is in A10", //30 - L"Current Sector is safe", - L"Bobby R Shpmnt in transit", - L"Bobby R Shpmnt in Drassen", - L"33 is TRUE and it arrived within 2 hours", - L"33 is TRUE 34 is false more then 2 hours", - L"Player has realized part of shipment is missing", - L"36 is TRUE and Pablo was injured by player", - L"Pablo admitted theft", - L"Pablo returned goods, set 37 false", - - L"Miguel will join team", //40 - L"Gave some cash to Pablo", - L"Skyrider is currently under escort", - L"Skyrider is close to his chopper in Drassen", - L"Skyrider explained deal", - L"Player has clicked on Heli in Mapscreen at least once", - L"NPC is owed money", - L"Npc is wounded", - L"Npc was wounded by Player", - L"Father J.Walker was told of food shortage", - - L"Ira is not in sector", //50 - L"Ira is doing the talking", - L"Food quest over", - L"Pablo stole something from last shpmnt", - L"Last shipment crashed", - L"Last shipment went to wrong airport", - L"24 hours elapsed since notified that shpment went to wrong airport", - L"Lost package arrived with damaged goods. 56 to False", - L"Lost package is lost permanently. Turn 56 False", - L"Next package can (random) be lost", - - L"Next package can(random) be delayed", //60 - L"Package is medium sized", - L"Package is largesized", - L"Doreen has conscience", - L"Player Spoke to Gordon", - L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo asked for first aid", - L"Dynamo can be recruited", - L"Npc is bleeding", - L"Shank wnts to join", - - L"NPC is bleeding", //70 - L"Player Team has head & Carmen in San Mona", - L"Player Team has head & Carmen in Cambria", - L"Player Team has head & Carmen in Drassen", - L"Father is drunk", - L"Player has wounded mercs within 8 tiles of NPC", - L"1 & only 1 merc wounded within 8 tiles of NPC", - L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda is in the store ", - L"Brenda is Dead", - - L"Brenda is at home", //80 - L"NPC is an enemy", - L"Speaker Strength >= 84 and < 3 males present", - L"Speaker Strength >= 84 and at least 3 males present", - L"Hans lets ou see Tony", - L"Hans is standing on 13523", - L"Tony isnt available Today", - L"Female is speaking to NPC", - L"Player has enjoyed the Brothel", - L"Carla is available", - - L"Cindy is available", //90 - L"Bambi is available", - L"No girls is available", - L"Player waited for girls", - L"Player paid right amount of money", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping expectingh visit from player", - L"Darren expecting money from player", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Delete", - L"Delete item (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"north", - L"northeast", - L"east", - L"southeast", - L"south", - L"southwest", - L"west", - L"northwest" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Toggle viewing of players", //0 - L"Toggle viewing of enemies", - L"Toggle viewing of creatures", - L"Toggle viewing of rebels", - L"Toggle viewing of civilians", - - L"Player", - L"Enemy", - L"Creature", - L"Rebels", - L"Civilian", - - L"DETAILED PLACEMENT", //10 - L"General information mode", - L"Physical appearance mode", - L"Attributes mode", - L"Inventory mode", - L"Profile ID mode", - L"Schedule mode", - L"Schedule mode", - L"DELETE", - L"Delete currently selected merc (|D|e|l)", - L"NEXT", //20 - L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", - L"Toggle priority existance", - L"Toggle whether or not placement\nhas access to all doors", - - //Orders - L"STATIONARY", - L"ON GUARD", - L"ON CALL", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", //30 - L"RND PT PATROL", - - //Attitudes - L"DEFENSIVE", - L"BRAVE SOLO", - L"BRAVE AID", - L"AGGRESSIVE", - L"CUNNING SOLO", - L"CUNNING AID", - - L"Set merc to face %s", - - L"Find", - L"BAD", //40 - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"BAD", - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"Previous color set", //50 - L"Next color set", - - L"Previous body type", - L"Next body type", - - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - - L"No action", - L"No action", - L"No action", //60 - L"No action", - - L"Clear Schedule", - - L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"ROOFS", //0 - L"WALLS", - L"ROOM INFO", - - L"Place walls using selection method", - L"Place doors using selection method", - L"Place roofs using selection method", - L"Place windows using selection method", - L"Place damaged walls using selection method.", - L"Place furniture using selection method", - L"Place wall decals using selection method", - L"Place floors using selection method", //10 - L"Place generic furniture using selection method", - L"Place walls using smart method", - L"Place doors using smart method", - L"Place windows using smart method", - L"Place damaged walls using smart method", - L"Lock or trap existing doors", - - L"Add a new room", - L"Edit cave walls.", - L"Remove an area from existing building.", - L"Remove a building", //20 - L"Add/replace building's roof with new flat roof.", - L"Copy a building", - L"Move a building", - L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", - L"Erase room numbers", - - L"Toggle |Erase mode", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Cycle brush size (|A/|Z)", - L"Roofs (|H)", - L"|Walls", //30 - L"Room Info (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Wpns", //0 - L"Ammo", - L"Armour", - L"LBE", - L"Exp", - L"E1", - L"E2", - L"E3", - L"Triggers", - L"Keys", - L"Rnd", //10 - L"Previous (|,)", // previous page - L"Next (|.)", // next page -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Add ambient light source", //0 - L"Toggle fake ambient lights.", - L"Add exit grids (r-clk to query existing).", - L"Cycle brush size (|A/|Z)", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", - L"Specify north point for validation purposes.", - L"Specify west point for validation purposes.", - L"Specify east point for validation purposes.", - L"Specify south point for validation purposes.", - L"Specify center point for validation purposes.", //10 - L"Specify isolated point for validation purposes.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"New outdoor level", //0 - L"New basement", - L"New cave level", - L"Save map (|C|t|r|l+|S)", - L"Load map (|C|t|r|l+|L)", - L"Select tileset", - L"Leave Editor mode", - L"Exit game (|A|l|t+|X)", - L"Create radar map", - L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", - L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Draw |Ground textures", //0 - L"Set map ground textures", - L"Place banks and |Cliffs", - L"Draw roads (|P)", - L"Draw |Debris", - L"Place |Trees & bushes", - L"Place |Rocks", - L"Place barrels & |Other junk", - L"Fill area", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", //10 - L"Cycle brush size (|A/|Z)", - L"Raise brush density (|])", - L"Lower brush density (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Terrain", //0 - L"Buildings", - L"Items", - L"Mercs", - L"Map Info", - L"Options", - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text - L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text - L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text - L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text - L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"North Entry Point", //0 - L"West Entry Point", - L"East Entry Point", - L"South Entry Point", - L"Center Entry Point", - L"Isolated Entry Point", - - L"Prime", - L"Night", - L"24Hour", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Panic Trigger1", //0 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", - - L"Pressure Action", - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"No Lock ID", //0 - L"Explosion Trap", - L"Electric Trap", - L"Siren Trap", - L"Silent Alarm", - L"Super Electric Trap", //5 - L"Brothel Siren Trap", - L"Trap Level %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 - L"No map currently loaded.", - L"File: %S, Current Tileset: %s", - L"Enlarge map on loading", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"TOGGLE", //0 - L"VIEWS", - L"SELECTION METHOD", - L"SMART METHOD", - L"BUILDING METHOD", - L"Room#", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Editing lock attributes at map index %d.", - L"Lock ID", - L"Trap Type", - L"Trap Level", - L"Locked", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Pressure Action", //0 - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", - - L"Panic Trigger1", //5 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Status Info Line 1", - L"Status Info Line 2", - L"Status Info Line 3", - L"Status Info Line 4", - L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Prime", - L"Night", - L"24Hrs", //5 - - L"Radius", - - L"Underground", - L"Light Level", - - L"Outdoors", - L"Basement", //10 - L"Caves", - - L"Restricted", - L"Scroll ID", - - L"Destination", - L"Sector", //15 - L"Destination", - L"Bsmt. Level", - L"Dest.", - L"GridNo", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"No action", - L"Lock door", - L"Unlock door", - L"Open door", - L"Close door", - L"Move to gridno", - L"Leave sector", - L"Enter sector", - L"Stay in sector", - L"Sleep", - L"Ignore this!" -}; - -STR16 zDiffNames[5] = -{ - L"Wimp", - L"Easy", - L"Average", - L"Tough", - L"Steroid Users Only" -}; - -STR16 EditMercStat[12] = -{ - L"Max Health", - L"Cur Health", - L"Strength", - L"Agility", - L"Dexterity", - L"Charisma", - L"Wisdom", - L"Marksmanship", - L"Explosives", - L"Medical", - L"Scientific", - L"Exp Level", -}; - - -STR16 EditMercOrders[8] = -{ - L"Stationary", - L"On Guard", - L"Close Patrol", - L"Far Patrol", - L"Point Patrol", - L"On Call", - L"Seek Enemy", - L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Defensive", - L"Brave Loner", - L"Brave Buddy", - L"Cunning Loner", - L"Cunning Buddy", - L"Aggressive", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Merc Name:", //0 - L"Orders:", - L"Combat Attitude:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Merc Colors", //0 - L"Done", - - L"Previous merc standing orders", - L"Next merc standing orders", - - L"Previous merc combat attitude", - L"Next merc combat attitude", //5 - - L"Decrease merc stat", - L"Increase merc stat", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Random", //0 - L"Reg Male", - L"Big Male", - L"Stocky Male", - L"Reg Female", - L"NE Tank", //5 - L"NW Tank", - L"Fat Civilian", - L"M Civilian", - L"Miniskirt", - L"F Civilian", //10 - L"Kid w/ Hat", - L"Humvee", - L"Eldorado", - L"Icecream Truck", - L"Jeep", //15 - L"Kid Civilian", - L"Domestic Cow", - L"Cripple", - L"Unarmed Robot", - L"Larvae", //20 - L"Infant", - L"Yng F Monster", - L"Yng M Monster", - L"Adt F Monster", - L"Adt M Monster", //25 - L"Queen Monster", - L"Bloodcat", - L"Humvee", // TODO.Translate -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=ORDERS=-- ", //0 - L"--=ATTITUDE=--", - - L"RELATIVE", - L"ATTRIBUTES", - - L"RELATIVE", - L"EQUIPMENT", - - L"RELATIVE", - L"ATTRIBUTES", - - L"Army", - L"Admin", - L"Elite", //10 - - L"Exp. Level", - L"Life", - L"LifeMax", - L"Marksmanship", - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Leadership", - L"Explosives", //20 - L"Medical", - L"Mechanical", - L"Morale", - - L"Hair color:", - L"Skin color:", - L"Vest color:", - L"Pant color:", - - L"RANDOM", - L"RANDOM", - L"RANDOM", //30 - L"RANDOM", - - L"By specifying a profile index, all of the information will be extracted from the profile ", - L"and override any values that you have edited. It will also disable the editing features ", - L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", - L"extract the number you have typed. A blank field will clear the profile. The current ", - L"number of profiles range from 0 to ", - - L"Current Profile: n/a ", - L"Current Profile: %s", - - L"STATIONARY", - L"ON CALL", //40 - L"ON GUARD", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", - L"RND PT PATROL", - - L"Action", - L"Time", - L"V", - L"GridNo 1", //50 - L"GridNo 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"lock", - L"unlock", - L"open", - L"close", - - L"Click on the gridno adjacent to the door that you wish to %s.", //60 - L"Click on the gridno where you wish to move after you %s the door.", - L"Click on the gridno where you wish to move to.", - L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", - L" Hit ESC to abort entering this line in the schedule.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"Slot #%d", - L"Patrol orders with no waypoints", - L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"No action", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Placement not copied because no placement selected.", - L"Placement copied.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Placement not pasted as no placement is saved in buffer.", - L"Placement pasted.", - L"Placement not pasted as the maximum number of placements for this team has been reached.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Exit editor?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Are you sure you wish to remove all lights?", //0 - L"Are you sure you wish to reverse the schedules?", - L"Are you sure you wish to clear all of the schedules?", - - L"Clicked Placement Enabled", - L"Clicked Placement Disabled", - - L"Draw High Ground Enabled", //5 - L"Draw High Ground Disabled", - - L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"Random Placement Enabled", - L"Random Placement Disabled", - - L"Removing Treetops", //10 - L"Showing Treetops", - - L"World Raise Reset", - - L"World Raise Set Old", - L"World Raise Set", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"Creating radar map for %S", //0 - - L"Delete current map and start a new basement level?", - L"Delete current map and start a new cave level?", - L"Delete current map and start a new outdoor level?", - - L" Wipe out ground textures? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 - L"Toggle fake editor lighting ON/OFF", - - L"INSERT", - L"Toggle fill mode ON/OFF", - - L"BKSPC", - L"Undo last change", - - L"DEL", - L"Quick erase object under mouse cursor", - - L"ESC", - L"Exit editor", - - L"PGUP/PGDN", //10 - L"Change object to be pasted", - - L"F1", - L"This help screen", - - L"F10", - L"Save current map", - - L"F11", - L"Load map as current", - - L"+/-", - L"Change shadow darkness by .01", - - L"SHFT +/-", //20 - L"Change shadow darkness by .05", - - L"0 - 9", - L"Change map/tileset filename", - - L"b", - L"Change brush size", - - L"d", - L"Draw debris", - - L"o", - L"Draw obstacle", - - L"r", //30 - L"Draw rocks", - - L"t", - L"Toggle trees display ON/OFF", - - L"g", - L"Draw ground textures", - - L"w", - L"Draw building walls", - - L"e", - L"Toggle erase mode ON/OFF", - - L"h", //40 - L"Toggle roofs ON/OFF", -}; - -STR16 pAutoLoadMapText[] = -{ - L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -STR16 pShowHighGroundText[] = -{ - L"Showing High Ground Markers", - L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/* -CHAR16 gszActionItemDesc[ 34 ][ 30 ] = // NUM_ACTIONITEMS = 34 -{ - L"Klaxon Mine", - L"Flare Mine", - L"Teargas Explosion", - L"Stun Explosion", - L"Smoke Explosion", - L"Mustard Gas", - L"Land Mine", - L"Open Door", - L"Close Door", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Small Explosion", - L"Medium Explosion", - L"Large Explosion", - L"Toggle Door", - L"Toggle Action1s", - L"Toggle Action2s", - L"Toggle Action3s", - L"Toggle Action4s", - L"Enter Brothel", - L"Exit Brothel", - L"Kingpin Alarm", - L"Sex with Prostitute", - L"Reveal Room", - L"Local Alarm", - L"Global Alarm", - L"Klaxon Sound", - L"Unlock door", - L"Toggle lock", - L"Untrap door", - L"Tog pressure items", - L"Museum alarm", - L"Bloodcat alarm", - L"Big teargas", -}; -*/ -STR16 pUpdateItemStatsPanelText[] = -{ - L"Toggle hide flag", //0 - L"No item selected.", - L"Slot available for", - L"random generation.", - L"Keys not editable.", - L"ProfileID of owner", - L"Item class not implemented.", - L"Slot locked as empty.", - L"Status", - L"Rounds", - L"Trap Level", //10 - L"Quantity", - L"Trap Level", - L"Status", - L"Trap Level", - L"Status", - L"Quantity", - L"Trap Level", - L"Dollars", - L"Status", - L"Trap Level", //20 - L"Trap Level", - L"Tolerance", - L"Alarm Trigger", - L"Exist Chance", - L"B", - L"R", - L"S", -}; - -STR16 pSetupGameTypeFlagsText[] = -{ - L"Item appears in both Sci-Fi and Realistic modes", //0 - L"Item appears in Realistic mode only", - L"Item appears in Sci-Fi mode only", -}; - -STR16 pSetupGunGUIText[] = -{ - L"SILENCER", //0 - L"SNIPERSCOPE", - L"LASERSCOPE", - L"BIPOD", - L"DUCKBILL", - L"G-LAUNCHER", //5 -}; - -STR16 pSetupArmourGUIText[] = -{ - L"CERAMIC PLATES", //0 -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"DETONATOR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"Okay", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"LOAD", - L"SAVE", - L"Update", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"Tileset: %s", //0 - L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", - L"Number of items: %d", - L"Number of lights: %d", - L"Number of entry points: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"Number of rooms: %d", - L"Total map population: %d", - L"Enemies: %d", - L"Admins: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Troops: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Elites: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Civilians: %d", //20 - - L"(%d detailed, %d profile -- %d have priority existance)", - - L"Humans: %d", - L"Cows: %d", - L"Bloodcats: %d", - - L"Creatures: %d", - - L"Monsters: %d", - L"Bloodcats: %d", - - L"Number of locked and/or trapped doors: %d", - L"Locked: %d", - L"Trapped: %d", //30 - L"Locked & Trapped: %d", - - L"Civilians with schedules: %d", - - L"Too many exit grid destinations (more than 4)...", - L"ExitGrids: %d (%d with a long distance destination)", - L"ExitGrids: none", - L"ExitGrids: 1 destination using %d exitgrids", - L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 - L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"%d placements have patrol orders without any waypoints defined.", - L"%d placements have waypoints, but without any patrol orders.", - L"%d gridnos have questionable room numbers. Please validate.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Enemy", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"Panic1", - L"Panic2", - L"Panic3", - L"Norm1", - L"Norm2", - L"Norm3", - L"Norm4", //10 - L"Pressure Actions", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"PRIORITY ENEMY DROPPED ITEMS", - L"None", - - L"TOO MANY ITEMS TO DISPLAY!", - L"NORMAL ENEMY DROPPED ITEMS", - L"TOO MANY ITEMS TO DISPLAY!", - L"None", - L"TOO MANY ITEMS TO DISPLAY!", - L"ERROR: Can't load the items for this map. Reason unknown.", //20 -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 - L"(NO MAP LOADED).", - L"You currently have %d outdated maps.", - L"The more maps that need to be updated, the longer it takes. It'll take ", - L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"depending on your computer, it may vary.", - L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"There is no sector currently selected.", - - L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"You need to either load an existing map or create a new map before being", - L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 - - L", ground level", - L", underground level 1", - L", underground level 2", - L", underground level 3", - L", alternate G level", - L", alternate B1 level", - L", alternate B2 level", - L", alternate B3 level", - - L"ITEM DETAILS -- sector %s", - L"Summary Information for sector %s:", //20 - - L"Summary Information for sector %s", - L"does not exist.", - - L"Summary Information for sector %s", - L"does not exist.", - - L"No information exists for sector %s.", - - L"No information exists for sector %s.", - - L"FILE: %s", - - L"FILE: %s", - - L"Override READONLY", - L"Overwrite File", //30 - - L"You currently have no summary data. By creating one, you will be able to keep track", - L"of information pertaining to all of the sectors you edit and save. The creation process", - L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"Do you wish to do this now (y/n)?", - - L"No summary info. Creation denied.", - - L"Grid", - L"Progress", //40 - L"Use Alternate Maps", - - L"Summary", - L"Items", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"Analyzing map: %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Loading map: %s", -}; - -STR16 pReportErrorText[] = -{ - L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Generating map information", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"Generating map summary", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MAJOR VERSION UPDATE", - L"There are %d maps requiring a major version update.", - L"Updating all outdated maps", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] from default tileset %s (%d, %S)", - L"File: %S, subindex: %d (%d, %S)", - L"Tileset: %s", -}; - -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Accept selections (|E|n|t|e|r)", - L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", - L"Scroll window up (|U|p)", - L"Scroll window down (|D|o|w|n)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Small", - L"Medium", - L"Large", - L"XLarge", - L"Width: xx", - L"Area" - }; - -//--- - -// TODO.Translate -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Page 1/2", //0 - L"Page 2/2", - - L"Page 1/3", - L"Page 2/3", - L"Page 3/3", - - L"Page 1/1", //5 -}; - -// by Jazz: TODO.Translate -CHAR16 zGrod[][500] = -{ - L"Robot", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 Development Team", - L"@T,C144,R134,{;Coding", - L"@T,C144,R134,{;Graphics and Sounds", - L"@};(Various other mods!)", - L"@T,C144,R134,{;Items", - L"@T,C144,R134,{;Other Contributors", - L"@};(All other community members who contributed input and feedback!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L"cal .38", -// L"9 mm", -// L"cal .45", -// L"cal .357", -// L"cal fisso 12", -// L"CAW", -// L"5.45 mm", -// L"5.56 mm", -// L"7.62 mm NATO", -// L"7.62 mm WP", -// L"4.7 mm", -// L"5.7 mm", -// L"Mostro", -// L"Missile", -// L"", // dart -// L"", // flame -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L"cal .38", -// L"9 mm", -// L"cal .45", -// L"cal .357", -// L"cal fisso 12", -// L"CAWS", -// L"5.45 mm", -// L"5.56 mm", -// L"7.62 mm N.", -// L"7.62 mm WP", -// L"4.7 mm", -// L"5.7 mm", -// L"Mostro", -// L"Missile", -// L"", // dart -//}; - - -CHAR16 WeaponType[][30] = -{ - L"Altro", - L"Arma", - L"Mitragliatrice", - L"Mitra", - L"Fucile", - L"Fucile del cecchino", - L"Fucile d'assalto", - L"Mitragliatrice leggera", - L"Fucile a canne mozze", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Turno del giocatore", // player's turn - L"Turno degli avversari", - L"Turno delle creature", - L"Turno dell'esercito", - L"Turno dei civili", - L"Player_Plan",// planning turn - L"Client #1",//hayden - L"Client #2",//hayden - L"Client #3",//hayden - L"Client #4",//hayden -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s è stato colpito alla testa e perde un punto di saggezza!", - L"%s è stato colpito alla spalla e perde un punto di destrezza!", - L"%s è stato colpito al torace e perde un punto di forza!", - L"%s è stato colpito alle gambe e perde un punto di agilità!", - L"%s è stato colpito alla testa e perde %d punti di saggezza!", - L"%s è stato colpito alle palle perde %d punti di destrezza!", - L"%s è stato colpito al torace e perde %d punti di forza!", - L"%s è stato colpito alle gambe e perde %d punti di agilità!", - L"Interrompete!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"I vostri rinforzi sono arrivati!", - - // In the following four lines, all %s's are merc names - - L"%s ricarica.", - L"%s non ha abbastanza Punti Azione!", - L"%s ricorre al pronto soccorso. (Premete un tasto per annullare.)", - L"%s e %s ricorrono al pronto soccorso. (Premete un tasto per annullare.)", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"affidabile", - L"non affidabile", - L"facile da riparare", - L"difficile da riparare", - L"danno grave", - L"danno lieve", - L"fuoco veloce", - L"fuoco", - L"raggio lungo", - L"raggio corto", - L"leggero", - L"pesante", - L"piccolo", - L"fuoco a raffica", - L"niente raffiche", - L"grande deposito d'armi", - L"piccolo deposito d'armi", - - // In the following two lines, all %s's are merc names - - L"Il travestimento di %s è stato scoperto.", - L"Il travestimento di %s è stato scoperto.", - - // The first %s is a merc name and the second %s is an item name - - L"La seconda arma è priva di munizioni!", - L"%s ha rubato il %s.", - - // The %s is a merc name - - L"L'arma di %s non può più sparare a raffica.", - - L"Ne avete appena ricevuto uno di quelli attaccati.", - L"Volete combinare gli oggetti?", - - // Both %s's are item names - - L"Non potete attaccare %s a un %s.", - - L"Nessuno", - L"Espelli munizioni", - L"Attaccare", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and you gas mask at the same time. - L"Non potete usare %s e il vostro %s contemporaneamente.", - - L"L'oggetto puntato dal vostro cursore può essere combinato ad alcuni oggetti ponendolo in uno dei quattro slot predisposti.", - L"L'oggetto puntato dal vostro cursore può essere combinato ad alcuni oggetti ponendolo in uno dei quattro slot predisposti. (Comunque, in questo caso, l'oggetto non è compatibile.)", - L"Il settore non è libero da nemici!", - L"Vi dovete ancora dare %s %s", - L"%s è stato colpito alla testa!", - L"Abbandonate la battaglia?", - L"Questo attaco sarà definitivo. Andate avanti?", - L"%s si sente molto rinvigorito!", - L"%s ha dormito di sasso!", - L"%s non è riuscito a catturare il %s!", - L"%s ha riparato il %s", - L"Interrompete per ", - L"Vi arrendete?", - L"Questa persona rifiuta il vostro aiuto.", - L"NON sono d'accordo!", - L"Per viaggiare sull'elicottero di Skyrider, dovrete innanzitutto ASSEGNARE mercenari al VEICOLO/ELICOTTERO.", - L"solo %s aveva abbastanza tempo per ricaricare UNA pistola", - L"Turno dei Bloodcat", - L"automatic", - L"no full auto", - L"The enemy has no more items to steal!", - L"The enemy has no item in its hand!", -// TODO.Translate - L"%s's desert camouflage has worn off.", - L"%s's desert camouflage has washed off.", - - L"%s's wood camouflage has worn off.", - L"%s's wood camouflage has washed off.", - - L"%s's urban camouflage has worn off.", - L"%s's urban camouflage has washed off.", - - L"%s's snow camouflage snow has worn off.", - L"%s's snow camouflage has washed off.", - - L"You cannot attach %s to this slot.", - L"The %s will not fit in any open slots.", - L"There's not enough space for this pocket.", //TODO:Translate - - L"%s has repaired the %s as much as possible.", // TODO.Translate - L"%s has repaired %s's %s as much as possible.", - - L"%s has cleaned the %s.", // TODO.Translate - L"%s has cleaned %s's %s.", - - L"Assignment not possible at the moment", // TODO.Translate - L"No militia that can be drilled present.", - - L"%s has fully explored %s.", // TODO.Translate -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracona", - L"Traconian", -#else - L"Arulco", - L"Arulcan", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"Fermo", - L"Normale", - L"5 min", - L"30 min", - L"60 min", - L"6 ore", -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"Squad. 1", - L"Squad. 2", - L"Squad. 3", - L"Squad. 4", - L"Squad. 5", - L"Squad. 6", - L"Squad. 7", - L"Squad. 8", - L"Squad. 9", - L"Squad. 10", - L"Squad. 11", - L"Squad. 12", - L"Squad. 13", - L"Squad. 14", - L"Squad. 15", - L"Squad. 16", - L"Squad. 17", - L"Squad. 18", - L"Squad. 19", - L"Squad. 20", - L"Servizio", // on active duty - L"Dottore", // administering medical aid - L"Paziente", // getting medical aid - L"Veicolo", // in a vehicle - L"Transito", // in transit - abbreviated form - L"Riparare", // repairing - L"Radio Scan", // scanning for nearby patrols // TODO.Translate - L"Esercit.", // training themselves - L"Esercit.", // training a town to revolt - L"M.Militia", //training moving militia units // TODO.Translate - L"Istrutt.", // training a teammate - L"Studente", // being trained by someone else - L"Get Item", // get items // TODO.Translate - L"Staff", // operating a strategic facility // TODO.Translate - L"Eat", // eating at a facility (cantina etc.) // TODO.Translate - L"Rest", // Resting at a facility // TODO.Translate - L"Prison", // Flugente: interrogate prisoners - L"Morto", // dead - L"Incap.", // abbreviation for incapacitated - L"PDG", // Prisoner of war - captured - L"Ospedale", // patient in a hospital - L"Vuoto", // Vehicle is empty - L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate - L"Propag.", // facility: spread propaganda - L"Propag.", // facility: spread propaganda (globally) - L"Rumours", // facility: gather information - L"Propag.", // spread propaganda - L"Rumours", // gather information - L"Command", // militia movement orders - L"Diagnose", // disease diagnosis //TODO.Translate - L"Treat D.", // treat disease among the population - L"Dottore", // administering medical aid - L"Paziente", // getting medical aid - L"Riparare", // repairing - L"Fortify", // build structures according to external layout // TODO.Translate - L"Train W.", - L"Hide", // TODO.Translate - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", // TODO.Translate - L"Explore", // TODO.Translate - L"Event",// rftr: merc is on a mini event // TODO: translate - L"Mission", // rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"Esercito", // the title of the militia box - L"Non incaricato", //the number of unassigned militia troops - L"Non potete ridistribuire reclute, se ci sono nemici nei paraggi!", - L"Some militia were not assigned to a sector. Would you like to disband them?", // TODO.Translate -}; - - -STR16 pMilitiaButtonString[] = -{ - L"Auto", // auto place the militia troops for the player - L"Eseguito", // done placing militia troops - L"Disband", // HEADROCK HAM 3.6: Disband militia // TODO.Translate - L"Unassign All", // move all milita troops to unassigned pool // TODO.Translate -}; - -STR16 pConditionStrings[] = -{ - L"Eccellente", //the state of a soldier .. excellent health - L"Buono", // good health - L"Discreto", // fair health - L"Ferito", // wounded health - L"Stanco", // tired - L"Grave", // bleeding to death - L"Svenuto", // knocked out - L"Morente", // near death - L"Morto", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"In servizio", // set merc on active duty - L"Paziente", // set as a patient to receive medical aid - L"Veicolo", // tell merc to enter vehicle - L"Non scortato", // let the escorted character go off on their own - L"Cancella", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"Squadra 1", - L"Squadra 2", - L"Squadra 3", - L"Squadra 4", - L"Squadra 5", - L"Squadra 6", - L"Squadra 7", - L"Squadra 8", - L"Squadra 9", - L"Squadra 10", - L"Squadra 11", - L"Squadra 12", - L"Squadra 13", - L"Squadra 14", - L"Squadra 15", - L"Squadra 16", - L"Squadra 17", - L"Squadra 18", - L"Squadra 19", - L"Squadra 20", - L"In servizio", - L"Dottore", - L"Paziente", - L"veicolo", - L"In transito", - L"Riparare", - L"Radio Scan", // radio scan // TODO.Translate - L"Esercitarsi", - L"Allenamento Esercito", - L"Training Mobile Militia", // TODO.Translate - L"Allenatore", - L"Studente", - L"Get Item", // get items // TODO.Translate - L"Facility Staff", // TODO.Translate - L"Eat", // eating at a facility (cantina etc.) // TODO.Translate - L"Resting at Facility", // TODO.Translate - L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate - L"Morto", - L"Incap.", - L"PDG", - L"Ospedale", - L"Vuoto", // Vehicle is empty - L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) - L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda - L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda (globally) - L"Gathering Rumours",// TODO.Translate // facility: gather rumours - L"Spreading Propaganda",// TODO.Translate // spread propaganda - L"Gathering Rumours",// TODO.Translate // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Dottore", - L"Paziente", - L"Riparare", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"Squadra 1", - L"Squadra 2", - L"Squadra 3", - L"Squadra 4", - L"Squadra 5", - L"Squadra 6", - L"Squadra 7", - L"Squadra 8", - L"Squadra 9", - L"Squadra 10", - L"Squadra 11", - L"Squadra 12", - L"Squadra 13", - L"Squadra 14", - L"Squadra 15", - L"Squadra 16", - L"Squadra 17", - L"Squadra 18", - L"Squadra 19", - L"Squadra 20", - L"In servizio", - L"Dottore", - L"Paziente", - L"Veicolo", - L"In transito", - L"Ripara", - L"Radio Scan", // radio scan // TODO.Translate - L"Esercitarsi", - L"Allenatore esercito", - L"Train Mobiles", // TODO.Translate - L"Allena squadra", - L"Studente", - L"Get Item", // get items // TODO.Translate - L"Staff Facility", // TODO.Translate - L"Rest at Facility", // TODO.Translate - L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate - L"Morto", - L"Incap.", - L"PDG", - L"Ospedale", // patient in a hospital - L"Vuoto", // Vehicle is empty - L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) - L"Spread Propaganda",// TODO.Translate // facility: spread propaganda - L"Spread Propaganda",// TODO.Translate // facility: spread propaganda (globally) - L"Gather Rumours",// TODO.Translate // facility: gather rumours - L"Spread Propaganda",// TODO.Translate // spread propaganda - L"Gather Rumours",// TODO.Translate // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Dottore", - L"Paziente", - L"Ripara", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"Opzioni del contratto:", - L"", // a blank line, required - L"Offri 1 giorno", // offer merc a one day contract extension - L"Offri 1 settimana", // 1 week - L"Offri 2 settimane", // 2 week - L"Termina contratto", // end merc's contract - L"Annulla", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"PDG", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"FORZA", - L"DESTREZZA", - L"AGILITÀ", - L"SAGGEZZA", - L"MIRA", - L"PRONTO SOCC.", - L"MECCANICA", - L"COMANDO", - L"ESPLOSIVI", - L"LIVELLO", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Giubb. A-P", // the armor rating of the merc - L"Peso", // the weight the merc is carrying - L"Trav.", // the merc's camouflage rating - L"Camouflage:", - L"Protection:", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Abi", // the abbreviated version of : agility - L"Des", // dexterity - L"For", // strength - L"Com", // leadership - L"Sag", // wisdom - L"Liv", // experience level - L"Tir", // marksmanship skill - L"Mec", // mechanical skill - L"Esp", // explosive skill - L"PS", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Compito", // the mercs current assignment - L"Accordo", // the contract info about the merc - L"Salute", // the health level of the current merc - L"Morale", // the morale of the current merc - L"Cond.", // the condition of the current vehicle - L"Benzina", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Esercitarsi", // tell merc to train self - L"Esercito", // tell merc to train town - L"Allenatore", // tell merc to act as trainer - L"Studente", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Frequenza di fuoco:", // the allowable rate of fire for a merc who is guarding - L"Fuoco aggressivo", // the merc can be aggressive in their choice of fire rates - L"Conservare munizioni", // conserve ammo - L"Astenersi dal fuoco", // fire only when the merc needs to - L"Altre opzioni:", // other options available to merc - L"Può ritrattare", // merc can retreat - L"Può cercare rifugio", // merc is allowed to seek cover - L"Può assistere compagni di squadra", // merc can assist teammates - L"Fine", // done with this menu - L"Annulla", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"Frequenza di fuoco:", - L" *Fuoco aggressivo*", - L" *Conservare munizioni*", - L" *Astenersi dal fuoco*", - L"Altre opzioni:", - L" *Può ritrattare*", - L" *Può cercare rifugio*", - L" *Può assistere compagni di squadra*", - L"Fine", - L"Annulla", -}; - -STR16 pAssignMenuStrings[] = -{ - L"In servizio", // merc is on active duty - L"Dottore", // the merc is acting as a doctor - L"Disease", // merc is a doctor doing diagnosis TODO.Translate - L"Paziente", // the merc is receiving medical attention - L"Veicolo", // the merc is in a vehicle - L"Ripara", // the merc is repairing items - L"Radio Scan", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"Snitch", // TODO.Translate // anv: snitch actions - L"Si esercita", // the merc is training - L"Militia", // all things militia - L"Get Item", // get items // TODO.Translate - L"Fortify", // fortify sector // TODO.Translate - L"Intel", // covert assignments // TODO.Translate - L"Administer", // TODO.Translate - L"Explore", // TODO.Translate - L"Facility", // the merc is using/staffing a facility // TODO.Translate - L"Annulla", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"Attack", // set militia to aggresive - L"Hold Position", // set militia to stationary - L"Retreat", // retreat militia - L"Come to me", // retreat militia - L"Get down", // retreat militia - L"Crouch", // TODO.Translate - L"Take cover", - L"Move to", // TODO.Translate - L"All: Attack", - L"All: Hold Position", - L"All: Retreat", - L"All: Come to me", - L"All: Spread out", - L"All: Get down", - L"All: Crouch", // TODO.Translate - L"All: Take cover", - //L"All: Find items", - L"Cancel", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = // TODO.Translate -{ - // radio operator - L"Artillery Strike", - L"Jam communications", - L"Scan frequencies", - L"Eavesdrop", - L"Call reinforcements", - L"Switch off radio set", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", // TODO.Translate - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Spotter", // TODO.Translate - L"Focus", // TODO.Translate - L"Drag", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Order an artillery strike from sector...", - L"Fill all radio frequencies with white noise, making communications impossible.", - L"Scan for jamming signals.", - L"Use your radio equipment to continously listen for enemy movement.", - L"Call in reinforcements from neighbouring sectors.", - L"Turn off radio set.", // TODO.Translate - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", // TODO.Translate - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Observe an area, granting allied snipers a bonus to cth on anything you see.", // TODO.Translate - L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Requires:\n", - L" - %d AP\n", - L" - %s\n", - L" - %s or higher\n", - L" - %s or higher or\n", - L" - %d minutes to be ready\n", - L" - mortar positions in neighbouring sectors\n", - L" - %s |o|r %s |a|n|d %s or %s or higher\n", - L" - possession by a demon", - L" - a gun-related trait\n", // TODO.Translate - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = // TODO.Translate -{ - L"Militia", - L"Other Squads", - L"Cancel", - L"%d Militia", - L"All Militia", - - L"More", // TODO.Translate - L"Corpse: %s", // TODO.Translate -}; - -// TODO.Translate -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Team Informant", - L"Town Assignment", - L"Cancel", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Discuss snitch's behaviour towards his teammates.", - L"Take an assignment in this sector.", - L"Cancel", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Report complaints", - L"Don't report", - L"Prevent misbehaviour", - L"Ignore misbehaviour", - L"Cancel", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Report any complaints you hear from other mercs to your commander.", - L"Don't report anything.", - L"Try to stop other mercs from getting wasted and scrounging.", - L"Don't care what other mercs do.", - L"Cancel", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Spread propaganda", - L"Gather rumours", - L"Cancel", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", - L"Keep an ear to the ground on any rumours about enemy forces activity.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = // TODO.Translate -{ - L"Interrogate admins", - L"Interrogate troops", - L"Interrogate elites", - L"Interrogate officers", - L"Interrogate generals", - L"Interrogate civilians", - L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s was exposed as a snitch but managed to notice it and get out alive.", - L"%s was exposed as a snitch but managed to defuse situation and get out alive.", - L"%s was exposed as a snitch but managed to avoid assassination attempt.", - L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", - - L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", - L"%s was exposed as a snitch and almost beaten to death before guards saved him.", - L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", - L"%s was exposed as a snitch and strangled to death before guards saved him.", - - L"%s was exposed as a snitch and drowned in toilet by other inmates.", - L"%s was exposed as a snitch and beaten to death by other inmates.", - L"%s was exposed as a snitch and shanked to death by other inmates.", - L"%s was exposed as a snitch and strangled to death by other inmates.", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s heard rumours about enemy activity in %d sectors.", - -}; -// /TODO.Translate - -STR16 pRemoveMercStrings[] = -{ - L"Rimuovi Mercenario", // remove dead merc from current team - L"Annulla", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Salute", - L"Agilità", - L"Destrezza", - L"Forza", - L"Comando", - L"Mira", - L"Meccanica", - L"Esplosivi", - L"Pronto socc.", - L"Annulla", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Allenati", // train yourself - L"Train workers", // TODO.Translate - L"Allenatore", // train your teammates - L"Studente", // be trained by an instructor - L"Annulla", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"Squadra 1", - L"Squadra 2", - L"Squadra 3", - L"Squadra 4", - L"Squadra 5", - L"Squadra 6", - L"Squadra 7", - L"Squadra 8", - L"Squadra 9", - L"Squadra 10", - L"Squadra 11", - L"Squadra 12", - L"Squadra 13", - L"Squadra 14", - L"Squadra 15", - L"Squadra 16", - L"Squadra 17", - L"Squadra 18", - L"Squadra 19", - L"Squadra 20", - L"Annulla", -}; - -STR16 pPersonnelTitle[] = -{ - L"Personale", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Salute: ", // health of merc - L"Agilità: ", - L"Destrezza: ", - L"Forza: ", - L"Comando: ", - L"Saggezza: ", - L"Liv. esp.: ", // experience level - L"Mira: ", - L"Meccanica: ", - L"Esplosivi: ", - L"Pronto socc.: ", - L"Deposito med.: ", // amount of medical deposit put down on the merc - L"Contratto in corso: ", // cost of current contract - L"Uccisi: ", // number of kills by merc - L"Assistiti: ", // number of assists on kills by merc - L"Costo giornaliero:", // daily cost of merc - L"Tot. costo fino a oggi:", // total cost of merc - L"Contratto:", // cost of current contract - L"Tot. servizio fino a oggi:", // total service rendered by merc - L"Salario arretrato:", // amount left on MERC merc to be paid - L"Percentuale di colpi:", // percentage of shots that hit target - L"Battaglie:", // number of battles fought - L"Numero ferite:", // number of times merc has been wounded - L"Destrezza:", - L"Nessuna abilità", - L"Achievements:", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"Elite soldiers: %d\n", - L"Regular soldiers: %d\n", - L"Admin soldiers: %d\n", - L"Hostile groups: %d\n", - L"Creatures: %d\n", - L"Tanks: %d\n", - L"Others: %d\n", - - L"Mercs: %d\n", - L"Militia: %d\n", - L"Others: %d\n", - - L"Shots fired: %d\n", - L"Missiles fired: %d\n", - L"Grenades thrown: %d\n", - L"Knives thrown: %d\n", - L"Blade attacks: %d\n", - L"Hand to hand attacks: %d\n", - L"Successful hits: %d\n", - - L"Locks picked: %d\n", - L"Locks breached: %d\n", - L"Traps removed: %d\n", - L"Explosives detonated: %d\n", - L"Items repaired: %d\n", - L"Items combined: %d\n", - L"Items stolen: %d\n", - L"Militia trained: %d\n", - L"Mercs bandaged: %d\n", - L"Surgeries made: %d\n", - L"Persons met: %d\n", - L"Sectors discovered: %d\n", - L"Ambushes prevented: %d\n", - L"Quests handled: %d\n", - - L"Tactical battles: %d\n", - L"Autoresolve battles: %d\n", - L"Times retreated: %d\n", - L"Ambushes experienced: %d\n", - L"Hardest battle: %d Enemies\n", - - L"Shot: %d\n", - L"Stabbed: %d\n", - L"Punched: %d\n", - L"Blasted: %d\n", - L"Suffered damages in facilities: %d\n", - L"Surgeries undergone: %d\n", - L"Facility accidents: %d\n", - - L"Character:", - L"Weakness:", - - L"Attitudes:", // WANNE: For old traits display instead of "Character:"! - - L"Zombies: %d\n", // TODO.Translate - - L"Background:", // TODO.Translate - L"Personality:", // TODO.Translate - - L"Prisoners interrogated: %d\n", // TODO.Translate - L"Diseases caught: %d\n", - L"Total damage received: %d\n", - L"Total damage caused: %d\n", - L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - L"Nessuna abilità", - L"Forzare serrature", - L"Corpo a corpo", - L"Elettronica", - L"Op. notturne", - L"Lanciare", - L"Istruire", - L"Armi pesanti", - L"Armi automatiche", - L"Clandestino", - L"Ambidestro", - L"Furtività", - L"Arti marziali", - L"Coltelli", - L"Sniper", - L"Camuffato", - L"(Esperto)", -}; - -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"No Skill", // 0 - L"Auto Weapons", // 1 - L"Heavy Weapons", - L"Marksman", - L"Hunter", - L"Gunslinger", // 5 - L"Hand to Hand", - L"Deputy", - L"Technician", - L"Paramedic", // 9 - // Minor traits - L"Ambidextrous", // 10 - L"Melee", - L"Throwing", - L"Night Ops", - L"Stealthy", - L"Athletics", // 15 - L"Bodybuilding", - L"Demolitions", - L"Teaching", - L"Scouting", // 19 - // covert ops is a major trait that was added later - L"Covert Ops", // 20 - // new minor traits - L"Radio Operator", // 21 - L"Snitch", // 22 - L"Survival", - - // second names for major skills - L"Machinegunner", // 24 - L"Bombardier", - L"Sniper", - L"Ranger", - L"Gunfighter", - L"Martial Arts", - L"Squadleader", - L"Engineer", - L"Doctor", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"Spy", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch (minor trait) - L"Placeholder", // for survival (minor trait) - L"More...", // 47 - L"Intel", // for INTEL // TODO.Translate - L"Disguise", // for DISGUISE - L"various", // for VARIOUSSKILLS - L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate -}; -////////////////////////////////////////////////////////// - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"|Stare fermi/Camminare", - L"|Accucciarsi/Muoversi accucciato", - L"Stare fermi/|Correre", - L"|Prono/Strisciare", - L"|Guardare", - L"Agire", - L"Parlare", - L"Esaminare (|C|t|r|l)", - - // Pop up door menu - L"Aprire manualmente", - L"Esaminare trappole", - L"Grimaldello", - L"Forzare", - L"Liberare da trappole", - L"Chiudere", - L"Aprire", - L"Usare esplosivo per porta", - L"Usare piede di porco", - L"Annulla (|E|s|c)", - L"Chiudere", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"Nessuna trappola", - L"una trappola esplosiva", - L"una trappola elettrica", - L"una trappola con sirena", - L"una trappola con allarme insonoro", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"giorno", - L"settimana", - L"due settimane", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Selezionare postazioni", - L"Assegnare mercenario", - L"Tracciare percorso di viaggio", - L"Merc |Contratto", - L"Eliminare mercenario", - L"Dormire", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"DEBOLE", - L"DEFINITO", - L"FORTE", - L"MOLTO FORTE", -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"SCONOSCIUTO", - L"rumore di MOVIMENTO", - L"SCRICCHIOLIO", - L"TONFO IN ACQUA", - L"IMPATTO", - L"SPARO", - L"ESPLOSIONE", - L"URLA", - L"IMPATTO", - L"IMPATTO", - L"FRASTUONO", - L"SCHIANTO", -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"il NORD-EST", - L"il EST", - L"il SUD-EST", - L"il SUD", - L"il SUD-OVEST", - L"il OVEST", - L"il NORD-OVEST", - L"il NORD", -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"Urbano", - L"Strada", - L"Pianure", - L"Deserto", - L"Boschi", - L"Foresta", - L"Palude", - L"Acqua", - L"Colline", - L"Impervio", - L"Fiume", //river from north to south - L"Fiume", //river from east to west - L"Paese straniero", - //NONE of the following are used for directional travel, just for the sector description. - L"Tropicale", - L"Campi", - L"Pianure, strada", - L"Boschi, strada", - L"Fattoria, strada", - L"Tropicale, strada", - L"Foresta, strada", - L"Linea costiera", - L"Montagna, strada", - L"Litoraneo, strada", - L"Deserto, strada", - L"Palude, strada", - L"Boschi, postazione SAM", - L"Deserto, postazione SAM", - L"Tropicale, postazione SAM", - L"Meduna, postazione SAM", - - //These are descriptions for special sectors - L"Ospedale di Cambria", - L"Aeroporto di Drassen", - L"Aeroporto di Meduna", - L"Postazione SAM", - L"Refuel site", // TODO.Translate - L"Nascondiglio ribelli", //The rebel base underground in sector A10 - L"Prigione sotterranea di Tixa", //The basement of the Tixa Prison (J9) - L"Tana della creatura", //Any mine sector with creatures in it - L"Cantina di Orta", //The basement of Orta (K4) - L"Tunnel", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Rifugio", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s sono stati individuati nel settore %c%d e un'altra squadra sta per arrivare.", //STR_DETECTED_SINGULAR - L"%s sono stati individuati nel settore %c%d e un'altra squadra sta per arrivare.", //STR_DETECTED_PLURAL - L"Volete coordinare un attacco simultaneo?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"Il nemico offre la possibilità di arrendervi.", //STR_ENEMY_SURRENDER_OFFER - L"Il nemico ha catturato i vostri mercenari sopravvissuti.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Ritirarsi", //The retreat button //STR_AR_RETREAT_BUTTON - L"Fine", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"DIFENDERE", //STR_AR_DEFEND_HEADER - L"ATTACCARE", //STR_AR_ATTACK_HEADER - L"INCONTRARE", //STR_AR_ENCOUNTER_HEADER - L"settore", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"VITTORIA!", //STR_AR_OVER_VICTORY - L"SCONFITTA!", //STR_AR_OVER_DEFEAT - L"ARRENDERSI!", //STR_AR_OVER_SURRENDERED - L"CATTURATI!", //STR_AR_OVER_CAPTURED - L"RITIRARSI!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Esercito", //STR_AR_MILITIA_NAME, - L"Èlite", //STR_AR_ELITE_NAME, - L"Truppa", //STR_AR_TROOP_NAME, - L"Amministratore", //STR_AR_ADMINISTRATOR_NAME, - L"Creatura", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Tempo trascorso", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"RITIRATOSI", //STR_AR_MERC_RETREATED, - L"RITIRARSI", //STR_AR_MERC_RETREATING, - L"RITIRATA", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Esito", //STR_PB_AUTORESOLVE_BTN, - L"Vai al settore", //STR_PB_GOTOSECTOR_BTN, - L"Ritira merc.", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"SCONTRO NEMICO", //STR_PB_ENEMYENCOUNTER_HEADER, - L"INVASIONE NEMICA", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"IMBOSCATA NEMICA", //STR_PB_ENEMYAMBUSH_HEADER - L"INTRUSIONE NEMICA NEL SETTORE", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"ATTACCO DELLE CREATURE", //STR_PB_CREATUREATTACK_HEADER - L"IMBOSCATA DEI BLOODCAT", //STR_PB_BLOODCATAMBUSH_HEADER - L"INTRUSIONE NELLA TANA BLOODCAT", //STR_PB_ENTERINGBLOODCATLAIR_HEADER - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Postazione", - L"Nemici", - L"Mercenari", - L"Esercito", - L"Creature", - L"Bloodcat", - L"Settore", - L"Nessuno", //If there are no uninvolved mercs in this fight. - L"N/A", //Acronym of Not Applicable - L"g", //One letter abbreviation of day - L"o", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Sgombro", - L"Sparsi", - L"In gruppo", - L"Fine", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"|Mostra chiaramente tutte le postazioni dei mercenari, \ne vi permette di rimetterli in gioco manualmente.", - L"A caso |sparge i vostri mercenari \nogni volta che lo premerete.", - L"Vi permette di scegliere dove vorreste |raggruppare i vostri mercenari.", - L"Cliccate su questo pulsante quando avrete \nscelto le postazioni dei vostri mercenari. (|I|n|v|i|o)", - L"Dovete posizionare tutti i vostri mercenari \nprima di iniziare la battaglia.", - - //Various strings (translate word for word) - - L"Settore", - L"Scegliete le postazioni di intervento", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"Non sembra così bello qui. È inacessibile. Provate con una diversa postazione.", - L"Posizionate i vostri mercenari nella sezione illuminata della mappa.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"è arivato nel settore", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"|Automaticamente svolge i combattimenti al vostro posto\nsenza caricare la mappa.", - L"Non è possibile utilizzare l'opzione di risoluzione automatica quando\nil giocatore sta attaccando.", - L"|Entrate nel settore per catturare il nemico.", - L"|Rimandate il gruppo al settore precedente.", //singular version - L"|Rimandate tutti i gruppi ai loro settori precedenti.", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"I nemici attaccano il vostro esercito nel settore %c%d.", - //%c%d is the sector -- ex: A9 - L"Le creature attaccano il vostro esercito nel settore %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Le creature attaccano e uccidono %d civili nel settore %s.", - //%s is the sector location -- ex: A9: Omerta - L"I nemici attaccano i vostri mercenari nel settore %s. Nessuno dei vostri mercenari è in grado di combattere!", - //%s is the sector location -- ex: A9: Omerta - L"I nemici attaccano i vostri mercenari nel settore %s. Nessuno dei vostri mercenari è in grado di combattere!", - - // Flugente: militia movement forbidden due to limited roaming // TODO.Translate - L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", - L"War room isn't staffed - militia move aborted!", - - L"Robot", //STR_AR_ROBOT_NAME, TODO: translate - L"Tank", //STR_AR_TANK_NAME, - L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate - - L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", // TODO.Translate - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"Gg", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"Settore trovato:", - L"Giorno trovato:", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"Stato:", - L"Peso:", - L"AP Costs", - L"Git:", // Range - L"Dan:", // Damage - L"Ammontare:", // Number of bullets left in a magazine - L"PA:", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Accuracy:", //9 - L"Range:", //10 - L"Damage:", //11 - L"Weight:", //12 - L"Stun Damage:",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - L"Attachments:", //14 // TODO.Translate - L"AUTO/5:", //15 - L"Remaining ammo:", //16 // TODO.Translate - - // TODO.Translate - L"Default:", //17 //WarmSteel - So we can also display default attachments - L"Dirt:", // 18 //added by Flugente // TODO.Translate - L"Space:", // 19 //space left on Molle items // TODO.Translate - L"Spread Pattern:", // 20 // TODO.Translate - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - // TODO.Translate - L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", - L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", - L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", - L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", - L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", - L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", - L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", - L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", - L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"", //12 - L"APs to ready", - L"APs to fire Single", - L"APs to fire Burst", - L"APs to fire Auto", - L"APs to Reload", - L"APs to Reload Manually", - L"Burst Penalty (Lower is better)", //19 - L"Bipod Modifier", - L"Autofire shots per 5 AP", - L"Autofire Penalty (Lower is better)", - L"Burst/Auto Penalty (Lower is better)", //23 - L"APs to Throw", - L"APs to Launch", - L"APs to Stab", - L"No Single Shot!", - L"No Burst Mode!", - L"No Auto Mode!", - L"APs to Bash", - L"", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Item Size Modifier (Lower is better)", // 0 - L"Reliability Modifier", - L"Loudness Modifier (Lower is better)", - L"Hides Muzzle Flash", - L"Bipod Modifier", - L"Range Modifier", // 5 - L"To-Hit Modifier", - L"Best Laser Range", - L"Aiming Bonus Modifier", - L"Burst Size Modifier", - L"Burst Penalty Modifier (Higher is better)", // 10 - L"Auto-Fire Penalty Modifier (Higher is better)", - L"AP Modifier", - L"AP to Burst Modifier (Lower is better)", - L"AP to Auto-Fire Modifier (Lower is better)", - L"AP to Ready Modifier (Lower is better)", // 15 - L"AP to Reload Modifier (Lower is better)", - L"Magazine Size Modifier", - L"AP to Attack Modifier (Lower is better)", - L"Damage Modifier", - L"Melee Damage Modifier", // 20 - L"Woodland Camo", - L"Urban Camo", - L"Desert Camo", - L"Snow Camo", - L"Stealth Modifier", // 25 - L"Hearing Range Modifier", - L"Vision Range Modifier", - L"Day Vision Range Modifier", - L"Night Vision Range Modifier", - L"Bright Light Vision Range Modifier", //30 - L"Cave Vision Range Modifier", - L"Tunnel Vision Percentage (Lower is better)", - L"Minimum Range for Aiming Bonus", - L"Hold |C|t|r|l to compare items", // item compare help text - L"Equipment weight: %4.1f kg", // 35 // TODO.Translate -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"In ", - L"PERFECT", - L"EXCELLENT", - L"GOOD", - L"FAIR", - L"POOR", - L"BAD", - L"TERRIBLE", - L" condition." -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Ammontare", - L"Rimanenti:", //this is the overall balance - L"Ammontare", - L"Da separare:", // the amount he wants to separate from the overall balance to get two piles of money - - L"Bilancio", - L"corrente:", - L"Ammontare", - L"del prelievo:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"MORENTE", // >= 0 - L"CRITICO", // >= 15 - L"DEBOLE", // >= 30 - L"FERITO", // >= 45 - L"SANO", // >= 60 - L"FORTE", // >= 75 - L"ECCELLENTE", // >= 90 - L"CAPTURED", // added by Flugente TODO.Translate -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"$1000", - L"$100", - L"$10", - L"Fine", - L"Separare", - L"Prelevare", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"Vant.:", -}; - -CHAR16 gzConsLabel[10] = -{ - L"Svant.:", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Vuoi ripetere?", //meaning "Repeat yourself" - L"Amichevole", //approach in a friendly - L"Diretto", //approach directly - let's get down to business - L"Minaccioso", //approach threateningly - talk now, or I'll blow your face off - L"Dai", - L"Recluta", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Compra/Vendi", - L"Compra", - L"Vendi", - L"Ripara", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"Fine", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"Eldorado", - L"Hummer", // a hummer jeep/truck -- military vehicle - L"Icecream Truck", - L"Jeep", - L"Carro armato", - L"Elicottero", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Eldor.", - L"Hummer", // the HMVV - L"Truck", - L"Jeep", - L"Carro", - L"Eli", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Eldorado", - L"Hummer", //a military jeep. This is a brand name. - L"Truck", // Ice cream truck - L"Jeep", - L"Carro", - L"Eli", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"You cannot shoot from this seat.", // TODO.Translate - L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Attacco aereo", - L"Ricorrete al pronto soccorso automaticamente?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s nota ch egli oggetti mancano dall'equipaggiamento.", - - // The %s is a string from pDoorTrapStrings - - L"La serratura ha %s", - L"Non ci sono serrature", - L"Vittoria!", - L"Fallimento", - L"Vittoria!", - L"Fallimento", - L"La serratura non presenta trappole", - L"Vittoria!", - // The %s is a merc name - L"%s non ha la chiave giusta", - L"La serratura non presenta trappole", - L"La serratura non presenta trappole", - L"Serrato", - L"", - L"TRAPPOLE", - L"SERRATO", - L"APERTO", - L"FRACASSATO", - L"C'è un interruttore qui. Lo volete attivare?", - L"Disattivate le trappole?", - L"Prec...", - L"Succ...", - L"Più...", - - // In the next 2 strings, %s is an item name - - L"Il %s è stato posizionato sul terreno.", - L"Il %s è stato dato a %s.", - - // In the next 2 strings, %s is a name - - L"%s è stato pagato completamente.", - L"Bisogna ancora dare %d a %s.", - L"Scegliete la frequenza di detonazione:", //in this case, frequency refers to a radio signal - L"Quante volte finché la bomba non esploderà:", //how much time, in turns, until the bomb blows - L"Stabilite la frequenza remota di detonazione:", //in this case, frequency refers to a radio signal - L"Disattivate le trappole?", - L"Rimuovete la bandiera blu?", - L"Mettete qui la bandiera blu?", - L"Fine del turno", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"Siete sicuri di volere attaccare %s ?", - L"Ah, i veicoli non possono cambiare posizione.", - L"Il robot non può cambiare posizione.", - - // In the next 3 strings, %s is a name - - L"%s non può cambiare posizione.", - L"%s non sono ricorsi al pronto soccorso qui.", - L"%s non ha bisogno del pronto soccorso.", - L"Non può muoversi là.", - L"La vostra squadra è al completo. Non c'è spazio per una recluta.", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s è stato reclutato.", - - // Here %s is a name and %d is a number - - L"Bisogna dare %d a $%s.", - - // In the next string, %s is a name - - L"Scortate %s?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"Il salario di %s ammonta a %s per giorno?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"Volete combattere?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"Comprate %s per %s?", - - // In the next string, %s is a name - - L"%s è scortato dalla squadra %d.", - - // These messages are displayed during play to alert the player to a particular situation - - L"INCEPPATA", //weapon is jammed. - L"Il robot ha bisogno di munizioni calibro %s.", //Robot is out of ammo - L"Cosa? Impossibile.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Modalità furtiva (|Z)", - L"Schermata della |mappa", - L"Fine del turno (|D)", - L"Parlato", - L"Muto", - L"Alza (|P|a|g|S|ù)", - L"Livello della vista (|T|a|b)", - L"Scala / Salta", - L"Abbassa (|P|a|g|G|i|ù)", - L"Esamina (|C|t|r|l)", - L"Mercenario precedente", - L"Prossimo mercenario (|S|p|a|z|i|o)", - L"|Opzioni", - L"Modalità a raffica (|B)", - L"Guarda/Gira (|L)", - L"Salute: %d/%d\nEnergia: %d/%d\nMorale: %s", - L"Eh?", //this means "what?" - L"Fermo", //an abbrieviation for "Continued" - L"Audio on per %s.", - L"Audio off per %s.", - L"Salute: %d/%d\nCarburante: %d/%d", - L"Uscita veicoli" , - L"Cambia squadra (|M|a|i|u|s|c |S|p|a|z|i|o)", - L"Guida", - L"N/A", //this is an acronym for "Not Applicable." - L"Usa (Corpo a corpo)", - L"Usa (Arma da fuoco)", - L"Usa (Lama)", - L"Usa (Esplosivo)", - L"Usa (Kit medico)", - L"Afferra", - L"Ricarica", - L"Dai", - L"%s è partito.", - L"%s è arrivato.", - L"%s ha esaurito i Punti Azione.", - L"%s non è disponibile.", - L"%s è tutto bendato.", - L"%s non è provvisto di bende.", - L"Nemico nel settore!", - L"Nessun nemico in vista.", - L"Punti Azione insufficienti.", - L"Nessuno sta utilizzando il comando a distanza.", - L"Il fuoco a raffica ha svuotato il caricatore!", - L"SOLDATO", - L"CREPITUS", - L"ESERCITO", - L"CIVILE", - L"ZOMBIE", // TODO.Translate - L"Settore di uscita", - L"OK", - L"Annulla", - L"Merc. selezionato", - L"Tutta la squadra", - L"Vai nel settore", - L"Vai alla mappa", - L"Non puoi uscire dal settore da questa parte.", - L"You can't leave in turn based mode.", // TODO.Translate - L"%s è troppo lontano.", - L"Rimuovi le fronde degli alberi", - L"Mostra le fronde degli alberi", - L"CORVO", //Crow, as in the large black bird - L"COLLO", - L"TESTA", - L"TORSO", - L"GAMBE", - L"Vuoi dire alla Regina cosa vuole sapere?", - L"Impronta digitale ID ottenuta", - L"Impronta digitale ID non valida. Arma non funzionante", - L"Raggiunto scopo", - L"Sentiero bloccato", - L"Deposita/Preleva soldi", //Help text over the $ button on the Single Merc Panel - L"Nessuno ha bisogno del pronto soccorso.", - L"Bloccato.", // Short form of JAMMED, for small inv slots - L"Non può andare là.", // used ( now ) for when we click on a cliff - L"Il sentiero è bloccato. Vuoi scambiare le posizioni con questa persona?", - L"La persona rifiuta di muoversi.", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Sei d'accordo a pagare %s?", - L"Accetti il trattamento medico gratuito?", - L"Vuoi sposare %s?", //Daryl - L"Quadro delle chiavi", - L"Non puoi farlo con un EPC.", - L"Risparmi %s?", //Krott - L"Fuori dalla gittata dell'arma", - L"Minatore", - L"Il veicolo può viaggiare solo tra i settori", - L"Non è in grado di fasciarsi da solo ora", - L"Sentiero bloccato per %s", - L"I mercenari catturati dall'esercito di %s, sono stati imprigionati qui!", //Deidranna - L"Serratura manomessa", - L"Serratura distrutta", - L"Qualcun altro sta provando a utilizzare questa porta.", - L"Salute: %d/%d\nCarburante: %d/%d", - L"%s non riesce a vedere %s.", // Cannot see person trying to talk to - L"Attachment removed", - L"Non può guadagnare un altro veicolo poichè già avete 2", - - // added by Flugente for defusing/setting up trap networks // TODO.Translate - L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", - L"Set defusing frequency:", - L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", - L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", - L"Select tripwire hierarchy (1 - 4) and network (A - D):", - - // added by Flugente to display food status - L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"What do you want to do?", - L"Fill canteens", - L"Clean guns (Merc)", - L"Clean guns (Team)", - L"Take off clothes", - L"Lose disguise", - L"Militia inspection", - L"Militia restock", - L"Test disguise", - L"unused", - - // added by Flugente: decide what to do with the corpses - L"What do you want to do with the body?", - L"Decapitate", - L"Gut", - L"Take Clothes", - L"Take Body", - - // Flugente: weapon cleaning - L"%s cleaned %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", // TODO.Translate - L"Field interrogation", - L"Where do you want to send the %d prisoners?", // TODO.Translate - L"Let them go", - L"What do you want to do?", - L"Demand surrender", - L"Offer surrender", - L"Distract", // TODO.Translate - L"Talk", - L"Recruit Turncoat", // TODO: translate - - // TODO.Translate - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Disarm trap", - L"Inspect trap", - L"Remove blue flag", - L"Blow up!", - L"Activate tripwire", - L"Deactivate tripwire", - L"Reveal tripwire", - L"No detonator or remote detonator found!", - L"This bomb is already armed!", - L"Safe", - L"Mostly safe", - L"Risky", - L"Dangerous", - L"High danger!", - - L"Mask", // TODO.Translate - L"NVG", - L"Item", - - L"This feature works only with New Inventory System", - L"No item in your main hand", - L"Nowhere to place item from main hand", - L"No defined item for this quick slot", - L"No free hand for new item", - L"Item not found", - L"Cannot take item to main hand", - - L"Attempting to bandage travelling mercs...", //TODO.Translate - - L"Improve gear", - L"%s changed %s for superior version", - L"%s picked up %s", // TODO.Translate - - L"%s has stopped chatting with %s", // TODO.Translate -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"Se selezionato, il settore adiacente verrà immediatamente caricato.", - L"Se selezionato, sarete automaticamente posti nella schermata della mappa\nvisto che i vostri mercenari avranno bisogno di tempo per viaggiare.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"Questo settore è occupato da nemicie non potete lasciare mercenari qui.\nDovete risolvere questa situazione prima di caricare qualsiasi altro settore.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"Rimuovendo i vostri mercenari da questo settore,\nil settore adiacente verrà immediatamente caricato.", - L"Rimuovendo i vostri mercenari da questo settore,\nverrete automaticamente postinella schermata della mappa\nvisto che i vostri mercenari avranno bisogno di tempo per viaggiare.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s ha bisogno di essere scortato dai vostri mercenari e non può lasciare questo settore da solo.", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s non può lasciare questo settore da solo, perché sta scortando %s.", //male singular - L"%s non può lasciare questo settore da solo, perché sta scortando %s.", //female singular - L"%s non può lasciare questo settore da solo, perché sta scortando altre persone.", //male plural - L"%s non può lasciare questo settore da solo, perché sta scortando altre persone.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"Tutti i vostri personaggi devono trovarsi nei paraggi\nin modo da permettere alla squadra di attraversare.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"Se selezionato, %s viaggerà da solo, e\nautomaticamente verrà riassegnato a un'unica squadra.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"Se selezionato, la vostra \nsquadra attualmente selezionata viaggerà, lasciando questo settore.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s è scortato dai vostri mercenari e non può lasciare questo settore da solo. Gli altri vostri mercenari devono trovarsi nelle vicinanze prima che possiate andarvene.", -}; - - - -STR16 pRepairStrings[] = -{ - L"Oggetti", // tell merc to repair items in inventory - L"Sito SAM", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Annulla", // cancel this menu - L"Robot", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"perduto", // the merc has lost a statistic - L"guadagnato", // the merc has gained a statistic - L"punto di", // singular - L"punti di", // plural - L"livello di", // singular - L"livelli di", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"salute.", - L"agilità.", - L"destrezza.", - L"saggezza.", - L"pronto socc.", - L"abilità esplosivi.", - L"abilità meccanica.", - L"mira.", - L"esperienza.", - L"forza.", - L"comando.", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"Distanza totale: ", // total distance for helicopter to travel - L"Sicura: ", // distance to travel to destination - L"Insicura: ", // distance to return from destination to airport - L"Costo totale: ", // total cost of trip by helicopter - L"TPA: ", // ETA is an acronym for "estimated time of arrival" - L"L'elicottero ha poco carburante e deve atterrare in territorio nemico!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Passeggeri: ", - L"Seleziona Skyrider o gli Arrivi Drop-off?", - L"Skyrider", - L"Arrivi", - L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> // TODO.Translate - L"Helicopter will now return straight to base, do you want to drop down passengers before?", // TODO.Translate - L"Remaining Fuel:", // TODO.Translate - L"Dist. To Refuel Site:", // TODO.Translate -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", - L"Helicopter is currently disassembled. Wait until repairs are finished.", - L"Repairs completed. Helicopter is available again.", - L"Helicopter is fully refueled.", - - L"Helicopter has exceeded maximum range!", // TODO.Translate -}; - -STR16 sMapLevelString[] = -{ - L"Sottolivello:", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"Leale", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"non può portare ordini di viaggio sottoterra.", -}; - -STR16 gsTimeStrings[] = -{ - L"h", // hours abbreviation - L"m", // minutes abbreviation - L"s", // seconds abbreviation - L"g", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"Nessuno", - L"Ospedale", - L"Factory", // TODO.Translate - L"Prigione", - L"Militare", - L"Aeroporto", - L"Frequenza di fuoco", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"Inventario", - L"Uscita", - L"Repair", // TODO.Translate - L"Factories", // TODO.Translate -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"Dimensione", // 0 // size of the town in sectors - L"", // blank line, required - L"Controllo", // how much of town is controlled - L"Nessuno", // none of this town - L"Miniera", // mine associated with this town - L"Lealtà", // 5 // the loyalty level of this town - L"Addestrato", // the forces in the town trained by the player - L"", - L"Servizi principali", // main facilities in this town - L"Livello", // the training level of civilians in this town - L"addestramento civili", // 10 // state of civilian training in town - L"Esercito", // the state of the trained civilians in the town - - // Flugente: prisoner texts // TODO.Translate - L"Prisoners", - L"%d (capacity %d)", - L"%d Admins", - L"%d Regulars", - L"%d Elites", - L"%d Officers", - L"%d Generals", - L"%d Civilians", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"Miniera", // 0 - L"Argento", - L"Oro", - L"Produzione giornaliera", - L"Produzione possibile", - L"Abbandonata", // 5 - L"Chiudi", - L"Esci", - L"Produci", - L"Stato", - L"Ammontare produzione", - L"Resource", // 10 L"Tipo di minerale", // TODO.Translate - L"Controllo della città", - L"Lealtà della città", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"Forze nemiche", - L"Settore", - L"# di oggetti", - L"Sconosciuto", - - L"Controllato", - L"Sì", - L"No", - L"Status/Software status:", // TODO.Translate - - L"Additional Intel", // TODO:Translate -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s non è abbastanza vicino.", //Merc is in sector with item but not close enough - L"Non può selezionare quel mercenario.", //MARK CARTER - L"%s non si trova nel settore per prendere quell'oggetto.", - L"Durante il combattimento, dovrete raccogliere gli oggetti manualmente.", - L"Durante il combattimento, dovrete rilasciare gli oggetti manualmente.", - L"%s non si trova nel settore per rilasciare quell'oggetto.", - L"Durante il combattimento, non potete ricaricare con una cassa del ammo.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Posizione", // sector these items are in - L"Totale oggetti", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"Per cambiare l'incarico di un mercenario, come, ad esempio, cambiare la squadra, dottore o riparare, cliccate dentro la colonna 'Compito'", - L"Per assegnare a un mercenario una destinazione in un altro settore, cliccate dentro la colonna 'Dest'", - L"Una volta che a un mercenario è stato ordinato di procedere, una compressione di tempo gli permetterà di muoversi.", - L"Cliccando di sinistro, selezionerete il settore. Cliccando di sinistro un'altra volta, darete al mercenario ordini di movimento. Cliccando di destro, darete informazioni sommarie al settore.", - L"Premete 'h' in questo settore di questa schermata ogni volta che vorrete accedere a questa finestra d'aiuto.", - L"Test Text", - L"Test Text", - L"Test Text", - L"Test Text", - L"Non potrete fare molto in questa schermata finché non arriverete ad Arulco. Quando avrete definito la vostra squadra, cliccate sul pulsante Compressione di Tempo in basso a destra. Questo diminuirà il tempo necessario alla vostra squadra per raggiungere Arulco.", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"Muovere mercenari nel settore", // title for movement box - L"Rotta spostamento esercito", // done with movement menu, start plotting movement - L"Annulla", // cancel this menu - L"Altro", // title for group of mercs not on squads nor in vehicles - L"Select all", // Select all squads TODO: Translate -}; - - -STR16 pUpdateMercStrings[] = -{ - L"Oops:", // an error has occured - L"Scaduto contratto mercenari:", // this pop up came up due to a merc contract ending - L"Portato a termine incarico mercenari:", // this pop up....due to more than one merc finishing assignments - L"Mercenari di nuovo al lavoro:", // this pop up ....due to more than one merc waking up and returing to work - L"Mercenari a riposo:", // this pop up ....due to more than one merc being tired and going to sleep - L"Contratti in scadenza:", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Mostra città (|w)", - L"Mostra |miniere", - L"Mos|tra squadre & nemici", - L"Mostra spazio |aereo", - L"Mostra oggett|i", - L"Mostra esercito & nemici (|Z)", - L"Show |Disease Data", // TODO.Translate - L"Show Weathe|r", - L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Next (|.)", // next page // TODO.Translate - L"Previous (|,)", // previous page // TODO.Translate - L"Exit Sector Inventory (|E|s|c)", // exit sector inventory // TODO.Translate - - // TODO.Translate - L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button - L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge - L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items - L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo - L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button - L"Toggle Get Item Display", // Flugente: move item display // TODO.Translate - L"Save Gear Template", // TODO.Translate - L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"Portati|le", - L"Tattico (|E|s|c)", - L"|Opzioni", - L"Dilata tempo (|+)", // time compress more - L"Comprime tempo (|-)", // time compress less - L"Messaggio precedente (|S|u)\nIndietro (|P|a|g|S|u)", // previous message in scrollable list - L"Messaggio successivo (|G|i|ù)\nAvanti (|P|a|g|G|i|ù)", // next message in the scrollable list - L"Inizia/Ferma tempo (|S|p|a|z|i|o)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Bilancio attuale", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s è morto.", -}; - - -STR16 pDayStrings[] = -{ - L"Giorno", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Enrico", - L"Psych Pro Inc", - L"Help Desk", - L"Psych Pro Inc", - L"Speck", - L"R.I.S.", //5 - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", //10 - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", //15 - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", //20 - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", //25 - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", //30 - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephan", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"Assicurazione M.I.S.", - L"Bobby Ray", - L"Capo", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"Indietro", - L"Avanti", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"Avete una nuova E-mail...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"Eliminate l'E-mail?", - L"Eliminate l'E-mail NON LETTA?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"Da:", - L"Sogg.:", - L"Giorno:", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"posta elettronica", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Contabile aggiuntivo", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Crediti:", // credit (subtract from) to player's account - L"Debiti:", // debit (add to) to player's account - L"Entrate effettive di ieri:", - L"Altri depositi di ieri:", - L"Debiti di ieri:", - L"Bilancio di fine giornata:", - L"Entrate effettive di oggi:", - L"Altri depositi di oggi:", - L"Debiti di oggi:", - L"Bilancio attuale:", - L"Entrate previste:", - L"Bilancio previsto:", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"Giorno", // the day column - L"Crediti", // the credits column (to ADD money to your account) - L"Debiti", // the debits column (to SUBTRACT money from your account) - L"Transazione", // transaction type - see TransactionText below - L"Bilancio", // balance at this point in time - L"Pagina", // page number - L"Giorno(i)", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"Interessi maturati", // interest the player has accumulated so far - L"Deposito anonimo", - L"Tassa di transazione", - L"Assunto", // Merc was hired - L"Acquistato da Bobby Ray", // Bobby Ray is the name of an arms dealer - L"Acconti pagati al M.E.R.C.", - L"Deposito medico per %s", // medical deposit for merc - L"Analisi del profilo I.M.P.", // IMP is the acronym for International Mercenary Profiling - L"Assicurazione acquistata per %s", - L"Assicurazione ridotta per %s", - L"Assicurazione estesa per %s", // johnny contract extended - L"Assicurazione annullata %s", - L"Richiesta di assicurazione per %s", // insurance claim for merc - L"1 giorno", // merc's contract extended for a day - L"1 settimana", // merc's contract extended for a week - L"2 settimane", // ... for 2 weeks - L"Entrata mineraria", - L"", //String nuked - L"Fiori acquistati", - L"Totale rimborso medico per %s", - L"Parziale rimborso medico per %s", - L"Nessun rimborso medico per %s", - L"Pagamento a %s", // %s is the name of the npc being paid - L"Trasferimento fondi a %s", // transfer funds to a merc - L"Trasferimento fondi da %s", // transfer funds from a merc - L"Equipaggiamento esercito in %s", // initial cost to equip a town's militia - L"Oggetti acquistati da%s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s soldi depositati.", - L"Sold Item(s) to the Locals", - L"Facility Use", // HEADROCK HAM 3.6 // TODO.Translate - L"Militia upkeep", // HEADROCK HAM 3.6 // TODO.Translate - L"Ransom for released prisoners", // Flugente: prisoner system TODO.Translate - L"WHO data subscription", // Flugente: disease TODO.Translate - L"Payment to Kerberus", // Flugente: PMC - L"SAM site repair", // Flugente: SAM repair // TODO.Translate - L"Trained workers", // Flugente: train workers - L"Drill militia in %s", // Flugente: drill militia // TODO.Translate - L"Mini event", // rftr: mini events // TODO: translate - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Assicurazione per", // insurance for a merc - L"Est. contratto di %s per 1 giorno.", // entend mercs contract by a day - L"Est. %s contratto per 1 settimana.", - L"Est. %s contratto per 2 settimane.", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"Skyrider è stato pagato $%d", // skyrider was paid an amount of money - L"A Skyrider bisogna ancora dare $%d", // skyrider is still owed an amount of money - L"Skyrider ha finito il carburante", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider è di nuovo pronto a volare.", // Skyrider was grounded but has been freed - L"Skyrider non ha passeggeri. Se avete intenzione di trasportare mercenari in questo settore, assegnateli prima al Veicolo/Elicottero.", -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"Ottimo", - L"Buono", - L"Medio", - L"Basso", - L"Panico", - L"Cattivo", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"L'equipaggio di %s è ora disponibile a Omerta (A9).", - L"L'equipaggio di %s è ora disponibile a Drassen (B13).", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"Salute", - L"Energia", - L"Morale", - L"Condizione", // the condition of the current vehicle (its "health") - L"Carburante", // the fuel level of the current vehicle (its "energy") - L"Poison", // TODO.Translate - L"Water", // drink level - L"Food", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Mercenario precedente (|S|i|n)", // previous merc in the list - L"Mercenario successivo (|D|e|s)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"TAP", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"Non lo vedrete mai più. Siete sicuri?", // do you want to continue and lose the item forever - L"Questo oggetto sembra DAVVERO importante. Siete DAVVERO SICURISSIMI di volerlo gettare via?", // does the user REALLY want to trash this item -}; - - -STR16 pMapErrorString[] = -{ - L"La squadra non può muoversi, se un mercenario dorme.", - -//1-5 - L"Muovete la squadra al primo piano.", - L"Ordini di movimento? È un settore nemico!", - L"I mercenari devono essere assegnati a una squadra o a un veicolo per potersi muovere.", - L"Non avete ancora membri nella squadra.", // you have no members, can't do anything - L"I mercenari non possono attenersi agli ordini.", // merc can't comply with your order -//6-10 - L"ha bisogno di una scorta per muoversi. Inseritelo in una squadra che ne è provvista.", // merc can't move unescorted .. for a male - L"ha bisogno di una scorta per muoversi. Inseritela in una squadra che ne è provvista.", // for a female - L"Il mercenario non è ancora arrivato ad %s!", - L"Sembra che ci siano negoziazioni di contratto da stabilire.", - L"", -//11-15 - L"Ordini di movimento? È in corso una battaglia!", - L"Siete stati vittima di un'imboscata da parte dai Bloodcat nel settore %s!", - L"Siete appena entrati in quella che sembra una tana di un Bloodcat nel settore %s!", - L"", - L"La zona SAM in %s è stata assediata.", -//16-20 - L"La miniera di %s è stata assediata. La vostra entrata giornaliera è stata ridotta di %s per giorno.", - L"Il nemico ha assediato il settore %s senza incontrare resistenza.", - L"Almeno uno dei vostri mercenari non ha potuto essere affidato a questo incarico.", - L"%s non ha potuto unirsi alla %s visto che è completamente pieno", - L"%s non ha potuto unirsi alla %s visto che è troppo lontano.", -//21-25 - L"La miniera di %s è stata invasa dalle forze armate di Deidranna!", - L"Le forze armate di Deidranna hanno appena invaso la zona SAM in %s", - L"Le forze armate di Deidranna hanno appena invaso %s", - L"Le forze armate di Deidranna sono appena state avvistate in %s.", - L"Le forze armate di Deidranna sono appena partite per %s.", -//26-30 - L"Almeno uno dei vostri mercenari non può riposarsi.", - L"Almeno uno dei vostri mercenari non è stato svegliato.", - L"L'esercito non si farà vivo finché non avranno finito di esercitarsi.", - L"%s non possono ricevere ordini di movimento adesso.", - L"I militari che non si trovano entro i confini della città non possono essere spostati inquesto settore.", -//31-35 - L"Non potete avere soldati in %s.", - L"Un veicolo non può muoversi se è vuoto!", - L"%s è troppo grave per muoversi!", - L"Prima dovete lasciare il museo!", - L"%s è morto!", -//36-40 - L"%s non può andare a %s perché si sta muovendo", - L"%s non può salire sul veicolo in quel modo", - L"%s non può unirsi alla %s", - L"Non potete comprimere il tempo finché non arruolerete nuovi mercenari!", - L"Questo veicolo può muoversi solo lungo le strade!", -//41-45 - L"Non potete riassegnare i mercenari che sono già in movimento", - L"Il veicolo è privo di benzina!", - L"%s è troppo stanco per muoversi.", - L"Nessuno a bordo è in grado di guidare il veicolo.", - L"Uno o più membri di questa squadra possono muoversi ora.", -//46-50 - L"Uno o più degli altri mercenari non può muoversi ora.", - L"Il veicolo è troppo danneggiato!", - L"Osservate che solo due mercenari potrebbero addestrare i militari in questo settore.", - L"Il robot non può muoversi senza il suo controller. Metteteli nella stessa squadra.", - L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate -// 51-55 - L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Cliccate di nuovo su una destinazione per confermare la vostra meta finale, oppure cliccate su un altro settore per fissare più tappe.", - L"Rotta di spostamento confermata.", - L"Destinazione immutata.", - L"Rotta di spostamento annullata.", - L"Rotta di spostamento accorciata.", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Cliccate sul settore dove desiderate che i mercenari arrivino.", - L"OK. I mercenari che stavano arrivando si sono dileguati a %s", - L"I mercenari non possono essere trasportati, lo spazio aereo non è sicuro!", - L"Annullato. Il settore d'arrivo è immutato", - L"Lo spazio aereo sopra %s non è più sicuro! Il settore d'arrivo è stato spostato a %s.", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Entra nell'inventario (|I|n|v|i|o)", - L"Getta via l'oggetto", - L"Esci dall'inventario (|I|n|v|i|o)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"Volete che %s lasci il suo equipaggiamento dove si trova ora (%s) o in seguito a (%s) dopo aver preso il volo?", - L"%s sta per partire e spedirà il suo equipaggiamento a %s.", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"Volete che %s lasci il suo equipaggiamento dove si trova ora (%s) o in seguito a (%s) dopo aver preso il volo?", - L"%s sta per partire e spedirà il suo equipaggiamento a %s.", -}; - - -STR16 pMercContractOverStrings[] = -{ - L": contratto scaduto. Egli è tornato a casa.", // merc's contract is over and has departed - L": contratto scaduto. Ella è tornata a casa.", // merc's contract is over and has departed - L": contratto terminato. Egli è partito.", // merc's contract has been terminated - L": contratto terminato. Ella è partita.", // merc's contract has been terminated - L"Dovete al M.E.R.C. troppi soldi, così %s è partito.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages - -STR16 pImpPopUpStrings[] = -{ - L"Codice di autorizzazione non valido", - L"State per riiniziare l'intero processo di profilo. Ne siete certi?", - L"Inserite nome e cognome corretti oltre che al sesso", - L"L'analisi preliminare del vostro stato finanziario mostra che non potete offrire un'analisi di profilo.", - L"Opzione non valida questa volta.", - L"Per completare un profilo accurato, dovete aver spazio per almeno uno dei membri della squadra.", - L"Profilo già completato.", - L"Cannot load I.M.P. character from disk.", - L"You have already reached the maximum number of I.M.P. characters.", - L"You have already three I.M.P characters with the same gender on your team.", - L"You cannot afford the I.M.P character.", // 10 - L"The new I.M.P character has joined your team.", - L"You have already selected the maximum number of traits.", // TODO.Translate - L"No voicesets found.", // TODO.Translate -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"Cosa offriamo", // about the IMP site - L"INIZIO", // begin profiling - L"Personalità", // personality section - L"Attributi", // personal stats/attributes section - L"Appearance", // changed from portrait - L"Voce %d", // the voice selection - L"Fine", // done profiling - L"Ricomincio", // start over profiling - L"Sì, scelgo la risposta evidenziata.", - L"Sì", - L"No", - L"Finito", // finished answering questions - L"Prec.", // previous question..abbreviated form - L"Avanti", // next question - L"SÌ, LO SONO.", // yes, I am certain - L"NO, VOGLIO RICOMINCIARE.", // no, I want to start over the profiling process - L"SÌ", - L"NO", - L"Indietro", // back one page - L"Annulla", // cancel selection - L"Sì, ne sono certo.", - L"No, lasciami dare un'altra occhiata.", - L"Immatricolazione", // the IMP site registry..when name and gender is selected - L"Analisi", // analyzing your profile results - L"OK", - L"Character", // Change from "Voice" - L"Nessuna", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"With your character traits chosen, it is time to select your skills.", - L"To complete the process, select your attributes.", - L"To commence actual profiling, select portrait, voice and colors.", - L"Now that you have completed your appearence choice, proceed to character analysis.", -}; - -STR16 pFilesTitle[] = -{ - L"Gestione risorse", -}; - -STR16 pFilesSenderList[] = -{ - L"Rapporto", // the recon report sent to the player. Recon is an abbreviation for reconissance - L"Intercetta #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"Intercetta #2", // second intercept file - L"Intercetta #3", // third intercept file - L"Intercetta #4", // fourth intercept file - L"Intercetta #5", // fifth intercept file - L"Intercetta #6", // sixth intercept file -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"Registro", -}; - -STR16 pHistoryHeaders[] = -{ - L"Giorno", // the day the history event occurred - L"Pagina", // the current page in the history report we are in - L"Giorno", // the days the history report occurs over - L"Posizione", // location (in sector) the event occurred - L"Evento", // the event label -}; - -// Externalized to "TableData\History.xml" -/* -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"%s è stato assunto dall'A.I.M.", // merc was hired from the aim site - L"%s è stato assunto dal M.E.R.C.", // merc was hired from the aim site - L"%s morì.", // merc was killed - L"Acconti stanziati al M.E.R.C.", // paid outstanding bills at MERC - L"Assegno accettato da Enrico Chivaldori", - //6-10 - L"Profilo generato I.M.P.", - L"Acquistato contratto d'assicurazione per %s.", // insurance contract purchased - L"Annullato contratto d'assicurazione per %s.", // insurance contract canceled - L"Versamento per richiesta assicurazione per %s.", // insurance claim payout for merc - L"Esteso contratto di %s di 1 giorno.", // Extented "mercs name"'s for a day - //11-15 - L"Esteso contratto di %s di 1 settimana.", // Extented "mercs name"'s for a week - L"Esteso contratto di %s di 2 settimane.", // Extented "mercs name"'s 2 weeks - L"%s è stato congedato.", // "merc's name" was dismissed. - L"%s è partito.", // "merc's name" quit. - L"avventura iniziata.", // a particular quest started - //16-20 - L"avventura completata.", - L"Parlato col capo minatore di %s", // talked to head miner of town - L"Liberato %s", - L"Inganno utilizzato", - L"Il cibo dovrebbe arrivare a Omerta domani", - //21-25 - L"%s ha lasciato la squadra per diventare la moglie di Daryl Hick", - L"contratto di %s scaduto.", - L"%s è stato arruolato.", - L"Enrico si è lamentato della mancanza di progresso", - L"Vinta battaglia", - //26-30 - L"%s miniera ha iniziato a esaurire i minerali", - L"%s miniera ha esaurito i minerali", - L"%s miniera è stata chiusa", - L"%s miniera è stata riaperta", - L"Trovata una prigione chiamata Tixa.", - //31-35 - L"Sentito di una fabbrica segreta di armi chiamata Orta.", - L"Alcuni scienziati a Orta hanno donato una serie di lanciamissili.", - L"La regina Deidranna ha bisogno di cadaveri.", - L"Frank ha parlato di scontri a San Mona.", - L"Un paziente pensa che lui abbia visto qualcosa nella miniera.", - //36-40 - L"Incontrato qualcuno di nome Devin - vende esplosivi.", - L"Imbattutosi nel famoso ex-mercenario dell'A.I.M. Mike!", - L"Incontrato Tony - si occupa di armi.", - L"Preso un lanciamissili dal Sergente Krott.", - L"Concessa a Kyle la licenza del negozio di pelle di Angel.", - //41-45 - L"Madlab ha proposto di costruire un robot.", - L"Gabby può effettuare operazioni di sabotaggio contro sistemi d'allarme.", - L"Keith è fuori dall'affare.", - L"Howard ha fornito cianuro alla regina Deidranna.", - L"Incontrato Keith - si occupa di un po' di tutto a Cambria.", - //46-50 - L"Incontrato Howard - si occupa di farmaceutica a Balime", - L"Incontrato Perko - conduce una piccola impresa di riparazioni.", - L"Incontrato Sam di Balime - ha un negozio di hardware.", - L"Franz si occupa di elettronica e altro.", - L"Arnold possiede un'impresa di riparazioni a Grumm.", - //51-55 - L"Fredo si occupa di elettronica a Grumm.", - L"Donazione ricevuta da un ricco ragazzo a Balime.", - L"Incontrato un rivenditore di un deposito di robivecchi di nome Jake.", - L"Alcuni vagabondi ci hanno dato una scheda elettronica.", - L"Corrotto Walter per aprire la porta del seminterrato.", - //56-60 - L"Se Dave ha benzina, potrà fare il pieno gratis.", - L"Corrotto Pablo.", - L"Kingpin tiene i soldi nella miniera di San Mona.", - L"%s ha vinto il Combattimento Estremo", - L"%s ha perso il Combattimento Estremo", - //61-65 - L"%s è stato squalificato dal Combattimento Estremo", - L"trovati moltissimi soldi nascosti nella miniera abbandonata.", - L"Incontrato assassino ingaggiato da Kingpin.", - L"Perso il controllo del settore", //ENEMY_INVASION_CODE - L"Difeso il settore", - //66-70 - L"Persa la battaglia", //ENEMY_ENCOUNTER_CODE - L"Imboscata fatale", //ENEMY_AMBUSH_CODE - L"Annientata imboscata nemica", - L"Attacco fallito", //ENTERING_ENEMY_SECTOR_CODE - L"Attacco riuscito!", - //71-75 - L"Creature attaccate", //CREATURE_ATTACK_CODE - L"Ucciso dai Bloodcat", //BLOODCAT_AMBUSH_CODE - L"Massacrati dai Bloodcat", - L"%s è stato ucciso", - L"Data a Carmen la testa di un terrorista", - //76-80 - L"Massacro sinistro", - L"Ucciso %s", - L"Met Waldo - aircraft mechanic.", - L"Helicopter repairs started. Estimated time: %d hour(s).", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"N/A", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"E-mail", - L"Rete", - L"Finanza", - L"Personale", - L"Cronologia", - L"File", - L"Chiudi", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"A.I.M.", - L"Bobby Ray", - L"I.M.P", - L"M.E.R.C.", - L"Pompe funebri", - L"Fiorista", - L"Assicurazione", - L"Annulla", - L"Campaign History", // TODO.Translate - L"MeLoDY", - L"WHO", - L"Kerberus", - L"Militia Overview", // TODO.Translate - L"R.I.S.", - L"Factories", // TODO.Translate -}; - -STR16 pBookmarkTitle[] = -{ - L"Segnalibri", - L"Cliccate con il destro per accedere a questo menu in futuro.", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"Caricamento", - L"Caricamento", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Prendi", // take money from merc - L"Dai", // give money to merc - L"Annulla", // cancel transaction - L"Pulisci", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Trasferisce $", // transfer money to merc -- short form - L"Stato", // view stats of the merc - L"Inventario", // view the inventory of the merc - L"Impiego", -}; - -STR16 sATMText[ ]= -{ - L"Trasferisci fondi?", // transfer funds to merc? - L"Ok?", // are we certain? - L"Inserisci somma", // enter the amount you want to transfer to merc - L"Seleziona tipo", // select the type of transfer to merc - L"Fondi insufficienti", // not enough money to transfer to merc - L"La somma deve essere un multiplo di $10", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"Errore", - L"Il server non ha entrata NSD.", - L"Controlla l'indirizzo LRU e prova di nuovo.", - L"OK", - L"Connessione intermittente all'host. Tempi d'attesa più lunghi per il trasferimento.", -}; - - -STR16 pPersonnelString[] = -{ - L"Mercenari:", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"A.I.M.", - L"Membri dell'A.I.M.", - L"Ritratti A.I.M.", // a mug shot is another name for a portrait - L"Categoria A.I.M.", - L"A.I.M.", - L"Membri dell'A.I.M.", - L"Tattiche A.I.M.", - L"Storia A.I.M.", - L"Collegamenti A.I.M.", - L"M.E.R.C.", - L"Conti M.E.R.C.", - L"Registrazione M.E.R.C.", - L"Indice M.E.R.C.", - L"Bobby Ray", - L"Bobby Ray - Armi", - L"Bobby Ray - Munizioni", - L"Bobby Ray - Giubb. A-P", - L"Bobby Ray - Varie", //misc is an abbreviation for miscellaneous - L"Bobby Ray - Usato", - L"Bobby Ray - Ordine Mail", - L"I.M.P.", - L"I.M.P.", - L"Servizio Fioristi Riuniti", - L"Servizio Fioristi Riuniti - Galleria", - L"Servizio Fioristi Riuniti - Ordine", - L"Servizio Fioristi Riuniti - Card Gallery", - L"Agenti assicurativi Malleus, Incus & Stapes", - L"Informazione", - L"Contratto", - L"Commenti", - L"Servizio di pompe funebri di McGillicutty", - L"", - L"URL non ritrovato.", - L"%s Press Council - Conflict Summary", // TODO.Translate - L"%s Press Council - Battle Reports", - L"%s Press Council - Latest News", - L"%s Press Council - About us", - L"Mercs Love or Dislike You - About us", // TODO.Translate - L"Mercs Love or Dislike You - Analyze a team", - L"Mercs Love or Dislike You - Pairwise comparison", - L"Mercs Love or Dislike You - Personality", - L"WHO - About WHO", - L"WHO - Disease in Arulco", - L"WHO - Helpful Tips", - L"Kerberus - About Us", - L"Kerberus - Hire a Team", - L"Kerberus - Individual Contracts", - L"Militia Overview", - L"Recon Intelligence Services - Information Requests", // TODO.Translate - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Factory Overview", // TODO.Translate - L"Bobby Ray's - Recent Shipments", - L"Encyclopedia", - L"Encyclopedia - Data", - L"Briefing Room", - L"Briefing Room - Data", -}; - -STR16 pShowBookmarkString[] = -{ - L"Aiuto", - L"Cliccate su Rete un'altra volta per i segnalibri.", -}; - -STR16 pLaptopTitles[] = -{ - L"Cassetta della posta", - L"Gestione risorse", - L"Personale", - L"Contabile aggiuntivo", - L"Ceppo storico", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"Ucciso in azione", - L"Licenziato", - L"Altro", - L"Sposato", - L"Contratto Scaduto", - L"Liberato", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"Squadra attuale", - L"Partenze", - L"Costo giornaliero:", - L"Costo più alto:", - L"Costo più basso:", - L"Ucciso in azione:", - L"Licenziato:", - L"Altro:", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Più basso", - L"Normale", - L"Più alto", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"SAL", - L"AGI", - L"DES", - L"FOR", - L"COM", - L"SAG", - L"LIV", - L"TIR", - L"MEC", - L"ESP", - L"PS", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"Contratto", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"Continua", - L"Fermati", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"Siete stati sconfitti in questo settore!", - L"Il nemico, non avendo alcuna pietà delle anime della squadra, divorerà ognuno di voi!", - L"I membri inconscenti della vostra squadra sono stati catturati!", - L"I membri della vostra squadra sono stati fatti prigionieri dal nemico.", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"Indietro", - L"Avanti", - L"Accetta", - L"Pulisci", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"Indietro", - L"Avanti", -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Autorizza", - L"Home Page", - L"Conto #:", - L"Merc", - L"Giorni", - L"Tasso", //5 - L"Costo", - L"Totale:", - L"Conferma il pagamento di %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+gear)", // TODO.Translate -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Previous", - L"Next", -}; - - - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"Salute", - L"Agilità", - L"Destrezza", - L"Forza", - L"Comando", - L"Saggezza", - L"Liv. esperienza", - L"Mira", - L"Meccanica", - L"Esplosivi", - L"Pronto socc.", - - L"Indietro", - L"Ricompensa", - L"Successivo", - L"Info. addizionali", - L"Home Page", - L"Assoldato", - L"Salario:", - L"Al giorno", - L"Gear:", // TODO.Translate - L"Totale:", - L"Deceduto", - - L"Avete già una squadra di mercenari.", - L"Compra equip.?", - L"Non disponibile", - L"Unsettled Bills", // TODO.Translate - L"Bio", // TODO.Translate - L"Inv", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Apri conto", - L"Annulla", - L"Non hai alcun conto. Vuoi aprirne uno?", -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Speck T. Kline, fondatore e proprietario", - L"Per aprire un conto, cliccate qui", - L"Per visualizzare un conto, cliccate qui", - L"Per visualizzare i file, cliccate qui", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Transfer failed. No funds available.", // TODO.Translate -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"Impresa di pompe funebri di McGillicutty: Il dolore delle famiglie che hanno fornito il loro aiuto dal 1983.", - L"Precedentemente mercenario dell'A.I.M. Murray \"Pops\" McGillicutty è un impresario di pompe funebri qualificato e con molta esperienza.", - L"Essendo coinvolto profondamente nella morte e nel lutto per tutta la sua vita, Pops sa quanto sia difficile affrontarli.", - L"L'impresa di pompe funebri di McGillicutty offre una vasta gamma di servizi funebri, da una spalla su cui piangere a ricostruzioni post-mortem per corpi mutilati o sfigurati.", - L"Lasciate che l'impresa di pompe funebri di McGillicutty vi aiuti e i vostri amati riposeranno in pace.", - - // Text for the various links available at the bottom of the page - L"SPEDISCI FIORI", - L"ESPOSIZIONE DI BARE & URNE", - L"SERVIZI DI CREMAZIONE", - L"SERVIZI PRE-FUNEBRI", - L"CERIMONIALE FUNEBRE", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"Purtroppo, il resto di questo sito non è stato completato a causa di una morte in famiglia. Aspettando la lettura del testamento e la riscossione dell'eredità, il sito verrà ultimato non appena possibile.", - L"Vi porgiamo, comunque, le nostre condolianze in questo momento di dolore. Contatteci ancora.", -}; - -// Text for the florist Home Page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Galleria", - - //Address of United Florist - - L"\"Ci lanciamo col paracadute ovunque\"", - L"1-555-SCENT-ME", - L"333 Dot. NoseGay, Seedy City, CA USA 90210", - L"http://www.scent-me.com", - - // detail of the florist page - - L"Siamo veloci ed efficienti!", - L"Consegna il giorno successivo in quasi tutto il mondo, garantito. Applicate alcune restrizioni.", - L"I prezzi più bassi in tutto il mondo, garantito!", - L"Mostrateci un prezzo concorrente più basso per qualsiasi progetto, e riceverete una dozzina di rose, gratuitamente.", - L"Flora, fauna & fiori in volo dal 1981.", - L"I nostri paracadutisti decorati ex-bomber lanceranno il vostro bouquet entro un raggio di dieci miglia dalla locazione richiesta. Sempre e ovunque!", - L"Soddisfiamo la vostra fantasia floreale.", - L"Lasciate che Bruce, il nostro esperto in composizioni floreali, selezioni con cura i fiori più freschi e della migliore qualità dalle nostre serre più esclusive.", - L"E ricordate, se non l'abbiamo, possiamo coltivarlo - E subito!", -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"Indietro", - L"Spedisci", - L"Home", - L"Galleria", - - L"Nome del bouquet:", - L"Prezzo:", //5 - L"Numero ordine:", - L"Data consegna", - L"gior. succ.", - L"arriva quando arriva", - L"Luogo consegna", //10 - L"Servizi aggiuntivi", - L"Bouquet schiacciato ($10)", - L"Rose nere ($20)", - L"Bouquet appassito ($10)", - L"Torta di frutta (se disponibile 10$)", //15 - L"Sentimenti personali:", - L"Il vostro messaggio non può essere più lungo di 75 caratteri.", - L"... oppure sceglietene uno dai nostri", - - L"BIGLIETTI STANDARD", - L"Informazioni sulla fatturazione",//20 - - //The text that goes beside the area where the user can enter their name - - L"Nome:", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"Prec.", //abbreviation for previous - L"Succ.", //abbreviation for next - - L"Clicca sul modello che vuoi ordinare.", - L"Ricorda: c'è un supplemento di 10$ per tutti i bouquet appassiti o schiacciati.", - - //text on the button - - L"Home", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"Cliccate sulla vostra selezione", - L"Indietro", -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"Ordine", //Title of the page - L"Qta", // The number of items ordered - L"Peso (%s)", // The weight of the item - L"Nome oggetto", // The name of the item - L"Prezzo unit.", // the item's weight - L"Totale", //5 // The total price of all of items of the same type - L"Sotto-totale", // The sub total of all the item totals added - L"S&C (Vedete luogo consegna)", // S&H is an acronym for Shipping and Handling - L"Totale finale", // The grand total of all item totals + the shipping and handling - L"Luogo consegna", - L"Spedizione veloce", //10 // See below - L"Costo (per %s.)", // The cost to ship the items - L"Espresso di notte", // Gets deliverd the next day - L"2 giorni d'affari", // Gets delivered in 2 days - L"Servizio standard", // Gets delivered in 3 days - L"Annulla ordine",//15 // Clears the order page - L"Accetta ordine", // Accept the order - L"Indietro", // text on the button that returns to the previous page - L"Home Page", // Text on the button that returns to the home Page - L"* Indica oggetti usati", // Disclaimer stating that the item is used - L"Non potete permettervi di pagare questo.", //20 // A popup message that to warn of not enough money - L"", // Gets displayed when there is no valid city selected - L"Siete sicuri di volere spedire quest'ordine a %s?", // A popup that asks if the city selected is the correct one - L"peso del pacco**", // Displays the weight of the package - L"** Peso min.", // Disclaimer states that there is a minimum weight for the package - L"Spedizioni", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"Pistol", - L"M. Pistol", - L"SMG", - L"Rifle", - L"SN Rifle", - L"AS Rifle", - L"MG", - L"Shotgun", - L"Heavy W.", - - // Ammo - L"Pistol", - L"M. Pistol", - L"SMG", - L"Rifle", - L"SN Rifle", - L"AS Rifle", - L"MG", - L"Shotgun", - - // Used - L"Guns", - L"Armor", - L"LBE Gear", - L"Misc", - - // Armour - L"Helmets", - L"Vests", - L"Leggings", - L"Plates", - - // Misc - L"Blades", - L"Th. Knives", - L"Blunt W.", - L"Grenades", - L"Bombs", - L"Med. Kits", - L"Kits", - L"Face Items", - L"LBE Gear", - L"Optics", // Madd: new BR filters // TODO.Translate - L"Grip/LAM", - L"Muzzle", - L"Stock", - L"Mag/Trig.", - L"Other Att.", - L"Misc.", -}; - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"Ordini:", // Title - // instructions on how to order - L"Cliccate sull'oggetto. Sinistro per aggiungere pezzi, destro per toglierne. Una volta selezionata la quantità, procedete col nuovo ordine.", - - //Text on the buttons to go the various links - - L"Oggetti prec.", // - L"Armi", //3 - L"Munizioni", //4 - L"Giubb. A-P", //5 - L"Varie", //6 //misc is an abbreviation for miscellaneous - L"Usato", //7 - L"Oggetti succ.", - L"ORDINE", - L"Home Page", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"La vostra squadra ha",//11 - L"arma(i) che usa(no) questo tipo di munizioni", //12 - - //The following lines provide information on the items - - L"Peso:", // Weight of all the items of the same type - L"Cal.:", // the caliber of the gun - L"Mag.:", // number of rounds of ammo the Magazine can hold - L"Git.:", // The range of the gun - L"Dan.:", // Damage of the weapon - L"FFA:", // Weapon's Rate Of Fire, acronym ROF - L"PA:", // Weapon's Action Points, acronym AP - L"Stun:", // Weapon's Stun Damage - L"Protect:", // Armour's Protection - L"Trav.:", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Costo:", // Cost of the item - L"Inventario:", // The number of items still in the store's inventory - L"Num. ordine:", // The number of items on order - L"Danneggiato", // If the item is damaged - L"Peso:", // the Weight of the item - L"Totale:", // The total cost of all items on order - L"* funzionale al %%", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"Darn! Quest'ordine qui accetterà solo " ,//First part - L" oggetti. Se avete intenzione di ordinare più merce (ed è quello che speriamo), fate un ordine a parte e accettate le nostre scuse.", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Ci dispiace. Non disponiamo più di questo articolo. Riprovate più tardi.", - - //A popup that tells the user that the store is temporarily sold out - - L"Ci dispiace, ma siamo momentaneamente sprovvisti di oggetti di questo genere.", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"Questo è il negozio con la fornitura militare e le armi più recenti e potenti!", - L"Possiamo trovare la soluzione perfetta per tutte le vostre esigenze riguardo agli esplosivi.", - L"Oggetti usati e riparati", - - //Text for the various links to the sub pages - - L"Varie", - L"ARMI", - L"MUNIZIONI", //5 - L"GIUBB. A-P", - - //Details on the web site - - L"Se non lo vendiamo, non potrete averlo!", - L"In costruzione", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"Membri dell'A.I.M.", // Title - // Title for the way to sort - L"Ordine per:", - - // sort by... - - L"Prezzo", - L"Esperienza", - L"Mira", - L"Meccanica", - L"Esplosivi", - L"Pronto socc.", - L"Salute", - L"Agilità", - L"Destrezza", - L"Forza", - L"Comando", - L"Saggezza", - L"Nome", - - //Text of the links to other AIM pages - - L"Visualizza le facce dei mercenari disponibili", - L"Rivedi il file di ogni singolo mercenario", - L"Visualizza la galleria degli associati dell'A.I.M.", - - // text to display how the entries will be sorted - - L"Crescente", - L"Decrescente", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Indietro", - L"Home Page", - L"Indice", - L"Avanti", - L"Disaccordo", - L"Accordo", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"Clic sinistro", - L"per contattarlo", - L"Clic destro", - L"per i mercenari disponibili.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Salute", - L"Agilità", - L"Destrezza", - L"Forza", - L"Comando", - L"Saggezza", - L"Esperienza", - L"Mira", - L"Meccanica", - L"Esplosivi", - L"Pronto socc.", //10 - - // the contract expenses' area - - L"Paga", - L"Durata", - L"1 giorno", - L"1 settimana", - L"2 settimane", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"Indietro", - L"Contratto", - L"Avanti", - - L"Ulteriori informazioni", // Title for the additional info for the merc's bio - L"Membri attivi", //20 // Title of the page - L"Dispositivo opzionale:", // Displays the optional gear cost - L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's // TODO.Translate - L"Deposito MEDICO richiesto", // If the merc required a medical deposit, this is displayed - L"Kit 1", // Text on Starting Gear Selection Button 1 // TODO.Translate - L"Kit 2", // Text on Starting Gear Selection Button 2 - L"Kit 3", // Text on Starting Gear Selection Button 3 - L"Kit 4", // Text on Starting Gear Selection Button 4 - L"Kit 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"Costo del contratto:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"1 giorno", - L"1 settimana", - L"2 settimane", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"Nessun equip.", - L"Compra equip.", - - // Text on the Buttons - - L"TRASFERISCI FONDI", // to actually hire the merc - L"ANNULLA", // go back to the previous menu - L"ARRUOLA", // go to menu in which you can hire the merc - L"TACI", // stops talking with the merc - L"OK", - L"LASCIA MESSAGGIO", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Videoconferenza con", - L"Connessione...", - - L"con deposito" // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"TRASFERIMENTO ELETTRONICO FONDI RIUSCITO", // You hired the merc - L"NON IN GRADO DI TRASFERIRE", // Player doesn't have enough money, message 1 - L"FONDI INSUFFICIENTI", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"In missione", - L"Lascia messaggio", - L"Deceduto", - - //If you try to hire more mercs than game can support - - L"Avete già una squadra di mercenari.", - - L"Messaggio già registrato", - L"Messaggio registrato", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"Collegamenti dell'A.I.M.", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"Storia dell'A.I.M.", //Title - - // Text on the buttons at the bottom of the page - - L"Indietro", - L"Home Page", - L"Associati", - L"Avanti", -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Prezzo", - L"Esperienza", - L"Mira", - L"Meccanica", - L"Esplosivi", - L"Pronto socc.", - L"Salute", - L"Agilità", - L"Destrezza", - L"Forza", - L"Comando", - L"Saggezza", - L"Nome", - - // The title of the page, the above text gets added at the end of this text - - L"Membri scelti dell'A.I.M. in ordine crescente secondo %s", - L"Membri scelti dell'A.I.M. in ordine decrescente secondo %s", - - // Instructions to the players on what to do - - L"Clic sinistro", - L"Per scegliere un mercenario.", //10 - L"Clic destro", - L"Per selezionare opzioni", - - // Gets displayed on top of the merc's portrait if they are... - - L"Via", - L"Deceduto", //14 - L"In missione", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"PAGINA 1", - L"PAGINA 2", - L"PAGINA 3", - - L"Membri dell'A.I.M.", // Title of the page - - L"FINE", // Stops displaying information on selected merc - L"Next page", // TODO.Translate -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"A.I.M. e il logo A.I.M. sono marchi registrati in diversi paesi.", - L"Di conseguenza, non cercate di copiarci.", - L"Copyright 1998-1999 A.I.M., Ltd. Tutti i diritti riservati.", - - //Text for an advertisement that gets displayed on the AIM page - - L"Servizi riuniti floreali", - L"\"Atterriamo col paracadute ovunque\"", //10 - L"Fallo bene", - L"... la prima volta", - L"Se non abbiamo armi e oggetti, non ne avrete bisogno.", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"Home Page", - L"Membri", - L"Associati", - L"Assicurazioni", - L"Storia", - L"Collegamenti", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"MERCANZIA IN STOCK", //Header for the merchandise available - L"PAGINA", //The current store inventory page being displayed - L"COSTO TOTALE", //The total cost of the the items in the Dealer inventory area - L"VALORE TOTALE", //The total value of items player wishes to sell - L"STIMATO", //Button text for dealer to evaluate items the player wants to sell - L"TRANSAZIONE", //Button text which completes the deal. Makes the transaction. - L"FINE", //Text for the button which will leave the shopkeeper interface. - L"COSTO DI RIPARAZIONE", //The amount the dealer will charge to repair the merc's goods - L"1 ORA", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d ORE", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"RIPARATO", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"Non c'è abbastanza spazio nel vostro margine di ordine.", //Message box that tells the user there is no more room to put there stuff - L"%d MINUTI", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Lascia oggetto a terra.", - L"BUDGET", // TODO.Translate -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Prendi", // Take money from the player - L"Dai", // Give money to the player - L"Annulla", // Cancel the transfer - L"Pulisci", // Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"Seleziona tipo", // tells the user to select either to give or take from the merc - L"Inserisci somma", // Enter the amount to transfer - L"Trasferisci fondi al mercenario", // Giving money to the merc - L"Trasferisci fondi dal mercenario", // Taking money from the merc - L"Fondi insufficienti", // Not enough money to transfer - L"Bilancio", // Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"Volete sottrarre %s dal vostro conto principale per coprire la differenza?", - L"Fondi insufficienti. Avete pochi %s", - L"Volete sottrarre %s dal vostro conto principale per coprire la spesa?", - L"Rivolgetevi all'operatore per iniziare la transazione", - L"Rivolgetevi all'operatore per riparare gli oggetti selezionati", - L"Fine conversazione", - L"Bilancio attuale", - - L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate - L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"Salva partita", - L"Carica partita", - L"Abbandona", - L"Next", - L"Prev", - L"Fine", - L"1.13 Features", - L"New in 1.13", - L"Options", - - //Text above the slider bars - L"Effetti", - L"Parlato", - L"Musica", - - //Confirmation pop when the user selects.. - L"Volete terminare la partita e tornare al menu principale?", - - L"Avete bisogno dell'opzione 'Parlato' o di quella 'Sottotitoli' per poter giocare.", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Salva partita", - L"Carica partita", - L"Annulla", - L"Salvamento selezionato", - L"Caricamento selezionato", - - L"Partita salvata con successo", - L"ERRORE durante il salvataggio!", - L"Partita caricata con successo", - L"ERRORE durante il caricamento!", - - L"La versione del gioco nel file della partita salvata è diverso dalla versione attuale. È abbastanza sicuro proseguire. Continuate?", - L"I file della partita salvata potrebbero essere annullati. Volete cancellarli tutti?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"La versionbe salvata è cambiata. Fateci avere un report, se incontrate problemi. Continuate?", -#else - L"Tentativo di caricare una versione salvata più vecchia. Aggiornate e caricate automaticamente quella salvata?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"La versione salvata e la versione della partita sono cambiate. Fateci avere un report, se incontrate problemi. Continuate?", -#else - L"Tentativo di caricare una vecchia versione salvata. Aggiornate e caricate automaticamente quella salvata?", -#endif - L"Siete sicuri di volere sovrascrivere la partita salvata nello slot #%d?", - L"Volete caricare la partita dallo slot #", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"Lo spazio su disco si sta esaurendo. Sono disponibili solo %d MB, mentre per giocare a Jagged dovrebbero esserci almeno %d MB liberi .", - - L"Salvataggio in corso", //When saving a game, a message box with this string appears on the screen - - L"Armi normali", - L"Tonn. di armi", - L"Stile realistico", - L"Stile fantascientifico", - - L"Difficoltà", - L"Platinum Mode", //Placeholder English - L"Bobby Ray Quality", - L"Good", - L"Great", - L"Excellent", - L"Awesome", - - L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", - L"New Inventory does not work from the default 'Data' folder.", - - L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", - L"Bobby Ray Quantity", // TODO.Translate -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Livello mappa", - L"Non avete soldati. Avete bisogno di addestrare gli abitanti della città per poter disporre di un esercito cittadino.", - L"Entrata giornaliera", - L"Il mercenario ha l'assicurazione sulla vita", - L"%s non è stanco.", - L"%s si sta muovendo e non può riposare", - L"%s è troppo stanco, prova un po' più tardi.", - L"%s sta guidando.", - L"La squadra non può muoversi, se un mercenario dorme.", - - // stuff for contracts - L"Visto che non potete pagare il contratto, non avete neanche i soldi per coprire il premio dell'assicurazione sulla vita di questo nercenario.", - L"%s premio dell'assicurazione costerà %s per %d giorno(i) extra. Volete pagare?", - L"Settore inventario", - L"Il mercenario ha una copertura medica.", - - // other items - L"Medici", // people acting a field medics and bandaging wounded mercs - L"Pazienti", // people who are being bandaged by a medic - L"Fine", // Continue on with the game after autobandage is complete - L"Ferma", // Stop autobandaging of patients by medics now - L"Siamo spiacenti. Questa opzione è stata disabilitata in questo demo.", // informs player this option/button has been disabled in the demo - L"%s non ha un kit di riparazione.", - L"%s non ha un kit di riparazione.", - L"Non ci sono abbastanza persone che vogliono essere addestrate ora.", - L"%s è pieno di soldati.", - L"Il mercenario ha un contratto a tempo determinato.", - L"Il contratto del mercenario non è assicurato", - - // Flugente: disease texts describing what a map view does TODO.Translate - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate - - // Flugente: weather texts describing what a map view does - L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"La squadra %d ha notato qualcuno nel settore %s", - L"La squadra %s ha notato qualcuno nel settore %s", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"Addestrare una squadra dell'esercito cittadino costerà $", // telling player how much it will cost - L"Approvate la spesa?", // asking player if they wish to pay the amount requested - L"Non potete permettervelo.", // telling the player they can't afford to train this town - L"Continuate ad aeddestrare i soldati in %s (%s %d)?", // continue training this town? - - L"Costo $", // the cost in dollars to train militia - L"(S/N)", // abbreviated yes/no - L"", // unused - L"Addestrare l'esrecito cittadino nei settori di %d costerà $ %d. %s", // cost to train sveral sectors at once - - L"Non potete permettervi il $%d per addestrare l'esercito cittadino qui.", - L"%s ha bisogno di una percentuale di %d affinché possiate continuare ad addestrare i soldati.", - L"Non potete più addestrare i soldati a %s.", - L"liberate more town sectors", // TODO.Translate - - L"liberate new town sectors", // TODO.Translate - L"liberate more towns", // TODO.Translate - L"regain your lost progress", // TODO.Translate - L"progress further", // TODO.Translate - - L"recruit more rebels", // TODO.Translate -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"Potete prelevare solo fino a $20,000 alla volta.", - L"Sieti sicuri di voler depositare il %s sul vostro conto?", -}; - -STR16 gzCopyrightText[] = -{ - L"Copyright (C) 1999 Sir-tech Canada Ltd. Tutti i diritti riservati.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Parlato", - L"Conferme mute", - L"Sottotitoli", - L"Mettete in pausa il testo del dialogo", - L"Fumo dinamico", - L"Sangue e violenza", - L"Non è necessario usare il mouse!", - L"Vecchio metodo di selezione", - L"Mostra il percorso dei mercenari", - L"Mostra traiettoria colpi sbagliati", - L"Conferma in tempo reale", - L"Visualizza gli avvertimenti sveglio/addormentato", - L"Utilizza il sistema metrico", - L"Evidenzia Merc", - L"Sposta il cursore sui mercenari", - L"Sposta il cursore sulle porte", - L"Evidenzia gli oggetti", - L"Mostra le fronde degli alberi", - L"Smart Tree Tops", // TODO. Translate - L"Mostra strutture", - L"Mostra il cursore 3D", - L"Show Chance to Hit on cursor", - L"GL Burst uses Burst cursor", - L"Allow Enemy Taunts", // Changed from "Enemies Drop all Items" - SANDRO - L"High angle Grenade launching", - L"Allow Real Time Sneaking", // Changed from "Restrict extra Aim Levels" - SANDRO - L"Space selects next Squad", - L"Show Item Shadow", - L"Show Weapon Ranges in Tiles", - L"Tracer effect for single shot", - L"Rain noises", - L"Allow crows", - L"Show Soldier Tooltips", - L"Auto save", - L"Silent Skyrider", - L"Enhanced Description Box", - L"Forced Turn Mode", // add forced turn mode - L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map - L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate - L"Logical Bodytypes (WIP)", - L"Show Merc Ranks", // shows mercs ranks // TODO.Translate - L"Show Face gear graphics", // TODO.Translate - L"Show Face gear icons", - L"Disabilita Swap Cursore", // Disable Cursor Swap - L"Quiet Training", // Madd: mercs don't say quotes while training // TODO.Translate - L"Quiet Repairing", // Madd: mercs don't say quotes while repairing // 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"Allow Zombies", // Flugente Zombies - L"Enable inventory popups", // the_bob : enable popups for picking items from sector inv // TODO.Translate - L"Mark Remaining Hostiles", // TODO.Translate - L"Show LBE Content", // TODO.Translate - L"Invert mouse wheel", // TODO.Translate - L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances // TODO.Translate - L"Show enemy location", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--DEBUG OPTIONS--", // an example options screen options header (pure text) - L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. // TODO.Translate - L"Reset ALL game options", // failsafe show/hide option to reset all options - L"Do you really want to reset?", // a do once and reset self option (button like effect) - L"Debug Options in other builds", // allow debugging in release or mapeditor - L"DEBUG Render Option group", // an example option that will show/hide other options - L"Render Mouse Regions", // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Attivate questa opzione, se volete ascoltare il dialogo dei personaggi.", - - //Mute Confirmation - L"Attivate o disattivate le conferme verbali dei personaggi.", - - //Subtitles - L"Controllate se il testo su schermo viene visualizzato per il dialogo.", - - //Key to advance speech - L"Se i sottotitoli sono attivati, utilizzate questa opzione per leggere tranquillamente i dialoghi NPC.", - - //Toggle smoke animation - L"Disattivate questa opzione, se il fumo dinamico diminuisce la frequenza d'aggiornamento.", - - //Blood n Gore - L"Disattivate questa opzione, se il sangue vi disturba.", - - //Never move my mouse - L"Disattivate questa opzione per muovere automaticamente il mouse sulle finestre a comparsa di conferma al loro apparire.", - - //Old selection method - L"Attivate questa opzione per selezionare i personaggi e muoverli come nel vecchio JA (dato che la funzione è stata invertita).", - - //Show movement path - L"Attivate questa opzione per visualizzare i sentieri di movimento in tempo reale (oppure disattivatela utilizzando il tasto |M|a|i|u|s|c).", - - //show misses - L"Attivate per far sì che la partita vi mostri dove finiscono i proiettili quando \"sbagliate\".", - - //Real Time Confirmation - L"Se attivata, sarà richiesto un altro clic su \"salva\" per il movimento in tempo reale.", - - //Sleep/Wake notification - L"Se attivata, verrete avvisati quando i mercenari in \"servizio\" vanno a riposare e quando rientrano in servizio.", - - //Use the metric system - L"Se attivata, utilizza il sistema metrico di misurazione; altrimenti ricorre al sistema britannico.", - - //Highlight Mercs - L"Quando attivato, evidenzia il mercenario (non visibile ai nemici).\nAttiva/disattiva nel gioco con (|G)", - - //Smart cursor - L"Se attivata, muovendo il cursore vicino ai vostri mercenari li evidenzierà automaticamente.", - - //snap cursor to the door - L"Se attivata, muovendo il cursore vicino a una porta farà posizionare automaticamente il cursore sopra di questa.", - - //glow items - L"Se attivata, l'opzione evidenzierà gli Oggetti automaticamente. (|C|t|r|l+|A|l|t+|I)", - - //toggle tree tops - L"Se attivata, mostra le fronde degli alberi. (|T)", - - //smart tree tops - L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate - - //toggle wireframe - L"Se attivata, visualizza le |Strutture dei muri nascosti. (|C|t|r|l+|A|l|t+|W)", - - L"Se attivata, il cursore di movimento verrà mostrato in 3D. (|H|o|m|e)", - - // Options for 1.13 - L"When ON, the chance to hit is shown on the cursor.", - L"When ON, GL burst uses burst cursor.", - L"When ON, enemies will occasionally comment certain actions.", // Changed from Enemies Drop All Items - SANDRO - L"When ON, grenade launchers fire grenades at higher angles. (|A|l|t+|Q)", - L"When ON, the turn based mode will not be entered when sneaking unnoticed and seeing an enemy unless pressing |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO - L"When ON, |S|p|a|c|e selects next squad automatically.", - L"When ON, item shadows will be shown.", - L"When ON, weapon ranges will be shown in tiles.", - L"When ON, tracer effect will be shown for single shots.", - L"When ON, you will hear rain noises when it is raining.", - L"When ON, the crows are present in game.", - 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, Skyrider will not talk anymore.", - 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+|T).", // add forced turn mode - 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, mercenary body graphic can change along with equipped gear.\n(not fully implemented yet, will make mercs invisible if activated)", // 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 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"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, zombies will spawn. Beware!", // allow zombies // TODO.Translate - L"When ON, enables popup boxes that appear when you left click on empty merc inventory slots while viewing sector inventory in mapscreen.", // TODO.Translate - L"When ON, approximate locations of the last enemies in the sector are highlighted.", // TODO.Translate - L"When ON, show the contents of an LBE item, otherwise show the regular NAS interface.", // TODO.Translate - L"When ON, inverts mouse wheel directions.", // TODO.Translate - L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate - L"When ON, shows last known enemy location.", //TODO.Translate - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Force all pending Bobby Ray shipments", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", - L"Click me to fix corrupt game settings", // failsafe show/hide option to reset all options - L"Click me to fix corrupt game settings", // a do once and reset self option (button like effect) - L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor - L"Toggle to display debugging render options", // an example option that will show/hide other options - L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - - -STR16 gzGIOScreenText[] = -{ - L"INSTALLAZIONE INIZIALE DEL GIOCO", -#ifdef JA2UB - L"Random Manuel texts", - L"Off", - L"On", -#else - L"Versione del gioco", - L"Realistica", - L"Fantascientifica", -#endif - L"Platinum", //Placeholder English - L"Opzioni delle armi", - L"Available Arsenal", // changed by SANDRO - L"Varietà di armi", - L"Normale", - L"Livello di difficoltà", - L"Principiante", - L"Esperto", - L"Professionista", - L"Start", // TODO.Translate - L"Annulla", - L"Difficoltà extra", - L"Tempo illimitato", - L"Turni a tempo", - L"Disabilitato per Demo", - L"Bobby Ray Quality", - L"Good", - L"Great", - L"Excellent", - L"Awesome", - L"INSANE", - L"Inventory / Attachments", // TODO.Translate - L"NOT USED", - L"NOT USED", - L"Load MP Game", - L"INITIAL GAME SETTINGS (Only the server settings take effect)", - // Added by SANDRO - L"Skill Traits", - L"Old", - L"New", - L"Max IMP Characters", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Enemies Drop All Items", - L"Off", - L"On", -#ifdef JA2UB - L"Tex and John", - L"Random", - L"All", -#else - L"Number of Terrorists", - L"Random", - L"All", -#endif - L"Secret Weapon Caches", - L"Random", - L"All", - L"Progress Speed of Item Choices", - L"Very Slow", - L"Slow", - L"Normal", - L"Fast", - L"Very Fast", - - // TODO.Translate - L"Old / Old", - L"New / Old", - L"New / New", - - // TODO.Translate - // Squad Size - L"Max. Squad Size", - L"6", - L"8", - L"10", - //L"Faster Bobby Ray Shipments", - L"Inventory Manipulation Costs AP", - - L"New Chance to Hit System", - L"Improved Interrupt System", - L"Merc Story Backgrounds", // TODO.Translate - L"Food System",// TODO.Translate - L"Bobby Ray Quantity", // TODO.Translate - - // anv: extra iron man modes - L"Soft Iron Man", // TODO.Translate - L"Extreme Iron Man", // TODO.Translate -}; - -STR16 gzMPJScreenText[] = -{ - L"MULTIPLAYER", - L"Join", - L"Host", - L"Cancel", - L"Refresh", - L"Player Name", - L"Server IP", - L"Port", - L"Server Name", - L"# Plrs", - L"Version", - L"Game Type", - L"Ping", - L"You must enter a player name.", - L"You must enter a valid server IP address. For example: 84.114.195.239", - L"You must enter a valid Server Port between 1 and 65535.", -}; - -// TODO.Translate -STR16 gzMPJHelpText[] = -{ - L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", - L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", // TODO.Translate - - L"HOST", - L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", - L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", - L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", - L"Click on 'Host' to host a new Multiplayer Game.", - - L"JOIN", - L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", - L"Enter the external IP and the Port number from the host.", - L"Click on 'Join' to join an already hosted Multiplayer Game.", -}; - -// TODO.Translate -STR16 gzMPHScreenText[] = -{ - L"HOST GAME", - L"Start", - L"Cancel", - L"Server Name", - L"Game Type", - L"Deathmatch", - L"Team-Deathmatch", - L"Co-Operative", - L"Maximum Players", - L"Maximum Mercs", - L"Merc Selection", - L"Merc Hiring", - L"Hired by Player", - L"Starting Cash", - L"Allow Hiring Same Merc", - L"Report Hired Mercs", - L"Bobby Rays", - L"Sector Starting Edge", - L"You must enter a server name", - L"", - L"", - L"Starting Time", - L"", - L"", - L"Weapon Damage", - L"", - L"Timed Turns", - L"", - L"Enable Civilians in CO-OP", - L"", - L"Maximum Enemies in CO-OP", - L"Synchronize Game Directory", - L"MP Sync. Directory", - L"You must enter a file transfer directory.", - L"(Use '/' instead of '\\' for directory delimiters.)", - L"The specified synchronisation directory does not exist.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Yes", - L"No", - // Starting Time - L"Morning", - L"Afternoon", - L"Night", - // Starting Cash - L"Low", - L"Medium", - L"Heigh", - L"Unlimited", - // Time Turns - L"Never", - L"Slow", - L"Medium", - L"Fast", - // Weapon Damage - L"Very low", - L"Low", - L"Normal", - // Merc Hire - L"Random", - L"Normal", - // Sector Edge - L"Random", - L"Selectable", - // Bobby Ray / Hire same merc - L"Disable", - L"Allow", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Austin", //Austin, Texas, USA - L"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"Hong Kong", //Hong Kong, Hong Kong - L"Beirut", //Beirut, Lebanon (Middle East) - L"Londra", //London, England - L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Metavira", //The island of Metavira was the fictional location used by JA1 - L"Miami", //Miami, Florida, USA (SE corner of USA) - L"Mosca", //Moscow, USSR - L"New York", //New York, New York, USA - L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Parigi", //Paris, France - L"Tripoli", //Tripoli, Libya (eastern Mediterranean) - L"Tokyo", //Tokyo, Japan - L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Siete sicuri? Un valore di zero significa NESSUNA abilità.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"(max 8 personaggi)", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"Analisi", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"Grazie, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Voce", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"Ucciso in azione", - L"Licenziato", - L"Altro", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Manager del personale", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Partita in pausa", - L"Riprendi la partita (|P|a|u|s|a)", - L"Metti in pausa la partita (|P|a|u|s|a)", -}; - - -STR16 pMessageStrings[] = -{ - L"Vuoi uscire dalla partita?", - L"OK", - L"SÌ", - L"NO", - L"ANNULLA", - L"RIASSUMI", - L"MENTI", - L"Nessuna descrizione", //Save slots that don't have a description. - L"Partita salvata.", - L"Partita salvata.", - L"QuickSave", //The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"Giorno", - L"Mercenari", - L"Slot vuoto", //An empty save game slot - L"Demo", //Demo of JA2 - L"Rimuovi", //State of development of a project (JA2) that is a debug build - L"Abbandona", //Release build for JA2 - L"ppm", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"dm", //Abbreviation for minute. - L"m", //One character abbreviation for meter (metric distance measurement unit). - L"colpi", //Abbreviation for rounds (# of bullets) - L"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"lb", //Abbreviation for pounds (Imperial weight measurement unit) - L"Home Page", //Home as in homepage on the internet. - L"USD", //Abbreviation to US dollars - L"n/a", //Lowercase acronym for not applicable. - L"In corso", //Meanwhile - L"%s si trova ora nel settore %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying - //SirTech - L"Versione", - L"Slot di salvataggio rapido vuoto", - L"Questo slot è riservato ai salvataggi rapidi fatti dalle schermate tattiche e dalla mappa utilizzando ALT+S.", - L"Aperto", - L"Chiuso", - L"Lo spazio su disco si sta esaurendo. Avete liberi solo %s MB e Jagged Alliance 2 v1.13 ne richiede %s.", - L"Arruolato %s dall'A.I.M.", - L"%s ha preso %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s ha assunto %s.", //'Merc name' has taken 'item name' - L"%s non ha alcuna abilità medica",//'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"L'integrità del gioco è stata compromessa.", - L"ERRORE: CD-ROM non valido", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"Non c'è spazio per sparare da qui.", - - //Can't change stance due to objects in the way... - L"Non potete cambiare posizione questa volta.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Fai cadere", - L"Getta", - L"Passa", - - L"%s è passato a %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"Nessun spazio per passare %s a %s.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest (Ceramic Plate 'Attached)' - L" compreso )", - - //Cheat modes - L"Raggiunto il livello Cheat UNO", - L"Raggiunto il livello Cheat DUE", - - //Toggling various stealth modes - L"Squadra in modalità furtiva.", - L"Squadra non in modalità furtiva.", - L"%s in modalità furtiva.", - L"%s non in modalità furtiva.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Strutture visibili", - L"Strutture nascoste", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Non potete passare al livello superiore...", - L"Non esiste nessun livello inferiore...", - L"Entra nel seminterrato %d...", - L"Abbandona il seminterrato...", - - L"di", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Modalità segui disattiva.", - L"Modalità segui attiva.", - L"Cursore 3D disattivo.", - L"Cursore 3D attivo.", - L"Squadra %d attiva.", - L"Non potete permettervi di pagare a %s un salario giornaliero di %s", //first %s is the mercs name, the seconds is a string containing the salary - L"Salta", - L"%s non può andarsene da solo.", - L"Un salvataggio è stato chiamato SaveGame249.sav. Se necessario, rinominatelo da SaveGame01 a SaveGame10 e così potrete accedervi nella schermata di caricamento.", - L"%s ha bevuto del %s", - L"Un pacco è arivato a Drassen.", - L"%s dovrebbe arrivare al punto designato di partenza (settore %s) nel giorno %d, approssimativamente alle ore %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival - L"Registro aggiornato.", - L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", - L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", - L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO - L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO - L"Grenade Launchers fire at standard angles", - L"Grenade Launchers fire at higher angles", - // forced turn mode strings - L"Forced Turn Mode", - L"Normal turn mode", - L"Exit combat mode", - L"Forced Turn Mode Active, Entering Combat", - L"Salvataggio riuscito della partita nello slot End Turn Auto Save.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. - L"Client", - - // TODO.Translate - L"You cannot use the Old Inventory and the New Attachment System at the same time.", - - // TODO.Translate - L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID - L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save - L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"End-Turn Save #", // 95 // The text for the tactical end turn auto save - L"Saving Auto Save #", // 96 // The message box, when doing auto save - L"Saving", // 97 // The message box, when doing end turn auto save - L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save - L"This Slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) // TODO.Translate - L"Lock mouse cursor within game window boundary.", // 104 - L"Release mouse cursor from game window boundary.", // 105 - L"Move in Formation ON", // TODO.Translate - L"Move in Formation OFF", - L"Artificial Merc Light ON", // TODO.Translate - L"Artificial Merc Light OFF", - L"Squad %s active.", //TODO.Translate - L"%s smoked %s.", - L"Activate cheats?", - L"Deactivate cheats?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"OK", - L"Scorrimento su", - L"Seleziona tutto", - L"Scorrimento giù", - L"Annulla", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s non è abbstanza vicina per poter esser riparata.", - L"I vostri medici non sono riusciti a bendare completamente tutti.", -}; - -// TODO.Translate -STR16 pMilitiaButtonsHelpText[] = -{ - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", - L"Distribute available militia equally among all sectors", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Andate all'A.I.M. e arruolate alcuni mercenari (*Hint* è nel Laptop)", // to inform the player to hired some mercs to get things going -#ifdef JA2UB - L"Quando sarete pronti per partire per Tracona, cliccate sul pulsante nella parte in basso a destra dello schermo.", // to inform the player to hit time compression to get the game underway -#else - L"Quando sarete pronti per partire per Arulco, cliccate sul pulsante nella parte in basso a destra dello schermo.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Errore. File mancanti o corrotti. Il gioco verrà completato ora.", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"Visualizza E-mail", - L"Siti web", - L"Visualizza file e gli attach delle E-mail", - L"Legge il registro degli eventi", - L"Visualizza le informazioni inerenti la squadra", - L"Visualizza la situazione finanziaria e la storia", - L"Chiude laptop", - - //Bottom task bar icons (if they exist): - L"Avete nuove E-mail", - L"Avete nuovi file", - - //Bookmarks: - L"Associazione Internazionale Mercenari", - L"Ordinativi di armi online dal sito di Bobby Ray", - L"Istituto del Profilo del Mercenario", - L"Centro più economico di reclutamento", - L"Impresa di pompe funebri McGillicutty", - L"Servizio Fioristi Riuniti", - L"Contratti assicurativi per agenti A.I.M.", - //New Bookmarks - L"", - L"Encyclopedia", - L"Briefing Room", - L"Campaign History", // TODO.Translate - L"Mercenaries Love or Dislike You", // TODO.Translate - L"World Health Organization", - L"Kerberus - Experience In Security", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services", // TODO.Translate - L"Controlled factories", // TODO.Translate -}; - - -STR16 gzHelpScreenText[] = -{ - L"Esci dalla schermata di aiuto", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"È in corso una battaglia. Potete solo ritirarvi dalla schermata delle tattiche.", - L"|Entra nel settore per continuare l'attuale battaglia in corso.", - L"|Automaticamente decide l'esito della battaglia in corso.", - L"Non potete decidere l'esito della battaglia in corso automaticamente, se siete voi ad attaccare.", - L"Non potete decidere l'esito della battaglia in corso automaticamente, se subite un'imboscata.", - L"Non potete decidere l'esito della battaglia in corso automaticamente, se state combattendo contro le creature nelle miniere.", - L"Non potete decidere l'esito della battaglia in corso automaticamente, se ci sono civili nemici.", - L"Non potete decidere l'esito della battaglia in corso automaticamente, se ci sono dei Bloodcat.", - L"BATTAGLIA IN CORSO", - L"Non potete ritirarvi ora.", -}; - -STR16 gzMiscString[] = -{ - L"I vostri soldati continuano a combattere senza l'aiuto dei vostri mercenari...", - L"Il veicolo non ha più bisogno di carburante.", - L"La tanica della benzina è piena %d%%.", - L"L'esercito di Deidrannaha riguadagnato il controllo completo su %s.", - L"Avete perso una stazione di rifornimento.", -}; - -STR16 gzIntroScreen[] = -{ - L"Video introduttivo non trovato", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s sente un %s rumore proveniente da %s.", - L"%s sente un %s rumore di MOVIMENTO proveniente da %s.", - L"%s sente uno %s SCRICCHIOLIO proveniente da %s.", - L"%s sente un %s TONFO NELL'ACQUA proveniente da %s.", - L"%s sente un %s URTO proveniente da %s.", - L"%s hears a %s GUNFIRE coming from %s.", // anv: without this, all further noise notifications were off by 1! // TODO.Translate - L"%s sente una %s ESPLOSIONE verso %s.", - L"%s sente un %s URLO verso %s.", - L"%s sente un %s IMPATTO verso %s.", - L"%s sente un %s IMPATTO a %s.", - L"%s sente un %s SCHIANTO proveniente da %s.", - L"%s sente un %s FRASTUONO proveniente da %s.", - L"", // anv: placeholder for silent alarm // TODO.Translate - L"%s hears someone's %s VOICE coming from %s.", // anv: report enemy taunt to player // TODO.Translate -}; - -// TODO.Translate -STR16 pTauntUnknownVoice[] = -{ - L"Unknown Voice", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Nome (|F|1)", - L"Assegnato (|F|2)", - L"Tipo di riposo (|F|3)", - L"Postazione (|F|4)", - L"Destinazione (|F|5)", - L"Durata dell'incarico (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"Errore 404", - L"Luogo non trovato.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"Spedizioni recenti", - L"Ordine #", - L"Numero di oggetti", - L"Ordinato per", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"Programmatore del gioco", // Chris Camfield - L"Co-designer / Autore", // Shaun Lyng - L"Programmatore sistemi strategici & Editor", //Kris Marnes - L"Produttore / Co-designer", // Ian Currie - L"Co-designer / Designer della mappa", // Linda Currie - L"Grafico", // Eric \"WTF\" Cheng - L"Coordinatore beta, supporto", // Lynn Holowka - L"Grafico straordinario", // Norman \"NRG\" Olsen - L"Guru dell'audio", // George Brooks - L"Designer delle schermate / Grafico", // Andrew Stacey - L"Capo grafico / Animatore", // Scot Loving - L"Capo programmatore", // Andrew \"Big Cheese Doddle\" Emmons - L"Programmatore", // Dave French - L"Programmatore sistemi & bilancio di gioco", // Alex Meduna - L"Grafico dei ritratti", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(deve ancora esercitarsi con la punteggiatura)", // Shaun Lyng - L"(\"Fatto. Devo solo perfezionarmi\")", //Kris \"The Cow Rape Man\" Marnes - L"(sta diventando troppo vecchio per questo)", // Ian Currie - L"(sta lavorando a Wizardry 8)", // Linda Currie - L"(obbligato a occuparsi anche del CQ)", // Eric \"WTF\" Cheng - L"(ci ha lasciato per CFSA...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(Testa matta e amante del jazz)", // Andrew Stacey - L"(il suo nome vero è Robert)", // Scot Loving - L"(l'unica persona responsabile)", // Andrew \"Big Cheese Doddle\" Emmons - L"(può ora tornare al motocross)", // Dave French - L"(rubato da Wizardry 8)", // Alex Meduna - L"", // Joey \"Joeker\" Whelan", -}; - -STR16 sRepairsDoneString[] = -{ - L"%s ha finito di riparare gli oggetti.", - L"%s ha finito di riparare le armi e i giubbotti antiproiettile di tutti.", - L"%s ha finito di riparare gli oggetti dell'equipaggiamento di tutti.", - L"%s finished repairing everyone's large carried items.", - L"%s finished repairing everyone's medium carried items.", - L"%s finished repairing everyone's small carried items.", - L"%s finished repairing everyone's LBE gear.", - L"%s finished cleaning everyone's guns.", // TODO.Translate -}; - -STR16 zGioDifConfirmText[]= -{ - //L"You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode?", - L"Avete selezionato la modalità PRINCIPIANTE. Questo scenario è adatto a chi gioca per la prima volta a Jagged Alliance, a chi prova a giocare per la prima volta in generale o a chi desidera combattere battaglie più brevi nel gioco. La vostra decisione influirà sull'intero corso della partita; scegliete, quindi, con attenzione. Siete sicuri di voler giocare nella modalità PRINCIPIANTE?", - - //L"You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode?", - L"Avete selezionato la modalità ESPERTO. Questo scenario è adatto a chi ha già una certa dimestichezza con Jagged Alliance o con giochi simili. La vostra decisione influirà sull'intero corso della partita; scegliete, quindi, con attenzione. Siete sicuri di voler giocare nella modalità ESPERTO?", - - //L"You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode?", - L"Avete selezionato la modalità PROFESSIONISTA. Siete avvertiti. Non malediteci, se vi ritroverete a brandelli. La vostra decisione influirà sull'intero corso della partita; scegliete, quindi, con attenzione. Siete sicuri di voler giocare nella modalità PROFESSIONISTA?", - - L"You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"%S file di dati della schermata di caricamento non trovato...", - - //1-5 - L"Il robot non può lasciare questo settore, se nessuno sta usando il controller.", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"Non potete comprimere il tempo ora. Aspettate le esplosioni!", - - //'Name' refuses to move. - L"%s si rifiuta di muoversi.", - - //%s a merc name - L"%s non ha abbastanza energia per cambiare posizione.", - - //A message that pops up when a vehicle runs out of gas. - L"Il %s ha esaurito la benzina e ora è rimasto a piedi a %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"sopra", - L"sotto", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"Nessuno dei vostri mercenari non sa praticare il pronto soccorso.", - L"Non ci sono supporti medici per bendare.", - L"Non ci sono stati supporti medici sufficienti per bendare tutti.", - L"Nessuno dei vostri mercenari ha bisogno di fasciature.", - L"Fascia i mercenari automaticamento.", - L"Tutti i vostri mercenari sono stati bendati.", - - //14 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - L"(tetto)", - - L"Salute: %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d contro %d", - - L"Il %s è pieno!", //(ex "The ice cream truck is full") - - L"%s non ha bisogno immediatamente di pronto soccorso o di fasciature, quanto piuttosto di cure mediche più serie e/o riposo.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s è stato colpito alla gamba e collassa!", - //Name can't speak right now. - L"%s non può parlare ora.", - - //22-24 plural versions - L"%d l'esercito verde è stato promosso a veterano.", - L"%d l'esercito verde è stato promosso a regolare.", - L"%d l'esercito regolare è stato promosso a veterano.", - - //25 - L"Interruttore", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s è impazzito!", - - //27-28 - //Messages why a player can't time compress. - L"Non è al momento sicuro comprimere il tempo visto che avete dei mercenari nel settore %s.", - L"Non è al momento sicuro comprimere il tempo quando i mercenari sono nelle miniere infestate dalle creature.", - - //29-31 singular versions - L"1 esercito verde è stato promosso a veterano.", - L"1 esercito verde è stato promosso a regolare.", - L"1 eserciro regolare è stato promosso a veterano.", - - //32-34 - L"%s non dice nulla.", - L"Andate in superficie?", - L"(Squadra %d)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s ha riparato %s's %s", - - //36 - L"BLOODCAT", - - //37-38 "Name trips and falls" - L"%s trips and falls", - L"Questo oggetto non può essere raccolto qui.", - - //39 - L"Nessuno dei vostri rimanenti mercenari è in grado di combattere. L'esercito combatterà contro le creature da solo.", - - //40-43 - //%s is the name of merc. - L"%s è rimasto sprovvisto di kit medici!", - L"%s non è in grado di curare nessuno!", - L"%s è rimasto sprovvisto di forniture mediche!", - L"%s non è in grado di riparare niente!", - - //44-45 - L"Tempo di riparazione", - L"%s non può vedere questa persona.", - - //46-48 - L"L'estensore della canna dell'arma di %s si è rotto!", - L"No more than %d militia trainers are permitted in this sector.", // TODO.Translate - L"Siete sicuri?", - - //49-50 - L"Compressione del tempo", - L"La tanica della benzina del veicolo è ora piena.", - - //51-52 Fast help text in mapscreen. - L"Continua la compressione del tempo (|S|p|a|z|i|o)", - L"Ferma la compressione del tempo (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s ha sbloccata il %s", - L"%s ha sbloccato il %s di %s", - - //55 - L"Non potete comprimere il tempo mentre visualizzate l'inventario del settore.", - - L"Il CD ddel gioco Jagged Alliance 2 v1.13 non è stato trovato. Il programma verrà terminato.", - - L"Oggetti combinati con successo.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Attuale/Massimo Progresso: %d%%/%d%%", - - //59 - L"Accompagnate John e Mary?", - - L"Interruttore attivato.", - - L"%s's armour attachment has been smashed!", - L"%s fires %d more rounds than intended!", - L"%s fires one more round than intended!", - - L"You need to close the item description box first!", // TODO.Translate - - L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 // TODO.Translate -}; - -STR16 gzCWStrings[] = -{ - L"Call reinforcements to %s from adjacent sectors?", // TODO.Translate -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Location: %d\n", - L"%s|Brightness: %d / %d\n", - L"%s|Range to |Target: %d\n", - L"%s|I|D: %d\n", - L"%s|Orders: %d\n", - L"%s|Attitude: %d\n", - L"%s|Current |A|Ps: %d\n", - L"%s|Current |Health: %d\n", - L"%s|Current |Breath: %d\n", // TODO.Translate - L"%s|Current |Morale: %d\n", - L"%s|Current |S|hock: %d\n",// TODO.Translate - L"%s|Current |S|uppression Points: %d\n",// TODO.Translate - // Full info - L"%s|Helmet: %s\n", - L"%s|Vest: %s\n", - L"%s|Leggings: %s\n", - // Limited, Basic - L"|Armor: ", - L"Helmet", - L"Vest", - L"Leggings", - L"worn", - L"no Armor", - L"%s|N|V|G: %s\n", - L"no NVG", - L"%s|Gas |Mask: %s\n", - L"no Gas Mask", - L"%s|Head |Position |1: %s\n", - L"%s|Head |Position |2: %s\n", - L"\n(in Backpack) ", - L"%s|Weapon: %s ", - L"no Weapon", - L"Handgun", - L"SMG", - L"Rifle", - L"MG", - L"Shotgun", - L"Knife", - L"Heavy Weapon", - L"no Helmet", - L"no Vest", - L"no Leggings", - L"|Armor: %s\n", - // Added - SANDRO - L"%s|Skill 1: %s\n", - L"%s|Skill 2: %s\n", - L"%s|Skill 3: %s\n", - // Additional suppression effects - sevenfm // TODO.Translate - L"%s|A|Ps lost due to |S|uppression: %d\n", - L"%s|Suppression |Tolerance: %d\n", - L"%s|Effective |S|hock |Level: %d\n", - L"%s|A|I |Morale: %d\n", -}; - -STR16 New113Message[] = -{ - L"Storm started.", - L"Storm ended.", - L"Rain started.", - L"Rain ended.", - L"Watch out for snipers...", - L"Suppression fire!", - L"BRST", - L"AUTO", - L"GL", - L"GL BRST", - L"GL AUTO", - L"UB", - L"UBRST", - L"UAUTO", - L"BAYONET", - L"Sniper!", - L"Unable to split money due to having an item on your cursor.", - L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.", - L"Articolo cancellato", - L"Ha cancellato tutti gli articoli di questo tipo", - L"Articolo venduto", - L"Ha venduto tutti gli articoli di questo tipo", - L"You should check your goggles", - // Real Time Mode messages - L"In combat already", - L"No enemies in sight", - L"Real-time sneaking OFF", - L"Real-time sneaking ON", - //L"Enemy spotted! (Ctrl + x to enter turn based)", - L"Enemy spotted!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s was successful on stealing!", - L"%s had not enough action points to steal all selected items.", - L"Do you want to make surgery on %s before bandaging? (You can heal about %i Health.)", - L"Do you want to make surgery on %s? (You can heal about %i Health.)", - L"Do you wish to make surgeries first? (%i patient(s))", - L"Do you wish to make the surgery on this patient first?", - L"Apply first aid automatically with surgeries or without them?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Surgery on %s finished.", - L"%s is hit in the chest and loses a point of maximum health!", - L"%s is hit in the chest and loses %d points of maximum health!", - L"%s is blinded by the blast!", - L"%s has regained one point of lost %s", - L"%s has regained %d points of lost %s", - L"Your scouting skills prevented you to be ambushed by the enemy!", - L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", - L"%s is hit to groin and falls down in pain!", - ////////////////////////////////////////////////////////////////////////////////////// - L"Warning: enemy corpse found!!!", - L"%s [%d rnds]\n%s %1.1f %s", - L"Insufficient AP Points! Cost %d, you have %d.", // TODO.Translate - L"Hint: %s", // TODO.Translate - L"Player strength: %d - Enemy strength: %6.0f", // TODO.Translate Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"Cannot use skill!", // TODO.Translate - L"Cannot build while enemies are in this sector!", - L"Cannot spot that location!", - L"Incorrect GridNo for firing artillery!", - L"Radio frequencies are jammed. No communication possible!", - L"Radio action failed!", - L"Not enough mortar shells in sector to start a barrage!", - L"No signal shell item found in Items.xml!", - L"No High-Explosive shell item found in Items.xml!", - L"No mortars found, cannot commence barrage!", - L"Already jamming signal, no need to do so again!", - L"Already listening for nearby sounds, no need to do so again!", - L"Already trying to spot, no need to do so again!", - L"Already scanning for jam signals, no need to do so again!", - L"%s could not apply %s to %s.", - L"%s orders reinforcements from %s.", - L"%s radio set is out of energy.", - L"a working radio set", - L"a binocular", - L"patience", - L"%s's shield has been destroyed!", // TODO.Translate - L" DELAY", // TODO.Translate - L"Yes*", - L"Yes", - L"No", - L"%s applied %s to %s.", // TODO.Translate -}; - -// TODO.Translate -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s cowers in fear!", - L"%s is pinned down!", - L"%s fires more rounds than intended!", - L"You cannot train militia in this sector.", - L"Militia picks up %s.", - L"Cannot train militia with enemies present!", - // 6 - 10 - L"%s lacks sufficient Leadership score to train militia.", - L"No more than %d Mobile Militia trainers are permitted in this sector.", - L"No room in %s or around it for new Mobile Militia!", - L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", - L"Can't staff a facility while enemies are present!", - // 11 - 15 - L"%s lacks sufficient Wisdom to staff this facility.", - L"The %s is already fully-staffed.", - L"It will cost $%d per hour to staff this facility. Do you wish to continue?", - L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", - L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", - // 16 - 20 - L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", - L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", - L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", - L"N/A in this sector", - L"Daily Expenses", - // 21 - 25 - L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", - L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 - L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 - L"To merge two items during combat, you must pick them both up first.", // HAM 5 -}; - -// TODO.Translate -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"No available adjustments", - L"%s was split into several parts.", - L"%s was split into several parts. Check %s's inventory for the resulting items.", - L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", - L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", - L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", - // 6 - 10 - L"Split Crate into Inventory", - L"Split into %d-rd Mags", - L"%s was split into %d Magazines containing %d rounds each.", - L"%s was split into %s's inventory.", - L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", - L"Instant mode", // TODO.Translate - L"Delayed mode", - L"Instant mode (%d AP)", - L"Delayed mode (%d AP)", -}; - -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Hereby be informed that due to Gastons's past performance his fees for services rendered have undergone an increase. Personally, I'm not surprised. ± ± Speck T. Kline ± ", - // Stogie: Text from Line 43 in Email.edt - L"Please be advised that, as of this moment, Stogies's fees for services rendered have increased to coincide with the increase in his abilities. ± ± Speck T. Kline ± ", - // Tex: Text from Line 45 in Email.edt - L"Please be advised that Tex's experience entitles him to more equitable compensation. He's fees have therefore been increased to more accurately reflect his worth. ± ± Speck T. Kline ± ", - // Biggens: Text from Line 49 in Email.edt - L"Please take note. Due to the improved performance of Biggens his fees for services rendered have undergone an increase. ± ± Speck T. Kline ± ", -}; - -// TODO.Translate -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk: Text from Line 58 - L"FW from AIM Server: Message from Victor Kolesnikov", - L"Hello. Monk here. Message received. I'm back if you want to see me. ± ± Waiting for your call. ±", - - // Brain: Text from Line 60 - L"FW from AIM Server: Message from Janno Allik", - L"Am now ready to consider tasks. There is a time and place for everything. ± ± Janno Allik ±", - - // Scream: Text from Line 62 - L"FW from AIM Server: Message from Lennart Vilde", - L"Lennart Vilde now available! ±", - - // Henning: Text from Line 64 - L"FW from AIM Server: Message from Henning von Branitz", - L"Have received your message, thanks. To discuss employment, contact me at the AIM Website. ± ± Till then! ± ± Henning von Branitz ±", - - // Luc: Text from Line 66 - L"FW from AIM Server: Message from Luc Fabre", - L"Mesage received, merci! Am happy to consider your proposals. You know where to find me. ± ± Looking forward to hearing from you. ±", - - // Laura: Text from Line 68 - L"FW from AIM Server: Message from Dr. Laura Colin", - L"Greetings! Good of you to leave a message It sounds interesting. ± ± Visit AIM again I would be happy to hear more. ± ± Best regards! ± ± Dr. Laura Colin ±", - - // Grace: Text from Line 70 - L"FW from AIM Server: Message from Graziella Girelli", - L"You wanted to contact me, but were not successful.± ± A family gathering. I am sure you understand? I've now had enough of family and would be very happy if you would contact me again over the AIM Site. ± ± Ciao! ±", - - // Rudolf: Text from Line 72 - L"FW from AIM Server: Message from Rudolf Steiger", - L"Do you know how many calls I get every day? Every tosser thinks he can call me. ± ± But I'm back, if you have something of interest for me. ±", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"FW from AIM Server: Message about merc availability", - L"I got your message. Waiting for your call. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Sniper: Occhi di un hawk, potete sparare le ale da un mosca ad cento yarde! ± ", - // Camouflage - L"Camuffamento: Oltre voi persino i cespugli sembrano sintetici! ± ", - // SANDRO - new strings for new traits added - // Ranger - L"Ranger: You are the one from Texas deserts, aren't you! ± ", - // Gunslinger - L"Gunslinger: With a handgun or two, you can be as lethal as the Billy Kid! ± ", - // Squadleader - L"Squadleader: Natural leader and boss, you are the big shot no kidding! ± ", - // Technician - L"Technician: Fixing stuff, removing traps, planting bombs, that's your bussiness! ± ", - // Doctor - L"Doctor: You can make a quick surgery with pocket-knife and chewing gum anywhere! ± ", - // Athletics - L"Athletics: Your speed and vitality is on top of possibilities! ± ", - // Bodybuilding - L"Bodybuilding: That big muscular figure which cannot be overlooked is you actually! ± ", - // Demolitions - L"Demolitions: You can blow up a whole city just by common home stuff! ± ", - // Scouting - L"Scouting: Nothing can escape your notice! ± ", - // Covert ops - L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate - // Radio Operator - L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate - // Survival - L"Survival: Nature is a second home to you. ± ", // TODO.Translate -}; - -STR16 NewInvMessage[] = -{ - L"Non può il fagotto della raccolta attualmente", - L"Nessun posto per mettere fagotto", - L"Fagotto non trovato", - L"La chiusura lampo funziona soltanto nel combattimento", - L"Non può muoversi mentre la chiusura lampo del fagotto attiva", - L"Siete sicuri voi desiderate vendere tutti gli articoli del settore?", - L"Siete sicuri voi desiderate cancellare tutti gli articoli del settore?", - L"Non può arrampicarsi mentre portano uno zaino", - L"All backpacks dropped", // TODO.Translate - L"All owned backpacks picked up", - L"%s drops backpack", - L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Initiating RakNet server...", - L"Server started, waiting for connections...", - L"You must now connect with your client to the server by pressing '2'.", - L"Server is already running.", - L"Server failed to start. Terminating.", - // 5 - L"%d/%d clients are ready for realtime-mode.", - L"Server disconnected and shutdown.", - L"Server is not running.", - L"Clients are still loading, please wait...", - L"You cannot change dropzone after the server has started.", - // 10 - L"Sent file '%S' - 100/100", - L"Finished sending files to '%S'.", - L"Started sending files to '%S'.", - L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", // TODO.Translate -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Initiating RakNet client...", - L"Connecting to IP: %S ...", - L"Received game settings:", - L"You are already connected.", - L"You are already connecting...", - // 5 - L"Client #%d - '%S' has hired '%s'.", - L"Client #%d - '%S' has hired another merc.", - L"You are ready - Total ready = %d/%d.", - L"You are no longer ready - Total ready = %d/%d.", - L"Starting battle...", - // 10 - L"Client #%d - '%S' is ready - Total ready = %d/%d.", - L"Client #%d - '%S' is no longer ready - Total ready = %d/%d", - L"You are ready. Awaiting other clients... Press 'OK' if you are not ready anymore.", - L"Let us the battle begin!", - L"A client must be running for starting the game.", - // 15 - L"Game cannot start. No mercs are hired...", - L"Awaiting 'OK' from server to unlock the laptop...", - L"Interrupted", - L"Finish from interrupt", - L"Mouse Grid Coordinates:", - // 20 - L"X: %d, Y: %d", - L"Grid Number: %d", - L"Server only feature", - L"Choose server manual override stage: ('1' - Enable laptop/hiring) ('2' - Launch/load level) ('3' - Unlock UI) ('4' - Finish placement)", - L"Sector=%s, Max Clients=%d, Max Mercs=%d, Game_Mode=%d, Same Merc=%d, Damage Multiplier=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Equip=%d, Dis Morale=%d, Testing=%d", - // 25 - L"", - L"New connection: Client #%d - '%S'.", - L"Team: %d.",//not used any more - L"'%s' (client %d - '%S') was killed by '%s' (client %d - '%S')", - L"Kicked client #%d - '%S'", - // 30 - L"Start a new turn for the selected client. #1: , #2: %S, #3: %S, #4: %S", - L"Starting turn for client #%d", - L"Requesting for realtime...", - L"Switched back to realtime.", - L"Error: Something went wrong switching back.", - // 35 - L"Unlock laptop for hiring? (Are all clients connected?)", - L"The server has unlocked the laptop. Begin hiring!", - L"Interruptor.", - L"You cannot change dropzone if you are only the client and not the server.", - L"You declined the offer to surrender, because you are in a multiplayer game.", - // 40 - L"All your mercs are wiped dead!", - L"Spectator mode enabled.", - L"You have been defeated!", - L"Sorry, climbing is disable in MP", - L"You Hired '%s'", - // 45 - L"You cant change the map once purchasing has commenced", - L"Map changed to '%s'", - L"Client '%s' disconnected, removing from game", - L"You were disconnected from the game, returning to the Main Menu", - L"Connection failed, Retrying in 5 seconds, %i retries left...", - //50 - L"Connection failed, giving up...", - L"You cannot start the game until another player has connected", - L"%s : %s", - L"Send to All", - L"Allies only", - // 55 - L"Cannot join game. This game has already started.", - L"%s (team): %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"Received all files from server.", - L"'%S' finished downloading from server.", - L"'%S' started downloading from server.", - L"Cannot start the game until all clients have finished receiving files", - L"This server requires that you download modified files to play, do you wish to continue?", - // 65 - L"Press 'Ready' to enter tactical screen.", - L"Cannot connect because your version %S is different from the server version %S.", - L"You killed an enemy soldier.", - L"Cannot start the game, because all teams are the same.", - L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", - // 70 // TODO.Translate - L"Could not save received file '%S'", - L"%s's bomb was disarmed by %s", - L"You loose, what a shame", // All over red rover - L"Spectator mode disabled", - L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", - // 75 - L"Team %s is wiped out.", - L"Client failed to start. Terminating.", - L"Client disconnected and shutdown.", - L"Client is not running.", - L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", // TODO.Translate - // 80 - L"AI's turn - %d left", // TODO.Translate -}; - -STR16 gszMPEdgesText[] = -{ - L"N", - L"E", - L"S", - L"W", - L"C", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"Foxtrot", - L"Bravo", - L"Delta", - L"Charlie", - L"N/A", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Game Type: ", - L"Players: ", - L"Mercs each: ", - L"You cannot change starting edge once Laptop is unlocked.", - L"You cannot change teams once the Laptop is unlocked.", - L"Random Mercs: ", - L"Y", - L"Difficulty:", - L"Server Version:", -}; - -STR16 gzMPSScreenText[] = -{ - L"Scoreboard", - L"Continue", - L"Cancel", - L"Player", - L"Kills", - L"Deaths", - L"Queen's Army", - L"Hits", - L"Misses", - L"Accuracy", - L"Damage Dealt", - L"Damage Taken", - L"Please wait for the server to press 'Continue'." -}; - -STR16 gzMPCScreenText[] = -{ - L"Cancel", - L"Connecting to Server", - L"Getting Server Settings", - L"Downloading custom files", - L"Press 'ESC' to cancel or 'Y' to chat", - L"Press 'ESC' to cancel", - L"Ready" -}; - -STR16 gzMPChatToggleText[] = -{ - L"Send to All", - L"Send to Allies only", -}; - -STR16 gzMPChatboxText[] = -{ - L"Multiplayer Chat", - L"'ENTER' to send, 'ESC' to cancel", -}; - -// Following strings added - SANDRO -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits - L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected.", - L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", - // For new major/minor traits - L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", - L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", -}; -STR16 sgAttributeSelectionText[] = -{ - L"Please adjust your physical attributes according to your true abilities. You cannot raise any score above", - L"I.M.P. Attributes and skills review.", - L"Bonus Pts.:", - L"Starting Level", - // New strings for new traits - L"On the next page you are going to specify your physical attributes and skills. As 'attributes' are called: health, dexterity, agility, strength and wisdom. Attributes cannot go lower than %d.", - L"The rest are called 'skills' and unlike attributes skills can be set to zero, meaning you have absolutely no proficiency in it.", - L"All scores are set to a minimum at the beginning. Note that certain attributes are set to specific values according to skill traits you have selected. You cannot set those attributes lower than that.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"I.M.P. Character Analysis", - L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", - L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Normal", - L"Friendly", - L"Loner", - L"Optimist", - L"Pessimist", - L"Aggressive", - L"Arrogant", - L"Big Shot", - L"Asshole", - L"Coward", - L"I.M.P. Attitudes", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Normal", - L"Sociable", - L"Loner", - L"Optimist", - L"Assertive", - L"Intellectual", - L"Primitive", - L"Aggressive", - L"Phlegmatic", - L"Dauntless", - L"Pacifist", - L"Malicious", - L"Show-off", - L"Coward", // TODO.Translate - L"I.M.P. Character Traits", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"I.M.P. Colors and Body Type", - L"I.M.P. Colors", - L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", - L"Please select the respective colors of your skin, hair and clothing.", - L"Toggle this to use alternative rifle holding.", - L"\n(Caution: you will need a big strength for this.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Hair Color", - L"Skin Color", - L"Shirt Color", - L"Pants Color", - L"Normal Body", - L"Big Body", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"No Disability", - L"Heat Intolerant", - L"Nervous", - L"Claustrophobic", - L"Nonswimmer", - L"Fear of Insects", - L"Forgetful", - L"Psychotic", - L"Deaf", - L"Shortsighted", - L"Hemophiliac", // TODO.Translate - L"Fear of Heights", - L"Self-Harming", - L"I.M.P. Disabilities", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] =// TODO.Translate -{ - L"We bet you're glad this isn't voicemail.", - L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"You'll be screwed if you ever lose your glasses.", - L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate -{ - L"Are you SURE this is the right job for you?", - L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate -{ - L"Let's just say you are a grounded person.", - L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Might want to make sure your knives are always clean.", - L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// TODO.Translate -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s lacks sufficient Strength to perform this task.", - L"%s lacks sufficient Dexterity to perform this task.", - L"%s lacks sufficient Agility to perform this task.", - L"%s is not Healthy enough to perform this task.", - L"%s lacks sufficient Wisdom to perform this task.", - L"%s lacks sufficient Marksmanship to perform this task.", - // 6 - 10 - L"%s lacks sufficient Medical Skill to perform this task.", - L"%s lacks sufficient Mechanical Skill to perform this task.", - L"%s lacks sufficient Leadership to perform this task.", - L"%s lacks sufficient Explosives Skill to perform this task.", - L"%s lacks sufficient Experience to perform this task.", - // 11 - 15 - L"%s lacks sufficient Morale to perform this task.", - L"%s is too exhausted to perform this task.", - L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.", - L"Too many people are already working at the %s.", - L"Too many people are already performing this task at the %s.", - // 16 - 20 - L"%s can find no items to repair.", - L"%s has lost some %s while working in sector %s!", - L"%s has lost some %s while working at the %s in %s!", - L"%s was injured while working in sector %s, and requires immediate medical attention!", - L"%s was injured while working at the %s in %s, and requires immediate medical attention!", - // 21 - 25 - L"%s was injured while working in sector %s. It doesn't seem too bad though.", - L"%s was injured while working at the %s in %s. It doesn't seem too bad though.", - L"The residents of %s seem upset about %s's presence.", - L"The residents of %s seem upset about %s's work at the %s.", - L"%s's actions in sector %s have caused loyalty loss throughout the region!", - // 26 - 30 - L"%s's actions at the %s in %s have caused loyalty loss throughout the region!", - L"%s is drunk.", // <--- This is a log message string. - L"%s has become severely ill in sector %s, and has been taken off duty.", - L"%s has become severely ill and cannot continue his work at the %s in %s.", - L"%s was injured in sector %s.", // <--- This is a log message string. - // 31 - 35 - L"%s was severely injured in sector %s.", //<--- This is a log message string. - L"There are currently prisoners here who are aware of %s's identity.", // TODO.Translate - L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", // TODO.Translate - - -}; - -// TODO.Translate -STR16 gzFacilityRiskResultStrings[]= -{ - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Health", - L"Marksmanship", - // 5-10 - L"Leadership", - L"Mechanical skill", - L"Medical skill", - L"Explosives skill", -}; - -// TODO.Translate -STR16 gzFacilityAssignmentStrings[]= -{ - L"AMBIENT", - L"Staff", - L"Eat",// TODO.Translate - L"Rest", - L"Repair Items", - L"Repair %s", // Vehicle name inserted here - L"Repair Robot", - // 6-10 - L"Doctor", - L"Patient", - L"Practice Strength", - L"Practice Dexterity", - L"Practice Agility", - L"Practice Health", - // 11-15 - L"Practice Marksmanship", - L"Practice Medical", - L"Practice Mechanical", - L"Practice Leadership", - L"Practice Explosives", - // 16-20 - L"Student Strength", - L"Student Dexterity", - L"Student Agility", - L"Student Health", - L"Student Marksmanship", - // 21-25 - L"Student Medical", - L"Student Mechanical", - L"Student Leadership", - L"Student Explosives", - L"Trainer Strength", - // 26-30 - L"Trainer Dexterity", - L"Trainer Agility", - L"Trainer Health", - L"Trainer Marksmanship", - L"Trainer Medical", - // 30-35 - L"Trainer Mechanical", - L"Trainer Leadership", - L"Trainer Explosives", - L"Interrogate Prisoners", // added by Flugente TODO.Translate - L"Undercover Snitch", // TODO.Translate - // 36-40 - L"Spread Propaganda", - L"Spread Propaganda", // spread propaganda (globally) - L"Gather Rumours", - L"Command Militia", // militia movement orders -}; - -STR16 Additional113Text[]= -{ - L"Jagged Alliance 2 v1.13 modalità finestra richiede una profondità di colore di 16bpp.", - L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate - L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", - // TODO.Translate - // WANNE: Savegame slots validation against INI file - L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", - L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -STR16 sEnemyTauntsFireGun[]= -{ - L"Suck this!", - L"Touch this!", - L"Come get some!", - L"You're mine!", - L"Die!", - L"You scared, motherfucker?", - L"This will hurt!", - L"Come on you bastard!", - L"Come on! I don't got all day!", - L"Come to daddy!", - L"You'll be six feet under in no time!", - L"Will send ya home in a pinebox, loser!", - L"Hey, wanna play?", - L"You should have stayed home, bitch.", - L"Sucker!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"We have a barbecue here.", - L"I got a present for ya.", - L"Bam!", - L"Smile!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Catch!", - L"Here ya go!", - L"Pop goes the weasel.", - L"This one's for you.", - L"Muhehe.", - L"Catch this, swine!", - L"I like this.", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"I'll get your scalp.", - L"Come to papa.", - L"Show me your guts!", - L"I'll rip you to pieces!", - L"Motherfucker!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"We're in some real shit...", - L"They said join the army. Not for this shit!", - L"I have enough.", - L"Oh my God.", - L"They ain't paying us enough for this.", - L"It's just too much for me.", - L"I'll bring some friends.", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"I heard that!", - L"Who's there?", - L"What was that?", - L"Hey! What the...", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"They are here!", - L"Now the fun can start.", - L"I hoped this will never happen.", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"Ouch!", - L"Ugh!", - L"This.. hurts!", - L"You fuck!", - L"You will regret.. uhh.. this.", - L"What the..!", - L"Now you have.. pissed me off.", - -}; - -// TODO.Translate -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Da'ffff...!", - L"Oh my God!", - L"Holy crap!", - L"Enemy!!!", - L"Alert! Alert!", - L"There is one!", - L"Attack!", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Description", - L"General", - L"Advanced", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Desc", - L"Gen", - L"Adv", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Primary", - L"Secondary", - L"AP Costs", - L"Burst / Autofire", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Prop.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", - L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", - L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", - L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", - L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", - L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", - L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", - L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", - L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Property icon (mouse-over to reveal name).", - L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", - L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", - L"Bonus/penalty given while |p|r|o|n|e.", - L"Bonus/penalty given", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y", - L"|D|a|m|a|g|e", - L"|R|a|n|g|e", - L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", // TODO.Translate - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s", - L"|R|e|l|i|a|b|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", - L"|A|P|s |t|o |R|e|a|d|y", - L"|A|P|s |t|o |A|t|t|a|c|k", - L"|A|P|s |t|o |B|u|r|s|t", - L"|A|P|s |t|o |A|u|t|o|f|i|r|e", - L"|A|P|s |t|o |R|e|l|o|a|d", - L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", - L"", // No longer used! - L"|T|o|t|a|l |R|e|c|o|i|l", // TODO.Translate - L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", - L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", - L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", - L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", // TODO.Translate - L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", - L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", - L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", - L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", - L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", - L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nThe minimum range at which a scope can provide it's aimBonus.", - L"\n \nTo hit modifier granted by laser sights.", - L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", - L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", - L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", - L"", // No longer used! - L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. // TODO.Translate - L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", - L"|C|o|v|e|r|a|g|e", - L"|D|e|g|r|a|d|e |R|a|t|e", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", - L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", - L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|A|r|m|o|r |P|i|e|r|c|i|n|g", - L"|B|u|l|l|e|t |T|u|m|b|l|e", - L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate - L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", // TODO.Translate - L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", - L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", - L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", // TODO.Translate - L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", // TODO.Translate - L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", // TODO.Translate -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|D|a|m|a|g|e", - L"|S|t|u|n |D|a|m|a|g|e", - L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 // TODO.Translate - L"|B|l|a|s|t |R|a|d|i|u|s", - L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", - L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", - L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", - L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", - L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", - L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", - // HEADROCK HAM 5: Fragmentation // TODO.Translate - L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", - L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", - L"|F|r|a|g|m|e|n|t |R|a|n|g|e", - // HEADROCK HAM 5: End Fragmentations - L"|L|o|u|d|n|e|s|s", - L"|V|o|l|a|t|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", - L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", - L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 // TODO.Translate - L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", - L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", - L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", - L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", - L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", - L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", - // HEADROCK HAM 5: Fragmentation // TODO.Translate - L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", - L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", - L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", - L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", - L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|R|e|p|a|i|r |E|a|s|e", - L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", - L"|V|o|l|u|m|e", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", - L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|T|r|a|c|e|r |A|m|m|o", - L"|A|n|t|i|-|T|a|n|k |A|m|m|o", - L"|I|g|n|o|r|e|s |A|r|m|o|r", - L"|A|c|i|d|i|c |A|m|m|o", - L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", - L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", - L"|W|a|t|e|r|p|r|o|o|f", - L"|E|l|e|c|t|r|o|n|i|c", - L"|G|a|s |M|a|s|k", - L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", - L"|C|a|n |P|i|c|k |L|o|c|k|s", - L"|C|a|n |C|u|t |W|i|r|e|s", - L"|C|a|n |S|m|a|s|h |L|o|c|k|s", - L"|M|e|t|a|l |D|e|t|e|c|t|o|r", - L"|R|e|m|o|t|e |T|r|i|g|g|e|r", - L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", - L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", - L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", - L"|T|o|o|l |K|i|t", - L"|T|h|e|r|m|a|l |O|p|t|i|c|s", - L"|X|-|R|a|y |D|e|v|i|c|e", - L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", - L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", - L"|F|i|r|s|t |A|i|d |K|i|t", - L"|M|e|d|i|c|a|l |K|i|t", - L"|L|o|c|k |B|o|m|b", - L"|D|r|i|n|k",// TODO.Translate - L"|M|e|a|l", - L"|A|m|m|o |B|e|l|t", - L"|A|m|m|o |V|e|s|t", - L"|D|e|f|u|s|a|l |K|i|t", // TODO.Translate - L"|C|o|v|e|r|t |I|t|e|m", // TODO.Translate - L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", - L"|M|a|d|e |o|f |M|e|t|a|l", - L"|S|i|n|k|s", - L"|T|w|o|-|H|a|n|d|e|d", - L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", - L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate - L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|S|h|i|e|l|d", // TODO.Translate - L"|C|a|m|e|r|a", // TODO.Translate - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate - L"|B|l|o|o|d |B|a|g", // 44 - L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", - L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", - L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", - L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", - L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", - L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", - L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", - L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", - L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", - L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", - L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate - L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", - L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate - L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", - L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", - L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", - L"\n \nThis item contains various tools that can\nbe used to repair other items.\n \nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", //JMich_SkillsModifiers: need to be followed by a number // TODO.Translate - L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", - L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", - L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", - L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", - L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", - L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", - L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", - L"\n \nThis item will still your thirst\nif you drink it.",// TODO.Translate - L"\n \nThis item will still your hunger\nif you eat it.", - L"\n \nWith this ammo belt you can\nfeed someone else's MG.", - L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", - L"\n \nThis item improves your trap disarm chance by ", // TODO.Translate - L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", // TODO.Translate - L"\n \nThis item cannot be damaged.", - L"\n \nThis item is made of metal.\nIt takes less damage than other items.", - L"\n \nThis item sinks when put in water.", - L"\n \nThis item requires both hands to be used.", - L"\n \nThis item will block your iron sights\nso you cannot use them.", - L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate - L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", - L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", - L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate - L"\n \nYou can take photos with this.", // TODO.Translate - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate - L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", - L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", - L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", - L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", - L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", - L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", - L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", - L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", - L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", - L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", - L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", - L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", - L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", - L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", - L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", - L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", - L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", - L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|T|u|n|n|e|l |V|i|s|i|o|n", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", - L"|T|o|-|H|i|t |B|o|n|u|s", - L"|A|i|m |B|o|n|u|s", - L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", // TODO.Translate - L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", - L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate - L"|D|i|r|t |M|o|d|i|f|i|e|r", // TODO.Translate - L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r",// TODO.Translate - L"|F|o|o|d| |P|o|i|n|t|s",// TODO.Translate - L"|D|r|i|n|k |P|o|i|n|t|s",// TODO.Translate - L"|P|o|r|t|i|o|n |S|i|z|e",// TODO.Translate - L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r",// TODO.Translate - 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 - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", - L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", - L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", - L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", - L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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 \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate - L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", - L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", - L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", // TODO.Translate - L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate - L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", // TODO.Translate - L"\n \nAmount of energy in kcal.\n \nHigher is better.", // TODO.Translate - L"\n \nAmount of water in liter.\n \nHigher is better.", // TODO.Translate - 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"", - 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 - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", - L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", - L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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 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 \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 be damaged more easily.", - L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"SINGLE", - L"AP", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// TODO.Translate -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"Finished sorting ammo into crates in sector %c%d.", - L"Finished removing attachments from items in sector %c%d.", - L"Finished ejecting ammo from weapons in sector %c%d.", - L"Finished stacking and merging all items in sector %c%d.", - // Bob: new strings for emptying LBE items - L"Finished emptying LBE items in sector %c%d.", - L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Show all", - L"Guns", - L"Ammo", - L"Explosives", - L"Melee Weapons", - L"Armor", - L"LBE", - L"Kits", - L"Misc. Items", - L"Hide all", -}; - -STR16 gzMercCompare[] = -{ - L"???", - L"Base opinion:", - - L"Dislikes %s %s", - L"Likes %s %s", - - L"Strongly hates %s", - L"Hates %s", // 5 - - L"Deep racism against %s", - L"Racism against %s", - - L"Cares deeply about looks", - L"Cares about looks", - - L"Very sexist", // 10 - L"Sexist", - - L"Dislikes other background", - L"Dislikes other backgrounds", - - L"Past grievances", - L"____", // 15 - L"/", - L"* Opinion is always in [%d; %d]", // TODO.Translate -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = // TODO.Translate -{ - L"Temperature is ", - L"very low", - L"low", - L"medium", - L"high", - L"very high", - L"dangerous", - L"CRITICAL", - L"DRAMATIC", - L"unknown", - L"." -}; - -// TODO.Translate -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"Food is ", - L"fresh", - L"good", - L"ok", - L"stale", - L"shabby", - L"rotting", - L"." -}; - -// TODO.Translate -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Pvt. ", //ExpLevel 1 - L"Pfc. ", //ExpLevel 2 - L"Cpl. ", //ExpLevel 3 - L"Sgt. ", //ExpLevel 4 - L"Lt. ", //ExpLevel 5 - L"Cpt. ", //ExpLevel 6 - L"Maj. ", //ExpLevel 7 - L"Lt.Col. ", //ExpLevel 8 - L"Col. ", //ExpLevel 9 - L"Gen. " //ExpLevel 10 -}; - -STR16 gzNewLaptopMessages[]= -{ - L"Ask about our special offer!", - L"Temporarily Unavailable", - L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Distanza dal bersaglio: %d caselle, Luminosità: %d/%d", - L"Colleghi il trasmettitore al tuo computer portatile.", - L"Non puoi permetterti di ingaggiare %s", - L"Per un periodo limitato, la tariffa qui sopra includerà i costi dell'intera missione, oltre all'equipaggiamento indicato sotto.", - L"Assolda %s adesso e approfitta della nostra nuova tariffa 'tutto incluso'. Compreso in questa incredibile offerta anche l'equipaggiamento personale del mercenario, senza alcun costo aggiuntivo.", - L"Tariffa", - L"C'è qualcun altro nel settore...", - //L"Gittata dell'arma: %d caselle, Probabilità di colpire: %d percent", - L"Mostra nascondigli", - L"Linea di Vista", - L"Le nuove reclute non possono arrivare qui.", - L"Poiché il tuo portatile non ha un trasmettitore, non potrai assoldare nuovi mercenari. Forse questo sarebbe un buon momento per caricare una partita salvata o ricominciare daccapo!", - L"%s sente venire da sotto al corpo di Jerry il rumore di metallo che si accartoccia. E' un suono fastidioso, come se l'antenna del tuo portatile venisse schiacciata.", //the %s is the name of a merc. - L"Dopo aver dato un'occhiata al biglietto lasciato dal Vice Comandante Morris, %s vede una possibilità. La nota contiene le coordinate per il lancio di missili contro diverse città ad Arulco. C'è anche la locazione della base di lancio: la fabbrica di missili.", - L"Guardando il pannello di controllo %s immagina che i numeri possano essere invertiti, cosicché il missile distrugga proprio questa fabbrica. %s deve trovare una via di fuga. L'ascensore sembra offrire la soluzione più rapida...", - L"Questa è una partita a livello IRON MAN: non puoi salvare quando ci sono nemici nei dintorni.", - L"(Non puoi salvare durante il combattimento.)", - L"Il nome della campagna è più grande di 30 caratteri", - L"Campagna non trovata.", - L"Campagna: Default ( %S )", - L"Campagna: %S", - L"Hai selezionato la campagna %S. Questa campagna è una versione amatoriale della campagna originale di Unfinished Business. Sei sicuro di voler giocare la campagna %S?", - L"Per usare l'editor, selezionare una campagna diversa da quella di default.", - // anv: extra iron man modes - L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", // TODO.Translate - L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", // TODO.Translate -}; - -// The_bob : pocket popup text defs // TODO.Translate -STR16 gszPocketPopupText[]= -{ - L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN - L"- no matching ammo -", //POCKET_POPUP_NO_AMMO - L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS - L"more...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features // TODO.Translate -STR16 szCovertTextStr[]= -{ - L"%s has camo!", - L"%s has a backpack!", - L"%s is seen carrying a corpse!", - L"%s's %s is suspicious!", - L"%s's %s is considered military hardware!", - L"%s carries too many guns!", - L"%s's %s is too advanced for an %s soldier!", - L"%s's %s has too many attachments!", - L"%s was seen performing suspicious activities!", - L"%s does not look like a civilian!", - L"%s bleeding was discovered!", - L"%s is drunk and doesn't behave like a soldier!", - L"On closer inspection, %s's disguise does not hold!", - L"%s isn't supposed to be here!", - L"%s isn't supposed to be here at this time!", - L"%s was seen near a fresh corpse!", - L"%s equipment raises a few eyebrows!", - L"%s is seen targetting %s!", - L"%s has seen through %s's disguise!", - L"No clothes item found in Items.xml!", - L"This does not work with the old trait system!", - L"Not enough APs!", - L"Bad palette found!", - L"You need the covert skill to do this!", - L"No uniform found!", - L"%s is now disguised as a civilian.", - L"%s is now disguised as a soldier.", - L"%s wears a disorderly uniform!", - L"In retrospect, asking for surrender in disguise wasn't the best idea...", - L"%s was uncovered!", - L"%s's disguise seems to be ok...", - L"%s's disguise will not hold.", - L"%s was caught stealing!", - L"%s tried to manipulate %s's inventory.", - L"An elite soldier did not recognize %s!", // TODO.Translate - L"A officer knew %s was unfamiliar!", -}; - -STR16 szCorpseTextStr[]= -{ - L"No head item found in Items.xml!", - L"Corpse cannot be decapitated!", - L"No meat item found in Items.xml!", - L"Not possible, you sick, twisted individual!", - L"No clothes to take!", - L"%s cannot take clothes off of this corpse!", - L"This corpse cannot be taken!", - L"No free hand to carry corpse!", - L"No corpse item found in Items.xml!", - L"Invalid corpse ID!", -}; - -STR16 szFoodTextStr[]= -{ - L"%s does not want to eat %s", - L"%s does not want to drink %s", - L"%s ate %s", - L"%s drank %s", - L"%s's strength was damaged due to being overfed!", - L"%s's strength was damaged due to lack of nutrition!", - L"%s's health was damaged due to being overfed!", - L"%s's health was damaged due to lack of nutrition!", - L"%s's strength was damaged due to excessive drinking!", - L"%s's strength was damaged due to lack of water!", - L"%s's health was damaged due to excessive drinking!", - L"%s's health was damaged due to lack of water!", - L"Sectorwide canteen filling not possible, Food System is off!" -}; - -// TODO.Translate -STR16 szPrisonerTextStr[]= -{ - L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate - L"Gained $%d as ransom money.", // TODO.Translate - L"%d prisoners revealed enemy positions.", - L"%d officers, %d elites, %d regulars and %d admins joined our cause.", - L"Prisoners start a massive riot in %s!", - L"%d prisoners were sent to %s!", - L"Prisoners have been released!", - L"The army now occupies the prison in %s, the prisoners were freed!", - L"The enemy refuses to surrender!", - L"The enemy refuses to take you as prisoners - they prefer you dead!", - L"This behaviour is set OFF in your ini settings.", - L"%s has freed %s!", - L"A high-ranking army officer in %s has been revealed!", // TODO.Translate - L"The enemy leader refuses to even consider surrender!", - L"%d prisoners volunteered to join our forces.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= // TODO.Translate -{ - L"nothing", - L"building a fortification", - L"removing a fortification", - L"hacking", // TODO.Translate - L"%s had to stop %s.", - L"The selected barricade cannot be built in this sector", // TODO.Translate -}; - -// TODO.Translate -STR16 szInventoryArmTextStr[]= // TODO.Translate -{ - L"Blow up (%d AP)", - L"Blow up", - L"Arm (%d AP)", - L"Arm", - L"Disarm (%d AP)", - L"Disarm", -}; - -// TODO.Translate -STR16 szBackgroundText_Flags[]= -{ - L" might consume drugs in inventory\n", - L" disregard for all other backgrounds\n", - L" +1 level in underground sectors\n", - L" steals money from the locals sometimes\n", // TODO.Translate - - 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 - - L" huge loyality penalty in all towns if we die\n", // TODO.Translate - - L" refuses to attack animals\n", // TODO.Translate - L" refuses to attack members of the same group\n", // TODO.Translate -}; - -// TODO.Translate -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% APs in polar sectors\n", - L" %s%d%% APs in desert sectors\n", - L" %s%d%% APs in swamp sectors\n", - L" %s%d%% APs in urban sectors\n", - L" %s%d%% APs in forest sectors\n", - L" %s%d%% APs in plain sectors\n", - L" %s%d%% APs in river sectors\n", - L" %s%d%% APs in tropical sectors\n", - L" %s%d%% APs in coastal sectors\n", - L" %s%d%% APs in mountainous sectors\n", - - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% leadership stat\n", - L" %s%d%% marksmanship stat\n", - 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", - L" %s%d%% APs needed for fortification actions\n", - L" %s%d%% APs needed for mortars\n", - L" %s%d%% APs needed to access inventory\n", - L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", - L" %s%d%% APs on first turn when assaulting a sector\n", - - L" %s%d%% travel speed on foot\n", - L" %s%d%% travel speed on land vehicles\n", - L" %s%d%% travel speed on air vehicles\n", - L" %s%d%% travel speed on water vehicles\n", - - L" %s%d%% fear resistance\n", - L" %s%d%% suppression resistance\n", - L" %s%d%% physical resistance\n", - L" %s%d%% alcohol resistance\n", - L" %s%d%% disease resistance\n", // TODO.Translate - - L" %s%d%% interrogation effectiveness\n", - L" %s%d%% prison guard strength\n", - L" %s%d%% better prices when trading guns and ammo\n", - L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", - L" %s%d%% team capitulation strength if we lead negotiations\n", - L" %s%d%% faster running\n", - L" %s%d%% bandaging speed\n", - L" %s%d%% breath regeneration\n", // TODO.Translate - L" %s%d%% strength to carry items\n", - L" %s%d%% food consumption\n", - L" %s%d%% water consumption\n", - L" %s%d need for sleep\n", - L" %s%d%% melee damage\n", - L" %s%d%% cth with blades\n", - L" %s%d%% camo effectiveness\n", - L" %s%d%% stealth\n", - L" %s%d%% max CTH\n", - L" %s%d hearing range during the night\n", - L" %s%d hearing range during the day\n", - L" %s%d effectivity at disarming traps\n", // TODO.Translate - L" %s%d%% CTH with SAMs\n", // TODO.Translate - - L" %s%d%% effectiveness to friendly approach\n", - L" %s%d%% effectiveness to direct approach\n", - L" %s%d%% effectiveness to threaten approach\n", - 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", - L" %s%d%% insurance cost\n", - L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate - L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate - L" %s%d%% effectiveness at treating population against diseases\n", - L"Can spot tracks up to %d tiles away\n", - L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% chance to evade snake attacks\n", // TODO.Translate - - L" dislikes some other backgrounds\n", // TODO.Translate - L"Smoker", - L"Nonsmoker", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% building speed\n", - L" hacking skill: %s%d ", // TODO.Translate - L" %s%d%% burial speed\n", // TODO.Translate - L" %s%d%% administration effectiveness\n", // TODO.Translate - L" %s%d%% exploration effectiveness\n", // TODO.Translate -}; - -STR16 szBackgroundTitleText[] = // TODO.Translate -{ - L"I.M.P. Background", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = // TODO.Translate -{ - L"I.M.P. Prejudices", -}; - -STR16 szPersonalityDisplayText[]= // TODO.Translate -{ - L"You look", - L"and appearance is", - L"important to you.", - L"You have", - L"and care", - L"about that.", - L"You are", - L"and hate everyone", - L".", - L"racist against non-", - L"people.", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"How do you look?", - L"How important are the looks of others to you?", - L"What are your manners?", - L"How important are the manners of other people to you?", - L"What is your nationality?", - L"What nation o you dislike?", - L"How much do you dislike that nation?", - L"How racist are you?", - L"What is your race? You will be\nracist against all other races.", - L"How sexist are you against the other gender?", -}; - -STR16 szRaceText[]= -{ - L"white", - L"black", - L"asian", - L"eskimo", - L"hispanic", -}; - -STR16 szAppearanceText[]= -{ - L"average", - L"ugly", - L"homely", - L"attractive", - L"like a babe", -}; - -STR16 szRefinementText[]= -{ - L"average manners", - L"manners of a slob", - L"manners of a snob", -}; - -STR16 szRefinementTextTypes[] = // TODO.Translate -{ - L"normal people", - L"slobs", - L"snobs", -}; - -STR16 szNationalityText[]= -{ - L"American", // 0 - L"Arab", - L"Australian", - L"British", - L"Canadian", - L"Cuban", // 5 - L"Danish", - L"French", - L"Russian", - L"Traconian", - L"Swiss", // 10 - L"Jamaican", - L"Polish", - L"Chinese", - L"Irish", - L"South African", // 15 - L"Hungarian", - L"Scottish", - L"Arulcan", - L"German", - L"African", // 20 - L"Italian", - L"Dutch", - L"Romanian", - L"Metaviran", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"Belarusian", - L"Belgian", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"Brasilian", - L"Bulgarian", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"Estonian", - L"Ethiopian", - L"Filipino", // 50 - L"Finnish", - L"Georgian", - L"Greek", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Indian", - L"Indonesian", - L"Iranian", - L"Iraqi", // 60 - L"Islandic", - L"Israeli", - L"Japanese", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Mexican", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Nigerian", - L"Nigerien", - L"Norwegian", - L"Pakistani", // 85 - L"Panamanian", - L"Portoguese", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"Serbian", - L"Slovakian", - L"Slovenian", - L"Somali", - L"Spanish", // 95 - L"Sudanese", - L"Swedish", - L"Syrian", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"Turkish", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"Venezuelan", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -STR16 szNationalityTextAdjective[] = // TODO.Translate -{ - L"americans", // 0 - L"arabs", - L"australians", - L"britains", - L"canadians", - L"cubans", // 5 - L"danes", - L"frenchmen", - L"russians", - L"traconians", - L"swiss", // 10 - L"jamaicans", - L"poles", - L"chinese", - L"irishmen", - L"south africans", // 15 - L"hungarians", - L"scotsmen", - L"arulcans", - L"germans", - L"africans", // 20 - L"italians", - L"dutchmen", - L"romanians", - L"metavirans", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"belarusians", - L"belgians", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"brasilians", - L"bulgarians", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"estonians", - L"ethiopians", - L"filipinos", // 50 - L"finns", - L"georgians", - L"greek", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"indians", - L"indonesians", - L"iranians", - L"iraqis", // 60 - L"islandics", - L"israelis", - L"japanese", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"mexicans", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"nigerians", - L"nigeriens", - L"norwegians", - L"pakistanis", // 85 - L"panamanians", - L"portoguese", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"serbians", - L"slovakians", - L"slovenians", - L"somali", - L"spaniards", // 95 - L"sudanese", - L"swedes", - L"syrians", - L"thais", - L"togolese", // 100 - L"tunisians", - L"turks", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"venezuelans", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"and do not hate any other nationality.", // used in personnel.cpp - L"of no origin", // used in IMP generation -}; - -STR16 szCareLevelText[]= -{ - L"not", - L"somewhat", - L"extremely", -}; - -STR16 szRacistText[]= -{ - L"not", - L"somewhat", - L"very", -}; - -STR16 szSexistText[]= -{ - L"no sexist", - L"somewhat sexist", - L"very sexist", - L"a Gentleman", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"Batteries are ", - L"full", - L"good", - L"at half", - L"low", - L"depleted", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= // TODO.Translate -{ - L"Mercenary", - L"Green militia", - L"Regular militia", - L"Elite militia", - - L"Civilian", - - L"Administrator", - L"Army Soldier", - L"Elite Soldier", - L"Tank", - - L"Creature", - L"Zombie", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"%s Press Council", - L"Ministry for %s Information Distribution", - L"%s Revolutionary Movement", - L"The Times International", - L"International Times", - L"R.I.S. (Recon Intelligence Service)", - - L"A collection of press sources from %s", - L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", - - L"Conflict Summary", - L"Battle reports", - L"News", - L"About us", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s in %s.", - - L"rebel forces", - L"the army", - - L"attacked", - L"ambushed", - L"airdropped", - - L"The attack came from %s.", - L"%s were reinforced from %s.", - L"The attack came from %s, %s were reinforced from %s.", - L"north", - L"east", - L"south", - L"west", - L"and", - L"an unknown location", // TODO.Translate - - L"Buildings in the sector were damaged.", // TODO.Translate - L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", - L"During the attack, %s and %s called reinforcements.", - L"During the attack, %s called reinforcements.", - L"Eyewitnesses report the use of chemical weapons from both sides.", - L"Chemical weapons were used by %s.", - L"In a serious escalation of the conflict, both sides deployed tanks.", - L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", - L"Both sides are said to have used snipers.", - L"Unverified reports indicate %s snipers were involved in the firefight.", - L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", - L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", - L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"Deep in the night", // 23 - 3 - L"At dawn", // 3 - 6 - L"Early in the morning", // 6 - 8 - L"In the morning hours", // 8 - 11 - L"At noon", // 11 - 14 - L"On the afternoon", // 14 - 18 - L"On the evening", // 18 - 21 - L"During the night", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Initial funding", - L"Mine income", - L"Trade", - L"Other sources", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Ammunition", - L"Explosives", - L"Food", - L"Medical gear", - L"Item maintenance", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"In an extremely one-sided battle, the army force was wiped out without much resistance.", - - L"The rebels easily defeated the army, inflicting heavy losses.", - L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", - - L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", - L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", - - L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", - - L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", - L"Despite the high number of rebels in this sector, the army easily dispatched them.", - - L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", - L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", - - L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", - L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", - - L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"Irrelevant", - L"Insignificant", - L"Notable", - L"Noteworthy", - L"Significant", - L"Interesting", - L"Important", - L"Very important", - L"Grave", - L"Major", - L"Momentous", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"Killed", - L"Wounded", - L"Prisoners", - L"Shots fired", - - L"Money earned", - L"Consumption", - L"Losses", - L"Participants", - - L"Promotions", - L"Summary", - L"Detail", - L"Previous", - - L"Next", - L"Incident", - L"Day", -}; - -STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate -{ - L"Glorious %s", - L"Mighty %s", - L"Awesome %s", - L"Intimidating %s", - - L"Powerful %s", - L"Earth-Shattering %s", - L"Insidious %s", - L"Swift %s", - - L"Violent %s", - L"Brutal %s", - L"Relentless %s", - L"Merciless %s", - - L"Cannibalistic %s", - L"Gorgeous %s", - L"Rogue %s", - L"Dubious %s", - - L"Sexually Ambigious %s", - L"Burning %s", - L"Enraged %s", - L"Visonary %s", - - // 20 - L"Gruesome %s", - L"International-law-ignoring %s", - L"Provoked %s", - L"Ceaseless %s", - - L"Inflexible %s", - L"Unyielding %s", - L"Regretless %s", - L"Remorseless %s", - - L"Choleric %s", - L"Unexpected %s", - L"Democratic %s", - L"Bursting %s", - - L"Bipartisan %s", - L"Bloodstained %s", - L"Rouge-wearing %s", - L"Innocent %s", - - L"Hateful %s", - L"Underwear-staining %s", - L"Civilian-devouring %s", - L"Unflinching %s", - - // 40 - L"Expect No Mercy From Our %s", - L"Very Mad %s", - L"Ultimate %s", - L"Furious %s", - - L"Its best to Avoid Our %s", - L"Fear the %s", - L"All Hail the %s!", - L"Protect the %s", - - L"Beware the %s", - L"Crush the %s", - L"Backstabbing %s", - L"Vicious %s", - - L"Sadistic %s", - L"Burning %s", - L"Wrathful %s", - L"Invincible %s", - - L"Guilt-ridden %s", - L"Rotting %s", - L"Sanitized %s", - L"Self-doubting %s", - - // 60 - L"Ancient %s", - L"Very Hungry %s", - L"Sleepy %s", - L"Demotivated %s", - - L"Cruel %s", - L"Annoying %s", - L"Huffy %s", - L"Bisexual %s", - - L"Screaming %s", - L"Hideous %s", - L"Praying %s", - L"Stalking %s", - - L"Cold-blooded %s", - L"Fearsome %s", - L"Trippin' %s", - L"Damned %s", - - L"Vegetarian %s", - L"Grotesque %s", - L"Backward %s", - L"Superior %s", - - // 80 - L"Inferior %s", - L"Okay-ish %s", - L"Porn-consuming %s", - L"Poisoned %s", - - L"Spontaneous %s", - L"Lethargic %s", - L"Tickled %s", - L"The %s is a dupe!", - - L"%s on Steroids", - L"%s vs. Predator", - L"A %s with a twist", - L"Self-Pleasuring %s", - - L"Man-%s hybrid", - L"Inane %s", - L"Overpriced %s", - L"Midnight %s", - - L"Capitalist %s", - L"Communist %s", - L"Intense %s", - L"Steadfast %s", - - // 100 - L"Narcoleptic %s", // TODO.Translate - L"Bleached %s", - L"Nail-biting %s", - L"Smite the %s", - - L"Bloodthirsty %s", - L"Obese %s", - L"Scheming %s", - L"Tree-Humping %s", - - L"Cheaply made %s", - L"Sanctified %s", - L"Falsely accused %s", - L"%s to the rescue", - - L"Crab-people vs. %s", - L"%s in Space!!!", - L"%s vs. Godzilla", - L"Untamed %s", - - L"Durable %s", - L"Brazen %s", - L"Greedy %s", - L"Midnight %s", - - // 120 - L"Confused %s", - L"Irritated %s", - L"Loathsome %s", - L"Manic %s", - - L"Ancient %s", - L"Sneaking %s", - L"%s of Doom", - L"%s's revenge", - - L"A %s on the run", - L"A %s out of time", - L"One with %s", - L"%s from hell", - - L"Super-%s", - L"Ultra-%s", - L"Mega-%s", - L"Giga-%s", - - L"A quantum of %s", - L"Her Majesties' %s", - L"Shivering %s", - L"Fearful %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Dragon", - L"Mountain Lion", - L"Copperhead Snake", - L"Jack Russell Terrier", - - L"Arch-Nemesis", - L"Basilisk", - L"Blade", - L"Shield", - - L"Hammer", - L"Spectre", - L"Congress", - L"Oilfield", - - L"Boyfriend", - L"Girlfriend", - L"Husband", - L"Stepmother", - - L"Sand Lizard", - L"Bankers", - L"Anaconda", - L"Kitten", - - // 20 - L"Congress", - L"Senate", - L"Cleric", - L"Badass", - - L"Bayonet", - L"Wolverine", - L"Soldier", - L"Tree Frog", - - L"Weasel", - L"Shrubbery", - L"Tar pit", - L"Sunset", - - L"Hurricane", - L"Ocelot", - L"Tiger", - L"Defense Industry", - - L"Snow Leopard", - L"Megademon", - L"Dragonfly", - L"Rottweiler", - - // 40 - L"Cousin", - L"Grandma", - L"Newborn", - L"Cultist", - - L"Disinfectant", - L"Democracy", - L"Warlord", - L"Doomsday Device", - - L"Minister", - L"Beaver", - L"Assassin", - L"Rain of Burning Death", - - L"Prophet", - L"Interloper", - L"Crusader", - L"Administration", - - L"Supernova", - L"Liberty", - L"Explosion", - L"Bird of Prey", - - // 60 - L"Manticore", - L"Frost Giant", - L"Celebrity", - L"Middle Class", - - L"Loudmouth", - L"Scape Goat", - L"Warhound", - L"Vengeance", - - L"Fortress", - L"Mime", - L"Conductor", - L"Job-Creator", - - L"Frenchman", - L"Superglue", - L"Newt", - L"Incompetency", - - L"Steppenwolf", - L"Iron Anvil", - L"Grand Lord", - L"Supreme Ruler", - - // 80 - L"Dictator", - L"Old Man Death", - L"Shredder", - L"Vacuum Cleaner", - - L"Hamster", - L"Hypno-Toad", - L"Discjockey", - L"Undertaker", - - L"Gorgon", - L"Child", - L"Mob", - L"Raptor", - - L"Goddess", - L"Gender Inequality", - L"Mole", - L"Baby Jesus", - - L"Gunship", - L"Citizen", - L"Lover", - L"Mutual Fund", - - // 100 - L"Uniform", // TODO.Translate - L"Saber", - L"Snow Leopard", - L"Panther", - - L"Centaur", - L"Scorpion", - L"Serpent", - L"Black Widow", - - L"Tarantula", - L"Vulture", - L"Heretic", - L"Zombie", - - L"Role-Model", - L"Hellhound", - L"Mongoose", - L"Nurse", - - L"Nun", - L"Space Ghost", - L"Viper", - L"Mamba", - - // 120 - L"Sinner", - L"Saint", - L"Comet", - L"Meteor", - - L"Can of worms", - L"Fish oil pills", - L"Breastmilk", - L"Tentacle", - - L"Insanity", - L"Madness", - L"Cough reflex", - L"Colon", - - L"King", - L"Queen", - L"Bishop", - L"Peasant", - - L"Tower", - L"Mansion", - L"Warhorse", - L"Referee", - - // 140 -}; - -STR16 szMercCompareWebSite[] = // TODO.Translate -{ - // main page - L"Mercs Love or Dislike You", - L"Your #1 teambuilding experts on the web", - - L"About us", - L"Analyse a team", - L"Pairwise comparison", - L"Customer voices", - - L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"Your team struggles with itself.", - L"Your employees waste time working against each other.", - L"Your workforce experiences a high fluctuation rate.", - L"You constantly receive low marks on workplace satisfaction ratings.", - L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"A few citations from our satisfied customers:", - L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G., Novelist-", - L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C., Corrective law enforcement-", - L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W., Snake charmer-", - L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L., SPK-", - L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C., NASA-", - L"I fully recommend this site!", - L"-Kasper H., H&C logistic Inc-", - L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke, Kerberus Inc-", - - // analyze - L"Choose your employee", - L"Choose your squad", - - // error messages - L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s shot me!", - L"%s is scheming behind my back", - L"%s interfered in my business", - L"%s is friends with my enemy", - - L"%s got a contract before I did", - L"%s ordered a shameful retreat", - L"%s massacred the innocent", - L"%s slows us down", - - L"%s doesn't share food", - L"%s jeopardizes the mission", - L"%s is a drug addict", - L"%s is thieving scum", - - L"%s is an incompetent commander", - L"%s is overpaid", - L"%s gets all the good stuff", - L"%s mounted a gun on me", - - L"%s treated my wounds", - L"Had a good drink with %s", - L"%s is fun to get wasted with", - L"%s is annoying when drunk", - - L"%s is an idiot when drunk", - L"%s opposed our view in an argument", - L"%s supported our position", - L"%s agrees to our reasoning", - - L"%s's beliefs are contrary to ours", - L"%s knows how to calm down people", - L"%s is insensitive", - L"%s puts people in their places", - - L"%s is way too impulsive", - L"%s is disease-ridden", - L"%s treated my diseases", - L"%s does not hold back in combat", - - L"%s enjoys combat a bit too much", - L"%s is a good teacher", - L"%s led us to victory", - L"%s saved my life", - - L"%s stole my kill", - L"%s and me fought well together", - L"%s made the enemy surrender", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"World Health Organization", - L"Bringing health to life", - - // links to other pages - L"About WHO", - L"Disease in Arulco", - L"About diseases", - - // text on the main page - L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", - L"You currently do not have access to WHO data on the arulcan plague.", - L"You have acquired detailed maps on the status of the disease.", - L"Subscribe to map updates", - L"Unsubscribe map updates", - - // helpful tips page - L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus", - L"Experience In Security", - - // links to other pages - L"What is Kerberus?", - L"Team Contracts", - L"Individual Contracts", - - // text on the main page - L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", - L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", - L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"You can select the type and number of personnel you want to hire here:", - L"Initial deployment", - L"Regular personnel", - L"Veteran personnel", - - L"%d available, %d$ each", - L"Hire: %d", - L"Cost: %d$", - - L"Select the initial operational area:", - L"Total Cost: %d$", - L"ETA: %02d:%02d", - L"Close Contract", - - L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus reinforcements have arrived in %s.", - L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"Inventory Manipulations", - - L"NVG", - L"Reload All", - L"Move", // TODO.Translate - L"", - - L"Sort", - L"Merge", - L"Separate", - L"Organize", - - L"Crates", - L"Boxes", - L"Drop B/P", - L"Pickup B/P", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"Cover Display Mode", - - L"Off", - L"Enemy", - L"Merc", - L"", - - L"Roles", // TODO.Translate - L"Fortification", // TODO.Translate - L"Tracker", - L"CTH mode", - - L"Traps", - L"Network", - L"Detector", - L"", - - L"Net A", - L"Net B", - L"Net C", - L"Net D", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Turning off cover/traps display", - L"Showing danger zones", - L"Showing merc view", - L"", - - L"Display enemy role symbols", // TODO.Translate - L"Display planned fortifications", - L"Display enemy tracks", - L"", - - L"Display trap network", - L"Display trap network colouring", - L"Display nearby traps", - L"", - - L"Display trap network A", - L"Display trap network B", - L"Display trap network C", - L"Display trap network D", -}; - -// TODO.Translate -STR16 szDynamicDialogueText[40][17] = // TODO.Translate -{ - // OPINIONEVENT_FRIENDLYFIRE - L"What the hell! $CAUSE$ attacked me!", - L"", - L"", - L"What? Me? No way, I'm engaging at the enemy!", - L"Oops.", - L"", - L"", - L"$CAUSE$ has attacked $VICTIM$. What do you do?", - L"Nah, that must have been enemy fire!", - L"Yeah, I saw it too!", - L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", - L"I saw it, it was clearly enemy fire!", - L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", - L"This is war! People get shot all the time! Speaking of... shoot more people, people!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"I would if you weren't such a wussy!", - L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"I'm doing my job. Get back to yours!", - L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"Patched together again? Good, now move!", - L"You're welcome.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'Even'? What does that mean?", - L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Nice one, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"Is there a difference?", - L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"What?!", - L"No!", - L"That is false!", - L"That is not true!", - - L"Lies, lies, lies. Nothing but lies!", - L"Liar!", - L"Traitor!", - L"You watch your mouth!", - - L"This is none of your business.", - L"Who ever invited you?", - L"Nobody asked for your opinion, $INTERJECTOR$.", - L"You stay away from me.", - - L"Why are you all against me?", - L"Why are you against me, $INTERJECTOR$?", - L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"Not listening...!", - - L"I hate this psycho circus.", - L"I hate this freak show.", - L"Back off!", - L"Lies, lies, lies...", - - L"No way!", - L"So not true.", - L"That is so not true.", - L"I know what I saw.", - - L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"Nope.", - L"You are mistaken.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"What $INTERJECTOR_GENDER$ said.", - - L"Thanks, $INTERJECTOR$!", - L"Once again I'm right!", - L"See, $CAUSE$? I am right!", - L"Once again $SPEAKER$ is right!", - - L"Aye.", - L"Yup.", - L"Yep", - L"Yes.", - - L"Indeed.", - L"True.", - L"Ha!", - L"See?", - - L"Exactly!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"That's right!", - L"Indeed!", - L"Exactly that.", - L"$CAUSE$ does that all the time.", - - L"$VICTIM$ is right!", - L"I was gonna' point that out, too!", - L"What $VICTIM$ said.", - L"That's our $CAUSE$!", - - L"Yeah!", - L"Now THIS is going to be interesting...", - L"You tell'em, $VICTIM$!", - L"Agreeing with $VICTIM$ here...", - - L"Classic $CAUSE$.", - L"I couldn't have said it better myself.", - L"That is exactly what happened.", - L"Agreed!", - - L"Yup.", - L"True.", - L"Bingo.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"Now wait a minute...", - L"Wait a sec, that's not what right...", - L"What? No.", - L"That is not what happened.", - - L"Hey, stop blaming $CAUSE$!", - L"Oh shut up, $VICTIM$!", - L"Nonono, you got that wrong.", - L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"And I suppose you never did, $VICTIM$?", - L"Hmmmm... no.", - L"Great. Let's have an argument. It's not like we have other things to do...", - L"You are mistaken!", - - L"You are wrong!", - L"Me and $CAUSE$ would never do such a thing.", - L"Nah, can't be.", - L"I don't think so.", - - L"Why bring that up now?", - L"Really, $VICTIM$? Is this necessary?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Keep silent", - L"Support $VICTIM$", - L"Support $CAUSE$", - L"Appeal to reason", - L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"he", - L"she", - L"him", - L"her", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% wisdom stat\n", - L" %s%d%% effective level\n", - - L" %s%d%% APs\n", - L" %s%d maximum breath\n", - L" %s%d%% strength to carry items\n", - L" %s%2.2f life regeneration/hour\n", - L" %s%d need for sleep\n", - L" %s%d%% water consumption\n", - L" %s%d%% food consumption\n", - - L"%s was diagnosed with %s!", - L"%s is cured of %s!", - - L"Diagnosis", - L"Treatment", - L"Burial", // TODO.Translate - L"Cancel", - - L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate - - L"High amount of distress can cause a personality split\n", // TODO.Translate - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", // TODO.Translate - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"Hide", // TODO.Translate - L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|F|o|o|d: %d%%\n", - - L"max morale altered by %s%d\n", - L" %s%d need for sleep\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% assignment efficiency\n", - L" %s%d%% chance to lose stats\n", -}; - -STR16 szIMPGearWebSiteText[] = // TODO.Translate -{ - // IMP Gear Entrance - L"How should gear be selected?", - L"Old method: Random gear according to your choices", - L"New method: Free selection of gear", - L"Old method", - L"New method", - - // IMP Gear Entrance - L"I.M.P. Equipment", - L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate -}; - -STR16 szIMPGearPocketText[] = -{ - L"Select helmet", - L"Select vest", - L"Select pants", - L"Select face gear", - L"Select face gear", - - L"Select main gun", - L"Select sidearm", - - L"Select LBE vest", - L"Select left LBE holster", - L"Select right LBE holster", - L"Select LBE combat pack", - L"Select LBE backpack", - - L"Select launcher / rifle", - L"Select melee weapon", - - L"Select additional items", //BIGPOCK1POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select medkit", //MEDPOCK1POS - L"Select medkit", - L"Select medkit", - L"Select medkit", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select additional items", //SMALLPOCK19POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"We cannot relay orders to this sector, militia command not possible.", - L"Unassigned", - L"Group No.", - L"Next", - - L"ETA", - L"Group %d (new)", - L"Group %d", - L"Final", - - L"Volunteers: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = // TODO.Translate -{ - L"Enemy helicopter shot down in %s!", - L"We... uhm... currently don't control that site, commander...", - L"The SAM does not need maintenance at the moment.", - L"We've already ordered the repair, this will take time.", - - L"We do not have enough resources to do that.", - L"Repair SAM site? This will cost %d$ and take %d hours.", - L"Enemy helicopter hit in %s.", - L"%s fires %s at enemy helicopter in %s.", - - L"SAM in %s fires at enemy helicopter in %s.", -}; - -STR16 szFortificationText[] = -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"Militia", - L"Militia Forces Overview", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Took part in Operation %s", - L"Recruited on Day %d, %d:%02d in %s", - L"Promoted on Day %d, %d:%02d", - L"KIA, Operation %s", - - L"Lightly wounded during Operation %s", - L"Heavily wounded during Operation %s", - L"Critically wounded during Operation %s", - L"Valiantly fought in Operation %s", - - L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", // TODO:Translate -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"All sectors", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"Merchant is hostile and does not want to trade.", - L"Merchant is in no state to do business.", - L"Merchant won't trade during combat.", - L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = // TODO.Translate -{ - L"normal", - L"rain", - L"thunderstorm", - L"sandstorm", - - L"snow", -}; - -STR16 szSnakeText[] = -{ - L"%s evaded a snake attack!", - L"%s was attacked by a snake!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"Converted %s into resources", - L"Guns: ", - L"Armour: ", - L"Misc: ", - - L"There are no volunteers left for militia!", - L"Not enough resources to train militia!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s starts hacking.", - L"%s accesses the computer, but finds nothing of interest.", - L"%s is not skilled enough to hack the computer.", - L"%s reads the file, but learns nothing new.", - - L"%s can't make sense out of this.", - L"%s couldn't use the watertap.", - L"%s has bought a %s.", - L"%s doesn't have enough money. That's just embarassing.", - - L"%s drank from water tap", - L"This machine doesn't seem to be working.", // TODO.Translate -}; - -STR16 szLaptopStatText[] = // TODO.Translate -{ - L"threaten effectiveness %d\n", - L"leadership %d\n", - L"approach modifier %.2f\n", - L"background modifier %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Good Guy", - L"%s eschews excessive violence and will refuse to attack non-hostiles.", - - L"Friendly approach", - L"Direct approach", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -STR16 szGearTemplateText[] = // TODO.Translate -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate -}; - -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -STR16 szFactoryText[] = // TODO.Translate -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -// TODO.Translate -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Space Available:", - L"MOLLE Space Required:", - L"MOLLE Small Slot Count:", - L"MOLLE Medium Slot Count:", - L"MOLLE Pouch Size: Small", - L"MOLLE Pouch Size: Medium", - L"MOLLE Pouch Size: Medium (Hydration)", - L"Thigh Rig", - L"Vest", - L"Combat Pack", - L"Backpack", // 10 - L"MOLLE Pouch", - L"Compatible backpacks:", - L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = // TODO.Translate -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = // TODO.Translate -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = // TODO.Translate -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = // TODO.Translate -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia\nthat appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = // TODO: Translate -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //ITALIAN +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("ITALIAN") + + #if defined( ITALIAN ) + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_ItalianText_public_symbol(void){;} + +#ifdef ITALIAN + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Locations", // 0 + L"Characters", + L"Items", + L"Quests", + L"Menu 5", + L"Menu 6", //5 + L"Menu 7", + L"Menu 8", + L"Menu 9", + L"Menu 10", + L"Menu 11", //10 + L"Menu 12", + L"Menu 13", + L"Menu 14", + L"Menu 15", + L"Menu 15", // 15 + + //Briefing Room + L"Enter", // TODO.Translate +}; + +STR16 pOtherButtonsText[] = +{ + L"Briefing", + L"Accept", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Briefing", + L"Accept missions", +}; + + +STR16 pLocationPageText[] = +{ + L"Prev page", + L"Photo", + L"Next page", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"Main page", + L">>", + L"Type: ", + L"Empty data", + L"Missing of defined missions. Add missions to the file TableData\\BriefingRoom\\BriefingRoom.xml. First mission has to be visible. Put value Hidden = 0.", + L"Briefing Room. Please click the 'Enter' button.", // TODO.Translate +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Unknown",// 0 - unknown + L"City", //1 - cities + L"SAM Site", //2 - SAM Site + L"Other location", //3 - other location + L"Mines", //4 - mines + L"Military complex", //5 - military complex + L"Laboratory complex", //6 - laboratory complex + L"Factory complex", //7 - factory complex + L"Hospital", //8 - hospital + L"Prison", //9 - prison + L"Airport", //10 - air port +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Show all", + L"Show AIM", + L"Show MERC", + L"Show RPC", + L"Show NPC", + L"Show Pojazd", + L"Show IMP", + L"Show EPC", + L"Filter", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"All", + L"AIM", + L"MERC", + L"RPC", + L"NPC", + L"Veh.", + L"IMP", + L"EPC", + L"Filter", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Show all", + L"Show cities", + L"Show SAM Sites", + L"Show other location", + L"Show mines", + L"Show military complex", + L"Show laboratory complex", + L"Show Factory complex", + L"Show hospital", + L"Show prison", + L"Show air port", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"All", + L"City", + L"SAM", + L"Other", + L"Mine", + L"Mil.", + L"Lab.", + L"Fact.", + L"Hosp.", + L"Prison", + L"Air.", +}; + +// TODO.Translate +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"All",//0 + L"City", + L"SAM", + L"Mine", + L"Airport", + L"Wilder.", + L"Underg.", + L"Facil.", + L"Other", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//facility index + 1 + L"Show Cities", + L"Show SAM sites", + L"Show mines", + L"Show airports", + L"Show sectors in wilderness", + L"Show underground sectors", + L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", + L"Show Other sectors", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; +// TODO.Translate +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"All",//0 + L"A.I.M.", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"Other",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//Other index + 1 + L"Show A.I.M. members", + L"Show M.E.R.C staff", + L"Show Rebels", + L"Show Non-hirable Characters", + L"Show Player created Characters", + L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", +}; +// TODO.Translate +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Vehic.", + L"EPC", + L"",//reserved. Insert new Other filters above! +}; +// TODO.Translate +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"All",//0 + L"Gun", + L"Ammo", + L"Armor", + L"LBE", + L"Attach.", + L"Misc",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", +}; +// TODO.Translate +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Helmet", + L"Vest", + L"Pant", + L"Plate", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Tight", + L"Vest", + L"Combat", + L"Backp.", + L"Pocket", + L"Other", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Optic", + L"Side", + L"Muzzle", + L"Extern.", + L"Intern.", + L"Other", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"Blade", + L"T.Knife", + L"Punch", + L"Grenade", + L"Bomb", + L"Medikit", + L"Kit", + L"Face", + L"Other", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; +// TODO.Translate +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"All", + L"Active", + L"Compl.", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Active Quests", + L"Show Completed Quests", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"All", //0 + L"Gun", + L"Ammo", + L"LBE", + L"Misc", + + L"All", //5 + L"Gun", + L"Ammo", + L"LBE Gear", + L"Misc", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"Heavy", + L"Pistol", + L"M. Pist.", + L"SMG", + L"Rifle", + L"S. Rifle", + L"A. Rifle", + L"MG", + L"Shotgun", + + // Ammo + L"Pistol", + L"M. Pist.", //10 + L"SMG", + L"Rifle", + L"S. Rifle", + L"A. Rifle", + L"MG", + L"Shotgun", + + // Used + L"Guns", + L"Armor", + L"LBE Gear", + L"Misc", //20 + + // Armour + L"Helmets", + L"Vests", + L"Leggings", + L"Plates", + + // Misc + L"Blades", + L"Th. Knife", + L"Melee", + L"Grenades", + L"Bombs", + L"Med.", //30 + L"Kits", + L"Face", + L"LBE", + L"Misc.", //34 +}; + +// TODO.Translate +STR16 QuestDescText[] = +{ + L"Deliver Letter", + L"Food Route", + L"Terrorists", + L"Kingpin Chalice", + L"Kingpin Money", + L"Runaway Joey", + L"Rescue Maria", + L"Chitzena Chalice", + L"Held in Alma", + L"Interogation", + + L"Hillbilly Problem", //10 + L"Find Scientist", + L"Deliver Video Camera", + L"Blood Cats", + L"Find Hermit", + L"Creatures", + L"Find Chopper Pilot", + L"Escort SkyRider", + L"Free Dynamo", + L"Escort Tourists", + + + L"Doreen", //20 + L"Leather Shop Dream", + L"Escort Shank", + L"No 23 Yet", + L"No 24 Yet", + L"Kill Deidranna", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", +}; + +// TODO.Translate +STR16 FactDescText[] = +{ + L"Omerta Liberated", + L"Drassen Liberated", + L"Sanmona Liberated", + L"Cambria Liberated", + L"Alma Liberated", + L"Grumm Liberated", + L"Tixa Liberated", + L"Chitzena Liberated", + L"Estoni Liberated", + L"Balime Liberated", + + L"Orta Liberated", //10 + L"Meduna Liberated", + L"Pacos approched", + L"Fatima Read note", + L"Fatima Walked away from player", + L"Dimitri (#60) is dead", + L"Fatima responded to Dimitri's supprise", + L"Carlo's exclaimed 'no one moves'", + L"Fatima described note", + L"Fatima arrives at final dest", + + L"Dimitri said Fatima has proof", //20 + L"Miguel overheard conversation", + L"Miguel asked for letter", + L"Miguel read note", + L"Ira comment on Miguel reading note", + L"Rebels are enemies", + L"Fatima spoken to before given note", + L"Start Drassen quest", + L"Miguel offered Ira", + L"Pacos hurt/Killed", + + L"Pacos is in A10", //30 + L"Current Sector is safe", + L"Bobby R Shpmnt in transit", + L"Bobby R Shpmnt in Drassen", + L"33 is TRUE and it arrived within 2 hours", + L"33 is TRUE 34 is false more then 2 hours", + L"Player has realized part of shipment is missing", + L"36 is TRUE and Pablo was injured by player", + L"Pablo admitted theft", + L"Pablo returned goods, set 37 false", + + L"Miguel will join team", //40 + L"Gave some cash to Pablo", + L"Skyrider is currently under escort", + L"Skyrider is close to his chopper in Drassen", + L"Skyrider explained deal", + L"Player has clicked on Heli in Mapscreen at least once", + L"NPC is owed money", + L"Npc is wounded", + L"Npc was wounded by Player", + L"Father J.Walker was told of food shortage", + + L"Ira is not in sector", //50 + L"Ira is doing the talking", + L"Food quest over", + L"Pablo stole something from last shpmnt", + L"Last shipment crashed", + L"Last shipment went to wrong airport", + L"24 hours elapsed since notified that shpment went to wrong airport", + L"Lost package arrived with damaged goods. 56 to False", + L"Lost package is lost permanently. Turn 56 False", + L"Next package can (random) be lost", + + L"Next package can(random) be delayed", //60 + L"Package is medium sized", + L"Package is largesized", + L"Doreen has conscience", + L"Player Spoke to Gordon", + L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo asked for first aid", + L"Dynamo can be recruited", + L"Npc is bleeding", + L"Shank wnts to join", + + L"NPC is bleeding", //70 + L"Player Team has head & Carmen in San Mona", + L"Player Team has head & Carmen in Cambria", + L"Player Team has head & Carmen in Drassen", + L"Father is drunk", + L"Player has wounded mercs within 8 tiles of NPC", + L"1 & only 1 merc wounded within 8 tiles of NPC", + L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda is in the store ", + L"Brenda is Dead", + + L"Brenda is at home", //80 + L"NPC is an enemy", + L"Speaker Strength >= 84 and < 3 males present", + L"Speaker Strength >= 84 and at least 3 males present", + L"Hans lets ou see Tony", + L"Hans is standing on 13523", + L"Tony isnt available Today", + L"Female is speaking to NPC", + L"Player has enjoyed the Brothel", + L"Carla is available", + + L"Cindy is available", //90 + L"Bambi is available", + L"No girls is available", + L"Player waited for girls", + L"Player paid right amount of money", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping expectingh visit from player", + L"Darren expecting money from player", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Delete", + L"Delete item (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"north", + L"northeast", + L"east", + L"southeast", + L"south", + L"southwest", + L"west", + L"northwest" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Toggle viewing of players", //0 + L"Toggle viewing of enemies", + L"Toggle viewing of creatures", + L"Toggle viewing of rebels", + L"Toggle viewing of civilians", + + L"Player", + L"Enemy", + L"Creature", + L"Rebels", + L"Civilian", + + L"DETAILED PLACEMENT", //10 + L"General information mode", + L"Physical appearance mode", + L"Attributes mode", + L"Inventory mode", + L"Profile ID mode", + L"Schedule mode", + L"Schedule mode", + L"DELETE", + L"Delete currently selected merc (|D|e|l)", + L"NEXT", //20 + L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", + L"Toggle priority existance", + L"Toggle whether or not placement\nhas access to all doors", + + //Orders + L"STATIONARY", + L"ON GUARD", + L"ON CALL", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", //30 + L"RND PT PATROL", + + //Attitudes + L"DEFENSIVE", + L"BRAVE SOLO", + L"BRAVE AID", + L"AGGRESSIVE", + L"CUNNING SOLO", + L"CUNNING AID", + + L"Set merc to face %s", + + L"Find", + L"BAD", //40 + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"BAD", + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"Previous color set", //50 + L"Next color set", + + L"Previous body type", + L"Next body type", + + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + + L"No action", + L"No action", + L"No action", //60 + L"No action", + + L"Clear Schedule", + + L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"ROOFS", //0 + L"WALLS", + L"ROOM INFO", + + L"Place walls using selection method", + L"Place doors using selection method", + L"Place roofs using selection method", + L"Place windows using selection method", + L"Place damaged walls using selection method.", + L"Place furniture using selection method", + L"Place wall decals using selection method", + L"Place floors using selection method", //10 + L"Place generic furniture using selection method", + L"Place walls using smart method", + L"Place doors using smart method", + L"Place windows using smart method", + L"Place damaged walls using smart method", + L"Lock or trap existing doors", + + L"Add a new room", + L"Edit cave walls.", + L"Remove an area from existing building.", + L"Remove a building", //20 + L"Add/replace building's roof with new flat roof.", + L"Copy a building", + L"Move a building", + L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", + L"Erase room numbers", + + L"Toggle |Erase mode", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Cycle brush size (|A/|Z)", + L"Roofs (|H)", + L"|Walls", //30 + L"Room Info (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Wpns", //0 + L"Ammo", + L"Armour", + L"LBE", + L"Exp", + L"E1", + L"E2", + L"E3", + L"Triggers", + L"Keys", + L"Rnd", //10 + L"Previous (|,)", // previous page + L"Next (|.)", // next page +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Add ambient light source", //0 + L"Toggle fake ambient lights.", + L"Add exit grids (r-clk to query existing).", + L"Cycle brush size (|A/|Z)", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", + L"Specify north point for validation purposes.", + L"Specify west point for validation purposes.", + L"Specify east point for validation purposes.", + L"Specify south point for validation purposes.", + L"Specify center point for validation purposes.", //10 + L"Specify isolated point for validation purposes.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"New outdoor level", //0 + L"New basement", + L"New cave level", + L"Save map (|C|t|r|l+|S)", + L"Load map (|C|t|r|l+|L)", + L"Select tileset", + L"Leave Editor mode", + L"Exit game (|A|l|t+|X)", + L"Create radar map", + L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", + L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Draw |Ground textures", //0 + L"Set map ground textures", + L"Place banks and |Cliffs", + L"Draw roads (|P)", + L"Draw |Debris", + L"Place |Trees & bushes", + L"Place |Rocks", + L"Place barrels & |Other junk", + L"Fill area", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", //10 + L"Cycle brush size (|A/|Z)", + L"Raise brush density (|])", + L"Lower brush density (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Terrain", //0 + L"Buildings", + L"Items", + L"Mercs", + L"Map Info", + L"Options", + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text + L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text + L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text + L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text + L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"North Entry Point", //0 + L"West Entry Point", + L"East Entry Point", + L"South Entry Point", + L"Center Entry Point", + L"Isolated Entry Point", + + L"Prime", + L"Night", + L"24Hour", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Panic Trigger1", //0 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", + + L"Pressure Action", + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"No Lock ID", //0 + L"Explosion Trap", + L"Electric Trap", + L"Siren Trap", + L"Silent Alarm", + L"Super Electric Trap", //5 + L"Brothel Siren Trap", + L"Trap Level %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 + L"No map currently loaded.", + L"File: %S, Current Tileset: %s", + L"Enlarge map on loading", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"TOGGLE", //0 + L"VIEWS", + L"SELECTION METHOD", + L"SMART METHOD", + L"BUILDING METHOD", + L"Room#", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Editing lock attributes at map index %d.", + L"Lock ID", + L"Trap Type", + L"Trap Level", + L"Locked", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Pressure Action", //0 + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", + + L"Panic Trigger1", //5 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Status Info Line 1", + L"Status Info Line 2", + L"Status Info Line 3", + L"Status Info Line 4", + L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Prime", + L"Night", + L"24Hrs", //5 + + L"Radius", + + L"Underground", + L"Light Level", + + L"Outdoors", + L"Basement", //10 + L"Caves", + + L"Restricted", + L"Scroll ID", + + L"Destination", + L"Sector", //15 + L"Destination", + L"Bsmt. Level", + L"Dest.", + L"GridNo", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"No action", + L"Lock door", + L"Unlock door", + L"Open door", + L"Close door", + L"Move to gridno", + L"Leave sector", + L"Enter sector", + L"Stay in sector", + L"Sleep", + L"Ignore this!" +}; + +STR16 zDiffNames[5] = +{ + L"Wimp", + L"Easy", + L"Average", + L"Tough", + L"Steroid Users Only" +}; + +STR16 EditMercStat[12] = +{ + L"Max Health", + L"Cur Health", + L"Strength", + L"Agility", + L"Dexterity", + L"Charisma", + L"Wisdom", + L"Marksmanship", + L"Explosives", + L"Medical", + L"Scientific", + L"Exp Level", +}; + + +STR16 EditMercOrders[8] = +{ + L"Stationary", + L"On Guard", + L"Close Patrol", + L"Far Patrol", + L"Point Patrol", + L"On Call", + L"Seek Enemy", + L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Defensive", + L"Brave Loner", + L"Brave Buddy", + L"Cunning Loner", + L"Cunning Buddy", + L"Aggressive", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Merc Name:", //0 + L"Orders:", + L"Combat Attitude:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Merc Colors", //0 + L"Done", + + L"Previous merc standing orders", + L"Next merc standing orders", + + L"Previous merc combat attitude", + L"Next merc combat attitude", //5 + + L"Decrease merc stat", + L"Increase merc stat", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Random", //0 + L"Reg Male", + L"Big Male", + L"Stocky Male", + L"Reg Female", + L"NE Tank", //5 + L"NW Tank", + L"Fat Civilian", + L"M Civilian", + L"Miniskirt", + L"F Civilian", //10 + L"Kid w/ Hat", + L"Humvee", + L"Eldorado", + L"Icecream Truck", + L"Jeep", //15 + L"Kid Civilian", + L"Domestic Cow", + L"Cripple", + L"Unarmed Robot", + L"Larvae", //20 + L"Infant", + L"Yng F Monster", + L"Yng M Monster", + L"Adt F Monster", + L"Adt M Monster", //25 + L"Queen Monster", + L"Bloodcat", + L"Humvee", // TODO.Translate +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=ORDERS=-- ", //0 + L"--=ATTITUDE=--", + + L"RELATIVE", + L"ATTRIBUTES", + + L"RELATIVE", + L"EQUIPMENT", + + L"RELATIVE", + L"ATTRIBUTES", + + L"Army", + L"Admin", + L"Elite", //10 + + L"Exp. Level", + L"Life", + L"LifeMax", + L"Marksmanship", + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Leadership", + L"Explosives", //20 + L"Medical", + L"Mechanical", + L"Morale", + + L"Hair color:", + L"Skin color:", + L"Vest color:", + L"Pant color:", + + L"RANDOM", + L"RANDOM", + L"RANDOM", //30 + L"RANDOM", + + L"By specifying a profile index, all of the information will be extracted from the profile ", + L"and override any values that you have edited. It will also disable the editing features ", + L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", + L"extract the number you have typed. A blank field will clear the profile. The current ", + L"number of profiles range from 0 to ", + + L"Current Profile: n/a ", + L"Current Profile: %s", + + L"STATIONARY", + L"ON CALL", //40 + L"ON GUARD", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", + L"RND PT PATROL", + + L"Action", + L"Time", + L"V", + L"GridNo 1", //50 + L"GridNo 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"lock", + L"unlock", + L"open", + L"close", + + L"Click on the gridno adjacent to the door that you wish to %s.", //60 + L"Click on the gridno where you wish to move after you %s the door.", + L"Click on the gridno where you wish to move to.", + L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", + L" Hit ESC to abort entering this line in the schedule.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"Slot #%d", + L"Patrol orders with no waypoints", + L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"No action", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Placement not copied because no placement selected.", + L"Placement copied.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Placement not pasted as no placement is saved in buffer.", + L"Placement pasted.", + L"Placement not pasted as the maximum number of placements for this team has been reached.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Exit editor?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Are you sure you wish to remove all lights?", //0 + L"Are you sure you wish to reverse the schedules?", + L"Are you sure you wish to clear all of the schedules?", + + L"Clicked Placement Enabled", + L"Clicked Placement Disabled", + + L"Draw High Ground Enabled", //5 + L"Draw High Ground Disabled", + + L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"Random Placement Enabled", + L"Random Placement Disabled", + + L"Removing Treetops", //10 + L"Showing Treetops", + + L"World Raise Reset", + + L"World Raise Set Old", + L"World Raise Set", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"Creating radar map for %S", //0 + + L"Delete current map and start a new basement level?", + L"Delete current map and start a new cave level?", + L"Delete current map and start a new outdoor level?", + + L" Wipe out ground textures? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 + L"Toggle fake editor lighting ON/OFF", + + L"INSERT", + L"Toggle fill mode ON/OFF", + + L"BKSPC", + L"Undo last change", + + L"DEL", + L"Quick erase object under mouse cursor", + + L"ESC", + L"Exit editor", + + L"PGUP/PGDN", //10 + L"Change object to be pasted", + + L"F1", + L"This help screen", + + L"F10", + L"Save current map", + + L"F11", + L"Load map as current", + + L"+/-", + L"Change shadow darkness by .01", + + L"SHFT +/-", //20 + L"Change shadow darkness by .05", + + L"0 - 9", + L"Change map/tileset filename", + + L"b", + L"Change brush size", + + L"d", + L"Draw debris", + + L"o", + L"Draw obstacle", + + L"r", //30 + L"Draw rocks", + + L"t", + L"Toggle trees display ON/OFF", + + L"g", + L"Draw ground textures", + + L"w", + L"Draw building walls", + + L"e", + L"Toggle erase mode ON/OFF", + + L"h", //40 + L"Toggle roofs ON/OFF", +}; + +STR16 pAutoLoadMapText[] = +{ + L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +STR16 pShowHighGroundText[] = +{ + L"Showing High Ground Markers", + L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/* +CHAR16 gszActionItemDesc[ 34 ][ 30 ] = // NUM_ACTIONITEMS = 34 +{ + L"Klaxon Mine", + L"Flare Mine", + L"Teargas Explosion", + L"Stun Explosion", + L"Smoke Explosion", + L"Mustard Gas", + L"Land Mine", + L"Open Door", + L"Close Door", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Small Explosion", + L"Medium Explosion", + L"Large Explosion", + L"Toggle Door", + L"Toggle Action1s", + L"Toggle Action2s", + L"Toggle Action3s", + L"Toggle Action4s", + L"Enter Brothel", + L"Exit Brothel", + L"Kingpin Alarm", + L"Sex with Prostitute", + L"Reveal Room", + L"Local Alarm", + L"Global Alarm", + L"Klaxon Sound", + L"Unlock door", + L"Toggle lock", + L"Untrap door", + L"Tog pressure items", + L"Museum alarm", + L"Bloodcat alarm", + L"Big teargas", +}; +*/ +STR16 pUpdateItemStatsPanelText[] = +{ + L"Toggle hide flag", //0 + L"No item selected.", + L"Slot available for", + L"random generation.", + L"Keys not editable.", + L"ProfileID of owner", + L"Item class not implemented.", + L"Slot locked as empty.", + L"Status", + L"Rounds", + L"Trap Level", //10 + L"Quantity", + L"Trap Level", + L"Status", + L"Trap Level", + L"Status", + L"Quantity", + L"Trap Level", + L"Dollars", + L"Status", + L"Trap Level", //20 + L"Trap Level", + L"Tolerance", + L"Alarm Trigger", + L"Exist Chance", + L"B", + L"R", + L"S", +}; + +STR16 pSetupGameTypeFlagsText[] = +{ + L"Item appears in both Sci-Fi and Realistic modes", //0 + L"Item appears in Realistic mode only", + L"Item appears in Sci-Fi mode only", +}; + +STR16 pSetupGunGUIText[] = +{ + L"SILENCER", //0 + L"SNIPERSCOPE", + L"LASERSCOPE", + L"BIPOD", + L"DUCKBILL", + L"G-LAUNCHER", //5 +}; + +STR16 pSetupArmourGUIText[] = +{ + L"CERAMIC PLATES", //0 +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"DETONATOR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"Okay", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"LOAD", + L"SAVE", + L"Update", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"Tileset: %s", //0 + L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", + L"Number of items: %d", + L"Number of lights: %d", + L"Number of entry points: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"Number of rooms: %d", + L"Total map population: %d", + L"Enemies: %d", + L"Admins: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Troops: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Elites: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Civilians: %d", //20 + + L"(%d detailed, %d profile -- %d have priority existance)", + + L"Humans: %d", + L"Cows: %d", + L"Bloodcats: %d", + + L"Creatures: %d", + + L"Monsters: %d", + L"Bloodcats: %d", + + L"Number of locked and/or trapped doors: %d", + L"Locked: %d", + L"Trapped: %d", //30 + L"Locked & Trapped: %d", + + L"Civilians with schedules: %d", + + L"Too many exit grid destinations (more than 4)...", + L"ExitGrids: %d (%d with a long distance destination)", + L"ExitGrids: none", + L"ExitGrids: 1 destination using %d exitgrids", + L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 + L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"%d placements have patrol orders without any waypoints defined.", + L"%d placements have waypoints, but without any patrol orders.", + L"%d gridnos have questionable room numbers. Please validate.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Enemy", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"Panic1", + L"Panic2", + L"Panic3", + L"Norm1", + L"Norm2", + L"Norm3", + L"Norm4", //10 + L"Pressure Actions", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"PRIORITY ENEMY DROPPED ITEMS", + L"None", + + L"TOO MANY ITEMS TO DISPLAY!", + L"NORMAL ENEMY DROPPED ITEMS", + L"TOO MANY ITEMS TO DISPLAY!", + L"None", + L"TOO MANY ITEMS TO DISPLAY!", + L"ERROR: Can't load the items for this map. Reason unknown.", //20 +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 + L"(NO MAP LOADED).", + L"You currently have %d outdated maps.", + L"The more maps that need to be updated, the longer it takes. It'll take ", + L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"depending on your computer, it may vary.", + L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"There is no sector currently selected.", + + L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"You need to either load an existing map or create a new map before being", + L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 + + L", ground level", + L", underground level 1", + L", underground level 2", + L", underground level 3", + L", alternate G level", + L", alternate B1 level", + L", alternate B2 level", + L", alternate B3 level", + + L"ITEM DETAILS -- sector %s", + L"Summary Information for sector %s:", //20 + + L"Summary Information for sector %s", + L"does not exist.", + + L"Summary Information for sector %s", + L"does not exist.", + + L"No information exists for sector %s.", + + L"No information exists for sector %s.", + + L"FILE: %s", + + L"FILE: %s", + + L"Override READONLY", + L"Overwrite File", //30 + + L"You currently have no summary data. By creating one, you will be able to keep track", + L"of information pertaining to all of the sectors you edit and save. The creation process", + L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"Do you wish to do this now (y/n)?", + + L"No summary info. Creation denied.", + + L"Grid", + L"Progress", //40 + L"Use Alternate Maps", + + L"Summary", + L"Items", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"Analyzing map: %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Loading map: %s", +}; + +STR16 pReportErrorText[] = +{ + L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Generating map information", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"Generating map summary", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MAJOR VERSION UPDATE", + L"There are %d maps requiring a major version update.", + L"Updating all outdated maps", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] from default tileset %s (%d, %S)", + L"File: %S, subindex: %d (%d, %S)", + L"Tileset: %s", +}; + +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Accept selections (|E|n|t|e|r)", + L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", + L"Scroll window up (|U|p)", + L"Scroll window down (|D|o|w|n)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Small", + L"Medium", + L"Large", + L"XLarge", + L"Width: xx", + L"Area" + }; + +//--- + +// TODO.Translate +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Page 1/2", //0 + L"Page 2/2", + + L"Page 1/3", + L"Page 2/3", + L"Page 3/3", + + L"Page 1/1", //5 +}; + +// by Jazz: TODO.Translate +CHAR16 zGrod[][500] = +{ + L"Robot", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 Development Team", + L"@T,C144,R134,{;Coding", + L"@T,C144,R134,{;Graphics and Sounds", + L"@};(Various other mods!)", + L"@T,C144,R134,{;Items", + L"@T,C144,R134,{;Other Contributors", + L"@};(All other community members who contributed input and feedback!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L"cal .38", +// L"9 mm", +// L"cal .45", +// L"cal .357", +// L"cal fisso 12", +// L"CAW", +// L"5.45 mm", +// L"5.56 mm", +// L"7.62 mm NATO", +// L"7.62 mm WP", +// L"4.7 mm", +// L"5.7 mm", +// L"Mostro", +// L"Missile", +// L"", // dart +// L"", // flame +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L"cal .38", +// L"9 mm", +// L"cal .45", +// L"cal .357", +// L"cal fisso 12", +// L"CAWS", +// L"5.45 mm", +// L"5.56 mm", +// L"7.62 mm N.", +// L"7.62 mm WP", +// L"4.7 mm", +// L"5.7 mm", +// L"Mostro", +// L"Missile", +// L"", // dart +//}; + + +CHAR16 WeaponType[][30] = +{ + L"Altro", + L"Arma", + L"Mitragliatrice", + L"Mitra", + L"Fucile", + L"Fucile del cecchino", + L"Fucile d'assalto", + L"Mitragliatrice leggera", + L"Fucile a canne mozze", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Turno del giocatore", // player's turn + L"Turno degli avversari", + L"Turno delle creature", + L"Turno dell'esercito", + L"Turno dei civili", + L"Player_Plan",// planning turn + L"Client #1",//hayden + L"Client #2",//hayden + L"Client #3",//hayden + L"Client #4",//hayden +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s è stato colpito alla testa e perde un punto di saggezza!", + L"%s è stato colpito alla spalla e perde un punto di destrezza!", + L"%s è stato colpito al torace e perde un punto di forza!", + L"%s è stato colpito alle gambe e perde un punto di agilità!", + L"%s è stato colpito alla testa e perde %d punti di saggezza!", + L"%s è stato colpito alle palle perde %d punti di destrezza!", + L"%s è stato colpito al torace e perde %d punti di forza!", + L"%s è stato colpito alle gambe e perde %d punti di agilità!", + L"Interrompete!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"I vostri rinforzi sono arrivati!", + + // In the following four lines, all %s's are merc names + + L"%s ricarica.", + L"%s non ha abbastanza Punti Azione!", + L"%s ricorre al pronto soccorso. (Premete un tasto per annullare.)", + L"%s e %s ricorrono al pronto soccorso. (Premete un tasto per annullare.)", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"affidabile", + L"non affidabile", + L"facile da riparare", + L"difficile da riparare", + L"danno grave", + L"danno lieve", + L"fuoco veloce", + L"fuoco", + L"raggio lungo", + L"raggio corto", + L"leggero", + L"pesante", + L"piccolo", + L"fuoco a raffica", + L"niente raffiche", + L"grande deposito d'armi", + L"piccolo deposito d'armi", + + // In the following two lines, all %s's are merc names + + L"Il travestimento di %s è stato scoperto.", + L"Il travestimento di %s è stato scoperto.", + + // The first %s is a merc name and the second %s is an item name + + L"La seconda arma è priva di munizioni!", + L"%s ha rubato il %s.", + + // The %s is a merc name + + L"L'arma di %s non può più sparare a raffica.", + + L"Ne avete appena ricevuto uno di quelli attaccati.", + L"Volete combinare gli oggetti?", + + // Both %s's are item names + + L"Non potete attaccare %s a un %s.", + + L"Nessuno", + L"Espelli munizioni", + L"Attaccare", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and you gas mask at the same time. + L"Non potete usare %s e il vostro %s contemporaneamente.", + + L"L'oggetto puntato dal vostro cursore può essere combinato ad alcuni oggetti ponendolo in uno dei quattro slot predisposti.", + L"L'oggetto puntato dal vostro cursore può essere combinato ad alcuni oggetti ponendolo in uno dei quattro slot predisposti. (Comunque, in questo caso, l'oggetto non è compatibile.)", + L"Il settore non è libero da nemici!", + L"Vi dovete ancora dare %s %s", + L"%s è stato colpito alla testa!", + L"Abbandonate la battaglia?", + L"Questo attaco sarà definitivo. Andate avanti?", + L"%s si sente molto rinvigorito!", + L"%s ha dormito di sasso!", + L"%s non è riuscito a catturare il %s!", + L"%s ha riparato il %s", + L"Interrompete per ", + L"Vi arrendete?", + L"Questa persona rifiuta il vostro aiuto.", + L"NON sono d'accordo!", + L"Per viaggiare sull'elicottero di Skyrider, dovrete innanzitutto ASSEGNARE mercenari al VEICOLO/ELICOTTERO.", + L"solo %s aveva abbastanza tempo per ricaricare UNA pistola", + L"Turno dei Bloodcat", + L"automatic", + L"no full auto", + L"The enemy has no more items to steal!", + L"The enemy has no item in its hand!", +// TODO.Translate + L"%s's desert camouflage has worn off.", + L"%s's desert camouflage has washed off.", + + L"%s's wood camouflage has worn off.", + L"%s's wood camouflage has washed off.", + + L"%s's urban camouflage has worn off.", + L"%s's urban camouflage has washed off.", + + L"%s's snow camouflage snow has worn off.", + L"%s's snow camouflage has washed off.", + + L"You cannot attach %s to this slot.", + L"The %s will not fit in any open slots.", + L"There's not enough space for this pocket.", //TODO:Translate + + L"%s has repaired the %s as much as possible.", // TODO.Translate + L"%s has repaired %s's %s as much as possible.", + + L"%s has cleaned the %s.", // TODO.Translate + L"%s has cleaned %s's %s.", + + L"Assignment not possible at the moment", // TODO.Translate + L"No militia that can be drilled present.", + + L"%s has fully explored %s.", // TODO.Translate +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracona", + L"Traconian", +#else + L"Arulco", + L"Arulcan", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"Fermo", + L"Normale", + L"5 min", + L"30 min", + L"60 min", + L"6 ore", +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"Squad. 1", + L"Squad. 2", + L"Squad. 3", + L"Squad. 4", + L"Squad. 5", + L"Squad. 6", + L"Squad. 7", + L"Squad. 8", + L"Squad. 9", + L"Squad. 10", + L"Squad. 11", + L"Squad. 12", + L"Squad. 13", + L"Squad. 14", + L"Squad. 15", + L"Squad. 16", + L"Squad. 17", + L"Squad. 18", + L"Squad. 19", + L"Squad. 20", + L"Squad. 21", + L"Squad. 22", + L"Squad. 23", + L"Squad. 24", + L"Squad. 25", + L"Squad. 26", + L"Squad. 27", + L"Squad. 28", + L"Squad. 29", + L"Squad. 30", + L"Squad. 31", + L"Squad. 32", + L"Squad. 33", + L"Squad. 34", + L"Squad. 35", + L"Squad. 36", + L"Squad. 37", + L"Squad. 38", + L"Squad. 39", + L"Squad. 40", + L"Servizio", // on active duty + L"Dottore", // administering medical aid + L"Paziente", // getting medical aid + L"Veicolo", // in a vehicle + L"Transito", // in transit - abbreviated form + L"Riparare", // repairing + L"Radio Scan", // scanning for nearby patrols // TODO.Translate + L"Esercit.", // training themselves + L"Esercit.", // training a town to revolt + L"M.Militia", //training moving militia units // TODO.Translate + L"Istrutt.", // training a teammate + L"Studente", // being trained by someone else + L"Get Item", // get items // TODO.Translate + L"Staff", // operating a strategic facility // TODO.Translate + L"Eat", // eating at a facility (cantina etc.) // TODO.Translate + L"Rest", // Resting at a facility // TODO.Translate + L"Prison", // Flugente: interrogate prisoners + L"Morto", // dead + L"Incap.", // abbreviation for incapacitated + L"PDG", // Prisoner of war - captured + L"Ospedale", // patient in a hospital + L"Vuoto", // Vehicle is empty + L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate + L"Propag.", // facility: spread propaganda + L"Propag.", // facility: spread propaganda (globally) + L"Rumours", // facility: gather information + L"Propag.", // spread propaganda + L"Rumours", // gather information + L"Command", // militia movement orders + L"Diagnose", // disease diagnosis //TODO.Translate + L"Treat D.", // treat disease among the population + L"Dottore", // administering medical aid + L"Paziente", // getting medical aid + L"Riparare", // repairing + L"Fortify", // build structures according to external layout // TODO.Translate + L"Train W.", + L"Hide", // TODO.Translate + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", // TODO.Translate + L"Explore", // TODO.Translate + L"Event",// rftr: merc is on a mini event // TODO: translate + L"Mission", // rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"Esercito", // the title of the militia box + L"Non incaricato", //the number of unassigned militia troops + L"Non potete ridistribuire reclute, se ci sono nemici nei paraggi!", + L"Some militia were not assigned to a sector. Would you like to disband them?", // TODO.Translate +}; + + +STR16 pMilitiaButtonString[] = +{ + L"Auto", // auto place the militia troops for the player + L"Eseguito", // done placing militia troops + L"Disband", // HEADROCK HAM 3.6: Disband militia // TODO.Translate + L"Unassign All", // move all milita troops to unassigned pool // TODO.Translate +}; + +STR16 pConditionStrings[] = +{ + L"Eccellente", //the state of a soldier .. excellent health + L"Buono", // good health + L"Discreto", // fair health + L"Ferito", // wounded health + L"Stanco", // tired + L"Grave", // bleeding to death + L"Svenuto", // knocked out + L"Morente", // near death + L"Morto", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"In servizio", // set merc on active duty + L"Paziente", // set as a patient to receive medical aid + L"Veicolo", // tell merc to enter vehicle + L"Non scortato", // let the escorted character go off on their own + L"Cancella", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"Squadra 1", + L"Squadra 2", + L"Squadra 3", + L"Squadra 4", + L"Squadra 5", + L"Squadra 6", + L"Squadra 7", + L"Squadra 8", + L"Squadra 9", + L"Squadra 10", + L"Squadra 11", + L"Squadra 12", + L"Squadra 13", + L"Squadra 14", + L"Squadra 15", + L"Squadra 16", + L"Squadra 17", + L"Squadra 18", + L"Squadra 19", + L"Squadra 20", + L"Squadra 21", + L"Squadra 22", + L"Squadra 23", + L"Squadra 24", + L"Squadra 25", + L"Squadra 26", + L"Squadra 27", + L"Squadra 28", + L"Squadra 29", + L"Squadra 30", + L"Squadra 31", + L"Squadra 32", + L"Squadra 33", + L"Squadra 34", + L"Squadra 35", + L"Squadra 36", + L"Squadra 37", + L"Squadra 38", + L"Squadra 39", + L"Squadra 40", + L"In servizio", + L"Dottore", + L"Paziente", + L"veicolo", + L"In transito", + L"Riparare", + L"Radio Scan", // radio scan // TODO.Translate + L"Esercitarsi", + L"Allenamento Esercito", + L"Training Mobile Militia", // TODO.Translate + L"Allenatore", + L"Studente", + L"Get Item", // get items // TODO.Translate + L"Facility Staff", // TODO.Translate + L"Eat", // eating at a facility (cantina etc.) // TODO.Translate + L"Resting at Facility", // TODO.Translate + L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate + L"Morto", + L"Incap.", + L"PDG", + L"Ospedale", + L"Vuoto", // Vehicle is empty + L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) + L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda + L"Spreading Propaganda",// TODO.Translate // facility: spread propaganda (globally) + L"Gathering Rumours",// TODO.Translate // facility: gather rumours + L"Spreading Propaganda",// TODO.Translate // spread propaganda + L"Gathering Rumours",// TODO.Translate // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Dottore", + L"Paziente", + L"Riparare", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"Squadra 1", + L"Squadra 2", + L"Squadra 3", + L"Squadra 4", + L"Squadra 5", + L"Squadra 6", + L"Squadra 7", + L"Squadra 8", + L"Squadra 9", + L"Squadra 10", + L"Squadra 11", + L"Squadra 12", + L"Squadra 13", + L"Squadra 14", + L"Squadra 15", + L"Squadra 16", + L"Squadra 17", + L"Squadra 18", + L"Squadra 19", + L"Squadra 20", + L"Squadra 21", + L"Squadra 22", + L"Squadra 23", + L"Squadra 24", + L"Squadra 25", + L"Squadra 26", + L"Squadra 27", + L"Squadra 28", + L"Squadra 29", + L"Squadra 30", + L"Squadra 31", + L"Squadra 32", + L"Squadra 33", + L"Squadra 34", + L"Squadra 35", + L"Squadra 36", + L"Squadra 37", + L"Squadra 38", + L"Squadra 39", + L"Squadra 40", + L"In servizio", + L"Dottore", + L"Paziente", + L"Veicolo", + L"In transito", + L"Ripara", + L"Radio Scan", // radio scan // TODO.Translate + L"Esercitarsi", + L"Allenatore esercito", + L"Train Mobiles", // TODO.Translate + L"Allena squadra", + L"Studente", + L"Get Item", // get items // TODO.Translate + L"Staff Facility", // TODO.Translate + L"Rest at Facility", // TODO.Translate + L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate + L"Morto", + L"Incap.", + L"PDG", + L"Ospedale", // patient in a hospital + L"Vuoto", // Vehicle is empty + L"Undercover Snitch", // TODO.Translate // facility: undercover prisoner (snitch) + L"Spread Propaganda",// TODO.Translate // facility: spread propaganda + L"Spread Propaganda",// TODO.Translate // facility: spread propaganda (globally) + L"Gather Rumours",// TODO.Translate // facility: gather rumours + L"Spread Propaganda",// TODO.Translate // spread propaganda + L"Gather Rumours",// TODO.Translate // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Dottore", + L"Paziente", + L"Ripara", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"Opzioni del contratto:", + L"", // a blank line, required + L"Offri 1 giorno", // offer merc a one day contract extension + L"Offri 1 settimana", // 1 week + L"Offri 2 settimane", // 2 week + L"Termina contratto", // end merc's contract + L"Annulla", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"PDG", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"FORZA", + L"DESTREZZA", + L"AGILITÀ", + L"SAGGEZZA", + L"MIRA", + L"PRONTO SOCC.", + L"MECCANICA", + L"COMANDO", + L"ESPLOSIVI", + L"LIVELLO", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Giubb. A-P", // the armor rating of the merc + L"Peso", // the weight the merc is carrying + L"Trav.", // the merc's camouflage rating + L"Camouflage:", + L"Protection:", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Abi", // the abbreviated version of : agility + L"Des", // dexterity + L"For", // strength + L"Com", // leadership + L"Sag", // wisdom + L"Liv", // experience level + L"Tir", // marksmanship skill + L"Mec", // mechanical skill + L"Esp", // explosive skill + L"PS", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Compito", // the mercs current assignment + L"Accordo", // the contract info about the merc + L"Salute", // the health level of the current merc + L"Morale", // the morale of the current merc + L"Cond.", // the condition of the current vehicle + L"Benzina", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Esercitarsi", // tell merc to train self + L"Esercito", // tell merc to train town + L"Allenatore", // tell merc to act as trainer + L"Studente", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Frequenza di fuoco:", // the allowable rate of fire for a merc who is guarding + L"Fuoco aggressivo", // the merc can be aggressive in their choice of fire rates + L"Conservare munizioni", // conserve ammo + L"Astenersi dal fuoco", // fire only when the merc needs to + L"Altre opzioni:", // other options available to merc + L"Può ritrattare", // merc can retreat + L"Può cercare rifugio", // merc is allowed to seek cover + L"Può assistere compagni di squadra", // merc can assist teammates + L"Fine", // done with this menu + L"Annulla", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"Frequenza di fuoco:", + L" *Fuoco aggressivo*", + L" *Conservare munizioni*", + L" *Astenersi dal fuoco*", + L"Altre opzioni:", + L" *Può ritrattare*", + L" *Può cercare rifugio*", + L" *Può assistere compagni di squadra*", + L"Fine", + L"Annulla", +}; + +STR16 pAssignMenuStrings[] = +{ + L"In servizio", // merc is on active duty + L"Dottore", // the merc is acting as a doctor + L"Disease", // merc is a doctor doing diagnosis TODO.Translate + L"Paziente", // the merc is receiving medical attention + L"Veicolo", // the merc is in a vehicle + L"Ripara", // the merc is repairing items + L"Radio Scan", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"Snitch", // TODO.Translate // anv: snitch actions + L"Si esercita", // the merc is training + L"Militia", // all things militia + L"Get Item", // get items // TODO.Translate + L"Fortify", // fortify sector // TODO.Translate + L"Intel", // covert assignments // TODO.Translate + L"Administer", // TODO.Translate + L"Explore", // TODO.Translate + L"Facility", // the merc is using/staffing a facility // TODO.Translate + L"Annulla", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"Attack", // set militia to aggresive + L"Hold Position", // set militia to stationary + L"Retreat", // retreat militia + L"Come to me", // retreat militia + L"Get down", // retreat militia + L"Crouch", // TODO.Translate + L"Take cover", + L"Move to", // TODO.Translate + L"All: Attack", + L"All: Hold Position", + L"All: Retreat", + L"All: Come to me", + L"All: Spread out", + L"All: Get down", + L"All: Crouch", // TODO.Translate + L"All: Take cover", + //L"All: Find items", + L"Cancel", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = // TODO.Translate +{ + // radio operator + L"Artillery Strike", + L"Jam communications", + L"Scan frequencies", + L"Eavesdrop", + L"Call reinforcements", + L"Switch off radio set", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", // TODO.Translate + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Spotter", // TODO.Translate + L"Focus", // TODO.Translate + L"Drag", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Order an artillery strike from sector...", + L"Fill all radio frequencies with white noise, making communications impossible.", + L"Scan for jamming signals.", + L"Use your radio equipment to continously listen for enemy movement.", + L"Call in reinforcements from neighbouring sectors.", + L"Turn off radio set.", // TODO.Translate + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", // TODO.Translate + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Observe an area, granting allied snipers a bonus to cth on anything you see.", // TODO.Translate + L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Requires:\n", + L" - %d AP\n", + L" - %s\n", + L" - %s or higher\n", + L" - %s or higher or\n", + L" - %d minutes to be ready\n", + L" - mortar positions in neighbouring sectors\n", + L" - %s |o|r %s |a|n|d %s or %s or higher\n", + L" - possession by a demon", + L" - a gun-related trait\n", // TODO.Translate + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = // TODO.Translate +{ + L"Militia", + L"Other Squads", + L"Cancel", + L"%d Militia", + L"All Militia", + + L"More", // TODO.Translate + L"Corpse: %s", // TODO.Translate +}; + +// TODO.Translate +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Team Informant", + L"Town Assignment", + L"Cancel", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Discuss snitch's behaviour towards his teammates.", + L"Take an assignment in this sector.", + L"Cancel", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Report complaints", + L"Don't report", + L"Prevent misbehaviour", + L"Ignore misbehaviour", + L"Cancel", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Report any complaints you hear from other mercs to your commander.", + L"Don't report anything.", + L"Try to stop other mercs from getting wasted and scrounging.", + L"Don't care what other mercs do.", + L"Cancel", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Spread propaganda", + L"Gather rumours", + L"Cancel", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Glorify mercs' actions to increase town loyalty and suppress any bad news. ", + L"Keep an ear to the ground on any rumours about enemy forces activity.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = // TODO.Translate +{ + L"Interrogate admins", + L"Interrogate troops", + L"Interrogate elites", + L"Interrogate officers", + L"Interrogate generals", + L"Interrogate civilians", + L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s was exposed as a snitch but managed to notice it and get out alive.", + L"%s was exposed as a snitch but managed to defuse situation and get out alive.", + L"%s was exposed as a snitch but managed to avoid assassination attempt.", + L"%s was exposed as a snitch but guards managed to prevent any violence outbursts.", + + L"%s was exposed as a snitch and almost drowned by other inmates before guards saved him.", + L"%s was exposed as a snitch and almost beaten to death before guards saved him.", + L"%s was exposed as a snitch and almost stabbed to death before guards saved him.", + L"%s was exposed as a snitch and strangled to death before guards saved him.", + + L"%s was exposed as a snitch and drowned in toilet by other inmates.", + L"%s was exposed as a snitch and beaten to death by other inmates.", + L"%s was exposed as a snitch and shanked to death by other inmates.", + L"%s was exposed as a snitch and strangled to death by other inmates.", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s heard rumours about enemy activity in %d sectors.", + +}; +// /TODO.Translate + +STR16 pRemoveMercStrings[] = +{ + L"Rimuovi Mercenario", // remove dead merc from current team + L"Annulla", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Salute", + L"Agilità", + L"Destrezza", + L"Forza", + L"Comando", + L"Mira", + L"Meccanica", + L"Esplosivi", + L"Pronto socc.", + L"Annulla", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Allenati", // train yourself + L"Train workers", // TODO.Translate + L"Allenatore", // train your teammates + L"Studente", // be trained by an instructor + L"Annulla", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"Squadra 1", + L"Squadra 2", + L"Squadra 3", + L"Squadra 4", + L"Squadra 5", + L"Squadra 6", + L"Squadra 7", + L"Squadra 8", + L"Squadra 9", + L"Squadra 10", + L"Squadra 11", + L"Squadra 12", + L"Squadra 13", + L"Squadra 14", + L"Squadra 15", + L"Squadra 16", + L"Squadra 17", + L"Squadra 18", + L"Squadra 19", + L"Squadra 20", + L"Squadra 21", + L"Squadra 22", + L"Squadra 23", + L"Squadra 24", + L"Squadra 25", + L"Squadra 26", + L"Squadra 27", + L"Squadra 28", + L"Squadra 29", + L"Squadra 30", + L"Squadra 31", + L"Squadra 32", + L"Squadra 33", + L"Squadra 34", + L"Squadra 35", + L"Squadra 36", + L"Squadra 37", + L"Squadra 38", + L"Squadra 39", + L"Squadra 40", + L"Annulla", +}; + +STR16 pPersonnelTitle[] = +{ + L"Personale", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Salute: ", // health of merc + L"Agilità: ", + L"Destrezza: ", + L"Forza: ", + L"Comando: ", + L"Saggezza: ", + L"Liv. esp.: ", // experience level + L"Mira: ", + L"Meccanica: ", + L"Esplosivi: ", + L"Pronto socc.: ", + L"Deposito med.: ", // amount of medical deposit put down on the merc + L"Contratto in corso: ", // cost of current contract + L"Uccisi: ", // number of kills by merc + L"Assistiti: ", // number of assists on kills by merc + L"Costo giornaliero:", // daily cost of merc + L"Tot. costo fino a oggi:", // total cost of merc + L"Contratto:", // cost of current contract + L"Tot. servizio fino a oggi:", // total service rendered by merc + L"Salario arretrato:", // amount left on MERC merc to be paid + L"Percentuale di colpi:", // percentage of shots that hit target + L"Battaglie:", // number of battles fought + L"Numero ferite:", // number of times merc has been wounded + L"Destrezza:", + L"Nessuna abilità", + L"Achievements:", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"Elite soldiers: %d\n", + L"Regular soldiers: %d\n", + L"Admin soldiers: %d\n", + L"Hostile groups: %d\n", + L"Creatures: %d\n", + L"Tanks: %d\n", + L"Others: %d\n", + + L"Mercs: %d\n", + L"Militia: %d\n", + L"Others: %d\n", + + L"Shots fired: %d\n", + L"Missiles fired: %d\n", + L"Grenades thrown: %d\n", + L"Knives thrown: %d\n", + L"Blade attacks: %d\n", + L"Hand to hand attacks: %d\n", + L"Successful hits: %d\n", + + L"Locks picked: %d\n", + L"Locks breached: %d\n", + L"Traps removed: %d\n", + L"Explosives detonated: %d\n", + L"Items repaired: %d\n", + L"Items combined: %d\n", + L"Items stolen: %d\n", + L"Militia trained: %d\n", + L"Mercs bandaged: %d\n", + L"Surgeries made: %d\n", + L"Persons met: %d\n", + L"Sectors discovered: %d\n", + L"Ambushes prevented: %d\n", + L"Quests handled: %d\n", + + L"Tactical battles: %d\n", + L"Autoresolve battles: %d\n", + L"Times retreated: %d\n", + L"Ambushes experienced: %d\n", + L"Hardest battle: %d Enemies\n", + + L"Shot: %d\n", + L"Stabbed: %d\n", + L"Punched: %d\n", + L"Blasted: %d\n", + L"Suffered damages in facilities: %d\n", + L"Surgeries undergone: %d\n", + L"Facility accidents: %d\n", + + L"Character:", + L"Weakness:", + + L"Attitudes:", // WANNE: For old traits display instead of "Character:"! + + L"Zombies: %d\n", // TODO.Translate + + L"Background:", // TODO.Translate + L"Personality:", // TODO.Translate + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", + L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + L"Nessuna abilità", + L"Forzare serrature", + L"Corpo a corpo", + L"Elettronica", + L"Op. notturne", + L"Lanciare", + L"Istruire", + L"Armi pesanti", + L"Armi automatiche", + L"Clandestino", + L"Ambidestro", + L"Furtività", + L"Arti marziali", + L"Coltelli", + L"Sniper", + L"Camuffato", + L"(Esperto)", +}; + +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"No Skill", // 0 + L"Auto Weapons", // 1 + L"Heavy Weapons", + L"Marksman", + L"Hunter", + L"Gunslinger", // 5 + L"Hand to Hand", + L"Deputy", + L"Technician", + L"Paramedic", // 9 + // Minor traits + L"Ambidextrous", // 10 + L"Melee", + L"Throwing", + L"Night Ops", + L"Stealthy", + L"Athletics", // 15 + L"Bodybuilding", + L"Demolitions", + L"Teaching", + L"Scouting", // 19 + // covert ops is a major trait that was added later + L"Covert Ops", // 20 + // new minor traits + L"Radio Operator", // 21 + L"Snitch", // 22 + L"Survival", + + // second names for major skills + L"Machinegunner", // 24 + L"Bombardier", + L"Sniper", + L"Ranger", + L"Gunfighter", + L"Martial Arts", + L"Squadleader", + L"Engineer", + L"Doctor", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"Spy", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch (minor trait) + L"Placeholder", // for survival (minor trait) + L"More...", // 47 + L"Intel", // for INTEL // TODO.Translate + L"Disguise", // for DISGUISE + L"various", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate +}; +////////////////////////////////////////////////////////// + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"|Stare fermi/Camminare", + L"|Accucciarsi/Muoversi accucciato", + L"Stare fermi/|Correre", + L"|Prono/Strisciare", + L"|Guardare", + L"Agire", + L"Parlare", + L"Esaminare (|C|t|r|l)", + + // Pop up door menu + L"Aprire manualmente", + L"Esaminare trappole", + L"Grimaldello", + L"Forzare", + L"Liberare da trappole", + L"Chiudere", + L"Aprire", + L"Usare esplosivo per porta", + L"Usare piede di porco", + L"Annulla (|E|s|c)", + L"Chiudere", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"Nessuna trappola", + L"una trappola esplosiva", + L"una trappola elettrica", + L"una trappola con sirena", + L"una trappola con allarme insonoro", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"giorno", + L"settimana", + L"due settimane", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Selezionare postazioni", + L"Assegnare mercenario", + L"Tracciare percorso di viaggio", + L"Merc |Contratto", + L"Eliminare mercenario", + L"Dormire", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"DEBOLE", + L"DEFINITO", + L"FORTE", + L"MOLTO FORTE", +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"SCONOSCIUTO", + L"rumore di MOVIMENTO", + L"SCRICCHIOLIO", + L"TONFO IN ACQUA", + L"IMPATTO", + L"SPARO", + L"ESPLOSIONE", + L"URLA", + L"IMPATTO", + L"IMPATTO", + L"FRASTUONO", + L"SCHIANTO", +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"il NORD-EST", + L"il EST", + L"il SUD-EST", + L"il SUD", + L"il SUD-OVEST", + L"il OVEST", + L"il NORD-OVEST", + L"il NORD", +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"Urbano", + L"Strada", + L"Pianure", + L"Deserto", + L"Boschi", + L"Foresta", + L"Palude", + L"Acqua", + L"Colline", + L"Impervio", + L"Fiume", //river from north to south + L"Fiume", //river from east to west + L"Paese straniero", + //NONE of the following are used for directional travel, just for the sector description. + L"Tropicale", + L"Campi", + L"Pianure, strada", + L"Boschi, strada", + L"Fattoria, strada", + L"Tropicale, strada", + L"Foresta, strada", + L"Linea costiera", + L"Montagna, strada", + L"Litoraneo, strada", + L"Deserto, strada", + L"Palude, strada", + L"Boschi, postazione SAM", + L"Deserto, postazione SAM", + L"Tropicale, postazione SAM", + L"Meduna, postazione SAM", + + //These are descriptions for special sectors + L"Ospedale di Cambria", + L"Aeroporto di Drassen", + L"Aeroporto di Meduna", + L"Postazione SAM", + L"Refuel site", // TODO.Translate + L"Nascondiglio ribelli", //The rebel base underground in sector A10 + L"Prigione sotterranea di Tixa", //The basement of the Tixa Prison (J9) + L"Tana della creatura", //Any mine sector with creatures in it + L"Cantina di Orta", //The basement of Orta (K4) + L"Tunnel", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Rifugio", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s sono stati individuati nel settore %c%d e un'altra squadra sta per arrivare.", //STR_DETECTED_SINGULAR + L"%s sono stati individuati nel settore %c%d e un'altra squadra sta per arrivare.", //STR_DETECTED_PLURAL + L"Volete coordinare un attacco simultaneo?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"Il nemico offre la possibilità di arrendervi.", //STR_ENEMY_SURRENDER_OFFER + L"Il nemico ha catturato i vostri mercenari sopravvissuti.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Ritirarsi", //The retreat button //STR_AR_RETREAT_BUTTON + L"Fine", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"DIFENDERE", //STR_AR_DEFEND_HEADER + L"ATTACCARE", //STR_AR_ATTACK_HEADER + L"INCONTRARE", //STR_AR_ENCOUNTER_HEADER + L"settore", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"VITTORIA!", //STR_AR_OVER_VICTORY + L"SCONFITTA!", //STR_AR_OVER_DEFEAT + L"ARRENDERSI!", //STR_AR_OVER_SURRENDERED + L"CATTURATI!", //STR_AR_OVER_CAPTURED + L"RITIRARSI!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Esercito", //STR_AR_MILITIA_NAME, + L"Èlite", //STR_AR_ELITE_NAME, + L"Truppa", //STR_AR_TROOP_NAME, + L"Amministratore", //STR_AR_ADMINISTRATOR_NAME, + L"Creatura", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Tempo trascorso", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"RITIRATOSI", //STR_AR_MERC_RETREATED, + L"RITIRARSI", //STR_AR_MERC_RETREATING, + L"RITIRATA", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Esito", //STR_PB_AUTORESOLVE_BTN, + L"Vai al settore", //STR_PB_GOTOSECTOR_BTN, + L"Ritira merc.", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"SCONTRO NEMICO", //STR_PB_ENEMYENCOUNTER_HEADER, + L"INVASIONE NEMICA", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"IMBOSCATA NEMICA", //STR_PB_ENEMYAMBUSH_HEADER + L"INTRUSIONE NEMICA NEL SETTORE", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"ATTACCO DELLE CREATURE", //STR_PB_CREATUREATTACK_HEADER + L"IMBOSCATA DEI BLOODCAT", //STR_PB_BLOODCATAMBUSH_HEADER + L"INTRUSIONE NELLA TANA BLOODCAT", //STR_PB_ENTERINGBLOODCATLAIR_HEADER + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Postazione", + L"Nemici", + L"Mercenari", + L"Esercito", + L"Creature", + L"Bloodcat", + L"Settore", + L"Nessuno", //If there are no uninvolved mercs in this fight. + L"N/A", //Acronym of Not Applicable + L"g", //One letter abbreviation of day + L"o", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Sgombro", + L"Sparsi", + L"In gruppo", + L"Fine", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"|Mostra chiaramente tutte le postazioni dei mercenari, \ne vi permette di rimetterli in gioco manualmente.", + L"A caso |sparge i vostri mercenari \nogni volta che lo premerete.", + L"Vi permette di scegliere dove vorreste |raggruppare i vostri mercenari.", + L"Cliccate su questo pulsante quando avrete \nscelto le postazioni dei vostri mercenari. (|I|n|v|i|o)", + L"Dovete posizionare tutti i vostri mercenari \nprima di iniziare la battaglia.", + + //Various strings (translate word for word) + + L"Settore", + L"Scegliete le postazioni di intervento", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"Non sembra così bello qui. È inacessibile. Provate con una diversa postazione.", + L"Posizionate i vostri mercenari nella sezione illuminata della mappa.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"è arivato nel settore", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"|Automaticamente svolge i combattimenti al vostro posto\nsenza caricare la mappa.", + L"Non è possibile utilizzare l'opzione di risoluzione automatica quando\nil giocatore sta attaccando.", + L"|Entrate nel settore per catturare il nemico.", + L"|Rimandate il gruppo al settore precedente.", //singular version + L"|Rimandate tutti i gruppi ai loro settori precedenti.", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"I nemici attaccano il vostro esercito nel settore %c%d.", + //%c%d is the sector -- ex: A9 + L"Le creature attaccano il vostro esercito nel settore %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Le creature attaccano e uccidono %d civili nel settore %s.", + //%s is the sector location -- ex: A9: Omerta + L"I nemici attaccano i vostri mercenari nel settore %s. Nessuno dei vostri mercenari è in grado di combattere!", + //%s is the sector location -- ex: A9: Omerta + L"I nemici attaccano i vostri mercenari nel settore %s. Nessuno dei vostri mercenari è in grado di combattere!", + + // Flugente: militia movement forbidden due to limited roaming // TODO.Translate + L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", + L"War room isn't staffed - militia move aborted!", + + L"Robot", //STR_AR_ROBOT_NAME, TODO: translate + L"Tank", //STR_AR_TANK_NAME, + L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate + + L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", // TODO.Translate + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"Gg", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"Settore trovato:", + L"Giorno trovato:", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"Stato:", + L"Peso:", + L"AP Costs", + L"Git:", // Range + L"Dan:", // Damage + L"Ammontare:", // Number of bullets left in a magazine + L"PA:", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Accuracy:", //9 + L"Range:", //10 + L"Damage:", //11 + L"Weight:", //12 + L"Stun Damage:",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + L"Attachments:", //14 // TODO.Translate + L"AUTO/5:", //15 + L"Remaining ammo:", //16 // TODO.Translate + + // TODO.Translate + L"Default:", //17 //WarmSteel - So we can also display default attachments + L"Dirt:", // 18 //added by Flugente // TODO.Translate + L"Space:", // 19 //space left on Molle items // TODO.Translate + L"Spread Pattern:", // 20 // TODO.Translate + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + // TODO.Translate + L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", + L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", + L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", + L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", + L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", + L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", + L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", + L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", + L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"", //12 + L"APs to ready", + L"APs to fire Single", + L"APs to fire Burst", + L"APs to fire Auto", + L"APs to Reload", + L"APs to Reload Manually", + L"Burst Penalty (Lower is better)", //19 + L"Bipod Modifier", + L"Autofire shots per 5 AP", + L"Autofire Penalty (Lower is better)", + L"Burst/Auto Penalty (Lower is better)", //23 + L"APs to Throw", + L"APs to Launch", + L"APs to Stab", + L"No Single Shot!", + L"No Burst Mode!", + L"No Auto Mode!", + L"APs to Bash", + L"", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Item Size Modifier (Lower is better)", // 0 + L"Reliability Modifier", + L"Loudness Modifier (Lower is better)", + L"Hides Muzzle Flash", + L"Bipod Modifier", + L"Range Modifier", // 5 + L"To-Hit Modifier", + L"Best Laser Range", + L"Aiming Bonus Modifier", + L"Burst Size Modifier", + L"Burst Penalty Modifier (Higher is better)", // 10 + L"Auto-Fire Penalty Modifier (Higher is better)", + L"AP Modifier", + L"AP to Burst Modifier (Lower is better)", + L"AP to Auto-Fire Modifier (Lower is better)", + L"AP to Ready Modifier (Lower is better)", // 15 + L"AP to Reload Modifier (Lower is better)", + L"Magazine Size Modifier", + L"AP to Attack Modifier (Lower is better)", + L"Damage Modifier", + L"Melee Damage Modifier", // 20 + L"Woodland Camo", + L"Urban Camo", + L"Desert Camo", + L"Snow Camo", + L"Stealth Modifier", // 25 + L"Hearing Range Modifier", + L"Vision Range Modifier", + L"Day Vision Range Modifier", + L"Night Vision Range Modifier", + L"Bright Light Vision Range Modifier", //30 + L"Cave Vision Range Modifier", + L"Tunnel Vision Percentage (Lower is better)", + L"Minimum Range for Aiming Bonus", + L"Hold |C|t|r|l to compare items", // item compare help text + L"Equipment weight: %4.1f kg", // 35 // TODO.Translate +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"In ", + L"PERFECT", + L"EXCELLENT", + L"GOOD", + L"FAIR", + L"POOR", + L"BAD", + L"TERRIBLE", + L" condition." +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Ammontare", + L"Rimanenti:", //this is the overall balance + L"Ammontare", + L"Da separare:", // the amount he wants to separate from the overall balance to get two piles of money + + L"Bilancio", + L"corrente:", + L"Ammontare", + L"del prelievo:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"MORENTE", // >= 0 + L"CRITICO", // >= 15 + L"DEBOLE", // >= 30 + L"FERITO", // >= 45 + L"SANO", // >= 60 + L"FORTE", // >= 75 + L"ECCELLENTE", // >= 90 + L"CAPTURED", // added by Flugente TODO.Translate +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"$1000", + L"$100", + L"$10", + L"Fine", + L"Separare", + L"Prelevare", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"Vant.:", +}; + +CHAR16 gzConsLabel[10] = +{ + L"Svant.:", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Vuoi ripetere?", //meaning "Repeat yourself" + L"Amichevole", //approach in a friendly + L"Diretto", //approach directly - let's get down to business + L"Minaccioso", //approach threateningly - talk now, or I'll blow your face off + L"Dai", + L"Recluta", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Compra/Vendi", + L"Compra", + L"Vendi", + L"Ripara", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"Fine", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"Eldorado", + L"Hummer", // a hummer jeep/truck -- military vehicle + L"Icecream Truck", + L"Jeep", + L"Carro armato", + L"Elicottero", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Eldor.", + L"Hummer", // the HMVV + L"Truck", + L"Jeep", + L"Carro", + L"Eli", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Eldorado", + L"Hummer", //a military jeep. This is a brand name. + L"Truck", // Ice cream truck + L"Jeep", + L"Carro", + L"Eli", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"You cannot shoot from this seat.", // TODO.Translate + L"You cannot swap those two seats in combat without exiting vehicle first.", // TODO.Translate +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Attacco aereo", + L"Ricorrete al pronto soccorso automaticamente?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s nota ch egli oggetti mancano dall'equipaggiamento.", + + // The %s is a string from pDoorTrapStrings + + L"La serratura ha %s", + L"Non ci sono serrature", + L"Vittoria!", + L"Fallimento", + L"Vittoria!", + L"Fallimento", + L"La serratura non presenta trappole", + L"Vittoria!", + // The %s is a merc name + L"%s non ha la chiave giusta", + L"La serratura non presenta trappole", + L"La serratura non presenta trappole", + L"Serrato", + L"", + L"TRAPPOLE", + L"SERRATO", + L"APERTO", + L"FRACASSATO", + L"C'è un interruttore qui. Lo volete attivare?", + L"Disattivate le trappole?", + L"Prec...", + L"Succ...", + L"Più...", + + // In the next 2 strings, %s is an item name + + L"Il %s è stato posizionato sul terreno.", + L"Il %s è stato dato a %s.", + + // In the next 2 strings, %s is a name + + L"%s è stato pagato completamente.", + L"Bisogna ancora dare %d a %s.", + L"Scegliete la frequenza di detonazione:", //in this case, frequency refers to a radio signal + L"Quante volte finché la bomba non esploderà:", //how much time, in turns, until the bomb blows + L"Stabilite la frequenza remota di detonazione:", //in this case, frequency refers to a radio signal + L"Disattivate le trappole?", + L"Rimuovete la bandiera blu?", + L"Mettete qui la bandiera blu?", + L"Fine del turno", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"Siete sicuri di volere attaccare %s ?", + L"Ah, i veicoli non possono cambiare posizione.", + L"Il robot non può cambiare posizione.", + + // In the next 3 strings, %s is a name + + L"%s non può cambiare posizione.", + L"%s non sono ricorsi al pronto soccorso qui.", + L"%s non ha bisogno del pronto soccorso.", + L"Non può muoversi là.", + L"La vostra squadra è al completo. Non c'è spazio per una recluta.", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s è stato reclutato.", + + // Here %s is a name and %d is a number + + L"Bisogna dare %d a $%s.", + + // In the next string, %s is a name + + L"Scortate %s?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"Il salario di %s ammonta a %s per giorno?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"Volete combattere?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"Comprate %s per %s?", + + // In the next string, %s is a name + + L"%s è scortato dalla squadra %d.", + + // These messages are displayed during play to alert the player to a particular situation + + L"INCEPPATA", //weapon is jammed. + L"Il robot ha bisogno di munizioni calibro %s.", //Robot is out of ammo + L"Cosa? Impossibile.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Modalità furtiva (|Z)", + L"Schermata della |mappa", + L"Fine del turno (|D)", + L"Parlato", + L"Muto", + L"Alza (|P|a|g|S|ù)", + L"Livello della vista (|T|a|b)", + L"Scala / Salta", + L"Abbassa (|P|a|g|G|i|ù)", + L"Esamina (|C|t|r|l)", + L"Mercenario precedente", + L"Prossimo mercenario (|S|p|a|z|i|o)", + L"|Opzioni", + L"Modalità a raffica (|B)", + L"Guarda/Gira (|L)", + L"Salute: %d/%d\nEnergia: %d/%d\nMorale: %s", + L"Eh?", //this means "what?" + L"Fermo", //an abbrieviation for "Continued" + L"Audio on per %s.", + L"Audio off per %s.", + L"Salute: %d/%d\nCarburante: %d/%d", + L"Uscita veicoli" , + L"Cambia squadra (|M|a|i|u|s|c |S|p|a|z|i|o)", + L"Guida", + L"N/A", //this is an acronym for "Not Applicable." + L"Usa (Corpo a corpo)", + L"Usa (Arma da fuoco)", + L"Usa (Lama)", + L"Usa (Esplosivo)", + L"Usa (Kit medico)", + L"Afferra", + L"Ricarica", + L"Dai", + L"%s è partito.", + L"%s è arrivato.", + L"%s ha esaurito i Punti Azione.", + L"%s non è disponibile.", + L"%s è tutto bendato.", + L"%s non è provvisto di bende.", + L"Nemico nel settore!", + L"Nessun nemico in vista.", + L"Punti Azione insufficienti.", + L"Nessuno sta utilizzando il comando a distanza.", + L"Il fuoco a raffica ha svuotato il caricatore!", + L"SOLDATO", + L"CREPITUS", + L"ESERCITO", + L"CIVILE", + L"ZOMBIE", // TODO.Translate + L"Settore di uscita", + L"OK", + L"Annulla", + L"Merc. selezionato", + L"Tutta la squadra", + L"Vai nel settore", + L"Vai alla mappa", + L"Non puoi uscire dal settore da questa parte.", + L"You can't leave in turn based mode.", // TODO.Translate + L"%s è troppo lontano.", + L"Rimuovi le fronde degli alberi", + L"Mostra le fronde degli alberi", + L"CORVO", //Crow, as in the large black bird + L"COLLO", + L"TESTA", + L"TORSO", + L"GAMBE", + L"Vuoi dire alla Regina cosa vuole sapere?", + L"Impronta digitale ID ottenuta", + L"Impronta digitale ID non valida. Arma non funzionante", + L"Raggiunto scopo", + L"Sentiero bloccato", + L"Deposita/Preleva soldi", //Help text over the $ button on the Single Merc Panel + L"Nessuno ha bisogno del pronto soccorso.", + L"Bloccato.", // Short form of JAMMED, for small inv slots + L"Non può andare là.", // used ( now ) for when we click on a cliff + L"Il sentiero è bloccato. Vuoi scambiare le posizioni con questa persona?", + L"La persona rifiuta di muoversi.", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Sei d'accordo a pagare %s?", + L"Accetti il trattamento medico gratuito?", + L"Vuoi sposare %s?", //Daryl + L"Quadro delle chiavi", + L"Non puoi farlo con un EPC.", + L"Risparmi %s?", //Krott + L"Fuori dalla gittata dell'arma", + L"Minatore", + L"Il veicolo può viaggiare solo tra i settori", + L"Non è in grado di fasciarsi da solo ora", + L"Sentiero bloccato per %s", + L"I mercenari catturati dall'esercito di %s, sono stati imprigionati qui!", //Deidranna + L"Serratura manomessa", + L"Serratura distrutta", + L"Qualcun altro sta provando a utilizzare questa porta.", + L"Salute: %d/%d\nCarburante: %d/%d", + L"%s non riesce a vedere %s.", // Cannot see person trying to talk to + L"Attachment removed", + L"Non può guadagnare un altro veicolo poichè già avete 2", + + // added by Flugente for defusing/setting up trap networks // TODO.Translate + L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", + L"Set defusing frequency:", + L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", + L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", + L"Select tripwire hierarchy (1 - 4) and network (A - D):", + + // added by Flugente to display food status + L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"What do you want to do?", + L"Fill canteens", + L"Clean guns (Merc)", + L"Clean guns (Team)", + L"Take off clothes", + L"Lose disguise", + L"Militia inspection", + L"Militia restock", + L"Test disguise", + L"unused", + + // added by Flugente: decide what to do with the corpses + L"What do you want to do with the body?", + L"Decapitate", + L"Gut", + L"Take Clothes", + L"Take Body", + + // Flugente: weapon cleaning + L"%s cleaned %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", // TODO.Translate + L"Field interrogation", + L"Where do you want to send the %d prisoners?", // TODO.Translate + L"Let them go", + L"What do you want to do?", + L"Demand surrender", + L"Offer surrender", + L"Distract", // TODO.Translate + L"Talk", + L"Recruit Turncoat", // TODO: translate + + // TODO.Translate + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Disarm trap", + L"Inspect trap", + L"Remove blue flag", + L"Blow up!", + L"Activate tripwire", + L"Deactivate tripwire", + L"Reveal tripwire", + L"No detonator or remote detonator found!", + L"This bomb is already armed!", + L"Safe", + L"Mostly safe", + L"Risky", + L"Dangerous", + L"High danger!", + + L"Mask", // TODO.Translate + L"NVG", + L"Item", + + L"This feature works only with New Inventory System", + L"No item in your main hand", + L"Nowhere to place item from main hand", + L"No defined item for this quick slot", + L"No free hand for new item", + L"Item not found", + L"Cannot take item to main hand", + + L"Attempting to bandage travelling mercs...", //TODO.Translate + + L"Improve gear", + L"%s changed %s for superior version", + L"%s picked up %s", // TODO.Translate + + L"%s has stopped chatting with %s", // TODO.Translate +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"Se selezionato, il settore adiacente verrà immediatamente caricato.", + L"Se selezionato, sarete automaticamente posti nella schermata della mappa\nvisto che i vostri mercenari avranno bisogno di tempo per viaggiare.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"Questo settore è occupato da nemicie non potete lasciare mercenari qui.\nDovete risolvere questa situazione prima di caricare qualsiasi altro settore.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"Rimuovendo i vostri mercenari da questo settore,\nil settore adiacente verrà immediatamente caricato.", + L"Rimuovendo i vostri mercenari da questo settore,\nverrete automaticamente postinella schermata della mappa\nvisto che i vostri mercenari avranno bisogno di tempo per viaggiare.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s ha bisogno di essere scortato dai vostri mercenari e non può lasciare questo settore da solo.", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s non può lasciare questo settore da solo, perché sta scortando %s.", //male singular + L"%s non può lasciare questo settore da solo, perché sta scortando %s.", //female singular + L"%s non può lasciare questo settore da solo, perché sta scortando altre persone.", //male plural + L"%s non può lasciare questo settore da solo, perché sta scortando altre persone.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"Tutti i vostri personaggi devono trovarsi nei paraggi\nin modo da permettere alla squadra di attraversare.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"Se selezionato, %s viaggerà da solo, e\nautomaticamente verrà riassegnato a un'unica squadra.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"Se selezionato, la vostra \nsquadra attualmente selezionata viaggerà, lasciando questo settore.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s è scortato dai vostri mercenari e non può lasciare questo settore da solo. Gli altri vostri mercenari devono trovarsi nelle vicinanze prima che possiate andarvene.", +}; + + + +STR16 pRepairStrings[] = +{ + L"Oggetti", // tell merc to repair items in inventory + L"Sito SAM", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Annulla", // cancel this menu + L"Robot", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"perduto", // the merc has lost a statistic + L"guadagnato", // the merc has gained a statistic + L"punto di", // singular + L"punti di", // plural + L"livello di", // singular + L"livelli di", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"salute.", + L"agilità.", + L"destrezza.", + L"saggezza.", + L"pronto socc.", + L"abilità esplosivi.", + L"abilità meccanica.", + L"mira.", + L"esperienza.", + L"forza.", + L"comando.", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"Distanza totale: ", // total distance for helicopter to travel + L"Sicura: ", // distance to travel to destination + L"Insicura: ", // distance to return from destination to airport + L"Costo totale: ", // total cost of trip by helicopter + L"TPA: ", // ETA is an acronym for "estimated time of arrival" + L"L'elicottero ha poco carburante e deve atterrare in territorio nemico!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Passeggeri: ", + L"Seleziona Skyrider o gli Arrivi Drop-off?", + L"Skyrider", + L"Arrivi", + L"Helicopter is seriously damaged and must land in hostile territory!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> // TODO.Translate + L"Helicopter will now return straight to base, do you want to drop down passengers before?", // TODO.Translate + L"Remaining Fuel:", // TODO.Translate + L"Dist. To Refuel Site:", // TODO.Translate +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Do you want %s to start repairs? It will cost $%d, and helicopter will be unavailable for around %d hour(s).", + L"Helicopter is currently disassembled. Wait until repairs are finished.", + L"Repairs completed. Helicopter is available again.", + L"Helicopter is fully refueled.", + + L"Helicopter has exceeded maximum range!", // TODO.Translate +}; + +STR16 sMapLevelString[] = +{ + L"Sottolivello:", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"Leale", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"non può portare ordini di viaggio sottoterra.", +}; + +STR16 gsTimeStrings[] = +{ + L"h", // hours abbreviation + L"m", // minutes abbreviation + L"s", // seconds abbreviation + L"g", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"Nessuno", + L"Ospedale", + L"Factory", // TODO.Translate + L"Prigione", + L"Militare", + L"Aeroporto", + L"Frequenza di fuoco", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"Inventario", + L"Uscita", + L"Repair", // TODO.Translate + L"Factories", // TODO.Translate +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"Dimensione", // 0 // size of the town in sectors + L"", // blank line, required + L"Controllo", // how much of town is controlled + L"Nessuno", // none of this town + L"Miniera", // mine associated with this town + L"Lealtà", // 5 // the loyalty level of this town + L"Addestrato", // the forces in the town trained by the player + L"", + L"Servizi principali", // main facilities in this town + L"Livello", // the training level of civilians in this town + L"addestramento civili", // 10 // state of civilian training in town + L"Esercito", // the state of the trained civilians in the town + + // Flugente: prisoner texts // TODO.Translate + L"Prisoners", + L"%d (capacity %d)", + L"%d Admins", + L"%d Regulars", + L"%d Elites", + L"%d Officers", + L"%d Generals", + L"%d Civilians", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"Miniera", // 0 + L"Argento", + L"Oro", + L"Produzione giornaliera", + L"Produzione possibile", + L"Abbandonata", // 5 + L"Chiudi", + L"Esci", + L"Produci", + L"Stato", + L"Ammontare produzione", + L"Resource", // 10 L"Tipo di minerale", // TODO.Translate + L"Controllo della città", + L"Lealtà della città", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"Forze nemiche", + L"Settore", + L"# di oggetti", + L"Sconosciuto", + + L"Controllato", + L"Sì", + L"No", + L"Status/Software status:", // TODO.Translate + + L"Additional Intel", // TODO:Translate +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s non è abbastanza vicino.", //Merc is in sector with item but not close enough + L"Non può selezionare quel mercenario.", //MARK CARTER + L"%s non si trova nel settore per prendere quell'oggetto.", + L"Durante il combattimento, dovrete raccogliere gli oggetti manualmente.", + L"Durante il combattimento, dovrete rilasciare gli oggetti manualmente.", + L"%s non si trova nel settore per rilasciare quell'oggetto.", + L"Durante il combattimento, non potete ricaricare con una cassa del ammo.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Posizione", // sector these items are in + L"Totale oggetti", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"Per cambiare l'incarico di un mercenario, come, ad esempio, cambiare la squadra, dottore o riparare, cliccate dentro la colonna 'Compito'", + L"Per assegnare a un mercenario una destinazione in un altro settore, cliccate dentro la colonna 'Dest'", + L"Una volta che a un mercenario è stato ordinato di procedere, una compressione di tempo gli permetterà di muoversi.", + L"Cliccando di sinistro, selezionerete il settore. Cliccando di sinistro un'altra volta, darete al mercenario ordini di movimento. Cliccando di destro, darete informazioni sommarie al settore.", + L"Premete 'h' in questo settore di questa schermata ogni volta che vorrete accedere a questa finestra d'aiuto.", + L"Test Text", + L"Test Text", + L"Test Text", + L"Test Text", + L"Non potrete fare molto in questa schermata finché non arriverete ad Arulco. Quando avrete definito la vostra squadra, cliccate sul pulsante Compressione di Tempo in basso a destra. Questo diminuirà il tempo necessario alla vostra squadra per raggiungere Arulco.", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"Muovere mercenari nel settore", // title for movement box + L"Rotta spostamento esercito", // done with movement menu, start plotting movement + L"Annulla", // cancel this menu + L"Altro", // title for group of mercs not on squads nor in vehicles + L"Select all", // Select all squads TODO: Translate +}; + + +STR16 pUpdateMercStrings[] = +{ + L"Oops:", // an error has occured + L"Scaduto contratto mercenari:", // this pop up came up due to a merc contract ending + L"Portato a termine incarico mercenari:", // this pop up....due to more than one merc finishing assignments + L"Mercenari di nuovo al lavoro:", // this pop up ....due to more than one merc waking up and returing to work + L"Mercenari a riposo:", // this pop up ....due to more than one merc being tired and going to sleep + L"Contratti in scadenza:", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Mostra città (|w)", + L"Mostra |miniere", + L"Mos|tra squadre & nemici", + L"Mostra spazio |aereo", + L"Mostra oggett|i", + L"Mostra esercito & nemici (|Z)", + L"Show |Disease Data", // TODO.Translate + L"Show Weathe|r", + L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Next (|.)", // next page // TODO.Translate + L"Previous (|,)", // previous page // TODO.Translate + L"Exit Sector Inventory (|E|s|c)", // exit sector inventory // TODO.Translate + + // TODO.Translate + L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button + L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge + L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items + L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo + L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button + L"Toggle Get Item Display", // Flugente: move item display // TODO.Translate + L"Save Gear Template", // TODO.Translate + L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"Portati|le", + L"Tattico (|E|s|c)", + L"|Opzioni", + L"Dilata tempo (|+)", // time compress more + L"Comprime tempo (|-)", // time compress less + L"Messaggio precedente (|S|u)\nIndietro (|P|a|g|S|u)", // previous message in scrollable list + L"Messaggio successivo (|G|i|ù)\nAvanti (|P|a|g|G|i|ù)", // next message in the scrollable list + L"Inizia/Ferma tempo (|S|p|a|z|i|o)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Bilancio attuale", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s è morto.", +}; + + +STR16 pDayStrings[] = +{ + L"Giorno", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Enrico", + L"Psych Pro Inc", + L"Help Desk", + L"Psych Pro Inc", + L"Speck", + L"R.I.S.", //5 + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", //10 + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", //15 + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", //20 + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", //25 + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", //30 + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephan", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"Assicurazione M.I.S.", + L"Bobby Ray", + L"Capo", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"Indietro", + L"Avanti", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"Avete una nuova E-mail...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"Eliminate l'E-mail?", + L"Eliminate l'E-mail NON LETTA?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"Da:", + L"Sogg.:", + L"Giorno:", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"posta elettronica", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Contabile aggiuntivo", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Crediti:", // credit (subtract from) to player's account + L"Debiti:", // debit (add to) to player's account + L"Entrate effettive di ieri:", + L"Altri depositi di ieri:", + L"Debiti di ieri:", + L"Bilancio di fine giornata:", + L"Entrate effettive di oggi:", + L"Altri depositi di oggi:", + L"Debiti di oggi:", + L"Bilancio attuale:", + L"Entrate previste:", + L"Bilancio previsto:", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"Giorno", // the day column + L"Crediti", // the credits column (to ADD money to your account) + L"Debiti", // the debits column (to SUBTRACT money from your account) + L"Transazione", // transaction type - see TransactionText below + L"Bilancio", // balance at this point in time + L"Pagina", // page number + L"Giorno(i)", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"Interessi maturati", // interest the player has accumulated so far + L"Deposito anonimo", + L"Tassa di transazione", + L"Assunto", // Merc was hired + L"Acquistato da Bobby Ray", // Bobby Ray is the name of an arms dealer + L"Acconti pagati al M.E.R.C.", + L"Deposito medico per %s", // medical deposit for merc + L"Analisi del profilo I.M.P.", // IMP is the acronym for International Mercenary Profiling + L"Assicurazione acquistata per %s", + L"Assicurazione ridotta per %s", + L"Assicurazione estesa per %s", // johnny contract extended + L"Assicurazione annullata %s", + L"Richiesta di assicurazione per %s", // insurance claim for merc + L"1 giorno", // merc's contract extended for a day + L"1 settimana", // merc's contract extended for a week + L"2 settimane", // ... for 2 weeks + L"Entrata mineraria", + L"", //String nuked + L"Fiori acquistati", + L"Totale rimborso medico per %s", + L"Parziale rimborso medico per %s", + L"Nessun rimborso medico per %s", + L"Pagamento a %s", // %s is the name of the npc being paid + L"Trasferimento fondi a %s", // transfer funds to a merc + L"Trasferimento fondi da %s", // transfer funds from a merc + L"Equipaggiamento esercito in %s", // initial cost to equip a town's militia + L"Oggetti acquistati da%s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s soldi depositati.", + L"Sold Item(s) to the Locals", + L"Facility Use", // HEADROCK HAM 3.6 // TODO.Translate + L"Militia upkeep", // HEADROCK HAM 3.6 // TODO.Translate + L"Ransom for released prisoners", // Flugente: prisoner system TODO.Translate + L"WHO data subscription", // Flugente: disease TODO.Translate + L"Payment to Kerberus", // Flugente: PMC + L"SAM site repair", // Flugente: SAM repair // TODO.Translate + L"Trained workers", // Flugente: train workers + L"Drill militia in %s", // Flugente: drill militia // TODO.Translate + L"Mini event", // rftr: mini events // TODO: translate + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Assicurazione per", // insurance for a merc + L"Est. contratto di %s per 1 giorno.", // entend mercs contract by a day + L"Est. %s contratto per 1 settimana.", + L"Est. %s contratto per 2 settimane.", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"Skyrider è stato pagato $%d", // skyrider was paid an amount of money + L"A Skyrider bisogna ancora dare $%d", // skyrider is still owed an amount of money + L"Skyrider ha finito il carburante", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider è di nuovo pronto a volare.", // Skyrider was grounded but has been freed + L"Skyrider non ha passeggeri. Se avete intenzione di trasportare mercenari in questo settore, assegnateli prima al Veicolo/Elicottero.", +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"Ottimo", + L"Buono", + L"Medio", + L"Basso", + L"Panico", + L"Cattivo", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"L'equipaggio di %s è ora disponibile a Omerta (A9).", + L"L'equipaggio di %s è ora disponibile a Drassen (B13).", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"Salute", + L"Energia", + L"Morale", + L"Condizione", // the condition of the current vehicle (its "health") + L"Carburante", // the fuel level of the current vehicle (its "energy") + L"Poison", // TODO.Translate + L"Water", // drink level + L"Food", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Mercenario precedente (|S|i|n)", // previous merc in the list + L"Mercenario successivo (|D|e|s)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"TAP", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"Non lo vedrete mai più. Siete sicuri?", // do you want to continue and lose the item forever + L"Questo oggetto sembra DAVVERO importante. Siete DAVVERO SICURISSIMI di volerlo gettare via?", // does the user REALLY want to trash this item +}; + + +STR16 pMapErrorString[] = +{ + L"La squadra non può muoversi, se un mercenario dorme.", + +//1-5 + L"Muovete la squadra al primo piano.", + L"Ordini di movimento? È un settore nemico!", + L"I mercenari devono essere assegnati a una squadra o a un veicolo per potersi muovere.", + L"Non avete ancora membri nella squadra.", // you have no members, can't do anything + L"I mercenari non possono attenersi agli ordini.", // merc can't comply with your order +//6-10 + L"ha bisogno di una scorta per muoversi. Inseritelo in una squadra che ne è provvista.", // merc can't move unescorted .. for a male + L"ha bisogno di una scorta per muoversi. Inseritela in una squadra che ne è provvista.", // for a female + L"Il mercenario non è ancora arrivato ad %s!", + L"Sembra che ci siano negoziazioni di contratto da stabilire.", + L"", +//11-15 + L"Ordini di movimento? È in corso una battaglia!", + L"Siete stati vittima di un'imboscata da parte dai Bloodcat nel settore %s!", + L"Siete appena entrati in quella che sembra una tana di un Bloodcat nel settore %s!", + L"", + L"La zona SAM in %s è stata assediata.", +//16-20 + L"La miniera di %s è stata assediata. La vostra entrata giornaliera è stata ridotta di %s per giorno.", + L"Il nemico ha assediato il settore %s senza incontrare resistenza.", + L"Almeno uno dei vostri mercenari non ha potuto essere affidato a questo incarico.", + L"%s non ha potuto unirsi alla %s visto che è completamente pieno", + L"%s non ha potuto unirsi alla %s visto che è troppo lontano.", +//21-25 + L"La miniera di %s è stata invasa dalle forze armate di Deidranna!", + L"Le forze armate di Deidranna hanno appena invaso la zona SAM in %s", + L"Le forze armate di Deidranna hanno appena invaso %s", + L"Le forze armate di Deidranna sono appena state avvistate in %s.", + L"Le forze armate di Deidranna sono appena partite per %s.", +//26-30 + L"Almeno uno dei vostri mercenari non può riposarsi.", + L"Almeno uno dei vostri mercenari non è stato svegliato.", + L"L'esercito non si farà vivo finché non avranno finito di esercitarsi.", + L"%s non possono ricevere ordini di movimento adesso.", + L"I militari che non si trovano entro i confini della città non possono essere spostati inquesto settore.", +//31-35 + L"Non potete avere soldati in %s.", + L"Un veicolo non può muoversi se è vuoto!", + L"%s è troppo grave per muoversi!", + L"Prima dovete lasciare il museo!", + L"%s è morto!", +//36-40 + L"%s non può andare a %s perché si sta muovendo", + L"%s non può salire sul veicolo in quel modo", + L"%s non può unirsi alla %s", + L"Non potete comprimere il tempo finché non arruolerete nuovi mercenari!", + L"Questo veicolo può muoversi solo lungo le strade!", +//41-45 + L"Non potete riassegnare i mercenari che sono già in movimento", + L"Il veicolo è privo di benzina!", + L"%s è troppo stanco per muoversi.", + L"Nessuno a bordo è in grado di guidare il veicolo.", + L"Uno o più membri di questa squadra possono muoversi ora.", +//46-50 + L"Uno o più degli altri mercenari non può muoversi ora.", + L"Il veicolo è troppo danneggiato!", + L"Osservate che solo due mercenari potrebbero addestrare i militari in questo settore.", + L"Il robot non può muoversi senza il suo controller. Metteteli nella stessa squadra.", + L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate +// 51-55 + L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Cliccate di nuovo su una destinazione per confermare la vostra meta finale, oppure cliccate su un altro settore per fissare più tappe.", + L"Rotta di spostamento confermata.", + L"Destinazione immutata.", + L"Rotta di spostamento annullata.", + L"Rotta di spostamento accorciata.", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Cliccate sul settore dove desiderate che i mercenari arrivino.", + L"OK. I mercenari che stavano arrivando si sono dileguati a %s", + L"I mercenari non possono essere trasportati, lo spazio aereo non è sicuro!", + L"Annullato. Il settore d'arrivo è immutato", + L"Lo spazio aereo sopra %s non è più sicuro! Il settore d'arrivo è stato spostato a %s.", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Entra nell'inventario (|I|n|v|i|o)", + L"Getta via l'oggetto", + L"Esci dall'inventario (|I|n|v|i|o)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"Volete che %s lasci il suo equipaggiamento dove si trova ora (%s) o in seguito a (%s) dopo aver preso il volo?", + L"%s sta per partire e spedirà il suo equipaggiamento a %s.", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"Volete che %s lasci il suo equipaggiamento dove si trova ora (%s) o in seguito a (%s) dopo aver preso il volo?", + L"%s sta per partire e spedirà il suo equipaggiamento a %s.", +}; + + +STR16 pMercContractOverStrings[] = +{ + L": contratto scaduto. Egli è tornato a casa.", // merc's contract is over and has departed + L": contratto scaduto. Ella è tornata a casa.", // merc's contract is over and has departed + L": contratto terminato. Egli è partito.", // merc's contract has been terminated + L": contratto terminato. Ella è partita.", // merc's contract has been terminated + L"Dovete al M.E.R.C. troppi soldi, così %s è partito.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages + +STR16 pImpPopUpStrings[] = +{ + L"Codice di autorizzazione non valido", + L"State per riiniziare l'intero processo di profilo. Ne siete certi?", + L"Inserite nome e cognome corretti oltre che al sesso", + L"L'analisi preliminare del vostro stato finanziario mostra che non potete offrire un'analisi di profilo.", + L"Opzione non valida questa volta.", + L"Per completare un profilo accurato, dovete aver spazio per almeno uno dei membri della squadra.", + L"Profilo già completato.", + L"Cannot load I.M.P. character from disk.", + L"You have already reached the maximum number of I.M.P. characters.", + L"You have already three I.M.P characters with the same gender on your team.", + L"You cannot afford the I.M.P character.", // 10 + L"The new I.M.P character has joined your team.", + L"You have already selected the maximum number of traits.", // TODO.Translate + L"No voicesets found.", // TODO.Translate +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"Cosa offriamo", // about the IMP site + L"INIZIO", // begin profiling + L"Personalità", // personality section + L"Attributi", // personal stats/attributes section + L"Appearance", // changed from portrait + L"Voce %d", // the voice selection + L"Fine", // done profiling + L"Ricomincio", // start over profiling + L"Sì, scelgo la risposta evidenziata.", + L"Sì", + L"No", + L"Finito", // finished answering questions + L"Prec.", // previous question..abbreviated form + L"Avanti", // next question + L"SÌ, LO SONO.", // yes, I am certain + L"NO, VOGLIO RICOMINCIARE.", // no, I want to start over the profiling process + L"SÌ", + L"NO", + L"Indietro", // back one page + L"Annulla", // cancel selection + L"Sì, ne sono certo.", + L"No, lasciami dare un'altra occhiata.", + L"Immatricolazione", // the IMP site registry..when name and gender is selected + L"Analisi", // analyzing your profile results + L"OK", + L"Character", // Change from "Voice" + L"Nessuna", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, proceed to character analysis.", +}; + +STR16 pFilesTitle[] = +{ + L"Gestione risorse", +}; + +STR16 pFilesSenderList[] = +{ + L"Rapporto", // the recon report sent to the player. Recon is an abbreviation for reconissance + L"Intercetta #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"Intercetta #2", // second intercept file + L"Intercetta #3", // third intercept file + L"Intercetta #4", // fourth intercept file + L"Intercetta #5", // fifth intercept file + L"Intercetta #6", // sixth intercept file +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"Registro", +}; + +STR16 pHistoryHeaders[] = +{ + L"Giorno", // the day the history event occurred + L"Pagina", // the current page in the history report we are in + L"Giorno", // the days the history report occurs over + L"Posizione", // location (in sector) the event occurred + L"Evento", // the event label +}; + +// Externalized to "TableData\History.xml" +/* +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"%s è stato assunto dall'A.I.M.", // merc was hired from the aim site + L"%s è stato assunto dal M.E.R.C.", // merc was hired from the aim site + L"%s morì.", // merc was killed + L"Acconti stanziati al M.E.R.C.", // paid outstanding bills at MERC + L"Assegno accettato da Enrico Chivaldori", + //6-10 + L"Profilo generato I.M.P.", + L"Acquistato contratto d'assicurazione per %s.", // insurance contract purchased + L"Annullato contratto d'assicurazione per %s.", // insurance contract canceled + L"Versamento per richiesta assicurazione per %s.", // insurance claim payout for merc + L"Esteso contratto di %s di 1 giorno.", // Extented "mercs name"'s for a day + //11-15 + L"Esteso contratto di %s di 1 settimana.", // Extented "mercs name"'s for a week + L"Esteso contratto di %s di 2 settimane.", // Extented "mercs name"'s 2 weeks + L"%s è stato congedato.", // "merc's name" was dismissed. + L"%s è partito.", // "merc's name" quit. + L"avventura iniziata.", // a particular quest started + //16-20 + L"avventura completata.", + L"Parlato col capo minatore di %s", // talked to head miner of town + L"Liberato %s", + L"Inganno utilizzato", + L"Il cibo dovrebbe arrivare a Omerta domani", + //21-25 + L"%s ha lasciato la squadra per diventare la moglie di Daryl Hick", + L"contratto di %s scaduto.", + L"%s è stato arruolato.", + L"Enrico si è lamentato della mancanza di progresso", + L"Vinta battaglia", + //26-30 + L"%s miniera ha iniziato a esaurire i minerali", + L"%s miniera ha esaurito i minerali", + L"%s miniera è stata chiusa", + L"%s miniera è stata riaperta", + L"Trovata una prigione chiamata Tixa.", + //31-35 + L"Sentito di una fabbrica segreta di armi chiamata Orta.", + L"Alcuni scienziati a Orta hanno donato una serie di lanciamissili.", + L"La regina Deidranna ha bisogno di cadaveri.", + L"Frank ha parlato di scontri a San Mona.", + L"Un paziente pensa che lui abbia visto qualcosa nella miniera.", + //36-40 + L"Incontrato qualcuno di nome Devin - vende esplosivi.", + L"Imbattutosi nel famoso ex-mercenario dell'A.I.M. Mike!", + L"Incontrato Tony - si occupa di armi.", + L"Preso un lanciamissili dal Sergente Krott.", + L"Concessa a Kyle la licenza del negozio di pelle di Angel.", + //41-45 + L"Madlab ha proposto di costruire un robot.", + L"Gabby può effettuare operazioni di sabotaggio contro sistemi d'allarme.", + L"Keith è fuori dall'affare.", + L"Howard ha fornito cianuro alla regina Deidranna.", + L"Incontrato Keith - si occupa di un po' di tutto a Cambria.", + //46-50 + L"Incontrato Howard - si occupa di farmaceutica a Balime", + L"Incontrato Perko - conduce una piccola impresa di riparazioni.", + L"Incontrato Sam di Balime - ha un negozio di hardware.", + L"Franz si occupa di elettronica e altro.", + L"Arnold possiede un'impresa di riparazioni a Grumm.", + //51-55 + L"Fredo si occupa di elettronica a Grumm.", + L"Donazione ricevuta da un ricco ragazzo a Balime.", + L"Incontrato un rivenditore di un deposito di robivecchi di nome Jake.", + L"Alcuni vagabondi ci hanno dato una scheda elettronica.", + L"Corrotto Walter per aprire la porta del seminterrato.", + //56-60 + L"Se Dave ha benzina, potrà fare il pieno gratis.", + L"Corrotto Pablo.", + L"Kingpin tiene i soldi nella miniera di San Mona.", + L"%s ha vinto il Combattimento Estremo", + L"%s ha perso il Combattimento Estremo", + //61-65 + L"%s è stato squalificato dal Combattimento Estremo", + L"trovati moltissimi soldi nascosti nella miniera abbandonata.", + L"Incontrato assassino ingaggiato da Kingpin.", + L"Perso il controllo del settore", //ENEMY_INVASION_CODE + L"Difeso il settore", + //66-70 + L"Persa la battaglia", //ENEMY_ENCOUNTER_CODE + L"Imboscata fatale", //ENEMY_AMBUSH_CODE + L"Annientata imboscata nemica", + L"Attacco fallito", //ENTERING_ENEMY_SECTOR_CODE + L"Attacco riuscito!", + //71-75 + L"Creature attaccate", //CREATURE_ATTACK_CODE + L"Ucciso dai Bloodcat", //BLOODCAT_AMBUSH_CODE + L"Massacrati dai Bloodcat", + L"%s è stato ucciso", + L"Data a Carmen la testa di un terrorista", + //76-80 + L"Massacro sinistro", + L"Ucciso %s", + L"Met Waldo - aircraft mechanic.", + L"Helicopter repairs started. Estimated time: %d hour(s).", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"N/A", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"E-mail", + L"Rete", + L"Finanza", + L"Personale", + L"Cronologia", + L"File", + L"Chiudi", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"A.I.M.", + L"Bobby Ray", + L"I.M.P", + L"M.E.R.C.", + L"Pompe funebri", + L"Fiorista", + L"Assicurazione", + L"Annulla", + L"Campaign History", // TODO.Translate + L"MeLoDY", + L"WHO", + L"Kerberus", + L"Militia Overview", // TODO.Translate + L"R.I.S.", + L"Factories", // TODO.Translate +}; + +STR16 pBookmarkTitle[] = +{ + L"Segnalibri", + L"Cliccate con il destro per accedere a questo menu in futuro.", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"Caricamento", + L"Caricamento", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Prendi", // take money from merc + L"Dai", // give money to merc + L"Annulla", // cancel transaction + L"Pulisci", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Trasferisce $", // transfer money to merc -- short form + L"Stato", // view stats of the merc + L"Inventario", // view the inventory of the merc + L"Impiego", +}; + +STR16 sATMText[ ]= +{ + L"Trasferisci fondi?", // transfer funds to merc? + L"Ok?", // are we certain? + L"Inserisci somma", // enter the amount you want to transfer to merc + L"Seleziona tipo", // select the type of transfer to merc + L"Fondi insufficienti", // not enough money to transfer to merc + L"La somma deve essere un multiplo di $10", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"Errore", + L"Il server non ha entrata NSD.", + L"Controlla l'indirizzo LRU e prova di nuovo.", + L"OK", + L"Connessione intermittente all'host. Tempi d'attesa più lunghi per il trasferimento.", +}; + + +STR16 pPersonnelString[] = +{ + L"Mercenari:", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"A.I.M.", + L"Membri dell'A.I.M.", + L"Ritratti A.I.M.", // a mug shot is another name for a portrait + L"Categoria A.I.M.", + L"A.I.M.", + L"Membri dell'A.I.M.", + L"Tattiche A.I.M.", + L"Storia A.I.M.", + L"Collegamenti A.I.M.", + L"M.E.R.C.", + L"Conti M.E.R.C.", + L"Registrazione M.E.R.C.", + L"Indice M.E.R.C.", + L"Bobby Ray", + L"Bobby Ray - Armi", + L"Bobby Ray - Munizioni", + L"Bobby Ray - Giubb. A-P", + L"Bobby Ray - Varie", //misc is an abbreviation for miscellaneous + L"Bobby Ray - Usato", + L"Bobby Ray - Ordine Mail", + L"I.M.P.", + L"I.M.P.", + L"Servizio Fioristi Riuniti", + L"Servizio Fioristi Riuniti - Galleria", + L"Servizio Fioristi Riuniti - Ordine", + L"Servizio Fioristi Riuniti - Card Gallery", + L"Agenti assicurativi Malleus, Incus & Stapes", + L"Informazione", + L"Contratto", + L"Commenti", + L"Servizio di pompe funebri di McGillicutty", + L"", + L"URL non ritrovato.", + L"%s Press Council - Conflict Summary", // TODO.Translate + L"%s Press Council - Battle Reports", + L"%s Press Council - Latest News", + L"%s Press Council - About us", + L"Mercs Love or Dislike You - About us", // TODO.Translate + L"Mercs Love or Dislike You - Analyze a team", + L"Mercs Love or Dislike You - Pairwise comparison", + L"Mercs Love or Dislike You - Personality", + L"WHO - About WHO", + L"WHO - Disease in Arulco", + L"WHO - Helpful Tips", + L"Kerberus - About Us", + L"Kerberus - Hire a Team", + L"Kerberus - Individual Contracts", + L"Militia Overview", + L"Recon Intelligence Services - Information Requests", // TODO.Translate + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Factory Overview", // TODO.Translate + L"Bobby Ray's - Recent Shipments", + L"Encyclopedia", + L"Encyclopedia - Data", + L"Briefing Room", + L"Briefing Room - Data", +}; + +STR16 pShowBookmarkString[] = +{ + L"Aiuto", + L"Cliccate su Rete un'altra volta per i segnalibri.", +}; + +STR16 pLaptopTitles[] = +{ + L"Cassetta della posta", + L"Gestione risorse", + L"Personale", + L"Contabile aggiuntivo", + L"Ceppo storico", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"Ucciso in azione", + L"Licenziato", + L"Altro", + L"Sposato", + L"Contratto Scaduto", + L"Liberato", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"Squadra attuale", + L"Partenze", + L"Costo giornaliero:", + L"Costo più alto:", + L"Costo più basso:", + L"Ucciso in azione:", + L"Licenziato:", + L"Altro:", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Più basso", + L"Normale", + L"Più alto", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"SAL", + L"AGI", + L"DES", + L"FOR", + L"COM", + L"SAG", + L"LIV", + L"TIR", + L"MEC", + L"ESP", + L"PS", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"Contratto", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"Continua", + L"Fermati", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"Siete stati sconfitti in questo settore!", + L"Il nemico, non avendo alcuna pietà delle anime della squadra, divorerà ognuno di voi!", + L"I membri inconscenti della vostra squadra sono stati catturati!", + L"I membri della vostra squadra sono stati fatti prigionieri dal nemico.", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"Indietro", + L"Avanti", + L"Accetta", + L"Pulisci", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"Indietro", + L"Avanti", +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Autorizza", + L"Home Page", + L"Conto #:", + L"Merc", + L"Giorni", + L"Tasso", //5 + L"Costo", + L"Totale:", + L"Conferma il pagamento di %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+gear)", // TODO.Translate +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Previous", + L"Next", +}; + + + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"Salute", + L"Agilità", + L"Destrezza", + L"Forza", + L"Comando", + L"Saggezza", + L"Liv. esperienza", + L"Mira", + L"Meccanica", + L"Esplosivi", + L"Pronto socc.", + + L"Indietro", + L"Ricompensa", + L"Successivo", + L"Info. addizionali", + L"Home Page", + L"Assoldato", + L"Salario:", + L"Al giorno", + L"Gear:", // TODO.Translate + L"Totale:", + L"Deceduto", + + L"Avete già una squadra di mercenari.", + L"Compra equip.?", + L"Non disponibile", + L"Unsettled Bills", // TODO.Translate + L"Bio", // TODO.Translate + L"Inv", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Apri conto", + L"Annulla", + L"Non hai alcun conto. Vuoi aprirne uno?", +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Speck T. Kline, fondatore e proprietario", + L"Per aprire un conto, cliccate qui", + L"Per visualizzare un conto, cliccate qui", + L"Per visualizzare i file, cliccate qui", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Transfer failed. No funds available.", // TODO.Translate +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"Impresa di pompe funebri di McGillicutty: Il dolore delle famiglie che hanno fornito il loro aiuto dal 1983.", + L"Precedentemente mercenario dell'A.I.M. Murray \"Pops\" McGillicutty è un impresario di pompe funebri qualificato e con molta esperienza.", + L"Essendo coinvolto profondamente nella morte e nel lutto per tutta la sua vita, Pops sa quanto sia difficile affrontarli.", + L"L'impresa di pompe funebri di McGillicutty offre una vasta gamma di servizi funebri, da una spalla su cui piangere a ricostruzioni post-mortem per corpi mutilati o sfigurati.", + L"Lasciate che l'impresa di pompe funebri di McGillicutty vi aiuti e i vostri amati riposeranno in pace.", + + // Text for the various links available at the bottom of the page + L"SPEDISCI FIORI", + L"ESPOSIZIONE DI BARE & URNE", + L"SERVIZI DI CREMAZIONE", + L"SERVIZI PRE-FUNEBRI", + L"CERIMONIALE FUNEBRE", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"Purtroppo, il resto di questo sito non è stato completato a causa di una morte in famiglia. Aspettando la lettura del testamento e la riscossione dell'eredità, il sito verrà ultimato non appena possibile.", + L"Vi porgiamo, comunque, le nostre condolianze in questo momento di dolore. Contatteci ancora.", +}; + +// Text for the florist Home Page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Galleria", + + //Address of United Florist + + L"\"Ci lanciamo col paracadute ovunque\"", + L"1-555-SCENT-ME", + L"333 Dot. NoseGay, Seedy City, CA USA 90210", + L"http://www.scent-me.com", + + // detail of the florist page + + L"Siamo veloci ed efficienti!", + L"Consegna il giorno successivo in quasi tutto il mondo, garantito. Applicate alcune restrizioni.", + L"I prezzi più bassi in tutto il mondo, garantito!", + L"Mostrateci un prezzo concorrente più basso per qualsiasi progetto, e riceverete una dozzina di rose, gratuitamente.", + L"Flora, fauna & fiori in volo dal 1981.", + L"I nostri paracadutisti decorati ex-bomber lanceranno il vostro bouquet entro un raggio di dieci miglia dalla locazione richiesta. Sempre e ovunque!", + L"Soddisfiamo la vostra fantasia floreale.", + L"Lasciate che Bruce, il nostro esperto in composizioni floreali, selezioni con cura i fiori più freschi e della migliore qualità dalle nostre serre più esclusive.", + L"E ricordate, se non l'abbiamo, possiamo coltivarlo - E subito!", +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"Indietro", + L"Spedisci", + L"Home", + L"Galleria", + + L"Nome del bouquet:", + L"Prezzo:", //5 + L"Numero ordine:", + L"Data consegna", + L"gior. succ.", + L"arriva quando arriva", + L"Luogo consegna", //10 + L"Servizi aggiuntivi", + L"Bouquet schiacciato ($10)", + L"Rose nere ($20)", + L"Bouquet appassito ($10)", + L"Torta di frutta (se disponibile 10$)", //15 + L"Sentimenti personali:", + L"Il vostro messaggio non può essere più lungo di 75 caratteri.", + L"... oppure sceglietene uno dai nostri", + + L"BIGLIETTI STANDARD", + L"Informazioni sulla fatturazione",//20 + + //The text that goes beside the area where the user can enter their name + + L"Nome:", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"Prec.", //abbreviation for previous + L"Succ.", //abbreviation for next + + L"Clicca sul modello che vuoi ordinare.", + L"Ricorda: c'è un supplemento di 10$ per tutti i bouquet appassiti o schiacciati.", + + //text on the button + + L"Home", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"Cliccate sulla vostra selezione", + L"Indietro", +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"Ordine", //Title of the page + L"Qta", // The number of items ordered + L"Peso (%s)", // The weight of the item + L"Nome oggetto", // The name of the item + L"Prezzo unit.", // the item's weight + L"Totale", //5 // The total price of all of items of the same type + L"Sotto-totale", // The sub total of all the item totals added + L"S&C (Vedete luogo consegna)", // S&H is an acronym for Shipping and Handling + L"Totale finale", // The grand total of all item totals + the shipping and handling + L"Luogo consegna", + L"Spedizione veloce", //10 // See below + L"Costo (per %s.)", // The cost to ship the items + L"Espresso di notte", // Gets deliverd the next day + L"2 giorni d'affari", // Gets delivered in 2 days + L"Servizio standard", // Gets delivered in 3 days + L"Annulla ordine",//15 // Clears the order page + L"Accetta ordine", // Accept the order + L"Indietro", // text on the button that returns to the previous page + L"Home Page", // Text on the button that returns to the home Page + L"* Indica oggetti usati", // Disclaimer stating that the item is used + L"Non potete permettervi di pagare questo.", //20 // A popup message that to warn of not enough money + L"", // Gets displayed when there is no valid city selected + L"Siete sicuri di volere spedire quest'ordine a %s?", // A popup that asks if the city selected is the correct one + L"peso del pacco**", // Displays the weight of the package + L"** Peso min.", // Disclaimer states that there is a minimum weight for the package + L"Spedizioni", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"Pistol", + L"M. Pistol", + L"SMG", + L"Rifle", + L"SN Rifle", + L"AS Rifle", + L"MG", + L"Shotgun", + L"Heavy W.", + + // Ammo + L"Pistol", + L"M. Pistol", + L"SMG", + L"Rifle", + L"SN Rifle", + L"AS Rifle", + L"MG", + L"Shotgun", + + // Used + L"Guns", + L"Armor", + L"LBE Gear", + L"Misc", + + // Armour + L"Helmets", + L"Vests", + L"Leggings", + L"Plates", + + // Misc + L"Blades", + L"Th. Knives", + L"Blunt W.", + L"Grenades", + L"Bombs", + L"Med. Kits", + L"Kits", + L"Face Items", + L"LBE Gear", + L"Optics", // Madd: new BR filters // TODO.Translate + L"Grip/LAM", + L"Muzzle", + L"Stock", + L"Mag/Trig.", + L"Other Att.", + L"Misc.", +}; + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"Ordini:", // Title + // instructions on how to order + L"Cliccate sull'oggetto. Sinistro per aggiungere pezzi, destro per toglierne. Una volta selezionata la quantità, procedete col nuovo ordine.", + + //Text on the buttons to go the various links + + L"Oggetti prec.", // + L"Armi", //3 + L"Munizioni", //4 + L"Giubb. A-P", //5 + L"Varie", //6 //misc is an abbreviation for miscellaneous + L"Usato", //7 + L"Oggetti succ.", + L"ORDINE", + L"Home Page", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"La vostra squadra ha",//11 + L"arma(i) che usa(no) questo tipo di munizioni", //12 + + //The following lines provide information on the items + + L"Peso:", // Weight of all the items of the same type + L"Cal.:", // the caliber of the gun + L"Mag.:", // number of rounds of ammo the Magazine can hold + L"Git.:", // The range of the gun + L"Dan.:", // Damage of the weapon + L"FFA:", // Weapon's Rate Of Fire, acronym ROF + L"PA:", // Weapon's Action Points, acronym AP + L"Stun:", // Weapon's Stun Damage + L"Protect:", // Armour's Protection + L"Trav.:", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Costo:", // Cost of the item + L"Inventario:", // The number of items still in the store's inventory + L"Num. ordine:", // The number of items on order + L"Danneggiato", // If the item is damaged + L"Peso:", // the Weight of the item + L"Totale:", // The total cost of all items on order + L"* funzionale al %%", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"Darn! Quest'ordine qui accetterà solo " ,//First part + L" oggetti. Se avete intenzione di ordinare più merce (ed è quello che speriamo), fate un ordine a parte e accettate le nostre scuse.", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Ci dispiace. Non disponiamo più di questo articolo. Riprovate più tardi.", + + //A popup that tells the user that the store is temporarily sold out + + L"Ci dispiace, ma siamo momentaneamente sprovvisti di oggetti di questo genere.", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"Questo è il negozio con la fornitura militare e le armi più recenti e potenti!", + L"Possiamo trovare la soluzione perfetta per tutte le vostre esigenze riguardo agli esplosivi.", + L"Oggetti usati e riparati", + + //Text for the various links to the sub pages + + L"Varie", + L"ARMI", + L"MUNIZIONI", //5 + L"GIUBB. A-P", + + //Details on the web site + + L"Se non lo vendiamo, non potrete averlo!", + L"In costruzione", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"Membri dell'A.I.M.", // Title + // Title for the way to sort + L"Ordine per:", + + // sort by... + + L"Prezzo", + L"Esperienza", + L"Mira", + L"Meccanica", + L"Esplosivi", + L"Pronto socc.", + L"Salute", + L"Agilità", + L"Destrezza", + L"Forza", + L"Comando", + L"Saggezza", + L"Nome", + + //Text of the links to other AIM pages + + L"Visualizza le facce dei mercenari disponibili", + L"Rivedi il file di ogni singolo mercenario", + L"Visualizza la galleria degli associati dell'A.I.M.", + + // text to display how the entries will be sorted + + L"Crescente", + L"Decrescente", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Indietro", + L"Home Page", + L"Indice", + L"Avanti", + L"Disaccordo", + L"Accordo", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"Clic sinistro", + L"per contattarlo", + L"Clic destro", + L"per i mercenari disponibili.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Salute", + L"Agilità", + L"Destrezza", + L"Forza", + L"Comando", + L"Saggezza", + L"Esperienza", + L"Mira", + L"Meccanica", + L"Esplosivi", + L"Pronto socc.", //10 + + // the contract expenses' area + + L"Paga", + L"Durata", + L"1 giorno", + L"1 settimana", + L"2 settimane", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"Indietro", + L"Contratto", + L"Avanti", + + L"Ulteriori informazioni", // Title for the additional info for the merc's bio + L"Membri attivi", //20 // Title of the page + L"Dispositivo opzionale:", // Displays the optional gear cost + L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's // TODO.Translate + L"Deposito MEDICO richiesto", // If the merc required a medical deposit, this is displayed + L"Kit 1", // Text on Starting Gear Selection Button 1 // TODO.Translate + L"Kit 2", // Text on Starting Gear Selection Button 2 + L"Kit 3", // Text on Starting Gear Selection Button 3 + L"Kit 4", // Text on Starting Gear Selection Button 4 + L"Kit 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"Costo del contratto:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"1 giorno", + L"1 settimana", + L"2 settimane", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"Nessun equip.", + L"Compra equip.", + + // Text on the Buttons + + L"TRASFERISCI FONDI", // to actually hire the merc + L"ANNULLA", // go back to the previous menu + L"ARRUOLA", // go to menu in which you can hire the merc + L"TACI", // stops talking with the merc + L"OK", + L"LASCIA MESSAGGIO", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Videoconferenza con", + L"Connessione...", + + L"con deposito" // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"TRASFERIMENTO ELETTRONICO FONDI RIUSCITO", // You hired the merc + L"NON IN GRADO DI TRASFERIRE", // Player doesn't have enough money, message 1 + L"FONDI INSUFFICIENTI", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"In missione", + L"Lascia messaggio", + L"Deceduto", + + //If you try to hire more mercs than game can support + + L"Avete già una squadra di mercenari.", + + L"Messaggio già registrato", + L"Messaggio registrato", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"Collegamenti dell'A.I.M.", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"Storia dell'A.I.M.", //Title + + // Text on the buttons at the bottom of the page + + L"Indietro", + L"Home Page", + L"Associati", + L"Avanti", +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Prezzo", + L"Esperienza", + L"Mira", + L"Meccanica", + L"Esplosivi", + L"Pronto socc.", + L"Salute", + L"Agilità", + L"Destrezza", + L"Forza", + L"Comando", + L"Saggezza", + L"Nome", + + // The title of the page, the above text gets added at the end of this text + + L"Membri scelti dell'A.I.M. in ordine crescente secondo %s", + L"Membri scelti dell'A.I.M. in ordine decrescente secondo %s", + + // Instructions to the players on what to do + + L"Clic sinistro", + L"Per scegliere un mercenario.", //10 + L"Clic destro", + L"Per selezionare opzioni", + + // Gets displayed on top of the merc's portrait if they are... + + L"Via", + L"Deceduto", //14 + L"In missione", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"PAGINA 1", + L"PAGINA 2", + L"PAGINA 3", + + L"Membri dell'A.I.M.", // Title of the page + + L"FINE", // Stops displaying information on selected merc + L"Next page", // TODO.Translate +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"A.I.M. e il logo A.I.M. sono marchi registrati in diversi paesi.", + L"Di conseguenza, non cercate di copiarci.", + L"Copyright 1998-1999 A.I.M., Ltd. Tutti i diritti riservati.", + + //Text for an advertisement that gets displayed on the AIM page + + L"Servizi riuniti floreali", + L"\"Atterriamo col paracadute ovunque\"", //10 + L"Fallo bene", + L"... la prima volta", + L"Se non abbiamo armi e oggetti, non ne avrete bisogno.", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"Home Page", + L"Membri", + L"Associati", + L"Assicurazioni", + L"Storia", + L"Collegamenti", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"MERCANZIA IN STOCK", //Header for the merchandise available + L"PAGINA", //The current store inventory page being displayed + L"COSTO TOTALE", //The total cost of the the items in the Dealer inventory area + L"VALORE TOTALE", //The total value of items player wishes to sell + L"STIMATO", //Button text for dealer to evaluate items the player wants to sell + L"TRANSAZIONE", //Button text which completes the deal. Makes the transaction. + L"FINE", //Text for the button which will leave the shopkeeper interface. + L"COSTO DI RIPARAZIONE", //The amount the dealer will charge to repair the merc's goods + L"1 ORA", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d ORE", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"RIPARATO", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"Non c'è abbastanza spazio nel vostro margine di ordine.", //Message box that tells the user there is no more room to put there stuff + L"%d MINUTI", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Lascia oggetto a terra.", + L"BUDGET", // TODO.Translate +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Prendi", // Take money from the player + L"Dai", // Give money to the player + L"Annulla", // Cancel the transfer + L"Pulisci", // Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"Seleziona tipo", // tells the user to select either to give or take from the merc + L"Inserisci somma", // Enter the amount to transfer + L"Trasferisci fondi al mercenario", // Giving money to the merc + L"Trasferisci fondi dal mercenario", // Taking money from the merc + L"Fondi insufficienti", // Not enough money to transfer + L"Bilancio", // Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"Volete sottrarre %s dal vostro conto principale per coprire la differenza?", + L"Fondi insufficienti. Avete pochi %s", + L"Volete sottrarre %s dal vostro conto principale per coprire la spesa?", + L"Rivolgetevi all'operatore per iniziare la transazione", + L"Rivolgetevi all'operatore per riparare gli oggetti selezionati", + L"Fine conversazione", + L"Bilancio attuale", + + L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate + L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"Salva partita", + L"Carica partita", + L"Abbandona", + L"Next", + L"Prev", + L"Fine", + L"1.13 Features", + L"New in 1.13", + L"Options", + + //Text above the slider bars + L"Effetti", + L"Parlato", + L"Musica", + + //Confirmation pop when the user selects.. + L"Volete terminare la partita e tornare al menu principale?", + + L"Avete bisogno dell'opzione 'Parlato' o di quella 'Sottotitoli' per poter giocare.", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Salva partita", + L"Carica partita", + L"Annulla", + L"Salvamento selezionato", + L"Caricamento selezionato", + + L"Partita salvata con successo", + L"ERRORE durante il salvataggio!", + L"Partita caricata con successo", + L"ERRORE durante il caricamento!", + + L"La versione del gioco nel file della partita salvata è diverso dalla versione attuale. È abbastanza sicuro proseguire. Continuate?", + L"I file della partita salvata potrebbero essere annullati. Volete cancellarli tutti?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"La versionbe salvata è cambiata. Fateci avere un report, se incontrate problemi. Continuate?", +#else + L"Tentativo di caricare una versione salvata più vecchia. Aggiornate e caricate automaticamente quella salvata?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"La versione salvata e la versione della partita sono cambiate. Fateci avere un report, se incontrate problemi. Continuate?", +#else + L"Tentativo di caricare una vecchia versione salvata. Aggiornate e caricate automaticamente quella salvata?", +#endif + L"Siete sicuri di volere sovrascrivere la partita salvata nello slot #%d?", + L"Volete caricare la partita dallo slot #", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"Lo spazio su disco si sta esaurendo. Sono disponibili solo %d MB, mentre per giocare a Jagged dovrebbero esserci almeno %d MB liberi .", + + L"Salvataggio in corso", //When saving a game, a message box with this string appears on the screen + + L"Armi normali", + L"Tonn. di armi", + L"Stile realistico", + L"Stile fantascientifico", + + L"Difficoltà", + L"Platinum Mode", //Placeholder English + L"Bobby Ray Quality", + L"Good", + L"Great", + L"Excellent", + L"Awesome", + + L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", + L"New Inventory does not work from the default 'Data' folder.", + + L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity", // TODO.Translate +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Livello mappa", + L"Non avete soldati. Avete bisogno di addestrare gli abitanti della città per poter disporre di un esercito cittadino.", + L"Entrata giornaliera", + L"Il mercenario ha l'assicurazione sulla vita", + L"%s non è stanco.", + L"%s si sta muovendo e non può riposare", + L"%s è troppo stanco, prova un po' più tardi.", + L"%s sta guidando.", + L"La squadra non può muoversi, se un mercenario dorme.", + + // stuff for contracts + L"Visto che non potete pagare il contratto, non avete neanche i soldi per coprire il premio dell'assicurazione sulla vita di questo nercenario.", + L"%s premio dell'assicurazione costerà %s per %d giorno(i) extra. Volete pagare?", + L"Settore inventario", + L"Il mercenario ha una copertura medica.", + + // other items + L"Medici", // people acting a field medics and bandaging wounded mercs + L"Pazienti", // people who are being bandaged by a medic + L"Fine", // Continue on with the game after autobandage is complete + L"Ferma", // Stop autobandaging of patients by medics now + L"Siamo spiacenti. Questa opzione è stata disabilitata in questo demo.", // informs player this option/button has been disabled in the demo + L"%s non ha un kit di riparazione.", + L"%s non ha un kit di riparazione.", + L"Non ci sono abbastanza persone che vogliono essere addestrate ora.", + L"%s è pieno di soldati.", + L"Il mercenario ha un contratto a tempo determinato.", + L"Il contratto del mercenario non è assicurato", + + // Flugente: disease texts describing what a map view does TODO.Translate + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate + + // Flugente: weather texts describing what a map view does + L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"La squadra %d ha notato qualcuno nel settore %s", + L"La squadra %s ha notato qualcuno nel settore %s", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"Addestrare una squadra dell'esercito cittadino costerà $", // telling player how much it will cost + L"Approvate la spesa?", // asking player if they wish to pay the amount requested + L"Non potete permettervelo.", // telling the player they can't afford to train this town + L"Continuate ad aeddestrare i soldati in %s (%s %d)?", // continue training this town? + + L"Costo $", // the cost in dollars to train militia + L"(S/N)", // abbreviated yes/no + L"", // unused + L"Addestrare l'esrecito cittadino nei settori di %d costerà $ %d. %s", // cost to train sveral sectors at once + + L"Non potete permettervi il $%d per addestrare l'esercito cittadino qui.", + L"%s ha bisogno di una percentuale di %d affinché possiate continuare ad addestrare i soldati.", + L"Non potete più addestrare i soldati a %s.", + L"liberate more town sectors", // TODO.Translate + + L"liberate new town sectors", // TODO.Translate + L"liberate more towns", // TODO.Translate + L"regain your lost progress", // TODO.Translate + L"progress further", // TODO.Translate + + L"recruit more rebels", // TODO.Translate +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"Potete prelevare solo fino a $20,000 alla volta.", + L"Sieti sicuri di voler depositare il %s sul vostro conto?", +}; + +STR16 gzCopyrightText[] = +{ + L"Copyright (C) 1999 Sir-tech Canada Ltd. Tutti i diritti riservati.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Parlato", + L"Conferme mute", + L"Sottotitoli", + L"Mettete in pausa il testo del dialogo", + L"Fumo dinamico", + L"Sangue e violenza", + L"Non è necessario usare il mouse!", + L"Vecchio metodo di selezione", + L"Mostra il percorso dei mercenari", + L"Mostra traiettoria colpi sbagliati", + L"Conferma in tempo reale", + L"Visualizza gli avvertimenti sveglio/addormentato", + L"Utilizza il sistema metrico", + L"Evidenzia Merc", + L"Sposta il cursore sui mercenari", + L"Sposta il cursore sulle porte", + L"Evidenzia gli oggetti", + L"Mostra le fronde degli alberi", + L"Smart Tree Tops", // TODO. Translate + L"Mostra strutture", + L"Mostra il cursore 3D", + L"Show Chance to Hit on cursor", + L"GL Burst uses Burst cursor", + L"Allow Enemy Taunts", // Changed from "Enemies Drop all Items" - SANDRO + L"High angle Grenade launching", + L"Allow Real Time Sneaking", // Changed from "Restrict extra Aim Levels" - SANDRO + L"Space selects next Squad", + L"Show Item Shadow", + L"Show Weapon Ranges in Tiles", + L"Tracer effect for single shot", + L"Rain noises", + L"Allow crows", + L"Show Soldier Tooltips", + L"Auto save", + L"Silent Skyrider", + L"Enhanced Description Box", + L"Forced Turn Mode", // add forced turn mode + L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map + L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate + L"Logical Bodytypes (WIP)", + L"Show Merc Ranks", // shows mercs ranks // TODO.Translate + L"Show Face gear graphics", // TODO.Translate + L"Show Face gear icons", + L"Disabilita Swap Cursore", // Disable Cursor Swap + L"Quiet Training", // Madd: mercs don't say quotes while training // TODO.Translate + L"Quiet Repairing", // Madd: mercs don't say quotes while repairing // 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"Allow Zombies", // Flugente Zombies + L"Enable inventory popups", // the_bob : enable popups for picking items from sector inv // TODO.Translate + L"Mark Remaining Hostiles", // TODO.Translate + L"Show LBE Content", // TODO.Translate + L"Invert mouse wheel", // TODO.Translate + L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances // TODO.Translate + L"Show enemy location", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--DEBUG OPTIONS--", // an example options screen options header (pure text) + L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. // TODO.Translate + L"Reset ALL game options", // failsafe show/hide option to reset all options + L"Do you really want to reset?", // a do once and reset self option (button like effect) + L"Debug Options in other builds", // allow debugging in release or mapeditor + L"DEBUG Render Option group", // an example option that will show/hide other options + L"Render Mouse Regions", // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Attivate questa opzione, se volete ascoltare il dialogo dei personaggi.", + + //Mute Confirmation + L"Attivate o disattivate le conferme verbali dei personaggi.", + + //Subtitles + L"Controllate se il testo su schermo viene visualizzato per il dialogo.", + + //Key to advance speech + L"Se i sottotitoli sono attivati, utilizzate questa opzione per leggere tranquillamente i dialoghi NPC.", + + //Toggle smoke animation + L"Disattivate questa opzione, se il fumo dinamico diminuisce la frequenza d'aggiornamento.", + + //Blood n Gore + L"Disattivate questa opzione, se il sangue vi disturba.", + + //Never move my mouse + L"Disattivate questa opzione per muovere automaticamente il mouse sulle finestre a comparsa di conferma al loro apparire.", + + //Old selection method + L"Attivate questa opzione per selezionare i personaggi e muoverli come nel vecchio JA (dato che la funzione è stata invertita).", + + //Show movement path + L"Attivate questa opzione per visualizzare i sentieri di movimento in tempo reale (oppure disattivatela utilizzando il tasto |M|a|i|u|s|c).", + + //show misses + L"Attivate per far sì che la partita vi mostri dove finiscono i proiettili quando \"sbagliate\".", + + //Real Time Confirmation + L"Se attivata, sarà richiesto un altro clic su \"salva\" per il movimento in tempo reale.", + + //Sleep/Wake notification + L"Se attivata, verrete avvisati quando i mercenari in \"servizio\" vanno a riposare e quando rientrano in servizio.", + + //Use the metric system + L"Se attivata, utilizza il sistema metrico di misurazione; altrimenti ricorre al sistema britannico.", + + //Highlight Mercs + L"Quando attivato, evidenzia il mercenario (non visibile ai nemici).\nAttiva/disattiva nel gioco con (|G)", + + //Smart cursor + L"Se attivata, muovendo il cursore vicino ai vostri mercenari li evidenzierà automaticamente.", + + //snap cursor to the door + L"Se attivata, muovendo il cursore vicino a una porta farà posizionare automaticamente il cursore sopra di questa.", + + //glow items + L"Se attivata, l'opzione evidenzierà gli Oggetti automaticamente. (|C|t|r|l+|A|l|t+|I)", + + //toggle tree tops + L"Se attivata, mostra le fronde degli alberi. (|T)", + + //smart tree tops + L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate + + //toggle wireframe + L"Se attivata, visualizza le |Strutture dei muri nascosti. (|C|t|r|l+|A|l|t+|W)", + + L"Se attivata, il cursore di movimento verrà mostrato in 3D. (|H|o|m|e)", + + // Options for 1.13 + L"When ON, the chance to hit is shown on the cursor.", + L"When ON, GL burst uses burst cursor.", + L"When ON, enemies will occasionally comment certain actions.", // Changed from Enemies Drop All Items - SANDRO + L"When ON, grenade launchers fire grenades at higher angles. (|A|l|t+|Q)", + L"When ON, the turn based mode will not be entered when sneaking unnoticed and seeing an enemy unless pressing |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO + L"When ON, |S|p|a|c|e selects next squad automatically.", + L"When ON, item shadows will be shown.", + L"When ON, weapon ranges will be shown in tiles.", + L"When ON, tracer effect will be shown for single shots.", + L"When ON, you will hear rain noises when it is raining.", + L"When ON, the crows are present in game.", + 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, Skyrider will not talk anymore.", + 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+|T).", // add forced turn mode + 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, mercenary body graphic can change along with equipped gear.\n(not fully implemented yet, will make mercs invisible if activated)", // 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 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"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, zombies will spawn. Beware!", // allow zombies // TODO.Translate + L"When ON, enables popup boxes that appear when you left click on empty merc inventory slots while viewing sector inventory in mapscreen.", // TODO.Translate + L"When ON, approximate locations of the last enemies in the sector are highlighted.", // TODO.Translate + L"When ON, show the contents of an LBE item, otherwise show the regular NAS interface.", // TODO.Translate + L"When ON, inverts mouse wheel directions.", // TODO.Translate + L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate + L"When ON, shows last known enemy location.", //TODO.Translate + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Force all pending Bobby Ray shipments", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", + L"Click me to fix corrupt game settings", // failsafe show/hide option to reset all options + L"Click me to fix corrupt game settings", // a do once and reset self option (button like effect) + L"Allows debug options in release or mapeditor builds", // allow debugging in release or mapeditor + L"Toggle to display debugging render options", // an example option that will show/hide other options + L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + + +STR16 gzGIOScreenText[] = +{ + L"INSTALLAZIONE INIZIALE DEL GIOCO", +#ifdef JA2UB + L"Random Manuel texts", + L"Off", + L"On", +#else + L"Versione del gioco", + L"Realistica", + L"Fantascientifica", +#endif + L"Platinum", //Placeholder English + L"Opzioni delle armi", + L"Available Arsenal", // changed by SANDRO + L"Varietà di armi", + L"Normale", + L"Livello di difficoltà", + L"Principiante", + L"Esperto", + L"Professionista", + L"Start", // TODO.Translate + L"Annulla", + L"Difficoltà extra", + L"Tempo illimitato", + L"Turni a tempo", + L"Disabilitato per Demo", + L"Bobby Ray Quality", + L"Good", + L"Great", + L"Excellent", + L"Awesome", + L"INSANE", + L"Inventory / Attachments", // TODO.Translate + L"NOT USED", + L"NOT USED", + L"Load MP Game", + L"INITIAL GAME SETTINGS (Only the server settings take effect)", + // Added by SANDRO + L"Skill Traits", + L"Old", + L"New", + L"Max IMP Characters", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Enemies Drop All Items", + L"Off", + L"On", +#ifdef JA2UB + L"Tex and John", + L"Random", + L"All", +#else + L"Number of Terrorists", + L"Random", + L"All", +#endif + L"Secret Weapon Caches", + L"Random", + L"All", + L"Progress Speed of Item Choices", + L"Very Slow", + L"Slow", + L"Normal", + L"Fast", + L"Very Fast", + + // TODO.Translate + L"Old / Old", + L"New / Old", + L"New / New", + + // TODO.Translate + // Squad Size + L"Max. Squad Size", + L"6", + L"8", + L"10", + //L"Faster Bobby Ray Shipments", + L"Inventory Manipulation Costs AP", + + L"New Chance to Hit System", + L"Improved Interrupt System", + L"Merc Story Backgrounds", // TODO.Translate + L"Food System",// TODO.Translate + L"Bobby Ray Quantity", // TODO.Translate + + // anv: extra iron man modes + L"Soft Iron Man", // TODO.Translate + L"Extreme Iron Man", // TODO.Translate +}; + +STR16 gzMPJScreenText[] = +{ + L"MULTIPLAYER", + L"Join", + L"Host", + L"Cancel", + L"Refresh", + L"Player Name", + L"Server IP", + L"Port", + L"Server Name", + L"# Plrs", + L"Version", + L"Game Type", + L"Ping", + L"You must enter a player name.", + L"You must enter a valid server IP address. For example: 84.114.195.239", + L"You must enter a valid Server Port between 1 and 65535.", +}; + +// TODO.Translate +STR16 gzMPJHelpText[] = +{ + L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", + L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", // TODO.Translate + + L"HOST", + L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", + L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", + L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", + L"Click on 'Host' to host a new Multiplayer Game.", + + L"JOIN", + L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", + L"Enter the external IP and the Port number from the host.", + L"Click on 'Join' to join an already hosted Multiplayer Game.", +}; + +// TODO.Translate +STR16 gzMPHScreenText[] = +{ + L"HOST GAME", + L"Start", + L"Cancel", + L"Server Name", + L"Game Type", + L"Deathmatch", + L"Team-Deathmatch", + L"Co-Operative", + L"Maximum Players", + L"Maximum Mercs", + L"Merc Selection", + L"Merc Hiring", + L"Hired by Player", + L"Starting Cash", + L"Allow Hiring Same Merc", + L"Report Hired Mercs", + L"Bobby Rays", + L"Sector Starting Edge", + L"You must enter a server name", + L"", + L"", + L"Starting Time", + L"", + L"", + L"Weapon Damage", + L"", + L"Timed Turns", + L"", + L"Enable Civilians in CO-OP", + L"", + L"Maximum Enemies in CO-OP", + L"Synchronize Game Directory", + L"MP Sync. Directory", + L"You must enter a file transfer directory.", + L"(Use '/' instead of '\\' for directory delimiters.)", + L"The specified synchronisation directory does not exist.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Yes", + L"No", + // Starting Time + L"Morning", + L"Afternoon", + L"Night", + // Starting Cash + L"Low", + L"Medium", + L"Heigh", + L"Unlimited", + // Time Turns + L"Never", + L"Slow", + L"Medium", + L"Fast", + // Weapon Damage + L"Very low", + L"Low", + L"Normal", + // Merc Hire + L"Random", + L"Normal", + // Sector Edge + L"Random", + L"Selectable", + // Bobby Ray / Hire same merc + L"Disable", + L"Allow", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Austin", //Austin, Texas, USA + L"Baghdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"Hong Kong", //Hong Kong, Hong Kong + L"Beirut", //Beirut, Lebanon (Middle East) + L"Londra", //London, England + L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Metavira", //The island of Metavira was the fictional location used by JA1 + L"Miami", //Miami, Florida, USA (SE corner of USA) + L"Mosca", //Moscow, USSR + L"New York", //New York, New York, USA + L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Parigi", //Paris, France + L"Tripoli", //Tripoli, Libya (eastern Mediterranean) + L"Tokyo", //Tokyo, Japan + L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Siete sicuri? Un valore di zero significa NESSUNA abilità.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"(max 8 personaggi)", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"Analisi", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"Grazie, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Voce", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"Ucciso in azione", + L"Licenziato", + L"Altro", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Manager del personale", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Partita in pausa", + L"Riprendi la partita (|P|a|u|s|a)", + L"Metti in pausa la partita (|P|a|u|s|a)", +}; + + +STR16 pMessageStrings[] = +{ + L"Vuoi uscire dalla partita?", + L"OK", + L"SÌ", + L"NO", + L"ANNULLA", + L"RIASSUMI", + L"MENTI", + L"Nessuna descrizione", //Save slots that don't have a description. + L"Partita salvata.", + L"Partita salvata.", + L"QuickSave", //The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"Giorno", + L"Mercenari", + L"Slot vuoto", //An empty save game slot + L"Demo", //Demo of JA2 + L"Rimuovi", //State of development of a project (JA2) that is a debug build + L"Abbandona", //Release build for JA2 + L"ppm", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"dm", //Abbreviation for minute. + L"m", //One character abbreviation for meter (metric distance measurement unit). + L"colpi", //Abbreviation for rounds (# of bullets) + L"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"lb", //Abbreviation for pounds (Imperial weight measurement unit) + L"Home Page", //Home as in homepage on the internet. + L"USD", //Abbreviation to US dollars + L"n/a", //Lowercase acronym for not applicable. + L"In corso", //Meanwhile + L"%s si trova ora nel settore %s%s", //Name/Squad has arrived in sector A9. Order must not change without notifying + //SirTech + L"Versione", + L"Slot di salvataggio rapido vuoto", + L"Questo slot è riservato ai salvataggi rapidi fatti dalle schermate tattiche e dalla mappa utilizzando ALT+S.", + L"Aperto", + L"Chiuso", + L"Lo spazio su disco si sta esaurendo. Avete liberi solo %s MB e Jagged Alliance 2 v1.13 ne richiede %s.", + L"Arruolato %s dall'A.I.M.", + L"%s ha preso %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s ha assunto %s.", //'Merc name' has taken 'item name' + L"%s non ha alcuna abilità medica",//'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"L'integrità del gioco è stata compromessa.", + L"ERRORE: CD-ROM non valido", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"Non c'è spazio per sparare da qui.", + + //Can't change stance due to objects in the way... + L"Non potete cambiare posizione questa volta.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Fai cadere", + L"Getta", + L"Passa", + + L"%s è passato a %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"Nessun spazio per passare %s a %s.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest (Ceramic Plate 'Attached)' + L" compreso )", + + //Cheat modes + L"Raggiunto il livello Cheat UNO", + L"Raggiunto il livello Cheat DUE", + + //Toggling various stealth modes + L"Squadra in modalità furtiva.", + L"Squadra non in modalità furtiva.", + L"%s in modalità furtiva.", + L"%s non in modalità furtiva.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Strutture visibili", + L"Strutture nascoste", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Non potete passare al livello superiore...", + L"Non esiste nessun livello inferiore...", + L"Entra nel seminterrato %d...", + L"Abbandona il seminterrato...", + + L"di", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Modalità segui disattiva.", + L"Modalità segui attiva.", + L"Cursore 3D disattivo.", + L"Cursore 3D attivo.", + L"Squadra %d attiva.", + L"Non potete permettervi di pagare a %s un salario giornaliero di %s", //first %s is the mercs name, the seconds is a string containing the salary + L"Salta", + L"%s non può andarsene da solo.", + L"Un salvataggio è stato chiamato SaveGame249.sav. Se necessario, rinominatelo da SaveGame01 a SaveGame10 e così potrete accedervi nella schermata di caricamento.", + L"%s ha bevuto del %s", + L"Un pacco è arivato a Drassen.", + L"%s dovrebbe arrivare al punto designato di partenza (settore %s) nel giorno %d, approssimativamente alle ore %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival + L"Registro aggiornato.", + L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", + L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", + L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO + L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO + L"Grenade Launchers fire at standard angles", + L"Grenade Launchers fire at higher angles", + // forced turn mode strings + L"Forced Turn Mode", + L"Normal turn mode", + L"Exit combat mode", + L"Forced Turn Mode Active, Entering Combat", + L"Salvataggio riuscito della partita nello slot End Turn Auto Save.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. + L"Client", + + // TODO.Translate + L"You cannot use the Old Inventory and the New Attachment System at the same time.", + + // TODO.Translate + L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID + L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save + L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"End-Turn Save #", // 95 // The text for the tactical end turn auto save + L"Saving Auto Save #", // 96 // The message box, when doing auto save + L"Saving", // 97 // The message box, when doing end turn auto save + L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save + L"This Slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) // TODO.Translate + L"Lock mouse cursor within game window boundary.", // 104 + L"Release mouse cursor from game window boundary.", // 105 + L"Move in Formation ON", // TODO.Translate + L"Move in Formation OFF", + L"Artificial Merc Light ON", // TODO.Translate + L"Artificial Merc Light OFF", + L"Squad %s active.", //TODO.Translate + L"%s smoked %s.", + L"Activate cheats?", + L"Deactivate cheats?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"OK", + L"Scorrimento su", + L"Seleziona tutto", + L"Scorrimento giù", + L"Annulla", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s non è abbstanza vicina per poter esser riparata.", + L"I vostri medici non sono riusciti a bendare completamente tutti.", +}; + +// TODO.Translate +STR16 pMilitiaButtonsHelpText[] = +{ + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", + L"Distribute available militia equally among all sectors", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Andate all'A.I.M. e arruolate alcuni mercenari (*Hint* è nel Laptop)", // to inform the player to hired some mercs to get things going +#ifdef JA2UB + L"Quando sarete pronti per partire per Tracona, cliccate sul pulsante nella parte in basso a destra dello schermo.", // to inform the player to hit time compression to get the game underway +#else + L"Quando sarete pronti per partire per Arulco, cliccate sul pulsante nella parte in basso a destra dello schermo.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Errore. File mancanti o corrotti. Il gioco verrà completato ora.", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"Visualizza E-mail", + L"Siti web", + L"Visualizza file e gli attach delle E-mail", + L"Legge il registro degli eventi", + L"Visualizza le informazioni inerenti la squadra", + L"Visualizza la situazione finanziaria e la storia", + L"Chiude laptop", + + //Bottom task bar icons (if they exist): + L"Avete nuove E-mail", + L"Avete nuovi file", + + //Bookmarks: + L"Associazione Internazionale Mercenari", + L"Ordinativi di armi online dal sito di Bobby Ray", + L"Istituto del Profilo del Mercenario", + L"Centro più economico di reclutamento", + L"Impresa di pompe funebri McGillicutty", + L"Servizio Fioristi Riuniti", + L"Contratti assicurativi per agenti A.I.M.", + //New Bookmarks + L"", + L"Encyclopedia", + L"Briefing Room", + L"Campaign History", // TODO.Translate + L"Mercenaries Love or Dislike You", // TODO.Translate + L"World Health Organization", + L"Kerberus - Experience In Security", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services", // TODO.Translate + L"Controlled factories", // TODO.Translate +}; + + +STR16 gzHelpScreenText[] = +{ + L"Esci dalla schermata di aiuto", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"È in corso una battaglia. Potete solo ritirarvi dalla schermata delle tattiche.", + L"|Entra nel settore per continuare l'attuale battaglia in corso.", + L"|Automaticamente decide l'esito della battaglia in corso.", + L"Non potete decidere l'esito della battaglia in corso automaticamente, se siete voi ad attaccare.", + L"Non potete decidere l'esito della battaglia in corso automaticamente, se subite un'imboscata.", + L"Non potete decidere l'esito della battaglia in corso automaticamente, se state combattendo contro le creature nelle miniere.", + L"Non potete decidere l'esito della battaglia in corso automaticamente, se ci sono civili nemici.", + L"Non potete decidere l'esito della battaglia in corso automaticamente, se ci sono dei Bloodcat.", + L"BATTAGLIA IN CORSO", + L"Non potete ritirarvi ora.", +}; + +STR16 gzMiscString[] = +{ + L"I vostri soldati continuano a combattere senza l'aiuto dei vostri mercenari...", + L"Il veicolo non ha più bisogno di carburante.", + L"La tanica della benzina è piena %d%%.", + L"L'esercito di Deidrannaha riguadagnato il controllo completo su %s.", + L"Avete perso una stazione di rifornimento.", +}; + +STR16 gzIntroScreen[] = +{ + L"Video introduttivo non trovato", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s sente un %s rumore proveniente da %s.", + L"%s sente un %s rumore di MOVIMENTO proveniente da %s.", + L"%s sente uno %s SCRICCHIOLIO proveniente da %s.", + L"%s sente un %s TONFO NELL'ACQUA proveniente da %s.", + L"%s sente un %s URTO proveniente da %s.", + L"%s hears a %s GUNFIRE coming from %s.", // anv: without this, all further noise notifications were off by 1! // TODO.Translate + L"%s sente una %s ESPLOSIONE verso %s.", + L"%s sente un %s URLO verso %s.", + L"%s sente un %s IMPATTO verso %s.", + L"%s sente un %s IMPATTO a %s.", + L"%s sente un %s SCHIANTO proveniente da %s.", + L"%s sente un %s FRASTUONO proveniente da %s.", + L"", // anv: placeholder for silent alarm // TODO.Translate + L"%s hears someone's %s VOICE coming from %s.", // anv: report enemy taunt to player // TODO.Translate +}; + +// TODO.Translate +STR16 pTauntUnknownVoice[] = +{ + L"Unknown Voice", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Nome (|F|1)", + L"Assegnato (|F|2)", + L"Tipo di riposo (|F|3)", + L"Postazione (|F|4)", + L"Destinazione (|F|5)", + L"Durata dell'incarico (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"Errore 404", + L"Luogo non trovato.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"Spedizioni recenti", + L"Ordine #", + L"Numero di oggetti", + L"Ordinato per", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"Programmatore del gioco", // Chris Camfield + L"Co-designer / Autore", // Shaun Lyng + L"Programmatore sistemi strategici & Editor", //Kris Marnes + L"Produttore / Co-designer", // Ian Currie + L"Co-designer / Designer della mappa", // Linda Currie + L"Grafico", // Eric \"WTF\" Cheng + L"Coordinatore beta, supporto", // Lynn Holowka + L"Grafico straordinario", // Norman \"NRG\" Olsen + L"Guru dell'audio", // George Brooks + L"Designer delle schermate / Grafico", // Andrew Stacey + L"Capo grafico / Animatore", // Scot Loving + L"Capo programmatore", // Andrew \"Big Cheese Doddle\" Emmons + L"Programmatore", // Dave French + L"Programmatore sistemi & bilancio di gioco", // Alex Meduna + L"Grafico dei ritratti", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(deve ancora esercitarsi con la punteggiatura)", // Shaun Lyng + L"(\"Fatto. Devo solo perfezionarmi\")", //Kris \"The Cow Rape Man\" Marnes + L"(sta diventando troppo vecchio per questo)", // Ian Currie + L"(sta lavorando a Wizardry 8)", // Linda Currie + L"(obbligato a occuparsi anche del CQ)", // Eric \"WTF\" Cheng + L"(ci ha lasciato per CFSA...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(Testa matta e amante del jazz)", // Andrew Stacey + L"(il suo nome vero è Robert)", // Scot Loving + L"(l'unica persona responsabile)", // Andrew \"Big Cheese Doddle\" Emmons + L"(può ora tornare al motocross)", // Dave French + L"(rubato da Wizardry 8)", // Alex Meduna + L"", // Joey \"Joeker\" Whelan", +}; + +STR16 sRepairsDoneString[] = +{ + L"%s ha finito di riparare gli oggetti.", + L"%s ha finito di riparare le armi e i giubbotti antiproiettile di tutti.", + L"%s ha finito di riparare gli oggetti dell'equipaggiamento di tutti.", + L"%s finished repairing everyone's large carried items.", + L"%s finished repairing everyone's medium carried items.", + L"%s finished repairing everyone's small carried items.", + L"%s finished repairing everyone's LBE gear.", + L"%s finished cleaning everyone's guns.", // TODO.Translate +}; + +STR16 zGioDifConfirmText[]= +{ + //L"You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode?", + L"Avete selezionato la modalità PRINCIPIANTE. Questo scenario è adatto a chi gioca per la prima volta a Jagged Alliance, a chi prova a giocare per la prima volta in generale o a chi desidera combattere battaglie più brevi nel gioco. La vostra decisione influirà sull'intero corso della partita; scegliete, quindi, con attenzione. Siete sicuri di voler giocare nella modalità PRINCIPIANTE?", + + //L"You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode?", + L"Avete selezionato la modalità ESPERTO. Questo scenario è adatto a chi ha già una certa dimestichezza con Jagged Alliance o con giochi simili. La vostra decisione influirà sull'intero corso della partita; scegliete, quindi, con attenzione. Siete sicuri di voler giocare nella modalità ESPERTO?", + + //L"You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode?", + L"Avete selezionato la modalità PROFESSIONISTA. Siete avvertiti. Non malediteci, se vi ritroverete a brandelli. La vostra decisione influirà sull'intero corso della partita; scegliete, quindi, con attenzione. Siete sicuri di voler giocare nella modalità PROFESSIONISTA?", + + L"You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"%S file di dati della schermata di caricamento non trovato...", + + //1-5 + L"Il robot non può lasciare questo settore, se nessuno sta usando il controller.", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"Non potete comprimere il tempo ora. Aspettate le esplosioni!", + + //'Name' refuses to move. + L"%s si rifiuta di muoversi.", + + //%s a merc name + L"%s non ha abbastanza energia per cambiare posizione.", + + //A message that pops up when a vehicle runs out of gas. + L"Il %s ha esaurito la benzina e ora è rimasto a piedi a %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"sopra", + L"sotto", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"Nessuno dei vostri mercenari non sa praticare il pronto soccorso.", + L"Non ci sono supporti medici per bendare.", + L"Non ci sono stati supporti medici sufficienti per bendare tutti.", + L"Nessuno dei vostri mercenari ha bisogno di fasciature.", + L"Fascia i mercenari automaticamento.", + L"Tutti i vostri mercenari sono stati bendati.", + + //14 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + L"(tetto)", + + L"Salute: %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d contro %d", + + L"Il %s è pieno!", //(ex "The ice cream truck is full") + + L"%s non ha bisogno immediatamente di pronto soccorso o di fasciature, quanto piuttosto di cure mediche più serie e/o riposo.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s è stato colpito alla gamba e collassa!", + //Name can't speak right now. + L"%s non può parlare ora.", + + //22-24 plural versions + L"%d l'esercito verde è stato promosso a veterano.", + L"%d l'esercito verde è stato promosso a regolare.", + L"%d l'esercito regolare è stato promosso a veterano.", + + //25 + L"Interruttore", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s è impazzito!", + + //27-28 + //Messages why a player can't time compress. + L"Non è al momento sicuro comprimere il tempo visto che avete dei mercenari nel settore %s.", + L"Non è al momento sicuro comprimere il tempo quando i mercenari sono nelle miniere infestate dalle creature.", + + //29-31 singular versions + L"1 esercito verde è stato promosso a veterano.", + L"1 esercito verde è stato promosso a regolare.", + L"1 eserciro regolare è stato promosso a veterano.", + + //32-34 + L"%s non dice nulla.", + L"Andate in superficie?", + L"(Squadra %d)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s ha riparato %s's %s", + + //36 + L"BLOODCAT", + + //37-38 "Name trips and falls" + L"%s trips and falls", + L"Questo oggetto non può essere raccolto qui.", + + //39 + L"Nessuno dei vostri rimanenti mercenari è in grado di combattere. L'esercito combatterà contro le creature da solo.", + + //40-43 + //%s is the name of merc. + L"%s è rimasto sprovvisto di kit medici!", + L"%s non è in grado di curare nessuno!", + L"%s è rimasto sprovvisto di forniture mediche!", + L"%s non è in grado di riparare niente!", + + //44-45 + L"Tempo di riparazione", + L"%s non può vedere questa persona.", + + //46-48 + L"L'estensore della canna dell'arma di %s si è rotto!", + L"No more than %d militia trainers are permitted in this sector.", // TODO.Translate + L"Siete sicuri?", + + //49-50 + L"Compressione del tempo", + L"La tanica della benzina del veicolo è ora piena.", + + //51-52 Fast help text in mapscreen. + L"Continua la compressione del tempo (|S|p|a|z|i|o)", + L"Ferma la compressione del tempo (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s ha sbloccata il %s", + L"%s ha sbloccato il %s di %s", + + //55 + L"Non potete comprimere il tempo mentre visualizzate l'inventario del settore.", + + L"Il CD ddel gioco Jagged Alliance 2 v1.13 non è stato trovato. Il programma verrà terminato.", + + L"Oggetti combinati con successo.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Attuale/Massimo Progresso: %d%%/%d%%", + + //59 + L"Accompagnate John e Mary?", + + L"Interruttore attivato.", + + L"%s's armour attachment has been smashed!", + L"%s fires %d more rounds than intended!", + L"%s fires one more round than intended!", + + L"You need to close the item description box first!", // TODO.Translate + + L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 // TODO.Translate +}; + +STR16 gzCWStrings[] = +{ + L"Call reinforcements to %s from adjacent sectors?", // TODO.Translate +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Location: %d\n", + L"%s|Brightness: %d / %d\n", + L"%s|Range to |Target: %d\n", + L"%s|I|D: %d\n", + L"%s|Orders: %d\n", + L"%s|Attitude: %d\n", + L"%s|Current |A|Ps: %d\n", + L"%s|Current |Health: %d\n", + L"%s|Current |Breath: %d\n", // TODO.Translate + L"%s|Current |Morale: %d\n", + L"%s|Current |S|hock: %d\n",// TODO.Translate + L"%s|Current |S|uppression Points: %d\n",// TODO.Translate + // Full info + L"%s|Helmet: %s\n", + L"%s|Vest: %s\n", + L"%s|Leggings: %s\n", + // Limited, Basic + L"|Armor: ", + L"Helmet", + L"Vest", + L"Leggings", + L"worn", + L"no Armor", + L"%s|N|V|G: %s\n", + L"no NVG", + L"%s|Gas |Mask: %s\n", + L"no Gas Mask", + L"%s|Head |Position |1: %s\n", + L"%s|Head |Position |2: %s\n", + L"\n(in Backpack) ", + L"%s|Weapon: %s ", + L"no Weapon", + L"Handgun", + L"SMG", + L"Rifle", + L"MG", + L"Shotgun", + L"Knife", + L"Heavy Weapon", + L"no Helmet", + L"no Vest", + L"no Leggings", + L"|Armor: %s\n", + // Added - SANDRO + L"%s|Skill 1: %s\n", + L"%s|Skill 2: %s\n", + L"%s|Skill 3: %s\n", + // Additional suppression effects - sevenfm // TODO.Translate + L"%s|A|Ps lost due to |S|uppression: %d\n", + L"%s|Suppression |Tolerance: %d\n", + L"%s|Effective |S|hock |Level: %d\n", + L"%s|A|I |Morale: %d\n", +}; + +STR16 New113Message[] = +{ + L"Storm started.", + L"Storm ended.", + L"Rain started.", + L"Rain ended.", + L"Watch out for snipers...", + L"Suppression fire!", + L"BRST", + L"AUTO", + L"GL", + L"GL BRST", + L"GL AUTO", + L"UB", + L"UBRST", + L"UAUTO", + L"BAYONET", + L"Sniper!", + L"Unable to split money due to having an item on your cursor.", + L"Arrival of new recruits is being rerouted to sector %s, as scheduled drop-off point of sector %s is enemy occupied.", + L"Articolo cancellato", + L"Ha cancellato tutti gli articoli di questo tipo", + L"Articolo venduto", + L"Ha venduto tutti gli articoli di questo tipo", + L"You should check your goggles", + // Real Time Mode messages + L"In combat already", + L"No enemies in sight", + L"Real-time sneaking OFF", + L"Real-time sneaking ON", + //L"Enemy spotted! (Ctrl + x to enter turn based)", + L"Enemy spotted!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s was successful on stealing!", + L"%s had not enough action points to steal all selected items.", + L"Do you want to make surgery on %s before bandaging? (You can heal about %i Health.)", + L"Do you want to make surgery on %s? (You can heal about %i Health.)", + L"Do you wish to make surgeries first? (%i patient(s))", + L"Do you wish to make the surgery on this patient first?", + L"Apply first aid automatically with surgeries or without them?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Surgery on %s finished.", + L"%s is hit in the chest and loses a point of maximum health!", + L"%s is hit in the chest and loses %d points of maximum health!", + L"%s is blinded by the blast!", + L"%s has regained one point of lost %s", + L"%s has regained %d points of lost %s", + L"Your scouting skills prevented you to be ambushed by the enemy!", + L"Thanks to your scouting skills you have successfuly avoided a pack of bloodcats!", + L"%s is hit to groin and falls down in pain!", + ////////////////////////////////////////////////////////////////////////////////////// + L"Warning: enemy corpse found!!!", + L"%s [%d rnds]\n%s %1.1f %s", + L"Insufficient AP Points! Cost %d, you have %d.", // TODO.Translate + L"Hint: %s", // TODO.Translate + L"Player strength: %d - Enemy strength: %6.0f", // TODO.Translate Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"Cannot use skill!", // TODO.Translate + L"Cannot build while enemies are in this sector!", + L"Cannot spot that location!", + L"Incorrect GridNo for firing artillery!", + L"Radio frequencies are jammed. No communication possible!", + L"Radio action failed!", + L"Not enough mortar shells in sector to start a barrage!", + L"No signal shell item found in Items.xml!", + L"No High-Explosive shell item found in Items.xml!", + L"No mortars found, cannot commence barrage!", + L"Already jamming signal, no need to do so again!", + L"Already listening for nearby sounds, no need to do so again!", + L"Already trying to spot, no need to do so again!", + L"Already scanning for jam signals, no need to do so again!", + L"%s could not apply %s to %s.", + L"%s orders reinforcements from %s.", + L"%s radio set is out of energy.", + L"a working radio set", + L"a binocular", + L"patience", + L"%s's shield has been destroyed!", // TODO.Translate + L" DELAY", // TODO.Translate + L"Yes*", + L"Yes", + L"No", + L"%s applied %s to %s.", // TODO.Translate +}; + +// TODO.Translate +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s cowers in fear!", + L"%s is pinned down!", + L"%s fires more rounds than intended!", + L"You cannot train militia in this sector.", + L"Militia picks up %s.", + L"Cannot train militia with enemies present!", + // 6 - 10 + L"%s lacks sufficient Leadership score to train militia.", + L"No more than %d Mobile Militia trainers are permitted in this sector.", + L"No room in %s or around it for new Mobile Militia!", + L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.", + L"Can't staff a facility while enemies are present!", + // 11 - 15 + L"%s lacks sufficient Wisdom to staff this facility.", + L"The %s is already fully-staffed.", + L"It will cost $%d per hour to staff this facility. Do you wish to continue?", + L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.", + L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.", + // 16 - 20 + L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!", + L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.", + L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?", + L"N/A in this sector", + L"Daily Expenses", + // 21 - 25 + L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.", + L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 + L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 + L"To merge two items during combat, you must pick them both up first.", // HAM 5 +}; + +// TODO.Translate +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"No available adjustments", + L"%s was split into several parts.", + L"%s was split into several parts. Check %s's inventory for the resulting items.", + L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", + L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", + L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", + // 6 - 10 + L"Split Crate into Inventory", + L"Split into %d-rd Mags", + L"%s was split into %d Magazines containing %d rounds each.", + L"%s was split into %s's inventory.", + L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", + L"Instant mode", // TODO.Translate + L"Delayed mode", + L"Instant mode (%d AP)", + L"Delayed mode (%d AP)", +}; + +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Hereby be informed that due to Gastons's past performance his fees for services rendered have undergone an increase. Personally, I'm not surprised. ± ± Speck T. Kline ± ", + // Stogie: Text from Line 43 in Email.edt + L"Please be advised that, as of this moment, Stogies's fees for services rendered have increased to coincide with the increase in his abilities. ± ± Speck T. Kline ± ", + // Tex: Text from Line 45 in Email.edt + L"Please be advised that Tex's experience entitles him to more equitable compensation. He's fees have therefore been increased to more accurately reflect his worth. ± ± Speck T. Kline ± ", + // Biggens: Text from Line 49 in Email.edt + L"Please take note. Due to the improved performance of Biggens his fees for services rendered have undergone an increase. ± ± Speck T. Kline ± ", +}; + +// TODO.Translate +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk: Text from Line 58 + L"FW from AIM Server: Message from Victor Kolesnikov", + L"Hello. Monk here. Message received. I'm back if you want to see me. ± ± Waiting for your call. ±", + + // Brain: Text from Line 60 + L"FW from AIM Server: Message from Janno Allik", + L"Am now ready to consider tasks. There is a time and place for everything. ± ± Janno Allik ±", + + // Scream: Text from Line 62 + L"FW from AIM Server: Message from Lennart Vilde", + L"Lennart Vilde now available! ±", + + // Henning: Text from Line 64 + L"FW from AIM Server: Message from Henning von Branitz", + L"Have received your message, thanks. To discuss employment, contact me at the AIM Website. ± ± Till then! ± ± Henning von Branitz ±", + + // Luc: Text from Line 66 + L"FW from AIM Server: Message from Luc Fabre", + L"Mesage received, merci! Am happy to consider your proposals. You know where to find me. ± ± Looking forward to hearing from you. ±", + + // Laura: Text from Line 68 + L"FW from AIM Server: Message from Dr. Laura Colin", + L"Greetings! Good of you to leave a message It sounds interesting. ± ± Visit AIM again I would be happy to hear more. ± ± Best regards! ± ± Dr. Laura Colin ±", + + // Grace: Text from Line 70 + L"FW from AIM Server: Message from Graziella Girelli", + L"You wanted to contact me, but were not successful.± ± A family gathering. I am sure you understand? I've now had enough of family and would be very happy if you would contact me again over the AIM Site. ± ± Ciao! ±", + + // Rudolf: Text from Line 72 + L"FW from AIM Server: Message from Rudolf Steiger", + L"Do you know how many calls I get every day? Every tosser thinks he can call me. ± ± But I'm back, if you have something of interest for me. ±", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"FW from AIM Server: Message about merc availability", + L"I got your message. Waiting for your call. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Sniper: Occhi di un hawk, potete sparare le ale da un mosca ad cento yarde! ± ", + // Camouflage + L"Camuffamento: Oltre voi persino i cespugli sembrano sintetici! ± ", + // SANDRO - new strings for new traits added + // Ranger + L"Ranger: You are the one from Texas deserts, aren't you! ± ", + // Gunslinger + L"Gunslinger: With a handgun or two, you can be as lethal as the Billy Kid! ± ", + // Squadleader + L"Squadleader: Natural leader and boss, you are the big shot no kidding! ± ", + // Technician + L"Technician: Fixing stuff, removing traps, planting bombs, that's your bussiness! ± ", + // Doctor + L"Doctor: You can make a quick surgery with pocket-knife and chewing gum anywhere! ± ", + // Athletics + L"Athletics: Your speed and vitality is on top of possibilities! ± ", + // Bodybuilding + L"Bodybuilding: That big muscular figure which cannot be overlooked is you actually! ± ", + // Demolitions + L"Demolitions: You can blow up a whole city just by common home stuff! ± ", + // Scouting + L"Scouting: Nothing can escape your notice! ± ", + // Covert ops + L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate + // Radio Operator + L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate + // Survival + L"Survival: Nature is a second home to you. ± ", // TODO.Translate +}; + +STR16 NewInvMessage[] = +{ + L"Non può il fagotto della raccolta attualmente", + L"Nessun posto per mettere fagotto", + L"Fagotto non trovato", + L"La chiusura lampo funziona soltanto nel combattimento", + L"Non può muoversi mentre la chiusura lampo del fagotto attiva", + L"Siete sicuri voi desiderate vendere tutti gli articoli del settore?", + L"Siete sicuri voi desiderate cancellare tutti gli articoli del settore?", + L"Non può arrampicarsi mentre portano uno zaino", + L"All backpacks dropped", // TODO.Translate + L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Initiating RakNet server...", + L"Server started, waiting for connections...", + L"You must now connect with your client to the server by pressing '2'.", + L"Server is already running.", + L"Server failed to start. Terminating.", + // 5 + L"%d/%d clients are ready for realtime-mode.", + L"Server disconnected and shutdown.", + L"Server is not running.", + L"Clients are still loading, please wait...", + L"You cannot change dropzone after the server has started.", + // 10 + L"Sent file '%S' - 100/100", + L"Finished sending files to '%S'.", + L"Started sending files to '%S'.", + L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", // TODO.Translate +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Initiating RakNet client...", + L"Connecting to IP: %S ...", + L"Received game settings:", + L"You are already connected.", + L"You are already connecting...", + // 5 + L"Client #%d - '%S' has hired '%s'.", + L"Client #%d - '%S' has hired another merc.", + L"You are ready - Total ready = %d/%d.", + L"You are no longer ready - Total ready = %d/%d.", + L"Starting battle...", + // 10 + L"Client #%d - '%S' is ready - Total ready = %d/%d.", + L"Client #%d - '%S' is no longer ready - Total ready = %d/%d", + L"You are ready. Awaiting other clients... Press 'OK' if you are not ready anymore.", + L"Let us the battle begin!", + L"A client must be running for starting the game.", + // 15 + L"Game cannot start. No mercs are hired...", + L"Awaiting 'OK' from server to unlock the laptop...", + L"Interrupted", + L"Finish from interrupt", + L"Mouse Grid Coordinates:", + // 20 + L"X: %d, Y: %d", + L"Grid Number: %d", + L"Server only feature", + L"Choose server manual override stage: ('1' - Enable laptop/hiring) ('2' - Launch/load level) ('3' - Unlock UI) ('4' - Finish placement)", + L"Sector=%s, Max Clients=%d, Max Mercs=%d, Game_Mode=%d, Same Merc=%d, Damage Multiplier=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Equip=%d, Dis Morale=%d, Testing=%d", + // 25 + L"", + L"New connection: Client #%d - '%S'.", + L"Team: %d.",//not used any more + L"'%s' (client %d - '%S') was killed by '%s' (client %d - '%S')", + L"Kicked client #%d - '%S'", + // 30 + L"Start a new turn for the selected client. #1: , #2: %S, #3: %S, #4: %S", + L"Starting turn for client #%d", + L"Requesting for realtime...", + L"Switched back to realtime.", + L"Error: Something went wrong switching back.", + // 35 + L"Unlock laptop for hiring? (Are all clients connected?)", + L"The server has unlocked the laptop. Begin hiring!", + L"Interruptor.", + L"You cannot change dropzone if you are only the client and not the server.", + L"You declined the offer to surrender, because you are in a multiplayer game.", + // 40 + L"All your mercs are wiped dead!", + L"Spectator mode enabled.", + L"You have been defeated!", + L"Sorry, climbing is disable in MP", + L"You Hired '%s'", + // 45 + L"You cant change the map once purchasing has commenced", + L"Map changed to '%s'", + L"Client '%s' disconnected, removing from game", + L"You were disconnected from the game, returning to the Main Menu", + L"Connection failed, Retrying in 5 seconds, %i retries left...", + //50 + L"Connection failed, giving up...", + L"You cannot start the game until another player has connected", + L"%s : %s", + L"Send to All", + L"Allies only", + // 55 + L"Cannot join game. This game has already started.", + L"%s (team): %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"Received all files from server.", + L"'%S' finished downloading from server.", + L"'%S' started downloading from server.", + L"Cannot start the game until all clients have finished receiving files", + L"This server requires that you download modified files to play, do you wish to continue?", + // 65 + L"Press 'Ready' to enter tactical screen.", + L"Cannot connect because your version %S is different from the server version %S.", + L"You killed an enemy soldier.", + L"Cannot start the game, because all teams are the same.", + L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", + // 70 // TODO.Translate + L"Could not save received file '%S'", + L"%s's bomb was disarmed by %s", + L"You loose, what a shame", // All over red rover + L"Spectator mode disabled", + L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", + // 75 + L"Team %s is wiped out.", + L"Client failed to start. Terminating.", + L"Client disconnected and shutdown.", + L"Client is not running.", + L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", // TODO.Translate + // 80 + L"AI's turn - %d left", // TODO.Translate +}; + +STR16 gszMPEdgesText[] = +{ + L"N", + L"E", + L"S", + L"W", + L"C", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"Foxtrot", + L"Bravo", + L"Delta", + L"Charlie", + L"N/A", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Game Type: ", + L"Players: ", + L"Mercs each: ", + L"You cannot change starting edge once Laptop is unlocked.", + L"You cannot change teams once the Laptop is unlocked.", + L"Random Mercs: ", + L"Y", + L"Difficulty:", + L"Server Version:", +}; + +STR16 gzMPSScreenText[] = +{ + L"Scoreboard", + L"Continue", + L"Cancel", + L"Player", + L"Kills", + L"Deaths", + L"Queen's Army", + L"Hits", + L"Misses", + L"Accuracy", + L"Damage Dealt", + L"Damage Taken", + L"Please wait for the server to press 'Continue'." +}; + +STR16 gzMPCScreenText[] = +{ + L"Cancel", + L"Connecting to Server", + L"Getting Server Settings", + L"Downloading custom files", + L"Press 'ESC' to cancel or 'Y' to chat", + L"Press 'ESC' to cancel", + L"Ready" +}; + +STR16 gzMPChatToggleText[] = +{ + L"Send to All", + L"Send to Allies only", +}; + +STR16 gzMPChatboxText[] = +{ + L"Multiplayer Chat", + L"'ENTER' to send, 'ESC' to cancel", +}; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", + // For new major/minor traits + L"Next stage is about choosing your skill traits according to your professional specialization as a mercenary. On first page you can select up to %d potential major traits, which mostly represent your main role in a team. While on second page is a list of possible minor traits, which represent personal feats.", + L"No more then %d choices altogether are possible. This means that if you choose no major traits, you can choose %d minor traits. If you choose two major traits (or one enhanced), you can then choose only %d minor trait(s)...", +}; +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes according to your true abilities. You cannot raise any score above", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", + // New strings for new traits + L"On the next page you are going to specify your physical attributes and skills. As 'attributes' are called: health, dexterity, agility, strength and wisdom. Attributes cannot go lower than %d.", + L"The rest are called 'skills' and unlike attributes skills can be set to zero, meaning you have absolutely no proficiency in it.", + L"All scores are set to a minimum at the beginning. Note that certain attributes are set to specific values according to skill traits you have selected. You cannot set those attributes lower than that.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Attitudes", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Sociable", + L"Loner", + L"Optimist", + L"Assertive", + L"Intellectual", + L"Primitive", + L"Aggressive", + L"Phlegmatic", + L"Dauntless", + L"Pacifist", + L"Malicious", + L"Show-off", + L"Coward", // TODO.Translate + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", + L"\n(Caution: you will need a big strength for this.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"Deaf", + L"Shortsighted", + L"Hemophiliac", // TODO.Translate + L"Fear of Heights", + L"Self-Harming", + L"I.M.P. Disabilities", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] =// TODO.Translate +{ + L"We bet you're glad this isn't voicemail.", + L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"You'll be screwed if you ever lose your glasses.", + L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate +{ + L"Are you SURE this is the right job for you?", + L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate +{ + L"Let's just say you are a grounded person.", + L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Might want to make sure your knives are always clean.", + L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// TODO.Translate +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s lacks sufficient Strength to perform this task.", + L"%s lacks sufficient Dexterity to perform this task.", + L"%s lacks sufficient Agility to perform this task.", + L"%s is not Healthy enough to perform this task.", + L"%s lacks sufficient Wisdom to perform this task.", + L"%s lacks sufficient Marksmanship to perform this task.", + // 6 - 10 + L"%s lacks sufficient Medical Skill to perform this task.", + L"%s lacks sufficient Mechanical Skill to perform this task.", + L"%s lacks sufficient Leadership to perform this task.", + L"%s lacks sufficient Explosives Skill to perform this task.", + L"%s lacks sufficient Experience to perform this task.", + // 11 - 15 + L"%s lacks sufficient Morale to perform this task.", + L"%s is too exhausted to perform this task.", + L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.", + L"Too many people are already working at the %s.", + L"Too many people are already performing this task at the %s.", + // 16 - 20 + L"%s can find no items to repair.", + L"%s has lost some %s while working in sector %s!", + L"%s has lost some %s while working at the %s in %s!", + L"%s was injured while working in sector %s, and requires immediate medical attention!", + L"%s was injured while working at the %s in %s, and requires immediate medical attention!", + // 21 - 25 + L"%s was injured while working in sector %s. It doesn't seem too bad though.", + L"%s was injured while working at the %s in %s. It doesn't seem too bad though.", + L"The residents of %s seem upset about %s's presence.", + L"The residents of %s seem upset about %s's work at the %s.", + L"%s's actions in sector %s have caused loyalty loss throughout the region!", + // 26 - 30 + L"%s's actions at the %s in %s have caused loyalty loss throughout the region!", + L"%s is drunk.", // <--- This is a log message string. + L"%s has become severely ill in sector %s, and has been taken off duty.", + L"%s has become severely ill and cannot continue his work at the %s in %s.", + L"%s was injured in sector %s.", // <--- This is a log message string. + // 31 - 35 + L"%s was severely injured in sector %s.", //<--- This is a log message string. + L"There are currently prisoners here who are aware of %s's identity.", // TODO.Translate + L"%s is currently well known as a mercenary snitch. Wait at least %d more hours.", // TODO.Translate + + +}; + +// TODO.Translate +STR16 gzFacilityRiskResultStrings[]= +{ + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Health", + L"Marksmanship", + // 5-10 + L"Leadership", + L"Mechanical skill", + L"Medical skill", + L"Explosives skill", +}; + +// TODO.Translate +STR16 gzFacilityAssignmentStrings[]= +{ + L"AMBIENT", + L"Staff", + L"Eat",// TODO.Translate + L"Rest", + L"Repair Items", + L"Repair %s", // Vehicle name inserted here + L"Repair Robot", + // 6-10 + L"Doctor", + L"Patient", + L"Practice Strength", + L"Practice Dexterity", + L"Practice Agility", + L"Practice Health", + // 11-15 + L"Practice Marksmanship", + L"Practice Medical", + L"Practice Mechanical", + L"Practice Leadership", + L"Practice Explosives", + // 16-20 + L"Student Strength", + L"Student Dexterity", + L"Student Agility", + L"Student Health", + L"Student Marksmanship", + // 21-25 + L"Student Medical", + L"Student Mechanical", + L"Student Leadership", + L"Student Explosives", + L"Trainer Strength", + // 26-30 + L"Trainer Dexterity", + L"Trainer Agility", + L"Trainer Health", + L"Trainer Marksmanship", + L"Trainer Medical", + // 30-35 + L"Trainer Mechanical", + L"Trainer Leadership", + L"Trainer Explosives", + L"Interrogate Prisoners", // added by Flugente TODO.Translate + L"Undercover Snitch", // TODO.Translate + // 36-40 + L"Spread Propaganda", + L"Spread Propaganda", // spread propaganda (globally) + L"Gather Rumours", + L"Command Militia", // militia movement orders +}; + +STR16 Additional113Text[]= +{ + L"Jagged Alliance 2 v1.13 modalità finestra richiede una profondità di colore di 16bpp.", + L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate + L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", + // TODO.Translate + // WANNE: Savegame slots validation against INI file + L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", + L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +STR16 sEnemyTauntsFireGun[]= +{ + L"Suck this!", + L"Touch this!", + L"Come get some!", + L"You're mine!", + L"Die!", + L"You scared, motherfucker?", + L"This will hurt!", + L"Come on you bastard!", + L"Come on! I don't got all day!", + L"Come to daddy!", + L"You'll be six feet under in no time!", + L"Will send ya home in a pinebox, loser!", + L"Hey, wanna play?", + L"You should have stayed home, bitch.", + L"Sucker!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"We have a barbecue here.", + L"I got a present for ya.", + L"Bam!", + L"Smile!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Catch!", + L"Here ya go!", + L"Pop goes the weasel.", + L"This one's for you.", + L"Muhehe.", + L"Catch this, swine!", + L"I like this.", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"I'll get your scalp.", + L"Come to papa.", + L"Show me your guts!", + L"I'll rip you to pieces!", + L"Motherfucker!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"We're in some real shit...", + L"They said join the army. Not for this shit!", + L"I have enough.", + L"Oh my God.", + L"They ain't paying us enough for this.", + L"It's just too much for me.", + L"I'll bring some friends.", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"I heard that!", + L"Who's there?", + L"What was that?", + L"Hey! What the...", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"They are here!", + L"Now the fun can start.", + L"I hoped this will never happen.", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"Ouch!", + L"Ugh!", + L"This.. hurts!", + L"You fuck!", + L"You will regret.. uhh.. this.", + L"What the..!", + L"Now you have.. pissed me off.", + +}; + +// TODO.Translate +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Da'ffff...!", + L"Oh my God!", + L"Holy crap!", + L"Enemy!!!", + L"Alert! Alert!", + L"There is one!", + L"Attack!", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Description", + L"General", + L"Advanced", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Desc", + L"Gen", + L"Adv", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Primary", + L"Secondary", + L"AP Costs", + L"Burst / Autofire", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Prop.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", + L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", + L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", + L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", + L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", + L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", + L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", + L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", + L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Property icon (mouse-over to reveal name).", + L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", + L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", + L"Bonus/penalty given while |p|r|o|n|e.", + L"Bonus/penalty given", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y", + L"|D|a|m|a|g|e", + L"|R|a|n|g|e", + L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", // TODO.Translate + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s", + L"|R|e|l|i|a|b|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", + L"|A|P|s |t|o |R|e|a|d|y", + L"|A|P|s |t|o |A|t|t|a|c|k", + L"|A|P|s |t|o |B|u|r|s|t", + L"|A|P|s |t|o |A|u|t|o|f|i|r|e", + L"|A|P|s |t|o |R|e|l|o|a|d", + L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", + L"", // No longer used! + L"|T|o|t|a|l |R|e|c|o|i|l", // TODO.Translate + L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", + L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", + L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", + L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", // TODO.Translate + L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", + L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", + L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", + L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", + L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", + L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nThe minimum range at which a scope can provide it's aimBonus.", + L"\n \nTo hit modifier granted by laser sights.", + L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", + L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", + L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", + L"", // No longer used! + L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. // TODO.Translate + L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", + L"|C|o|v|e|r|a|g|e", + L"|D|e|g|r|a|d|e |R|a|t|e", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", + L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", + L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|A|r|m|o|r |P|i|e|r|c|i|n|g", + L"|B|u|l|l|e|t |T|u|m|b|l|e", + L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate + L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", // TODO.Translate + L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", + L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", + L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", // TODO.Translate + L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", // TODO.Translate + L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", // TODO.Translate +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|D|a|m|a|g|e", + L"|S|t|u|n |D|a|m|a|g|e", + L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 // TODO.Translate + L"|B|l|a|s|t |R|a|d|i|u|s", + L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", + L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", + L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", + L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", + L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", + L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", + // HEADROCK HAM 5: Fragmentation // TODO.Translate + L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", + L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", + L"|F|r|a|g|m|e|n|t |R|a|n|g|e", + // HEADROCK HAM 5: End Fragmentations + L"|L|o|u|d|n|e|s|s", + L"|V|o|l|a|t|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", + L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", + L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 // TODO.Translate + L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", + L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", + L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", + L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", + L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", + L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", + // HEADROCK HAM 5: Fragmentation // TODO.Translate + L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", + L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", + L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", + L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", + L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|R|e|p|a|i|r |E|a|s|e", + L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", + L"|V|o|l|u|m|e", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", + L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|T|r|a|c|e|r |A|m|m|o", + L"|A|n|t|i|-|T|a|n|k |A|m|m|o", + L"|I|g|n|o|r|e|s |A|r|m|o|r", + L"|A|c|i|d|i|c |A|m|m|o", + L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", + L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", + L"|W|a|t|e|r|p|r|o|o|f", + L"|E|l|e|c|t|r|o|n|i|c", + L"|G|a|s |M|a|s|k", + L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", + L"|C|a|n |P|i|c|k |L|o|c|k|s", + L"|C|a|n |C|u|t |W|i|r|e|s", + L"|C|a|n |S|m|a|s|h |L|o|c|k|s", + L"|M|e|t|a|l |D|e|t|e|c|t|o|r", + L"|R|e|m|o|t|e |T|r|i|g|g|e|r", + L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", + L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", + L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", + L"|T|o|o|l |K|i|t", + L"|T|h|e|r|m|a|l |O|p|t|i|c|s", + L"|X|-|R|a|y |D|e|v|i|c|e", + L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", + L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", + L"|F|i|r|s|t |A|i|d |K|i|t", + L"|M|e|d|i|c|a|l |K|i|t", + L"|L|o|c|k |B|o|m|b", + L"|D|r|i|n|k",// TODO.Translate + L"|M|e|a|l", + L"|A|m|m|o |B|e|l|t", + L"|A|m|m|o |V|e|s|t", + L"|D|e|f|u|s|a|l |K|i|t", // TODO.Translate + L"|C|o|v|e|r|t |I|t|e|m", // TODO.Translate + L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", + L"|M|a|d|e |o|f |M|e|t|a|l", + L"|S|i|n|k|s", + L"|T|w|o|-|H|a|n|d|e|d", + L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", + L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate + L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|S|h|i|e|l|d", // TODO.Translate + L"|C|a|m|e|r|a", // TODO.Translate + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate + L"|B|l|o|o|d |B|a|g", // 44 + L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", + L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", + L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", + L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", + L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", + L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", + L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", + L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", + L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", + L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", + L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate + L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", + L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate + L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", + L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", + L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", + L"\n \nThis item contains various tools that can\nbe used to repair other items.\n \nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", //JMich_SkillsModifiers: need to be followed by a number // TODO.Translate + L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", + L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", + L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", + L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", + L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", + L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", + L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", + L"\n \nThis item will still your thirst\nif you drink it.",// TODO.Translate + L"\n \nThis item will still your hunger\nif you eat it.", + L"\n \nWith this ammo belt you can\nfeed someone else's MG.", + L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", + L"\n \nThis item improves your trap disarm chance by ", // TODO.Translate + L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", // TODO.Translate + L"\n \nThis item cannot be damaged.", + L"\n \nThis item is made of metal.\nIt takes less damage than other items.", + L"\n \nThis item sinks when put in water.", + L"\n \nThis item requires both hands to be used.", + L"\n \nThis item will block your iron sights\nso you cannot use them.", + L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate + L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", + L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", + L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate + L"\n \nYou can take photos with this.", // TODO.Translate + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate + L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", + L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", + L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", + L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", + L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", + L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", + L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", + L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", + L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", + L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", + L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", + L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", + L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", + L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", + L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", + L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", + L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", + L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|T|u|n|n|e|l |V|i|s|i|o|n", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", + L"|T|o|-|H|i|t |B|o|n|u|s", + L"|A|i|m |B|o|n|u|s", + L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", // TODO.Translate + L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", + L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate + L"|D|i|r|t |M|o|d|i|f|i|e|r", // TODO.Translate + L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r",// TODO.Translate + L"|F|o|o|d| |P|o|i|n|t|s",// TODO.Translate + L"|D|r|i|n|k |P|o|i|n|t|s",// TODO.Translate + L"|P|o|r|t|i|o|n |S|i|z|e",// TODO.Translate + L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r",// TODO.Translate + 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 + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", + L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", + L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", + L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", + L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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 \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate + L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", + L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", + L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", // TODO.Translate + L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate + L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", // TODO.Translate + L"\n \nAmount of energy in kcal.\n \nHigher is better.", // TODO.Translate + L"\n \nAmount of water in liter.\n \nHigher is better.", // TODO.Translate + 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"", + 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 + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", + L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", + L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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 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 \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 be damaged more easily.", + L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"SINGLE", + L"AP", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// TODO.Translate +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"Finished sorting ammo into crates in sector %c%d.", + L"Finished removing attachments from items in sector %c%d.", + L"Finished ejecting ammo from weapons in sector %c%d.", + L"Finished stacking and merging all items in sector %c%d.", + // Bob: new strings for emptying LBE items + L"Finished emptying LBE items in sector %c%d.", + L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Show all", + L"Guns", + L"Ammo", + L"Explosives", + L"Melee Weapons", + L"Armor", + L"LBE", + L"Kits", + L"Misc. Items", + L"Hide all", +}; + +STR16 gzMercCompare[] = +{ + L"???", + L"Base opinion:", + + L"Dislikes %s %s", + L"Likes %s %s", + + L"Strongly hates %s", + L"Hates %s", // 5 + + L"Deep racism against %s", + L"Racism against %s", + + L"Cares deeply about looks", + L"Cares about looks", + + L"Very sexist", // 10 + L"Sexist", + + L"Dislikes other background", + L"Dislikes other backgrounds", + + L"Past grievances", + L"____", // 15 + L"/", + L"* Opinion is always in [%d; %d]", // TODO.Translate +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = // TODO.Translate +{ + L"Temperature is ", + L"very low", + L"low", + L"medium", + L"high", + L"very high", + L"dangerous", + L"CRITICAL", + L"DRAMATIC", + L"unknown", + L"." +}; + +// TODO.Translate +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"Food is ", + L"fresh", + L"good", + L"ok", + L"stale", + L"shabby", + L"rotting", + L"." +}; + +// TODO.Translate +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Pvt. ", //ExpLevel 1 + L"Pfc. ", //ExpLevel 2 + L"Cpl. ", //ExpLevel 3 + L"Sgt. ", //ExpLevel 4 + L"Lt. ", //ExpLevel 5 + L"Cpt. ", //ExpLevel 6 + L"Maj. ", //ExpLevel 7 + L"Lt.Col. ", //ExpLevel 8 + L"Col. ", //ExpLevel 9 + L"Gen. " //ExpLevel 10 +}; + +STR16 gzNewLaptopMessages[]= +{ + L"Ask about our special offer!", + L"Temporarily Unavailable", + L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Distanza dal bersaglio: %d caselle, Luminosità: %d/%d", + L"Colleghi il trasmettitore al tuo computer portatile.", + L"Non puoi permetterti di ingaggiare %s", + L"Per un periodo limitato, la tariffa qui sopra includerà i costi dell'intera missione, oltre all'equipaggiamento indicato sotto.", + L"Assolda %s adesso e approfitta della nostra nuova tariffa 'tutto incluso'. Compreso in questa incredibile offerta anche l'equipaggiamento personale del mercenario, senza alcun costo aggiuntivo.", + L"Tariffa", + L"C'è qualcun altro nel settore...", + //L"Gittata dell'arma: %d caselle, Probabilità di colpire: %d percent", + L"Mostra nascondigli", + L"Linea di Vista", + L"Le nuove reclute non possono arrivare qui.", + L"Poiché il tuo portatile non ha un trasmettitore, non potrai assoldare nuovi mercenari. Forse questo sarebbe un buon momento per caricare una partita salvata o ricominciare daccapo!", + L"%s sente venire da sotto al corpo di Jerry il rumore di metallo che si accartoccia. E' un suono fastidioso, come se l'antenna del tuo portatile venisse schiacciata.", //the %s is the name of a merc. + L"Dopo aver dato un'occhiata al biglietto lasciato dal Vice Comandante Morris, %s vede una possibilità. La nota contiene le coordinate per il lancio di missili contro diverse città ad Arulco. C'è anche la locazione della base di lancio: la fabbrica di missili.", + L"Guardando il pannello di controllo %s immagina che i numeri possano essere invertiti, cosicché il missile distrugga proprio questa fabbrica. %s deve trovare una via di fuga. L'ascensore sembra offrire la soluzione più rapida...", + L"Questa è una partita a livello IRON MAN: non puoi salvare quando ci sono nemici nei dintorni.", + L"(Non puoi salvare durante il combattimento.)", + L"Il nome della campagna è più grande di 30 caratteri", + L"Campagna non trovata.", + L"Campagna: Default ( %S )", + L"Campagna: %S", + L"Hai selezionato la campagna %S. Questa campagna è una versione amatoriale della campagna originale di Unfinished Business. Sei sicuro di voler giocare la campagna %S?", + L"Per usare l'editor, selezionare una campagna diversa da quella di default.", + // anv: extra iron man modes + L"This is a SOFT IRON MAN game and you cannot save during turn-based combat.", // TODO.Translate + L"This is an EXTREME IRON MAN game and you can only save once per day, at %02d:00.", // TODO.Translate +}; + +// The_bob : pocket popup text defs // TODO.Translate +STR16 gszPocketPopupText[]= +{ + L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN + L"- no matching ammo -", //POCKET_POPUP_NO_AMMO + L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS + L"more...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features // TODO.Translate +STR16 szCovertTextStr[]= +{ + L"%s has camo!", + L"%s has a backpack!", + L"%s is seen carrying a corpse!", + L"%s's %s is suspicious!", + L"%s's %s is considered military hardware!", + L"%s carries too many guns!", + L"%s's %s is too advanced for an %s soldier!", + L"%s's %s has too many attachments!", + L"%s was seen performing suspicious activities!", + L"%s does not look like a civilian!", + L"%s bleeding was discovered!", + L"%s is drunk and doesn't behave like a soldier!", + L"On closer inspection, %s's disguise does not hold!", + L"%s isn't supposed to be here!", + L"%s isn't supposed to be here at this time!", + L"%s was seen near a fresh corpse!", + L"%s equipment raises a few eyebrows!", + L"%s is seen targetting %s!", + L"%s has seen through %s's disguise!", + L"No clothes item found in Items.xml!", + L"This does not work with the old trait system!", + L"Not enough APs!", + L"Bad palette found!", + L"You need the covert skill to do this!", + L"No uniform found!", + L"%s is now disguised as a civilian.", + L"%s is now disguised as a soldier.", + L"%s wears a disorderly uniform!", + L"In retrospect, asking for surrender in disguise wasn't the best idea...", + L"%s was uncovered!", + L"%s's disguise seems to be ok...", + L"%s's disguise will not hold.", + L"%s was caught stealing!", + L"%s tried to manipulate %s's inventory.", + L"An elite soldier did not recognize %s!", // TODO.Translate + L"A officer knew %s was unfamiliar!", +}; + +STR16 szCorpseTextStr[]= +{ + L"No head item found in Items.xml!", + L"Corpse cannot be decapitated!", + L"No meat item found in Items.xml!", + L"Not possible, you sick, twisted individual!", + L"No clothes to take!", + L"%s cannot take clothes off of this corpse!", + L"This corpse cannot be taken!", + L"No free hand to carry corpse!", + L"No corpse item found in Items.xml!", + L"Invalid corpse ID!", +}; + +STR16 szFoodTextStr[]= +{ + L"%s does not want to eat %s", + L"%s does not want to drink %s", + L"%s ate %s", + L"%s drank %s", + L"%s's strength was damaged due to being overfed!", + L"%s's strength was damaged due to lack of nutrition!", + L"%s's health was damaged due to being overfed!", + L"%s's health was damaged due to lack of nutrition!", + L"%s's strength was damaged due to excessive drinking!", + L"%s's strength was damaged due to lack of water!", + L"%s's health was damaged due to excessive drinking!", + L"%s's health was damaged due to lack of water!", + L"Sectorwide canteen filling not possible, Food System is off!" +}; + +// TODO.Translate +STR16 szPrisonerTextStr[]= +{ + L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate + L"Gained $%d as ransom money.", // TODO.Translate + L"%d prisoners revealed enemy positions.", + L"%d officers, %d elites, %d regulars and %d admins joined our cause.", + L"Prisoners start a massive riot in %s!", + L"%d prisoners were sent to %s!", + L"Prisoners have been released!", + L"The army now occupies the prison in %s, the prisoners were freed!", + L"The enemy refuses to surrender!", + L"The enemy refuses to take you as prisoners - they prefer you dead!", + L"This behaviour is set OFF in your ini settings.", + L"%s has freed %s!", + L"A high-ranking army officer in %s has been revealed!", // TODO.Translate + L"The enemy leader refuses to even consider surrender!", + L"%d prisoners volunteered to join our forces.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= // TODO.Translate +{ + L"nothing", + L"building a fortification", + L"removing a fortification", + L"hacking", // TODO.Translate + L"%s had to stop %s.", + L"The selected barricade cannot be built in this sector", // TODO.Translate +}; + +// TODO.Translate +STR16 szInventoryArmTextStr[]= // TODO.Translate +{ + L"Blow up (%d AP)", + L"Blow up", + L"Arm (%d AP)", + L"Arm", + L"Disarm (%d AP)", + L"Disarm", +}; + +// TODO.Translate +STR16 szBackgroundText_Flags[]= +{ + L" might consume drugs in inventory\n", + L" disregard for all other backgrounds\n", + L" +1 level in underground sectors\n", + L" steals money from the locals sometimes\n", // TODO.Translate + + 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 + + L" huge loyality penalty in all towns if we die\n", // TODO.Translate + + L" refuses to attack animals\n", // TODO.Translate + L" refuses to attack members of the same group\n", // TODO.Translate +}; + +// TODO.Translate +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% APs in polar sectors\n", + L" %s%d%% APs in desert sectors\n", + L" %s%d%% APs in swamp sectors\n", + L" %s%d%% APs in urban sectors\n", + L" %s%d%% APs in forest sectors\n", + L" %s%d%% APs in plain sectors\n", + L" %s%d%% APs in river sectors\n", + L" %s%d%% APs in tropical sectors\n", + L" %s%d%% APs in coastal sectors\n", + L" %s%d%% APs in mountainous sectors\n", + + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% leadership stat\n", + L" %s%d%% marksmanship stat\n", + 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", + L" %s%d%% APs needed for fortification actions\n", + L" %s%d%% APs needed for mortars\n", + L" %s%d%% APs needed to access inventory\n", + L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", + L" %s%d%% APs on first turn when assaulting a sector\n", + + L" %s%d%% travel speed on foot\n", + L" %s%d%% travel speed on land vehicles\n", + L" %s%d%% travel speed on air vehicles\n", + L" %s%d%% travel speed on water vehicles\n", + + L" %s%d%% fear resistance\n", + L" %s%d%% suppression resistance\n", + L" %s%d%% physical resistance\n", + L" %s%d%% alcohol resistance\n", + L" %s%d%% disease resistance\n", // TODO.Translate + + L" %s%d%% interrogation effectiveness\n", + L" %s%d%% prison guard strength\n", + L" %s%d%% better prices when trading guns and ammo\n", + L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", + L" %s%d%% team capitulation strength if we lead negotiations\n", + L" %s%d%% faster running\n", + L" %s%d%% bandaging speed\n", + L" %s%d%% breath regeneration\n", // TODO.Translate + L" %s%d%% strength to carry items\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", + L" %s%d need for sleep\n", + L" %s%d%% melee damage\n", + L" %s%d%% cth with blades\n", + L" %s%d%% camo effectiveness\n", + L" %s%d%% stealth\n", + L" %s%d%% max CTH\n", + L" %s%d hearing range during the night\n", + L" %s%d hearing range during the day\n", + L" %s%d effectivity at disarming traps\n", // TODO.Translate + L" %s%d%% CTH with SAMs\n", // TODO.Translate + + L" %s%d%% effectiveness to friendly approach\n", + L" %s%d%% effectiveness to direct approach\n", + L" %s%d%% effectiveness to threaten approach\n", + 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", + L" %s%d%% insurance cost\n", + L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate + L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate + L" %s%d%% effectiveness at treating population against diseases\n", + L"Can spot tracks up to %d tiles away\n", + L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% chance to evade snake attacks\n", // TODO.Translate + + L" dislikes some other backgrounds\n", // TODO.Translate + L"Smoker", + L"Nonsmoker", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% building speed\n", + L" hacking skill: %s%d ", // TODO.Translate + L" %s%d%% burial speed\n", // TODO.Translate + L" %s%d%% administration effectiveness\n", // TODO.Translate + L" %s%d%% exploration effectiveness\n", // TODO.Translate +}; + +STR16 szBackgroundTitleText[] = // TODO.Translate +{ + L"I.M.P. Background", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = // TODO.Translate +{ + L"I.M.P. Prejudices", +}; + +STR16 szPersonalityDisplayText[]= // TODO.Translate +{ + L"You look", + L"and appearance is", + L"important to you.", + L"You have", + L"and care", + L"about that.", + L"You are", + L"and hate everyone", + L".", + L"racist against non-", + L"people.", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"How do you look?", + L"How important are the looks of others to you?", + L"What are your manners?", + L"How important are the manners of other people to you?", + L"What is your nationality?", + L"What nation o you dislike?", + L"How much do you dislike that nation?", + L"How racist are you?", + L"What is your race? You will be\nracist against all other races.", + L"How sexist are you against the other gender?", +}; + +STR16 szRaceText[]= +{ + L"white", + L"black", + L"asian", + L"eskimo", + L"hispanic", +}; + +STR16 szAppearanceText[]= +{ + L"average", + L"ugly", + L"homely", + L"attractive", + L"like a babe", +}; + +STR16 szRefinementText[]= +{ + L"average manners", + L"manners of a slob", + L"manners of a snob", +}; + +STR16 szRefinementTextTypes[] = // TODO.Translate +{ + L"normal people", + L"slobs", + L"snobs", +}; + +STR16 szNationalityText[]= +{ + L"American", // 0 + L"Arab", + L"Australian", + L"British", + L"Canadian", + L"Cuban", // 5 + L"Danish", + L"French", + L"Russian", + L"Traconian", + L"Swiss", // 10 + L"Jamaican", + L"Polish", + L"Chinese", + L"Irish", + L"South African", // 15 + L"Hungarian", + L"Scottish", + L"Arulcan", + L"German", + L"African", // 20 + L"Italian", + L"Dutch", + L"Romanian", + L"Metaviran", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"Belarusian", + L"Belgian", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"Brasilian", + L"Bulgarian", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"Estonian", + L"Ethiopian", + L"Filipino", // 50 + L"Finnish", + L"Georgian", + L"Greek", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Indian", + L"Indonesian", + L"Iranian", + L"Iraqi", // 60 + L"Islandic", + L"Israeli", + L"Japanese", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Mexican", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Nigerian", + L"Nigerien", + L"Norwegian", + L"Pakistani", // 85 + L"Panamanian", + L"Portoguese", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"Serbian", + L"Slovakian", + L"Slovenian", + L"Somali", + L"Spanish", // 95 + L"Sudanese", + L"Swedish", + L"Syrian", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"Turkish", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"Venezuelan", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +STR16 szNationalityTextAdjective[] = // TODO.Translate +{ + L"americans", // 0 + L"arabs", + L"australians", + L"britains", + L"canadians", + L"cubans", // 5 + L"danes", + L"frenchmen", + L"russians", + L"traconians", + L"swiss", // 10 + L"jamaicans", + L"poles", + L"chinese", + L"irishmen", + L"south africans", // 15 + L"hungarians", + L"scotsmen", + L"arulcans", + L"germans", + L"africans", // 20 + L"italians", + L"dutchmen", + L"romanians", + L"metavirans", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"belarusians", + L"belgians", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"brasilians", + L"bulgarians", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"estonians", + L"ethiopians", + L"filipinos", // 50 + L"finns", + L"georgians", + L"greek", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"indians", + L"indonesians", + L"iranians", + L"iraqis", // 60 + L"islandics", + L"israelis", + L"japanese", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"mexicans", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"nigerians", + L"nigeriens", + L"norwegians", + L"pakistanis", // 85 + L"panamanians", + L"portoguese", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"serbians", + L"slovakians", + L"slovenians", + L"somali", + L"spaniards", // 95 + L"sudanese", + L"swedes", + L"syrians", + L"thais", + L"togolese", // 100 + L"tunisians", + L"turks", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"venezuelans", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"and do not hate any other nationality.", // used in personnel.cpp + L"of no origin", // used in IMP generation +}; + +STR16 szCareLevelText[]= +{ + L"not", + L"somewhat", + L"extremely", +}; + +STR16 szRacistText[]= +{ + L"not", + L"somewhat", + L"very", +}; + +STR16 szSexistText[]= +{ + L"no sexist", + L"somewhat sexist", + L"very sexist", + L"a Gentleman", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"Batteries are ", + L"full", + L"good", + L"at half", + L"low", + L"depleted", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= // TODO.Translate +{ + L"Mercenary", + L"Green militia", + L"Regular militia", + L"Elite militia", + + L"Civilian", + + L"Administrator", + L"Army Soldier", + L"Elite Soldier", + L"Tank", + + L"Creature", + L"Zombie", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"%s Press Council", + L"Ministry for %s Information Distribution", + L"%s Revolutionary Movement", + L"The Times International", + L"International Times", + L"R.I.S. (Recon Intelligence Service)", + + L"A collection of press sources from %s", + L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", + + L"Conflict Summary", + L"Battle reports", + L"News", + L"About us", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s in %s.", + + L"rebel forces", + L"the army", + + L"attacked", + L"ambushed", + L"airdropped", + + L"The attack came from %s.", + L"%s were reinforced from %s.", + L"The attack came from %s, %s were reinforced from %s.", + L"north", + L"east", + L"south", + L"west", + L"and", + L"an unknown location", // TODO.Translate + + L"Buildings in the sector were damaged.", // TODO.Translate + L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", + L"During the attack, %s and %s called reinforcements.", + L"During the attack, %s called reinforcements.", + L"Eyewitnesses report the use of chemical weapons from both sides.", + L"Chemical weapons were used by %s.", + L"In a serious escalation of the conflict, both sides deployed tanks.", + L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", + L"Both sides are said to have used snipers.", + L"Unverified reports indicate %s snipers were involved in the firefight.", + L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", + L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", + L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"Deep in the night", // 23 - 3 + L"At dawn", // 3 - 6 + L"Early in the morning", // 6 - 8 + L"In the morning hours", // 8 - 11 + L"At noon", // 11 - 14 + L"On the afternoon", // 14 - 18 + L"On the evening", // 18 - 21 + L"During the night", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Initial funding", + L"Mine income", + L"Trade", + L"Other sources", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Ammunition", + L"Explosives", + L"Food", + L"Medical gear", + L"Item maintenance", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"In an extremely one-sided battle, the army force was wiped out without much resistance.", + + L"The rebels easily defeated the army, inflicting heavy losses.", + L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", + + L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", + L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", + + L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", + + L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", + L"Despite the high number of rebels in this sector, the army easily dispatched them.", + + L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", + L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", + + L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", + L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", + + L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"Irrelevant", + L"Insignificant", + L"Notable", + L"Noteworthy", + L"Significant", + L"Interesting", + L"Important", + L"Very important", + L"Grave", + L"Major", + L"Momentous", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"Killed", + L"Wounded", + L"Prisoners", + L"Shots fired", + + L"Money earned", + L"Consumption", + L"Losses", + L"Participants", + + L"Promotions", + L"Summary", + L"Detail", + L"Previous", + + L"Next", + L"Incident", + L"Day", +}; + +STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate +{ + L"Glorious %s", + L"Mighty %s", + L"Awesome %s", + L"Intimidating %s", + + L"Powerful %s", + L"Earth-Shattering %s", + L"Insidious %s", + L"Swift %s", + + L"Violent %s", + L"Brutal %s", + L"Relentless %s", + L"Merciless %s", + + L"Cannibalistic %s", + L"Gorgeous %s", + L"Rogue %s", + L"Dubious %s", + + L"Sexually Ambigious %s", + L"Burning %s", + L"Enraged %s", + L"Visonary %s", + + // 20 + L"Gruesome %s", + L"International-law-ignoring %s", + L"Provoked %s", + L"Ceaseless %s", + + L"Inflexible %s", + L"Unyielding %s", + L"Regretless %s", + L"Remorseless %s", + + L"Choleric %s", + L"Unexpected %s", + L"Democratic %s", + L"Bursting %s", + + L"Bipartisan %s", + L"Bloodstained %s", + L"Rouge-wearing %s", + L"Innocent %s", + + L"Hateful %s", + L"Underwear-staining %s", + L"Civilian-devouring %s", + L"Unflinching %s", + + // 40 + L"Expect No Mercy From Our %s", + L"Very Mad %s", + L"Ultimate %s", + L"Furious %s", + + L"Its best to Avoid Our %s", + L"Fear the %s", + L"All Hail the %s!", + L"Protect the %s", + + L"Beware the %s", + L"Crush the %s", + L"Backstabbing %s", + L"Vicious %s", + + L"Sadistic %s", + L"Burning %s", + L"Wrathful %s", + L"Invincible %s", + + L"Guilt-ridden %s", + L"Rotting %s", + L"Sanitized %s", + L"Self-doubting %s", + + // 60 + L"Ancient %s", + L"Very Hungry %s", + L"Sleepy %s", + L"Demotivated %s", + + L"Cruel %s", + L"Annoying %s", + L"Huffy %s", + L"Bisexual %s", + + L"Screaming %s", + L"Hideous %s", + L"Praying %s", + L"Stalking %s", + + L"Cold-blooded %s", + L"Fearsome %s", + L"Trippin' %s", + L"Damned %s", + + L"Vegetarian %s", + L"Grotesque %s", + L"Backward %s", + L"Superior %s", + + // 80 + L"Inferior %s", + L"Okay-ish %s", + L"Porn-consuming %s", + L"Poisoned %s", + + L"Spontaneous %s", + L"Lethargic %s", + L"Tickled %s", + L"The %s is a dupe!", + + L"%s on Steroids", + L"%s vs. Predator", + L"A %s with a twist", + L"Self-Pleasuring %s", + + L"Man-%s hybrid", + L"Inane %s", + L"Overpriced %s", + L"Midnight %s", + + L"Capitalist %s", + L"Communist %s", + L"Intense %s", + L"Steadfast %s", + + // 100 + L"Narcoleptic %s", // TODO.Translate + L"Bleached %s", + L"Nail-biting %s", + L"Smite the %s", + + L"Bloodthirsty %s", + L"Obese %s", + L"Scheming %s", + L"Tree-Humping %s", + + L"Cheaply made %s", + L"Sanctified %s", + L"Falsely accused %s", + L"%s to the rescue", + + L"Crab-people vs. %s", + L"%s in Space!!!", + L"%s vs. Godzilla", + L"Untamed %s", + + L"Durable %s", + L"Brazen %s", + L"Greedy %s", + L"Midnight %s", + + // 120 + L"Confused %s", + L"Irritated %s", + L"Loathsome %s", + L"Manic %s", + + L"Ancient %s", + L"Sneaking %s", + L"%s of Doom", + L"%s's revenge", + + L"A %s on the run", + L"A %s out of time", + L"One with %s", + L"%s from hell", + + L"Super-%s", + L"Ultra-%s", + L"Mega-%s", + L"Giga-%s", + + L"A quantum of %s", + L"Her Majesties' %s", + L"Shivering %s", + L"Fearful %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Dragon", + L"Mountain Lion", + L"Copperhead Snake", + L"Jack Russell Terrier", + + L"Arch-Nemesis", + L"Basilisk", + L"Blade", + L"Shield", + + L"Hammer", + L"Spectre", + L"Congress", + L"Oilfield", + + L"Boyfriend", + L"Girlfriend", + L"Husband", + L"Stepmother", + + L"Sand Lizard", + L"Bankers", + L"Anaconda", + L"Kitten", + + // 20 + L"Congress", + L"Senate", + L"Cleric", + L"Badass", + + L"Bayonet", + L"Wolverine", + L"Soldier", + L"Tree Frog", + + L"Weasel", + L"Shrubbery", + L"Tar pit", + L"Sunset", + + L"Hurricane", + L"Ocelot", + L"Tiger", + L"Defense Industry", + + L"Snow Leopard", + L"Megademon", + L"Dragonfly", + L"Rottweiler", + + // 40 + L"Cousin", + L"Grandma", + L"Newborn", + L"Cultist", + + L"Disinfectant", + L"Democracy", + L"Warlord", + L"Doomsday Device", + + L"Minister", + L"Beaver", + L"Assassin", + L"Rain of Burning Death", + + L"Prophet", + L"Interloper", + L"Crusader", + L"Administration", + + L"Supernova", + L"Liberty", + L"Explosion", + L"Bird of Prey", + + // 60 + L"Manticore", + L"Frost Giant", + L"Celebrity", + L"Middle Class", + + L"Loudmouth", + L"Scape Goat", + L"Warhound", + L"Vengeance", + + L"Fortress", + L"Mime", + L"Conductor", + L"Job-Creator", + + L"Frenchman", + L"Superglue", + L"Newt", + L"Incompetency", + + L"Steppenwolf", + L"Iron Anvil", + L"Grand Lord", + L"Supreme Ruler", + + // 80 + L"Dictator", + L"Old Man Death", + L"Shredder", + L"Vacuum Cleaner", + + L"Hamster", + L"Hypno-Toad", + L"Discjockey", + L"Undertaker", + + L"Gorgon", + L"Child", + L"Mob", + L"Raptor", + + L"Goddess", + L"Gender Inequality", + L"Mole", + L"Baby Jesus", + + L"Gunship", + L"Citizen", + L"Lover", + L"Mutual Fund", + + // 100 + L"Uniform", // TODO.Translate + L"Saber", + L"Snow Leopard", + L"Panther", + + L"Centaur", + L"Scorpion", + L"Serpent", + L"Black Widow", + + L"Tarantula", + L"Vulture", + L"Heretic", + L"Zombie", + + L"Role-Model", + L"Hellhound", + L"Mongoose", + L"Nurse", + + L"Nun", + L"Space Ghost", + L"Viper", + L"Mamba", + + // 120 + L"Sinner", + L"Saint", + L"Comet", + L"Meteor", + + L"Can of worms", + L"Fish oil pills", + L"Breastmilk", + L"Tentacle", + + L"Insanity", + L"Madness", + L"Cough reflex", + L"Colon", + + L"King", + L"Queen", + L"Bishop", + L"Peasant", + + L"Tower", + L"Mansion", + L"Warhorse", + L"Referee", + + // 140 +}; + +STR16 szMercCompareWebSite[] = // TODO.Translate +{ + // main page + L"Mercs Love or Dislike You", + L"Your #1 teambuilding experts on the web", + + L"About us", + L"Analyse a team", + L"Pairwise comparison", + L"Customer voices", + + L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"Your team struggles with itself.", + L"Your employees waste time working against each other.", + L"Your workforce experiences a high fluctuation rate.", + L"You constantly receive low marks on workplace satisfaction ratings.", + L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"A few citations from our satisfied customers:", + L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G., Novelist-", + L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C., Corrective law enforcement-", + L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W., Snake charmer-", + L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L., SPK-", + L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C., NASA-", + L"I fully recommend this site!", + L"-Kasper H., H&C logistic Inc-", + L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke, Kerberus Inc-", + + // analyze + L"Choose your employee", + L"Choose your squad", + + // error messages + L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s shot me!", + L"%s is scheming behind my back", + L"%s interfered in my business", + L"%s is friends with my enemy", + + L"%s got a contract before I did", + L"%s ordered a shameful retreat", + L"%s massacred the innocent", + L"%s slows us down", + + L"%s doesn't share food", + L"%s jeopardizes the mission", + L"%s is a drug addict", + L"%s is thieving scum", + + L"%s is an incompetent commander", + L"%s is overpaid", + L"%s gets all the good stuff", + L"%s mounted a gun on me", + + L"%s treated my wounds", + L"Had a good drink with %s", + L"%s is fun to get wasted with", + L"%s is annoying when drunk", + + L"%s is an idiot when drunk", + L"%s opposed our view in an argument", + L"%s supported our position", + L"%s agrees to our reasoning", + + L"%s's beliefs are contrary to ours", + L"%s knows how to calm down people", + L"%s is insensitive", + L"%s puts people in their places", + + L"%s is way too impulsive", + L"%s is disease-ridden", + L"%s treated my diseases", + L"%s does not hold back in combat", + + L"%s enjoys combat a bit too much", + L"%s is a good teacher", + L"%s led us to victory", + L"%s saved my life", + + L"%s stole my kill", + L"%s and me fought well together", + L"%s made the enemy surrender", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"World Health Organization", + L"Bringing health to life", + + // links to other pages + L"About WHO", + L"Disease in Arulco", + L"About diseases", + + // text on the main page + L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", + L"You currently do not have access to WHO data on the arulcan plague.", + L"You have acquired detailed maps on the status of the disease.", + L"Subscribe to map updates", + L"Unsubscribe map updates", + + // helpful tips page + L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus", + L"Experience In Security", + + // links to other pages + L"What is Kerberus?", + L"Team Contracts", + L"Individual Contracts", + + // text on the main page + L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", + L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", + L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"You can select the type and number of personnel you want to hire here:", + L"Initial deployment", + L"Regular personnel", + L"Veteran personnel", + + L"%d available, %d$ each", + L"Hire: %d", + L"Cost: %d$", + + L"Select the initial operational area:", + L"Total Cost: %d$", + L"ETA: %02d:%02d", + L"Close Contract", + + L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus reinforcements have arrived in %s.", + L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"Move", // TODO.Translate + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"Roles", // TODO.Translate + L"Fortification", // TODO.Translate + L"Tracker", + L"CTH mode", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"Display enemy role symbols", // TODO.Translate + L"Display planned fortifications", + L"Display enemy tracks", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + +// TODO.Translate +STR16 szDynamicDialogueText[40][17] = // TODO.Translate +{ + // OPINIONEVENT_FRIENDLYFIRE + L"What the hell! $CAUSE$ attacked me!", + L"", + L"", + L"What? Me? No way, I'm engaging at the enemy!", + L"Oops.", + L"", + L"", + L"$CAUSE$ has attacked $VICTIM$. What do you do?", + L"Nah, that must have been enemy fire!", + L"Yeah, I saw it too!", + L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", + L"I saw it, it was clearly enemy fire!", + L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", + L"This is war! People get shot all the time! Speaking of... shoot more people, people!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"I would if you weren't such a wussy!", + L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"I'm doing my job. Get back to yours!", + L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"Patched together again? Good, now move!", + L"You're welcome.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'Even'? What does that mean?", + L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Nice one, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"Is there a difference?", + L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"What?!", + L"No!", + L"That is false!", + L"That is not true!", + + L"Lies, lies, lies. Nothing but lies!", + L"Liar!", + L"Traitor!", + L"You watch your mouth!", + + L"This is none of your business.", + L"Who ever invited you?", + L"Nobody asked for your opinion, $INTERJECTOR$.", + L"You stay away from me.", + + L"Why are you all against me?", + L"Why are you against me, $INTERJECTOR$?", + L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"Not listening...!", + + L"I hate this psycho circus.", + L"I hate this freak show.", + L"Back off!", + L"Lies, lies, lies...", + + L"No way!", + L"So not true.", + L"That is so not true.", + L"I know what I saw.", + + L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"Nope.", + L"You are mistaken.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"What $INTERJECTOR_GENDER$ said.", + + L"Thanks, $INTERJECTOR$!", + L"Once again I'm right!", + L"See, $CAUSE$? I am right!", + L"Once again $SPEAKER$ is right!", + + L"Aye.", + L"Yup.", + L"Yep", + L"Yes.", + + L"Indeed.", + L"True.", + L"Ha!", + L"See?", + + L"Exactly!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"That's right!", + L"Indeed!", + L"Exactly that.", + L"$CAUSE$ does that all the time.", + + L"$VICTIM$ is right!", + L"I was gonna' point that out, too!", + L"What $VICTIM$ said.", + L"That's our $CAUSE$!", + + L"Yeah!", + L"Now THIS is going to be interesting...", + L"You tell'em, $VICTIM$!", + L"Agreeing with $VICTIM$ here...", + + L"Classic $CAUSE$.", + L"I couldn't have said it better myself.", + L"That is exactly what happened.", + L"Agreed!", + + L"Yup.", + L"True.", + L"Bingo.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"Now wait a minute...", + L"Wait a sec, that's not what right...", + L"What? No.", + L"That is not what happened.", + + L"Hey, stop blaming $CAUSE$!", + L"Oh shut up, $VICTIM$!", + L"Nonono, you got that wrong.", + L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"And I suppose you never did, $VICTIM$?", + L"Hmmmm... no.", + L"Great. Let's have an argument. It's not like we have other things to do...", + L"You are mistaken!", + + L"You are wrong!", + L"Me and $CAUSE$ would never do such a thing.", + L"Nah, can't be.", + L"I don't think so.", + + L"Why bring that up now?", + L"Really, $VICTIM$? Is this necessary?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Keep silent", + L"Support $VICTIM$", + L"Support $CAUSE$", + L"Appeal to reason", + L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"he", + L"she", + L"him", + L"her", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% wisdom stat\n", + L" %s%d%% effective level\n", + + L" %s%d%% APs\n", + L" %s%d maximum breath\n", + L" %s%d%% strength to carry items\n", + L" %s%2.2f life regeneration/hour\n", + L" %s%d need for sleep\n", + L" %s%d%% water consumption\n", + L" %s%d%% food consumption\n", + + L"%s was diagnosed with %s!", + L"%s is cured of %s!", + + L"Diagnosis", + L"Treatment", + L"Burial", // TODO.Translate + L"Cancel", + + L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate + + L"High amount of distress can cause a personality split\n", // TODO.Translate + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", // TODO.Translate + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"Hide", // TODO.Translate + L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|F|o|o|d: %d%%\n", + + L"max morale altered by %s%d\n", + L" %s%d need for sleep\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% assignment efficiency\n", + L" %s%d%% chance to lose stats\n", +}; + +STR16 szIMPGearWebSiteText[] = // TODO.Translate +{ + // IMP Gear Entrance + L"How should gear be selected?", + L"Old method: Random gear according to your choices", + L"New method: Free selection of gear", + L"Old method", + L"New method", + + // IMP Gear Entrance + L"I.M.P. Equipment", + L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate +}; + +STR16 szIMPGearPocketText[] = +{ + L"Select helmet", + L"Select vest", + L"Select pants", + L"Select face gear", + L"Select face gear", + + L"Select main gun", + L"Select sidearm", + + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", + + L"Select launcher / rifle", + L"Select melee weapon", + + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"We cannot relay orders to this sector, militia command not possible.", + L"Unassigned", + L"Group No.", + L"Next", + + L"ETA", + L"Group %d (new)", + L"Group %d", + L"Final", + + L"Volunteers: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = // TODO.Translate +{ + L"Enemy helicopter shot down in %s!", + L"We... uhm... currently don't control that site, commander...", + L"The SAM does not need maintenance at the moment.", + L"We've already ordered the repair, this will take time.", + + L"We do not have enough resources to do that.", + L"Repair SAM site? This will cost %d$ and take %d hours.", + L"Enemy helicopter hit in %s.", + L"%s fires %s at enemy helicopter in %s.", + + L"SAM in %s fires at enemy helicopter in %s.", +}; + +STR16 szFortificationText[] = +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"Militia", + L"Militia Forces Overview", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Took part in Operation %s", + L"Recruited on Day %d, %d:%02d in %s", + L"Promoted on Day %d, %d:%02d", + L"KIA, Operation %s", + + L"Lightly wounded during Operation %s", + L"Heavily wounded during Operation %s", + L"Critically wounded during Operation %s", + L"Valiantly fought in Operation %s", + + L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", // TODO:Translate +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"All sectors", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"Merchant is hostile and does not want to trade.", + L"Merchant is in no state to do business.", + L"Merchant won't trade during combat.", + L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = // TODO.Translate +{ + L"normal", + L"rain", + L"thunderstorm", + L"sandstorm", + + L"snow", +}; + +STR16 szSnakeText[] = +{ + L"%s evaded a snake attack!", + L"%s was attacked by a snake!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"Converted %s into resources", + L"Guns: ", + L"Armour: ", + L"Misc: ", + + L"There are no volunteers left for militia!", + L"Not enough resources to train militia!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s starts hacking.", + L"%s accesses the computer, but finds nothing of interest.", + L"%s is not skilled enough to hack the computer.", + L"%s reads the file, but learns nothing new.", + + L"%s can't make sense out of this.", + L"%s couldn't use the watertap.", + L"%s has bought a %s.", + L"%s doesn't have enough money. That's just embarassing.", + + L"%s drank from water tap", + L"This machine doesn't seem to be working.", // TODO.Translate +}; + +STR16 szLaptopStatText[] = // TODO.Translate +{ + L"threaten effectiveness %d\n", + L"leadership %d\n", + L"approach modifier %.2f\n", + L"background modifier %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Good Guy", + L"%s eschews excessive violence and will refuse to attack non-hostiles.", + + L"Friendly approach", + L"Direct approach", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +STR16 szGearTemplateText[] = // TODO.Translate +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate +}; + +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +STR16 szFactoryText[] = // TODO.Translate +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +// TODO.Translate +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Space Available:", + L"MOLLE Space Required:", + L"MOLLE Small Slot Count:", + L"MOLLE Medium Slot Count:", + L"MOLLE Pouch Size: Small", + L"MOLLE Pouch Size: Medium", + L"MOLLE Pouch Size: Medium (Hydration)", + L"Thigh Rig", + L"Vest", + L"Combat Pack", + L"Backpack", // 10 + L"MOLLE Pouch", + L"Compatible backpacks:", + L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = // TODO.Translate +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = // TODO.Translate +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = // TODO.Translate +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = // TODO.Translate +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia\nthat appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = // TODO: Translate +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //ITALIAN diff --git a/i18n/_Ja25ChineseText.cpp b/i18n/_Ja25ChineseText.cpp index 94e28304..093ad395 100644 --- a/i18n/_Ja25ChineseText.cpp +++ b/i18n/_Ja25ChineseText.cpp @@ -1,528 +1,528 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("CHINESE") - - #ifdef CHINESE - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25ChineseText_public_symbol(void){;} - -#ifdef CHINESE - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - // made this more elegant - L"开锁", //"Lock picking", - L"格斗", //"Hand to hand combat", - L"电子", //"Electronics", - L"夜战", //"Night operations", - L"投掷", //"Throwing", - L"教学", //"Teaching", - L"重武器", //"Heavy Weapons", - L"自动武器", //"Auto Weapons", - L"潜行", //"Stealth", - L"双持", //"Ambidextrous", - L"刀技", //"Knifing", - L"狙击", //"Sniper", - L"伪装", //"Camouflage", - L"武术", //"Martial Arts", - - L"无", //"None", - L"I.M.P 专属技能", //"I.M.P. Specialties", - L"(专家)", - -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"自动武器",// L"Auto Weapons", - L"重武器",// L"Heavy Weapons", - L"神枪手",// L"Marksman", - L"猎兵",// L"Hunter", - L"快枪手",// L"Gunslinger", - L"格斗家",// L"Hand to Hand", - L"班副",// L"Deputy", - L"技师",// L"Technician", - L"救护员",// L"Paramedic", - L"特工",// L"Covert Ops", - - L"无",// L"None", - L"I.M.P 主要特殊技能",// L"I.M.P. Major Traits", - // second names - L"机枪手",// L"Machinegunner", - L"枪炮专家",// L"Bombardier", - L"狙击手",// L"Sniper", - L"游骑兵",// L"Ranger", - L"枪斗术",// L"Gunfighter", - L"武术家",// L"Martial Arts", - L"班长",// L"Squadleader", - L"工兵",// L"Engineer", - L"军医",// L"Doctor", - L"间谍",// L"Spy", -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"双持",// L"Ambidextrous", - L"近战",// L"Melee", - L"投掷",// L"Throwing", - L"夜战",// L"Night Ops", - L"潜行",// L"Stealthy", - L"运动员",// L"Athletics", - L"健身",// L"Bodybuilding", - L"爆破",// L"Demolitions", - L"教学",// L"Teaching", - L"侦察",// L"Scouting", - L"无线电操作员", //L"Radio Operator", - L"向导", //L"Survival", - - L"无",// L"None", - L"I.M.P 副技能",// L"I.M.P. Minor Traits", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"突击步枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Assault Rifles\n", - L"冲锋枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with SMGs\n", - L"轻机枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with LMGs\n", - L"轻机枪射击所需行动点 -%d%s\n",//L"-%d%s APs needed to fire with LMGs\n", - L"端起轻机枪所需行动点 -%d%s\n",//L"-%d%s APs needed to ready light machine guns\n", - L"自动或点射命中率惩罚 -%d%s\n",//L"Auto fire/burst chance to hit penalty is reduced by %d%s\n", - L"降低浪费子弹的几率 \n",//L"Reduced chance for shooting unwanted bullets on autofire\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"发射榴弹所需行动点 -%d%s\n",// L"-%d%s APs needed to fire grenade launchers\n", - L"发射火箭所需行动点 -%d%s\n",// L"-%d%s APs needed to fire rocket launchers\n", - L"榴弹命中率 +%d%s\n",// L"+%d%s chance to hit with grenade launchers\n", - L"火箭命中率 +%d%s\n",// L"+%d%s chance to hit with rocket launchers\n", - L"发射迫击炮所需行动点 -%d%s\n",// L"-%d%s APs needed to fire mortar\n", - L"迫击炮命中率惩罚修正 -%d%s\n",// L"Reduce penalty for mortar CtH by %d%s\n", - L"爆破物, 手榴弹和重武器对坦克的额外伤害 +%d%s\n",// L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", - L"重武器对其他目标的伤害 +%d%s\n",// L"+%d%s damage to other targets with heavy weapons\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"步枪命中率 +%d%s\n", - L"狙击步枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Sniper Rifles\n", - L"所有武器的有效距离 -%d%s\n",// L"-%d%s effective range to target with all weapons\n", - L"每次精确瞄准的加成(手枪除外) +%d%s\n",// L"+%d%s aiming bonus per aim click (except for handguns)\n", - L"+%d%s 精确瞄准伤害",// L"+%d%s damage on shot", - L"加上",// L" plus", - L"在",// L" per every aim click", - L"第一次",// L" after first", - L"第二次",// L" after second", - L"第三次",// L" after third", - L"第四次",// L" after fourth", - L"第五次",// L" after fifth", - L"第六次",// L" after sixth", - L"第七次",// L" after seventh", - L"栓动步枪拉栓所需行动点 -%d%s \n",// L"-%d%s APs needed to chamber a round with bolt-action rifles \n", - L"步枪精确瞄准次数增加1次\n",// L"Adds one more aim click for rifle-type guns\n", - L"步枪精确瞄准次数增加%d次\n",// L"Adds %d more aim clicks for rifle-type guns\n", - L"迅速瞄准:步枪精确瞄准次数加快(即减少)1次\n",//L"Makes aiming faster with rifle-type guns by one aim click\n", - L"迅速瞄准:步枪精确瞄准次数加快(即减少)%d次\n",//L"Makes aiming faster with rifle-type guns by %d aim clicks\n", - L"专注技能:在标记区域内中断率 +%d \n", //L"Focus skill: +%d interrupt modifier in marked area\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"步枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Rifles\n", - L"霰弹枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Shotguns\n", - L"泵动式霰弹上膛所需行动点 -%d%s \n",// L"-%d%s APs needed to pump Shotguns\n", - L"使用散弹枪时行动点 -%d%s\n", //L"-%d%s APs to fire Shotguns\n", - L"使用散弹枪精确瞄准次数增加%d次 \n", //L"Adds %d more aim click for Shotguns\n", - L"使用散弹枪精确瞄准次数增加%d次 \n", //L"Adds %d more aim clicks for Shotguns\n", - L"散弹枪的有效范围 +%d%s\n", //L"+%d%s effective range with Shotguns\n", - L"散弹枪上膛的行动点消耗 -%d%s\n", //L"-%d%s APs to reload single Shotgun shells\n", - L"使用步枪精瞄次数增加%d次\n", //L"Adds %d more aim click for Rifles\n", - L"使用步枪精瞄次数增加%d次\n", //L"Adds %d more aim clicks for Rifles\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"发射手枪、左轮所需行动点 -%d%s\n",// L"-%d%s APs needed to fire with pistols and revolvers\n", - L"手枪、左轮的有效射程 +%d%s\n",// L"+%d%s effective range with pistols and revolvers\n", - L"手枪、左轮的命中率 +%d%s\n",// L"+%d%s chance to hit with pistols and revolvers\n", - L"冲锋手枪的命中率 +%d%s",// L"+%d%s chance to hit with machine pistols", - L"(只限单发)",// L" (on single shots only)", - L"手枪、左轮和冲锋手枪每次精确瞄准的加成 +%d%s \n",// L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", - L"手枪和左轮抬枪瞄准所需行动点 -%d%s\n",// L"-%d%s APs needed to raise pistols and revolvers\n", - 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"可以掰击锤来发射左轮枪\n", //L"Can fan the hammer with revolvers\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= -{ - L"格斗攻击所需行动点 -%d%s(空手或戴铜指套) \n",// L"-%d%s AP cost of hand to hand attacks (bare hands or with brass knuckles)\n", - L"格斗命中率 +%d%s\n",// L"+%d%s chance to hit with hand to hand attacks with bare hands\n", - L"铜指套命中率 +%d%s\n",// L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n", - L"格斗攻击伤害 +%d%s(空手或戴指拳套)\n",// L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"格斗攻击的体力伤害 +%d%s(空手或戴指拳套) \n",// L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"被你徒手击倒的敌人要喘息片刻才能站起来 \n",// L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", - L"被你徒手击倒的敌人要休息片刻才能回过神来 \n",// L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", - L"被你徒手击倒的敌人要一泡尿的功夫才能爬起来 \n",// L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", - L"被你徒手击倒的敌人要一盏茶的功夫才能恢复知觉 \n",// L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", - L"被你徒手击倒的敌人要一顿饭的功夫才能清醒过来 \n",// L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", - L"被你徒手击倒的敌人要昏迷上几个小时\n",// L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", - L"被你徒手击倒的敌人下半辈子就是植物人\n",// L"Enemy knocked out due to your HtH attacks probably never stand up\n", - L"格斗攻击精确瞄准后造成伤害 +%d%s\n",// L"Focused (aimed) punch deals +%d%s more damage\n", - L"独门腿功造成伤害 +%d%s\n",// L"Your special spinning kick deals +%d%s more damage\n", - L"躲避格斗攻击的几率 +%d%s\n",// L"+%d%s change to dodge hand to hand attacks\n", - L"空手状态下获得额外的躲避几率 +%d%s",// L"+%d%s on top chance to dodge HtH attacks with bare hands", - L"或只戴指拳套",// L" or brass knuckles", - L"(戴铜指套时 +%d%s)",// L" (+%d%s with brass knuckles)", - L"戴铜指套时获得额外的躲避几率 +%d%s\n",// L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n", - L"躲避冷兵器攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attacks by any melee weapon\n", - L"从敌人手里夺枪所需行动点 -%d%s\n",// L"-%d%s APs needed to steal weapon from enemy hands\n", - L"站立、下蹲、卧倒、转身、爬上爬下和越过障碍所需行动点 -%d%s\n",// L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", - L"站立、下蹲和卧倒所需行动点 -%d%s\n",// L"-%d%s APs needed to change state (stand, crouch, lie down)\n", - L"转身所需行动点 -%d%s\n",// L"-%d%s APs needed to turn around\n", - L"上/下房顶所需行动点 -%d%s\n",// L"-%d%s APs needed to climb on/off roof and jump obstacles\n", - L"踢门成功率 +%d%s\n",// L"+%d%s chance to kick doors\n", - L"你的格斗攻击将有特殊的动画效果 \n",// L"You gain special animations for hand to hand combat\n", - L"移动时被中断的几率降低 -%d%s\n", // L"-%d%s chance to be interrupted when moving\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"所在区域内雇佣兵的最大行动点 +%d%s \n",// L"+%d%s APs per round of other mercs in vicinity\n", - L"+%d等级,所在区域雇佣兵等级高于%s \n",//(程序参数问题只能用这个语序) L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", - L"+%d等级,所在区域雇佣兵火力压制奖励 \n",//(程序参数问题只能用这个语序) L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", - L"+%d%s 所在区域内雇佣兵和%s最高火力压制承受力 \n",//(程序参数问题只能用这个语序) L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n", - L"所在区域内雇佣兵的士气增加速度 +%d \n",// L"+%d morale gain of other mercs in vicinity\n", - L"所在区域内雇佣兵的士气降低速度 -%d \n",// L"-%d morale loss of other mercs in vicinity\n", - L"奖励范围是%d格",// L"The vicinity for bonuses is %d tiles", - L"(装备电子耳机后奖励范围增加到%d格)",// L" (%d tiles with extended ears)", - L"(叠加效果最多是%d次)\n",// L"(Max simultaneous bonuses for one soldier is %d)\n", - L"+%d%s %s的恐惧抵抗力 \n",// (程序参数问题只能用这个语序) L"+%d%s fear resistence of %s\n", - L"缺陷: 会给其他人造成%d倍的士气下降,如果%s阵亡的话 \n",//(程序参数问题只能用这个语序) L"Drawback: %dx morale loss for %s's death for all other mercs\n", - L"触发小队集体中断几率 +%d%s \n", // L"+%d%s chance to trigger collective interrupts\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"维修速度 +%d%s \n",// L"+%d%s to repairing speed\n", - L"开锁成功率 +%d%s(普通/电子锁)\n",// L"+%d%s to lockpicking (normal/electronic locks)\n", - L"电子陷阱解除几率 +%d%s\n",// L"+%d%s to disarming electronic traps\n", - L"组装物品和组合特殊物品成功率 +%d%s\n",// L"+%d%s to attaching special items and combining things\n", - L"战斗中排除枪械故障的成功率 +%d%s\n",// L"+%d%s to unjamming a gun in combat\n", - L"修理电子物品的惩罚 -%d%s\n",// L"Reduce penalty to repair electronic items by %d%s\n", - L"增加发现陷阱和地雷的几率(洞察等级 +%d) \n",// L"Increased chance to detect traps and mines (+%d detect level)\n", - L"机器人命中率 +%d%s(由%s控制时) \n",//(翻译注:程序参数问题只能用这个语序) L"+%d%s CtH of robot controlled by the %s\n", - L"只有%s可以修理机器人\n",// L"%s trait grants you the ability to repair the robot\n", - L"修理机器人的速度惩罚 -%d%s\n",// L"Reduced penalty to repair speed of the robot by %d%s\n", - L"可以将物品修复到100%%的状态\n", //L"Able to restore item threshold to 100%% during repair\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"使用医疗包进行包扎时可以给伤者进行手术 \n",// L"Has ability to make surgical intervention by using medical bag on wounded soldier\n", - L"手术会立即回复受损生命值的%d%s",// L"Surgery instantly returns %d%s of lost health back.", - L"(同时大量消耗医疗包)",// L" (This drains the medical bag a lot.)", - L"可治疗致命一击造成损失的属性点, 通过",// L"Can heal lost stats (from critical hits) by the", - L"手术",// L" surgery or", - L"或指派医生治疗 \n",// L" doctor assignment.\n", - L"疗伤效率 +%d%s\n",// L"+%d%s effectiveness on doctor-patient assignment\n", - L"包扎速度 +%d%s\n",// L"+%d%s bandaging speed\n", - L"所在区域自然回复生命值速度 +%d%s",// L"+%d%s natural regeneration speed of all soldiers in the same sector", - L"(这种效果最多叠加%d次)",// L" (max %d these bonuses per sector)", - L"使用血袋时,可以额外恢复%d%s的生命值。\n", //L"Returned health can be boosted an additional %d%s by using blood bags.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"可在敌后伪装成市民或敌军士兵 \n",//L"Can disguise as a civilian or soldier to slip behind enemy lines.\n", - L"以下情况会暴露身份:可疑动作、可疑装备或者接近新鲜尸体 \n",//L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", - L"在靠近敌人%d格内伪装成士兵会被自动发现而暴露 \n",//L"Will automatically be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", - L"在靠近尸体%d格内伪装成士兵会被自动发现而暴露 \n",//L"Will automatically be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", - L"伪装状态下使用近战武器攻击时,命中率增加 +%d%s \n",//L"+%d%s CTH with covert melee weapons\n", - L"伪装状态下使用近战武器攻击时,秒杀几率增加 +%d%s \n",//L"+%d%s chance of instakill with covert melee weapons\n", - L"伪装动作消耗的行动点 -%d%s \n",//L"Disguise AP cost lowered by %d%s.\n", - L"能够说服敌军士兵成为我方卧底。\n", //L"Can convince enemy soldiers to secretly change sides.\n", TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= -{ - L"可以使用通讯设备 \n", //L"Can use communications equipment\n", - L"可以呼叫临区盟友进行火炮攻击 \n", //L"Can call in artillery strikes from allies in neighbouring sectors.\n", - L"可以通过通讯频率扫描任务定位敌军巡逻队 \n", //L"Via Frequency Scan assignment, enemy patrols can be located.\n", - L"可以在分区范围内干扰通讯设备 \n", //L"Communications can be jammed sector-wide.\n", - L"如果通讯受到干扰,操作员可以扫描到那个干扰设备 \n", //L"If communications are jammed, an operator can scan for the jamming device.\n", - L"可以呼叫临区军队进行支援 \n", //L"Can call in militia reinforcements from neighbouring sectors.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"无奖励",// L"No bonuses", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"副手有装备时命中率惩罚 -%d%s \n", //L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", - L"弹匣类武器装填速度 +%d%s\n",// L"+%d%s speed of reloading guns with magazines\n", - L"零散弹药装填速度 +%d%s\n",// L"+%d%s speed of reloading guns with loose rounds\n", - L"拾物品所需行动点 -%d%s\n",// L"-%d%s APs needed to pickup items\n", - L"使用大背包所需行动点 -%d%s\n",// L"-%d%s APs needed to work backpack\n", - L"开门或关门所需行动点 -%d%s\n",// L"-%d%s APs needed to handle doors\n", - L"安置/拆除炸弹和地雷所需行动点 -%d%s \n",// L"-%d%s APs needed to plant/remove bombs and mines\n", - L"组装物品所需行动点 -%d%s\n",// L"-%d%s APs needed to attach items\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"刀具攻击所需行动点 -%d%s\n",// L"-%d%s APs needed to attack by blades\n", - L"刀具命中率 +%d%s\n",// L"+%d%s chance to hit with blades\n", - L"钝器命中率 +%d%s\n",// L"+%d%s chance to hit with blunt melee weapons\n", - L"刀具的杀伤力 +%d%s\n",// L"+%d%s damage of blades\n", - L"钝器的杀伤力 +%d%s\n",// L"+%d%s damage of blunt melee weapons\n", - L"近战武器精确瞄准后攻击伤害 +%d%s \n",// L"Aimed attack by any melee weapon deals +%d%s damage\n", - L"躲避刀具攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attack by melee blades\n", - L"持刀状态下额外刀具攻击的几率 +%d%s \n",// L"+%d%s on top chance to dodge melee blades if having a blade in hands\n", - L"躲避钝器攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attack by blunt melee weapons\n", - L"持刀状态下额外躲避钝器攻击的几率 +%d%s \n",// L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"投掷飞刀所需基础行动点 -%d%s\n",// L"-%d%s basic APs needed to throw blades\n", - L"飞刀的投掷最远距离 +%d%s\n",// L"+%d%s max range when throwing blades\n", - L"飞刀的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing blades\n", - L"投掷飞刀时每次精确瞄准的命中率 +%d%s \n",// L"+%d%s chance to hit when throwing blades per aim click\n", - L"飞刀的伤害 +%d%s\n",// L"+%d%s damage of throwing blades\n", - L"投掷飞刀时每次精确瞄准的伤害 +%d%s \n",// L"+%d%s damage of throwing blades per aim click\n", - L"未被发现时飞刀的致命一击率 +%d%s\n",// L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n", - L"飞刀致命一击的额外伤害倍率 +%d\n",// L"+%d critical hit by throwing blade multiplier\n", - L"飞刀的最大精瞄次数 +%d\n",// L"Adds %d more aim click for throwing blades\n", - L"飞刀的最大精瞄次数 +%d\n",// L"Adds %d more aim clicks for throwing blades\n", - L"投掷手榴弹所需行动点 -%d%s\n",// L"-%d%s APs needed to throw grenades\n", - L"手榴弹最远投掷距离 +%d%s\n",// L"+%d%s max range when throwing grenades\n", - L"手榴弹的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing grenades\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"黑暗中视距 +%d\n",// L"+%d to effective sight range in dark\n", - L"综合听力范围 +%d\n",// L"+%d to general effective hearing range\n", - L"黑暗中额外听力范围 +%d \n",// L"+%d to effective hearing range in dark on top\n", - L"黑暗中中断率 +%d\n",// L"+%d to interrupts modifier in dark\n", - L"睡眠需求 -%d\n",// L"-%d need to sleep\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"潜行所需行动点 -%d%s\n",// L"-%d%s APs needed to move quietly\n", - L"潜行保持无声的几率 +%d%s\n",// L"+%d%s chance to move quietly\n", - L"隐蔽性 +%d%s (未发现时判定为“隐形”) \n",// L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"移动对隐蔽程度的惩罚 -%d%s\n",// L"Reduced cover penalty for movement by %d%s\n", - L"被敌人中断几率 -%d%s\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"跑、走、蹲走、爬、游泳等动作所需的行动点 -%d%s \n",// L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n", - L"跳跃、游泳、翻墙等动作所消耗的体能 -%d%s\n",// L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"伤害抵抗力 %d%s\n",// L"Has %d%s damage resistance\n", - L"负重上限的有效力量 +%d%s\n",// L"+%d%s effective strength for carrying weight capacity \n", - L"被徒手攻击造成的体力损失 -%d%s\n",// L"Reduced energy lost when hit by HtH attack by %d%s\n", - L"被击中腿部致使倒地所需的伤害阈值 +%d%s \n",// L"Increased damage needed to fall down if hit to legs by %d%s\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"安置的炸弹和地雷的伤害 +%d%s\n",// L"+%d%s damage of set bombs and mines\n", - L"组合炸弹的成功率 +%d%s\n",// L"+%d%s to attaching detonators check\n", - L"安置/拆除炸弹成功率 +%d%s\n",// L"+%d%s to planting/removing bombs check\n", - L"降低敌人发现你的炸弹和地雷的几率(炸弹等级+%d) \n",// L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n", - L"提高定向爆破破门几率(伤害x%d)\n",// L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"训练民兵速度 +%d%s\n",// L"+%d%s bonus to militia training speed\n", - L"训练民兵时领导值加成 +%d%s\n",// L"+%d%s bonus to effective leadership for determining militia training\n", - L"训练其他雇佣兵的效率 +%d%s\n",// L"+%d%s bonus to teaching other mercs\n", - L"训练其他人属性时, 教官自身的该项能力有效值 +%d \n",// L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n", - L"自我锻炼效率 +%d%s\n",// L"+%d%s bonus to train stats through self-practising assignment\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"武器上的瞄准镜有效视距 +%d%s \n",// L"+%d%% to effective sight range with scopes on weapons\n", - L"望远镜和拆卸下来的瞄准镜有效视距 +%d%s \n",// L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", - L"远镜和拆卸下来的瞄准镜的狭隘视野 -%d%s \n",// L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", - L"显示邻近区域敌人的准确数量\n",// L"If in sector, adjacent sectors will show exact number of enemies\n", - L"显示邻近区域敌人的存在\n",// L"If in sector, adjacent sectors will show presence of enemies if any\n", - L"防止敌人偷袭你的队伍\n",// L"Prevents the enemy to ambush your squad\n", - L"防止血猫偷袭你的队伍\n",// L"Prevents the bloodcats to ambush your squad\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"偶尔会通知你在队伍中听到的意见。\n", - L"阻止队员的失常行为(服用药物、酗酒或偷东西)。\n", - L"可以在城镇派发传单。\n", - L"可以在城镇搜集谣言。\n", - L"可以在监狱当卧底。\n", - L"如果士气好的话可以每天为你增加%d声誉。\n", - L"有效听觉范围 +%d。\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = -{ - L"队伍在区域间步行移动的速度 +%d%s \n",// L"+%d%s group travelling speed between sectors if traveling by foot\n", - L"队伍在区域间乘车移动的速度 +%d%s \n",// L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n", - L"区域间移动时体力消耗 -%d%s\n",// L"-%d%s less energy spent for travelling between sectors\n", - L"天气效果惩罚 -%d%s\n",// L"-%d%s weather penalties\n", - L"迷彩涂装退色的速度 -%d%s\n",// L"-%d%s worn out speed of camouflage by water or time\n", - L"能够发现%d格之内的脚印 \n", //L"Can spot tracks up to %d tiles away\n", - - L"疾病抗性 %s%d%%\n",//L" %s%d%% disease resistance\n", - L"食物消耗 %s%d%%\n",//L" %s%d%% food consumption\n", - L"水 消 耗 %s%d%%\n",//L" %s%d%% water consumption\n", - L"回避几率 +%d%%\n", //L"+%d%% snake evasion\n", - L"迷彩涂装效果 +%d%%\n",// L"+%d%s camouflage effectiveness\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"无奖励",// L"No bonuses", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"开锁成功率 +%d%s\n",// L"+%d%s bonus to lockpicking\n", // 0 - L"格斗命中率 +%d%s\n",// L"+%d%s hand to hand chance to hit\n", - L"格斗伤害 +%d%s\n",// L"+%d%s hand to hand damage\n", - L"格斗攻击躲避率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks\n", - L"消除修理和使用电子设备的惩罚(锁、陷阱、遥控引爆器、机器人等)\n",// L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", - L"黑暗中视距 +%d\n",// L"+%d to effective sight range in dark\n", - L"综合听力范围 +%d\n",// L"+%d to general effective hearing range\n", - L"黑暗中额外听力范围 +%d\n",// L"+%d to effective hearing range in dark on top\n", - L"黑暗中中断率 +%d\n",// L"+%d to interrupts modifier in dark\n", - L"睡眠的需求 -%d\n",// L"-%d need to sleep\n", - L"投掷任何物体的最远距离 +%d%s\n",// L"+%d%s max range when throwing anything\n", // 10 - L"投掷任何物体的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing anything\n", - L"未被察觉时飞刀的一击必杀率 +%d%s\n",// L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", - L"训练民兵和其他佣兵的速度 +%d%s\n",// L"+%d%s bonus to militia training and other mercs instructing speed\n", - L"训练民兵时的有效领导能力 +%d%s\n",// L"+%d%s effective leadership for militia training calculations\n", - L"火箭、榴弹和迫击炮的命中率 +%d%s\n",// L"+%d%s chance to hit with rocket/greande launchers and mortar\n", - L"自动/点射模式命中惩罚除以%d\n",// L"Auto fire/burst chance to hit penalty is divided by %d\n", - L"降低浪费子弹的几率\n",// L"Reduced chance for shooting unwanted bullets on autofire\n", - L"潜行保持无声的几率 +%d%s\n",// L"+%d%s chance to move quietly\n", - L"隐蔽性 +%d%s(没被发现判定为“隐身”)\n",// L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"消除双持武器时的命中惩罚\n",// L"Eliminates the CtH penalty when firing two weapons at once\n", // 20 - L"刀具攻击的命中率 +%d%s\n",// L"+%d%s chance to hit with melee blades\n", - L"持刀状态下躲避刀具攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", - L"持其他非刀具物品状态下躲避刀具攻击的几率 +%d%s \n",// L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", - L"持刀状态下躲避格斗攻击的几率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", - L"所有武器的有效射程 -%d%s\n",// L"-%d%s effective range to target with all weapons\n", - L"每次精瞄瞄准加成 +%d%s\n",// L"+%d%s aiming bonus per aim click\n", - L"提供永久的迷彩涂装\n",// L"Provides permanent camouflage\n", - L"格斗命中率 +%d%s\n",// L"+%d%s hand to hand chance to hit\n", - L"格斗伤害 +%d%s\n",// L"+%d%s hand to hand damage\n", - L"空手状态下躲避格斗攻击几率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 - L"非空手状态下躲避格斗攻击几率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", - L"躲避刀具攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attacks by melee blades\n", - L"可向虚弱的敌人施展回旋踢, 造成双倍的格斗伤害 \n",// L"Can perform spinning kick attack on weakened enemies to deal double damage\n", - L"你将得到特别的格斗搏击动画效果\n",// L"You gain special animations for hand to hand combat\n", - L"无奖励",// L"No bonuses", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"优点:无。\n缺点:无。",// L"A: No advantage.\nD: No disadvantage.", - L"优点:身边有多个佣兵时表现最佳。\n缺点:孤单一人时士气不会上升。",// L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", - L"优点:独自行动时表现最好。\n缺点:在团队中士气不会上升。",// L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.", - L"优点:士气上升得快,下降得慢。\n缺点:发现地雷和陷阱的几率降低了。",// L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.", - L"优点:更善于训练民兵和跟别人交流。\n缺点:士气不会因为其他队员的行为而上升。",// L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.", - L"优点:自我锻炼或学习效率略微提高。\n缺点:减少对恐惧和火力压制的承受力。",// L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.", - L"优点:减少一切行动的体能消耗(除了医疗、修理、训练民兵和学习某种技能)。\n缺点:智力、领导能力、爆破、修理和医疗技术提高得慢一些。",// L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", - L"优点:点射/自动模式下命中率,近战杀伤力和消灭敌人所得的期望更高。\n缺点:需要耐心的行为会得到效率惩罚,比如修理、开锁、解除陷阱、医治和训练民兵。",// L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.", - L"优点:需要耐心的工作会得到效率奖励,比如修理、撬锁、解除陷阱、医治和训练民兵。\n缺点:略微降低中断率。",// L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.", - L"优点:增加对火力压制和恐惧的承受力。\n负伤其他佣兵阵亡对他的士气影响的也比较小。\n缺点:容易成为敌人的移动靶。",// L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.", - L"优点:进行非战斗任务时士气会提升(除了训练民兵)。\n缺点:杀人不增加士气。",// L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.", - L"优点:攻击有更高的几率能造成受害者属性值降低,和更严重的创伤,同时提高自己的士气。\n缺点:与其他人交流是个问题,脱离战斗后士气也会快速下沉。",// L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.", - L"优点:附近有异性佣兵时表现更佳。\n缺点:附近所有同性佣兵士气提升得慢。",// L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.", - L"优点:撤退时士气增加。\n缺点:敌众我寡时,会降低士气。", //L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"没有其它附加效果。",// L"No effects.", - L"在热带或沙漠区域,会出现呼吸问题降低综合表现。",// L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.", - L"独自一人时可能会感到恐慌。",// L"Can suffer panic attack if left alone in certain situations.", - L"在封闭空间或地下时会降低综合表现。",// L"His overall performance is reduced if underground.", - L"在游泳时会轻易的溺水。",// L"If trying to swim he can easily drown.", - L"看到大虫子后会六神无主,也会在热带地区降低综合表现。",// L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.", - L"偶尔会忘记手头的任务,也会在战斗中损失些行动点。",// L"Sometimes forgets what orders he got and therefore loses some APs if in combat.", - L"偶尔会发疯并把手里的武器设为自动乱喷。\n如果武器不能自动射击将会打击自身士气。",// L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.", - L"大大减少听力范围。", // L"Drastically reduced hearing.", - L"减少视力范围。", // L"Reduced sight range.", - L"大大增加流血速度。", //L"Drastically increased bleeding.", - L"在房顶作战时会降低战斗力。", //L"Performance suffers while on a rooftop.", - L"时不时自残。", //L"Occasionally harms self.", -}; - -STR16 gzIMPProfileCostText[]= -{ - L"客户您消费$%d。确认并付款?",//L"The profile cost is $%d. Do you authorize the payment?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"你在PROFEX组件被关闭的情况下无法选择新技能系统。请在JA2_Options.ini中检查READ_PROFILE_DATA_FROM_XML设定。", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"你选择了铁人模式。这将会游戏变得相当有挑战性,因为你无法在敌人占据的分区存档。 这个设置会影响游戏的整个进程。你确认你要在铁人模式下进行游戏吗?", - L"你选择了“假铁人”模式,这个设定会稍微加大对游戏的挑战性。因为你不可以在回合制的模式下存档,而且这个设定会在整个游戏过程生效,你确定要在“假铁人”模式下进行游戏?", //L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?", - L"你选择了“真铁人”模式,这个设定会加大游戏的挑战性。因为你只能在每天的%02d:00存档,而且这个设定会在整个游戏的过程生效,你确定要在“真铁人”模式下进行游戏?", //L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?", -}; - -STR16 gzDisplayCoverText[]= -{ - L"隐蔽程度: %d/100 %s, 光亮度: %d/100", - L"武器射程: %d/%d 格, 命中率: %d/100", - L"武器射程: %d/%d 格, 枪口稳定性: %d/100", - L"关闭隐蔽程度显示", - L"显示佣兵的视线", - L"显示佣兵的隐蔽程度", - L"丛林", //wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"城市", - L"沙漠", - L"雪地", - L"树林和沙漠", - L"树林和城市", - L"树林和雪地", - L"沙漠和城市", - L"沙漠和雪地", - L"城市和雪地", - L"-", // yes empty for now - L"覆盖: %d/100, 亮度: %d/100", //L"Cover: %d/100, Brightness: %d/100", - L"步距", //L"Footstep volume", - L"隐蔽难度", //L"Stealth difficulty", - L"陷阱等级", //L"Trap level", -}; - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("CHINESE") + + #ifdef CHINESE + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25ChineseText_public_symbol(void){;} + +#ifdef CHINESE + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + // made this more elegant + L"开锁", //"Lock picking", + L"格斗", //"Hand to hand combat", + L"电子", //"Electronics", + L"夜战", //"Night operations", + L"投掷", //"Throwing", + L"教学", //"Teaching", + L"重武器", //"Heavy Weapons", + L"自动武器", //"Auto Weapons", + L"潜行", //"Stealth", + L"双持", //"Ambidextrous", + L"刀技", //"Knifing", + L"狙击", //"Sniper", + L"伪装", //"Camouflage", + L"武术", //"Martial Arts", + + L"无", //"None", + L"I.M.P 专属技能", //"I.M.P. Specialties", + L"(专家)", + +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"自动武器",// L"Auto Weapons", + L"重武器",// L"Heavy Weapons", + L"神枪手",// L"Marksman", + L"猎兵",// L"Hunter", + L"快枪手",// L"Gunslinger", + L"格斗家",// L"Hand to Hand", + L"班副",// L"Deputy", + L"技师",// L"Technician", + L"救护员",// L"Paramedic", + L"特工",// L"Covert Ops", + + L"无",// L"None", + L"I.M.P 主要特殊技能",// L"I.M.P. Major Traits", + // second names + L"机枪手",// L"Machinegunner", + L"枪炮专家",// L"Bombardier", + L"狙击手",// L"Sniper", + L"游骑兵",// L"Ranger", + L"枪斗术",// L"Gunfighter", + L"武术家",// L"Martial Arts", + L"班长",// L"Squadleader", + L"工兵",// L"Engineer", + L"军医",// L"Doctor", + L"间谍",// L"Spy", +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"双持",// L"Ambidextrous", + L"近战",// L"Melee", + L"投掷",// L"Throwing", + L"夜战",// L"Night Ops", + L"潜行",// L"Stealthy", + L"运动员",// L"Athletics", + L"健身",// L"Bodybuilding", + L"爆破",// L"Demolitions", + L"教学",// L"Teaching", + L"侦察",// L"Scouting", + L"无线电操作员", //L"Radio Operator", + L"向导", //L"Survival", + + L"无",// L"None", + L"I.M.P 副技能",// L"I.M.P. Minor Traits", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"突击步枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Assault Rifles\n", + L"冲锋枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with SMGs\n", + L"轻机枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with LMGs\n", + L"轻机枪射击所需行动点 -%d%s\n",//L"-%d%s APs needed to fire with LMGs\n", + L"端起轻机枪所需行动点 -%d%s\n",//L"-%d%s APs needed to ready light machine guns\n", + L"自动或点射命中率惩罚 -%d%s\n",//L"Auto fire/burst chance to hit penalty is reduced by %d%s\n", + L"降低浪费子弹的几率 \n",//L"Reduced chance for shooting unwanted bullets on autofire\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"发射榴弹所需行动点 -%d%s\n",// L"-%d%s APs needed to fire grenade launchers\n", + L"发射火箭所需行动点 -%d%s\n",// L"-%d%s APs needed to fire rocket launchers\n", + L"榴弹命中率 +%d%s\n",// L"+%d%s chance to hit with grenade launchers\n", + L"火箭命中率 +%d%s\n",// L"+%d%s chance to hit with rocket launchers\n", + L"发射迫击炮所需行动点 -%d%s\n",// L"-%d%s APs needed to fire mortar\n", + L"迫击炮命中率惩罚修正 -%d%s\n",// L"Reduce penalty for mortar CtH by %d%s\n", + L"爆破物, 手榴弹和重武器对坦克的额外伤害 +%d%s\n",// L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", + L"重武器对其他目标的伤害 +%d%s\n",// L"+%d%s damage to other targets with heavy weapons\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"步枪命中率 +%d%s\n", + L"狙击步枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Sniper Rifles\n", + L"所有武器的有效距离 -%d%s\n",// L"-%d%s effective range to target with all weapons\n", + L"每次精确瞄准的加成(手枪除外) +%d%s\n",// L"+%d%s aiming bonus per aim click (except for handguns)\n", + L"+%d%s 精确瞄准伤害",// L"+%d%s damage on shot", + L"加上",// L" plus", + L"在",// L" per every aim click", + L"第一次",// L" after first", + L"第二次",// L" after second", + L"第三次",// L" after third", + L"第四次",// L" after fourth", + L"第五次",// L" after fifth", + L"第六次",// L" after sixth", + L"第七次",// L" after seventh", + L"栓动步枪拉栓所需行动点 -%d%s \n",// L"-%d%s APs needed to chamber a round with bolt-action rifles \n", + L"步枪精确瞄准次数增加1次\n",// L"Adds one more aim click for rifle-type guns\n", + L"步枪精确瞄准次数增加%d次\n",// L"Adds %d more aim clicks for rifle-type guns\n", + L"迅速瞄准:步枪精确瞄准次数加快(即减少)1次\n",//L"Makes aiming faster with rifle-type guns by one aim click\n", + L"迅速瞄准:步枪精确瞄准次数加快(即减少)%d次\n",//L"Makes aiming faster with rifle-type guns by %d aim clicks\n", + L"专注技能:在标记区域内中断率 +%d \n", //L"Focus skill: +%d interrupt modifier in marked area\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"步枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Rifles\n", + L"霰弹枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Shotguns\n", + L"泵动式霰弹上膛所需行动点 -%d%s \n",// L"-%d%s APs needed to pump Shotguns\n", + L"使用散弹枪时行动点 -%d%s\n", //L"-%d%s APs to fire Shotguns\n", + L"使用散弹枪精确瞄准次数增加%d次 \n", //L"Adds %d more aim click for Shotguns\n", + L"使用散弹枪精确瞄准次数增加%d次 \n", //L"Adds %d more aim clicks for Shotguns\n", + L"散弹枪的有效范围 +%d%s\n", //L"+%d%s effective range with Shotguns\n", + L"散弹枪上膛的行动点消耗 -%d%s\n", //L"-%d%s APs to reload single Shotgun shells\n", + L"使用步枪精瞄次数增加%d次\n", //L"Adds %d more aim click for Rifles\n", + L"使用步枪精瞄次数增加%d次\n", //L"Adds %d more aim clicks for Rifles\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"发射手枪、左轮所需行动点 -%d%s\n",// L"-%d%s APs needed to fire with pistols and revolvers\n", + L"手枪、左轮的有效射程 +%d%s\n",// L"+%d%s effective range with pistols and revolvers\n", + L"手枪、左轮的命中率 +%d%s\n",// L"+%d%s chance to hit with pistols and revolvers\n", + L"冲锋手枪的命中率 +%d%s",// L"+%d%s chance to hit with machine pistols", + L"(只限单发)",// L" (on single shots only)", + L"手枪、左轮和冲锋手枪每次精确瞄准的加成 +%d%s \n",// L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", + L"手枪和左轮抬枪瞄准所需行动点 -%d%s\n",// L"-%d%s APs needed to raise pistols and revolvers\n", + 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"可以掰击锤来发射左轮枪\n", //L"Can fan the hammer with revolvers\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= +{ + L"格斗攻击所需行动点 -%d%s(空手或戴铜指套) \n",// L"-%d%s AP cost of hand to hand attacks (bare hands or with brass knuckles)\n", + L"格斗命中率 +%d%s\n",// L"+%d%s chance to hit with hand to hand attacks with bare hands\n", + L"铜指套命中率 +%d%s\n",// L"+%d%s chance to hit with hand to hand attacks with brass knuckles\n", + L"格斗攻击伤害 +%d%s(空手或戴指拳套)\n",// L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"格斗攻击的体力伤害 +%d%s(空手或戴指拳套) \n",// L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"被你徒手击倒的敌人要喘息片刻才能站起来 \n",// L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", + L"被你徒手击倒的敌人要休息片刻才能回过神来 \n",// L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", + L"被你徒手击倒的敌人要一泡尿的功夫才能爬起来 \n",// L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", + L"被你徒手击倒的敌人要一盏茶的功夫才能恢复知觉 \n",// L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", + L"被你徒手击倒的敌人要一顿饭的功夫才能清醒过来 \n",// L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", + L"被你徒手击倒的敌人要昏迷上几个小时\n",// L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", + L"被你徒手击倒的敌人下半辈子就是植物人\n",// L"Enemy knocked out due to your HtH attacks probably never stand up\n", + L"格斗攻击精确瞄准后造成伤害 +%d%s\n",// L"Focused (aimed) punch deals +%d%s more damage\n", + L"独门腿功造成伤害 +%d%s\n",// L"Your special spinning kick deals +%d%s more damage\n", + L"躲避格斗攻击的几率 +%d%s\n",// L"+%d%s change to dodge hand to hand attacks\n", + L"空手状态下获得额外的躲避几率 +%d%s",// L"+%d%s on top chance to dodge HtH attacks with bare hands", + L"或只戴指拳套",// L" or brass knuckles", + L"(戴铜指套时 +%d%s)",// L" (+%d%s with brass knuckles)", + L"戴铜指套时获得额外的躲避几率 +%d%s\n",// L"+%d%s on top chance to dodge HtH attacks with brass knuckles\n", + L"躲避冷兵器攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attacks by any melee weapon\n", + L"从敌人手里夺枪所需行动点 -%d%s\n",// L"-%d%s APs needed to steal weapon from enemy hands\n", + L"站立、下蹲、卧倒、转身、爬上爬下和越过障碍所需行动点 -%d%s\n",// L"-%d%s APs needed to change state (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", + L"站立、下蹲和卧倒所需行动点 -%d%s\n",// L"-%d%s APs needed to change state (stand, crouch, lie down)\n", + L"转身所需行动点 -%d%s\n",// L"-%d%s APs needed to turn around\n", + L"上/下房顶所需行动点 -%d%s\n",// L"-%d%s APs needed to climb on/off roof and jump obstacles\n", + L"踢门成功率 +%d%s\n",// L"+%d%s chance to kick doors\n", + L"你的格斗攻击将有特殊的动画效果 \n",// L"You gain special animations for hand to hand combat\n", + L"移动时被中断的几率降低 -%d%s\n", // L"-%d%s chance to be interrupted when moving\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"所在区域内雇佣兵的最大行动点 +%d%s \n",// L"+%d%s APs per round of other mercs in vicinity\n", + L"+%d等级,所在区域雇佣兵等级高于%s \n",//(程序参数问题只能用这个语序) L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", + L"+%d等级,所在区域雇佣兵火力压制奖励 \n",//(程序参数问题只能用这个语序) L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", + L"+%d%s 所在区域内雇佣兵和%s最高火力压制承受力 \n",//(程序参数问题只能用这个语序) L"+%d%s total suppression tolerance of other mercs in vicinity and %s himself\n", + L"所在区域内雇佣兵的士气增加速度 +%d \n",// L"+%d morale gain of other mercs in vicinity\n", + L"所在区域内雇佣兵的士气降低速度 -%d \n",// L"-%d morale loss of other mercs in vicinity\n", + L"奖励范围是%d格",// L"The vicinity for bonuses is %d tiles", + L"(装备电子耳机后奖励范围增加到%d格)",// L" (%d tiles with extended ears)", + L"(叠加效果最多是%d次)\n",// L"(Max simultaneous bonuses for one soldier is %d)\n", + L"+%d%s %s的恐惧抵抗力 \n",// (程序参数问题只能用这个语序) L"+%d%s fear resistence of %s\n", + L"缺陷: 会给其他人造成%d倍的士气下降,如果%s阵亡的话 \n",//(程序参数问题只能用这个语序) L"Drawback: %dx morale loss for %s's death for all other mercs\n", + L"触发小队集体中断几率 +%d%s \n", // L"+%d%s chance to trigger collective interrupts\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"维修速度 +%d%s \n",// L"+%d%s to repairing speed\n", + L"开锁成功率 +%d%s(普通/电子锁)\n",// L"+%d%s to lockpicking (normal/electronic locks)\n", + L"电子陷阱解除几率 +%d%s\n",// L"+%d%s to disarming electronic traps\n", + L"组装物品和组合特殊物品成功率 +%d%s\n",// L"+%d%s to attaching special items and combining things\n", + L"战斗中排除枪械故障的成功率 +%d%s\n",// L"+%d%s to unjamming a gun in combat\n", + L"修理电子物品的惩罚 -%d%s\n",// L"Reduce penalty to repair electronic items by %d%s\n", + L"增加发现陷阱和地雷的几率(洞察等级 +%d) \n",// L"Increased chance to detect traps and mines (+%d detect level)\n", + L"机器人命中率 +%d%s(由%s控制时) \n",//(翻译注:程序参数问题只能用这个语序) L"+%d%s CtH of robot controlled by the %s\n", + L"只有%s可以修理机器人\n",// L"%s trait grants you the ability to repair the robot\n", + L"修理机器人的速度惩罚 -%d%s\n",// L"Reduced penalty to repair speed of the robot by %d%s\n", + L"可以将物品修复到100%%的状态\n", //L"Able to restore item threshold to 100%% during repair\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"使用医疗包进行包扎时可以给伤者进行手术 \n",// L"Has ability to make surgical intervention by using medical bag on wounded soldier\n", + L"手术会立即回复受损生命值的%d%s",// L"Surgery instantly returns %d%s of lost health back.", + L"(同时大量消耗医疗包)",// L" (This drains the medical bag a lot.)", + L"可治疗致命一击造成损失的属性点, 通过",// L"Can heal lost stats (from critical hits) by the", + L"手术",// L" surgery or", + L"或指派医生治疗 \n",// L" doctor assignment.\n", + L"疗伤效率 +%d%s\n",// L"+%d%s effectiveness on doctor-patient assignment\n", + L"包扎速度 +%d%s\n",// L"+%d%s bandaging speed\n", + L"所在区域自然回复生命值速度 +%d%s",// L"+%d%s natural regeneration speed of all soldiers in the same sector", + L"(这种效果最多叠加%d次)",// L" (max %d these bonuses per sector)", + L"使用血袋时,可以额外恢复%d%s的生命值。\n", //L"Returned health can be boosted an additional %d%s by using blood bags.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"可在敌后伪装成市民或敌军士兵 \n",//L"Can disguise as a civilian or soldier to slip behind enemy lines.\n", + L"以下情况会暴露身份:可疑动作、可疑装备或者接近新鲜尸体 \n",//L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", + L"在靠近敌人%d格内伪装成士兵会被自动发现而暴露 \n",//L"Will automatically be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", + L"在靠近尸体%d格内伪装成士兵会被自动发现而暴露 \n",//L"Will automatically be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", + L"伪装状态下使用近战武器攻击时,命中率增加 +%d%s \n",//L"+%d%s CTH with covert melee weapons\n", + L"伪装状态下使用近战武器攻击时,秒杀几率增加 +%d%s \n",//L"+%d%s chance of instakill with covert melee weapons\n", + L"伪装动作消耗的行动点 -%d%s \n",//L"Disguise AP cost lowered by %d%s.\n", + L"能够说服敌军士兵成为我方卧底。\n", //L"Can convince enemy soldiers to secretly change sides.\n", TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= +{ + L"可以使用通讯设备 \n", //L"Can use communications equipment\n", + L"可以呼叫临区盟友进行火炮攻击 \n", //L"Can call in artillery strikes from allies in neighbouring sectors.\n", + L"可以通过通讯频率扫描任务定位敌军巡逻队 \n", //L"Via Frequency Scan assignment, enemy patrols can be located.\n", + L"可以在分区范围内干扰通讯设备 \n", //L"Communications can be jammed sector-wide.\n", + L"如果通讯受到干扰,操作员可以扫描到那个干扰设备 \n", //L"If communications are jammed, an operator can scan for the jamming device.\n", + L"可以呼叫临区军队进行支援 \n", //L"Can call in militia reinforcements from neighbouring sectors.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"无奖励",// L"No bonuses", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"副手有装备时命中率惩罚 -%d%s \n", //L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", + L"弹匣类武器装填速度 +%d%s\n",// L"+%d%s speed of reloading guns with magazines\n", + L"零散弹药装填速度 +%d%s\n",// L"+%d%s speed of reloading guns with loose rounds\n", + L"拾物品所需行动点 -%d%s\n",// L"-%d%s APs needed to pickup items\n", + L"使用大背包所需行动点 -%d%s\n",// L"-%d%s APs needed to work backpack\n", + L"开门或关门所需行动点 -%d%s\n",// L"-%d%s APs needed to handle doors\n", + L"安置/拆除炸弹和地雷所需行动点 -%d%s \n",// L"-%d%s APs needed to plant/remove bombs and mines\n", + L"组装物品所需行动点 -%d%s\n",// L"-%d%s APs needed to attach items\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"刀具攻击所需行动点 -%d%s\n",// L"-%d%s APs needed to attack by blades\n", + L"刀具命中率 +%d%s\n",// L"+%d%s chance to hit with blades\n", + L"钝器命中率 +%d%s\n",// L"+%d%s chance to hit with blunt melee weapons\n", + L"刀具的杀伤力 +%d%s\n",// L"+%d%s damage of blades\n", + L"钝器的杀伤力 +%d%s\n",// L"+%d%s damage of blunt melee weapons\n", + L"近战武器精确瞄准后攻击伤害 +%d%s \n",// L"Aimed attack by any melee weapon deals +%d%s damage\n", + L"躲避刀具攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attack by melee blades\n", + L"持刀状态下额外刀具攻击的几率 +%d%s \n",// L"+%d%s on top chance to dodge melee blades if having a blade in hands\n", + L"躲避钝器攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attack by blunt melee weapons\n", + L"持刀状态下额外躲避钝器攻击的几率 +%d%s \n",// L"+%d%s on top chance to dodge blunt melee weapons if having a blade in hands\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"投掷飞刀所需基础行动点 -%d%s\n",// L"-%d%s basic APs needed to throw blades\n", + L"飞刀的投掷最远距离 +%d%s\n",// L"+%d%s max range when throwing blades\n", + L"飞刀的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing blades\n", + L"投掷飞刀时每次精确瞄准的命中率 +%d%s \n",// L"+%d%s chance to hit when throwing blades per aim click\n", + L"飞刀的伤害 +%d%s\n",// L"+%d%s damage of throwing blades\n", + L"投掷飞刀时每次精确瞄准的伤害 +%d%s \n",// L"+%d%s damage of throwing blades per aim click\n", + L"未被发现时飞刀的致命一击率 +%d%s\n",// L"+%d%s chance to inflict critical hit by throwing blade if not seen or heard\n", + L"飞刀致命一击的额外伤害倍率 +%d\n",// L"+%d critical hit by throwing blade multiplier\n", + L"飞刀的最大精瞄次数 +%d\n",// L"Adds %d more aim click for throwing blades\n", + L"飞刀的最大精瞄次数 +%d\n",// L"Adds %d more aim clicks for throwing blades\n", + L"投掷手榴弹所需行动点 -%d%s\n",// L"-%d%s APs needed to throw grenades\n", + L"手榴弹最远投掷距离 +%d%s\n",// L"+%d%s max range when throwing grenades\n", + L"手榴弹的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing grenades\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"黑暗中视距 +%d\n",// L"+%d to effective sight range in dark\n", + L"综合听力范围 +%d\n",// L"+%d to general effective hearing range\n", + L"黑暗中额外听力范围 +%d \n",// L"+%d to effective hearing range in dark on top\n", + L"黑暗中中断率 +%d\n",// L"+%d to interrupts modifier in dark\n", + L"睡眠需求 -%d\n",// L"-%d need to sleep\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"潜行所需行动点 -%d%s\n",// L"-%d%s APs needed to move quietly\n", + L"潜行保持无声的几率 +%d%s\n",// L"+%d%s chance to move quietly\n", + L"隐蔽性 +%d%s (未发现时判定为“隐形”) \n",// L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"移动对隐蔽程度的惩罚 -%d%s\n",// L"Reduced cover penalty for movement by %d%s\n", + L"被敌人中断几率 -%d%s\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"跑、走、蹲走、爬、游泳等动作所需的行动点 -%d%s \n",// L"-%d%s APs needed for moving (running, walking, swatting, crawling, swimming, etc.)\n", + L"跳跃、游泳、翻墙等动作所消耗的体能 -%d%s\n",// L"-%d%s energy spent for movement, roof-climbing, obstacle-jumping, swimming, etc.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"伤害抵抗力 %d%s\n",// L"Has %d%s damage resistance\n", + L"负重上限的有效力量 +%d%s\n",// L"+%d%s effective strength for carrying weight capacity \n", + L"被徒手攻击造成的体力损失 -%d%s\n",// L"Reduced energy lost when hit by HtH attack by %d%s\n", + L"被击中腿部致使倒地所需的伤害阈值 +%d%s \n",// L"Increased damage needed to fall down if hit to legs by %d%s\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"安置的炸弹和地雷的伤害 +%d%s\n",// L"+%d%s damage of set bombs and mines\n", + L"组合炸弹的成功率 +%d%s\n",// L"+%d%s to attaching detonators check\n", + L"安置/拆除炸弹成功率 +%d%s\n",// L"+%d%s to planting/removing bombs check\n", + L"降低敌人发现你的炸弹和地雷的几率(炸弹等级+%d) \n",// L"Decreases chance enemy will detect your bombs and mines (+%d bomb level)\n", + L"提高定向爆破破门几率(伤害x%d)\n",// L"Increased chance shaped charge will open the doors (damage multiplied by %d)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"训练民兵速度 +%d%s\n",// L"+%d%s bonus to militia training speed\n", + L"训练民兵时领导值加成 +%d%s\n",// L"+%d%s bonus to effective leadership for determining militia training\n", + L"训练其他雇佣兵的效率 +%d%s\n",// L"+%d%s bonus to teaching other mercs\n", + L"训练其他人属性时, 教官自身的该项能力有效值 +%d \n",// L"Skill value counts to be +%d higher for being able to teach this skill to other mercs\n", + L"自我锻炼效率 +%d%s\n",// L"+%d%s bonus to train stats through self-practising assignment\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"武器上的瞄准镜有效视距 +%d%s \n",// L"+%d%% to effective sight range with scopes on weapons\n", + L"望远镜和拆卸下来的瞄准镜有效视距 +%d%s \n",// L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", + L"远镜和拆卸下来的瞄准镜的狭隘视野 -%d%s \n",// L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", + L"显示邻近区域敌人的准确数量\n",// L"If in sector, adjacent sectors will show exact number of enemies\n", + L"显示邻近区域敌人的存在\n",// L"If in sector, adjacent sectors will show presence of enemies if any\n", + L"防止敌人偷袭你的队伍\n",// L"Prevents the enemy to ambush your squad\n", + L"防止血猫偷袭你的队伍\n",// L"Prevents the bloodcats to ambush your squad\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"偶尔会通知你在队伍中听到的意见。\n", + L"阻止队员的失常行为(服用药物、酗酒或偷东西)。\n", + L"可以在城镇派发传单。\n", + L"可以在城镇搜集谣言。\n", + L"可以在监狱当卧底。\n", + L"如果士气好的话可以每天为你增加%d声誉。\n", + L"有效听觉范围 +%d。\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = +{ + L"队伍在区域间步行移动的速度 +%d%s \n",// L"+%d%s group travelling speed between sectors if traveling by foot\n", + L"队伍在区域间乘车移动的速度 +%d%s \n",// L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n", + L"区域间移动时体力消耗 -%d%s\n",// L"-%d%s less energy spent for travelling between sectors\n", + L"天气效果惩罚 -%d%s\n",// L"-%d%s weather penalties\n", + L"迷彩涂装退色的速度 -%d%s\n",// L"-%d%s worn out speed of camouflage by water or time\n", + L"能够发现%d格之内的脚印 \n", //L"Can spot tracks up to %d tiles away\n", + + L"疾病抗性 %s%d%%\n",//L" %s%d%% disease resistance\n", + L"食物消耗 %s%d%%\n",//L" %s%d%% food consumption\n", + L"水 消 耗 %s%d%%\n",//L" %s%d%% water consumption\n", + L"回避几率 +%d%%\n", //L"+%d%% snake evasion\n", + L"迷彩涂装效果 +%d%%\n",// L"+%d%s camouflage effectiveness\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"无奖励",// L"No bonuses", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"开锁成功率 +%d%s\n",// L"+%d%s bonus to lockpicking\n", // 0 + L"格斗命中率 +%d%s\n",// L"+%d%s hand to hand chance to hit\n", + L"格斗伤害 +%d%s\n",// L"+%d%s hand to hand damage\n", + L"格斗攻击躲避率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks\n", + L"消除修理和使用电子设备的惩罚(锁、陷阱、遥控引爆器、机器人等)\n",// L"Eliminates the penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", + L"黑暗中视距 +%d\n",// L"+%d to effective sight range in dark\n", + L"综合听力范围 +%d\n",// L"+%d to general effective hearing range\n", + L"黑暗中额外听力范围 +%d\n",// L"+%d to effective hearing range in dark on top\n", + L"黑暗中中断率 +%d\n",// L"+%d to interrupts modifier in dark\n", + L"睡眠的需求 -%d\n",// L"-%d need to sleep\n", + L"投掷任何物体的最远距离 +%d%s\n",// L"+%d%s max range when throwing anything\n", // 10 + L"投掷任何物体的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing anything\n", + L"未被察觉时飞刀的一击必杀率 +%d%s\n",// L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", + L"训练民兵和其他佣兵的速度 +%d%s\n",// L"+%d%s bonus to militia training and other mercs instructing speed\n", + L"训练民兵时的有效领导能力 +%d%s\n",// L"+%d%s effective leadership for militia training calculations\n", + L"火箭、榴弹和迫击炮的命中率 +%d%s\n",// L"+%d%s chance to hit with rocket/greande launchers and mortar\n", + L"自动/点射模式命中惩罚除以%d\n",// L"Auto fire/burst chance to hit penalty is divided by %d\n", + L"降低浪费子弹的几率\n",// L"Reduced chance for shooting unwanted bullets on autofire\n", + L"潜行保持无声的几率 +%d%s\n",// L"+%d%s chance to move quietly\n", + L"隐蔽性 +%d%s(没被发现判定为“隐身”)\n",// L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"消除双持武器时的命中惩罚\n",// L"Eliminates the CtH penalty when firing two weapons at once\n", // 20 + L"刀具攻击的命中率 +%d%s\n",// L"+%d%s chance to hit with melee blades\n", + L"持刀状态下躲避刀具攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", + L"持其他非刀具物品状态下躲避刀具攻击的几率 +%d%s \n",// L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", + L"持刀状态下躲避格斗攻击的几率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", + L"所有武器的有效射程 -%d%s\n",// L"-%d%s effective range to target with all weapons\n", + L"每次精瞄瞄准加成 +%d%s\n",// L"+%d%s aiming bonus per aim click\n", + L"提供永久的迷彩涂装\n",// L"Provides permanent camouflage\n", + L"格斗命中率 +%d%s\n",// L"+%d%s hand to hand chance to hit\n", + L"格斗伤害 +%d%s\n",// L"+%d%s hand to hand damage\n", + L"空手状态下躲避格斗攻击几率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 + L"非空手状态下躲避格斗攻击几率 +%d%s\n",// L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", + L"躲避刀具攻击的几率 +%d%s\n",// L"+%d%s chance to dodge attacks by melee blades\n", + L"可向虚弱的敌人施展回旋踢, 造成双倍的格斗伤害 \n",// L"Can perform spinning kick attack on weakened enemies to deal double damage\n", + L"你将得到特别的格斗搏击动画效果\n",// L"You gain special animations for hand to hand combat\n", + L"无奖励",// L"No bonuses", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"优点:无。\n缺点:无。",// L"A: No advantage.\nD: No disadvantage.", + L"优点:身边有多个佣兵时表现最佳。\n缺点:孤单一人时士气不会上升。",// L"A: Has better performance when couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", + L"优点:独自行动时表现最好。\n缺点:在团队中士气不会上升。",// L"A: Has better performance when no other merc is nearby.\nD: Gains no morale when in a group.", + L"优点:士气上升得快,下降得慢。\n缺点:发现地雷和陷阱的几率降低了。",// L"A: His morale sinks a little slower and grows faster than normal.\nD: Has lesser chance to detect traps and mines.", + L"优点:更善于训练民兵和跟别人交流。\n缺点:士气不会因为其他队员的行为而上升。",// L"A: Has bonus on training militia and is better at communication with people.\nD: Gains no morale for actions of other mercs.", + L"优点:自我锻炼或学习效率略微提高。\n缺点:减少对恐惧和火力压制的承受力。",// L"A: Slightly faster learning when assigned on practicing or as a student.\nD: Has lesser suppression and fear resistance.", + L"优点:减少一切行动的体能消耗(除了医疗、修理、训练民兵和学习某种技能)。\n缺点:智力、领导能力、爆破、修理和医疗技术提高得慢一些。",// L"A: His energy goes down a bit slower except on assignments as doctor, repairman, militia trainer or if learning certain skills.\nD: His wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", + L"优点:点射/自动模式下命中率,近战杀伤力和消灭敌人所得的期望更高。\n缺点:需要耐心的行为会得到效率惩罚,比如修理、开锁、解除陷阱、医治和训练民兵。",// L"A: Has slightly better chance to hit on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Has penalty for actions which needs patience like repairing items, picking locks, removing traps, doctoring, training militia.", + L"优点:需要耐心的工作会得到效率奖励,比如修理、撬锁、解除陷阱、医治和训练民兵。\n缺点:略微降低中断率。",// L"A: Has bonus for actions which needs patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: His interrupts chance is slightly lowered.", + L"优点:增加对火力压制和恐惧的承受力。\n负伤其他佣兵阵亡对他的士气影响的也比较小。\n缺点:容易成为敌人的移动靶。",// L"A: Incresed resistance to suppression and fear.\n Morale loss for taking damage and companions deaths is lower for him.\nD: Can be hit easier and enemy penalty for moving target is lesser in his case.", + L"优点:进行非战斗任务时士气会提升(除了训练民兵)。\n缺点:杀人不增加士气。",// L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.", + L"优点:攻击有更高的几率能造成受害者属性值降低,和更严重的创伤,同时提高自己的士气。\n缺点:与其他人交流是个问题,脱离战斗后士气也会快速下沉。",// L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.", + L"优点:附近有异性佣兵时表现更佳。\n缺点:附近所有同性佣兵士气提升得慢。",// L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.", + L"优点:撤退时士气增加。\n缺点:敌众我寡时,会降低士气。", //L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"没有其它附加效果。",// L"No effects.", + L"在热带或沙漠区域,会出现呼吸问题降低综合表现。",// L"Has problems with breathing and reduced overall performance if in tropical or desert sectors.", + L"独自一人时可能会感到恐慌。",// L"Can suffer panic attack if left alone in certain situations.", + L"在封闭空间或地下时会降低综合表现。",// L"His overall performance is reduced if underground.", + L"在游泳时会轻易的溺水。",// L"If trying to swim he can easily drown.", + L"看到大虫子后会六神无主,也会在热带地区降低综合表现。",// L"A look at large insects can make a big problems\nand being in tropical sectors also reduce his performance a bit.", + L"偶尔会忘记手头的任务,也会在战斗中损失些行动点。",// L"Sometimes forgets what orders he got and therefore loses some APs if in combat.", + L"偶尔会发疯并把手里的武器设为自动乱喷。\n如果武器不能自动射击将会打击自身士气。",// L"He can go psycho and shoot like mad once per a while\nand can lose morale if unable to do that with given weapon.", + L"大大减少听力范围。", // L"Drastically reduced hearing.", + L"减少视力范围。", // L"Reduced sight range.", + L"大大增加流血速度。", //L"Drastically increased bleeding.", + L"在房顶作战时会降低战斗力。", //L"Performance suffers while on a rooftop.", + L"时不时自残。", //L"Occasionally harms self.", +}; + +STR16 gzIMPProfileCostText[]= +{ + L"客户您消费$%d。确认并付款?",//L"The profile cost is $%d. Do you authorize the payment?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"你在PROFEX组件被关闭的情况下无法选择新技能系统。请在JA2_Options.ini中检查READ_PROFILE_DATA_FROM_XML设定。", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"你选择了铁人模式。这将会游戏变得相当有挑战性,因为你无法在敌人占据的分区存档。 这个设置会影响游戏的整个进程。你确认你要在铁人模式下进行游戏吗?", + L"你选择了“假铁人”模式,这个设定会稍微加大对游戏的挑战性。因为你不可以在回合制的模式下存档,而且这个设定会在整个游戏过程生效,你确定要在“假铁人”模式下进行游戏?", //L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?", + L"你选择了“真铁人”模式,这个设定会加大游戏的挑战性。因为你只能在每天的%02d:00存档,而且这个设定会在整个游戏的过程生效,你确定要在“真铁人”模式下进行游戏?", //L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?", +}; + +STR16 gzDisplayCoverText[]= +{ + L"隐蔽程度: %d/100 %s, 光亮度: %d/100", + L"武器射程: %d/%d 格, 命中率: %d/100", + L"武器射程: %d/%d 格, 枪口稳定性: %d/100", + L"关闭隐蔽程度显示", + L"显示佣兵的视线", + L"显示佣兵的隐蔽程度", + L"丛林", //wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"城市", + L"沙漠", + L"雪地", + L"树林和沙漠", + L"树林和城市", + L"树林和雪地", + L"沙漠和城市", + L"沙漠和雪地", + L"城市和雪地", + L"-", // yes empty for now + L"覆盖: %d/100, 亮度: %d/100", //L"Cover: %d/100, Brightness: %d/100", + L"步距", //L"Footstep volume", + L"隐蔽难度", //L"Stealth difficulty", + L"陷阱等级", //L"Trap level", +}; + +#endif diff --git a/i18n/_Ja25DutchText.cpp b/i18n/_Ja25DutchText.cpp index 33b81428..16a40dfe 100644 --- a/i18n/_Ja25DutchText.cpp +++ b/i18n/_Ja25DutchText.cpp @@ -1,530 +1,530 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("DUTCH") - - #ifdef DUTCH - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25DutchText_public_symbol(void){;} - -#ifdef DUTCH - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - // made this more elegant - L"Lock Picking", - L"Hand to Hand", - L"Electronics", - L"Night Operations", - L"Throwing", - L"Teaching", - L"Heavy Weapons", - L"Auto Weapons", - L"Stealth", - L"Ambidextrous", - L"Knifing", - L"Sniper", - L"Camouflaged", - L"Martial Arts", - - L"None", - L"I.M.P. Specialties", - L"(Expert)", - -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Auto Weapons", - L"Heavy Weapons", - L"Marksman", - L"Hunter", - L"Gunslinger", - L"Hand to Hand", - L"Deputy", - L"Technician", - L"Paramedic", - L"Covert Ops", // TODO.Translate - - L"None", - L"I.M.P. Major Traits", - // second names - L"Machinegunner", - L"Bombardier", - L"Sniper", - L"Ranger", - L"Gunfighter", - L"Martial Arts", - L"Squadleader", - L"Engineer", - L"Doctor", - L"Spy", // TODO.Translate -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Ambidextrous", - L"Melee", - L"Throwing", - L"Night Ops", - L"Stealthy", - L"Athletics", - L"Bodybuilding", - L"Demolitions", - L"Teaching", - L"Scouting", - L"Radio Operator", - L"Survival", //TODO.Translate - - L"None", - L"I.M.P. Minor Traits", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s CtH with Assault Rifles\n", - L"+%d%s CtH with SMGs\n", - L"+%d%s CtH with LMGs\n", - L"-%d%s APs to fire LMGs on autofire or burst mode\n", - L"-%d%s APs to ready LMGs\n", - L"Auto fire/burst CtH penalty reduced by %d%s\n", - L"Reduced chance for shooting extra bullets on autofire\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s APs to fire grenade launchers\n", - L"-%d%s APs to fire rocket launchers\n", - L"+%d%s CtH with grenade launchers\n", - L"+%d%s CtH with rocket launchers\n", - L"-%d%s APs to fire mortar\n", - L"Reduced penalty for mortar CtH by %d%s\n", - L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", - L"+%d%s damage to other targets with heavy weapons\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Sniper Rifles\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click (except for handguns)\n", - L"+%d%s damage on shot", - L" plus", - L" per every aim click", - L" after first", - L" after second", - L" after third", - L" after fourth", - L" after fifth", - L" after sixth", - L" after seventh", - L"-%d%s APs to chamber a round with bolt-action rifles \n", - L"Adds one more aim click for rifle-type guns\n", - L"Adds %d more aim clicks for rifle-type guns\n", - L"Makes aiming faster with rifle-type guns by one aim click\n", - L"Makes aiming faster with rifle-type guns by %d aim clicks\n", - L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Shotguns\n", - L"-%d%s APs needed to pump Shotguns\n", - L"-%d%s APs to fire Shotguns\n", - L"Adds %d more aim click for Shotguns\n", - L"Adds %d more aim clicks for Shotguns\n", - L"+%d%s effective range with Shotguns\n", - L"-%d%s APs to reload single Shotgun shells\n", - L"Adds %d more aim click for Rifles\n", - L"Adds %d more aim clicks for Rifles\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s APs to fire with pistols and revolvers\n", - L"+%d%s effective range with pistols and revolvers\n", - L"+%d%s CtH with pistols and revolvers\n", - L"+%d%s CtH with machine pistols", - L" (on single shots only)", - L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", - L"-%d%s APs to ready pistols and revolvers\n", - 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[]= -{ - L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s CtH with hand to hand attacks with bare hands\n", - L"+%d%s CtH with hand to hand attacks with brass knuckles\n", - L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", - L"Enemy knocked out due to your HtH attacks probably never stand up\n", - L"Focused (aimed) punch deals +%d%s more damage\n", - L"Special spinning kick deals +%d%s more damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"+%d%s additional chance to dodge HtH attacks with bare hands", - L" or brass knuckles", - L" (+%d%s with brass knuckles)", - L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", - L"+%d%s chance to dodge attacks by any melee weapon\n", - L"-%d%s APs to steal weapon from enemy hands\n", - L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", - L"-%d%s APs to change stance (stand, crouch, lie down)\n", - L"-%d%s APs to turn around\n", - L"-%d%s APs to climb on/off roof and jump obstacles\n", - L"+%d%s chance to kick open doors\n", - L"Gains special animations for hand to hand combat\n", - L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s APs per round of other mercs in vicinity\n", - L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", - L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", - L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", - L"+%d morale gain for other mercs in the vicinity\n", - L"-%d morale loss for other mercs in the vicinity\n", - L"The vicinity for bonuses is %d tiles", - L" (%d tiles with extended ears)", - L"(Max simultaneous bonuses for one soldier is %d)\n", - L"+%d%s fear resistence of %s\n", - L"Drawback: %dx morale loss for %s's death for all other mercs\n", - L"+%d%s chance to trigger collective interrupts\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s to repair speed\n", - L"+%d%s to lockpick (normal/electronic locks)\n", - L"+%d%s to disarm electronic traps\n", - L"+%d%s to attach special items and combining things\n", - L"+%d%s to unjamm a gun in combat\n", - L"Reduced penalty to repair electronic items by %d%s\n", - L"Increased chance to detect traps and mines (+%d detect level)\n", - L"+%d%s robot's CtH controlled by the %s\n", - L"%s trait grants ability to repair the robot\n", - L"Reduced penalty to repair speed of the robot by %d%s\n", - L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"Able to use medical bag to perform surgical intervention on wounded soldier\n", - L"Surgery instantly returns %d%s of lost health back.", - L" (This will deplete the medical bag.)", - L"Able to heal lost stats (from critical hits) by", - L" surgery or", - L" doctor assignment.\n", - L"+%d%s effectiveness on doctor-patient assignment\n", - L"+%d%s bandaging speed\n", - L"+%d%s natural regeneration speed for all soldiers in the same sector", - L" (max %d of these bonuses per sector stack)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", - L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", - L"+%d%s CtH with covert melee weapons\n", - L"+%d%s chance of instakill with covert melee weapons\n", - L"Disguise AP cost lowered by %d%s.\n", - L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= // TODO.Translate -{ - L"Can use communications equipment.\n", - L"Can call in artillery strikes from allies in neighbouring sectors.\n", - L"Via Frequency Scan assignment, enemy patrols can be located.\n", - L"Communications can be jammed sector-wide.\n", - L"If communications are jammed, an operator can scan for the jamming device.\n", - L"Can call in militia reinforcements from neighbouring sectors.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate - L"+%d%s speed on reloading guns with magazines\n", - L"+%d%s speed on reloading guns with loose rounds\n", - L"-%d%s APs to pickup items\n", - L"-%d%s APs to work backpack\n", - L"-%d%s APs to handle doors\n", - L"-%d%s APs to plant/remove bombs and mines\n", - L"-%d%s APs to attach items\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s APs to attack with blades\n", - L"+%d%s CtH with blades\n", - L"+%d%s CtH with blunt melee weapons\n", - L"+%d%s damage with blades\n", - L"+%d%s damage with blunt melee weapons\n", - L"Aimed attack with any melee weapon deals +%d%s damage\n", - L"+%d%s chance to dodge attack from melee blades\n", - L"+%d%s additional chance to dodge melee blades if holding a blade\n", - L"+%d%s chance to dodge attack from blunt melee weapons\n", - L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s basic APs to throw blades\n", - L"+%d%s max range when throwing blades\n", - L"+%d%s CtH when throwing blades\n", - L"+%d%s CtH when throwing blades per aim click\n", - L"+%d%s damage with throwing blades\n", - L"+%d%s damage with throwing blades per aim click\n", - L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", - L"+%d critical hit with throwing blade multiplier\n", - L"Adds %d more aim click for throwing blades\n", - L"Adds %d more aim clicks for throwing blades\n", - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d additional hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s APs to move quietly\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Reduced cover penalty for movement by %d%s\n", - L"-%d%s chance to be interrupted\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", - L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"%d%s damage resistance\n", - L"+%d%s effective strength for carrying weight capacity\n", - L"Reduced energy lost when hit by HtH attack by %d%s\n", - L"Increased damage needed to fall down by %d%s if hit on legs\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s damage for set bombs and mines\n", - L"+%d%s to attaching detonators check\n", - L"+%d%s to planting/removing bombs check\n", - L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", - L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"+%d%s bonus to militia training speed\n", - L"+%d%s bonus to effective leadership for determining militia training\n", - L"+%d%s bonus to teach other mercs\n", - L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", - L"+%d%s bonus to train stats through self-practice assignment\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% to effective sight range with scopes on weapons\n", - L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", - L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", - L"If in sector, adjacent sectors will show exact number of enemies\n", - L"If in sector, adjacent sectors will show presence of enemies, if any\n", - L"Prevents enemy ambushes on your squad\n", - L"Prevents bloodcat ambushes on your squad\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Will occasionally inform you about his teammates' opinions.\n", // TODO.Translate - L"Prevents teammates' misbehaviour (drugs, alcohol, scrounging).\n", // TODO.Translate - L"Can spread propaganda in towns.\n", // TODO.Translate - L"Can gather rumours in towns.\n", // TODO.Translate - L"Can be put undercover in prisons.\n", // TODO.Translate - L"Increases your reputation by %d every day if in good morale.\n", // TODO.Translate - L"+%d to effective hearing range\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate -{ - L"-%d%s travel time needed between sectors if traveling by foot\n", - L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", - L"-%d%s less energy spent for travelling between sectors\n", - L"-%d%s weather penalties\n", - L"-%d%s worn out speed of camouflage by water or time\n", - L"Can spot tracks up to %d tiles away\n", - - L"%s%d%% disease resistance\n", - L"%s%d%% food consumption\n", - L"%s%d%% water consumption\n", - L"+%d%% snake evasion\n", // TODO.Translate - L"+%d%% camouflage effectiveness\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s bonus to lockpicking\n", // 0 - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d extra hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", - L"+%d%s max range when throwing anything\n", // 10 - L"+%d%s chance to hit when throwing anything\n", - L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", - L"+%d%s bonus to militia training and other mercs instructing speed\n", - L"+%d%s effective leadership for militia training calculations\n", - L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", - L"Auto fire/burst chance to hit penalty is divided by %d\n", - L"Reduced chance for shooting unwanted bullets on autofire\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Eliminates CtH penalty when firing two weapons at once\n", // 20 - L"+%d%s chance to hit with melee blades\n", - L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", - L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", - L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click\n", - L"Provides permanent camouflage\n", - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 - L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", - L"+%d%s chance to dodge attacks by melee blades\n", - L"Can perform spinning kick attack on weakened enemies to deal double damage\n", - L"Gains special animations for hand to hand combat\n", - L"No bonuses", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"A: No advantage.\nD: No disadvantage.", - L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", - L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", - L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", - L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", - L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", - L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", - L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", - L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", - L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", - L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", - L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", - L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", - L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"No effects.", - L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", - L"Will suffer panic attack if left alone in certain situations.", - L"Overall performance is reduced when underground.", - L"Will drown easily if attempt to swim.", - L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", - L"Sometimes forgets orders given and will lose some APs if it happens in combat.", - L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", - L"Drastically reduced hearing.", - L"Reduced sight range.", - L"Drastically increased bleeding.", // TODO.Translate - L"Performance suffers while on a rooftop.", // TODO.Translate - L"Occasionally harms self.", -}; - - -STR16 gzIMPProfileCostText[]= -{ - L"The profile cost is $%d. Authorize payment?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"You have chosen IRON MAN mode. This setting makes the game considerably more challenging as you will not be able to save your game when in a sector occupied by enemies. This setting will affect the entire course of the game. Are you sure want to play in IRON MAN mode?", - L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?",// TODO.Translate - L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?",// TODO.Translate -}; - -STR16 gzDisplayCoverText[]= -{ - L"Cover: %d/100 %s, Brightness: %d/100", - L"Gun Range: %d/%d tiles, Chance to hit: %d/100", - L"Gun Range: %d/%d tiles, Muzzle Stability: %d/100", - L"Disabling cover display", - L"Showing mercenary view", - L"Showing danger zones for mercenary", - L"Wood", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Urban", - L"Desert", - L"Snow", - L"Wood and Desert", - L"Wood and Urban", - L"Wood and Snow", - L"Desert and Urban", - L"Desert and Snow", - L"Urban and Snow", - L"-", // yes empty for now // TODO.Translate - L"Cover: %d/100, Brightness: %d/100", - L"Footstep volume", - L"Stealth difficulty", - L"Trap level", -}; - - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("DUTCH") + + #ifdef DUTCH + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25DutchText_public_symbol(void){;} + +#ifdef DUTCH + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + // made this more elegant + L"Lock Picking", + L"Hand to Hand", + L"Electronics", + L"Night Operations", + L"Throwing", + L"Teaching", + L"Heavy Weapons", + L"Auto Weapons", + L"Stealth", + L"Ambidextrous", + L"Knifing", + L"Sniper", + L"Camouflaged", + L"Martial Arts", + + L"None", + L"I.M.P. Specialties", + L"(Expert)", + +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Auto Weapons", + L"Heavy Weapons", + L"Marksman", + L"Hunter", + L"Gunslinger", + L"Hand to Hand", + L"Deputy", + L"Technician", + L"Paramedic", + L"Covert Ops", // TODO.Translate + + L"None", + L"I.M.P. Major Traits", + // second names + L"Machinegunner", + L"Bombardier", + L"Sniper", + L"Ranger", + L"Gunfighter", + L"Martial Arts", + L"Squadleader", + L"Engineer", + L"Doctor", + L"Spy", // TODO.Translate +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Ambidextrous", + L"Melee", + L"Throwing", + L"Night Ops", + L"Stealthy", + L"Athletics", + L"Bodybuilding", + L"Demolitions", + L"Teaching", + L"Scouting", + L"Radio Operator", + L"Survival", //TODO.Translate + + L"None", + L"I.M.P. Minor Traits", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s CtH with Assault Rifles\n", + L"+%d%s CtH with SMGs\n", + L"+%d%s CtH with LMGs\n", + L"-%d%s APs to fire LMGs on autofire or burst mode\n", + L"-%d%s APs to ready LMGs\n", + L"Auto fire/burst CtH penalty reduced by %d%s\n", + L"Reduced chance for shooting extra bullets on autofire\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s APs to fire grenade launchers\n", + L"-%d%s APs to fire rocket launchers\n", + L"+%d%s CtH with grenade launchers\n", + L"+%d%s CtH with rocket launchers\n", + L"-%d%s APs to fire mortar\n", + L"Reduced penalty for mortar CtH by %d%s\n", + L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", + L"+%d%s damage to other targets with heavy weapons\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Sniper Rifles\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click (except for handguns)\n", + L"+%d%s damage on shot", + L" plus", + L" per every aim click", + L" after first", + L" after second", + L" after third", + L" after fourth", + L" after fifth", + L" after sixth", + L" after seventh", + L"-%d%s APs to chamber a round with bolt-action rifles \n", + L"Adds one more aim click for rifle-type guns\n", + L"Adds %d more aim clicks for rifle-type guns\n", + L"Makes aiming faster with rifle-type guns by one aim click\n", + L"Makes aiming faster with rifle-type guns by %d aim clicks\n", + L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Shotguns\n", + L"-%d%s APs needed to pump Shotguns\n", + L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", + L"+%d%s effective range with Shotguns\n", + L"-%d%s APs to reload single Shotgun shells\n", + L"Adds %d more aim click for Rifles\n", + L"Adds %d more aim clicks for Rifles\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s APs to fire with pistols and revolvers\n", + L"+%d%s effective range with pistols and revolvers\n", + L"+%d%s CtH with pistols and revolvers\n", + L"+%d%s CtH with machine pistols", + L" (on single shots only)", + L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", + L"-%d%s APs to ready pistols and revolvers\n", + 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[]= +{ + L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s CtH with hand to hand attacks with bare hands\n", + L"+%d%s CtH with hand to hand attacks with brass knuckles\n", + L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", + L"Enemy knocked out due to your HtH attacks probably never stand up\n", + L"Focused (aimed) punch deals +%d%s more damage\n", + L"Special spinning kick deals +%d%s more damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"+%d%s additional chance to dodge HtH attacks with bare hands", + L" or brass knuckles", + L" (+%d%s with brass knuckles)", + L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", + L"+%d%s chance to dodge attacks by any melee weapon\n", + L"-%d%s APs to steal weapon from enemy hands\n", + L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", + L"-%d%s APs to change stance (stand, crouch, lie down)\n", + L"-%d%s APs to turn around\n", + L"-%d%s APs to climb on/off roof and jump obstacles\n", + L"+%d%s chance to kick open doors\n", + L"Gains special animations for hand to hand combat\n", + L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s APs per round of other mercs in vicinity\n", + L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", + L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", + L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", + L"+%d morale gain for other mercs in the vicinity\n", + L"-%d morale loss for other mercs in the vicinity\n", + L"The vicinity for bonuses is %d tiles", + L" (%d tiles with extended ears)", + L"(Max simultaneous bonuses for one soldier is %d)\n", + L"+%d%s fear resistence of %s\n", + L"Drawback: %dx morale loss for %s's death for all other mercs\n", + L"+%d%s chance to trigger collective interrupts\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s to repair speed\n", + L"+%d%s to lockpick (normal/electronic locks)\n", + L"+%d%s to disarm electronic traps\n", + L"+%d%s to attach special items and combining things\n", + L"+%d%s to unjamm a gun in combat\n", + L"Reduced penalty to repair electronic items by %d%s\n", + L"Increased chance to detect traps and mines (+%d detect level)\n", + L"+%d%s robot's CtH controlled by the %s\n", + L"%s trait grants ability to repair the robot\n", + L"Reduced penalty to repair speed of the robot by %d%s\n", + L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"Able to use medical bag to perform surgical intervention on wounded soldier\n", + L"Surgery instantly returns %d%s of lost health back.", + L" (This will deplete the medical bag.)", + L"Able to heal lost stats (from critical hits) by", + L" surgery or", + L" doctor assignment.\n", + L"+%d%s effectiveness on doctor-patient assignment\n", + L"+%d%s bandaging speed\n", + L"+%d%s natural regeneration speed for all soldiers in the same sector", + L" (max %d of these bonuses per sector stack)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", + L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", + L"+%d%s CtH with covert melee weapons\n", + L"+%d%s chance of instakill with covert melee weapons\n", + L"Disguise AP cost lowered by %d%s.\n", + L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= // TODO.Translate +{ + L"Can use communications equipment.\n", + L"Can call in artillery strikes from allies in neighbouring sectors.\n", + L"Via Frequency Scan assignment, enemy patrols can be located.\n", + L"Communications can be jammed sector-wide.\n", + L"If communications are jammed, an operator can scan for the jamming device.\n", + L"Can call in militia reinforcements from neighbouring sectors.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate + L"+%d%s speed on reloading guns with magazines\n", + L"+%d%s speed on reloading guns with loose rounds\n", + L"-%d%s APs to pickup items\n", + L"-%d%s APs to work backpack\n", + L"-%d%s APs to handle doors\n", + L"-%d%s APs to plant/remove bombs and mines\n", + L"-%d%s APs to attach items\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s APs to attack with blades\n", + L"+%d%s CtH with blades\n", + L"+%d%s CtH with blunt melee weapons\n", + L"+%d%s damage with blades\n", + L"+%d%s damage with blunt melee weapons\n", + L"Aimed attack with any melee weapon deals +%d%s damage\n", + L"+%d%s chance to dodge attack from melee blades\n", + L"+%d%s additional chance to dodge melee blades if holding a blade\n", + L"+%d%s chance to dodge attack from blunt melee weapons\n", + L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s basic APs to throw blades\n", + L"+%d%s max range when throwing blades\n", + L"+%d%s CtH when throwing blades\n", + L"+%d%s CtH when throwing blades per aim click\n", + L"+%d%s damage with throwing blades\n", + L"+%d%s damage with throwing blades per aim click\n", + L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", + L"+%d critical hit with throwing blade multiplier\n", + L"Adds %d more aim click for throwing blades\n", + L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d additional hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s APs to move quietly\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Reduced cover penalty for movement by %d%s\n", + L"-%d%s chance to be interrupted\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", + L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"%d%s damage resistance\n", + L"+%d%s effective strength for carrying weight capacity\n", + L"Reduced energy lost when hit by HtH attack by %d%s\n", + L"Increased damage needed to fall down by %d%s if hit on legs\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s damage for set bombs and mines\n", + L"+%d%s to attaching detonators check\n", + L"+%d%s to planting/removing bombs check\n", + L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", + L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"+%d%s bonus to militia training speed\n", + L"+%d%s bonus to effective leadership for determining militia training\n", + L"+%d%s bonus to teach other mercs\n", + L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", + L"+%d%s bonus to train stats through self-practice assignment\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% to effective sight range with scopes on weapons\n", + L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", + L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", + L"If in sector, adjacent sectors will show exact number of enemies\n", + L"If in sector, adjacent sectors will show presence of enemies, if any\n", + L"Prevents enemy ambushes on your squad\n", + L"Prevents bloodcat ambushes on your squad\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Will occasionally inform you about his teammates' opinions.\n", // TODO.Translate + L"Prevents teammates' misbehaviour (drugs, alcohol, scrounging).\n", // TODO.Translate + L"Can spread propaganda in towns.\n", // TODO.Translate + L"Can gather rumours in towns.\n", // TODO.Translate + L"Can be put undercover in prisons.\n", // TODO.Translate + L"Increases your reputation by %d every day if in good morale.\n", // TODO.Translate + L"+%d to effective hearing range\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate +{ + L"-%d%s travel time needed between sectors if traveling by foot\n", + L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", + L"-%d%s less energy spent for travelling between sectors\n", + L"-%d%s weather penalties\n", + L"-%d%s worn out speed of camouflage by water or time\n", + L"Can spot tracks up to %d tiles away\n", + + L"%s%d%% disease resistance\n", + L"%s%d%% food consumption\n", + L"%s%d%% water consumption\n", + L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% camouflage effectiveness\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s bonus to lockpicking\n", // 0 + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d extra hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", + L"+%d%s max range when throwing anything\n", // 10 + L"+%d%s chance to hit when throwing anything\n", + L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", + L"+%d%s bonus to militia training and other mercs instructing speed\n", + L"+%d%s effective leadership for militia training calculations\n", + L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", + L"Auto fire/burst chance to hit penalty is divided by %d\n", + L"Reduced chance for shooting unwanted bullets on autofire\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Eliminates CtH penalty when firing two weapons at once\n", // 20 + L"+%d%s chance to hit with melee blades\n", + L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", + L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", + L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click\n", + L"Provides permanent camouflage\n", + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 + L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", + L"+%d%s chance to dodge attacks by melee blades\n", + L"Can perform spinning kick attack on weakened enemies to deal double damage\n", + L"Gains special animations for hand to hand combat\n", + L"No bonuses", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"A: No advantage.\nD: No disadvantage.", + L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", + L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", + L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", + L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", + L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", + L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", + L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", + L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", + L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", + L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", + L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", + L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", + L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"No effects.", + L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", + L"Will suffer panic attack if left alone in certain situations.", + L"Overall performance is reduced when underground.", + L"Will drown easily if attempt to swim.", + L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", + L"Sometimes forgets orders given and will lose some APs if it happens in combat.", + L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", + L"Drastically reduced hearing.", + L"Reduced sight range.", + L"Drastically increased bleeding.", // TODO.Translate + L"Performance suffers while on a rooftop.", // TODO.Translate + L"Occasionally harms self.", +}; + + +STR16 gzIMPProfileCostText[]= +{ + L"The profile cost is $%d. Authorize payment?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"You have chosen IRON MAN mode. This setting makes the game considerably more challenging as you will not be able to save your game when in a sector occupied by enemies. This setting will affect the entire course of the game. Are you sure want to play in IRON MAN mode?", + L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?",// TODO.Translate + L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?",// TODO.Translate +}; + +STR16 gzDisplayCoverText[]= +{ + L"Cover: %d/100 %s, Brightness: %d/100", + L"Gun Range: %d/%d tiles, Chance to hit: %d/100", + L"Gun Range: %d/%d tiles, Muzzle Stability: %d/100", + L"Disabling cover display", + L"Showing mercenary view", + L"Showing danger zones for mercenary", + L"Wood", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Urban", + L"Desert", + L"Snow", + L"Wood and Desert", + L"Wood and Urban", + L"Wood and Snow", + L"Desert and Urban", + L"Desert and Snow", + L"Urban and Snow", + L"-", // yes empty for now // TODO.Translate + L"Cover: %d/100, Brightness: %d/100", + L"Footstep volume", + L"Stealth difficulty", + L"Trap level", +}; + + +#endif diff --git a/i18n/_Ja25EnglishText.cpp b/i18n/_Ja25EnglishText.cpp index aaae4773..6cfae219 100644 --- a/i18n/_Ja25EnglishText.cpp +++ b/i18n/_Ja25EnglishText.cpp @@ -1,528 +1,528 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("ENGLISH") - - #ifdef ENGLISH - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25EnglishText_public_symbol(void); - -#ifdef ENGLISH - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - // made this more elegant - L"Lock Picking", - L"Hand to Hand", - L"Electronics", - L"Night Operations", - L"Throwing", - L"Teaching", - L"Heavy Weapons", - L"Auto Weapons", - L"Stealth", - L"Ambidextrous", - L"Knifing", - L"Sniper", - L"Camouflaged", - L"Martial Arts", - - L"None", - L"I.M.P. Specialties", - L"(Expert)", - -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Auto Weapons", - L"Heavy Weapons", - L"Marksman", - L"Hunter", - L"Gunslinger", - L"Hand to Hand", - L"Deputy", - L"Technician", - L"Paramedic", - L"Covert Ops", - - L"None", - L"I.M.P. Major Traits", - // second names - L"Machinegunner", - L"Bombardier", - L"Sniper", - L"Ranger", - L"Gunfighter", - L"Martial Arts", - L"Squadleader", - L"Engineer", - L"Doctor", - L"Spy", -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Ambidextrous", - L"Melee", - L"Throwing", - L"Night Ops", - L"Stealthy", - L"Athletics", - L"Bodybuilding", - L"Demolitions", - L"Teaching", - L"Scouting", - L"Radio Operator", - L"Survival", - - L"None", - L"I.M.P. Minor Traits", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s CtH with Assault Rifles\n", - L"+%d%s CtH with SMGs\n", - L"+%d%s CtH with LMGs\n", - L"-%d%s APs to fire LMGs on autofire or burst mode\n", - L"-%d%s APs to ready LMGs\n", - L"Auto fire/burst CtH penalty reduced by %d%s\n", - L"Reduced chance for shooting extra bullets on autofire\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s APs to fire grenade launchers\n", - L"-%d%s APs to fire rocket launchers\n", - L"+%d%s CtH with grenade launchers\n", - L"+%d%s CtH with rocket launchers\n", - L"-%d%s APs to fire mortar\n", - L"Reduced penalty for mortar CtH by %d%s\n", - L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", - L"+%d%s damage to other targets with heavy weapons\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Sniper Rifles\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click (except for handguns)\n", - L"+%d%s damage on shot", - L" plus", - L" per every aim click", - L" after first", - L" after second", - L" after third", - L" after fourth", - L" after fifth", - L" after sixth", - L" after seventh", - L"-%d%s APs to chamber a round with bolt-action rifles \n", - L"Adds one more aim click for rifle-type guns\n", - L"Adds %d more aim clicks for rifle-type guns\n", - L"Makes aiming faster with rifle-type guns by one aim click\n", - L"Makes aiming faster with rifle-type guns by %d aim clicks\n", - L"Focus skill: +%d interrupt modifier in marked area\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Shotguns\n", - L"-%d%s APs needed to pump Shotguns\n", - L"-%d%s APs to fire Shotguns\n", - L"Adds %d more aim click for Shotguns\n", - L"Adds %d more aim clicks for Shotguns\n", - L"+%d%s effective range with Shotguns\n", - L"-%d%s APs to reload single Shotgun shells\n", - L"Adds %d more aim click for Rifles\n", - L"Adds %d more aim clicks for Rifles\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s APs to fire with pistols and revolvers\n", - L"+%d%s effective range with pistols and revolvers\n", - L"+%d%s CtH with pistols and revolvers\n", - L"+%d%s CtH with machine pistols", - L" (on single shots only)", - L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", - L"-%d%s APs to ready pistols and revolvers\n", - 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[]= -{ - L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s CtH with hand to hand attacks with bare hands\n", - L"+%d%s CtH with hand to hand attacks with brass knuckles\n", - L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", - L"Enemy knocked out due to your HtH attacks probably never stand up\n", - L"Focused (aimed) punch deals +%d%s more damage\n", - L"Special spinning kick deals +%d%s more damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"+%d%s additional chance to dodge HtH attacks with bare hands", - L" or brass knuckles", - L" (+%d%s with brass knuckles)", - L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", - L"+%d%s chance to dodge attacks by any melee weapon\n", - L"-%d%s APs to steal weapon from enemy hands\n", - L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", - L"-%d%s APs to change stance (stand, crouch, lie down)\n", - L"-%d%s APs to turn around\n", - L"-%d%s APs to climb on/off roof and jump obstacles\n", - L"+%d%s chance to kick open doors\n", - L"Gains special animations for hand to hand combat\n", - L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s APs per round of other mercs in vicinity\n", - L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", - L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", - L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", - L"+%d morale gain for other mercs in the vicinity\n", - L"-%d morale loss for other mercs in the vicinity\n", - L"The vicinity for bonuses is %d tiles", - L" (%d tiles with extended ears)", - L"(Max simultaneous bonuses for one soldier is %d)\n", - L"+%d%s fear resistence of %s\n", - L"Drawback: %dx morale loss for %s's death for all other mercs\n", - L"+%d%s chance to trigger collective interrupts\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s to repair speed\n", - L"+%d%s to lockpick (normal/electronic locks)\n", - L"+%d%s to disarm electronic traps\n", - L"+%d%s to attach special items and combining things\n", - L"+%d%s to unjamm a gun in combat\n", - L"Reduced penalty to repair electronic items by %d%s\n", - L"Increased chance to detect traps and mines (+%d detect level)\n", - L"+%d%s robot's CtH controlled by the %s\n", - L"%s trait grants ability to repair the robot\n", - L"Reduced penalty to repair speed of the robot by %d%s\n", - L"Able to restore item threshold to 100%% during repair\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"Able to use medical bag to perform surgical intervention on wounded soldier\n", - L"Surgery instantly returns %d%s of lost health back.", - L" (This will deplete the medical bag.)", - L"Able to heal lost stats (from critical hits) by", - L" surgery or", - L" doctor assignment.\n", - L"+%d%s effectiveness on doctor-patient assignment\n", - L"+%d%s bandaging speed\n", - L"+%d%s natural regeneration speed for all soldiers in the same sector", - L" (max %d of these bonuses per sector stack)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", - L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", - L"+%d%s CtH with covert melee weapons\n", - L"+%d%s chance of instakill with covert melee weapons\n", - L"Disguise AP cost lowered by %d%s.\n", - L"Can convince enemy soldiers to secretly change sides.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= -{ - L"Can use communications equipment.\n", - L"Can call in artillery strikes from allies in neighbouring sectors.\n", - L"Via Frequency Scan assignment, enemy patrols can be located.\n", - L"Communications can be jammed sector-wide.\n", - L"If communications are jammed, an operator can scan for the jamming device.\n", - L"Can call in militia reinforcements from neighbouring sectors.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", - L"+%d%s speed on reloading guns with magazines\n", - L"+%d%s speed on reloading guns with loose rounds\n", - L"-%d%s APs to pickup items\n", - L"-%d%s APs to work backpack\n", - L"-%d%s APs to handle doors\n", - L"-%d%s APs to plant/remove bombs and mines\n", - L"-%d%s APs to attach items\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s APs to attack with blades\n", - L"+%d%s CtH with blades\n", - L"+%d%s CtH with blunt melee weapons\n", - L"+%d%s damage with blades\n", - L"+%d%s damage with blunt melee weapons\n", - L"Aimed attack with any melee weapon deals +%d%s damage\n", - L"+%d%s chance to dodge attack from melee blades\n", - L"+%d%s additional chance to dodge melee blades if holding a blade\n", - L"+%d%s chance to dodge attack from blunt melee weapons\n", - L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s basic APs to throw blades\n", - L"+%d%s max range when throwing blades\n", - L"+%d%s CtH when throwing blades\n", - L"+%d%s CtH when throwing blades per aim click\n", - L"+%d%s damage with throwing blades\n", - L"+%d%s damage with throwing blades per aim click\n", - L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", - L"+%d critical hit with throwing blade multiplier\n", - L"Adds %d more aim click for throwing blades\n", - L"Adds %d more aim clicks for throwing blades\n", - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d additional hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s APs to move quietly\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Reduced cover penalty for movement by %d%s\n", - L"-%d%s chance to be interrupted\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", - L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"%d%s damage resistance\n", - L"+%d%s effective strength for carrying weight capacity\n", - L"Reduced energy lost when hit by HtH attack by %d%s\n", - L"Increased damage needed to fall down by %d%s if hit on legs\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s damage for set bombs and mines\n", - L"+%d%s to attaching detonators check\n", - L"+%d%s to planting/removing bombs check\n", - L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", - L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"+%d%s bonus to militia training speed\n", - L"+%d%s bonus to effective leadership for determining militia training\n", - L"+%d%s bonus to teach other mercs\n", - L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", - L"+%d%s bonus to train stats through self-practice assignment\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% to effective sight range with scopes on weapons\n", - L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", - L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", - L"If in sector, adjacent sectors will show exact number of enemies\n", - L"If in sector, adjacent sectors will show presence of enemies, if any\n", - L"Prevents enemy ambushes on your squad\n", - L"Prevents bloodcat ambushes on your squad\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Will occasionally inform you about his teammates' opinions.\n", - L"Prevents teammates' misbehaviour (drugs, alcohol, scrounging).\n", - L"Can spread propaganda in towns.\n", - L"Can gather rumours in towns.\n", - L"Can be put undercover in prisons.\n", - L"Increases your reputation by %d every day if in good morale.\n", - L"+%d to effective hearing range\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = -{ - L"-%d%s travel time needed between sectors if traveling by foot\n", - L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", - L"-%d%s less energy spent for travelling between sectors\n", - L"-%d%s weather penalties\n", - L"-%d%s worn out speed of camouflage by water or time\n", - L"Can spot tracks up to %d tiles away\n", - - L"%s%d%% disease resistance\n", - L"%s%d%% food consumption\n", - L"%s%d%% water consumption\n", - L"+%d%% snake evasion\n", - L"+%d%% camouflage effectiveness\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s bonus to lockpicking\n", // 0 - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d extra hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", - L"+%d%s max range when throwing anything\n", // 10 - L"+%d%s chance to hit when throwing anything\n", - L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", - L"+%d%s bonus to militia training and other mercs instructing speed\n", - L"+%d%s effective leadership for militia training calculations\n", - L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", - L"Auto fire/burst chance to hit penalty is divided by %d\n", - L"Reduced chance for shooting unwanted bullets on autofire\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Eliminates CtH penalty when firing two weapons at once\n", // 20 - L"+%d%s chance to hit with melee blades\n", - L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", - L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", - L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click\n", - L"Provides permanent camouflage\n", - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 - L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", - L"+%d%s chance to dodge attacks by melee blades\n", - L"Can perform spinning kick attack on weakened enemies to deal double damage\n", - L"Gains special animations for hand to hand combat\n", - L"No bonuses", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"A: No advantage.\nD: No disadvantage.", - L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", - L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", - L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", - L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", - L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", - L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", - L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", - L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", - L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", - L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", - L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", - L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", - L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"No effects.", - L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", - L"Will suffer panic attack if left alone in certain situations.", - L"Overall performance is reduced when underground.", - L"Will drown easily if attempt to swim.", - L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", - L"Sometimes forgets orders given and will lose some APs if it happens in combat.", - L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", - L"Drastically reduced hearing.", - L"Reduced sight range.", - L"Drastically increased bleeding.", - L"Performance suffers while on a rooftop.", - L"Occasionally harms self.", -}; - -STR16 gzIMPProfileCostText[]= -{ - L"The profile cost is $%d. Authorize payment?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"You have chosen IRON MAN mode. This setting makes the game considerably more challenging as you will not be able to save your game when in a sector occupied by enemies. This setting will affect the entire course of the game. Are you sure want to play in IRON MAN mode?", - L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?", - L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?", -}; - -STR16 gzDisplayCoverText[]= -{ - L"Cover: %d/100 %s, Brightness: %d/100", - L"Gun Range: %d/%d tiles, Chance to hit: %d/100", - L"Gun Range: %d/%d tiles, Muzzle Stability: %d/100", - L"Disabling cover display", - L"Showing mercenary view", - L"Showing danger zones for mercenary", - L"Wood", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Urban", - L"Desert", - L"Snow", - L"Wood and Desert", - L"Wood and Urban", - L"Wood and Snow", - L"Desert and Urban", - L"Desert and Snow", - L"Urban and Snow", - L"-", // yes empty for now - L"Cover: %d/100, Brightness: %d/100", - L"Footstep volume", - L"Stealth difficulty", - L"Trap level", -}; - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("ENGLISH") + + #ifdef ENGLISH + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25EnglishText_public_symbol(void); + +#ifdef ENGLISH + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + // made this more elegant + L"Lock Picking", + L"Hand to Hand", + L"Electronics", + L"Night Operations", + L"Throwing", + L"Teaching", + L"Heavy Weapons", + L"Auto Weapons", + L"Stealth", + L"Ambidextrous", + L"Knifing", + L"Sniper", + L"Camouflaged", + L"Martial Arts", + + L"None", + L"I.M.P. Specialties", + L"(Expert)", + +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Auto Weapons", + L"Heavy Weapons", + L"Marksman", + L"Hunter", + L"Gunslinger", + L"Hand to Hand", + L"Deputy", + L"Technician", + L"Paramedic", + L"Covert Ops", + + L"None", + L"I.M.P. Major Traits", + // second names + L"Machinegunner", + L"Bombardier", + L"Sniper", + L"Ranger", + L"Gunfighter", + L"Martial Arts", + L"Squadleader", + L"Engineer", + L"Doctor", + L"Spy", +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Ambidextrous", + L"Melee", + L"Throwing", + L"Night Ops", + L"Stealthy", + L"Athletics", + L"Bodybuilding", + L"Demolitions", + L"Teaching", + L"Scouting", + L"Radio Operator", + L"Survival", + + L"None", + L"I.M.P. Minor Traits", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s CtH with Assault Rifles\n", + L"+%d%s CtH with SMGs\n", + L"+%d%s CtH with LMGs\n", + L"-%d%s APs to fire LMGs on autofire or burst mode\n", + L"-%d%s APs to ready LMGs\n", + L"Auto fire/burst CtH penalty reduced by %d%s\n", + L"Reduced chance for shooting extra bullets on autofire\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s APs to fire grenade launchers\n", + L"-%d%s APs to fire rocket launchers\n", + L"+%d%s CtH with grenade launchers\n", + L"+%d%s CtH with rocket launchers\n", + L"-%d%s APs to fire mortar\n", + L"Reduced penalty for mortar CtH by %d%s\n", + L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", + L"+%d%s damage to other targets with heavy weapons\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Sniper Rifles\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click (except for handguns)\n", + L"+%d%s damage on shot", + L" plus", + L" per every aim click", + L" after first", + L" after second", + L" after third", + L" after fourth", + L" after fifth", + L" after sixth", + L" after seventh", + L"-%d%s APs to chamber a round with bolt-action rifles \n", + L"Adds one more aim click for rifle-type guns\n", + L"Adds %d more aim clicks for rifle-type guns\n", + L"Makes aiming faster with rifle-type guns by one aim click\n", + L"Makes aiming faster with rifle-type guns by %d aim clicks\n", + L"Focus skill: +%d interrupt modifier in marked area\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Shotguns\n", + L"-%d%s APs needed to pump Shotguns\n", + L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", + L"+%d%s effective range with Shotguns\n", + L"-%d%s APs to reload single Shotgun shells\n", + L"Adds %d more aim click for Rifles\n", + L"Adds %d more aim clicks for Rifles\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s APs to fire with pistols and revolvers\n", + L"+%d%s effective range with pistols and revolvers\n", + L"+%d%s CtH with pistols and revolvers\n", + L"+%d%s CtH with machine pistols", + L" (on single shots only)", + L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", + L"-%d%s APs to ready pistols and revolvers\n", + 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[]= +{ + L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s CtH with hand to hand attacks with bare hands\n", + L"+%d%s CtH with hand to hand attacks with brass knuckles\n", + L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", + L"Enemy knocked out due to your HtH attacks probably never stand up\n", + L"Focused (aimed) punch deals +%d%s more damage\n", + L"Special spinning kick deals +%d%s more damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"+%d%s additional chance to dodge HtH attacks with bare hands", + L" or brass knuckles", + L" (+%d%s with brass knuckles)", + L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", + L"+%d%s chance to dodge attacks by any melee weapon\n", + L"-%d%s APs to steal weapon from enemy hands\n", + L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", + L"-%d%s APs to change stance (stand, crouch, lie down)\n", + L"-%d%s APs to turn around\n", + L"-%d%s APs to climb on/off roof and jump obstacles\n", + L"+%d%s chance to kick open doors\n", + L"Gains special animations for hand to hand combat\n", + L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s APs per round of other mercs in vicinity\n", + L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", + L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", + L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", + L"+%d morale gain for other mercs in the vicinity\n", + L"-%d morale loss for other mercs in the vicinity\n", + L"The vicinity for bonuses is %d tiles", + L" (%d tiles with extended ears)", + L"(Max simultaneous bonuses for one soldier is %d)\n", + L"+%d%s fear resistence of %s\n", + L"Drawback: %dx morale loss for %s's death for all other mercs\n", + L"+%d%s chance to trigger collective interrupts\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s to repair speed\n", + L"+%d%s to lockpick (normal/electronic locks)\n", + L"+%d%s to disarm electronic traps\n", + L"+%d%s to attach special items and combining things\n", + L"+%d%s to unjamm a gun in combat\n", + L"Reduced penalty to repair electronic items by %d%s\n", + L"Increased chance to detect traps and mines (+%d detect level)\n", + L"+%d%s robot's CtH controlled by the %s\n", + L"%s trait grants ability to repair the robot\n", + L"Reduced penalty to repair speed of the robot by %d%s\n", + L"Able to restore item threshold to 100%% during repair\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"Able to use medical bag to perform surgical intervention on wounded soldier\n", + L"Surgery instantly returns %d%s of lost health back.", + L" (This will deplete the medical bag.)", + L"Able to heal lost stats (from critical hits) by", + L" surgery or", + L" doctor assignment.\n", + L"+%d%s effectiveness on doctor-patient assignment\n", + L"+%d%s bandaging speed\n", + L"+%d%s natural regeneration speed for all soldiers in the same sector", + L" (max %d of these bonuses per sector stack)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", + L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", + L"+%d%s CtH with covert melee weapons\n", + L"+%d%s chance of instakill with covert melee weapons\n", + L"Disguise AP cost lowered by %d%s.\n", + L"Can convince enemy soldiers to secretly change sides.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= +{ + L"Can use communications equipment.\n", + L"Can call in artillery strikes from allies in neighbouring sectors.\n", + L"Via Frequency Scan assignment, enemy patrols can be located.\n", + L"Communications can be jammed sector-wide.\n", + L"If communications are jammed, an operator can scan for the jamming device.\n", + L"Can call in militia reinforcements from neighbouring sectors.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", + L"+%d%s speed on reloading guns with magazines\n", + L"+%d%s speed on reloading guns with loose rounds\n", + L"-%d%s APs to pickup items\n", + L"-%d%s APs to work backpack\n", + L"-%d%s APs to handle doors\n", + L"-%d%s APs to plant/remove bombs and mines\n", + L"-%d%s APs to attach items\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s APs to attack with blades\n", + L"+%d%s CtH with blades\n", + L"+%d%s CtH with blunt melee weapons\n", + L"+%d%s damage with blades\n", + L"+%d%s damage with blunt melee weapons\n", + L"Aimed attack with any melee weapon deals +%d%s damage\n", + L"+%d%s chance to dodge attack from melee blades\n", + L"+%d%s additional chance to dodge melee blades if holding a blade\n", + L"+%d%s chance to dodge attack from blunt melee weapons\n", + L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s basic APs to throw blades\n", + L"+%d%s max range when throwing blades\n", + L"+%d%s CtH when throwing blades\n", + L"+%d%s CtH when throwing blades per aim click\n", + L"+%d%s damage with throwing blades\n", + L"+%d%s damage with throwing blades per aim click\n", + L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", + L"+%d critical hit with throwing blade multiplier\n", + L"Adds %d more aim click for throwing blades\n", + L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d additional hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s APs to move quietly\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Reduced cover penalty for movement by %d%s\n", + L"-%d%s chance to be interrupted\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", + L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"%d%s damage resistance\n", + L"+%d%s effective strength for carrying weight capacity\n", + L"Reduced energy lost when hit by HtH attack by %d%s\n", + L"Increased damage needed to fall down by %d%s if hit on legs\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s damage for set bombs and mines\n", + L"+%d%s to attaching detonators check\n", + L"+%d%s to planting/removing bombs check\n", + L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", + L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"+%d%s bonus to militia training speed\n", + L"+%d%s bonus to effective leadership for determining militia training\n", + L"+%d%s bonus to teach other mercs\n", + L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", + L"+%d%s bonus to train stats through self-practice assignment\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% to effective sight range with scopes on weapons\n", + L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", + L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", + L"If in sector, adjacent sectors will show exact number of enemies\n", + L"If in sector, adjacent sectors will show presence of enemies, if any\n", + L"Prevents enemy ambushes on your squad\n", + L"Prevents bloodcat ambushes on your squad\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Will occasionally inform you about his teammates' opinions.\n", + L"Prevents teammates' misbehaviour (drugs, alcohol, scrounging).\n", + L"Can spread propaganda in towns.\n", + L"Can gather rumours in towns.\n", + L"Can be put undercover in prisons.\n", + L"Increases your reputation by %d every day if in good morale.\n", + L"+%d to effective hearing range\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = +{ + L"-%d%s travel time needed between sectors if traveling by foot\n", + L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", + L"-%d%s less energy spent for travelling between sectors\n", + L"-%d%s weather penalties\n", + L"-%d%s worn out speed of camouflage by water or time\n", + L"Can spot tracks up to %d tiles away\n", + + L"%s%d%% disease resistance\n", + L"%s%d%% food consumption\n", + L"%s%d%% water consumption\n", + L"+%d%% snake evasion\n", + L"+%d%% camouflage effectiveness\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s bonus to lockpicking\n", // 0 + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d extra hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", + L"+%d%s max range when throwing anything\n", // 10 + L"+%d%s chance to hit when throwing anything\n", + L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", + L"+%d%s bonus to militia training and other mercs instructing speed\n", + L"+%d%s effective leadership for militia training calculations\n", + L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", + L"Auto fire/burst chance to hit penalty is divided by %d\n", + L"Reduced chance for shooting unwanted bullets on autofire\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Eliminates CtH penalty when firing two weapons at once\n", // 20 + L"+%d%s chance to hit with melee blades\n", + L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", + L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", + L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click\n", + L"Provides permanent camouflage\n", + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 + L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", + L"+%d%s chance to dodge attacks by melee blades\n", + L"Can perform spinning kick attack on weakened enemies to deal double damage\n", + L"Gains special animations for hand to hand combat\n", + L"No bonuses", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"A: No advantage.\nD: No disadvantage.", + L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", + L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", + L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", + L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", + L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", + L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", + L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", + L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", + L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", + L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", + L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", + L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", + L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"No effects.", + L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", + L"Will suffer panic attack if left alone in certain situations.", + L"Overall performance is reduced when underground.", + L"Will drown easily if attempt to swim.", + L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", + L"Sometimes forgets orders given and will lose some APs if it happens in combat.", + L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", + L"Drastically reduced hearing.", + L"Reduced sight range.", + L"Drastically increased bleeding.", + L"Performance suffers while on a rooftop.", + L"Occasionally harms self.", +}; + +STR16 gzIMPProfileCostText[]= +{ + L"The profile cost is $%d. Authorize payment?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"You have chosen IRON MAN mode. This setting makes the game considerably more challenging as you will not be able to save your game when in a sector occupied by enemies. This setting will affect the entire course of the game. Are you sure want to play in IRON MAN mode?", + L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?", + L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?", +}; + +STR16 gzDisplayCoverText[]= +{ + L"Cover: %d/100 %s, Brightness: %d/100", + L"Gun Range: %d/%d tiles, Chance to hit: %d/100", + L"Gun Range: %d/%d tiles, Muzzle Stability: %d/100", + L"Disabling cover display", + L"Showing mercenary view", + L"Showing danger zones for mercenary", + L"Wood", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Urban", + L"Desert", + L"Snow", + L"Wood and Desert", + L"Wood and Urban", + L"Wood and Snow", + L"Desert and Urban", + L"Desert and Snow", + L"Urban and Snow", + L"-", // yes empty for now + L"Cover: %d/100, Brightness: %d/100", + L"Footstep volume", + L"Stealth difficulty", + L"Trap level", +}; + +#endif diff --git a/i18n/_Ja25FrenchText.cpp b/i18n/_Ja25FrenchText.cpp index 630fc5fe..e809ee15 100644 --- a/i18n/_Ja25FrenchText.cpp +++ b/i18n/_Ja25FrenchText.cpp @@ -1,530 +1,530 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("FRENCH") - - #ifdef FRENCH - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25FrenchText_public_symbol(void){;} - -#ifdef FRENCH - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - L"Crochetage", - L"Corps à corps", - L"Électronique", - L"Opérations de nuit", - L"Lancer", - L"Instructeur", - L"Armes lourdes", - L"Armes automatiques", - L"Discrétion", - L"Ambidextre", - L"Couteau", - L"Tireur isolé", - L"Camouflage", - L"Arts martiaux", - - L"aucune", - L"IMP : Spécialtés", - L"(Expert)", - -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Armes automatiques", - L"Armes lourdes", - L"Tireur d'élite", - L"Éclaireur", - L"Flingueur", - L"Arts martiaux", - L"Meneur", - L"Technicien", - L"Médecin", - L"Déguisement", - - L"Personne", - L"IMP : Traits pincipaux", - // second names - L"Mitrailleur", - L"Bombardier", - L"Sniper", - L"Chasseur", - L"Combattant", - L"Arts martiaux", - L"Commandant", - L"Ingénieur", - L"Chirurgien", - L"Espion", -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Ambidextre", - L"Mêlée", - L"Le lancer", - L"Opérations de nuit", - L"Discrétion", - L"Athlétique", - L"Culturiste", - L"Sabotage", - L"Instructeur", - L"Reconnaissance", - L"Opérateur radio", - L"Survival", //TODO.Translate - - L"Personne", - L"IMP : Traits mineurs", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s de chance de toucher avec un fusil d'assaut\n", - L"+%d%s de chance de toucher avec un pistolet mitrailleur\n", - L"+%d%s de chance de toucher avec une mitrailleuse légère\n", - L"-%d%s du nombre de PA nécessaire pour tirer avec une mitrailleuse légère\n", - L"-%d%s du nombre de PA nécessaire pour préparer une arme automatique légère\n", - L"La pénalité due au mode rafale/auto, est réduite de %d%s\n", - L"Réduire la probabilité de tirer plus de balles que prévu en mode auto\n", - -}; -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s du nombre de PA nécessaire pour lancer une grenade\n", - L"-%d%s du nombre de PA nécessaire pour tirer une roquette\n", - L"+%d%s de chance de toucher avec une grenade\n", - L"+%d%s de chance de toucher avec une roquette\n", - L"-%d%s du nombre de PA nécessaire pour tirer au mortier\n", - L"Réduit la pénalité de chance de toucher du mortier de %d%s\n", - L"+%d%s dégâts fait à un char avec une arme lourde, grenades ou explosifs\n", - L"+%d%s dégâts fait sur les autres cibles avec une arme lourde\n", - -}; -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s de chance de toucher avec un fusil\n", - L"+%d%s de chance de toucher avec une arme de précision\n", - L"-%d%s de la distance effective de toutes les armes pour viser\n", - L"+%d%s de bonus par niveau de visée (excepté pour les pistolets)\n", - L"+%d%s de dégâts sur tir", - L" plus", - L" pour chaque niveau", - L" après le premier", - L" après le deuxième", - L" après le troisième", - L" après le quatrième", - L" après le cinquième", - L" après le sixième", - L" après le septième", - L"-%d%s du nombre de PA nécessaire pour recharger avec un fusil à action manuelle\n", - L"Ajoute un niveau de visée en plus pour chaque fusil\n", - L"Ajoute %d niveau(x) de visée pour chaque fusil\n", - - L"Fait viser plus rapidement avec un : réduit d'un niveau de visée\n", - L"Fait viser plus rapidement avec un fusil : réduit de %d niveau(x) de visée\n", - L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate - -}; -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s de chance de toucher avec un fusil\n", - L"+%d%s de chance de toucher avec un fusil à pompe\n", - L"-%d%s du nombre de PA nécessaire pour recharger le fusil à pompe\n", - L"-%d%s PA pour tirer avec les fusils à pompe\n", - L"Ajoute un niveau de visée pour les fusils à pompe\n", - L"Ajoute %d niveaux de visée pour les fusils à pompe\n", - L"+%d%s effective range with Shotguns\n", // TODO.Translate - L"-%d%s APs to reload single Shotgun shells\n", // TODO.Translate - L"Adds %d more aim click for Rifles\n", // TODO.Translate - L"Adds %d more aim clicks for Rifles\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s du nombre de PA nécessaire pour tirer avec un pistolet ou un revolver\n", - L"+%d%s de la distance effective avec un pistolet ou un revolver pour viser\n", - L"+%d%s de chance de toucher avec un pistolet ou un revolver\n", - L"+%d%s de chance de toucher avec un pistolet automatique", - L" (en tir manuel seulement)", - L"+%d%s de bonus par niveau de visée avec un pistolet, pistolet automatique ou un revolver\n", - L"-%d%s du nombre de PA nécessaire pour dégainer un pistolet, pistolet automatique ou un revolver\n", - 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[]= -{ - L"-%d%s du nombre de PA nécessaire pour les attaques au corps à corps (mains nues ou avec un coup de poing américain)\n", - L"+%d%s de chance de toucher avec les mains nues\n", - L"+%d%s de chance de toucher avec un coup de poing américain\n", - L"+%d%s de dégâts des attaques au corps à corps (mains nues ou avec un coup de poing américain)\n", - L"+%d%s de dégâts sur le souffle des attaques au corps à corps (mains nues ou avec un coup de poing américain)\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend en peu de temps à récupérer\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend un peu plus de temps à récupérer\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend plus de temps à récupérer\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend beaucoup plus de temps à récupérer\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend énormément de temps à récupérer\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et met des heures à récupérer\n", - L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et va sûrement ne pas se relever\n", - L"Le coups de poing va faire +%d%s de dégâts en plus\n", - L"Votre coup de pied spécial va faire +%d%s de dégâts en plus\n", - L"+%d%s de chance d'esquiver une attaque au corps à corps\n", - L"+%d%s de chance d'esquiver une attaque au corps à corps à mains nues", - L" ou avec le coup de poing américain", - L" (+%d%s avec le coup de poing américain)", - L"+%d%s de chance d'esquiver une attaque au corps à corps avec un coup de poing américain\n", - L"+%d%s de chance d'esquiver une attaque de n'importe quelle arme de mêlée\n", - L"-%d%s du nombre de PA nécessaire pour voler l'arme de son ennemi\n", - L"-%d%s du nombre de PA nécessaire pour changer de posture (debout, accroupie, coucher), se retourner, monter/descendre du toit et sauter les obstacles\n", - L"-%d%s du nombre de PA nécessaire pour changer de posture (debout, accroupie, coucher)\n", - L"-%d%s du nombre de PA nécessaire pour se retourner\n", - L"-%d%s du nombre de PA nécessaire pour monter/descendre du toit et sauter les obstacles\n", - L"+%d%s de chance d'ouvrir la porte\n", - L"Vous obtenez une animation spéciale pour votre combat au corps à corps\n", - L"-%d%s de chance d'être interrompu quand vous bougez\n", - -}; -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s de PA par tour pour les mercenaires aux alentours\n", - L"+%d d'expérience effective pour les mercenaires aux alentours possédant un niveau plus bas que : %s\n", - L"+%d d'expérience effective pour le calcul de l'aide apportée à un coéquipier avec un tir de couverture\n", - L"+%d%s de tolérance aux tirs de couverture pour les mercenaires aux alentours et %s pour soi\n", - L"+%d de gain de moral pour les mercenaires aux alentours\n", - L"-%d de perte de moral pour les mercenaires aux alentours\n", - L"Bonus valables pour %d cases aux alentours", - L" (%d cases pour en encadrement élargi)", - L"(Le maximum de bonus simultané pour un joueur est de %d)\n", - L"+%d%s de résistance à la peur du %s\n", - L"Inconvénient : %dx perte de moral à la mort du %s pour les autres mercenaires\n", - L"+%d%s chance de déclencher des interruptions de groupe\n", - -}; -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s de vitesse de réparation\n", - L"+%d%s pour le crochetage (serrure normale/électronique)\n", - L"+%d%s pour désactiver un piège électronique\n", - L"+%d%s pour attacher un objet spécial ou combiner différents objets\n", - L"+%d%s pour débloquer une arme en plein combat\n", - L"Réduit la pénalité pour réparer les objets électroniques de %d%s\n", - L"Augmente la chance de repérer les mines et les pièges (+%d par niveau de détection)\n", - L"+%d%s de chance de toucher avec le robot contrôlé par %s\n", - L"%s vous accorde la capacité de réparer le robot\n", - L"Pénalité réduite sur la vitesse à réparer le robot de %d%s\n", - L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate -}; -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"A les talents pour faire une opération chirurgicale, en utilisant une trousse médicale, sur le soldat blessé\n", - L"La chirurgie rend immédiatement %d%s de santé perdue.", - L" (Cela consomme une grande partie de la trousse médicale.)", - L"Peut guérir des stats perdues par les coups critiques par le", - L" chirurgien ou", - L" le docteur assigné.\n", - L"+%d%s de l'efficacité du docteur assigné\n", - L"+%d%s de vitesse de bandage\n", - L"+%d%s de la vitesse de régénération naturelle de tous soldats présent dans le même secteur", - L" (un maximum de %d bonus par secteur)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate - -}; -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Peut se déguiser en civil ou en soldat pour se glisser derrière les lignes ennemies\n", - L"Sera détecté(e) par des actions suspectes ou un paquetage douteux\nou d'être près d'un cadavre encore chaud\n", - L"Sera automatiquement détecté(e) avec un\ndéguisement de soldat à %d cases d'un ennemi\n", - L"Sera automatiquement détecté(e) avec un déguisement de soldat à %d cases d'un cadavre encore chaud\n", - L"+%d%s de chance de toucher avec une arme d'espion\n", - L"+%d%s de chance de tuer un ennemi instantanément avec une arme d'espion\n", - L"Le nombre de PA pour se déguiser, est réduit de %d%s\n", - L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= -{ - L"Peut utiliser du matériel de communication\n", - L"Peut demander des tirs d'artillerie alliés des secteurs voisins.\n", - L"Via l'assignation 'Balayer les fréquences', les patrouilles ennemies seront localisées.\n", - L"Les communications peuvent être brouillées à l'échelle d'un secteur.\n", - L"Si les communications sont brouillées, l'opérateur peut rechercher la source du brouillage.\n", - L"Peut appeler la milice des secteurs voisins en renfort.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"Pas de bonus", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate - L"+%d%s de vitesse de rechargement d'une arme avec un chargeur\n", - L"+%d%s de vitesse de rechargement d'une arme avec des cartouches\n", - L"-%d%s du nombre de PA nécessaire pour prendre un objet\n", - L"-%d%s du nombre de PA nécessaire pour utiliser le sac à dos\n", - L"-%d%s du nombre de PA nécessaire pour ouvrir une porte\n", - L"-%d%s du nombre de PA nécessaire pour poser/retirer un explosif ou une mine\n", - L"-%d%s du nombre de PA nécessaire pour attacher des objets entre eux\n", -}; -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s du nombre de PA nécessaire pour attaquer avec une arme blanche\n", - L"+%d%s de chance de toucher avec une arme blanche\n", - L"+%d%s de chance de toucher avec une arme de mêlée\n", - L"+%d%s de dégâts par une arme blanche\n", - L"+%d%s de dégâts par une arme de mêlée\n", - L"L'attaque visée par n'importe quelle arme de mêlée cause +%d%s de dégâts\n", - L"+%d%s de chance d'esquiver des attaques avec une arme blanche\n", - L"+%d%s de chance d'esquiver une attaque avec une arme blanche, si vous avez une arme blanche à la main\n", - L"+%d%s de chance d'esquiver une attaque avec une arme de mêlée\n", - L"+%d%s de chance d'esquiver une attaque avec une arme de mêlée, si vous avez une arme de mêlée à la main\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s du nombre de PA nécessaire pour lancer un couteau\n", - L"+%d%s de distance maximum quand vous lancez un couteau\n", - L"+%d%s de chance de toucher votre cible en lançant un couteau\n", - L"+%d%s de chance de toucher votre cible par niveau de visée en lançant un couteau\n", - L"+%d%s de dégâts avec votre lancer de couteau\n", - L"+%d%s de dégâts avec votre lancer de couteau par niveau de visée\n", - L"+%d%s de chance d'infliger des dégâts critiques en lançant un couteau, si vous n'êtes pas vue ou entendu\n", - L"+%d de dégâts critiques, si vous lancez plusieurs couteaux\n", - L"Ajoute %d niveau(x) de visée pour lancer un couteau\n", - L"Ajoute %d niveau(x) de visée pour lancer un couteau\n", - L"-%d%s du nombre de PA nécessaire pour lancer une grenade\n", - L"+%d%s de la portée maximale d'une grenade\n", - L"+%d%s de chance de toucher votre cible avec une grenade\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"Vue effective augmentée de +%d pendant la nuit\n", - L"Audition augmentée de +%d\n", - L"Audition augmentée de +%d lorsque vous êtes en hauteur\n", - L"+%d de chance d'interrompre une action d'un ennemi pendant la nuit\n", - L"Le besoin de dormir est réduit de -%d\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s du nombre de PA nécessaire pour bouger silencieusement\n", - L"+%d%s de chance de bouger silencieusement\n", - L"+%d%s en discrétion (étant invisible, si inaperçu)\n", - L"Réduit la pénalité due au déplacement discrétion de %d%s\n", - L"-%d%s de chances d'être interrompu\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s du nombre de PA nécessaire pour bouger (courir, marcher, s'accroupir, ramper, nager, etc.)\n", - L"-%d%s d'énergie dépensée pour les mouvements, monter sur les toits, sauter les obstacles, etc.\n", -}; -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"A %d%s de résistance aux dégâts\n", - L"+%d%s de force effective pour porter de lourdes charges\n", - L"Réduit la perte d'énergie lorsque vous êtes touché au corps à corps de %d%s\n", - L"Augmente de %d%s les dégâts nécessaires pour tomber à terre quand vous êtes touché aux jambes\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s de dégâts causés par un explosif ou une mine\n", - L"+%d%s pour contrôler un détonateur\n", - L"+%d%s pour placer/retirer un contrôleur d'explosif\n", - L"Diminue la chance que l'ennemi puisse détecter vos explosifs/mines (+%d par niveau d'explosif)\n", - L"Augmente la chance de former une plus grosse détonation quand l'ennemi ouvrira une porte piégée (dégâts multipliés par %d)\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"+%d%s de bonus pour entraîner la milice\n", - L"+%d%s de bonus en commandement pour entraîner la milice\n", - L"+%d%s de bonus pour entraîner d'autres mercenaires\n", - L"Il faut que votre compétence soit supérieure à +%d pour être capable d'enseigner cette habilité à un autre mercenaire\n", - L"+%d%s de bonus lorsque vous vous entraînez tout seul\n", - -}; -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% de distance effective avec une lunette de visée sur votre arme\n", - L"+%d%% de distance effective avec vos jumelles (et la lunette de visée séparée de votre arme)\n", - L"-%d%% de vues étroites avec vos jumelles (et la lunette de visée séparée de votre arme)\n", - L"Si vous êtes dans le secteur, vous saurez le nombre exact d'ennemis présents dans les secteurs alentours\n", - L"Si vous êtes dans le secteur, vous saurez la présence au non d'ennemis dans les secteurs alentours\n", - L"Empêche l'ennemi de prendre en embuscade votre escouade\n", - L"Empêche les chats sauvages de prendre en embuscade votre escouade\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Vous informera à l'occasion sur les opinions de ses coéquipiers.\n", - L"Dénoncer la mauvaise conduite de ses équipiers (drogue, alcool et chapardage).\n", - L"Peut faire de la propagande dans les villes.\n", - L"Peut recueillir les rumeurs dans les villes.\n", - L"Peut infiltrer les prisons.\n", - L"Augmente votre réputation de %d tous les jours si le moral est bon.\n", - L"+ %d de portée auditive\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate -{ - L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont à pied\n", - L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont dans un véhicule (sauf l'hélicoptère)\n", - L"-%d%s d'énergies nécessaire pour traverser les secteurs\n", - L"-%d%s de pénalités du temps\n", - L"-%d%s de l'usure du camouflage due au temps ou à l'eau\n", - L"Can spot tracks up to %d tiles away\n", // TODO.Translate - - L"%s%d%% disease resistance\n", - L"%s%d%% food consumption\n", - L"%s%d%% water consumption\n", - L"+%d%% snake evasion\n", // TODO.Translate - L"+%d%% d'efficacité du camouflage\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"Pas de bonus", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s de bonus de crochetage\n", // 0 - L"+%d%s de chance de toucher au corps à corps\n", - L"+%d%s de dégâts au corps à corps\n", - L"+%d%s de chance d'esquiver une attaque au corps à corps\n", - L"Élimine la pénalité due à la réparation et à la manipulation\nd'objets électriques (serrures, pièges, détonateurs, etc.)\n", - L"+%d de vision effective pendant la nuit\n", - L"+%d d'audition effective pendant la nuit\n", - L"+%d d'audition effective pendant la nuit sur un toit\n", - L"+%d de chance d'interrompre un ennemi pendant la nuit\n", - L"Le besoin de dormir est réduit de -%d\n", - L"+%d%s de distance maximale lors d'un lancer quelconque\n", // 10 - L"+%d%s de chance de toucher lors d'un lancer quelconque\n", - L"+%d%s de chance de tuer instantanément en lançant un couteau, si vous n'êtes pas vu ou entendu\n", - L"+%d%s de bonus pour entraîner la milice et enseigner les autres mercenaires\n", - L"+%d%s en commandement lors de l'entraînement de la milice mobile\n", - L"+%d%s de chance de toucher votre cible avec une roquette/grenade ou un mortier\n", - L"La pénalité due au tir en mode automatique est réduite de %d\n", - L"Réduit la probabilité d'un tir en mode automatique non voulu\n", - L"+%d%s de chance de bouger silencieusement\n", - L"+%d%s en ruse (étant invisible, si inaperçu)\n", - L"Élimine la pénalité lorsque vous tirez avec une arme dans chaque main à la suite\n", // 20 - L"+%d%s de chance de toucher avec une arme de mêlée\n", - L"+%d%s de chance d'esquiver une attaque de mêlée, si vous avez une arme blanche dans la main\n", - L"+%d%s de chance d'esquiver une attaque de mêlée, si vous avez quelque chose d'autre dans la main\n", - L"+%d%s de chance d'esquiver une attaque au corps à corps, si vous avez une arme blanche dans la main\n", - L"-%d%s de distance effective nécessaire pour viser votre cible avec n'importe quelle arme\n", - L"+%d%s de bonus par niveau de visée\n", - L"Fournit un camouflage permanent\n", - L"+%d%s de chance de toucher au corps à corps\n", - L"+%d%s de dégâts au corps à corps\n", - L"+%d%s de chance d'esquiver une attaque au corps à corps, si vous avez les mains vides\n", // 30 - L"+%d%s de chance d'esquiver une attaque au corps à corps, si vous n'avez pas les mains vides\n", - L"+%d%s de chance d'esquiver une attaque avec une arme de mêlée\n", - L"Peut faire un coup de pied à des ennemis affaiblis qui fera le double de dégâts\n", - L"Vous obtenez une animation spéciale pour votre combat au corps à corps\n", - L"Pas de bonus", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"+ : Pas d'avantages.\n- : Pas de désavantages.", - L"+ : A de meilleures performances lorsque deux ou trois mercenaires sont proches.\n- : Ne gagne aucun moral quand aucun mercenaire est proche de lui.", - L"+ : A de meilleures performances quand il est tout seul.\n- : Ne gagne aucun moral quand il est en groupe.", - L"+ : Son moral diminue plus doucement et remonte plus rapidement que la normale.\n- : A moins de chance de détecter les mines et les pièges.", - L"+ : Obtiens un bonus lorsqu'il entraîne la milice et à une meilleure communication.\n- : Ne gagne aucun moral pour les actions des autres mercenaires.", - L"+ : Apprend plus rapidement en étant le professeur ou l'élève.\n- : A moins de résistance à la peur lors d'un tir de couverture.", - L"+ : Son énergie descend un peu plus lentement sauf lorsqu'il est docteur, qu'il répare, qu'il entraîne ou qu'il apprend.\n- : Ses compétences en sagesse, commandement, explosifs, mécanique et médecine s'améliorent légèrement plus lentement.", - L"+ : A un peu plus de chance de toucher lors d'un tir automatique et inflige plus de dégâts au corps à corps.\n Obtiens un peu plus de morale lors d'un décès.\n- : A une pénalité lorsqu'il faut de la patience comme réparer des objets, déverrouiller une serrure, enlever des pièges, entraîner la milice.", - L"+ : A un bonus lorsqu'il faut de la patience comme réparer des objets, déverrouiller une serrure, enlever des pièges, entraîner la milice.\n- : Sa chance d'interrompre une action ennemie est légèrement diminuée.", - L"+ : Augmente la résistance à la peur lors d'un tir de couverture.\n La perte de moral due aux dégâts reçus et à la mort d'un mercenaire est moindre.\n- : Vous êtes plus facilement vulnérable et l'ennemi a sa pénalité due à votre mouvement, réduite.", - L"+ : Gagne du moral lorsque vous faites une mission qui n'est pas liée au combat (excepté l'entraînement de milice).\n- : Pas de gains lorsque vous tuez quelqu'un.", - L"+ : A plus de chance d'infliger des pertes de stats sur l'ennemi, qui peut aussi infliger de lourds dégâts.\n Gagne du moral lorsque vous infligez des pertes de stats sur l'ennemi.\n- : A une pénalité pour la communication et son moral baisse plus rapidement lorsqu'il ne combat pas.", - L"+ : A de meilleures performances lorsqu'un certain type d'ennemi est opposé à lui.\n- : Les mercenaires qui possèdent le même type que l'ennemi gagne moins de moral.", - L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate - -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"Pas d'effets.", - L"A des problèmes de souffle/respiration et ses performances globales\nsont diminuées lorsqu'il est dans des zones tropicales ou désertiques.", - L"Peut souffrir de panique, s'il est laissé seul dans certaines situations.", - L"Ses performances globales sont réduites, s'il se trouve dans un sous-sol.", - L"Peut facilement se noyer, s'il essaye de nager.", - L"La vue de gros insectes, peut lui poser de gros problèmes\net être dans une zone tropicale lui réduit aussi\nlégèrement ses performances globales.", - L"Peut parfois perdre les ordres donnés et ainsi perdre des PA lors d'un combat.", - L"Il peut devenir psychopathe et tirer comme un fou de temps en temps\net peut perdre du moral, s'il n'est pas capable d'utiliser son arme.", - L"Audition considérablement réduite.", - L"Distance de vision réduit.", - L"Drastically increased bleeding.", // TODO.Translate - L"Performance suffers while on a rooftop.", // TODO.Translate - L"Occasionally harms self.", -}; - - - -STR16 gzIMPProfileCostText[]= -{ - L"Ce profil coûte %d$. Voulez-vous autoriser ce paiement ? ", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"Vous ne pouvez pas choisir le nouveau système de compétences avec l'outil PROFEX désactivé. Regardez votre fichier JA2_Options.ini avec l'entrée : READ_PROFILE_DATA_FROM_XML.", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"Vous avez choisi le mode IRON MAN. La difficulté du jeu s'en trouvera considérablement augmentée du fait de l'impossibilité de sauvegarder en territoire ennemi. Ce paramètre prendra effet tout au long de la partie. Êtes-vous vraiment sûr de vouloir jouer en mode IRON MAN ?", - L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?",// TODO.Translate - L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?",// TODO.Translate -}; - -STR16 gzDisplayCoverText[]= -{ - L"Contraste : %d/100 %s, Luminosité : %d/100", - L"Distance de tir : %d/%d cases, chance de toucher : %d/100", - L"Distance de tir : %d/%d cases, stabilité du canon : %d/100", - L"Désactivation de la couverture de l'affichage", - L"Afficher le champ de vision du mercenaire sélectionné.", - L"Afficher les zones de danger du(es) mercenaire(s)", - L"Bois", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Urbain", - L"Désert", - L"Neige", - L"Bois et désert", - L"Bois et urbain", - L"Bois et neige", - L"Désert et urbain", - L"Désert et neige", - L"Urbain et neige", - L"-", // yes empty for now // TODO.Translate - L"Cover: %d/100, Brightness: %d/100", - L"Footstep volume", - L"Stealth difficulty", - L"Trap level", -}; - - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("FRENCH") + + #ifdef FRENCH + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25FrenchText_public_symbol(void){;} + +#ifdef FRENCH + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + L"Crochetage", + L"Corps à corps", + L"Électronique", + L"Opérations de nuit", + L"Lancer", + L"Instructeur", + L"Armes lourdes", + L"Armes automatiques", + L"Discrétion", + L"Ambidextre", + L"Couteau", + L"Tireur isolé", + L"Camouflage", + L"Arts martiaux", + + L"aucune", + L"IMP : Spécialtés", + L"(Expert)", + +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Armes automatiques", + L"Armes lourdes", + L"Tireur d'élite", + L"Éclaireur", + L"Flingueur", + L"Arts martiaux", + L"Meneur", + L"Technicien", + L"Médecin", + L"Déguisement", + + L"Personne", + L"IMP : Traits pincipaux", + // second names + L"Mitrailleur", + L"Bombardier", + L"Sniper", + L"Chasseur", + L"Combattant", + L"Arts martiaux", + L"Commandant", + L"Ingénieur", + L"Chirurgien", + L"Espion", +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Ambidextre", + L"Mêlée", + L"Le lancer", + L"Opérations de nuit", + L"Discrétion", + L"Athlétique", + L"Culturiste", + L"Sabotage", + L"Instructeur", + L"Reconnaissance", + L"Opérateur radio", + L"Survival", //TODO.Translate + + L"Personne", + L"IMP : Traits mineurs", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s de chance de toucher avec un fusil d'assaut\n", + L"+%d%s de chance de toucher avec un pistolet mitrailleur\n", + L"+%d%s de chance de toucher avec une mitrailleuse légère\n", + L"-%d%s du nombre de PA nécessaire pour tirer avec une mitrailleuse légère\n", + L"-%d%s du nombre de PA nécessaire pour préparer une arme automatique légère\n", + L"La pénalité due au mode rafale/auto, est réduite de %d%s\n", + L"Réduire la probabilité de tirer plus de balles que prévu en mode auto\n", + +}; +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s du nombre de PA nécessaire pour lancer une grenade\n", + L"-%d%s du nombre de PA nécessaire pour tirer une roquette\n", + L"+%d%s de chance de toucher avec une grenade\n", + L"+%d%s de chance de toucher avec une roquette\n", + L"-%d%s du nombre de PA nécessaire pour tirer au mortier\n", + L"Réduit la pénalité de chance de toucher du mortier de %d%s\n", + L"+%d%s dégâts fait à un char avec une arme lourde, grenades ou explosifs\n", + L"+%d%s dégâts fait sur les autres cibles avec une arme lourde\n", + +}; +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s de chance de toucher avec un fusil\n", + L"+%d%s de chance de toucher avec une arme de précision\n", + L"-%d%s de la distance effective de toutes les armes pour viser\n", + L"+%d%s de bonus par niveau de visée (excepté pour les pistolets)\n", + L"+%d%s de dégâts sur tir", + L" plus", + L" pour chaque niveau", + L" après le premier", + L" après le deuxième", + L" après le troisième", + L" après le quatrième", + L" après le cinquième", + L" après le sixième", + L" après le septième", + L"-%d%s du nombre de PA nécessaire pour recharger avec un fusil à action manuelle\n", + L"Ajoute un niveau de visée en plus pour chaque fusil\n", + L"Ajoute %d niveau(x) de visée pour chaque fusil\n", + + L"Fait viser plus rapidement avec un : réduit d'un niveau de visée\n", + L"Fait viser plus rapidement avec un fusil : réduit de %d niveau(x) de visée\n", + L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate + +}; +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s de chance de toucher avec un fusil\n", + L"+%d%s de chance de toucher avec un fusil à pompe\n", + L"-%d%s du nombre de PA nécessaire pour recharger le fusil à pompe\n", + L"-%d%s PA pour tirer avec les fusils à pompe\n", + L"Ajoute un niveau de visée pour les fusils à pompe\n", + L"Ajoute %d niveaux de visée pour les fusils à pompe\n", + L"+%d%s effective range with Shotguns\n", // TODO.Translate + L"-%d%s APs to reload single Shotgun shells\n", // TODO.Translate + L"Adds %d more aim click for Rifles\n", // TODO.Translate + L"Adds %d more aim clicks for Rifles\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s du nombre de PA nécessaire pour tirer avec un pistolet ou un revolver\n", + L"+%d%s de la distance effective avec un pistolet ou un revolver pour viser\n", + L"+%d%s de chance de toucher avec un pistolet ou un revolver\n", + L"+%d%s de chance de toucher avec un pistolet automatique", + L" (en tir manuel seulement)", + L"+%d%s de bonus par niveau de visée avec un pistolet, pistolet automatique ou un revolver\n", + L"-%d%s du nombre de PA nécessaire pour dégainer un pistolet, pistolet automatique ou un revolver\n", + 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[]= +{ + L"-%d%s du nombre de PA nécessaire pour les attaques au corps à corps (mains nues ou avec un coup de poing américain)\n", + L"+%d%s de chance de toucher avec les mains nues\n", + L"+%d%s de chance de toucher avec un coup de poing américain\n", + L"+%d%s de dégâts des attaques au corps à corps (mains nues ou avec un coup de poing américain)\n", + L"+%d%s de dégâts sur le souffle des attaques au corps à corps (mains nues ou avec un coup de poing américain)\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend en peu de temps à récupérer\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend un peu plus de temps à récupérer\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend plus de temps à récupérer\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend beaucoup plus de temps à récupérer\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et prend énormément de temps à récupérer\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et met des heures à récupérer\n", + L"L'ennemi est abasourdi en raison de votre attaque au corps à corps et va sûrement ne pas se relever\n", + L"Le coups de poing va faire +%d%s de dégâts en plus\n", + L"Votre coup de pied spécial va faire +%d%s de dégâts en plus\n", + L"+%d%s de chance d'esquiver une attaque au corps à corps\n", + L"+%d%s de chance d'esquiver une attaque au corps à corps à mains nues", + L" ou avec le coup de poing américain", + L" (+%d%s avec le coup de poing américain)", + L"+%d%s de chance d'esquiver une attaque au corps à corps avec un coup de poing américain\n", + L"+%d%s de chance d'esquiver une attaque de n'importe quelle arme de mêlée\n", + L"-%d%s du nombre de PA nécessaire pour voler l'arme de son ennemi\n", + L"-%d%s du nombre de PA nécessaire pour changer de posture (debout, accroupie, coucher), se retourner, monter/descendre du toit et sauter les obstacles\n", + L"-%d%s du nombre de PA nécessaire pour changer de posture (debout, accroupie, coucher)\n", + L"-%d%s du nombre de PA nécessaire pour se retourner\n", + L"-%d%s du nombre de PA nécessaire pour monter/descendre du toit et sauter les obstacles\n", + L"+%d%s de chance d'ouvrir la porte\n", + L"Vous obtenez une animation spéciale pour votre combat au corps à corps\n", + L"-%d%s de chance d'être interrompu quand vous bougez\n", + +}; +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s de PA par tour pour les mercenaires aux alentours\n", + L"+%d d'expérience effective pour les mercenaires aux alentours possédant un niveau plus bas que : %s\n", + L"+%d d'expérience effective pour le calcul de l'aide apportée à un coéquipier avec un tir de couverture\n", + L"+%d%s de tolérance aux tirs de couverture pour les mercenaires aux alentours et %s pour soi\n", + L"+%d de gain de moral pour les mercenaires aux alentours\n", + L"-%d de perte de moral pour les mercenaires aux alentours\n", + L"Bonus valables pour %d cases aux alentours", + L" (%d cases pour en encadrement élargi)", + L"(Le maximum de bonus simultané pour un joueur est de %d)\n", + L"+%d%s de résistance à la peur du %s\n", + L"Inconvénient : %dx perte de moral à la mort du %s pour les autres mercenaires\n", + L"+%d%s chance de déclencher des interruptions de groupe\n", + +}; +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s de vitesse de réparation\n", + L"+%d%s pour le crochetage (serrure normale/électronique)\n", + L"+%d%s pour désactiver un piège électronique\n", + L"+%d%s pour attacher un objet spécial ou combiner différents objets\n", + L"+%d%s pour débloquer une arme en plein combat\n", + L"Réduit la pénalité pour réparer les objets électroniques de %d%s\n", + L"Augmente la chance de repérer les mines et les pièges (+%d par niveau de détection)\n", + L"+%d%s de chance de toucher avec le robot contrôlé par %s\n", + L"%s vous accorde la capacité de réparer le robot\n", + L"Pénalité réduite sur la vitesse à réparer le robot de %d%s\n", + L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate +}; +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"A les talents pour faire une opération chirurgicale, en utilisant une trousse médicale, sur le soldat blessé\n", + L"La chirurgie rend immédiatement %d%s de santé perdue.", + L" (Cela consomme une grande partie de la trousse médicale.)", + L"Peut guérir des stats perdues par les coups critiques par le", + L" chirurgien ou", + L" le docteur assigné.\n", + L"+%d%s de l'efficacité du docteur assigné\n", + L"+%d%s de vitesse de bandage\n", + L"+%d%s de la vitesse de régénération naturelle de tous soldats présent dans le même secteur", + L" (un maximum de %d bonus par secteur)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate + +}; +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Peut se déguiser en civil ou en soldat pour se glisser derrière les lignes ennemies\n", + L"Sera détecté(e) par des actions suspectes ou un paquetage douteux\nou d'être près d'un cadavre encore chaud\n", + L"Sera automatiquement détecté(e) avec un\ndéguisement de soldat à %d cases d'un ennemi\n", + L"Sera automatiquement détecté(e) avec un déguisement de soldat à %d cases d'un cadavre encore chaud\n", + L"+%d%s de chance de toucher avec une arme d'espion\n", + L"+%d%s de chance de tuer un ennemi instantanément avec une arme d'espion\n", + L"Le nombre de PA pour se déguiser, est réduit de %d%s\n", + L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= +{ + L"Peut utiliser du matériel de communication\n", + L"Peut demander des tirs d'artillerie alliés des secteurs voisins.\n", + L"Via l'assignation 'Balayer les fréquences', les patrouilles ennemies seront localisées.\n", + L"Les communications peuvent être brouillées à l'échelle d'un secteur.\n", + L"Si les communications sont brouillées, l'opérateur peut rechercher la source du brouillage.\n", + L"Peut appeler la milice des secteurs voisins en renfort.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"Pas de bonus", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate + L"+%d%s de vitesse de rechargement d'une arme avec un chargeur\n", + L"+%d%s de vitesse de rechargement d'une arme avec des cartouches\n", + L"-%d%s du nombre de PA nécessaire pour prendre un objet\n", + L"-%d%s du nombre de PA nécessaire pour utiliser le sac à dos\n", + L"-%d%s du nombre de PA nécessaire pour ouvrir une porte\n", + L"-%d%s du nombre de PA nécessaire pour poser/retirer un explosif ou une mine\n", + L"-%d%s du nombre de PA nécessaire pour attacher des objets entre eux\n", +}; +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s du nombre de PA nécessaire pour attaquer avec une arme blanche\n", + L"+%d%s de chance de toucher avec une arme blanche\n", + L"+%d%s de chance de toucher avec une arme de mêlée\n", + L"+%d%s de dégâts par une arme blanche\n", + L"+%d%s de dégâts par une arme de mêlée\n", + L"L'attaque visée par n'importe quelle arme de mêlée cause +%d%s de dégâts\n", + L"+%d%s de chance d'esquiver des attaques avec une arme blanche\n", + L"+%d%s de chance d'esquiver une attaque avec une arme blanche, si vous avez une arme blanche à la main\n", + L"+%d%s de chance d'esquiver une attaque avec une arme de mêlée\n", + L"+%d%s de chance d'esquiver une attaque avec une arme de mêlée, si vous avez une arme de mêlée à la main\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s du nombre de PA nécessaire pour lancer un couteau\n", + L"+%d%s de distance maximum quand vous lancez un couteau\n", + L"+%d%s de chance de toucher votre cible en lançant un couteau\n", + L"+%d%s de chance de toucher votre cible par niveau de visée en lançant un couteau\n", + L"+%d%s de dégâts avec votre lancer de couteau\n", + L"+%d%s de dégâts avec votre lancer de couteau par niveau de visée\n", + L"+%d%s de chance d'infliger des dégâts critiques en lançant un couteau, si vous n'êtes pas vue ou entendu\n", + L"+%d de dégâts critiques, si vous lancez plusieurs couteaux\n", + L"Ajoute %d niveau(x) de visée pour lancer un couteau\n", + L"Ajoute %d niveau(x) de visée pour lancer un couteau\n", + L"-%d%s du nombre de PA nécessaire pour lancer une grenade\n", + L"+%d%s de la portée maximale d'une grenade\n", + L"+%d%s de chance de toucher votre cible avec une grenade\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"Vue effective augmentée de +%d pendant la nuit\n", + L"Audition augmentée de +%d\n", + L"Audition augmentée de +%d lorsque vous êtes en hauteur\n", + L"+%d de chance d'interrompre une action d'un ennemi pendant la nuit\n", + L"Le besoin de dormir est réduit de -%d\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s du nombre de PA nécessaire pour bouger silencieusement\n", + L"+%d%s de chance de bouger silencieusement\n", + L"+%d%s en discrétion (étant invisible, si inaperçu)\n", + L"Réduit la pénalité due au déplacement discrétion de %d%s\n", + L"-%d%s de chances d'être interrompu\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s du nombre de PA nécessaire pour bouger (courir, marcher, s'accroupir, ramper, nager, etc.)\n", + L"-%d%s d'énergie dépensée pour les mouvements, monter sur les toits, sauter les obstacles, etc.\n", +}; +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"A %d%s de résistance aux dégâts\n", + L"+%d%s de force effective pour porter de lourdes charges\n", + L"Réduit la perte d'énergie lorsque vous êtes touché au corps à corps de %d%s\n", + L"Augmente de %d%s les dégâts nécessaires pour tomber à terre quand vous êtes touché aux jambes\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s de dégâts causés par un explosif ou une mine\n", + L"+%d%s pour contrôler un détonateur\n", + L"+%d%s pour placer/retirer un contrôleur d'explosif\n", + L"Diminue la chance que l'ennemi puisse détecter vos explosifs/mines (+%d par niveau d'explosif)\n", + L"Augmente la chance de former une plus grosse détonation quand l'ennemi ouvrira une porte piégée (dégâts multipliés par %d)\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"+%d%s de bonus pour entraîner la milice\n", + L"+%d%s de bonus en commandement pour entraîner la milice\n", + L"+%d%s de bonus pour entraîner d'autres mercenaires\n", + L"Il faut que votre compétence soit supérieure à +%d pour être capable d'enseigner cette habilité à un autre mercenaire\n", + L"+%d%s de bonus lorsque vous vous entraînez tout seul\n", + +}; +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% de distance effective avec une lunette de visée sur votre arme\n", + L"+%d%% de distance effective avec vos jumelles (et la lunette de visée séparée de votre arme)\n", + L"-%d%% de vues étroites avec vos jumelles (et la lunette de visée séparée de votre arme)\n", + L"Si vous êtes dans le secteur, vous saurez le nombre exact d'ennemis présents dans les secteurs alentours\n", + L"Si vous êtes dans le secteur, vous saurez la présence au non d'ennemis dans les secteurs alentours\n", + L"Empêche l'ennemi de prendre en embuscade votre escouade\n", + L"Empêche les chats sauvages de prendre en embuscade votre escouade\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Vous informera à l'occasion sur les opinions de ses coéquipiers.\n", + L"Dénoncer la mauvaise conduite de ses équipiers (drogue, alcool et chapardage).\n", + L"Peut faire de la propagande dans les villes.\n", + L"Peut recueillir les rumeurs dans les villes.\n", + L"Peut infiltrer les prisons.\n", + L"Augmente votre réputation de %d tous les jours si le moral est bon.\n", + L"+ %d de portée auditive\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate +{ + L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont à pied\n", + L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont dans un véhicule (sauf l'hélicoptère)\n", + L"-%d%s d'énergies nécessaire pour traverser les secteurs\n", + L"-%d%s de pénalités du temps\n", + L"-%d%s de l'usure du camouflage due au temps ou à l'eau\n", + L"Can spot tracks up to %d tiles away\n", // TODO.Translate + + L"%s%d%% disease resistance\n", + L"%s%d%% food consumption\n", + L"%s%d%% water consumption\n", + L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% d'efficacité du camouflage\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"Pas de bonus", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s de bonus de crochetage\n", // 0 + L"+%d%s de chance de toucher au corps à corps\n", + L"+%d%s de dégâts au corps à corps\n", + L"+%d%s de chance d'esquiver une attaque au corps à corps\n", + L"Élimine la pénalité due à la réparation et à la manipulation\nd'objets électriques (serrures, pièges, détonateurs, etc.)\n", + L"+%d de vision effective pendant la nuit\n", + L"+%d d'audition effective pendant la nuit\n", + L"+%d d'audition effective pendant la nuit sur un toit\n", + L"+%d de chance d'interrompre un ennemi pendant la nuit\n", + L"Le besoin de dormir est réduit de -%d\n", + L"+%d%s de distance maximale lors d'un lancer quelconque\n", // 10 + L"+%d%s de chance de toucher lors d'un lancer quelconque\n", + L"+%d%s de chance de tuer instantanément en lançant un couteau, si vous n'êtes pas vu ou entendu\n", + L"+%d%s de bonus pour entraîner la milice et enseigner les autres mercenaires\n", + L"+%d%s en commandement lors de l'entraînement de la milice mobile\n", + L"+%d%s de chance de toucher votre cible avec une roquette/grenade ou un mortier\n", + L"La pénalité due au tir en mode automatique est réduite de %d\n", + L"Réduit la probabilité d'un tir en mode automatique non voulu\n", + L"+%d%s de chance de bouger silencieusement\n", + L"+%d%s en ruse (étant invisible, si inaperçu)\n", + L"Élimine la pénalité lorsque vous tirez avec une arme dans chaque main à la suite\n", // 20 + L"+%d%s de chance de toucher avec une arme de mêlée\n", + L"+%d%s de chance d'esquiver une attaque de mêlée, si vous avez une arme blanche dans la main\n", + L"+%d%s de chance d'esquiver une attaque de mêlée, si vous avez quelque chose d'autre dans la main\n", + L"+%d%s de chance d'esquiver une attaque au corps à corps, si vous avez une arme blanche dans la main\n", + L"-%d%s de distance effective nécessaire pour viser votre cible avec n'importe quelle arme\n", + L"+%d%s de bonus par niveau de visée\n", + L"Fournit un camouflage permanent\n", + L"+%d%s de chance de toucher au corps à corps\n", + L"+%d%s de dégâts au corps à corps\n", + L"+%d%s de chance d'esquiver une attaque au corps à corps, si vous avez les mains vides\n", // 30 + L"+%d%s de chance d'esquiver une attaque au corps à corps, si vous n'avez pas les mains vides\n", + L"+%d%s de chance d'esquiver une attaque avec une arme de mêlée\n", + L"Peut faire un coup de pied à des ennemis affaiblis qui fera le double de dégâts\n", + L"Vous obtenez une animation spéciale pour votre combat au corps à corps\n", + L"Pas de bonus", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"+ : Pas d'avantages.\n- : Pas de désavantages.", + L"+ : A de meilleures performances lorsque deux ou trois mercenaires sont proches.\n- : Ne gagne aucun moral quand aucun mercenaire est proche de lui.", + L"+ : A de meilleures performances quand il est tout seul.\n- : Ne gagne aucun moral quand il est en groupe.", + L"+ : Son moral diminue plus doucement et remonte plus rapidement que la normale.\n- : A moins de chance de détecter les mines et les pièges.", + L"+ : Obtiens un bonus lorsqu'il entraîne la milice et à une meilleure communication.\n- : Ne gagne aucun moral pour les actions des autres mercenaires.", + L"+ : Apprend plus rapidement en étant le professeur ou l'élève.\n- : A moins de résistance à la peur lors d'un tir de couverture.", + L"+ : Son énergie descend un peu plus lentement sauf lorsqu'il est docteur, qu'il répare, qu'il entraîne ou qu'il apprend.\n- : Ses compétences en sagesse, commandement, explosifs, mécanique et médecine s'améliorent légèrement plus lentement.", + L"+ : A un peu plus de chance de toucher lors d'un tir automatique et inflige plus de dégâts au corps à corps.\n Obtiens un peu plus de morale lors d'un décès.\n- : A une pénalité lorsqu'il faut de la patience comme réparer des objets, déverrouiller une serrure, enlever des pièges, entraîner la milice.", + L"+ : A un bonus lorsqu'il faut de la patience comme réparer des objets, déverrouiller une serrure, enlever des pièges, entraîner la milice.\n- : Sa chance d'interrompre une action ennemie est légèrement diminuée.", + L"+ : Augmente la résistance à la peur lors d'un tir de couverture.\n La perte de moral due aux dégâts reçus et à la mort d'un mercenaire est moindre.\n- : Vous êtes plus facilement vulnérable et l'ennemi a sa pénalité due à votre mouvement, réduite.", + L"+ : Gagne du moral lorsque vous faites une mission qui n'est pas liée au combat (excepté l'entraînement de milice).\n- : Pas de gains lorsque vous tuez quelqu'un.", + L"+ : A plus de chance d'infliger des pertes de stats sur l'ennemi, qui peut aussi infliger de lourds dégâts.\n Gagne du moral lorsque vous infligez des pertes de stats sur l'ennemi.\n- : A une pénalité pour la communication et son moral baisse plus rapidement lorsqu'il ne combat pas.", + L"+ : A de meilleures performances lorsqu'un certain type d'ennemi est opposé à lui.\n- : Les mercenaires qui possèdent le même type que l'ennemi gagne moins de moral.", + L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate + +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"Pas d'effets.", + L"A des problèmes de souffle/respiration et ses performances globales\nsont diminuées lorsqu'il est dans des zones tropicales ou désertiques.", + L"Peut souffrir de panique, s'il est laissé seul dans certaines situations.", + L"Ses performances globales sont réduites, s'il se trouve dans un sous-sol.", + L"Peut facilement se noyer, s'il essaye de nager.", + L"La vue de gros insectes, peut lui poser de gros problèmes\net être dans une zone tropicale lui réduit aussi\nlégèrement ses performances globales.", + L"Peut parfois perdre les ordres donnés et ainsi perdre des PA lors d'un combat.", + L"Il peut devenir psychopathe et tirer comme un fou de temps en temps\net peut perdre du moral, s'il n'est pas capable d'utiliser son arme.", + L"Audition considérablement réduite.", + L"Distance de vision réduit.", + L"Drastically increased bleeding.", // TODO.Translate + L"Performance suffers while on a rooftop.", // TODO.Translate + L"Occasionally harms self.", +}; + + + +STR16 gzIMPProfileCostText[]= +{ + L"Ce profil coûte %d$. Voulez-vous autoriser ce paiement ? ", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"Vous ne pouvez pas choisir le nouveau système de compétences avec l'outil PROFEX désactivé. Regardez votre fichier JA2_Options.ini avec l'entrée : READ_PROFILE_DATA_FROM_XML.", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"Vous avez choisi le mode IRON MAN. La difficulté du jeu s'en trouvera considérablement augmentée du fait de l'impossibilité de sauvegarder en territoire ennemi. Ce paramètre prendra effet tout au long de la partie. Êtes-vous vraiment sûr de vouloir jouer en mode IRON MAN ?", + L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?",// TODO.Translate + L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?",// TODO.Translate +}; + +STR16 gzDisplayCoverText[]= +{ + L"Contraste : %d/100 %s, Luminosité : %d/100", + L"Distance de tir : %d/%d cases, chance de toucher : %d/100", + L"Distance de tir : %d/%d cases, stabilité du canon : %d/100", + L"Désactivation de la couverture de l'affichage", + L"Afficher le champ de vision du mercenaire sélectionné.", + L"Afficher les zones de danger du(es) mercenaire(s)", + L"Bois", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Urbain", + L"Désert", + L"Neige", + L"Bois et désert", + L"Bois et urbain", + L"Bois et neige", + L"Désert et urbain", + L"Désert et neige", + L"Urbain et neige", + L"-", // yes empty for now // TODO.Translate + L"Cover: %d/100, Brightness: %d/100", + L"Footstep volume", + L"Stealth difficulty", + L"Trap level", +}; + + +#endif diff --git a/i18n/_Ja25GermanText.cpp b/i18n/_Ja25GermanText.cpp index c8c97c16..bd624c95 100644 --- a/i18n/_Ja25GermanText.cpp +++ b/i18n/_Ja25GermanText.cpp @@ -1,531 +1,531 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("GERMAN") - - #ifdef GERMAN - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25GermanText_public_symbol(void){;} - -#ifdef GERMAN - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - L"Schlösser knacken", - L"Nahkampf", - L"Elektronik", - L"Nachteinsatz", - L"Werfen", - L"Lehren", - L"Schwere Waffen", - L"Autom. Waffen", - L"Schleichen", - L"Beidhändig geschickt", - L"Messer", - L"Dach-Treffer Bonus", - L"Getarnt", - L"Kampfsport", - - L"Keine", - L"B.S.E. - Spezialisierungen", - L"(Experte)", -}; - -//added another set of skill texts for new major traits -//Da es mittlerweile einen beruflichen Background für Söldner gibt, habe ich die "Tätigkeitsbezeichnungen" der Traits wieder an das ursprüngliche System angeglichen. -//Die Traits sagen nun aus, in welchem Bereich ein Söldner besondere Fertigkeiten erworben hat. Sie stellen kein Berufsbild dar. Das bleibt dem Background überlassen. -//Vorschläge in alten Kommentaren berücksichtigt. [Leonidas] -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Automatische Waffen", // - L"Granatwaffen", // Vanilla: Schwere Waffen/Heavy Weapons [Leonidas] - L"Scharfschützengewehre", // (Schlechte) Alternative: Präzisionsgewehre [Leonidas] - L"Jagd", // Alternative: Überlebenstraining [Leonidas] – Die Mischung aus/von Flintenboni, Bewegungsboni und Tarnboni ist ungünstig [Leonidas] - L"Pistolen", // - L"Faustkampf", // - L"Teamführung", // - L"Feinmechanik", // - L"Erste Hilfe", // Alternativen: Sanitätsausbildung; Medizin. Versorgung [Leonidas] - L"Verdeckte Operationen", // - - L"Nichts", - L"B.S.E. Hauptfertigkeiten", - - // second names - L"Automatische Waffen\n(Experte)", // (Schlechte) Alternative: Maschinengewehre [Leonidas] - L"Granatwaffen (Experte)", // - L"Scharfschützengewehre\n(Experte)", // - L"Jagd (Experte)", // Alternative: Jagd – Die Mischung aus/von Flintenboni, Bewegungsboni und Tarnboni ist ungünstig [Leonidas] - L"Pistolen (Experte)", // - L"Kampfsport", // - L"Truppenführung", // - L"Feinwerktechnik", // Alternative: Mechatronik [Leonidas] - L"Notfallmedizin", // - L"Geheimoperationen", // -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Beidhändigkeit", // alt. "Beidhändig geschickt" - L"Bewaffneter Nahkampf", // alt. "Hieb- und Stichwaffen" - L"Wurfwaffen", // alt. "Wurfwaffen" - L"Nachteinsätze", // alt. "Nachteinsatz" - L"Schleichen", // alt. "Schleichen" - L"Leichtathletik", // alt. "Athletisch" - L"Kraftsport", // alt. "Bodybuilding" - L"Sprengtechnik", // alt. "Kampfmittel" - L"Ausbilden", // alt. "Lehren" - L"Aufklären", // alt. "Spähen" - L"Funktechnik", // Alternative: Funk, Funkkommunikation [Leonidas] - L"Survival", //TODO.Translate - - L"Keine", - L"B.S.E. Nebenfertigkeiten", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s Trefferchance mit Sturmgewehren\n", - L"+%d%s Trefferchance mit Maschinenpistolen\n", - L"+%d%s Trefferchance mit Maschinengewehren\n", - L"-%d%s APs benötigt für MG-Feuerstöße (Burst/Auto) abzugeben\n", - L"-%d%s APs benötigt um Maschinengewehre auszurichten\n", - L"Trefferratenabzug bei Feuerstößen um %d%s reduziert\n", - L"Geringere Wahrscheinlichkeit bei Feuerstößen ungewollt mehr Schüsse abzugeben\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s APs benötigt um Granatwerfer abzufeuern\n", - L"-%d%s APs benötigt um Raketenwaffen abzufeuern\n", - L"+%d%s Trefferchance mit Granatwerfern\n", - L"+%d%s Trefferchance mit Raketenwaffen\n", - L"-%d%s APs für den Abschuss von Mörsergranaten benötigt\n", - L"Trefferchancenreduktion für Mörser gesenkt um %d%s\n", - L"+%d%s Schaden an Panzern mit Granatwaffen, Granaten und Bomben\n", - L"+%d%s Schaden an allen anderen Zielen mit Granatwaffen\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s Trefferchance mit Büchsen\n", - L"+%d%s Trefferchance mit Scharfschützengewehren\n", - L"-%d%s effektive Reichweite zum Ziel mit allen Waffen\n", - L"+%d%s Zielbonus pro Zielerfassungs-Klick (außer für Faustfeuerwaffen)\n", - L"+%d%s Schaden pro Schuss", - L" plus", - L" für jeden Zielerfassungs-Klick", - L" nach dem ersten", - L" nach dem zweiten", - L" nach dem dritten", - L" nach dem vierten", - L" nach dem fünften", - L" nach dem sechsten", - L" nach dem siebenten", - L"-%d%s APs benötigt um ein Repetiergewehr erneut fertigzuladen.\n", - L"Gibt einen weiteren Ziel-Klick für gewehrartige Waffen\n", - L"Gibt weitere %d Ziel-Klicks für gewehrartige Waffen\n", - L"Schnelleres Zielen mit Gewehren bei genau einem Zielgenauigkeit-Klick\n", - L"Schnelleres Zielen mit Gewehren bei %d Zielgenauigkeit-Klicks\n", - L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate - -}; -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s Trefferchance mit Gewehren\n", - L"+%d%s Trefferchance mit Schrotflinten\n", - L"-%d%s APs benötigt, um Schrotflinten zu repetieren\n", - L"-%d%s APs benötigt, um Schrotflinten abzufeuern\n", - L"Gibt Schrotflinten einen weiteren Zielklick\n", - L"%d weitere Zielklicks für Schrotflinten\n", - L"+%d%s effektive Reichweite mit Schrotflinten\n", - L"-%d%s APs benötigt, um einzelne Schrotpatronen zu laden\n", - L"Gibt Gewehren einen weiteren Zielklick\n", - L"%d weitere Zielklicks für Gewehre\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s APs benötigt um mit Pistolen oder Revolvern zu schießen\n", - L"+%d%s effektive Reichweite mit Pistolen und Revolvern\n", - L"+%d%s Trefferchance mit mit halbautomatischen Pistolen und Revolvern\n", - L"+%d%s Trefferchance mit vollautomatischen Pistolen", - L" (nur bei Einzelfeuer)", - L"+%d%s Zielbonus pro Klick mit halb- und vollautomatischen Pistolen sowie Revolvern\n", - L"-%d%s APs benötigt um Pistolen und Revolver in Vorhalte zu bringe\n", - 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[]= -{ - L"-%d%s AP-Kosten für den Nahkampf (bloße Hände oder mit Schlagring)\n", - L"+%d%s Trefferchance im Nahkampf mit bloßen Händen\n", - L"+%d%s Trefferchance im Nahkampf mit dem Schlagring\n", - L"+%d%s Schaden im Nahkampf (bloße Hände oder mit Schlagring)\n", - L"+%d%s Ausdauerschaden im Nahkampf (bloße Hände oder mit Schlagring)\n", - L"Ein im Nahkampf niedergestreckter Gegner braucht etwas länger um sich zu erholen\n", - L"Ein im Nahkampf niedergestreckter Gegner braucht länger um sich zu erholen\n", - L"Ein im Nahkampf niedergestreckter Gegner braucht deutlich länger um sich zu erholen\n", - L"Ein im Nahkampf niedergestreckter Gegner braucht viel länger um sich zu erholen\n", - L"Ein im Nahkampf niedergestreckter Gegner braucht sehr viel länger um sich zu erholen\n", - L"Ein im Nahkampf niedergestreckter Gegner schläft wie ein Baby bevor er sich erholt\n", - L"Ein im Nahkampf niedergestreckter Gegner steht vermutlich erstmal gar nicht mehr auf\n", - L"Ein gezielter Schlag richtet +%d%s mehr Schaden an\n", - L"Ein gezielter Tritt richtet +%d%s mehr Schaden an\n", - L"+%d%s Chance, Schlägen und Tritten auszuweichen\n", - L"Dazu +%d%s Chance mit freien Händen", - L" oder nur mit Schlagring", - L" (+%d%s mit Schlagring)", - L"+Dazu %d%s Chance, Schlägen und Tritten mit ausgerüstetem Schlagring auszuweichen\n", - L"+%d%s Chance einem Angriff mit einer beliebigen Nahkampfwaffe auszuweichen\n", - L"-%d%s APs benötigt um einen Gegner zu entwaffnen\n", - L"-%d%s APs benötigt um die Körperhaltung zu ändern, sich umzudrehen, auf oder von Dächern zu klettern und Hindernisse zu überspringen\n", - L"-%d%s APs benötigt um die Körperhaltung zu ändern (stehen, ducken, liegen)\n", - L"-%d%s APs benötigt um sich umzudrehen\n", - L"-%d%s APs benötigt um auf oder von Dächern zu klettern und Hindernisse zu überspringen\n", - L"+%d%s Chance eine Tür erfolgreich einzutreten\n", - L"Besondere Animationen für den Nahkampf\n", - L"-%d%s Wahrscheinlichkeit bei einem Nahkampfangriff unterbrochen zu werden\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s APs pro Runde für andere Söldner im Einflussbereich\n", - L"+%d Erfahrung für umgebende Söldner im Einflussbereich mit weniger Erfahrung als der %s\n", - L"+%d Erfahrung beim Berechnen des Gruppeneffekts auf Unterdrückungsfeuer\n", - L"+%d%s Resistenz gegen Unterdrückungsfeuer für den %s und andere Söldner im Einflussbereich\n", - L"+%d Moralgewinn für andere Söldner im Einflussbereich\n", - L"-%d Moralverlust für andere Söldner im Einflussbereich\n", - L"Der Einflussbereich hat einen Radius von %d Feldern", - L"(%d Felder mit Kopfhörer-Funkgerät)", - L"(Gleichzeitig wirksame Boni für einen Söldner begrenzt auf: %d)\n", - L"+%d%s Widerstand gegen Furcht für den %s\n", - L"Nachteil: %dx Moralverlust bei Tod des %ss für alle anderen Söldner\n", - L"+%d%s Wahrscheinlichkeit für gemeinsame Unterbrechungen\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s schnellere Reparaturen\n", - L"+%d%s mehr Erfolg beim Knacken normaler und elektronischer Schlösser\n", - L"+%d%s mehr Erfolg beim Entschärfen elektronischer Fallen\n", - L"+%d%s mehr Erfolg beim Anbringen besonderer Gegenstände und beim Zusammenbau von Einzelteilen\n", - L"+%d%s mehr Erfolg beim Beheben von Waffenstörungen im Gefecht\n", - L"Der Malus beim Reparieren elektronischer Gegenstände wird um %d%s gesenkt\n", - L"Erhöhte Chance, Fallen und Minen zu entdecken (+%d zum Erkennungslevel)\n", - L"+%d%s Trefferchance des Roboters, wenn vom %s gesteuert\n", - L"Der %s kann den Roboter reparieren\n", - L"%d%s Reduzierung des Geschwindigkeitsabzugs beim Reparieren des Roboters\n", - L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"Kann Patienten operieren (bei Verwendung eines Arztkoffers)\n", - L"Die Operation stellt sofort %d%s der verlorenen Lebenspunkte wieder her.", - L" (Dieser Vorgang verbraucht einen Großteil des Arztkoffers.)", - L"Kann verlorene Attributpunkte (durch kritische Treffer) mittels", - L" einer sofortigen Operation oder", - L" der Einteilung als Arzt (Sektorübersicht) wiederherstellen.\n", - L"+%d%s bessere Heilungsrate der Patienten\n", - L"+%d%s schnelleres Anlegen von Wundverbänden\n", - L"+%d%s natürliche Regenerationsrate aller Söldner im selben Sektor", - L" (maximal %d Instanzen dieses Bonus pro Sektor)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Kann sich als Zivilist oder feindlicher Soldat ausgeben, um hinter die feindlichen Linien zu gelangen\n", - L"Wird bei verdächtigen Aktionen, verdächtiger Ausrüstung oder in der Nähe frischer Leichen immer erkannt\n", - L"Wird in feindlicher Uniform erkannt, wenn der Feind näher als %d Felder entfernt ist\n", - L"Wird in feindlicher Uniform erkannt, wenn eine frische Leiche näher als %d Felder entfernt ist.\n", - L"+%d%s Trefferwahrscheinlichkeit mit verdeckten Nahkampfwaffen (z.B. Garotte)\n", - L"+%d%s Wahrscheinlichkeit für einen tödlichen Angriff mit verdeckten Nahkampfwaffen (z.B. Garotte)\n", - L"Um %d%s verringerte AP-Kosten zum Verkleiden\n", - L"Kann feindliche Soldaten zum Überlaufen überreden.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= -{ - L"Kann Funkausrüstung nutzen\n", - L"Kann Artillerieunterstützung von Verbündeten in Nachbarsektoren anfordern\n", - L"Kann Funkfrequenzen abhören und feindliche Truppen aufspüren\n", - L"Kann den Funkverkehr im ganzen Sektor stören\n", - L"Kann nach feindlichen Störsendern suchen, wenn solche aktiv sind\n", - L"Kann Unterstützung durch Milizen aus Nachbarsektoren anfordern\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"Keine Boni", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate - L"+%d%s schnelleres Nachladen mit Magazinen\n", - L"+%d%s schnelleres Nachladen mit einzelnen Patronen\n", - L"-%d%s APs benötigt um Gegenstände aufzuheben\n", - L"-%d%s APs benötigt für die Handhabe des Rucksacks\n", - L"-%d%s APs benötigt um mit Türen zu interagieren\n", - L"-%d%s APs benötigt um Bomben und Minen zu legen oder zu entschärfen\n", - L"-%d%s APs needed to attach items\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s APs benötigt für den Angriff mit Klingenwaffen\n", - L"+%d%s Trefferchance mit Klingenwaffen\n", - L"+%d%s Trefferchance mit Schlagwaffen\n", - L"+%d%s Schaden mit Klingenwaffen\n", - L"+%d%s Schaden mit Schlagwaffen\n", - L"Angriffe mit Nahkampfwaffen richten %d%s mehr Schaden an\n", - L"+%d%s Chance Angriffen durch Klingenwaffen auszuweichen\n", - L"Dazu +%d%s Chance Klingenwaffen auszuweichen wenn man selber eine in der Hand hat\n", - L"+%d%s Chance Angriffen durch Schlagwaffen auszuweichen\n", - L"Dazu +%d%s Chance Schlagwaffen auszuweichen wenn man eine Klingenwaffe führt\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s Basis-APs benötigt für den Angriff mit Wurfwaffen\n", - L"+%d%s maximale Reichweite beim Einsatz von Wurfwaffen\n", - L"+%d%s Trefferchance mit Wurfwaffen\n", - L"+%d%s Trefferchance mit Wurfwaffen für jeden Ziel-Klick\n", - L"+%d%s Schaden geworfener Klingen\n", - L"+%d%s Schaden geworfener Klingen für jeden Ziel-Klick\n", - L"+%d%s Chance auf kritischen Treffer beim Angriff mit Wurfwaffen, falls das Ziel den Werfer nicht bemerkt hat\n", - L"+%d Multiplikator für kritische Treffer durch Wurfwaffen\n", - L"Gibt einen weiteren Zielklick beim Einsatz von Wurfwaffen\n", - L"Gibt %d weitere Zielklicks beim Einsatz von Wurfwaffen\n", - L"-%d%s APs benötigt um Handgranaten (und ähnliche Objekte) zu werfen\n", - L"+%d%s höhere Reichweite beim Werfen von Handgranaten (und ähnliche Objekten)\n", - L"+%d%s höhere Trefferwahrscheinlichkeit beim Werfen von Handgranaten (und ähnlichen Objekten)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"+%d zur effektiven Sichtweite im Dunkeln\n", - L"+%d zum allgemeinen effektiven Hörweite\n", - L"Dazu +%d zum effektive Hörweite in der Dunkelheit\n", - L"+%d zum Unterbrechungs-Modifikator in der Dunkelheit\n", - L"-%d weniger Schlafbedarf\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s APs zum Schleichen nötig\n", - L"+%d%s Chance beim Schleichen kein Geräusch zu erzeugen zu sein\n", - L"+%d%s Chance, 'unsichtbar' zu sein wenn man sich nicht verrät (schleichen)\n", - L"Der Abzug der berechneten Sichtdeckung beim Bewegen ist %d%s geringer\n", - L"-%d%s Wahrscheinlichkeit um unterbrochen zu werden\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s APs benötigt für Bewegung (rennen, aufrecht oder geduckt gehen, gleiten, schwimmen, usw.)\n", - L"-%d%s weniger Ausdauerverbrauch für für Bewegung, Dachklettern, Hindernisse Überwinden, usw.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"Hat eine Schadensresistenz von %d%s\n", - L"+%d%s effektive Stärke für das Berechnen der maximalen Traglast\n", - L"%d%s weniger Energieverlust beim Erleiden von Schlägen und Tritten\n", - L"Fällt bei Beintreffern weniger leicht um durch um %d%s erhöhte Schadenstoleranz\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s höherer Schaden für gelegte Bomben und Minen\n", - L"+%d%s mehr Erfolg beim Anbringen von Zündern\n", - L"+%d%s mehr Erfolg beim Legen und Entschärfen von Bomben\n", - L"Geringere Wahrscheinlichkeit, dass Gegner gelegte Bomben und Minen entdecken (%d zum Bombenlevel)\n", - L"Höhere Wahrscheinlichkeit Türen mit einer Sprengladung öffnen zu können (Schaden wird mit %d multipliziert)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"Bei der Ausbildung von Milizen +%d%s schneller\n", - L"Bei der Ausbildung von Milizen +%d%s Bonus zur effektiven Führungsfähigkeit\n", - L"Beim Ausbilden von Söldnern +%d%s schneller\n", - L"Beim Ausbilden von Söldnern +d% zum effektiven Fähigkeitslevel des Ausbilders\n", - L"Beim eigenständigen Lernen +%d%s schneller\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% zur effektiven Sichtweite mit Zielfernrohren an Waffen\n", - L"+%d%% zur effektiven Sichtweite mit Doppelfernrohren und losen Zielfernrohren\n", - L"-%d%% Tunnelblick mit Doppelfernrohren und losen Zielfernrohren\n", - L"Auf der Weltkarte wird in angrenzenden Sektoren die genaue Feindstärke (Anzahl) bestimmt\n", - L"Auf der Weltkarte wird in angrenzenden Sektoren die Präsenz von vorhandenem Feind enthüllt\n", - L"Verhindert, dass der Feind die Gruppe in den Hinterhalt lockt\n", - L"Verhindert, das Umzingeln der Gruppe durch Bloodcats\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Informiert täglich über die Ansichten der Teammitglieder\n", - L"Verhindert mögliches Fehlverhalten der Teammitglieder (Alkohol- und Drogenkonsum, Diebstahl)\n", - L"Kann in Städten Propaganda verbreiten\n", - L"Kann in Städten Gerüchten nachgehen\n", - L"Kann als Informant in Gefängnisse eingeschleust werden\n", - L"Kann bei guter Moral den allgemeinen Ruf jeden Tag um %d verbessern\n", - L"Erhält +%d auf die Hörweite", -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = -{ - L"-%d%s Reisezeit der Gruppe zwischen Sektoren zu Fuß\n", - L"-%d%s Reisezeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n", - L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n", - L"-%d%s Einfluss durch schlechtes Wetter\n", - L"-%d%s Abnutzung von Tarnfarbe durch Wasser oder Zeit\n", - L"Kann Spuren bis zu %d Felder weit erkennen\n", - - L"%s%d%% disease resistance\n", //TODO.Translate - L"%s%d%% food consumption\n", - L"%s%d%% water consumption\n", - L"+%d%% snake evasion\n", // TODO.Translate - L"+%d%% Tarnungs-Effektivität\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"Keine Boni", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s Bonus zum Schlösser Knacken\n", // 0 - L"+%d%s Trefferchance im Faustkampf\n", - L"+%d%s Schaden im Faustkampf\n", - L"+%d%s Chance Schlägen auszuweichen\n", - L"Bei der Reparatur und Bedienung von Elektrotechnik\n(Schlösser, Fallen, Fernzünder, Roboter...) kein Abzug\n", - L"+%d zur effektiven Sichtweite im Dunkeln\n", - L"+%d zur allgemeinen effektiven Hörweite\n", - L"Dazu +%d zur effektiven Hörweite in der Dunkelheit\n", - L"+%d zum Unterbrechungsmodifikator in der Dunkelheit\n", - L"-%d weniger Schlafbedarf\n", - L"+%d%s maximale Reichweite beim Werfen\n", // 10 - L"+%d%s Trefferchance beim Werfen\n", - L"+%d%s Chance auf sofortige Tötung mit Wurfmesser wenn unbemerkt\n", - L"+%d%s Bonus zum Trainieren von Milizen und anderen Söldnern\n", - L"+%d%s effektive Führungsfertigkeit beim Ausbilden von Milizen\n", - L"+%d%s Trefferchance mit Raketen-/Granatwerfern und Mörsern\n", - L"Trefferchancenabzug bei Dauerfeuer und Feuerstoß wird durch %d geteilt\n", - L"Das Verschießen von zu viel Munition bei Dauerfeuer wird unwahrscheinlicher\n", - L"+%d%s Chance sich leise zu bewegen\n", - L"+%d%s stealth (unsichtbar sein, wenn man sich nicht verrät)\n", - L"Beim Schießen mit zwei Waffen mit jeder so präzise wie mit nur einer\n", // 20 - L"+%d%s Trefferchance mit Stichwaffen\n", - L"+%d%s Chance, Stichwaffen auszuweichen, wenn man selber eine führt\n", - L"+%d%s Chance, Stichwaffen auszuweichen, wenn man etwas anderes in der Hand hat\n", - L"+%d%s Chance Schlägen auszuweichen, wenn man eine Stichwaffe hält\n", - L"-%d%s effektive Reichweite zum Ziel mit allen Waffen\n", - L"+%d%s Bonus zum Zielen pro Mausklick\n", - L"Immer vollständig getarnt sein\n", - L"+%d%s Trefferchance im Faustkampf\n", - L"+%d%s Schaden im Faustkampf\n", - L"+%d%s Chance, Schläge mit leeren Händen zu blocken\n", // 30 - L"+%d%s Chance, Schläge mit etwas in der Hand zu blocken\n", - L"+%d%s Chance, Stichwaffenangriffen auszuweichen\n", - L"Kann angeschlagenen Gegnern einen Tornadotritt verpassen, der doppelten Schaden anrichtet\n", - L"Sie erhalten besondere Animationen für den Faustkampf (etwas fernöstlicher)\n", - L"Keine Boni", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"V: Keine Vorteile.\nN: Keine Nachteile.", - L"V: Ist leistungsfähiger, wenn andere Söldner in der Nähe sind.\nN: Erhält keinen Moralzuwachs, wenn niemand in der Nähe ist.", - L"V: Ist leistungsfähiger, wenn niemand in der Nähe ist.\nN: Erhält keinen Moralzuwachs, wenn andere Söldner in der Nähe sind.", - L"V: Die Moral sinkt etwas langsamer und steigt schneller als normal.\nN: Hat eine geringere Chance, Fallen und Minen zu entdecken.", - L"V: Erhält Boni beim Ausbilden von Milizen und kann besser mit Menschen reden.\nN: Erhält keinen Moralzuwachs für Aktionen anderer Söldner.", - L"V: Lernt durch eigenes Training und Ausbildung etwas schneller.\nN: Hat weniger Unterdrückungs- und Angstresistenz.", - L"V: Verbraucht etwas weniger Energie, außer bei medizinischen und technischen Aufgaben sowie einer anspruchsvollen Ausbildung.\nN: Weisheit, Führungskraft, Sprengstoff-, Mechanik- und Medizinkenntnisse entwickeln sich langsamer.", - L"V: Hat eine leicht erhöhte Trefferchance bei Feuerstößen und richtet etwas mehr Schaden im Nahkampf an.\n Erhält ein wenig mehr Moralzuwachs beim Töten.\nN: Erledigt Aufgaben, die Geduld erfordern schlechter (Reparatur, Schlösser knacken, Fallen entschärfen, Patientenversorgung und Milizausbildung).", - L"V: Erhält Boni für Aufgaben, die Geduld erfordern (Reparatur, Schlösser knacken, Fallen entschärfen, Patientenversorgung und Milizausbildung).\nN: Erhält seltener Unterbrechungen im Kampf.", - L"V: Erhöhte Resistenz gegenüber Unterdrückungsfeuer und Panikanfällen.\nVerliert weniger Moral durch Verwundung oder Todesfälle im Team.\nN: Wird leichter getroffen, und kann seltener Feindfeuer durch schnelle Bewegung ausweichen.", - L"V: Erhält Moralzuwachs für nichtkämpferische Tätigkeiten (Außnahme: Milizausbildung).\nN: Erhält keinen Moralzuwachs für das Töten von Gegnern.", - L"V: Hat eine höhere Chance, Statusschäden anzurichten, und kann besonders fiese Wunden verursachen.\n Erhält mehr Moral für erfolgreiche Statusschäden.\nN: Kann schlechter mit Leuten reden. Die Moral sinkt ohne Kampf schneller.", - L"V: Ist leistungsfähiger, wenn Söldner des anderen Geschlechts in der Nähe sind.\nN: Die Moral anderer naher Söldner des gleichen Geschlechts steigt langsamer.", - L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"Keine besonderen Einschränkungen.", - L"Leidet an Atemproblemen und zeigt allgemein schlechtere Leistung in tropischen und Wüstensektoren.", - L"Erleidet allein in schwierigen Situationen Panikattacken.", - L"Zeigt schlechtere Leistung unter Tage.", - L"Kann bei Schwimmversuchen leicht ertrinken.", - L"Erträgt den Anblick großer Insekten nicht und\nzeigt etwas schlechtere Leistung in Wüsten- oder tropischen oder Sektoren.", - L"Vergisst manchmal seine Befehle und verliert dadurch im Kampf einen Teil seiner APs.", - L"Dreht manchmal durch und schießt dabei hin und wieder wild um sich.\nVerliert Moral, wenn das mit der ausgerüsteten Waffe nicht möglich ist.", - L"Deutlich geringere Hörweite.", - L"Geringere Sichtweite.", - L"Drastically increased bleeding.", // TODO.Translate - L"Performance suffers while on a rooftop.", // TODO.Translate - L"Occasionally harms self.", -}; - -STR16 gzIMPProfileCostText[]= -{ - L"Ein Profil kostet $%d. Genehmigen Sie die Zahlung?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"Sie können das neue Fertigkeitensystem nicht ohne aktiviertem PROFEX-Utility benutzen. Suchen Sie in Ihrer ja2_options.ini den Eintrag: READ_PROFILE_DATA_FROM_XML.", -}; -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"Sie haben sich für den IRONMAN-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nicht speichern, wenn Feinde im Sektor sind. Sind Sie sicher, dass Sie im IRONMAN-Modus spielen wollen?", - L"Sie haben sich für den SOFT IRONMAN-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nicht speichern, wenn der Rundenmodus im taktischen Kampf aktiv ist. Sind Sie sicher, dass Sie im SOFT IRONMAN-Modus spielen wollen?", - L"Sie haben sich für den EXTREME IRONMAN-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nur einmal am Tag speichern, um %02d:00. Sind Sie sicher, dass Sie im EXTREME IRONMAN-Modus spielen wollen?", -}; - -STR16 gzDisplayCoverText[]= -{ - L"Deckung: %d/100 %s, Helligkeit: %d/100", - L"Waffen-Reichweite: %d/%d Felder, Trefferwahrscheinlichkeit: %d/100", - L"Waffen-Reichweite: %d/%d Felder, Lauf-Genauigkeit: %d/100", - L"Deckungsanzeige ausschalten", - L"Zeige Ansicht für Söldner", - L"Zeige Gefahrenbereich für Söldner", - L"Wald", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Stadt", - L"Wüste", - L"Schnee", // NOT USED!!! - L"Wald und Wüste", - L"Wald und Stadt", - L"Wald und Schnee", - L"Wüste und Stadt", - L"Wüste und Schnee", - L"Stadt und Schnee", - L"-", // yes empty for now - L"Deckung: %d/100, Helligkeit: %d/100", - L"Footstep volume", // TODO.Translate - L"Stealth difficulty", - L"Trap level", -}; - - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("GERMAN") + + #ifdef GERMAN + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25GermanText_public_symbol(void){;} + +#ifdef GERMAN + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + L"Schlösser knacken", + L"Nahkampf", + L"Elektronik", + L"Nachteinsatz", + L"Werfen", + L"Lehren", + L"Schwere Waffen", + L"Autom. Waffen", + L"Schleichen", + L"Beidhändig geschickt", + L"Messer", + L"Dach-Treffer Bonus", + L"Getarnt", + L"Kampfsport", + + L"Keine", + L"B.S.E. - Spezialisierungen", + L"(Experte)", +}; + +//added another set of skill texts for new major traits +//Da es mittlerweile einen beruflichen Background für Söldner gibt, habe ich die "Tätigkeitsbezeichnungen" der Traits wieder an das ursprüngliche System angeglichen. +//Die Traits sagen nun aus, in welchem Bereich ein Söldner besondere Fertigkeiten erworben hat. Sie stellen kein Berufsbild dar. Das bleibt dem Background überlassen. +//Vorschläge in alten Kommentaren berücksichtigt. [Leonidas] +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Automatische Waffen", // + L"Granatwaffen", // Vanilla: Schwere Waffen/Heavy Weapons [Leonidas] + L"Scharfschützengewehre", // (Schlechte) Alternative: Präzisionsgewehre [Leonidas] + L"Jagd", // Alternative: Überlebenstraining [Leonidas] – Die Mischung aus/von Flintenboni, Bewegungsboni und Tarnboni ist ungünstig [Leonidas] + L"Pistolen", // + L"Faustkampf", // + L"Teamführung", // + L"Feinmechanik", // + L"Erste Hilfe", // Alternativen: Sanitätsausbildung; Medizin. Versorgung [Leonidas] + L"Verdeckte Operationen", // + + L"Nichts", + L"B.S.E. Hauptfertigkeiten", + + // second names + L"Automatische Waffen\n(Experte)", // (Schlechte) Alternative: Maschinengewehre [Leonidas] + L"Granatwaffen (Experte)", // + L"Scharfschützengewehre\n(Experte)", // + L"Jagd (Experte)", // Alternative: Jagd – Die Mischung aus/von Flintenboni, Bewegungsboni und Tarnboni ist ungünstig [Leonidas] + L"Pistolen (Experte)", // + L"Kampfsport", // + L"Truppenführung", // + L"Feinwerktechnik", // Alternative: Mechatronik [Leonidas] + L"Notfallmedizin", // + L"Geheimoperationen", // +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Beidhändigkeit", // alt. "Beidhändig geschickt" + L"Bewaffneter Nahkampf", // alt. "Hieb- und Stichwaffen" + L"Wurfwaffen", // alt. "Wurfwaffen" + L"Nachteinsätze", // alt. "Nachteinsatz" + L"Schleichen", // alt. "Schleichen" + L"Leichtathletik", // alt. "Athletisch" + L"Kraftsport", // alt. "Bodybuilding" + L"Sprengtechnik", // alt. "Kampfmittel" + L"Ausbilden", // alt. "Lehren" + L"Aufklären", // alt. "Spähen" + L"Funktechnik", // Alternative: Funk, Funkkommunikation [Leonidas] + L"Survival", //TODO.Translate + + L"Keine", + L"B.S.E. Nebenfertigkeiten", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s Trefferchance mit Sturmgewehren\n", + L"+%d%s Trefferchance mit Maschinenpistolen\n", + L"+%d%s Trefferchance mit Maschinengewehren\n", + L"-%d%s APs benötigt für MG-Feuerstöße (Burst/Auto) abzugeben\n", + L"-%d%s APs benötigt um Maschinengewehre auszurichten\n", + L"Trefferratenabzug bei Feuerstößen um %d%s reduziert\n", + L"Geringere Wahrscheinlichkeit bei Feuerstößen ungewollt mehr Schüsse abzugeben\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s APs benötigt um Granatwerfer abzufeuern\n", + L"-%d%s APs benötigt um Raketenwaffen abzufeuern\n", + L"+%d%s Trefferchance mit Granatwerfern\n", + L"+%d%s Trefferchance mit Raketenwaffen\n", + L"-%d%s APs für den Abschuss von Mörsergranaten benötigt\n", + L"Trefferchancenreduktion für Mörser gesenkt um %d%s\n", + L"+%d%s Schaden an Panzern mit Granatwaffen, Granaten und Bomben\n", + L"+%d%s Schaden an allen anderen Zielen mit Granatwaffen\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s Trefferchance mit Büchsen\n", + L"+%d%s Trefferchance mit Scharfschützengewehren\n", + L"-%d%s effektive Reichweite zum Ziel mit allen Waffen\n", + L"+%d%s Zielbonus pro Zielerfassungs-Klick (außer für Faustfeuerwaffen)\n", + L"+%d%s Schaden pro Schuss", + L" plus", + L" für jeden Zielerfassungs-Klick", + L" nach dem ersten", + L" nach dem zweiten", + L" nach dem dritten", + L" nach dem vierten", + L" nach dem fünften", + L" nach dem sechsten", + L" nach dem siebenten", + L"-%d%s APs benötigt um ein Repetiergewehr erneut fertigzuladen.\n", + L"Gibt einen weiteren Ziel-Klick für gewehrartige Waffen\n", + L"Gibt weitere %d Ziel-Klicks für gewehrartige Waffen\n", + L"Schnelleres Zielen mit Gewehren bei genau einem Zielgenauigkeit-Klick\n", + L"Schnelleres Zielen mit Gewehren bei %d Zielgenauigkeit-Klicks\n", + L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate + +}; +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s Trefferchance mit Gewehren\n", + L"+%d%s Trefferchance mit Schrotflinten\n", + L"-%d%s APs benötigt, um Schrotflinten zu repetieren\n", + L"-%d%s APs benötigt, um Schrotflinten abzufeuern\n", + L"Gibt Schrotflinten einen weiteren Zielklick\n", + L"%d weitere Zielklicks für Schrotflinten\n", + L"+%d%s effektive Reichweite mit Schrotflinten\n", + L"-%d%s APs benötigt, um einzelne Schrotpatronen zu laden\n", + L"Gibt Gewehren einen weiteren Zielklick\n", + L"%d weitere Zielklicks für Gewehre\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s APs benötigt um mit Pistolen oder Revolvern zu schießen\n", + L"+%d%s effektive Reichweite mit Pistolen und Revolvern\n", + L"+%d%s Trefferchance mit mit halbautomatischen Pistolen und Revolvern\n", + L"+%d%s Trefferchance mit vollautomatischen Pistolen", + L" (nur bei Einzelfeuer)", + L"+%d%s Zielbonus pro Klick mit halb- und vollautomatischen Pistolen sowie Revolvern\n", + L"-%d%s APs benötigt um Pistolen und Revolver in Vorhalte zu bringe\n", + 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[]= +{ + L"-%d%s AP-Kosten für den Nahkampf (bloße Hände oder mit Schlagring)\n", + L"+%d%s Trefferchance im Nahkampf mit bloßen Händen\n", + L"+%d%s Trefferchance im Nahkampf mit dem Schlagring\n", + L"+%d%s Schaden im Nahkampf (bloße Hände oder mit Schlagring)\n", + L"+%d%s Ausdauerschaden im Nahkampf (bloße Hände oder mit Schlagring)\n", + L"Ein im Nahkampf niedergestreckter Gegner braucht etwas länger um sich zu erholen\n", + L"Ein im Nahkampf niedergestreckter Gegner braucht länger um sich zu erholen\n", + L"Ein im Nahkampf niedergestreckter Gegner braucht deutlich länger um sich zu erholen\n", + L"Ein im Nahkampf niedergestreckter Gegner braucht viel länger um sich zu erholen\n", + L"Ein im Nahkampf niedergestreckter Gegner braucht sehr viel länger um sich zu erholen\n", + L"Ein im Nahkampf niedergestreckter Gegner schläft wie ein Baby bevor er sich erholt\n", + L"Ein im Nahkampf niedergestreckter Gegner steht vermutlich erstmal gar nicht mehr auf\n", + L"Ein gezielter Schlag richtet +%d%s mehr Schaden an\n", + L"Ein gezielter Tritt richtet +%d%s mehr Schaden an\n", + L"+%d%s Chance, Schlägen und Tritten auszuweichen\n", + L"Dazu +%d%s Chance mit freien Händen", + L" oder nur mit Schlagring", + L" (+%d%s mit Schlagring)", + L"+Dazu %d%s Chance, Schlägen und Tritten mit ausgerüstetem Schlagring auszuweichen\n", + L"+%d%s Chance einem Angriff mit einer beliebigen Nahkampfwaffe auszuweichen\n", + L"-%d%s APs benötigt um einen Gegner zu entwaffnen\n", + L"-%d%s APs benötigt um die Körperhaltung zu ändern, sich umzudrehen, auf oder von Dächern zu klettern und Hindernisse zu überspringen\n", + L"-%d%s APs benötigt um die Körperhaltung zu ändern (stehen, ducken, liegen)\n", + L"-%d%s APs benötigt um sich umzudrehen\n", + L"-%d%s APs benötigt um auf oder von Dächern zu klettern und Hindernisse zu überspringen\n", + L"+%d%s Chance eine Tür erfolgreich einzutreten\n", + L"Besondere Animationen für den Nahkampf\n", + L"-%d%s Wahrscheinlichkeit bei einem Nahkampfangriff unterbrochen zu werden\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s APs pro Runde für andere Söldner im Einflussbereich\n", + L"+%d Erfahrung für umgebende Söldner im Einflussbereich mit weniger Erfahrung als der %s\n", + L"+%d Erfahrung beim Berechnen des Gruppeneffekts auf Unterdrückungsfeuer\n", + L"+%d%s Resistenz gegen Unterdrückungsfeuer für den %s und andere Söldner im Einflussbereich\n", + L"+%d Moralgewinn für andere Söldner im Einflussbereich\n", + L"-%d Moralverlust für andere Söldner im Einflussbereich\n", + L"Der Einflussbereich hat einen Radius von %d Feldern", + L"(%d Felder mit Kopfhörer-Funkgerät)", + L"(Gleichzeitig wirksame Boni für einen Söldner begrenzt auf: %d)\n", + L"+%d%s Widerstand gegen Furcht für den %s\n", + L"Nachteil: %dx Moralverlust bei Tod des %ss für alle anderen Söldner\n", + L"+%d%s Wahrscheinlichkeit für gemeinsame Unterbrechungen\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s schnellere Reparaturen\n", + L"+%d%s mehr Erfolg beim Knacken normaler und elektronischer Schlösser\n", + L"+%d%s mehr Erfolg beim Entschärfen elektronischer Fallen\n", + L"+%d%s mehr Erfolg beim Anbringen besonderer Gegenstände und beim Zusammenbau von Einzelteilen\n", + L"+%d%s mehr Erfolg beim Beheben von Waffenstörungen im Gefecht\n", + L"Der Malus beim Reparieren elektronischer Gegenstände wird um %d%s gesenkt\n", + L"Erhöhte Chance, Fallen und Minen zu entdecken (+%d zum Erkennungslevel)\n", + L"+%d%s Trefferchance des Roboters, wenn vom %s gesteuert\n", + L"Der %s kann den Roboter reparieren\n", + L"%d%s Reduzierung des Geschwindigkeitsabzugs beim Reparieren des Roboters\n", + L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"Kann Patienten operieren (bei Verwendung eines Arztkoffers)\n", + L"Die Operation stellt sofort %d%s der verlorenen Lebenspunkte wieder her.", + L" (Dieser Vorgang verbraucht einen Großteil des Arztkoffers.)", + L"Kann verlorene Attributpunkte (durch kritische Treffer) mittels", + L" einer sofortigen Operation oder", + L" der Einteilung als Arzt (Sektorübersicht) wiederherstellen.\n", + L"+%d%s bessere Heilungsrate der Patienten\n", + L"+%d%s schnelleres Anlegen von Wundverbänden\n", + L"+%d%s natürliche Regenerationsrate aller Söldner im selben Sektor", + L" (maximal %d Instanzen dieses Bonus pro Sektor)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Kann sich als Zivilist oder feindlicher Soldat ausgeben, um hinter die feindlichen Linien zu gelangen\n", + L"Wird bei verdächtigen Aktionen, verdächtiger Ausrüstung oder in der Nähe frischer Leichen immer erkannt\n", + L"Wird in feindlicher Uniform erkannt, wenn der Feind näher als %d Felder entfernt ist\n", + L"Wird in feindlicher Uniform erkannt, wenn eine frische Leiche näher als %d Felder entfernt ist.\n", + L"+%d%s Trefferwahrscheinlichkeit mit verdeckten Nahkampfwaffen (z.B. Garotte)\n", + L"+%d%s Wahrscheinlichkeit für einen tödlichen Angriff mit verdeckten Nahkampfwaffen (z.B. Garotte)\n", + L"Um %d%s verringerte AP-Kosten zum Verkleiden\n", + L"Kann feindliche Soldaten zum Überlaufen überreden.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= +{ + L"Kann Funkausrüstung nutzen\n", + L"Kann Artillerieunterstützung von Verbündeten in Nachbarsektoren anfordern\n", + L"Kann Funkfrequenzen abhören und feindliche Truppen aufspüren\n", + L"Kann den Funkverkehr im ganzen Sektor stören\n", + L"Kann nach feindlichen Störsendern suchen, wenn solche aktiv sind\n", + L"Kann Unterstützung durch Milizen aus Nachbarsektoren anfordern\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"Keine Boni", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate + L"+%d%s schnelleres Nachladen mit Magazinen\n", + L"+%d%s schnelleres Nachladen mit einzelnen Patronen\n", + L"-%d%s APs benötigt um Gegenstände aufzuheben\n", + L"-%d%s APs benötigt für die Handhabe des Rucksacks\n", + L"-%d%s APs benötigt um mit Türen zu interagieren\n", + L"-%d%s APs benötigt um Bomben und Minen zu legen oder zu entschärfen\n", + L"-%d%s APs needed to attach items\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s APs benötigt für den Angriff mit Klingenwaffen\n", + L"+%d%s Trefferchance mit Klingenwaffen\n", + L"+%d%s Trefferchance mit Schlagwaffen\n", + L"+%d%s Schaden mit Klingenwaffen\n", + L"+%d%s Schaden mit Schlagwaffen\n", + L"Angriffe mit Nahkampfwaffen richten %d%s mehr Schaden an\n", + L"+%d%s Chance Angriffen durch Klingenwaffen auszuweichen\n", + L"Dazu +%d%s Chance Klingenwaffen auszuweichen wenn man selber eine in der Hand hat\n", + L"+%d%s Chance Angriffen durch Schlagwaffen auszuweichen\n", + L"Dazu +%d%s Chance Schlagwaffen auszuweichen wenn man eine Klingenwaffe führt\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s Basis-APs benötigt für den Angriff mit Wurfwaffen\n", + L"+%d%s maximale Reichweite beim Einsatz von Wurfwaffen\n", + L"+%d%s Trefferchance mit Wurfwaffen\n", + L"+%d%s Trefferchance mit Wurfwaffen für jeden Ziel-Klick\n", + L"+%d%s Schaden geworfener Klingen\n", + L"+%d%s Schaden geworfener Klingen für jeden Ziel-Klick\n", + L"+%d%s Chance auf kritischen Treffer beim Angriff mit Wurfwaffen, falls das Ziel den Werfer nicht bemerkt hat\n", + L"+%d Multiplikator für kritische Treffer durch Wurfwaffen\n", + L"Gibt einen weiteren Zielklick beim Einsatz von Wurfwaffen\n", + L"Gibt %d weitere Zielklicks beim Einsatz von Wurfwaffen\n", + L"-%d%s APs benötigt um Handgranaten (und ähnliche Objekte) zu werfen\n", + L"+%d%s höhere Reichweite beim Werfen von Handgranaten (und ähnliche Objekten)\n", + L"+%d%s höhere Trefferwahrscheinlichkeit beim Werfen von Handgranaten (und ähnlichen Objekten)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"+%d zur effektiven Sichtweite im Dunkeln\n", + L"+%d zum allgemeinen effektiven Hörweite\n", + L"Dazu +%d zum effektive Hörweite in der Dunkelheit\n", + L"+%d zum Unterbrechungs-Modifikator in der Dunkelheit\n", + L"-%d weniger Schlafbedarf\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s APs zum Schleichen nötig\n", + L"+%d%s Chance beim Schleichen kein Geräusch zu erzeugen zu sein\n", + L"+%d%s Chance, 'unsichtbar' zu sein wenn man sich nicht verrät (schleichen)\n", + L"Der Abzug der berechneten Sichtdeckung beim Bewegen ist %d%s geringer\n", + L"-%d%s Wahrscheinlichkeit um unterbrochen zu werden\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s APs benötigt für Bewegung (rennen, aufrecht oder geduckt gehen, gleiten, schwimmen, usw.)\n", + L"-%d%s weniger Ausdauerverbrauch für für Bewegung, Dachklettern, Hindernisse Überwinden, usw.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"Hat eine Schadensresistenz von %d%s\n", + L"+%d%s effektive Stärke für das Berechnen der maximalen Traglast\n", + L"%d%s weniger Energieverlust beim Erleiden von Schlägen und Tritten\n", + L"Fällt bei Beintreffern weniger leicht um durch um %d%s erhöhte Schadenstoleranz\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s höherer Schaden für gelegte Bomben und Minen\n", + L"+%d%s mehr Erfolg beim Anbringen von Zündern\n", + L"+%d%s mehr Erfolg beim Legen und Entschärfen von Bomben\n", + L"Geringere Wahrscheinlichkeit, dass Gegner gelegte Bomben und Minen entdecken (%d zum Bombenlevel)\n", + L"Höhere Wahrscheinlichkeit Türen mit einer Sprengladung öffnen zu können (Schaden wird mit %d multipliziert)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"Bei der Ausbildung von Milizen +%d%s schneller\n", + L"Bei der Ausbildung von Milizen +%d%s Bonus zur effektiven Führungsfähigkeit\n", + L"Beim Ausbilden von Söldnern +%d%s schneller\n", + L"Beim Ausbilden von Söldnern +d% zum effektiven Fähigkeitslevel des Ausbilders\n", + L"Beim eigenständigen Lernen +%d%s schneller\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% zur effektiven Sichtweite mit Zielfernrohren an Waffen\n", + L"+%d%% zur effektiven Sichtweite mit Doppelfernrohren und losen Zielfernrohren\n", + L"-%d%% Tunnelblick mit Doppelfernrohren und losen Zielfernrohren\n", + L"Auf der Weltkarte wird in angrenzenden Sektoren die genaue Feindstärke (Anzahl) bestimmt\n", + L"Auf der Weltkarte wird in angrenzenden Sektoren die Präsenz von vorhandenem Feind enthüllt\n", + L"Verhindert, dass der Feind die Gruppe in den Hinterhalt lockt\n", + L"Verhindert, das Umzingeln der Gruppe durch Bloodcats\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Informiert täglich über die Ansichten der Teammitglieder\n", + L"Verhindert mögliches Fehlverhalten der Teammitglieder (Alkohol- und Drogenkonsum, Diebstahl)\n", + L"Kann in Städten Propaganda verbreiten\n", + L"Kann in Städten Gerüchten nachgehen\n", + L"Kann als Informant in Gefängnisse eingeschleust werden\n", + L"Kann bei guter Moral den allgemeinen Ruf jeden Tag um %d verbessern\n", + L"Erhält +%d auf die Hörweite", +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = +{ + L"-%d%s Reisezeit der Gruppe zwischen Sektoren zu Fuß\n", + L"-%d%s Reisezeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n", + L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n", + L"-%d%s Einfluss durch schlechtes Wetter\n", + L"-%d%s Abnutzung von Tarnfarbe durch Wasser oder Zeit\n", + L"Kann Spuren bis zu %d Felder weit erkennen\n", + + L"%s%d%% disease resistance\n", //TODO.Translate + L"%s%d%% food consumption\n", + L"%s%d%% water consumption\n", + L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% Tarnungs-Effektivität\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"Keine Boni", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s Bonus zum Schlösser Knacken\n", // 0 + L"+%d%s Trefferchance im Faustkampf\n", + L"+%d%s Schaden im Faustkampf\n", + L"+%d%s Chance Schlägen auszuweichen\n", + L"Bei der Reparatur und Bedienung von Elektrotechnik\n(Schlösser, Fallen, Fernzünder, Roboter...) kein Abzug\n", + L"+%d zur effektiven Sichtweite im Dunkeln\n", + L"+%d zur allgemeinen effektiven Hörweite\n", + L"Dazu +%d zur effektiven Hörweite in der Dunkelheit\n", + L"+%d zum Unterbrechungsmodifikator in der Dunkelheit\n", + L"-%d weniger Schlafbedarf\n", + L"+%d%s maximale Reichweite beim Werfen\n", // 10 + L"+%d%s Trefferchance beim Werfen\n", + L"+%d%s Chance auf sofortige Tötung mit Wurfmesser wenn unbemerkt\n", + L"+%d%s Bonus zum Trainieren von Milizen und anderen Söldnern\n", + L"+%d%s effektive Führungsfertigkeit beim Ausbilden von Milizen\n", + L"+%d%s Trefferchance mit Raketen-/Granatwerfern und Mörsern\n", + L"Trefferchancenabzug bei Dauerfeuer und Feuerstoß wird durch %d geteilt\n", + L"Das Verschießen von zu viel Munition bei Dauerfeuer wird unwahrscheinlicher\n", + L"+%d%s Chance sich leise zu bewegen\n", + L"+%d%s stealth (unsichtbar sein, wenn man sich nicht verrät)\n", + L"Beim Schießen mit zwei Waffen mit jeder so präzise wie mit nur einer\n", // 20 + L"+%d%s Trefferchance mit Stichwaffen\n", + L"+%d%s Chance, Stichwaffen auszuweichen, wenn man selber eine führt\n", + L"+%d%s Chance, Stichwaffen auszuweichen, wenn man etwas anderes in der Hand hat\n", + L"+%d%s Chance Schlägen auszuweichen, wenn man eine Stichwaffe hält\n", + L"-%d%s effektive Reichweite zum Ziel mit allen Waffen\n", + L"+%d%s Bonus zum Zielen pro Mausklick\n", + L"Immer vollständig getarnt sein\n", + L"+%d%s Trefferchance im Faustkampf\n", + L"+%d%s Schaden im Faustkampf\n", + L"+%d%s Chance, Schläge mit leeren Händen zu blocken\n", // 30 + L"+%d%s Chance, Schläge mit etwas in der Hand zu blocken\n", + L"+%d%s Chance, Stichwaffenangriffen auszuweichen\n", + L"Kann angeschlagenen Gegnern einen Tornadotritt verpassen, der doppelten Schaden anrichtet\n", + L"Sie erhalten besondere Animationen für den Faustkampf (etwas fernöstlicher)\n", + L"Keine Boni", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"V: Keine Vorteile.\nN: Keine Nachteile.", + L"V: Ist leistungsfähiger, wenn andere Söldner in der Nähe sind.\nN: Erhält keinen Moralzuwachs, wenn niemand in der Nähe ist.", + L"V: Ist leistungsfähiger, wenn niemand in der Nähe ist.\nN: Erhält keinen Moralzuwachs, wenn andere Söldner in der Nähe sind.", + L"V: Die Moral sinkt etwas langsamer und steigt schneller als normal.\nN: Hat eine geringere Chance, Fallen und Minen zu entdecken.", + L"V: Erhält Boni beim Ausbilden von Milizen und kann besser mit Menschen reden.\nN: Erhält keinen Moralzuwachs für Aktionen anderer Söldner.", + L"V: Lernt durch eigenes Training und Ausbildung etwas schneller.\nN: Hat weniger Unterdrückungs- und Angstresistenz.", + L"V: Verbraucht etwas weniger Energie, außer bei medizinischen und technischen Aufgaben sowie einer anspruchsvollen Ausbildung.\nN: Weisheit, Führungskraft, Sprengstoff-, Mechanik- und Medizinkenntnisse entwickeln sich langsamer.", + L"V: Hat eine leicht erhöhte Trefferchance bei Feuerstößen und richtet etwas mehr Schaden im Nahkampf an.\n Erhält ein wenig mehr Moralzuwachs beim Töten.\nN: Erledigt Aufgaben, die Geduld erfordern schlechter (Reparatur, Schlösser knacken, Fallen entschärfen, Patientenversorgung und Milizausbildung).", + L"V: Erhält Boni für Aufgaben, die Geduld erfordern (Reparatur, Schlösser knacken, Fallen entschärfen, Patientenversorgung und Milizausbildung).\nN: Erhält seltener Unterbrechungen im Kampf.", + L"V: Erhöhte Resistenz gegenüber Unterdrückungsfeuer und Panikanfällen.\nVerliert weniger Moral durch Verwundung oder Todesfälle im Team.\nN: Wird leichter getroffen, und kann seltener Feindfeuer durch schnelle Bewegung ausweichen.", + L"V: Erhält Moralzuwachs für nichtkämpferische Tätigkeiten (Außnahme: Milizausbildung).\nN: Erhält keinen Moralzuwachs für das Töten von Gegnern.", + L"V: Hat eine höhere Chance, Statusschäden anzurichten, und kann besonders fiese Wunden verursachen.\n Erhält mehr Moral für erfolgreiche Statusschäden.\nN: Kann schlechter mit Leuten reden. Die Moral sinkt ohne Kampf schneller.", + L"V: Ist leistungsfähiger, wenn Söldner des anderen Geschlechts in der Nähe sind.\nN: Die Moral anderer naher Söldner des gleichen Geschlechts steigt langsamer.", + L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"Keine besonderen Einschränkungen.", + L"Leidet an Atemproblemen und zeigt allgemein schlechtere Leistung in tropischen und Wüstensektoren.", + L"Erleidet allein in schwierigen Situationen Panikattacken.", + L"Zeigt schlechtere Leistung unter Tage.", + L"Kann bei Schwimmversuchen leicht ertrinken.", + L"Erträgt den Anblick großer Insekten nicht und\nzeigt etwas schlechtere Leistung in Wüsten- oder tropischen oder Sektoren.", + L"Vergisst manchmal seine Befehle und verliert dadurch im Kampf einen Teil seiner APs.", + L"Dreht manchmal durch und schießt dabei hin und wieder wild um sich.\nVerliert Moral, wenn das mit der ausgerüsteten Waffe nicht möglich ist.", + L"Deutlich geringere Hörweite.", + L"Geringere Sichtweite.", + L"Drastically increased bleeding.", // TODO.Translate + L"Performance suffers while on a rooftop.", // TODO.Translate + L"Occasionally harms self.", +}; + +STR16 gzIMPProfileCostText[]= +{ + L"Ein Profil kostet $%d. Genehmigen Sie die Zahlung?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"Sie können das neue Fertigkeitensystem nicht ohne aktiviertem PROFEX-Utility benutzen. Suchen Sie in Ihrer ja2_options.ini den Eintrag: READ_PROFILE_DATA_FROM_XML.", +}; +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"Sie haben sich für den IRONMAN-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nicht speichern, wenn Feinde im Sektor sind. Sind Sie sicher, dass Sie im IRONMAN-Modus spielen wollen?", + L"Sie haben sich für den SOFT IRONMAN-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nicht speichern, wenn der Rundenmodus im taktischen Kampf aktiv ist. Sind Sie sicher, dass Sie im SOFT IRONMAN-Modus spielen wollen?", + L"Sie haben sich für den EXTREME IRONMAN-Modus entschieden. Mit dieser Einstellung können Sie das Spiel nur einmal am Tag speichern, um %02d:00. Sind Sie sicher, dass Sie im EXTREME IRONMAN-Modus spielen wollen?", +}; + +STR16 gzDisplayCoverText[]= +{ + L"Deckung: %d/100 %s, Helligkeit: %d/100", + L"Waffen-Reichweite: %d/%d Felder, Trefferwahrscheinlichkeit: %d/100", + L"Waffen-Reichweite: %d/%d Felder, Lauf-Genauigkeit: %d/100", + L"Deckungsanzeige ausschalten", + L"Zeige Ansicht für Söldner", + L"Zeige Gefahrenbereich für Söldner", + L"Wald", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Stadt", + L"Wüste", + L"Schnee", // NOT USED!!! + L"Wald und Wüste", + L"Wald und Stadt", + L"Wald und Schnee", + L"Wüste und Stadt", + L"Wüste und Schnee", + L"Stadt und Schnee", + L"-", // yes empty for now + L"Deckung: %d/100, Helligkeit: %d/100", + L"Footstep volume", // TODO.Translate + L"Stealth difficulty", + L"Trap level", +}; + + +#endif diff --git a/i18n/_Ja25ItalianText.cpp b/i18n/_Ja25ItalianText.cpp index 1ffa7c5c..c8300eb5 100644 --- a/i18n/_Ja25ItalianText.cpp +++ b/i18n/_Ja25ItalianText.cpp @@ -1,528 +1,528 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("ITALIAN") - - #ifdef ITALIAN - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25ItalianText_public_symbol(void){;} - -#ifdef ITALIAN - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - L"Scassinare", - L"Lottare", - L"Elettronica", - L"Operazioni Notturne", - L"Lanciare", - L"Insegnare", - L"Armi Pesanti", - L"Armi Automatiche", - L"Muoversi Silenziosamente", - L"Ambidestro", - L"Combattimento con il coltello", - L"Cecchino", - L"Mimetismo", - L"Arti Marziali", - - L"Nessuna", - L"Specialità I.M.P.", - L"(Expert)", -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Auto Weapons", - L"Heavy Weapons", - L"Marksman", - L"Hunter", - L"Gunslinger", - L"Hand to Hand", - L"Deputy", - L"Technician", - L"Paramedic", - L"Covert Ops", // TODO.Translate - - L"None", - L"I.M.P. Major Traits", - // second names - L"Machinegunner", - L"Bombardier", - L"Sniper", - L"Ranger", - L"Gunfighter", - L"Martial Arts", - L"Squadleader", - L"Engineer", - L"Doctor", - L"Spy", // TODO.Translate -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Ambidextrous", - L"Melee", - L"Throwing", - L"Night Ops", - L"Stealthy", - L"Athletics", - L"Bodybuilding", - L"Demolitions", - L"Teaching", - L"Scouting", - L"Radio Operator", - L"Survival", //TODO.Translate - - L"None", - L"I.M.P. Minor Traits", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s CtH with Assault Rifles\n", - L"+%d%s CtH with SMGs\n", - L"+%d%s CtH with LMGs\n", - L"-%d%s APs to fire LMGs on autofire or burst mode\n", - L"-%d%s APs to ready LMGs\n", - L"Auto fire/burst CtH penalty reduced by %d%s\n", - L"Reduced chance for shooting extra bullets on autofire\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s APs to fire grenade launchers\n", - L"-%d%s APs to fire rocket launchers\n", - L"+%d%s CtH with grenade launchers\n", - L"+%d%s CtH with rocket launchers\n", - L"-%d%s APs to fire mortar\n", - L"Reduced penalty for mortar CtH by %d%s\n", - L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", - L"+%d%s damage to other targets with heavy weapons\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Sniper Rifles\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click (except for handguns)\n", - L"+%d%s damage on shot", - L" plus", - L" per every aim click", - L" after first", - L" after second", - L" after third", - L" after fourth", - L" after fifth", - L" after sixth", - L" after seventh", - L"-%d%s APs to chamber a round with bolt-action rifles \n", - L"Adds one more aim click for rifle-type guns\n", - L"Adds %d more aim clicks for rifle-type guns\n", - L"Makes aiming faster with rifle-type guns by one aim click\n", - L"Makes aiming faster with rifle-type guns by %d aim clicks\n", - L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Shotguns\n", - L"-%d%s APs needed to pump Shotguns\n", - L"-%d%s APs to fire Shotguns\n", - L"Adds %d more aim click for Shotguns\n", - L"Adds %d more aim clicks for Shotguns\n", - L"+%d%s effective range with Shotguns\n", - L"-%d%s APs to reload single Shotgun shells\n", - L"Adds %d more aim click for Rifles\n", - L"Adds %d more aim clicks for Rifles\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s APs to fire with pistols and revolvers\n", - L"+%d%s effective range with pistols and revolvers\n", - L"+%d%s CtH with pistols and revolvers\n", - L"+%d%s CtH with machine pistols", - L" (on single shots only)", - L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", - L"-%d%s APs to ready pistols and revolvers\n", - 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[]= -{ - L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s CtH with hand to hand attacks with bare hands\n", - L"+%d%s CtH with hand to hand attacks with brass knuckles\n", - L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", - L"Enemy knocked out due to your HtH attacks probably never stand up\n", - L"Focused (aimed) punch deals +%d%s more damage\n", - L"Special spinning kick deals +%d%s more damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"+%d%s additional chance to dodge HtH attacks with bare hands", - L" or brass knuckles", - L" (+%d%s with brass knuckles)", - L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", - L"+%d%s chance to dodge attacks by any melee weapon\n", - L"-%d%s APs to steal weapon from enemy hands\n", - L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", - L"-%d%s APs to change stance (stand, crouch, lie down)\n", - L"-%d%s APs to turn around\n", - L"-%d%s APs to climb on/off roof and jump obstacles\n", - L"+%d%s chance to kick open doors\n", - L"Gains special animations for hand to hand combat\n", - L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s APs per round of other mercs in vicinity\n", - L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", - L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", - L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", - L"+%d morale gain for other mercs in the vicinity\n", - L"-%d morale loss for other mercs in the vicinity\n", - L"The vicinity for bonuses is %d tiles", - L" (%d tiles with extended ears)", - L"(Max simultaneous bonuses for one soldier is %d)\n", - L"+%d%s fear resistence of %s\n", - L"Drawback: %dx morale loss for %s's death for all other mercs\n", - L"+%d%s chance to trigger collective interrupts\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s to repair speed\n", - L"+%d%s to lockpick (normal/electronic locks)\n", - L"+%d%s to disarm electronic traps\n", - L"+%d%s to attach special items and combining things\n", - L"+%d%s to unjamm a gun in combat\n", - L"Reduced penalty to repair electronic items by %d%s\n", - L"Increased chance to detect traps and mines (+%d detect level)\n", - L"+%d%s robot's CtH controlled by the %s\n", - L"%s trait grants ability to repair the robot\n", - L"Reduced penalty to repair speed of the robot by %d%s\n", - L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"Able to use medical bag to perform surgical intervention on wounded soldier\n", - L"Surgery instantly returns %d%s of lost health back.", - L" (This will deplete the medical bag.)", - L"Able to heal lost stats (from critical hits) by", - L" surgery or", - L" doctor assignment.\n", - L"+%d%s effectiveness on doctor-patient assignment\n", - L"+%d%s bandaging speed\n", - L"+%d%s natural regeneration speed for all soldiers in the same sector", - L" (max %d of these bonuses per sector stack)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", - L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", - L"+%d%s CtH with covert melee weapons\n", - L"+%d%s chance of instakill with covert melee weapons\n", - L"Disguise AP cost lowered by %d%s.\n", - L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= // TODO.Translate -{ - L"Can use communications equipment.\n", - L"Can call in artillery strikes from allies in neighbouring sectors.\n", - L"Via Frequency Scan assignment, enemy patrols can be located.\n", - L"Communications can be jammed sector-wide.\n", - L"If communications are jammed, an operator can scan for the jamming device.\n", - L"Can call in militia reinforcements from neighbouring sectors.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate - L"+%d%s speed on reloading guns with magazines\n", - L"+%d%s speed on reloading guns with loose rounds\n", - L"-%d%s APs to pickup items\n", - L"-%d%s APs to work backpack\n", - L"-%d%s APs to handle doors\n", - L"-%d%s APs to plant/remove bombs and mines\n", - L"-%d%s APs to attach items\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s APs to attack with blades\n", - L"+%d%s CtH with blades\n", - L"+%d%s CtH with blunt melee weapons\n", - L"+%d%s damage with blades\n", - L"+%d%s damage with blunt melee weapons\n", - L"Aimed attack with any melee weapon deals +%d%s damage\n", - L"+%d%s chance to dodge attack from melee blades\n", - L"+%d%s additional chance to dodge melee blades if holding a blade\n", - L"+%d%s chance to dodge attack from blunt melee weapons\n", - L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s basic APs to throw blades\n", - L"+%d%s max range when throwing blades\n", - L"+%d%s CtH when throwing blades\n", - L"+%d%s CtH when throwing blades per aim click\n", - L"+%d%s damage with throwing blades\n", - L"+%d%s damage with throwing blades per aim click\n", - L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", - L"+%d critical hit with throwing blade multiplier\n", - L"Adds %d more aim click for throwing blades\n", - L"Adds %d more aim clicks for throwing blades\n", - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d additional hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s APs to move quietly\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Reduced cover penalty for movement by %d%s\n", - L"-%d%s chance to be interrupted\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", - L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"%d%s damage resistance\n", - L"+%d%s effective strength for carrying weight capacity\n", - L"Reduced energy lost when hit by HtH attack by %d%s\n", - L"Increased damage needed to fall down by %d%s if hit on legs\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s damage for set bombs and mines\n", - L"+%d%s to attaching detonators check\n", - L"+%d%s to planting/removing bombs check\n", - L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", - L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"+%d%s bonus to militia training speed\n", - L"+%d%s bonus to effective leadership for determining militia training\n", - L"+%d%s bonus to teach other mercs\n", - L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", - L"+%d%s bonus to train stats through self-practice assignment\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% to effective sight range with scopes on weapons\n", - L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", - L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", - L"If in sector, adjacent sectors will show exact number of enemies\n", - L"If in sector, adjacent sectors will show presence of enemies, if any\n", - L"Prevents enemy ambushes on your squad\n", - L"Prevents bloodcat ambushes on your squad\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Will occasionally inform you about his teammates' opinions.\n", // TODO.Translate - L"Prevents teammates' misbehaviour (drugs, alcohol, scrounging).\n", // TODO.Translate - L"Can spread propaganda in towns.\n", // TODO.Translate - L"Can gather rumours in towns.\n", // TODO.Translate - L"Can be put undercover in prisons.\n", // TODO.Translate - L"Increases your reputation by %d every day if in good morale.\n", // TODO.Translate - L"+%d to effective hearing range\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate -{ - L"-%d%s travel time needed between sectors if traveling by foot\n", - L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", - L"-%d%s less energy spent for travelling between sectors\n", - L"-%d%s weather penalties\n", - L"-%d%s worn out speed of camouflage by water or time\n", - L"Can spot tracks up to %d tiles away\n", - - L"%s%d%% disease resistance\n", - L"%s%d%% food consumption\n", - L"%s%d%% water consumption\n", - L"+%d%% snake evasion\n", // TODO.Translate - L"+%d%% camouflage effectiveness\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s bonus to lockpicking\n", // 0 - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d extra hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", - L"+%d%s max range when throwing anything\n", // 10 - L"+%d%s chance to hit when throwing anything\n", - L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", - L"+%d%s bonus to militia training and other mercs instructing speed\n", - L"+%d%s effective leadership for militia training calculations\n", - L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", - L"Auto fire/burst chance to hit penalty is divided by %d\n", - L"Reduced chance for shooting unwanted bullets on autofire\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Eliminates CtH penalty when firing two weapons at once\n", // 20 - L"+%d%s chance to hit with melee blades\n", - L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", - L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", - L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click\n", - L"Provides permanent camouflage\n", - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 - L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", - L"+%d%s chance to dodge attacks by melee blades\n", - L"Can perform spinning kick attack on weakened enemies to deal double damage\n", - L"Gains special animations for hand to hand combat\n", - L"No bonuses", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"A: No advantage.\nD: No disadvantage.", - L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", - L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", - L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", - L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", - L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", - L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", - L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", - L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", - L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", - L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", - L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", - L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", - L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"No effects.", - L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", - L"Will suffer panic attack if left alone in certain situations.", - L"Overall performance is reduced when underground.", - L"Will drown easily if attempt to swim.", - L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", - L"Sometimes forgets orders given and will lose some APs if it happens in combat.", - L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", - L"Drastically reduced hearing.", - L"Reduced sight range.", - L"Drastically increased bleeding.", // TODO.Translate - L"Performance suffers while on a rooftop.", // TODO.Translate - L"Occasionally harms self.", -}; - - -STR16 gzIMPProfileCostText[]= -{ - L"The profile cost is $%d. Authorize payment?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"Hai scelto la modalità IRON MAN. Questa impostazione rende il gioco notevolmente più impegnativo, poiché non potrai salvare la partita in un settore occupato da nemici. Non potrai cambiare questa decisione nel corso della partita. Sei sicuro di voler giocare al livello IRON MAN?", - L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?",// TODO.Translate - L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?",// TODO.Translate -}; - -STR16 gzDisplayCoverText[]= -{ - L"Copertura: %d/100 %s, Luminosità: %d/100", - L"Gittata dell'arma: %d/%d tiles, Probabilità di colpire: %d/100", - L"Gittata dell'arma: %d/%d tiles, Muzzle Stability: %d/100", - L"Disabilita visualizzazione copertura", - L"Mostra visuale del mercenario", - L"Mostra zone di pericolo per il mercenario", - L"Bosco", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Urbano", - L"Deserto", - L"Neve", - L"Bosco e deserto", - L"Bosco e urbano", - L"Bosco e neve", - L"Deserto e urbano", - L"Deserto e neve", - L"Urbano e neve", - L"-", // yes empty for now // TODO.Translate - L"Cover: %d/100, Brightness: %d/100", - L"Footstep volume", - L"Stealth difficulty", - L"Trap level", -}; - - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("ITALIAN") + + #ifdef ITALIAN + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25ItalianText_public_symbol(void){;} + +#ifdef ITALIAN + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + L"Scassinare", + L"Lottare", + L"Elettronica", + L"Operazioni Notturne", + L"Lanciare", + L"Insegnare", + L"Armi Pesanti", + L"Armi Automatiche", + L"Muoversi Silenziosamente", + L"Ambidestro", + L"Combattimento con il coltello", + L"Cecchino", + L"Mimetismo", + L"Arti Marziali", + + L"Nessuna", + L"Specialità I.M.P.", + L"(Expert)", +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Auto Weapons", + L"Heavy Weapons", + L"Marksman", + L"Hunter", + L"Gunslinger", + L"Hand to Hand", + L"Deputy", + L"Technician", + L"Paramedic", + L"Covert Ops", // TODO.Translate + + L"None", + L"I.M.P. Major Traits", + // second names + L"Machinegunner", + L"Bombardier", + L"Sniper", + L"Ranger", + L"Gunfighter", + L"Martial Arts", + L"Squadleader", + L"Engineer", + L"Doctor", + L"Spy", // TODO.Translate +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Ambidextrous", + L"Melee", + L"Throwing", + L"Night Ops", + L"Stealthy", + L"Athletics", + L"Bodybuilding", + L"Demolitions", + L"Teaching", + L"Scouting", + L"Radio Operator", + L"Survival", //TODO.Translate + + L"None", + L"I.M.P. Minor Traits", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s CtH with Assault Rifles\n", + L"+%d%s CtH with SMGs\n", + L"+%d%s CtH with LMGs\n", + L"-%d%s APs to fire LMGs on autofire or burst mode\n", + L"-%d%s APs to ready LMGs\n", + L"Auto fire/burst CtH penalty reduced by %d%s\n", + L"Reduced chance for shooting extra bullets on autofire\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s APs to fire grenade launchers\n", + L"-%d%s APs to fire rocket launchers\n", + L"+%d%s CtH with grenade launchers\n", + L"+%d%s CtH with rocket launchers\n", + L"-%d%s APs to fire mortar\n", + L"Reduced penalty for mortar CtH by %d%s\n", + L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", + L"+%d%s damage to other targets with heavy weapons\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Sniper Rifles\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click (except for handguns)\n", + L"+%d%s damage on shot", + L" plus", + L" per every aim click", + L" after first", + L" after second", + L" after third", + L" after fourth", + L" after fifth", + L" after sixth", + L" after seventh", + L"-%d%s APs to chamber a round with bolt-action rifles \n", + L"Adds one more aim click for rifle-type guns\n", + L"Adds %d more aim clicks for rifle-type guns\n", + L"Makes aiming faster with rifle-type guns by one aim click\n", + L"Makes aiming faster with rifle-type guns by %d aim clicks\n", + L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Shotguns\n", + L"-%d%s APs needed to pump Shotguns\n", + L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", + L"+%d%s effective range with Shotguns\n", + L"-%d%s APs to reload single Shotgun shells\n", + L"Adds %d more aim click for Rifles\n", + L"Adds %d more aim clicks for Rifles\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s APs to fire with pistols and revolvers\n", + L"+%d%s effective range with pistols and revolvers\n", + L"+%d%s CtH with pistols and revolvers\n", + L"+%d%s CtH with machine pistols", + L" (on single shots only)", + L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", + L"-%d%s APs to ready pistols and revolvers\n", + 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[]= +{ + L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s CtH with hand to hand attacks with bare hands\n", + L"+%d%s CtH with hand to hand attacks with brass knuckles\n", + L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", + L"Enemy knocked out due to your HtH attacks probably never stand up\n", + L"Focused (aimed) punch deals +%d%s more damage\n", + L"Special spinning kick deals +%d%s more damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"+%d%s additional chance to dodge HtH attacks with bare hands", + L" or brass knuckles", + L" (+%d%s with brass knuckles)", + L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", + L"+%d%s chance to dodge attacks by any melee weapon\n", + L"-%d%s APs to steal weapon from enemy hands\n", + L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", + L"-%d%s APs to change stance (stand, crouch, lie down)\n", + L"-%d%s APs to turn around\n", + L"-%d%s APs to climb on/off roof and jump obstacles\n", + L"+%d%s chance to kick open doors\n", + L"Gains special animations for hand to hand combat\n", + L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s APs per round of other mercs in vicinity\n", + L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", + L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", + L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", + L"+%d morale gain for other mercs in the vicinity\n", + L"-%d morale loss for other mercs in the vicinity\n", + L"The vicinity for bonuses is %d tiles", + L" (%d tiles with extended ears)", + L"(Max simultaneous bonuses for one soldier is %d)\n", + L"+%d%s fear resistence of %s\n", + L"Drawback: %dx morale loss for %s's death for all other mercs\n", + L"+%d%s chance to trigger collective interrupts\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s to repair speed\n", + L"+%d%s to lockpick (normal/electronic locks)\n", + L"+%d%s to disarm electronic traps\n", + L"+%d%s to attach special items and combining things\n", + L"+%d%s to unjamm a gun in combat\n", + L"Reduced penalty to repair electronic items by %d%s\n", + L"Increased chance to detect traps and mines (+%d detect level)\n", + L"+%d%s robot's CtH controlled by the %s\n", + L"%s trait grants ability to repair the robot\n", + L"Reduced penalty to repair speed of the robot by %d%s\n", + L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"Able to use medical bag to perform surgical intervention on wounded soldier\n", + L"Surgery instantly returns %d%s of lost health back.", + L" (This will deplete the medical bag.)", + L"Able to heal lost stats (from critical hits) by", + L" surgery or", + L" doctor assignment.\n", + L"+%d%s effectiveness on doctor-patient assignment\n", + L"+%d%s bandaging speed\n", + L"+%d%s natural regeneration speed for all soldiers in the same sector", + L" (max %d of these bonuses per sector stack)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", + L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", + L"+%d%s CtH with covert melee weapons\n", + L"+%d%s chance of instakill with covert melee weapons\n", + L"Disguise AP cost lowered by %d%s.\n", + L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= // TODO.Translate +{ + L"Can use communications equipment.\n", + L"Can call in artillery strikes from allies in neighbouring sectors.\n", + L"Via Frequency Scan assignment, enemy patrols can be located.\n", + L"Communications can be jammed sector-wide.\n", + L"If communications are jammed, an operator can scan for the jamming device.\n", + L"Can call in militia reinforcements from neighbouring sectors.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate + L"+%d%s speed on reloading guns with magazines\n", + L"+%d%s speed on reloading guns with loose rounds\n", + L"-%d%s APs to pickup items\n", + L"-%d%s APs to work backpack\n", + L"-%d%s APs to handle doors\n", + L"-%d%s APs to plant/remove bombs and mines\n", + L"-%d%s APs to attach items\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s APs to attack with blades\n", + L"+%d%s CtH with blades\n", + L"+%d%s CtH with blunt melee weapons\n", + L"+%d%s damage with blades\n", + L"+%d%s damage with blunt melee weapons\n", + L"Aimed attack with any melee weapon deals +%d%s damage\n", + L"+%d%s chance to dodge attack from melee blades\n", + L"+%d%s additional chance to dodge melee blades if holding a blade\n", + L"+%d%s chance to dodge attack from blunt melee weapons\n", + L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s basic APs to throw blades\n", + L"+%d%s max range when throwing blades\n", + L"+%d%s CtH when throwing blades\n", + L"+%d%s CtH when throwing blades per aim click\n", + L"+%d%s damage with throwing blades\n", + L"+%d%s damage with throwing blades per aim click\n", + L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", + L"+%d critical hit with throwing blade multiplier\n", + L"Adds %d more aim click for throwing blades\n", + L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d additional hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s APs to move quietly\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Reduced cover penalty for movement by %d%s\n", + L"-%d%s chance to be interrupted\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", + L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"%d%s damage resistance\n", + L"+%d%s effective strength for carrying weight capacity\n", + L"Reduced energy lost when hit by HtH attack by %d%s\n", + L"Increased damage needed to fall down by %d%s if hit on legs\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s damage for set bombs and mines\n", + L"+%d%s to attaching detonators check\n", + L"+%d%s to planting/removing bombs check\n", + L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", + L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"+%d%s bonus to militia training speed\n", + L"+%d%s bonus to effective leadership for determining militia training\n", + L"+%d%s bonus to teach other mercs\n", + L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", + L"+%d%s bonus to train stats through self-practice assignment\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% to effective sight range with scopes on weapons\n", + L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", + L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", + L"If in sector, adjacent sectors will show exact number of enemies\n", + L"If in sector, adjacent sectors will show presence of enemies, if any\n", + L"Prevents enemy ambushes on your squad\n", + L"Prevents bloodcat ambushes on your squad\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Will occasionally inform you about his teammates' opinions.\n", // TODO.Translate + L"Prevents teammates' misbehaviour (drugs, alcohol, scrounging).\n", // TODO.Translate + L"Can spread propaganda in towns.\n", // TODO.Translate + L"Can gather rumours in towns.\n", // TODO.Translate + L"Can be put undercover in prisons.\n", // TODO.Translate + L"Increases your reputation by %d every day if in good morale.\n", // TODO.Translate + L"+%d to effective hearing range\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate +{ + L"-%d%s travel time needed between sectors if traveling by foot\n", + L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", + L"-%d%s less energy spent for travelling between sectors\n", + L"-%d%s weather penalties\n", + L"-%d%s worn out speed of camouflage by water or time\n", + L"Can spot tracks up to %d tiles away\n", + + L"%s%d%% disease resistance\n", + L"%s%d%% food consumption\n", + L"%s%d%% water consumption\n", + L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% camouflage effectiveness\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s bonus to lockpicking\n", // 0 + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d extra hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", + L"+%d%s max range when throwing anything\n", // 10 + L"+%d%s chance to hit when throwing anything\n", + L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", + L"+%d%s bonus to militia training and other mercs instructing speed\n", + L"+%d%s effective leadership for militia training calculations\n", + L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", + L"Auto fire/burst chance to hit penalty is divided by %d\n", + L"Reduced chance for shooting unwanted bullets on autofire\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Eliminates CtH penalty when firing two weapons at once\n", // 20 + L"+%d%s chance to hit with melee blades\n", + L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", + L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", + L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click\n", + L"Provides permanent camouflage\n", + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 + L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", + L"+%d%s chance to dodge attacks by melee blades\n", + L"Can perform spinning kick attack on weakened enemies to deal double damage\n", + L"Gains special animations for hand to hand combat\n", + L"No bonuses", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"A: No advantage.\nD: No disadvantage.", + L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", + L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", + L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", + L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", + L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", + L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", + L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", + L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", + L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", + L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", + L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", + L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", + L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"No effects.", + L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", + L"Will suffer panic attack if left alone in certain situations.", + L"Overall performance is reduced when underground.", + L"Will drown easily if attempt to swim.", + L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", + L"Sometimes forgets orders given and will lose some APs if it happens in combat.", + L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", + L"Drastically reduced hearing.", + L"Reduced sight range.", + L"Drastically increased bleeding.", // TODO.Translate + L"Performance suffers while on a rooftop.", // TODO.Translate + L"Occasionally harms self.", +}; + + +STR16 gzIMPProfileCostText[]= +{ + L"The profile cost is $%d. Authorize payment?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"Hai scelto la modalità IRON MAN. Questa impostazione rende il gioco notevolmente più impegnativo, poiché non potrai salvare la partita in un settore occupato da nemici. Non potrai cambiare questa decisione nel corso della partita. Sei sicuro di voler giocare al livello IRON MAN?", + L"You have chosen SOFT IRON MAN mode. This setting makes the game slightly more challenging as you will not be able to save your game during turn-based combat. This setting will affect the entire course of the game. Are you sure want to play in SOFT IRON MAN mode?",// TODO.Translate + L"You have chosen EXTREME IRON MAN mode. This setting makes the game way more challenging as you will be able to save your progress only once per day - at %02d:00. This setting will affect the entire course of the game. Do you seriously want to play in EXTREME IRON MAN mode?",// TODO.Translate +}; + +STR16 gzDisplayCoverText[]= +{ + L"Copertura: %d/100 %s, Luminosità: %d/100", + L"Gittata dell'arma: %d/%d tiles, Probabilità di colpire: %d/100", + L"Gittata dell'arma: %d/%d tiles, Muzzle Stability: %d/100", + L"Disabilita visualizzazione copertura", + L"Mostra visuale del mercenario", + L"Mostra zone di pericolo per il mercenario", + L"Bosco", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Urbano", + L"Deserto", + L"Neve", + L"Bosco e deserto", + L"Bosco e urbano", + L"Bosco e neve", + L"Deserto e urbano", + L"Deserto e neve", + L"Urbano e neve", + L"-", // yes empty for now // TODO.Translate + L"Cover: %d/100, Brightness: %d/100", + L"Footstep volume", + L"Stealth difficulty", + L"Trap level", +}; + + +#endif diff --git a/i18n/_Ja25PolishText.cpp b/i18n/_Ja25PolishText.cpp index 1034b458..1db59b88 100644 --- a/i18n/_Ja25PolishText.cpp +++ b/i18n/_Ja25PolishText.cpp @@ -1,530 +1,530 @@ -// WANNE: This pragma should not be needed anymore for Polish version, after we set the encoding to UTF8 -// WANNE: Yes we need this here exclusivly in Polish version, because we do not have a codepage in the code like for other versions. -//#pragma setlocale("POLISH") - - #ifdef POLISH - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25PolishText_public_symbol(void){;} - -#ifdef POLISH - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - L"Otwieranie zamków", - L"Walka wręcz", - L"Elektronika", - L"Operacje nocne", - L"Rzucanie", - L"Szkolenie", - L"Broñ ciężka", - L"Broñ automatyczna", - L"Skradanie się", - L"Oburęczność", - L"Broñ biała", - L"Snajper", - L"Kamuflaż", - L"Sztuki walki", - - L"Brak", - L"Umiejętności", - L"(Ekspert)", - -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Broñ automatyczna", - L"Broñ ciężka", - L"Strzelec wyborowy", - L"£owca", - L"Rewolwerowiec", - L"Walka wręcz", - L"Zastępca szeryfa", - L"Technik", - L"Paramedyk", - L"Covert Ops", // TODO.Translate - - L"None", - L"Główne cechy I.M.P", - // second names - L"Strzelec CKM", - L"Bombardier", - L"Snajper", - L"Leśniczy", - L"Rewolwerowiec", - L"Walka wręcz", - L"Dowódca drużyny", - L"Inżynier", - L"Doktor", - L"Spy", // TODO.Translate -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Oburęczność", - L"Walka wręcz", - L"Rzucanie", - L"Operacje nocne", - L"Cichy", - L"Atletyka", - L"Bodybuilding", - L"£adunki wybuchowe", - L"Nauczanie", - L"Zwiad", - L"Radio Operator", - L"Survival", //TODO.Translate - - L"Brak", - L"Pomniejsze cechy I.M.P", -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s do szansy trafienia karabinem szturmowym\n", - L"+%d%s do szansy trafienia pistoletem maszynowym\n", - L"+%d%s do szansy trafienia erkaemem\n", - L"-%d%s do liczby PA potrzebnych do strzału erkaemem w trybie automatycznym lub serią\n", - L"-%d%s do liczby PA potrzebnych do przygotowania erkaemu\n", - L"Kara do szansy trafienia ogniem automatycznym/serią jest zmniejszona o %d%s\n", - L"Zmniejszona szansa na wystrzelenie przez przypadek większej liczby pocisków w ogniu automatycznym o -%d%s\n", - -}; -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s do liczby PA potrzebnych do strzału z granatnika\n", - L"-%d%s do liczby PA potrzebnych do strzału z wyrzutni rakiet\n", - L"+%d%s do szansy trafienia grantnikiem\n", - L"+%d%s do szansy trafienia wyrzutnią rakiet\n", - L"-%d%s do liczby PA potrzebnych do strzału z moździerza\n", - L"Reduced penalty for mortar CtH by %d%s\n", - L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", - L"+%d%s damage to other targets with heavy weapons\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Sniper Rifles\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click (except for handguns)\n", - L"+%d%s damage on shot", - L" plus", - L" per every aim click", - L" after first", - L" after second", - L" after third", - L" after fourth", - L" after fifth", - L" after sixth", - L" after seventh", - L"-%d%s APs to chamber a round with bolt-action rifles \n", - L"Adds one more aim click for rifle-type guns\n", - L"Adds %d more aim clicks for rifle-type guns\n", - L"Makes aiming faster with rifle-type guns by one aim click\n", - L"Makes aiming faster with rifle-type guns by %d aim clicks\n", - L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s CtH with Rifles\n", - L"+%d%s CtH with Shotguns\n", - L"-%d%s APs needed to pump Shotguns\n", - L"-%d%s APs to fire Shotguns\n", - L"Adds %d more aim click for Shotguns\n", - L"Adds %d more aim clicks for Shotguns\n", - L"+%d%s effective range with Shotguns\n", - L"-%d%s APs to reload single Shotgun shells\n", - L"Adds %d more aim click for Rifles\n", - L"Adds %d more aim clicks for Rifles\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s APs to fire with pistols and revolvers\n", - L"+%d%s effective range with pistols and revolvers\n", - L"+%d%s CtH with pistols and revolvers\n", - L"+%d%s CtH with machine pistols", - L" (on single shots only)", - L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", - L"-%d%s APs to ready pistols and revolvers\n", - 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[]= -{ - L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s CtH with hand to hand attacks with bare hands\n", - L"+%d%s CtH with hand to hand attacks with brass knuckles\n", - L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", - L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", - L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", - L"Enemy knocked out due to your HtH attacks probably never stand up\n", - L"Focused (aimed) punch deals +%d%s more damage\n", - L"Special spinning kick deals +%d%s more damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"+%d%s additional chance to dodge HtH attacks with bare hands", - L" or brass knuckles", - L" (+%d%s with brass knuckles)", - L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", - L"+%d%s chance to dodge attacks by any melee weapon\n", - L"-%d%s APs to steal weapon from enemy hands\n", - L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", - L"-%d%s APs to change stance (stand, crouch, lie down)\n", - L"-%d%s APs to turn around\n", - L"-%d%s APs to climb on/off roof and jump obstacles\n", - L"+%d%s chance to kick open doors\n", - L"Gains special animations for hand to hand combat\n", - L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s APs per round of other mercs in vicinity\n", - L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", - L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", - L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", - L"+%d morale gain for other mercs in the vicinity\n", - L"-%d morale loss for other mercs in the vicinity\n", - L"The vicinity for bonuses is %d tiles", - L" (%d tiles with extended ears)", - L"(Max simultaneous bonuses for one soldier is %d)\n", - L"+%d%s fear resistence of %s\n", - L"Drawback: %dx morale loss for %s's death for all other mercs\n", - L"+%d%s chance to trigger collective interrupts\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s to repair speed\n", - L"+%d%s to lockpick (normal/electronic locks)\n", - L"+%d%s to disarm electronic traps\n", - L"+%d%s to attach special items and combining things\n", - L"+%d%s to unjamm a gun in combat\n", - L"Reduced penalty to repair electronic items by %d%s\n", - L"Increased chance to detect traps and mines (+%d detect level)\n", - L"+%d%s robot's CtH controlled by the %s\n", - L"%s trait grants ability to repair the robot\n", - L"Reduced penalty to repair speed of the robot by %d%s\n", - L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"Able to use medical bag to perform surgical intervention on wounded soldier\n", - L"Surgery instantly returns %d%s of lost health back.", - L" (This will deplete the medical bag.)", - L"Able to heal lost stats (from critical hits) by", - L" surgery or", - L" doctor assignment.\n", - L"+%d%s effectiveness on doctor-patient assignment\n", - L"+%d%s bandaging speed\n", - L"+%d%s natural regeneration speed for all soldiers in the same sector", - L" (max %d of these bonuses per sector stack)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", - L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", - L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", - L"+%d%s CtH with covert melee weapons\n", - L"+%d%s chance of instakill with covert melee weapons\n", - L"Disguise AP cost lowered by %d%s.\n", - L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= // TODO.Translate -{ - L"Can use communications equipment.\n", - L"Can call in artillery strikes from allies in neighbouring sectors.\n", - L"Via Frequency Scan assignment, enemy patrols can be located.\n", - L"Communications can be jammed sector-wide.\n", - L"If communications are jammed, an operator can scan for the jamming device.\n", - L"Can call in militia reinforcements from neighbouring sectors.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate - L"+%d%s speed on reloading guns with magazines\n", - L"+%d%s speed on reloading guns with loose rounds\n", - L"-%d%s APs to pickup items\n", - L"-%d%s APs to work backpack\n", - L"-%d%s APs to handle doors\n", - L"-%d%s APs to plant/remove bombs and mines\n", - L"-%d%s APs to attach items\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s APs to attack with blades\n", - L"+%d%s CtH with blades\n", - L"+%d%s CtH with blunt melee weapons\n", - L"+%d%s damage with blades\n", - L"+%d%s damage with blunt melee weapons\n", - L"Aimed attack with any melee weapon deals +%d%s damage\n", - L"+%d%s chance to dodge attack from melee blades\n", - L"+%d%s additional chance to dodge melee blades if holding a blade\n", - L"+%d%s chance to dodge attack from blunt melee weapons\n", - L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s basic APs to throw blades\n", - L"+%d%s max range when throwing blades\n", - L"+%d%s CtH when throwing blades\n", - L"+%d%s CtH when throwing blades per aim click\n", - L"+%d%s damage with throwing blades\n", - L"+%d%s damage with throwing blades per aim click\n", - L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", - L"+%d critical hit with throwing blade multiplier\n", - L"Adds %d more aim click for throwing blades\n", - L"Adds %d more aim clicks for throwing blades\n", - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d additional hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s APs to move quietly\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Reduced cover penalty for movement by %d%s\n", - L"-%d%s chance to be interrupted\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", - L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"%d%s damage resistance\n", - L"+%d%s effective strength for carrying weight capacity\n", - L"Reduced energy lost when hit by HtH attack by %d%s\n", - L"Increased damage needed to fall down by %d%s if hit on legs\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s damage for set bombs and mines\n", - L"+%d%s to attaching detonators check\n", - L"+%d%s to planting/removing bombs check\n", - L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", - L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"+%d%s bonus to militia training speed\n", - L"+%d%s bonus to effective leadership for determining militia training\n", - L"+%d%s bonus to teach other mercs\n", - L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", - L"+%d%s bonus to train stats through self-practice assignment\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% to effective sight range with scopes on weapons\n", - L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", - L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", - L"If in sector, adjacent sectors will show exact number of enemies\n", - L"If in sector, adjacent sectors will show presence of enemies, if any\n", - L"Prevents enemy ambushes on your squad\n", - L"Prevents bloodcat ambushes on your squad\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Okazyjnie poinformuje cię o opiniach kolegów z oddziału.\n", - L"Zapobiega złemu zachowaniu kolegów z oddziału (narkotyki, alkohol, kradzieże).\n", - L"Może szerzyć propagandę w miastach.\n", - L"Może zbierać plotki w miastach.\n", - L"Może zostać umieszczony w więzieniu jako tajniak.\n", - L"Jeżeli w dobrym nastroju, poprawia twoją reputację o %d każdego dnia.\n", - L"+%d zasięg słuchu\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate -{ - L"-%d%s travel time needed between sectors if traveling by foot\n", - L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", - L"-%d%s less energy spent for travelling between sectors\n", - L"-%d%s weather penalties\n", - L"-%d%s worn out speed of camouflage by water or time\n", - L"Can spot tracks up to %d tiles away\n", - - L"%s%d%% disease resistance\n", - L"%s%d%% food consumption\n", - L"%s%d%% water consumption\n", - L"+%d%% snake evasion\n", // TODO.Translate - L"+%d%% camouflage effectiveness\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"No bonuses", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s bonus to lockpicking\n", // 0 - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks\n", - L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", - L"+%d to effective sight range in the dark\n", - L"+%d to general effective hearing range\n", - L"+%d extra hearing range in the dark\n", - L"+%d to interrupts modifier in the dark\n", - L"-%d need to sleep\n", - L"+%d%s max range when throwing anything\n", // 10 - L"+%d%s chance to hit when throwing anything\n", - L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", - L"+%d%s bonus to militia training and other mercs instructing speed\n", - L"+%d%s effective leadership for militia training calculations\n", - L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", - L"Auto fire/burst chance to hit penalty is divided by %d\n", - L"Reduced chance for shooting unwanted bullets on autofire\n", - L"+%d%s chance to move quietly\n", - L"+%d%s stealth (being 'invisible' if unnoticed)\n", - L"Eliminates CtH penalty when firing two weapons at once\n", // 20 - L"+%d%s chance to hit with melee blades\n", - L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", - L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", - L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", - L"-%d%s effective range to target with all weapons\n", - L"+%d%s aiming bonus per aim click\n", - L"Provides permanent camouflage\n", - L"+%d%s hand to hand chance to hit\n", - L"+%d%s hand to hand damage\n", - L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 - L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", - L"+%d%s chance to dodge attacks by melee blades\n", - L"Can perform spinning kick attack on weakened enemies to deal double damage\n", - L"Gains special animations for hand to hand combat\n", - L"No bonuses", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"A: No advantage.\nD: No disadvantage.", - L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", - L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", - L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", - L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", - L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", - L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", - L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", - L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", - L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", - L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", - L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", - L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", - L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"No effects.", - L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", - L"Will suffer panic attack if left alone in certain situations.", - L"Overall performance is reduced when underground.", - L"Will drown easily if attempt to swim.", - L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", - L"Sometimes forgets orders given and will lose some APs if it happens in combat.", - L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", - L"Drastically reduced hearing.", - L"Reduced sight range.", - L"Drastically increased bleeding.", // TODO.Translate - L"Performance suffers while on a rooftop.", // TODO.Translate - L"Occasionally harms self.", -}; - - -STR16 gzIMPProfileCostText[]= -{ - L"The profile cost is $%d. Authorize payment?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"Wybrałeś tryb CZŁOWIEKA Z ŻELAZA. Opcja ta sprawi, że gra będzie dużo trudniejsza, ponieważ nie będzie możliwości zapisywania gry podczas walki. Będzie to miało wpływ na cały przebieg rozgrywki. Czy na pewno chcesz grać w trybie CZŁOWIEKA Z ŻELAZA?", - L"Wybrałeś tryb CZŁOWIEKA Z ŻELIWA. Opcja ta sprawi, że gra będzie nieco trudniejsza, gdyż nie będziesz miał możliwości zapisywania gry podczas walki w trybie turowym. Będzie to miało wpływ na cały przebieg rozgrywki. Czy na pewno chcesz grać w trybie CZŁOWIEKA Z ŻELIWA?", - L"Wybrałeś tryb CZŁOWIEKA ZE STALI. Opcja ta sprawi, że gra będzie znacznie trudniejsza, gdyż będziesz mógł zapisać grę zaledwie raz dziennie, o %02d:00. Będzie to miało wpływ na cały przebieg rozgrywki. Jesteś pewien, że gra w trybie CZŁOWIEKA ZE STALI to dobry pomysł?", -}; - -STR16 gzDisplayCoverText[]= -{ - L"Osłona: %d/100 %s, Oświetlenie: %d/100", - L"Zasięg broni: %d/%d pól, Szansa trafienia: %d/100", - L"Zasięg broni: %d/%d pól, Stabilność broni: %d/100", - L"Ukryj wyświetlani informacji o osłonie", - L"Pokaż zasięg wzroku postaci", - L"Pokaż stefy zagrożenia postaci", - L"Las", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Miasto", - L"Pustynia", - L"Śnieg", - L"Las i pustynia", - L"Las i miasto", - L"Las i śnieg", - L"Pustynia i miasto", - L"Pustynia i śnieg", - L"Miasto i śnieg", - L"-", // yes empty for now // TODO.Translate - L"Cover: %d/100, Brightness: %d/100", - L"Footstep volume", - L"Stealth difficulty", - L"Trap level", -}; - - -#endif +// WANNE: This pragma should not be needed anymore for Polish version, after we set the encoding to UTF8 +// WANNE: Yes we need this here exclusivly in Polish version, because we do not have a codepage in the code like for other versions. +//#pragma setlocale("POLISH") + + #ifdef POLISH + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25PolishText_public_symbol(void){;} + +#ifdef POLISH + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + L"Otwieranie zamków", + L"Walka wręcz", + L"Elektronika", + L"Operacje nocne", + L"Rzucanie", + L"Szkolenie", + L"Broñ ciężka", + L"Broñ automatyczna", + L"Skradanie się", + L"Oburęczność", + L"Broñ biała", + L"Snajper", + L"Kamuflaż", + L"Sztuki walki", + + L"Brak", + L"Umiejętności", + L"(Ekspert)", + +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Broñ automatyczna", + L"Broñ ciężka", + L"Strzelec wyborowy", + L"£owca", + L"Rewolwerowiec", + L"Walka wręcz", + L"Zastępca szeryfa", + L"Technik", + L"Paramedyk", + L"Covert Ops", // TODO.Translate + + L"None", + L"Główne cechy I.M.P", + // second names + L"Strzelec CKM", + L"Bombardier", + L"Snajper", + L"Leśniczy", + L"Rewolwerowiec", + L"Walka wręcz", + L"Dowódca drużyny", + L"Inżynier", + L"Doktor", + L"Spy", // TODO.Translate +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Oburęczność", + L"Walka wręcz", + L"Rzucanie", + L"Operacje nocne", + L"Cichy", + L"Atletyka", + L"Bodybuilding", + L"£adunki wybuchowe", + L"Nauczanie", + L"Zwiad", + L"Radio Operator", + L"Survival", //TODO.Translate + + L"Brak", + L"Pomniejsze cechy I.M.P", +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s do szansy trafienia karabinem szturmowym\n", + L"+%d%s do szansy trafienia pistoletem maszynowym\n", + L"+%d%s do szansy trafienia erkaemem\n", + L"-%d%s do liczby PA potrzebnych do strzału erkaemem w trybie automatycznym lub serią\n", + L"-%d%s do liczby PA potrzebnych do przygotowania erkaemu\n", + L"Kara do szansy trafienia ogniem automatycznym/serią jest zmniejszona o %d%s\n", + L"Zmniejszona szansa na wystrzelenie przez przypadek większej liczby pocisków w ogniu automatycznym o -%d%s\n", + +}; +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s do liczby PA potrzebnych do strzału z granatnika\n", + L"-%d%s do liczby PA potrzebnych do strzału z wyrzutni rakiet\n", + L"+%d%s do szansy trafienia grantnikiem\n", + L"+%d%s do szansy trafienia wyrzutnią rakiet\n", + L"-%d%s do liczby PA potrzebnych do strzału z moździerza\n", + L"Reduced penalty for mortar CtH by %d%s\n", + L"+%d%s damage to tanks with heavy weapons, grenades and explosives\n", + L"+%d%s damage to other targets with heavy weapons\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Sniper Rifles\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click (except for handguns)\n", + L"+%d%s damage on shot", + L" plus", + L" per every aim click", + L" after first", + L" after second", + L" after third", + L" after fourth", + L" after fifth", + L" after sixth", + L" after seventh", + L"-%d%s APs to chamber a round with bolt-action rifles \n", + L"Adds one more aim click for rifle-type guns\n", + L"Adds %d more aim clicks for rifle-type guns\n", + L"Makes aiming faster with rifle-type guns by one aim click\n", + L"Makes aiming faster with rifle-type guns by %d aim clicks\n", + L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s CtH with Rifles\n", + L"+%d%s CtH with Shotguns\n", + L"-%d%s APs needed to pump Shotguns\n", + L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", + L"+%d%s effective range with Shotguns\n", + L"-%d%s APs to reload single Shotgun shells\n", + L"Adds %d more aim click for Rifles\n", + L"Adds %d more aim clicks for Rifles\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s APs to fire with pistols and revolvers\n", + L"+%d%s effective range with pistols and revolvers\n", + L"+%d%s CtH with pistols and revolvers\n", + L"+%d%s CtH with machine pistols", + L" (on single shots only)", + L"+%d%s aiming bonus per click with pistols, machine pistols and revolvers\n", + L"-%d%s APs to ready pistols and revolvers\n", + 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[]= +{ + L"-%d%s AP for hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s CtH with hand to hand attacks with bare hands\n", + L"+%d%s CtH with hand to hand attacks with brass knuckles\n", + L"+%d%s damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"+%d%s breath damage of hand to hand attacks (bare hands or with brass knuckles)\n", + L"Enemy knocked out due to your HtH attacks takes slightly longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes much longer to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes very long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes extremely long to recuperate\n", + L"Enemy knocked out due to your HtH attacks takes long hours to recuperate\n", + L"Enemy knocked out due to your HtH attacks probably never stand up\n", + L"Focused (aimed) punch deals +%d%s more damage\n", + L"Special spinning kick deals +%d%s more damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"+%d%s additional chance to dodge HtH attacks with bare hands", + L" or brass knuckles", + L" (+%d%s with brass knuckles)", + L"+%d%s additional chance to dodge HtH attacks with brass knuckles\n", + L"+%d%s chance to dodge attacks by any melee weapon\n", + L"-%d%s APs to steal weapon from enemy hands\n", + L"-%d%s APs to change stance (stand, crouch, lie down), turn around, climb on/off roof and jump obstacles\n", + L"-%d%s APs to change stance (stand, crouch, lie down)\n", + L"-%d%s APs to turn around\n", + L"-%d%s APs to climb on/off roof and jump obstacles\n", + L"+%d%s chance to kick open doors\n", + L"Gains special animations for hand to hand combat\n", + L"-%d%s chance to be interrupted when charging towards an enemy on close range\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s APs per round of other mercs in vicinity\n", + L"+%d effective exp level of other mercs in vicinity, which have lesser level than the %s\n", + L"+%d effective exp level to count as a standby when counting friends' bonus for suppression\n", + L"+%d%s total suppression tolerance for other mercs in the vicinity and %s himself\n", + L"+%d morale gain for other mercs in the vicinity\n", + L"-%d morale loss for other mercs in the vicinity\n", + L"The vicinity for bonuses is %d tiles", + L" (%d tiles with extended ears)", + L"(Max simultaneous bonuses for one soldier is %d)\n", + L"+%d%s fear resistence of %s\n", + L"Drawback: %dx morale loss for %s's death for all other mercs\n", + L"+%d%s chance to trigger collective interrupts\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s to repair speed\n", + L"+%d%s to lockpick (normal/electronic locks)\n", + L"+%d%s to disarm electronic traps\n", + L"+%d%s to attach special items and combining things\n", + L"+%d%s to unjamm a gun in combat\n", + L"Reduced penalty to repair electronic items by %d%s\n", + L"Increased chance to detect traps and mines (+%d detect level)\n", + L"+%d%s robot's CtH controlled by the %s\n", + L"%s trait grants ability to repair the robot\n", + L"Reduced penalty to repair speed of the robot by %d%s\n", + L"Able to restore item threshold to 100%% during repair\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"Able to use medical bag to perform surgical intervention on wounded soldier\n", + L"Surgery instantly returns %d%s of lost health back.", + L" (This will deplete the medical bag.)", + L"Able to heal lost stats (from critical hits) by", + L" surgery or", + L" doctor assignment.\n", + L"+%d%s effectiveness on doctor-patient assignment\n", + L"+%d%s bandaging speed\n", + L"+%d%s natural regeneration speed for all soldiers in the same sector", + L" (max %d of these bonuses per sector stack)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Able to disguise as a civilian or soldier to slip behind enemy lines.\n", + L"Will be detected if performing suspicious actions, having\nsuspicious gear or being near fresh corpses.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to the enemy.\n", + L"Will be detected if disguised as a soldier and\ncloser than %d tiles to a fresh corpse.\n", + L"+%d%s CtH with covert melee weapons\n", + L"+%d%s chance of instakill with covert melee weapons\n", + L"Disguise AP cost lowered by %d%s.\n", + L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= // TODO.Translate +{ + L"Can use communications equipment.\n", + L"Can call in artillery strikes from allies in neighbouring sectors.\n", + L"Via Frequency Scan assignment, enemy patrols can be located.\n", + L"Communications can be jammed sector-wide.\n", + L"If communications are jammed, an operator can scan for the jamming device.\n", + L"Can call in militia reinforcements from neighbouring sectors.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate + L"+%d%s speed on reloading guns with magazines\n", + L"+%d%s speed on reloading guns with loose rounds\n", + L"-%d%s APs to pickup items\n", + L"-%d%s APs to work backpack\n", + L"-%d%s APs to handle doors\n", + L"-%d%s APs to plant/remove bombs and mines\n", + L"-%d%s APs to attach items\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s APs to attack with blades\n", + L"+%d%s CtH with blades\n", + L"+%d%s CtH with blunt melee weapons\n", + L"+%d%s damage with blades\n", + L"+%d%s damage with blunt melee weapons\n", + L"Aimed attack with any melee weapon deals +%d%s damage\n", + L"+%d%s chance to dodge attack from melee blades\n", + L"+%d%s additional chance to dodge melee blades if holding a blade\n", + L"+%d%s chance to dodge attack from blunt melee weapons\n", + L"+%d%s additional chance to dodge blunt melee weapons if holding a blade\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s basic APs to throw blades\n", + L"+%d%s max range when throwing blades\n", + L"+%d%s CtH when throwing blades\n", + L"+%d%s CtH when throwing blades per aim click\n", + L"+%d%s damage with throwing blades\n", + L"+%d%s damage with throwing blades per aim click\n", + L"+%d%s chance to inflict critical hit with throwing blade if not seen or heard\n", + L"+%d critical hit with throwing blade multiplier\n", + L"Adds %d more aim click for throwing blades\n", + L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d additional hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s APs to move quietly\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Reduced cover penalty for movement by %d%s\n", + L"-%d%s chance to be interrupted\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s APs for movement (running, walking, squatting, crawling, swimming, etc.)\n", + L"-%d%s energy spent for moving, roof-climbing, obstacle-jumping, swimming, etc.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"%d%s damage resistance\n", + L"+%d%s effective strength for carrying weight capacity\n", + L"Reduced energy lost when hit by HtH attack by %d%s\n", + L"Increased damage needed to fall down by %d%s if hit on legs\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s damage for set bombs and mines\n", + L"+%d%s to attaching detonators check\n", + L"+%d%s to planting/removing bombs check\n", + L"Decreased chance of enemy detecting your bombs and mines (+%d bomb level)\n", + L"Increased chance for shaped charge on opening doors (damage multiplied by %d)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"+%d%s bonus to militia training speed\n", + L"+%d%s bonus to effective leadership for determining militia training\n", + L"+%d%s bonus to teach other mercs\n", + L"Skill value treated to be +%d higher for being able to teach this skill to other mercs\n", + L"+%d%s bonus to train stats through self-practice assignment\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% to effective sight range with scopes on weapons\n", + L"+%d%% to effective sight range with binoculars (and scopes separated from weapons)\n", + L"-%d%% tunnel vision with binoculars (and scopes separated from weapons)\n", + L"If in sector, adjacent sectors will show exact number of enemies\n", + L"If in sector, adjacent sectors will show presence of enemies, if any\n", + L"Prevents enemy ambushes on your squad\n", + L"Prevents bloodcat ambushes on your squad\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Okazyjnie poinformuje cię o opiniach kolegów z oddziału.\n", + L"Zapobiega złemu zachowaniu kolegów z oddziału (narkotyki, alkohol, kradzieże).\n", + L"Może szerzyć propagandę w miastach.\n", + L"Może zbierać plotki w miastach.\n", + L"Może zostać umieszczony w więzieniu jako tajniak.\n", + L"Jeżeli w dobrym nastroju, poprawia twoją reputację o %d każdego dnia.\n", + L"+%d zasięg słuchu\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate +{ + L"-%d%s travel time needed between sectors if traveling by foot\n", + L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", + L"-%d%s less energy spent for travelling between sectors\n", + L"-%d%s weather penalties\n", + L"-%d%s worn out speed of camouflage by water or time\n", + L"Can spot tracks up to %d tiles away\n", + + L"%s%d%% disease resistance\n", + L"%s%d%% food consumption\n", + L"%s%d%% water consumption\n", + L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% camouflage effectiveness\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"No bonuses", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s bonus to lockpicking\n", // 0 + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks\n", + L"Eliminates penalty to repair and handle\nelectronic things (locks, traps, rem. detonators, robot, etc.)\n", + L"+%d to effective sight range in the dark\n", + L"+%d to general effective hearing range\n", + L"+%d extra hearing range in the dark\n", + L"+%d to interrupts modifier in the dark\n", + L"-%d need to sleep\n", + L"+%d%s max range when throwing anything\n", // 10 + L"+%d%s chance to hit when throwing anything\n", + L"+%d%s chance to instantly kill by throwing knife if not seen or heard\n", + L"+%d%s bonus to militia training and other mercs instructing speed\n", + L"+%d%s effective leadership for militia training calculations\n", + L"+%d%s chance to hit with rocket/grenade launchers and mortar\n", + L"Auto fire/burst chance to hit penalty is divided by %d\n", + L"Reduced chance for shooting unwanted bullets on autofire\n", + L"+%d%s chance to move quietly\n", + L"+%d%s stealth (being 'invisible' if unnoticed)\n", + L"Eliminates CtH penalty when firing two weapons at once\n", // 20 + L"+%d%s chance to hit with melee blades\n", + L"+%d%s chance to dodge attacks by melee blades if having blade in hands\n", + L"+%d%s chance to dodge attacks by melee blades if having anything else in hands\n", + L"+%d%s chance to dodge hand to hand attacks if having blade in hands\n", + L"-%d%s effective range to target with all weapons\n", + L"+%d%s aiming bonus per aim click\n", + L"Provides permanent camouflage\n", + L"+%d%s hand to hand chance to hit\n", + L"+%d%s hand to hand damage\n", + L"+%d%s chance to dodge hand to hand attacks if having empty hands\n", // 30 + L"+%d%s chance to dodge hand to hand attacks if not having empty hands\n", + L"+%d%s chance to dodge attacks by melee blades\n", + L"Can perform spinning kick attack on weakened enemies to deal double damage\n", + L"Gains special animations for hand to hand combat\n", + L"No bonuses", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"A: No advantage.\nD: No disadvantage.", + L"A: Better performance when a couple of mercs are nearby.\nD: Gains no morale when no other merc is nearby.", + L"A: Better performance when no other merc is nearby.\nD: Gains no morale when in a group.", + L"A: Morale sinks a little slower and grows faster than normal.\nD: Lower chance to detect traps and mines.", + L"A: Bonus on training militia and is better at communicating with people.\nD: Gains no morale for actions of other mercs.", + L"A: Slightly faster learning when self-practicing or as a student.\nD: Lower suppression and fear resistance.", + L"A: Energy goes down a bit slower except on assignments such as doctor, repairman, militia trainer or if learning certain skills.\nD: Wisdom, leadership, explosives, mechanical and medical skills improve slightly slower.", + L"A: Slightly better CtH on burst/autofire and inflicts slightly bigger damage in close combat\n Gains a little more morale for killing.\nD: Penalty for actions that need patience like repairing items, picking locks, removing traps, doctoring, training militia.", + L"A: Bonus for actions that need patience like repairing items, picking locks, removing traps, doctoring and training militia.\nD: Interrupt chance is slightly lowered.", + L"A: Higher suppression and fear resistance.\n Morale loss for taking damage and companions deaths is lower.\nD: Higher chance to be hit and enemy's penalty reduced when oneself is the moving target.", + L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.", + L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.", + L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.", + L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"No effects.", + L"Problems with breathing and reduced overall performance when in tropical or desert sectors.", + L"Will suffer panic attack if left alone in certain situations.", + L"Overall performance is reduced when underground.", + L"Will drown easily if attempt to swim.", + L"A look at large insects can cause big problems\nand being in tropical sectors also reduces performance a bit.", + L"Sometimes forgets orders given and will lose some APs if it happens in combat.", + L"Will go psycho and shoot like mad once in a while\nand will lose morale if unable to do so with equipped weapon.", + L"Drastically reduced hearing.", + L"Reduced sight range.", + L"Drastically increased bleeding.", // TODO.Translate + L"Performance suffers while on a rooftop.", // TODO.Translate + L"Occasionally harms self.", +}; + + +STR16 gzIMPProfileCostText[]= +{ + L"The profile cost is $%d. Authorize payment?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"You cannot choose the New Trait System with PROFEX utility deactivated. Check your JA2_Options.ini for entry: READ_PROFILE_DATA_FROM_XML.", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"Wybrałeś tryb CZŁOWIEKA Z ŻELAZA. Opcja ta sprawi, że gra będzie dużo trudniejsza, ponieważ nie będzie możliwości zapisywania gry podczas walki. Będzie to miało wpływ na cały przebieg rozgrywki. Czy na pewno chcesz grać w trybie CZŁOWIEKA Z ŻELAZA?", + L"Wybrałeś tryb CZŁOWIEKA Z ŻELIWA. Opcja ta sprawi, że gra będzie nieco trudniejsza, gdyż nie będziesz miał możliwości zapisywania gry podczas walki w trybie turowym. Będzie to miało wpływ na cały przebieg rozgrywki. Czy na pewno chcesz grać w trybie CZŁOWIEKA Z ŻELIWA?", + L"Wybrałeś tryb CZŁOWIEKA ZE STALI. Opcja ta sprawi, że gra będzie znacznie trudniejsza, gdyż będziesz mógł zapisać grę zaledwie raz dziennie, o %02d:00. Będzie to miało wpływ na cały przebieg rozgrywki. Jesteś pewien, że gra w trybie CZŁOWIEKA ZE STALI to dobry pomysł?", +}; + +STR16 gzDisplayCoverText[]= +{ + L"Osłona: %d/100 %s, Oświetlenie: %d/100", + L"Zasięg broni: %d/%d pól, Szansa trafienia: %d/100", + L"Zasięg broni: %d/%d pól, Stabilność broni: %d/100", + L"Ukryj wyświetlani informacji o osłonie", + L"Pokaż zasięg wzroku postaci", + L"Pokaż stefy zagrożenia postaci", + L"Las", // wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Miasto", + L"Pustynia", + L"Śnieg", + L"Las i pustynia", + L"Las i miasto", + L"Las i śnieg", + L"Pustynia i miasto", + L"Pustynia i śnieg", + L"Miasto i śnieg", + L"-", // yes empty for now // TODO.Translate + L"Cover: %d/100, Brightness: %d/100", + L"Footstep volume", + L"Stealth difficulty", + L"Trap level", +}; + + +#endif diff --git a/i18n/_Ja25RussianText.cpp b/i18n/_Ja25RussianText.cpp index fc037607..71ff1473 100644 --- a/i18n/_Ja25RussianText.cpp +++ b/i18n/_Ja25RussianText.cpp @@ -1,528 +1,528 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("RUSSIAN") - - #ifdef RUSSIAN - #include "Text.h" - #include "FileMan.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_Ja25RussianText_public_symbol(void){;} - -#ifdef RUSSIAN - -// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// SANDRO - New STOMP laptop strings -//these strings match up with the defines in IMP Skill trait.cpp -STR16 gzIMPSkillTraitsText[]= -{ - // made this more elegant - L"Взлом замков", - L"Рукопашный бой", - L"Электроника", - L"Ночник", - L"Метание", - L"Инструктор", - L"Тяжелое оружие", - L"Автоматическое оружие", - L"Скрытность", - L"Ловкач", - L"Холодное оружие", - L"Снайпер", - L"Камуфляж", - L"Боевые искусства", - - L"Нет", - L"I.M.P.: Специализация", - L"(эксперт)", - -}; - -//added another set of skill texts for new major traits -STR16 gzIMPSkillTraitsTextNewMajor[]= -{ - L"Автоматчик", //Auto Weapons - L"Гренадёр", //Heavy Weapons - L"Стрелок", //Marksman - L"Охотник", //Hunter - L"Ковбой", //Gunslinger - L"Боксёр", //Hand to Hand - L"Старшина", //Deputy - L"Техник", //Technician - L"Санитар", //Paramedic - L"Диверсант", //Covert Ops - - L"Нет", - L"I.M.P.: Основные навыки", //I.M.P. Major Traits - // second names - L"Пулемётчик", //Machinegunner - L"Артиллерист", //Bombardier - L"Снайпер", //Sniper - L"Егерь", //Ranger - L"Пистолетчик", //Gunfighter - L"Каратист", //Martial Arts - L"Командир", //Squadleader - L"Инженер", //Engineer - L"Доктор", //Doctor - L"Шпион", //Spy -}; - -//added another set of skill texts for new minor traits -STR16 gzIMPSkillTraitsTextNewMinor[]= -{ - L"Ловкач", //Ambidextrous - L"Мастер клинка", //Melee - L"Мастер по метанию", //Throwing - L"Ночник", //Night Ops - L"Бесшумный убийца", //Stealthy - L"Спортсмен", //Athletics - L"Культурист", //Bodybuilding - L"Подрывник", //Demolitions - L"Инструктор", //Teaching - L"Разведчик", //Scouting - L"Радист", //Radio Operator - L"Спец по выживанию", //Survival - - L"Нет", - L"I.M.P.: Дополнительные навыки", //I.M.P. Minor Traits -}; - -//these texts are for help popup windows, describing trait properties -STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= -{ - L"+%d%s к шансу попадания из автомата\n", - L"+%d%s к шансу попадания из пистолет-пулемёта\n", - L"+%d%s к шансу попадания из ручного пулемёта\n", - L"-%d%s ОД на стрельбу из ручного пулемёта в\nрежиме автоматической стрельбы или очередью с отсечкой\n", - L"-%d%s ОД на вскидывание ручного пулемёта\n", - L"Штраф на шанс попадания в автоматическом\nрежиме огня и в режиме очереди понижен на %d%s\n", - L"Понижен шанс лишних выстрелов при автоматической стрельбе\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= -{ - L"-%d%s ОД на стрельбу из гранатомёта\n", - L"-%d%s ОД на стрельбу из реактивного гранатомёта\n", - L"+%d%s к шансу попадания из гранатомёта\n", - L"+%d%s к шансу попадания из реактивного гранатомёта\n", - L"-%d%s ОД на залп из миномёта\n", - L"Понижен штраф на шанс попадания при стрельбе с миномёта на %d%s\n", - L"+%d%s к урону танкам от тяжёлого оружия, гранат и взрывчатки\n", - L"+%d%s к урону иным целям из тяжёлого оружия\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSniper[]= -{ - L"+%d%s к шансу попадания из винтовки\n", - L"+%d%s к шансу попадания из снайперской винтовки\n", - L"-%d%s эффективной дальности до цели для всего вида оружия\n", //-%d%s effective range to target with all weapons - L"+%d%s к бонусу прицеливания на каждый клик прицеливания (за исключением пистолетов)\n", - L"+%d%s к повреждению от выстрела", //+%d%s damage on shot - L" плюс", - L" с каждым кликом", - L" после первого", - L" после второго", - L" после третьего", - L" после четвёртого", - L" после пятого", - L" после шестого", - L" после седьмого", - L"-%d%s ОД на досылание патрона в винтовки со скользящим затвором\n", - L"+1 клик прицеливания для оружия типа винтовок\n", - L"+%d кликов прицеливания для оружия типа винтовок\n", - L"Прицеливание оружия типа винтовок быстрее на один клик прицеливания\n", - L"Прицеливание оружия типа винтовок быстрее на %d кликов прицеливания\n", - L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRanger[]= -{ - L"+%d%s к шансу попадания из винтовки\n", - L"+%d%s к шансу попадания из дробовика\n", - L"-%d%s ОД на перезарядку помпового дробовика\n", - L"-%d%s ОД на выстрел из дробовика\n", - L"+%d клик прицеливания для дробовиков\n", - L"+%d кликов прицеливания для дробовиков\n", - L"+%d%s к эффективной дальности дробовиков\n", - L"-%d%s ОД на перезарядку однозарядного дробовика\n", - L"+%d клик прицеливания для винтовок\n", - L"+%d кликов прицеливания для винтовок\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= -{ - L"-%d%s ОД на выстрел из пистолетов и револьверов\n", - L"+%d%s к эффективной дальности пистолетов и револьверов\n", - L"+%d%s к шансу попадания из пистолетов и револьверов\n", - L"+%d%s к шансу попадания из автоматических пистолетов", - L" (только для одиночного выстрела)", - L"+%d%s бонуса на один клик прицеливания для пистолетов,\nавтоматических пистолетов и револьверов\n", - L"-%d%s ОД на вскидывание пистолетов и револьверов\n", - L"-%d%s ОД на перезарядку пистолетов, автоматических пистолетов и револьверов\n", - L"+%d клик прицеливания для пистолетов, автоматических пистолетов и револьверов", - L"+%d кликов прицеливания для пистолетов, автоматических пистолетов и револьверов\n", - L"Can fan the hammer with revolvers\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= -{ - L"-%d%s ОД на рукопашные атаки (кулаками и кастетом)\n", - L"+%d%s к шансу на результативный удар рукой\n", - L"+%d%s к шансу на результативный удар кастетом\n", - L"+%d%s к урону в рукопашных атаках (кулаками и кастетом)\n", - L"+%d%s к урону выносливости в рукопашных атаках (кулаками и кастетом)\n", - L"Враг, сваленный вашими ударами, немного дольше приходит в себя\n", - L"Враг, сваленный вашими ударами, дольше приходит в себя\n", - L"Враг, сваленный вашими ударами, намного дольше приходит в себя\n", - L"Враг, сваленный вашими ударами, очень долго приходит в себя\n", - L"Враг, сваленный вашими ударами, надолго теряет сознание\n", - L"Враг, сваленный вашими ударами, теряет сознание на много часов\n", - L"Враг, сваленный вашими ударами, вероятно, больше не очнётся\n", - L"Прицельный удар наносит на %d%s больше урона\n", - L"Удар ногой с разворота наносит на %d%s больше урона\n", - L"+%d%s к шансу увернуться от атаки в рукопашном бою\n", - L"+%d%s к шансу увернуться от удара рукой", - L" или кастетом", - L" (+%d%s с кастетом)", - L"+%d%s к шансу увернуться от удара кастетом\n", - L"+%d%s к шансу увернуться от атаки любым оружием ближнего боя\n", - L"Нужно на %d%s ОД меньше, чтобы выхватить оружие из рук противника\n", - L"Нужно на %d%s ОД меньше, чтобы сменить положение (стоя, сидя, лежа), повернуться, слезть/залезть на крышу и перепрыгнуть препятствие\n", - L"Нужно на %d%s ОД меньше, чтобы сменить положение (стоя, сидя, лежа)\n", - L"Нужно на %d%s ОД меньше, чтобы повернуться\n", - L"Нужно на %d%s ОД меньше, чтобы слезть/залезть на крышу и перепрыгнуть препятствие\n", - L"+%d%s к шансу выбить дверь ногой\n", - L"Вы получаете специальные движения для атак ближнего боя\n", - L"-%d%s к шансу перехвата вашего хода во время движения\n", //chance to be interrupted when moving -}; - -STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= -{ - L"+%d%s ОД на каждый ход рядом находящимся наёмникам\n", - L"+%d к фактическому уровню рядом находящихся наёмников, у которых уровень ниже, чем у %s\n", - L"+%d к фактическому уровню опыта союзников при подсчете бонуса подавления для их огня\n", - L"На +%d%s труднее подавить %s и наёмников рядом с ним\n", - L"+%d к боевому духу рядом находящихся наёмников\n", - L"-%d к потере боевого духа для рядом находящихся наёмников\n", - L"Радиус влияния на других наёмников составляет %d тайлов", - L" (%d тайлов с усилителем звука)", - L"(Максимальное количество одновременных бонусов для одного солдата %d)\n", - L"+%d%s сопротивление страху у %s\n", - L"Недостаток: %dx кратное ухудшение боевого духа у наёмников, если погибает %s\n", - L"+%d%s к шансу получить перехват всем отрядом\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsTechnician[]= -{ - L"+%d%s к скорости ремонта\n", - L"+%d%s к умению взлома замков (обычных/электронных)\n", - L"+%d%s к умению отключать электронные ловушки\n", - L"+%d%s к умению сборки вещей и присоединению особых деталей\n", - L"+%d%s к умению устранить осечку оружия в бою\n", - L"Понижен штраф на ремонт электронных предметов на %d%s\n", - L"Повышен шанс обнаружить электронные ловушки и мины (+%d к уровню обнаружения)\n", - L"+%d%s к шансу попадания по цели роботу, управляемому %s\n", - L"%s даёт возможность ремонтировать робота\n", - L"Понижен штраф на скорость ремонта робота на %d%s\n", - L"Возможность восстановить вещь при ремонте на все 100%%\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsDoctor[]= -{ - L"Может выполнять хирургические операции при наличии медицинской сумки\n", - L"Хирургическая операция возвращает %d%s единиц потерянного здоровья.", - L" (Требует значительного расхода содержимого мед. сумки.)", - L"Может вернуть ухудшившиеся навыки (вследствие критического ранения) путём", - L" хирургического вмешательства или", - L" обычным лечением.\n", - L"+%d%s к эффективности при связке доктор-пациент\n", - L"+%d%s к скорости перевязки\n", - L"+%d%s к природной скорости регенерации для всех солдат в том же квадрате", - L" (максимум %d бонуса на находящихся в квадрате)", - L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= -{ - L"Может переодеваться в гражданского или солдата, \nчтобы проникать в тыл врага.\n", - L"Будет раскрыт, если совершает подозрительные действия, \nимеет подозрительное снаряжение или застигнут над остывающим трупом.\n", - L"Будет моментально раскрыт, если переодет в солдата \nи находится ближе %d тайлов к врагу.\n", - L"Будет моментально раскрыт, если переодет в солдата \nи находится ближе %d тайлов к остывающему трупу.\n", - L"+%d%s к шансу попадания скрытным оружием ближнего боя.\n", - L"+%d%s к шансу на смертельный удар скрытным оружием ближнего боя.\n", - L"ОД на переодевание снижены на %d%s.\n", - L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate -}; - -STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= -{ - L"Может использовать оборудование связи.\n", - L"Может запрашивать артиллерийские удары у союзников в соседних квадратах.\n", - L"Может обнаруживать вражеские патрули при сканировании частот.\n", - L"Радиопереговоры могут быть подавлены во всем квадрате.\n", - L"Если радиопереговоры подавлены, то радист может искать подавляющее устройство.\n", - L"Может вызывать подкрепление ополченцев из соседних квадратов.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsNone[]= -{ - L"Нет преимуществ", -}; - -STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= -{ - L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate - L"+%d%s к скорости на перезарядку оружия магазином\n", - L"+%d%s к скорости на дозарядку магазина оружия\n", - L"-%d%s ОД, чтобы поднять предмет\n", - L"-%d%s ОД на манипуляции с рюкзаком\n", - L"-%d%s ОД на действия с дверью\n", - L"-%d%s ОД, необходимых для установки/обезвреживания бомб и мин\n", - L"-%d%s ОД, необходимых на присоединение навески\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsMelee[]= -{ - L"-%d%s ОД на атаку клинковым оружием\n", - L"+%d%s к шансу попадания клинковым холодным оружием\n", - L"+%d%s к шансу попадания дробящим холодным оружием\n", - L"+%d%s к урону от клинкового холодного оружия\n", - L"+%d%s к урону от дробящего холодного оружия\n", - L"Урон от прицельной атаки любым холодным оружием повышается на %d%s\n", - L"+%d%s к шансу уклониться от атаки клинковым холодным оружием\n", - L"+%d%s к шансу уклониться от атаки клинковым холодным оружием, если в руках нож\n", - L"+%d%s к шансу уклониться от атаки дробящим холодным оружием\n", - L"+%d%s к шансу уклониться от атаки дробящим холодным оружием, если в руках нож\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsThrowing[]= -{ - L"-%d%s базовых ОД, нужных для броска ножа\n", - L"+%d%s к максимальной эффективной дальности броска ножа\n", - L"+%d%s к шансу попадания в цель при метании ножа\n", - L"+%d%s к шансу попадания в цель при метании ножа на каждый клик прицеливания\n", - L"+%d%s к урону от метательного ножа\n", - L"+%d%s к урону от метательного ножа при на каждый клик прицеливания\n", - L"+%d%s к шансу нанести критический урон при броске ножа, если вас не слышали и не видели\n", - L"+%d к множителю критического урона при броске ножа\n", - L"+%d клик прицеливания для метательных ножей\n", - L"+%d кликов прицеливания для метательных ножей\n", - L"-%d%s ОД для броска гранаты\n", - L"+%d%s к максимальной дальности броска гранаты\n", - L"+%d%s к точности броска гранаты\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNightOps[]= -{ - L"+%d к зрению в темноте\n", - L"+%d к дальности слуха\n", - L"+%d дополнительно к слуху в темноте\n", - L"+%d к вероятности перехвата хода в ночи\n", - L"-%d к нужде во сне\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsStealthy[]= -{ - L"-%d%s ОД, необходимых для бесшумного передвижения\n", - L"+%d%s к шансу двигаться бесшумно\n", - L"+%d%s к скрытности (быть 'невидимым', если вас не обнаружили)\n", - L"Штраф укрытия при передвижении уменьшен на %d%s\n", - L"-%d%s к шансу быть перехваченным\n", //chance to be interrupted -}; - -STR16 gzIMPMinorTraitsHelpTextsAthletics[]= -{ - L"-%d%s ОД на передвижение (бег, шаг, шаг вприсядку, переползание, плавание и т.д.)\n", - L"-%d%s на затраты энергии при движении, вскарабкивание на крышу, прыжки через препятствия, плавание и т.д.\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= -{ - L"Имеет %d%s устойчивости к повреждениям\n", - L"+%d%s к силе для определения максимально допустимого веса\n", - L"Потеря сил при пропущенных ударах в ближнем бою уменьшена на %d%s\n", - L"Урон при ранении в ногу, при котором вы падаете на землю, должен быть больше на %d%s\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= -{ - L"+%d%s к урону для установленных бомб и мин\n", - L"+%d%s к умению устанавливать детонатор\n", - L"+%d%s к установке/разминированию бомб\n", - L"Уменьшает шанс обнаружения противником установленных вами бомб и мин (+%d к уровню бомб)\n", - L"Повышает вероятность вскрытия замка формовым зарядом (урон увеличен на %d)\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsTeaching[]= -{ - L"+%d%s к скорости обучения ополчения\n", - L"+%d%s к фактическому навыку лидерства при обучении ополчения\n", - L"+%d%s к скорости обучения других наёмников\n", - L"Значение уровня умения будет выше на +%d при обучении другого бойца этому умению\n", - L"+%d%s к скорости самостоятельного обучения/тренировке\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsScouting[]= -{ - L"+%d%% к эффективной прицельной видимости для оружия с оптическими прицелами\n", - L"+%d%% к эффективной дальности видимости для биноклей (и оптических прицелов, отсоединённых от оружия)\n", - L"-%d%% от туннельного зрения для биноклей (и оптических прицелов, отсоединённых от оружия)\n", - L"В квадратах, смежных с вашим, будет показано точное количество врагов\n", - L"В квадратах, смежных с вашим, будет показано наличие врагов\n", - L"Предотвращает попадание отряда во вражеские засады\n", - L"Предотвращает попадание отряда в засады кошек-убийц\n", -}; -STR16 gzIMPMinorTraitsHelpTextsSnitch[]= -{ - L"Иногда будет оповещать вас о мнениях членов команды.\n", - L"Предотвращает плохое поведение членов команды (наркотики, алкоголь, воровство).\n", - L"Может заниматься пропагандой в городах.\n", - L"Может собирать слухи в городах.\n", - L"Можно засылать в качестве доносчика в тюрьмы.\n", - L"Увеличивает вашу репутацию на %d каждый день, если его боевой дух высок.\n", - L"+%d фактической дальности слуха.\n", -}; - -STR16 gzIMPMajorTraitsHelpTextsSurvival[] = -{ - L"+%d%s к скорости передвижения группы пешком между квадратами\n", - L"+%d%s к скорости передвижения группы на транспорте между квадратами (кроме вертолёта)\n", - L"-%d%s к потере сил при переходе в другой квадрат\n", - L"-%d%s к погодным трудностям\n", - L"-%d%s к износу камуфляжного покрытия из-за воды и времени\n", - L"Может заметить следы за %d метров\n", - - L"%s%d%% к сопротивляемости заболеваниям\n", - L"%s%d%% к потреблению еды\n", - L"%s%d%% к потреблению воды\n", - L"+%d%% к уклонению от атак змей\n", - L"+%d%% к эффективности камуфляжа\n", -}; - -STR16 gzIMPMinorTraitsHelpTextsNone[]= -{ - L"Нет преимуществ", -}; - -STR16 gzIMPOldSkillTraitsHelpTexts[]= -{ - L"+%d%s бонус ко взлому замков\n", - L"+%d%s к точности удара в рукопашной схватке\n", - L"+%d%s к повреждениям в рукопашной схватке\n", - L"+%d%s к шансу уклониться от удара кулака в рукопашной схватке\n", - L"Нет штрафа для ремонта и использования электронных устройств \n(замков, ловушек, детонаторов, робота и т.д.)\n", - L"+%d к зрению в темноте\n", - L"+%d к дальности слуха\n", - L"+%d дополнительно к слуху в темноте\n", - L"+%d к вероятности перехвата хода в ночи\n", - L"-%d к нужде во сне\n", - L"+%d%s к максимальной дальности при метании чего угодно\n", - L"+%d%s к шансу попадания при метании чего угодно\n", - L"+%d%s к шансу мгновенно убить метательным ножом, если вас никто не заметил и не услышал\n", - L"+%d%s к скорости обучения ополчения или других наёмников\n", - L"+%d%s к фактическому навыку лидерства при обучении ополчения\n", - L"+%d%s к шансу попадания из гранатомёта, реактивного гранатомёта и миномёта\n", - L"Штраф на вероятность поражения цели при стрельбе очередью понижен на %d\n", - L"Понижен шанс лишних выстрелов при автоматической стрельбе\n", - L"+%d%s к бесшумному передвижению\n", - L"+%d%s к скрытности (быть 'невидимым', если вас не обнаружили)\n", - L"Нет штарафа на шанс попадания по цели при стрельбе с двух рук\n", - L"+%d%s к шансу попадания клинковым холодным оружием\n", - L"+%d%s к шансу уклониться от удара клинковым холодным оружием, если в руках есть нож\n", - L"+%d%s к шансу уклониться от удара клинковым холодным оружием, если в руках не нож\n", - L"+%d%s к шансу уклониться от удара оружием ближнего боя, если в руках есть нож\n", - L"-%d%s к эффективной дальности до цели для всего вида оружия\n", - L"+%d%s к бонусу прицеливания на каждый клик прицеливания\n", - L"Несмываемый камуфляж.\n", - L"+%d%s к шансу попадания в ближнем бою\n", - L"+%d%s к урону в ближнем бою\n", - L"+%d%s к шансу уклониться от атаки в ближнем бою, если в руках ничего нет\n", - L"+%d%s к шансу уклониться от атаки в ближнем бою, если руки заняты\n", - L"+%d%s к шансу уклониться от атаки клинковым холодным оружием\n", - L"Способен нанести удар ногой с разворота по ослабленному противнику с нанесением двойного урона\n", - L"У вас будет особая анимация ударов в ближнем бою.\n", - L"Нет преимуществ", -}; - -STR16 gzIMPNewCharacterTraitsHelpTexts[]= -{ - L"плюсы: Нет преимуществ.\n \nминусы: Без изъянов.", //Neutral - L"плюсы: Лучше работает в команде.\n \nминусы: Боевой дух не растёт, когда наёмник работает один.", //Sociable - L"плюсы: Лучше работает в одиночестве.\n \nминусы: Боевой дух не растёт в присутствии других бойцов.", //Loner - L"плюсы: Боевой дух растет быстрее, а снижается медленнее обычного.\n \nминусы: Шанс обнаружить мины и ловушки ниже среднего.", //Optimist - L"плюсы: Лучше ладит с людьми и тренирует ополчение.\n \nминусы: Действия других бойцов не влияют на его боевой дух.", //Assertive - L"плюсы: Немного быстрее обучается при самоподготовке или в качестве ученика.\n \nминусы: Обладает меньшим сопротивлением страху и подавлению.", //Intellectual - L"плюсы: Устаёт медленнее других, если работает не как врач, ремонтник, тренер или ученик.\n \nминусы: Его мудрость, лидерство, взрывное дело, механика и медицина растут медленнее обычного.", //Primitive - L"плюсы: Немного большие шанс попадания при стрельбе очередями и урон в рукопашной. \nПри убийстве врага боевой дух растёт больше, чем у других.\n \nминусы: Хуже исполняет обязанности, для которых требуется терпение: \nремонт, вскрытие замков, снятие ловушек, лечение, тренировка ополчения.", //Aggressive - L"плюсы: Лучше исполняет обязанности, требующие терпения: \nремонт, вскрытие замков, снятие ловушек, лечение, тренировка ополчения.\n \nминусы: Имеет меньший шанс перехватить ход врага.", //Phlegmatic - L"плюсы: Имеет повышенное сопротивление подавлению и страху. \nБоевой дух при ранениях и гибели товарищей понижается медленнее, чем у других.\n \nминусы: Может быть с большей вероятностью поражен во время движения.", //Dauntless - L"плюсы: Боевой дух повышается при выполнении небоевых заданий (кроме тренировки ополчения).\n \nминусы: Убийство врагов не повышает боевой дух.", //Pacifist - L"плюсы: Имеет больший шанс нанести болезненные раны и травмы, приводящие к ухудшению параметров.\nБоевой дух повышается при нанесении таких ран.\n \nминусы: Имеет проблемы в общении и быстро теряет боевой дух, если не сражается.", //Malicious - L"плюсы: Лучше работает в компании представителей противоположного пола.\n \nминусы: Боевой дух бойцов того же пола в его присутствии растёт медленнее.", //Show-off - L"плюсы: При отступлении боевой дух повышается.\n \nминусы: Боевой дух падает при встрече с превосходящими силами противника.", -}; - -STR16 gzIMPDisabilitiesHelpTexts[]= -{ - L"Никакого влияния.", - L"Уменьшается работоспособность и возникают проблемы с дыханием, \nесли находится в пустынной или тропической местности.", - L"Может впасть в панику, если оставить одного в определённых ситуациях.", - L"Понижается работоспособность в подземельях.", - L"При попытке плыть может с лёгкостью утонуть.", - L"При виде больших насекомых может впасть в крайности и наворотить дел... \nНахождение в тропических лесах также слегка понижает его работоспособность.", - L"Иногда забывает приказы, из-за чего теряет \nнекоторое количество ОД во время боя.", - L"Иногда бывают приступы помутнения рассудка. \nВ такие моменты он расстреливает весь магазин до последней пули. \nПадает духом, если его оружие этого не позволяет.", - L"Значительно пониженный слух.", - L"Сниженная дальность видимости.", - L"Значительно большие кровопотери.", - L"Снижаются возможности при нахождении наёмника на крышах.", - L"Иногда наносит себе раны.", -}; - -STR16 gzIMPProfileCostText[]= -{ - L"Составление вашей харрактеристики стоит $%d. Подтвердить оплату?", -}; - -STR16 zGioNewTraitsImpossibleText[]= -{ - L"Нельзя выбрать новые умения IMP персонажа с отключенным PROFEX. Проверьте значение файла настроек JA2_Options.ini, ключ: READ_PROFILE_DATA_FROM_XML.", -}; -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -//@@@: New string as of March 3, 2000. -STR16 gzIronManModeWarningText[]= -{ - L"Вы выбрали сохранение \"между боями\". Проходить игру станет гораздо сложнее, так как сохраняться можно будет только когда противника нет в секторе. После старта игры изменить эту настройку нельзя. Вы уверены, что сможете играть в таком режиме?", - L"Вы выбрали сохранение \"между перестрелками\". Проходить игру станет немного сложнее, так как нельзя будет сохраняться в пошаговом режиме. После старта игры изменить эту настройку нельзя. Вы уверены, что сможете играть в таком режиме?", - L"Вы выбрали сохранение \"один раз в день\". Проходить игру станет значительно сложнее, так как сохраняться можно будет только раз в день - в %02d:00. После старта игры изменить эту настройку нельзя. Вы уверены, что сможете играть в таком режиме?", -}; - -STR16 gzDisplayCoverText[]= -{ - L"Укрытие: %d/100 %s, освещённость: %d/100", - L"Дальнобойность оружия: %d/%d тайлов, шанс попадания: %d/100", - L"Дальнобойность оружия: %d/%d тайлов, твердость руки: %d/100", - L"Отключено выделение видимых зон наёмника и врага", - L"Видимые зоны наёмника", - L"Опасные зоны для наёмника", - L"Лес", //Wood //wanted to use jungle , but wood is shorter in german too (dschungel vs wald) - L"Город", - L"Пустыня", - L"Снег", //NOT USED!!! - L"Лес и пустыня", - L"Лес и город", - L"Лес и снег", - L"Пустыня и город", - L"Пустыня и снег", - L"Город и снег", - L"-", // yes empty for now - L"Укрытие: %d/100, освещённость: %d/100", - L"Громкость шагов", - L"Сложность остаться незаметным", //Stealth difficulty - L"Уровень ловушки", -}; - -#endif +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("RUSSIAN") + + #ifdef RUSSIAN + #include "Text.h" + #include "FileMan.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_Ja25RussianText_public_symbol(void){;} + +#ifdef RUSSIAN + +// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// SANDRO - New STOMP laptop strings +//these strings match up with the defines in IMP Skill trait.cpp +STR16 gzIMPSkillTraitsText[]= +{ + // made this more elegant + L"Взлом замков", + L"Рукопашный бой", + L"Электроника", + L"Ночник", + L"Метание", + L"Инструктор", + L"Тяжелое оружие", + L"Автоматическое оружие", + L"Скрытность", + L"Ловкач", + L"Холодное оружие", + L"Снайпер", + L"Камуфляж", + L"Боевые искусства", + + L"Нет", + L"I.M.P.: Специализация", + L"(эксперт)", + +}; + +//added another set of skill texts for new major traits +STR16 gzIMPSkillTraitsTextNewMajor[]= +{ + L"Автоматчик", //Auto Weapons + L"Гренадёр", //Heavy Weapons + L"Стрелок", //Marksman + L"Охотник", //Hunter + L"Ковбой", //Gunslinger + L"Боксёр", //Hand to Hand + L"Старшина", //Deputy + L"Техник", //Technician + L"Санитар", //Paramedic + L"Диверсант", //Covert Ops + + L"Нет", + L"I.M.P.: Основные навыки", //I.M.P. Major Traits + // second names + L"Пулемётчик", //Machinegunner + L"Артиллерист", //Bombardier + L"Снайпер", //Sniper + L"Егерь", //Ranger + L"Пистолетчик", //Gunfighter + L"Каратист", //Martial Arts + L"Командир", //Squadleader + L"Инженер", //Engineer + L"Доктор", //Doctor + L"Шпион", //Spy +}; + +//added another set of skill texts for new minor traits +STR16 gzIMPSkillTraitsTextNewMinor[]= +{ + L"Ловкач", //Ambidextrous + L"Мастер клинка", //Melee + L"Мастер по метанию", //Throwing + L"Ночник", //Night Ops + L"Бесшумный убийца", //Stealthy + L"Спортсмен", //Athletics + L"Культурист", //Bodybuilding + L"Подрывник", //Demolitions + L"Инструктор", //Teaching + L"Разведчик", //Scouting + L"Радист", //Radio Operator + L"Спец по выживанию", //Survival + + L"Нет", + L"I.M.P.: Дополнительные навыки", //I.M.P. Minor Traits +}; + +//these texts are for help popup windows, describing trait properties +STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]= +{ + L"+%d%s к шансу попадания из автомата\n", + L"+%d%s к шансу попадания из пистолет-пулемёта\n", + L"+%d%s к шансу попадания из ручного пулемёта\n", + L"-%d%s ОД на стрельбу из ручного пулемёта в\nрежиме автоматической стрельбы или очередью с отсечкой\n", + L"-%d%s ОД на вскидывание ручного пулемёта\n", + L"Штраф на шанс попадания в автоматическом\nрежиме огня и в режиме очереди понижен на %d%s\n", + L"Понижен шанс лишних выстрелов при автоматической стрельбе\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]= +{ + L"-%d%s ОД на стрельбу из гранатомёта\n", + L"-%d%s ОД на стрельбу из реактивного гранатомёта\n", + L"+%d%s к шансу попадания из гранатомёта\n", + L"+%d%s к шансу попадания из реактивного гранатомёта\n", + L"-%d%s ОД на залп из миномёта\n", + L"Понижен штраф на шанс попадания при стрельбе с миномёта на %d%s\n", + L"+%d%s к урону танкам от тяжёлого оружия, гранат и взрывчатки\n", + L"+%d%s к урону иным целям из тяжёлого оружия\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSniper[]= +{ + L"+%d%s к шансу попадания из винтовки\n", + L"+%d%s к шансу попадания из снайперской винтовки\n", + L"-%d%s эффективной дальности до цели для всего вида оружия\n", //-%d%s effective range to target with all weapons + L"+%d%s к бонусу прицеливания на каждый клик прицеливания (за исключением пистолетов)\n", + L"+%d%s к повреждению от выстрела", //+%d%s damage on shot + L" плюс", + L" с каждым кликом", + L" после первого", + L" после второго", + L" после третьего", + L" после четвёртого", + L" после пятого", + L" после шестого", + L" после седьмого", + L"-%d%s ОД на досылание патрона в винтовки со скользящим затвором\n", + L"+1 клик прицеливания для оружия типа винтовок\n", + L"+%d кликов прицеливания для оружия типа винтовок\n", + L"Прицеливание оружия типа винтовок быстрее на один клик прицеливания\n", + L"Прицеливание оружия типа винтовок быстрее на %d кликов прицеливания\n", + L"Focus skill: +%d interrupt modifier in marked area\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRanger[]= +{ + L"+%d%s к шансу попадания из винтовки\n", + L"+%d%s к шансу попадания из дробовика\n", + L"-%d%s ОД на перезарядку помпового дробовика\n", + L"-%d%s ОД на выстрел из дробовика\n", + L"+%d клик прицеливания для дробовиков\n", + L"+%d кликов прицеливания для дробовиков\n", + L"+%d%s к эффективной дальности дробовиков\n", + L"-%d%s ОД на перезарядку однозарядного дробовика\n", + L"+%d клик прицеливания для винтовок\n", + L"+%d кликов прицеливания для винтовок\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= +{ + L"-%d%s ОД на выстрел из пистолетов и револьверов\n", + L"+%d%s к эффективной дальности пистолетов и револьверов\n", + L"+%d%s к шансу попадания из пистолетов и револьверов\n", + L"+%d%s к шансу попадания из автоматических пистолетов", + L" (только для одиночного выстрела)", + L"+%d%s бонуса на один клик прицеливания для пистолетов,\nавтоматических пистолетов и револьверов\n", + L"-%d%s ОД на вскидывание пистолетов и револьверов\n", + L"-%d%s ОД на перезарядку пистолетов, автоматических пистолетов и револьверов\n", + L"+%d клик прицеливания для пистолетов, автоматических пистолетов и револьверов", + L"+%d кликов прицеливания для пистолетов, автоматических пистолетов и револьверов\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= +{ + L"-%d%s ОД на рукопашные атаки (кулаками и кастетом)\n", + L"+%d%s к шансу на результативный удар рукой\n", + L"+%d%s к шансу на результативный удар кастетом\n", + L"+%d%s к урону в рукопашных атаках (кулаками и кастетом)\n", + L"+%d%s к урону выносливости в рукопашных атаках (кулаками и кастетом)\n", + L"Враг, сваленный вашими ударами, немного дольше приходит в себя\n", + L"Враг, сваленный вашими ударами, дольше приходит в себя\n", + L"Враг, сваленный вашими ударами, намного дольше приходит в себя\n", + L"Враг, сваленный вашими ударами, очень долго приходит в себя\n", + L"Враг, сваленный вашими ударами, надолго теряет сознание\n", + L"Враг, сваленный вашими ударами, теряет сознание на много часов\n", + L"Враг, сваленный вашими ударами, вероятно, больше не очнётся\n", + L"Прицельный удар наносит на %d%s больше урона\n", + L"Удар ногой с разворота наносит на %d%s больше урона\n", + L"+%d%s к шансу увернуться от атаки в рукопашном бою\n", + L"+%d%s к шансу увернуться от удара рукой", + L" или кастетом", + L" (+%d%s с кастетом)", + L"+%d%s к шансу увернуться от удара кастетом\n", + L"+%d%s к шансу увернуться от атаки любым оружием ближнего боя\n", + L"Нужно на %d%s ОД меньше, чтобы выхватить оружие из рук противника\n", + L"Нужно на %d%s ОД меньше, чтобы сменить положение (стоя, сидя, лежа), повернуться, слезть/залезть на крышу и перепрыгнуть препятствие\n", + L"Нужно на %d%s ОД меньше, чтобы сменить положение (стоя, сидя, лежа)\n", + L"Нужно на %d%s ОД меньше, чтобы повернуться\n", + L"Нужно на %d%s ОД меньше, чтобы слезть/залезть на крышу и перепрыгнуть препятствие\n", + L"+%d%s к шансу выбить дверь ногой\n", + L"Вы получаете специальные движения для атак ближнего боя\n", + L"-%d%s к шансу перехвата вашего хода во время движения\n", //chance to be interrupted when moving +}; + +STR16 gzIMPMajorTraitsHelpTextsSquadleader[]= +{ + L"+%d%s ОД на каждый ход рядом находящимся наёмникам\n", + L"+%d к фактическому уровню рядом находящихся наёмников, у которых уровень ниже, чем у %s\n", + L"+%d к фактическому уровню опыта союзников при подсчете бонуса подавления для их огня\n", + L"На +%d%s труднее подавить %s и наёмников рядом с ним\n", + L"+%d к боевому духу рядом находящихся наёмников\n", + L"-%d к потере боевого духа для рядом находящихся наёмников\n", + L"Радиус влияния на других наёмников составляет %d тайлов", + L" (%d тайлов с усилителем звука)", + L"(Максимальное количество одновременных бонусов для одного солдата %d)\n", + L"+%d%s сопротивление страху у %s\n", + L"Недостаток: %dx кратное ухудшение боевого духа у наёмников, если погибает %s\n", + L"+%d%s к шансу получить перехват всем отрядом\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsTechnician[]= +{ + L"+%d%s к скорости ремонта\n", + L"+%d%s к умению взлома замков (обычных/электронных)\n", + L"+%d%s к умению отключать электронные ловушки\n", + L"+%d%s к умению сборки вещей и присоединению особых деталей\n", + L"+%d%s к умению устранить осечку оружия в бою\n", + L"Понижен штраф на ремонт электронных предметов на %d%s\n", + L"Повышен шанс обнаружить электронные ловушки и мины (+%d к уровню обнаружения)\n", + L"+%d%s к шансу попадания по цели роботу, управляемому %s\n", + L"%s даёт возможность ремонтировать робота\n", + L"Понижен штраф на скорость ремонта робота на %d%s\n", + L"Возможность восстановить вещь при ремонте на все 100%%\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsDoctor[]= +{ + L"Может выполнять хирургические операции при наличии медицинской сумки\n", + L"Хирургическая операция возвращает %d%s единиц потерянного здоровья.", + L" (Требует значительного расхода содержимого мед. сумки.)", + L"Может вернуть ухудшившиеся навыки (вследствие критического ранения) путём", + L" хирургического вмешательства или", + L" обычным лечением.\n", + L"+%d%s к эффективности при связке доктор-пациент\n", + L"+%d%s к скорости перевязки\n", + L"+%d%s к природной скорости регенерации для всех солдат в том же квадрате", + L" (максимум %d бонуса на находящихся в квадрате)", + L"Returned health can be boosted an additional %d%s by using blood bags.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsCovertOps[]= +{ + L"Может переодеваться в гражданского или солдата, \nчтобы проникать в тыл врага.\n", + L"Будет раскрыт, если совершает подозрительные действия, \nимеет подозрительное снаряжение или застигнут над остывающим трупом.\n", + L"Будет моментально раскрыт, если переодет в солдата \nи находится ближе %d тайлов к врагу.\n", + L"Будет моментально раскрыт, если переодет в солдата \nи находится ближе %d тайлов к остывающему трупу.\n", + L"+%d%s к шансу попадания скрытным оружием ближнего боя.\n", + L"+%d%s к шансу на смертельный удар скрытным оружием ближнего боя.\n", + L"ОД на переодевание снижены на %d%s.\n", + L"Can convince enemy soldiers to secretly change sides.\n", // TODO.Translate +}; + +STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]= +{ + L"Может использовать оборудование связи.\n", + L"Может запрашивать артиллерийские удары у союзников в соседних квадратах.\n", + L"Может обнаруживать вражеские патрули при сканировании частот.\n", + L"Радиопереговоры могут быть подавлены во всем квадрате.\n", + L"Если радиопереговоры подавлены, то радист может искать подавляющее устройство.\n", + L"Может вызывать подкрепление ополченцев из соседних квадратов.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsNone[]= +{ + L"Нет преимуществ", +}; + +STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]= +{ + L"Reduced penalty to shoot if offhand item is equipped by %d%s\n", // TODO.Translate + L"+%d%s к скорости на перезарядку оружия магазином\n", + L"+%d%s к скорости на дозарядку магазина оружия\n", + L"-%d%s ОД, чтобы поднять предмет\n", + L"-%d%s ОД на манипуляции с рюкзаком\n", + L"-%d%s ОД на действия с дверью\n", + L"-%d%s ОД, необходимых для установки/обезвреживания бомб и мин\n", + L"-%d%s ОД, необходимых на присоединение навески\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsMelee[]= +{ + L"-%d%s ОД на атаку клинковым оружием\n", + L"+%d%s к шансу попадания клинковым холодным оружием\n", + L"+%d%s к шансу попадания дробящим холодным оружием\n", + L"+%d%s к урону от клинкового холодного оружия\n", + L"+%d%s к урону от дробящего холодного оружия\n", + L"Урон от прицельной атаки любым холодным оружием повышается на %d%s\n", + L"+%d%s к шансу уклониться от атаки клинковым холодным оружием\n", + L"+%d%s к шансу уклониться от атаки клинковым холодным оружием, если в руках нож\n", + L"+%d%s к шансу уклониться от атаки дробящим холодным оружием\n", + L"+%d%s к шансу уклониться от атаки дробящим холодным оружием, если в руках нож\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsThrowing[]= +{ + L"-%d%s базовых ОД, нужных для броска ножа\n", + L"+%d%s к максимальной эффективной дальности броска ножа\n", + L"+%d%s к шансу попадания в цель при метании ножа\n", + L"+%d%s к шансу попадания в цель при метании ножа на каждый клик прицеливания\n", + L"+%d%s к урону от метательного ножа\n", + L"+%d%s к урону от метательного ножа при на каждый клик прицеливания\n", + L"+%d%s к шансу нанести критический урон при броске ножа, если вас не слышали и не видели\n", + L"+%d к множителю критического урона при броске ножа\n", + L"+%d клик прицеливания для метательных ножей\n", + L"+%d кликов прицеливания для метательных ножей\n", + L"-%d%s ОД для броска гранаты\n", + L"+%d%s к максимальной дальности броска гранаты\n", + L"+%d%s к точности броска гранаты\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNightOps[]= +{ + L"+%d к зрению в темноте\n", + L"+%d к дальности слуха\n", + L"+%d дополнительно к слуху в темноте\n", + L"+%d к вероятности перехвата хода в ночи\n", + L"-%d к нужде во сне\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsStealthy[]= +{ + L"-%d%s ОД, необходимых для бесшумного передвижения\n", + L"+%d%s к шансу двигаться бесшумно\n", + L"+%d%s к скрытности (быть 'невидимым', если вас не обнаружили)\n", + L"Штраф укрытия при передвижении уменьшен на %d%s\n", + L"-%d%s к шансу быть перехваченным\n", //chance to be interrupted +}; + +STR16 gzIMPMinorTraitsHelpTextsAthletics[]= +{ + L"-%d%s ОД на передвижение (бег, шаг, шаг вприсядку, переползание, плавание и т.д.)\n", + L"-%d%s на затраты энергии при движении, вскарабкивание на крышу, прыжки через препятствия, плавание и т.д.\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= +{ + L"Имеет %d%s устойчивости к повреждениям\n", + L"+%d%s к силе для определения максимально допустимого веса\n", + L"Потеря сил при пропущенных ударах в ближнем бою уменьшена на %d%s\n", + L"Урон при ранении в ногу, при котором вы падаете на землю, должен быть больше на %d%s\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= +{ + L"+%d%s к урону для установленных бомб и мин\n", + L"+%d%s к умению устанавливать детонатор\n", + L"+%d%s к установке/разминированию бомб\n", + L"Уменьшает шанс обнаружения противником установленных вами бомб и мин (+%d к уровню бомб)\n", + L"Повышает вероятность вскрытия замка формовым зарядом (урон увеличен на %d)\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsTeaching[]= +{ + L"+%d%s к скорости обучения ополчения\n", + L"+%d%s к фактическому навыку лидерства при обучении ополчения\n", + L"+%d%s к скорости обучения других наёмников\n", + L"Значение уровня умения будет выше на +%d при обучении другого бойца этому умению\n", + L"+%d%s к скорости самостоятельного обучения/тренировке\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsScouting[]= +{ + L"+%d%% к эффективной прицельной видимости для оружия с оптическими прицелами\n", + L"+%d%% к эффективной дальности видимости для биноклей (и оптических прицелов, отсоединённых от оружия)\n", + L"-%d%% от туннельного зрения для биноклей (и оптических прицелов, отсоединённых от оружия)\n", + L"В квадратах, смежных с вашим, будет показано точное количество врагов\n", + L"В квадратах, смежных с вашим, будет показано наличие врагов\n", + L"Предотвращает попадание отряда во вражеские засады\n", + L"Предотвращает попадание отряда в засады кошек-убийц\n", +}; +STR16 gzIMPMinorTraitsHelpTextsSnitch[]= +{ + L"Иногда будет оповещать вас о мнениях членов команды.\n", + L"Предотвращает плохое поведение членов команды (наркотики, алкоголь, воровство).\n", + L"Может заниматься пропагандой в городах.\n", + L"Может собирать слухи в городах.\n", + L"Можно засылать в качестве доносчика в тюрьмы.\n", + L"Увеличивает вашу репутацию на %d каждый день, если его боевой дух высок.\n", + L"+%d фактической дальности слуха.\n", +}; + +STR16 gzIMPMajorTraitsHelpTextsSurvival[] = +{ + L"+%d%s к скорости передвижения группы пешком между квадратами\n", + L"+%d%s к скорости передвижения группы на транспорте между квадратами (кроме вертолёта)\n", + L"-%d%s к потере сил при переходе в другой квадрат\n", + L"-%d%s к погодным трудностям\n", + L"-%d%s к износу камуфляжного покрытия из-за воды и времени\n", + L"Может заметить следы за %d метров\n", + + L"%s%d%% к сопротивляемости заболеваниям\n", + L"%s%d%% к потреблению еды\n", + L"%s%d%% к потреблению воды\n", + L"+%d%% к уклонению от атак змей\n", + L"+%d%% к эффективности камуфляжа\n", +}; + +STR16 gzIMPMinorTraitsHelpTextsNone[]= +{ + L"Нет преимуществ", +}; + +STR16 gzIMPOldSkillTraitsHelpTexts[]= +{ + L"+%d%s бонус ко взлому замков\n", + L"+%d%s к точности удара в рукопашной схватке\n", + L"+%d%s к повреждениям в рукопашной схватке\n", + L"+%d%s к шансу уклониться от удара кулака в рукопашной схватке\n", + L"Нет штрафа для ремонта и использования электронных устройств \n(замков, ловушек, детонаторов, робота и т.д.)\n", + L"+%d к зрению в темноте\n", + L"+%d к дальности слуха\n", + L"+%d дополнительно к слуху в темноте\n", + L"+%d к вероятности перехвата хода в ночи\n", + L"-%d к нужде во сне\n", + L"+%d%s к максимальной дальности при метании чего угодно\n", + L"+%d%s к шансу попадания при метании чего угодно\n", + L"+%d%s к шансу мгновенно убить метательным ножом, если вас никто не заметил и не услышал\n", + L"+%d%s к скорости обучения ополчения или других наёмников\n", + L"+%d%s к фактическому навыку лидерства при обучении ополчения\n", + L"+%d%s к шансу попадания из гранатомёта, реактивного гранатомёта и миномёта\n", + L"Штраф на вероятность поражения цели при стрельбе очередью понижен на %d\n", + L"Понижен шанс лишних выстрелов при автоматической стрельбе\n", + L"+%d%s к бесшумному передвижению\n", + L"+%d%s к скрытности (быть 'невидимым', если вас не обнаружили)\n", + L"Нет штарафа на шанс попадания по цели при стрельбе с двух рук\n", + L"+%d%s к шансу попадания клинковым холодным оружием\n", + L"+%d%s к шансу уклониться от удара клинковым холодным оружием, если в руках есть нож\n", + L"+%d%s к шансу уклониться от удара клинковым холодным оружием, если в руках не нож\n", + L"+%d%s к шансу уклониться от удара оружием ближнего боя, если в руках есть нож\n", + L"-%d%s к эффективной дальности до цели для всего вида оружия\n", + L"+%d%s к бонусу прицеливания на каждый клик прицеливания\n", + L"Несмываемый камуфляж.\n", + L"+%d%s к шансу попадания в ближнем бою\n", + L"+%d%s к урону в ближнем бою\n", + L"+%d%s к шансу уклониться от атаки в ближнем бою, если в руках ничего нет\n", + L"+%d%s к шансу уклониться от атаки в ближнем бою, если руки заняты\n", + L"+%d%s к шансу уклониться от атаки клинковым холодным оружием\n", + L"Способен нанести удар ногой с разворота по ослабленному противнику с нанесением двойного урона\n", + L"У вас будет особая анимация ударов в ближнем бою.\n", + L"Нет преимуществ", +}; + +STR16 gzIMPNewCharacterTraitsHelpTexts[]= +{ + L"плюсы: Нет преимуществ.\n \nминусы: Без изъянов.", //Neutral + L"плюсы: Лучше работает в команде.\n \nминусы: Боевой дух не растёт, когда наёмник работает один.", //Sociable + L"плюсы: Лучше работает в одиночестве.\n \nминусы: Боевой дух не растёт в присутствии других бойцов.", //Loner + L"плюсы: Боевой дух растет быстрее, а снижается медленнее обычного.\n \nминусы: Шанс обнаружить мины и ловушки ниже среднего.", //Optimist + L"плюсы: Лучше ладит с людьми и тренирует ополчение.\n \nминусы: Действия других бойцов не влияют на его боевой дух.", //Assertive + L"плюсы: Немного быстрее обучается при самоподготовке или в качестве ученика.\n \nминусы: Обладает меньшим сопротивлением страху и подавлению.", //Intellectual + L"плюсы: Устаёт медленнее других, если работает не как врач, ремонтник, тренер или ученик.\n \nминусы: Его мудрость, лидерство, взрывное дело, механика и медицина растут медленнее обычного.", //Primitive + L"плюсы: Немного большие шанс попадания при стрельбе очередями и урон в рукопашной. \nПри убийстве врага боевой дух растёт больше, чем у других.\n \nминусы: Хуже исполняет обязанности, для которых требуется терпение: \nремонт, вскрытие замков, снятие ловушек, лечение, тренировка ополчения.", //Aggressive + L"плюсы: Лучше исполняет обязанности, требующие терпения: \nремонт, вскрытие замков, снятие ловушек, лечение, тренировка ополчения.\n \nминусы: Имеет меньший шанс перехватить ход врага.", //Phlegmatic + L"плюсы: Имеет повышенное сопротивление подавлению и страху. \nБоевой дух при ранениях и гибели товарищей понижается медленнее, чем у других.\n \nминусы: Может быть с большей вероятностью поражен во время движения.", //Dauntless + L"плюсы: Боевой дух повышается при выполнении небоевых заданий (кроме тренировки ополчения).\n \nминусы: Убийство врагов не повышает боевой дух.", //Pacifist + L"плюсы: Имеет больший шанс нанести болезненные раны и травмы, приводящие к ухудшению параметров.\nБоевой дух повышается при нанесении таких ран.\n \nминусы: Имеет проблемы в общении и быстро теряет боевой дух, если не сражается.", //Malicious + L"плюсы: Лучше работает в компании представителей противоположного пола.\n \nминусы: Боевой дух бойцов того же пола в его присутствии растёт медленнее.", //Show-off + L"плюсы: При отступлении боевой дух повышается.\n \nминусы: Боевой дух падает при встрече с превосходящими силами противника.", +}; + +STR16 gzIMPDisabilitiesHelpTexts[]= +{ + L"Никакого влияния.", + L"Уменьшается работоспособность и возникают проблемы с дыханием, \nесли находится в пустынной или тропической местности.", + L"Может впасть в панику, если оставить одного в определённых ситуациях.", + L"Понижается работоспособность в подземельях.", + L"При попытке плыть может с лёгкостью утонуть.", + L"При виде больших насекомых может впасть в крайности и наворотить дел... \nНахождение в тропических лесах также слегка понижает его работоспособность.", + L"Иногда забывает приказы, из-за чего теряет \nнекоторое количество ОД во время боя.", + L"Иногда бывают приступы помутнения рассудка. \nВ такие моменты он расстреливает весь магазин до последней пули. \nПадает духом, если его оружие этого не позволяет.", + L"Значительно пониженный слух.", + L"Сниженная дальность видимости.", + L"Значительно большие кровопотери.", + L"Снижаются возможности при нахождении наёмника на крышах.", + L"Иногда наносит себе раны.", +}; + +STR16 gzIMPProfileCostText[]= +{ + L"Составление вашей харрактеристики стоит $%d. Подтвердить оплату?", +}; + +STR16 zGioNewTraitsImpossibleText[]= +{ + L"Нельзя выбрать новые умения IMP персонажа с отключенным PROFEX. Проверьте значение файла настроек JA2_Options.ini, ключ: READ_PROFILE_DATA_FROM_XML.", +}; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//@@@: New string as of March 3, 2000. +STR16 gzIronManModeWarningText[]= +{ + L"Вы выбрали сохранение \"между боями\". Проходить игру станет гораздо сложнее, так как сохраняться можно будет только когда противника нет в секторе. После старта игры изменить эту настройку нельзя. Вы уверены, что сможете играть в таком режиме?", + L"Вы выбрали сохранение \"между перестрелками\". Проходить игру станет немного сложнее, так как нельзя будет сохраняться в пошаговом режиме. После старта игры изменить эту настройку нельзя. Вы уверены, что сможете играть в таком режиме?", + L"Вы выбрали сохранение \"один раз в день\". Проходить игру станет значительно сложнее, так как сохраняться можно будет только раз в день - в %02d:00. После старта игры изменить эту настройку нельзя. Вы уверены, что сможете играть в таком режиме?", +}; + +STR16 gzDisplayCoverText[]= +{ + L"Укрытие: %d/100 %s, освещённость: %d/100", + L"Дальнобойность оружия: %d/%d тайлов, шанс попадания: %d/100", + L"Дальнобойность оружия: %d/%d тайлов, твердость руки: %d/100", + L"Отключено выделение видимых зон наёмника и врага", + L"Видимые зоны наёмника", + L"Опасные зоны для наёмника", + L"Лес", //Wood //wanted to use jungle , but wood is shorter in german too (dschungel vs wald) + L"Город", + L"Пустыня", + L"Снег", //NOT USED!!! + L"Лес и пустыня", + L"Лес и город", + L"Лес и снег", + L"Пустыня и город", + L"Пустыня и снег", + L"Город и снег", + L"-", // yes empty for now + L"Укрытие: %d/100, освещённость: %d/100", + L"Громкость шагов", + L"Сложность остаться незаметным", //Stealth difficulty + L"Уровень ловушки", +}; + +#endif diff --git a/i18n/_PolishText.cpp b/i18n/_PolishText.cpp index 028a6ce6..1f156c08 100644 --- a/i18n/_PolishText.cpp +++ b/i18n/_PolishText.cpp @@ -1,12251 +1,12331 @@ -// WANNE: This pragma should not be needed anymore for Polish version, after we set the encoding to UTF8 -// WANNE: Yes we need this here exclusivly in Polish version, because we do not have a codepage in the code like for other versions. -//#pragma setlocale("POLISH") - - #if defined( POLISH ) - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_PolishText_public_symbol(void){;} - -#ifdef POLISH - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|j|a) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; - -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Lokalizacje", //0 - L"Postacie", - L"Przedmioty", - L"Zadania", - L"Menu 5", - L"Menu 6", //5 - L"Menu 7", - L"Menu 8", - L"Menu 9", - L"Menu 10", - L"Menu 11", //10 - L"Menu 12", - L"Menu 13", - L"Menu 14", - L"Menu 15", - L"Menu 15", // 15 - - //Briefing Room - L"Enter", // TODO.Translate -}; - -STR16 pOtherButtonsText[] = -{ - L"Odprawa", - L"Akceptuj", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Odprawa", - L"Akceptuj misje", -}; - - -STR16 pLocationPageText[] = -{ - L"Poprzednia str.", - L"Zdjęcia", - L"Następna str.", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"Strona główna", - L">>", - L"Typ: ", - L"Brak danych", - L"Brak zdefiniowanych misji. Dodaj misje do pliku TableData\\BriefingRoom\\BriefingRoom.xml. Pierwsza misja ma byæ widoczna. Ustaw Hidden = 0", - L"Briefing Room. Please click the 'Enter' button.", // TODO.Translate -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Nieznane",// 0 - unknown - L"Miasto", //1 - cities - L"Wyrzutnia rakiet", //2 - SAM Site - L"Inna lokacja", //3 - other location - L"Kopalnia", //4 - mines - L"Kompleks militarny", //5 - military complex - L"Laboratorium", //6 - laboratory complex - L"Fabryka", //7 - factory complex - L"Szpital", //8 - hospital - L"Więzienie", //9 - prison - L"Port lotniczy", //10 - air port -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Pokaż wszystko", - L"Pokaż AIM", - L"Pokaż MERC", - L"Pokaż RPC", - L"Pokaż NPC", - L"Pokaż Pojazd", - L"Pokaż IMP", - L"Pokaż EPC", - L"Filtr", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"Wszy.", - L"AIM", - L"MERC", - L"RPC", - L"NPC", - L"Pojazd", - L"IMP", - L"EPC", - L"Filtr", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Pokaż wszystko", - L"Pokaż miasta", - L"Pokaż wyrzutnie rakiet", - L"Pokaż inne lokacje", - L"Pokaż kopalnie", - L"Pokaż lokacje militarne", - L"Pokaż laboratoria", - L"Pokaż fabryki", - L"Pokaż szpitale", - L"Pokaż więzienie", - L"Pokaż porty lotnicze", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"Wszy.", - L"Miasta", - L"W-R", - L"Inne", - L"Kop.", - L"Kom.M.", - L"Lab.", - L"Fabry.", - L"Szpit.", - L"Więz.", - L"Por.L.", -}; - -// TODO.Translate -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"All",//0 - L"City", - L"SAM", - L"Mine", - L"Airport", - L"Wilder.", - L"Underg.", - L"Facil.", - L"Other", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//facility index + 1 - L"Show Cities", - L"Show SAM sites", - L"Show mines", - L"Show airports", - L"Show sectors in wilderness", - L"Show underground sectors", - L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", - L"Show Other sectors", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; -// TODO.Translate -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"All",//0 - L"A.I.M.", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"Other",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//Other index + 1 - L"Show A.I.M. members", - L"Show M.E.R.C staff", - L"Show Rebels", - L"Show Non-hirable Characters", - L"Show Player created Characters", - L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", -}; -// TODO.Translate -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Vehic.", - L"EPC", - L"",//reserved. Insert new Other filters above! -}; -// TODO.Translate -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"All",//0 - L"Gun", - L"Ammo", - L"Armor", - L"LBE", - L"Attach.", - L"Misc",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", - L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", -}; -// TODO.Translate -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"Pistol", - L"M.Pist.", - L"SMG", - L"Rifle", - L"SN Rif.", - L"AS Rif.", - L"MG", - L"Shotgun", - L"H.Weap.", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Helmet", - L"Vest", - L"Pant", - L"Plate", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Tight", - L"Vest", - L"Combat", - L"Backp.", - L"Pocket", - L"Other", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Optic", - L"Side", - L"Muzzle", - L"Extern.", - L"Intern.", - L"Other", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"Blade", - L"T.Knife", - L"Punch", - L"Grenade", - L"Bomb", - L"Medikit", - L"Kit", - L"Face", - L"Other", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; -// TODO.Translate -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"All", - L"Active", - L"Compl.", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Show All",//misc index + 1 - L"Show Active Quests", - L"Show Completed Quests", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"Wszystko", //0 - L"Broń", - L"Amu.", - L"Oporz.", - L"Różne", - - L"Wszystko", //5 - L"Broń", - L"Amunicja", - L"Oporz¹dzenie", - L"Różne", -}; - - -STR16 BoxFilter[] = -{ - // Guns - L"Inny", //0 - L"Pist.", - L"P.masz.", - L"K.masz.", - L"Kar.", - L"K.snaj.", - L"K.boj.", - L"L.k.m.", - L"Strz.", //8 - - // Ammo - L"Pist.", - L"P.masz.", - L"K.masz.", - L"Kar.", - L"K.snaj.", - L"K.boj.", - L"L.k.masz.", - L"Strz.", //16 - - // Used - L"Broń", - L"Panc.", - L"Oporz.", - L"Różne", //20 - - // Armour - L"Hełmy", - L"Kami.", - L"G.ochr.", - L"P.cer.", - - // Misc - L"Ostrza", - L"N.do.rzu.", - L"Punch.W.", - L"Gr.", - L"Bomby", - L"Apt.", - L"Ekwi.", - L"N.twa.", - L"Oporz.", //LBE Gear - L"Inne", -}; - -// TODO.Translate -STR16 QuestDescText[] = -{ - L"Deliver Letter", - L"Food Route", - L"Terrorists", - L"Kingpin Chalice", - L"Kingpin Money", - L"Runaway Joey", - L"Rescue Maria", - L"Chitzena Chalice", - L"Held in Alma", - L"Interogation", - - L"Hillbilly Problem", //10 - L"Find Scientist", - L"Deliver Video Camera", - L"Blood Cats", - L"Find Hermit", - L"Creatures", - L"Find Chopper Pilot", - L"Escort SkyRider", - L"Free Dynamo", - L"Escort Tourists", - - - L"Doreen", //20 - L"Leather Shop Dream", - L"Escort Shank", - L"No 23 Yet", - L"No 24 Yet", - L"Kill Deidranna", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", -}; - -// TODO.Translate -STR16 FactDescText[] = -{ - L"Omerta Liberated", - L"Drassen Liberated", - L"Sanmona Liberated", - L"Cambria Liberated", - L"Alma Liberated", - L"Grumm Liberated", - L"Tixa Liberated", - L"Chitzena Liberated", - L"Estoni Liberated", - L"Balime Liberated", - - L"Orta Liberated", //10 - L"Meduna Liberated", - L"Pacos approched", - L"Fatima Read note", - L"Fatima Walked away from player", - L"Dimitri (#60) is dead", - L"Fatima responded to Dimitri's supprise", - L"Carlo's exclaimed 'no one moves'", - L"Fatima described note", - L"Fatima arrives at final dest", - - L"Dimitri said Fatima has proof", //20 - L"Miguel overheard conversation", - L"Miguel asked for letter", - L"Miguel read note", - L"Ira comment on Miguel reading note", - L"Rebels are enemies", - L"Fatima spoken to before given note", - L"Start Drassen quest", - L"Miguel offered Ira", - L"Pacos hurt/Killed", - - L"Pacos is in A10", //30 - L"Current Sector is safe", - L"Bobby R Shpmnt in transit", - L"Bobby R Shpmnt in Drassen", - L"33 is TRUE and it arrived within 2 hours", - L"33 is TRUE 34 is false more then 2 hours", - L"Player has realized part of shipment is missing", - L"36 is TRUE and Pablo was injured by player", - L"Pablo admitted theft", - L"Pablo returned goods, set 37 false", - - L"Miguel will join team", //40 - L"Gave some cash to Pablo", - L"Skyrider is currently under escort", - L"Skyrider is close to his chopper in Drassen", - L"Skyrider explained deal", - L"Player has clicked on Heli in Mapscreen at least once", - L"NPC is owed money", - L"Npc is wounded", - L"Npc was wounded by Player", - L"Father J.Walker was told of food shortage", - - L"Ira is not in sector", //50 - L"Ira is doing the talking", - L"Food quest over", - L"Pablo stole something from last shpmnt", - L"Last shipment crashed", - L"Last shipment went to wrong airport", - L"24 hours elapsed since notified that shpment went to wrong airport", - L"Lost package arrived with damaged goods. 56 to False", - L"Lost package is lost permanently. Turn 56 False", - L"Next package can (random) be lost", - - L"Next package can(random) be delayed", //60 - L"Package is medium sized", - L"Package is largesized", - L"Doreen has conscience", - L"Player Spoke to Gordon", - L"Ira is still npc and in A10-2(hasnt joined)", - L"Dynamo asked for first aid", - L"Dynamo can be recruited", - L"Npc is bleeding", - L"Shank wnts to join", - - L"NPC is bleeding", //70 - L"Player Team has head & Carmen in San Mona", - L"Player Team has head & Carmen in Cambria", - L"Player Team has head & Carmen in Drassen", - L"Father is drunk", - L"Player has wounded mercs within 8 tiles of NPC", - L"1 & only 1 merc wounded within 8 tiles of NPC", - L"More then 1 wounded merc within 8 tiles of NPC", - L"Brenda is in the store ", - L"Brenda is Dead", - - L"Brenda is at home", //80 - L"NPC is an enemy", - L"Speaker Strength >= 84 and < 3 males present", - L"Speaker Strength >= 84 and at least 3 males present", - L"Hans lets ou see Tony", - L"Hans is standing on 13523", - L"Tony isnt available Today", - L"Female is speaking to NPC", - L"Player has enjoyed the Brothel", - L"Carla is available", - - L"Cindy is available", //90 - L"Bambi is available", - L"No girls is available", - L"Player waited for girls", - L"Player paid right amount of money", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Kingping expectingh visit from player", - L"Darren expecting money from player", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Usuń", - L"Przedmiot usuń (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"north", - L"northeast", - L"east", - L"southeast", - L"south", - L"southwest", - L"west", - L"northwest" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Przełącz wyœwietlanie graczy", //0 - L"Przełącz wyœwietlanie wrogów", - L"Przełącz wyœwietlanie zwierząt", - L"Przełącz wyœwietlanie rebeliantów", - L"Przełącz wyœwietlanie cywili", - - L"Gracz", - L"Wróg", - L"Stworzenia", - L"Rebelianci", - L"Cywile", - - L"Szczegóły", //10 - L"Tryb informacji ogólnych", - L"Tryb fizyczny", - L"Tryb atrybutów", - L"Tryb wyposażenia", - L"Tryb profilu", - L"Tryb planowania", - L"Tryb planowania", - L"Usuń", - L"Usuń zaznaczonego najemnika (|D|e|l)", - L"Kolejny", //20 - L"Znajdź następnego najemnika (|S|p|a|c|j|a)\nZnajdź poprzedniego najemnika ((|C|t|r|l+|S|p|a|c|j|a)", - L"Włącz priorytet egzystencji", - L"Postać ma dostęp do wszystkich zamkniętych drzwi", - - //Orders - L"STACJONARNY", - L"CZUJNY", - L"NA STRA¯Y", - L"SZUKAJ WROGA", - L"BLISKI PATROL", - L"DALEKI PATROL", - L"PKT PATROL.",//30 - L"LOS PKT PATR.", - - //Attitudes - L"OBRONA", - L"DZIELNY SOLO", - L"DZIELNY POMOC", - L"AGRESYWNA", - L"SPRYTNY SOLO", - L"SPRYTNY POMOC", - - L"Set merc to face %s", - - L"Znaj", - - L"MARNE", //40 - L"SŁABE", - L"ŚREDNIE", - L"DOBRE", - L"ŚWIETNE", - - L"MARNE", - L"SŁABE", - L"ŚREDNIE", - L"DOBRE", - L"ŚWIETNE", - - L"Poprzedni zbiór kolorów",//"Previous color set", //50 - L"Następny zbiór kolorów",//"Next color set", - - L"Poprzednia budowa ciała",//"Previous body type", - L"Następna budowa ciała",//"Next body type", - - L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", - L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", - L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", - L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", - - L"Brak akcji", - L"Brak akcji", - L"Brak akcji", //60 - L"Brak akcji", - - L"CzyŚć zadanie", - - L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"DACHY", //0 - L"ŚCIANY", - L"DANE POM.", - - L"RozmieŚć Ściany, używając metody wyboru", - L"RozmieŚć drzwi, używając metody wyboru", - L"RozmieŚć dachy, używając metody wyboru", - L"RozmieŚć okna, używając metody wyboru", - L"RozmieŚć uszkodzone Ściany, używając metody wyboru", - L"RozmieŚć meble, używając metody wyboru", - L"RozmieŚć tekstury Ścian, używając metody wyboru", - L"RozmieŚć podłogi, używając metody wyboru", //10 - L"RozmieŚć generyczne meble, używając metody wyboru", - L"RozmieŚć Ściany, używając metody domyŚlnej", - L"RozmieŚć drzwi, używając metody domyŚlnej", - L"RozmieŚć okna, używając metody domyŚlnej", - L"RozmieŚć uszkodzone Ściany, używając metody domyŚlnej", - L"Zablokuj drzwi, lub umieŚć pułapkę na drzwiach", - - L"Dodaj nowe pomieszczenie", - L"Edytuj Ściany jaskini.", - L"Usuń obszar z istniejącego budynku.", - L"Usuń budynek", //20 - L"Dodaj/zastąp dach budynku nowym płaskim dachem.", - L"kopiuj budynek", - L"Przesuń budynek", - L"Rysuj numer pomieszczenia\n(Hold |S|h|i|f|t to reuse room number)", // TODO.Translate - L"Usuń numer pomieszczenia", - - L"Przełącz tryb wymazywania (|E)", - L"Cofnij ostatnią zmianę (|B|a|c|k|s|p|a|c|e)", - L"Wybierz rozmiar pędzla (|A/|Z)", - L"Dachy (|H)", - L"Ściany (|W)", //30 - L"Dane Pom. (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Broń", //0 - L"Amun.", - L"Pancerz", - L"LBE", - L"Mat.Wyb.", - L"E1", - L"E2", - L"E3", - L"Włączniki", - L"Klucze", - L"Rnd", //10 // TODO.Translate - L"Previous (|,)", // previous page // TODO.Translate - L"Next (|.)", // next page // TODO.Translate -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Dodaj źródło Światła z otoczenia", //0 - L"Przełącz fałszywe Światła z otoczenia.", - L"Dodaj pola wyjŚcia (p-klik, aby usunąć istniejące).", - L"Wybierz rozmiar pędzla (|A/|Z)", - L"Cofnij ostatnią zmianę (|B|a|c|k|s|p|a|c|e)", - L"Przełącz tryb wymazywania (|E)", - L"OkreŚl punkt północny dla celów potwierdzenia.", - L"OkreŚl punkt zachodu dla celów potwierdzenia.", - L"OkreŚl punkt wschodu dla celów potwierdzenia.", - L"OkreŚl punkt południa dla celów potwierdzenia.", - L"OkreŚl punkt Środka dla celów potwierdzenia.", //10 - L"OkreŚl odosobniony punkt dla celów potwierdzenia.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"Nowa na wolnym powietrzu", //0 - L"Nowa piwnica", - L"Nowy poziom jaskini", - L"Zapisz mapę (|C|t|r|l+|S)", - L"Wczytaj mapę (|C|t|r|l+|L)", - L"Wybierz zestaw", - L"Wyjdź z trybu edycji do trybu gry", - L"Wyjdź z trybu edycji (|A|l|t+|X)", - L"Utwórz mapę radaru", - L"Kiedy zaznaczone, mapa będzie zapisana w oryginalnym formacie JA2. Items with ID > 350 will be lost.\nTa opcja jest ważna przy normalnych wielkoŚciach map, których numery siatki nie są (siatki wyjŚcia) > 25600.", // TODO.Translate - L"Kiedy zaznaczone, wczytana mapa lub nowa, będzie powiększona automatycznie do wybranych rozmiarów.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Rysuj tekstury terenu (|G)", //0 - L"Ustaw tekstury terenu mapy", - L"UmieŚć brzegi i urwiska (|C)", - L"Rysuj drogi (|P)", - L"Rysuj gruzy (|D)", - L"UmieŚć drzewa i krzewy (|T)", - L"UmieŚć skały (|R)", - L"UmieŚć beczki i inne Śmieci (|O)", - L"Wypełnij teren", - L"Cofnij ostatnią zmianę (|B|a|c|k|s|p|a|c|e)", - L"Przełącz tryb wymazywania (|E)", //10 - L"Wybierz rozmiar pędzla (|A/|Z)", - L"Zwiększ gęstoŚć pędzla (|])", - L"Zmniejsz gęstoŚć pędzla (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Teren", //0 - L"Budynki", - L"Przedmioty", - L"Najemnicy", - L"Dane mapy", - L"Opcje", - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text // TODO.Translate - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text // TODO.Translate - L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text - L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text - L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text - L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"Północny pkt wejŚcja", //0 - L"Zachodni pkt wejŚcja", - L"Wschodni pkt wejŚcja", - L"Południowy pkt wejŚcja", - L"Środkowy pkt wejŚcja", - L"Odizolowany pkt wejŚcja", - - L"Brzask", - L"Noc", - L"24h", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Włącznik Paniki1", //0 - L"Włącznik Paniki2", - L"Włącznik Paniki3", - L"Włącznik%d", - - L"Akcja nacisku", - L"Akcja Paniki1", - L"Akcja Paniki2", - L"Akcja Paniki3", - L"Akcja%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"Niezablokowane (ID)", //0 - L"Pułapka eksplodująca", - L"Pułapka elektryczna", - L"Cicha pułapka", - L"Cichy alarm", - L"Super-Elektryczna Pułapka", //5 - L"Alarm domu publicznego", - L"Poziom pułapki %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Zapisz stary format mapy JA2 (v1.12) Version: 5.00 / 25", //0 - L"Brak mapy.", - L"Plik: %S, Aktualny zestaw: %s", - L"Powiększ istniejącą mapę lub nową.", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"PRZEŁ¥CZ", //0 - L"WIDOKI", - L"METODA WYBORU", - L"METODA DOMYŚLNA", - L"METODA BUDOWANIA", - L"Pomieszczenia", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Edytuj atrybuty zamka na mapie (siatka) %d.", - L"Typ blokady (ID)", - L"Typ pułapki", - L"Poziom pułapki", - L"Zablokowane", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Akcja nacisku", //0 - L"Akcja Paniki1", - L"Akcja Paniki2", - L"Akcja Paniki3", - L"Akcja%d", - - L"Włącznik Paniki1", //5 - L"Włącznik Paniki2", - L"Włącznik Paniki3", - L"Włącznik%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Status Info Line 1", - L"Status Info Line 2", - L"Status Info Line 3", - L"Status Info Line 4", - L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Brzask", - L"Noc", - L"24h", //5 - - L"Promień", - - L"Pod ziemią", - L"Poziom Światła", - - L"Ter. Otw.", - L"Piwnica", //10 - L"Jaskinia", - - L"Ograniczenie", - L"Scroll ID", - - L"Cel", - L"Sektor", //15 - L"Cel", - L"Poziom piw.", - L"Cel", - L"Śiatka", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"Brak akcji", - L"Zablokuj drzwi", - L"Odblokuj drzwi", - L"Otwórz drzwi", - L"Zamknij drzwi", - L"Idź do siatki", - L"OpóŚć sektor", - L"Wejdź do sektora", - L"Pozostań w sektorze", - L"Idź spać", - L"Zignoruj to!" -}; - -STR16 zDiffNames[5] = -{ - L"Wimp", - L"Easy", - L"Average", - L"Tough", - L"Steroid Users Only" -}; - -STR16 EditMercStat[12] = -{ - L"Zdrowie", - L"Akt. zdrowie", - L"Siła", - L"ZwinnoŚć", - L"SprawnoŚć", - L"Charyzma", - L"MądroŚć", - L"CelnoŚć", - L"Mat. Wybuchowe", - L"Medycyna", - L"Scientific", - L"Poz. doŚw.", -}; - -STR16 EditMercOrders[8] = -{ - L"Stationary", - L"On Guard", - L"Close Patrol", - L"Far Patrol", - L"Point Patrol", - L"On Call", - L"Seek Enemy", - L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Defensive", - L"Brave Loner", - L"Brave Buddy", - L"Cunning Loner", - L"Cunning Buddy", - L"Aggressive", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Nazwa najemnika:", //0 - L"Rozkaz:", - L"Postawa walki:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Kolor najemnika", //0 - L"Done", - - L"Previous merc standing orders", - L"Next merc standing orders", - - L"Previous merc combat attitude", - L"Next merc combat attitude", //5 - - L"Decrease merc stat", - L"Increase merc stat", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Losowy", //0 - L"Reg Male", - L"Big Male", - L"Stocky Male", - L"Reg Female", - L"NE Czołg", //5 - L"NW Czołg", - L"Fat Civilian", - L"M Civilian", - L"Miniskirt", - L"F Civilian", //10 - L"Kid w/ Hat", - L"Humvee", - L"Eldorado", - L"Icecream Truck", - L"Jeep", //15 - L"Kid Civilian", - L"Domestic Cow", - L"Cripple", - L"Nieuzbrojony robot", - L"Larwa", //20 - L"Infant", - L"Yng F Monster", - L"Yng M Monster", - L"Adt F Monster", - L"Adt M Monster", //25 - L"Queen Monster", - L"Dziki kot", - L"Humvee", // TODO.Translate -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=ROZKAZY=-- ", //0 - L"--=POSTAWA=--", - - L"RELATIVE", - L"ATRYBUTY", - - L"RELATIVE", - L"WYPOSA¯ENIA", - - L"RELATIVE", - L"ATRYBUTY", - - L"Armia", - L"Admin.", - L"Gwardia", //10 - - L"Poz. doŚw.", - L"Zdrowie", - L"Akt. zdrowie", - L"CelnoŚć", - L"Siła", - L"ZwinnoŚć", - L"SprawnoŚć", - L"Inteligencja", - L"Zdol. dowodzenia", - L"Mat. wybuchowe", //20 - L"Zdol. medyczne", - L"Zdol. mechaniczne", - L"Morale", - - L"Kolor włosów:", - L"Kolor skóry:", - L"Kolor kamizelki:", - L"Kolor spodni:", - - L"LOSOWY", - L"LOSOWY", - L"LOSOWY", //30 - L"LOSOWY", - - L"Podaj index profilu i naciŚnij ENTER. ", - L"Wszystkie informacje (statystyki, itd.) będą pobrane z pliku Prof.dat lub MercStartingGear.xml. ", - L"JeŚli nie chcesz użyć profilu, to zostaw pole puste i naciŚnij ENTER. ", - L"Nie podawaj wartoŚci '200'! WartoŚć '200' nie może być profilem! ", - L"Wybierz profil od 0 do ", - - L"Aktualny Profil: brak ", - L"Aktualny Profil: %s", - - L"STACJONARNY", - L"CZUJNY", //40 - L"NA STRA¯Y", - L"SZUKAJ WROGA", - L"BLISKI PATROL", - L"DALEKI PATROL", - L"PKT PATROL.", - L"LOS PKT PATR.", - - L"Akcja", - L"Czas", - L"V", - L"Siatka 1", //50 - L"Siatka 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"zablokuj", - L"odblokuj", - L"otwórz", - L"zamknij", - - L"Kliknij na siatkę przylegającą do drzwi (%s).", //60 - L"Kliknij na siatkę, gdzie chcesz się przemieŚcić gdy drzwi są otwarte\\zamknięte (%s).", - L"Kliknij na siatkę, gdzie chciałbyŚ się przemieŚcić.", - L"Kliknij na siatkę, gdzie chciałbyŚ spać. Postać po obudzeniu się automatycznie wróci do oryginalnej pozycji.", - L" NaciŚnij ESC, by wyjŚć z trybu edycji planu.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"Slot #%d", - L"Rozkaz patrolu bez punktów poŚrednich", - L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"Brak akcji", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Umiejscowienie nie zostało skopiowane, gdyż żadne nie zostało wybrane.", - L"Umiejscowienie skopiowane.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Umiejscowienie nie zostało wklejone, gdyż żadne umiejscowienie nie jest zapisane w buforze.", - L"Umiejscowienie wklejone.", - L"Umiejscowienie nie zostało wklejone, gdyż maksymalna liczba umiejscowień dla tej drużyny jest już wykorzystana.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Czy chcesz wyjŚć z trybu edytora do trybu gry ?", - L"Czy chcesz zakończyć pracę edytora ?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Czy jesteŚ pewny, że chcesz usunąć wszystkie Światła?", //0 - L"Czy jesteŚ pewny, że chcesz cofnąć plany?", - L"Czy jesteŚ pewny, że chcesz usunąć wszystkie plany?", - - L"Włączono rozmieszczanie elementów przez kilknięcie", - L"Wyłączono rozmieszczanie elementów przez kilknięcie", - - L"Włączono rysowanie wysokiego podłoża", //5 - L"Wyłączono rysowanie wysokiego podłoża", - - L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"Włączono losowe rozmieszczanie", - L"Wyłączono losowe rozmieszczanie", - - L"Usuń korony drzew", //10 - L"Pokaż korony drzew", - - L"World Raise Reset", - - L"World Raise Set Old", - L"World Raise Set", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"Utworzono mape radaru dla %S", //0 - - L"Usunąć aktualną mapę i rozpocząć nowy poziom piwnicy ?", - L"Usunąć aktualną mapę i rozpocząć nowy poziom jaskini ?", - L"Usunąć aktualną mapę i rozpocząć nowy poziom na wolnym powietrzu ?", - - L" Wipe out ground textures? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 - L"Przełącz fałszywe Światła z otoczenia ON/OFF", - - L"INSERT", - L"Przełącz tryb wypełnienia ON/OFF", - - L"BKSPC", - L"Usuń ostatnią zmianę", - - L"DEL", - L"Quick erase object under mouse cursor", - - L"ESC", - L"Wyjdź z edytora", - - L"PGUP/PGDN", //10 - L"Change object to be pasted", - - L"F1", - L"WyŚwietl ekran pomocy", - - L"F10", - L"Zapisz mapę", - - L"F11", - L"Wczytaj mapę", - - L"+/-", - L"Change shadow darkness by .01", - - L"SHFT +/-", //20 - L"Change shadow darkness by .05", - - L"0 - 9", - L"Change map/tileset filename", - - L"b", - L"Wybierz wielkoŚć pędzla", - - L"d", - L"Rysuj Śmieci", - - L"o", - L"Draw obstacle", - - L"r", //30 - L"Rysuj skały", - - L"t", - L"Toggle trees display ON/OFF", - - L"g", - L"Rysuj tekstury ziemi", - - L"w", - L"Rysuj Ściany budunków", - - L"e", - L"Przełącz tryb wymazywania ON/OFF", - - L"h", //40 - L"Przełącz tryb dachów ON/OFF", -}; - -STR16 pAutoLoadMapText[] = -{ - L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -STR16 pShowHighGroundText[] = -{ - L"Showing High Ground Markers", - L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/* -CHAR16 gszActionItemDesc[ 34 ][ 30 ] = -{ - L"Mina klaksonowa", - L"Mina oświetlająca", - L"Eksplozja gazu Łzaw.", - L"Eksplozja granatu Oszałam.", - L"Eksplozja granatu dymnego", - L"Gaz musztardowy", - L"Mina przeciwpiechotna", - L"Otwórz drzwi", - L"Zamknij drzwi", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Mała eksplozja", - L"średnia eksplozja", - L"Duża eksplozja", - L"Otwórz/Zamknij drzwi", - L"Przełącz wszystkie Akcje1", - L"Przełącz wszystkie Akcje2", - L"Przełącz wszystkie Akcje3", - L"Przełącz wszystkie Akcje4", - L"Wejście do burdelu", - L"Wyjście z burdelu", - L"Alarm Kingpin'a", - L"Seks z prostytutką", - L"Pokaż pokój", - L"Alarm lokalny", - L"Alarm globalny", - L"Dźwięk klaksonu", - L"Odbezpiecz drzwi", - L"Przełącz blokadę (drzwi)", - L"Usuń pułapkę (drzwi)", - L"Tog pressure items", - L"Alarm w Museum", - L"Alarm dzikich kotów", - L"Duży gaz łzawiący", -}; -*/ -STR16 pUpdateItemStatsPanelText[] = -{ - L"Chowanie flagi", //0 - L"Brak wybranego przedmiotu.", - L"Slot dostępny dla", - L"losowej generacji.", - L"Nie można edytować kluczy.", - L"Profil identifikacyjny właŚciciela", - L"Item class not implemented.", - L"Slot locked as empty.", - L"Stan", - L"Naboje", - L"Poziom pułapki", //10 - L"IloŚć", - L"Poziom pułapki", - L"Stan", - L"Poziom pułapki", - L"Stan", - L"IloŚć", - L"Poziom pułapki", - L"Dolary", - L"Stan", - L"Poziom pułapki", //20 - L"Poziom pułapki", - L"Tolerancja", - L"Wyzwalacz alarmu", - L"Istn. szansa", - L"B", - L"R", - L"S", -}; - -STR16 pSetupGameTypeFlagsText[] = -{ - L"Przedmiot będzie wyŚwietlany w trybie Sci-Fi i realistycznym", //0 - L"Przedmiot będzie wyŚwietlany tylko w trybie realistycznym", - L"Przedmiot będzie wyŚwietlany tylko w trybie Sci-Fi", -}; - -STR16 pSetupGunGUIText[] = -{ - L"TŁUMIK", //0 - L"CEL. SNAJP", - L"CEL. LSER.", - L"DWÓJNÓG", - L"KACZY DZIÓB", - L"GRANATNIK", //5 -}; - -STR16 pSetupArmourGUIText[] = -{ - L"PŁYTKI CERAM.", //0 -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"DETONATOR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"Ok", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"WCZYTAJ", - L"ZAPISZ", - L"Aktual.", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"Zestaw: %s", //0 - L"Wersja: Podsumowanie: 1.%02d, Map: %1.2f / %02d", - L"IloŚć przedmiotów: %d", - L"IloŚć Świateł: %d", - L"IloŚć punktów wyjŚcia: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"IloŚć pomieszczeń: %d", - L"Całkowita populacja : %d", - L"Wróg: %d", - L"Admin.: %d", - - L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", - L"¯ołnierze: %d", - - L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", - L"Gwardia: %d", - - L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", - L"Cywile: %d", //20 - - L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", - - L"Ludzie: %d", - L"Krowy: %d", - L"Dzikie koty: %d", - - L"Zwierzęta: %d", - - L"Stworzenia: %d", - L"Dzikie koty: %d", - - L"IloŚć zablokowanych drzwi oraz pułapki zamontowane na drzwiach: %d", - L"Zablokowane: %d", - L"Pułapki: %d", //30 - L"Zablokowane i pułapki: %d", - - L"Cywile z planami: %d", - - L"Zbyt wiele wyjŚć (siatki) (więcej niż 4)...", - L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : %d (%d dalekie miejsce docelowe)", - L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : brak", - L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 1 używane miejsca %d siatki", - L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 2 -- 1) Qty: %d, 2) Qty: %d", - L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"Enemy Relative Attributes: %d marne, %d słabe, %d Średnie, %d dobre, %d Świetne (%+d Całkowity)", //40 - L"Enemy Relative Equipment: %d marne, %d słabe, %d Średnie, %d dobre, %d Świetne (%+d Całkowity)", - L"%d umiejscowienie mają rozkazy patrolu bez żadnego zdefiniowanego punktu poŚredniego.", - L"%d umiejscowienia mają punkty poŚrednie, ale bez żadnych rozkazów.", - L"%d siatki mają niejasne numery pokoju.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Wróg", - - L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", - - L"Paniki1", - L"Paniki2", - L"Paniki3", - L"Norm1", - L"Norm2", - L"Norm3", - L"Norm4", //10 - L"Akcje nacisku", - - L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", - - L"PRIORITY ENEMY DROPPED ITEMS", - L"Nic", - - L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", - L"NORMAL ENEMY DROPPED ITEMS", - L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", - L"Nic", - L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", - L"BŁ¥D: Nie można wczytać przedmiotów dla tej mapy. Powód nieznany.", //20 -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"EDYTOR KAMPANII -- %s Version 1.%02d", //0 - L"(NIE WCZYTANO MAPY).", - L"You currently have %d outdated maps.", - L"The more maps that need to be updated, the longer it takes. It'll take ", - L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"depending on your computer, it may vary.", - L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"Aktualnie nie ma wybranego sektora.", - - L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"You need to either load an existing map or create a new map before being", - L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 - - L", poziom na powietrzu", - L", podziemny poziom 1", - L", podziemny poziom 2", - L", podziemny poziom 3", - L", alternatywny poziom G", - L", alternatywny poziom 1", - L", alternatywny poziom 2", - L", alternatywny poziom 3", - - L"SZCZEGÓŁY PRZEDMIOTÓW -- sektor %s", - L"Podsumowanie informacji dla sektora %s:", //20 - - L"Podsumowanie informacji dla sektora %s", - L"nie egzystują.", - - L"Podsumowanie informacji dla sektora %s", - L"nie egzystują.", - - L"Brak informacji o egzystencji dla sektora %s.", - - L"Brak informacji o egzystencji dla sektora %s.", - - L"PLIK: %s", - - L"PLIK: %s", - - L"Override READONLY", - L"Nadpisz plik", //30 - - L"You currently have no summary data. By creating one, you will be able to keep track", - L"of information pertaining to all of the sectors you edit and save. The creation process", - L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"Czy chcesz to teraz zrobić (y/n)?", - - L"Brak informacji o podsumowaniu. Anulowano tworzenie.", - - L"Siatka", - L"Postęp", //40 - L"Use Alternate Maps", - - L"Podsumowanie", - L"Przedmioty", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"Analizuję mapę: %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Wczytuję mapę: %s", -}; - -STR16 pReportErrorText[] = -{ - L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Generuje informację o mapię", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"Generuję podsumowanie mapy", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MAJOR VERSION UPDATE", - L"There are %d maps requiring a major version update.", - L"Updating all outdated maps", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] z domyŚlnego zestawu %s (%d, %S)", - L"Plik: %S, podindeks: %d (%d, %S)", - L"Zestaw: %s", -}; -// TODO.Translate -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Accept selections (|E|n|t|e|r)", - L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", - L"Scroll window up (|U|p)", - L"Scroll window down (|D|o|w|n)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Mały", - L"Średni", - L"Duży", - L"B.Duży", - L"SzerokoŚć: xx", - L"Obszar" - }; - -//--- - -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Str. 1/2", //0 - L"Str. 2/2", - - L"Str. 1/3", - L"Str. 2/3", - L"Str. 3/3", - - L"Str. 1/1", //5 -}; - -// by Jazz: TODO.Translate -CHAR16 zGrod[][500] = -{ - L"Robot", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;JA2 v1.13 Development Team", - L"@T,C144,R134,{;Kodowanie", - L"@T,C144,R134,{;Grafika i dźwięki", - L"@};(Różne inne mody!)", - L"@T,C144,R134,{;Przedmioty", - L"@T,C144,R134,{;Pozostali autorzy", - L"@};(Wszyscy pozostali członkowie sceny JA którzy nas wsparli!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L".38 cal", -// L"9mm", -// L".45 cal", -// L".357 cal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm NATO", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monstrum", -// L"Rakiety", -// L"strzałka", // dart -// L"", // flame -// L".50 cal", // barrett -// L"9mm Hvy", // Val silent -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L".38 cal", -// L"9mm", -// L".45 cal", -// L".357 cal", -// L"12 gauge", -// L"CAWS", -// L"5.45mm", -// L"5.56mm", -// L"7.62mm N.", -// L"7.62mm WP", -// L"4.7mm", -// L"5.7mm", -// L"Monstrum", -// L"Rakiety", -// L"strzałka", // dart -// L"", // flamethrower -// L".50 cal", // barrett -// L"9mm Hvy", // Val silent -//}; - - -CHAR16 WeaponType[MAXITEMS][30] = -{ - L"Inny", - L"Pistolet", - L"Pistolet maszynowy", - L"Karabin maszynowy", - L"Karabin", - L"Karabin snajperski", - L"Karabin bojowy", - L"Lekki karabin maszynowy", - L"Strzelba" -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Tura gracza", // player's turn - L"Tura przeciwnika", - L"Tura stworzeń", - L"Tura samoobrony", - L"Tura cywili" - L"Player_Plan",// planning turn - L"Client #1",//hayden - L"Client #2",//hayden - L"Client #3",//hayden - L"Client #4",//hayden -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s dostał(a) w głowę i traci 1 punkt inteligencji!", - L"%s dostał(a) w ramię i traci 1 punkt zręczności!", - L"%s dostał(a) w klatkę piersiową i traci 1 punkt siły!", - L"%s dostał(a) w nogi i traci 1 punkt zwinności!", - L"%s dostał(a) w głowę i traci %d pkt. inteligencji!", - L"%s dostał(a) w ramię i traci %d pkt. zręczności!", - L"%s dostał(a) w klatkę piersiową i traci %d pkt. siły!", - L"%s dostał(a) w nogi i traci %d pkt. zwinności!", - L"Przerwanie!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"Dotarły twoje posiłki!", - - // In the following four lines, all %s's are merc names - - L"%s przeładowuje.", - L"%s posiada za mało Punktów Akcji!", - L"%s udziela pierwszej pomocy. (Naciśnij dowolny klawisz aby przerwać.)", - L"%s i %s udzielają pierwszej pomocy. (Naciśnij dowolny klawisz aby przerwać.)", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"niezawodna", - L"zawodna", - L"łatwa w naprawie", - L"trudna do naprawy", - L"solidna", - L"niesolidna", - L"szybkostrzelna", - L"wolno strzelająca", - L"daleki zasięg", - L"krótki zasięg", - L"mała waga", - L"duża waga", - L"niewielkie rozmiary", - L"szybki ciągły ogień", - L"brak możliwości strzelania serią", - L"duży magazynek", - L"mały magazynek", - - // In the following two lines, all %s's are merc names - - L"%s: kamuflaż się starł.", - L"%s: kamuflaż się zmył.", - - // The first %s is a merc name and the second %s is an item name - - L"Brak amunicji w dodatkowej broni!", - L"%s ukradł(a): %s.", - - // The %s is a merc name - - L"%s ma broń bez funkcji ciągłego ognia.", - - L"Już masz coś takiego dołączone.", - L"Połączyć przedmioty?", - - // Both %s's are item names - - L"%s i %s nie pasują do siebie.", - - L"Brak", - L"Wyjmij amunicję", - L"Dodatki", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and you gas mask at the same time. - L" %s i %s nie mogą być używane jednocześnie.", - - L"Element, który masz na kursorze myszy może być dołączony do pewnych przedmiotów, poprzez umieszczenie go w jednym z czterech slotów.", - L"Element, który masz na kursorze myszy może być dołączony do pewnych przedmiotów, poprzez umieszczenie go w jednym z czterech slotów. (Jednak w tym przypadku, przedmioty do siebie nie pasują.)", - L"Ten sektor nie został oczyszczony z wrogów!", - L"Wciąż musisz dać %s %s", - L"%s dostał(a) w głowę!", - L"Przerwać walkę?", - L"Ta zmiana będzie trwała. Kontynuować?", - L"%s ma więcej energii!", - L"%s poślizgnął(nęła) się na kulkach!", - L"%s nie chwycił(a) - %s!", - L"%s naprawił(a) %s", - L"Przerwanie dla: ", - L"Poddać się?", - L"Ta osoba nie chce twojej pomocy.", - L"NIE SĄDZĘ!", - L"Aby podróżować helikopterem Skyridera, musisz najpierw zmienić przydział najemników na POJAZD/HELIKOPTER.", - L"%s miał(a) czas by przeładować tylko jedną broń", - L"Tura dzikich kotów", - L"ogień ciągły", - L"brak ognia ciągłego", - L"celna", - L"niecelna", - L"broń samoczynna", - L"Wróg nie ma przedmiotów, które można ukraść!", - L"Wróg nie ma żadnego przedmiotu w ręce!", - - //add new camo string - L"%s: kamuflaż pustynny się starł.", - L"%s: kamuflaż pustynny się zmył.", - - L"%s: kamuflaż leśny się starł.", - L"%s: kamuflaż leśny się zmył.", - - L"%s: kamuflaż miejski się starł.", - L"%s: kamuflaż miejski się zmył.", - - L"%s: kamuflaż zimowy się starł.", - L"%s: kamuflaż zimowy się zmył.", - - L"Niemożesz przydzielić %s do tego slotu.", - L"The %s will not fit in any open slots.", - L"There's not enough space for this pocket.", //TODO:Translate - - L"%s has repaired the %s as much as possible.", // TODO.Translate - L"%s has repaired %s's %s as much as possible.", - - L"%s has cleaned the %s.", // TODO.Translate - L"%s has cleaned %s's %s.", - - L"Assignment not possible at the moment", // TODO.Translate - L"No militia that can be drilled present.", - - L"%s has fully explored %s.", // TODO.Translate -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Tracony", - L"Traconian", -#else - L"Arulco", - L"Arulcan", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Omerta", - L"Drassen", - L"Alma", - L"Grumm", - L"Tixa", - L"Cambria", - L"San Mona", - L"Estoni", - L"Orta", - L"Balime", - L"Meduna", - L"Chitzena", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"Pauza", - L"Normalna", - L"5 min.", - L"30 min.", - L"60 min.", - L"6 godz.", //NEW -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"Oddz. 1", - L"Oddz. 2", - L"Oddz. 3", - L"Oddz. 4", - L"Oddz. 5", - L"Oddz. 6", - L"Oddz. 7", - L"Oddz. 8", - L"Oddz. 9", - L"Oddz. 10", - L"Oddz. 11", - L"Oddz. 12", - L"Oddz. 13", - L"Oddz. 14", - L"Oddz. 15", - L"Oddz. 16", - L"Oddz. 17", - L"Oddz. 18", - L"Oddz. 19", - L"Oddz. 20", - L"Służba", // on active duty - L"Lekarz", // administering medical aid - L"Pacjent", // getting medical aid - L"Pojazd", // in a vehicle - L"Podróż", // in transit - abbreviated form - L"Naprawa", // repairing - L"Radio Scan", // scanning for nearby patrols // TODO.Translate - L"Praktyka", // training themselves - L"Samoobr.", // training a town to revolt - L"R.Samoobr.", //training moving militia units - L"Instruk.", // training a teammate - L"Uczeń", // being trained by someone else - L"Get Item", // get items // TODO.Translate - L"Staff", // operating a strategic facility // TODO.Translate - L"Eat", // eating at a facility (cantina etc.) // TODO.Translate - L"Rest", // Resting at a facility // TODO.Translate - L"Prison", // Flugente: interrogate prisoners - L"Nie żyje", // dead - L"Obezwł.", // abbreviation for incapacitated - L"Jeniec", // Prisoner of war - captured - L"Szpital", // patient in a hospital - L"Pusty", // Vehicle is empty - L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate - L"Propag.", // facility: spread propaganda - L"Propag.", // facility: spread propaganda (globally) - L"Rumours", // facility: gather information - L"Propag.", // spread propaganda - L"Rumours", // gather information - L"Command", // militia movement orders - L"Diagnose", // disease diagnosis //TODO.Translate - L"Treat D.", // treat disease among the population - L"Lekarz", // administering medical aid - L"Pacjent", // getting medical aid - L"Naprawa", // repairing - L"Fortify", // build structures according to external layout // TODO.Translate - L"Train W.", - L"Hide", // TODO.Translate - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", // TODO.Translate - L"Explore", // TODO.Translate - L"Event",// rftr: merc is on a mini event // TODO: translate - L"Mission", // rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"Samoobrona", // the title of the militia box - L"Bez przydziału", //the number of unassigned militia troops - L"Nie możesz przemieszczać oddziałów samoobrony gdy nieprzyjaciel jest w sektorze!", - L"Część samoobrony nie została przydzielona do sektoru. Czy chcesz ich rozwiązać?", -}; - - -STR16 pMilitiaButtonString[] = -{ - L"Automatyczne", // auto place the militia troops for the player - L"OK", // done placing militia troops - L"Rozwiąż", // HEADROCK HAM 3.6: Disband militia - L"Unassign All", // move all milita troops to unassigned pool // TODO.Translate -}; - -STR16 pConditionStrings[] = -{ - L"Doskonały", //the state of a soldier .. excellent health - L"Dobry", // good health - L"Dość dobry", // fair health - L"Ranny", // wounded health - L"Zmęczony",//L"Wyczerpany", // tired - L"Krwawi", // bleeding to death - L"Nieprzyt.", // knocked out - L"Umierający", // near death - L"Nie żyje", // dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"Służba", // set merc on active duty - L"Pacjent", // set as a patient to receive medical aid - L"Pojazd", // tell merc to enter vehicle - L"Wypuść", // let the escorted character go off on their own - L"Anuluj", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"Oddz. 1", - L"Oddz. 2", - L"Oddz. 3", - L"Oddz. 4", - L"Oddz. 5", - L"Oddz. 6", - L"Oddz. 7", - L"Oddz. 8", - L"Oddz. 9", - L"Oddz. 10", - L"Oddz. 11", - L"Oddz. 12", - L"Oddz. 13", - L"Oddz. 14", - L"Oddz. 15", - L"Oddz. 16", - L"Oddz. 17", - L"Oddz. 18", - L"Oddz. 19", - L"Oddz. 20", - L"Służba", - L"Lekarz", - L"Pacjent", - L"Pojazd", - L"Podróż", - L"Naprawa", - L"Radio Scan", // radio scan // TODO.Translate - L"Praktyka", - L"Trenuje samoobronę", - L"Training Mobile Militia", // TODO.Translate - L"Instruktor", - L"Uczeń", - L"Get Item", // get items // TODO.Translate - L"Facility Staff", // TODO.Translate - L"Eat", // eating at a facility (cantina etc.) // TODO.Translate - L"Resting at Facility", // TODO.Translate - L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate - L"Nie żyje", - L"Obezwładniony", - L"Jeniec", - L"Szpital", - L"Pusty", // Vehicle is empty - L"Więzienny kapuś", // facility: undercover prisoner (snitch) - L"Szerzy propagandę", // facility: spread propaganda - L"Szerzy propagandę", // facility: spread propaganda (globally) - L"Zbiera plotki", // facility: gather rumours - L"Szerzy propagandę", // spread propaganda - L"Zbiera plotki", // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Lekarz", - L"Pacjent", - L"Naprawa", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"Oddział 1", - L"Oddział 2", - L"Oddział 3", - L"Oddział 4", - L"Oddział 5", - L"Oddział 6", - L"Oddział 7", - L"Oddział 8", - L"Oddział 9", - L"Oddział 10", - L"Oddział 11", - L"Oddział 12", - L"Oddział 13", - L"Oddział 14", - L"Oddział 15", - L"Oddział 16", - L"Oddział 17", - L"Oddział 18", - L"Oddział 19", - L"Oddział 20", - L"Służba", - L"Lekarz", - L"Pacjent", - L"Pojazd", - L"W podróży", - L"Naprawa", - L"Radio Scan", // radio scan // TODO.Translate - L"Praktyka", - L"Trenuj samoobronę", - L"Train Mobiles", // TODO.Translate - L"Trenuj oddział", - L"Uczeń", - L"Get Item", // get items // TODO.Translate - L"Staff Facility", // TODO.Translate - L"Rest at Facility", // TODO.Translate - L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate - L"Nie żyje", - L"Obezwładniony", - L"Jeniec", - L"W szpitalu", // patient in a hospital - L"Pusty", // Vehicle is empty - L"Więzienny kapuś", // facility: undercover prisoner (snitch) - L"Szerz propagandę", // facility: spread propaganda - L"Szerz propagandę", // facility: spread propaganda (globally) - L"Zbieraj plotki", // facility: gather rumours - L"Szerz propagandę", // spread propaganda - L"Zbieraj plotki", // gather information - L"Commanding Militia", // militia movement orders // TODO.Translate - L"Diagnose", // disease diagnosis - L"Treat Population disease", // treat disease among the population - L"Lekarz", - L"Pacjent", - L"Naprawa", - L"Fortify sector", // build structures according to external layout // TODO.Translate - L"Train workers", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"Opcje kontraktu:", - L"", // a blank line, required - L"Zaproponuj 1 dzień", // offer merc a one day contract extension - L"Zaproponuj 1 tydzień", // 1 week - L"Zaproponuj 2 tygodnie", // 2 week - L"Zwolnij", // end merc's contract - L"Anuluj", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"Jeniec", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"SIŁA", //The merc's strength attribute. Others below represent the other attributes. - L"ZRĘCZNOŚĆ", - L"ZWINNOŚĆ", - L"INTELIGENCJA", - L"UMIEJĘTNOŚCI STRZELECKIE", - L"WIEDZA MEDYCZNA", - L"ZNAJOMOŚĆ MECHANIKI", - L"UMIEJĘTNOŚĆ DOWODZENIA", - L"ZNAJOMOŚĆ MATERIAŁÓW WYBUCHOWYCH", - L"POZIOM DOŚWIADCZENIA", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Osłona", // the armor rating of the merc - L"Ekwip.", // the weight the merc is carrying - L"Kamuf.", // the merc's camouflage rating - L"Kamuflaż:", - L"Ochrona:", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Zwn", // the abbreviated version of : agility - L"Zrc", // dexterity - L"Sił", // strength - L"Dow", // leadership - L"Int", // wisdom - L"Doś", // experience level - L"Str", // marksmanship skill - L"Mec", // mechanical skill - L"Wyb", // explosive skill - L"Med", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Przydział", // the mercs current assignment - L"Kontrakt", // the contract info about the merc - L"Zdrowie", // the health level of the current merc - L"Morale", // the morale of the current merc - L"Stan", // the condition of the current vehicle - L"Paliwo", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Praktyka", // tell merc to train self - L"Samoobrona", // tell merc to train town - L"Instruktor", // tell merc to act as trainer - L"Uczeń", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Limit ognia:", // the allowable rate of fire for a merc who is guarding - L" Agresywny ogień", // the merc can be aggressive in their choice of fire rates - L" Oszczędzaj amunicję", // conserve ammo - L" Strzelaj w ostateczności", // fire only when the merc needs to - L"Inne opcje:", // other options available to merc - L" Może się wycofać", // merc can retreat - L" Może szukać schronienia", // merc is allowed to seek cover - L" Może pomagać partnerom", // merc can assist teammates - L"OK", // done with this menu - L"Anuluj", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"Limit ognia:", - L" *Agresywny ogień*", - L" *Oszczędzaj amunicję*", - L" *Strzelaj w ostateczności*", - L"Inne opcje:", - L" *Może się wycofać*", - L" *Może szukać schronienia*", - L" *Może pomagać partnerom*", - L"OK", - L"Anuluj", -}; - -STR16 pAssignMenuStrings[] = -{ - L"Służba", // merc is on active duty - L"Lekarz", // the merc is acting as a doctor - L"Disease", // merc is a doctor doing diagnosis TODO.Translate - L"Pacjent", // the merc is receiving medical attention - L"Pojazd", // the merc is in a vehicle - L"Naprawa", // the merc is repairing items - L"Nasłuch", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"Kapuś", // anv: snitch actions - L"Szkolenie", // the merc is training - L"Militia", // all things militia - L"Get Item", // get items // TODO.Translate - L"Fortify", // fortify sector // TODO.Translate - L"Intel", // covert assignments // TODO.Translate - L"Administer", // TODO.Translate - L"Explore", // TODO.Translate - L"Facility", // the merc is using/staffing a facility // TODO.Translate - L"Anuluj", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"Atakuj", // set militia to aggresive - L"Utrzymaj pozycję", // set militia to stationary - L"Wycofaj się", // retreat militia - L"Chodź do mnie", // retreat militia - L"Padnij", // retreat militia - L"Crouch", // TODO.Translate - L"Kryj się", - L"Move to", // TODO.Translate - L"Wszyscy: Atakujcie", - L"Wszyscy: Utrzymajcie pozycje", - L"Wszyscy: Wycofajcie się", - L"Wszyscy: Chodźcie do mnie", - L"Wszyscy: Rozproszcie się", - L"Wszyscy: Padnijcie", - L"All: Crouch", // TODO.Translate - L"Wszyscy: Kryjcie się", - //L"Wszyscy: Szukajcie przedmiotów", - L"Anuluj", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = // TODO.Translate -{ - // radio operator - L"Artillery Strike", - L"Jam communications", - L"Scan frequencies", - L"Eavesdrop", - L"Call reinforcements", - L"Switch off radio set", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", // TODO.Translate - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Spotter", // TODO.Translate - L"Focus", // TODO.Translate - L"Drag", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Order an artillery strike from sector...", - L"Fill all radio frequencies with white noise, making communications impossible.", - L"Scan for jamming signals.", - L"Use your radio equipment to continously listen for enemy movement.", - L"Call in reinforcements from neighbouring sectors.", - L"Turn off radio set.", // TODO.Translate - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", // TODO.Translate - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Observe an area, granting allied snipers a bonus to cth on anything you see.", // TODO.Translate - L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Requires:\n", - L" - %d AP\n", - L" - %s\n", - L" - %s or higher\n", - L" - %s or higher or\n", - L" - %d minutes to be ready\n", - L" - mortar positions in neighbouring sectors\n", - L" - %s |o|r %s |a|n|d %s or %s or higher\n", - L" - possession by a demon", - L" - a gun-related trait\n", // TODO.Translate - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = // TODO.Translate -{ - L"Militia", - L"Other Squads", - L"Cancel", - L"%d Militia", - L"All Militia", - - L"More", // TODO.Translate - L"Corpse: %s", // TODO.Translate -}; - -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Drużynowy kapuś", - L"Zlecenie w mieście", - L"Anuluj", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Przedyskutuj zachowanie kapusia względem jego kolegów.", - L"Podejmij zlecenie w sektorze miejskim.", - L"Anuluj", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Zgłaszaj skargi", - L"Nie zgłaszaj skarg", - L"Zapobiegaj złemu zachowaniu", - L"Nie zapobiegaj złemu zachowaniu", - L"Anuluj", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Zgłaszaj swojemu dowódcy wszelkie skargi jakie usłyszysz ze strony pozostałych najemników.", - L"Niczego nie zgłaszaj.", - L"Próbuj powstrzymywać pozostałych najemników przed pijaństwem czy kradzieżami.", - L"Nie zwracaj uwagi na zachowanie pozostałych najemników.", - L"Anuluj", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Szerz propagandę", - L"Zbieraj plotki", - L"Anuluj", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Wychwalaj postępowanie najemników aby podnieść lojalność miasta i zaprzeczaj wszelkim negatywnym doniesieniom.", - L"Nasłuchuj wszelkich pogłosek o wrogiej aktywności.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = // TODO.Translate -{ - L"Interrogate admins", - L"Interrogate troops", - L"Interrogate elites", - L"Interrogate officers", - L"Interrogate generals", - L"Interrogate civilians", - L"Cancel", -}; - -STR16 pPrisonerMenuDescStrings[] = -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Cancel", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s został zdemaskowany jako kapuś, ale w porę to spostrzegł i zdołał ujść z życiem.", - L"%s został zdemaskowany jako kapuś, ale zdołał załagodzić sytuację i ujść z życiem.", - L"%s został zdemaskowany jako kapuś, ale zdołał uniknąć próby zamachu.", - L"%s został zdemaskowany jako kapuś, ale strażnicy zdołali zapobiec wybuchowi agresji wśród więźniów.", - - L"%s został zdemaskowany jako kapuś i niemal utopiony przez współwięźniów nim strażnicy zdołali go uratować.", - L"%s został zdemaskowany jako kapuś i niemal pobity na śmierć przez współwięźniów nim strażnicy zdołali go uratować.", - L"%s został zdemaskowany jako kapuś i niemal zasztyletowany przez współwięźniów nim strażnicy zdołali go uratować.", - L"%s został zdemaskowany jako kapuś i niemal uduszony przez współwięźniów nim strażnicy zdołali go uratować.", - - L"%s został zdemaskowany jako kapuś i utopiony w kiblu przez współwięźniów.", - L"%s został zdemaskowany jako kapuś i pobity na śmierć przez współwięźniów.", - L"%s został zdemaskowany jako kapuś i zasztyletowany przez współwięźniów.", - L"%s został zdemaskowany jako kapuś i uduszony przez współwięźniów.", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s słyszał pogłoski o aktywnośći wroga w %d sektorach.", - -}; - -STR16 pRemoveMercStrings[] = -{ - L"Usuń najemnika", // remove dead merc from current team - L"Anuluj", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Zdrowie", - L"Zwinność", - L"Zręczność", - L"Siła", - L"Um. dowodzenia", - L"Um. strzeleckie", - L"Zn. mechaniki", - L"Zn. mat. wyb.", - L"Wiedza med.", - L"Anuluj", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Praktyka", // train yourself - L"Train workers", // TODO.Translate - L"Instruktor", // train your teammates - L"Uczeń", // be trained by an instructor - L"Anuluj", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"Oddział 1", - L"Oddział 2", - L"Oddział 3", - L"Oddział 4", - L"Oddział 5", - L"Oddział 6", - L"Oddział 7", - L"Oddział 8", - L"Oddział 9", - L"Oddział 10", - L"Oddział 11", - L"Oddział 12", - L"Oddział 13", - L"Oddział 14", - L"Oddział 15", - L"Oddział 16", - L"Oddział 17", - L"Oddział 18", - L"Oddział 19", - L"Oddział 20", - L"Anuluj", -}; - -STR16 pPersonnelTitle[] = -{ - L"Personel", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Zdrowie: ", // health of merc - L"Zwinność: ", - L"Zręczność: ", - L"Siła: ", - L"Um. dowodzenia: ", - L"Inteligencja: ", - L"Poziom dośw.: ", // experience level - L"Um. strzeleckie: ", - L"Zn. mechaniki: ", - L"Zn. mat. wybuchowych: ", - L"Wiedza medyczna: ", - L"Zastaw na życie: ", // amount of medical deposit put down on the merc - L"Bieżący kontrakt: ", // cost of current contract - L"Liczba zabójstw: ", // number of kills by merc - L"Liczba asyst: ", // number of assists on kills by merc - L"Dzienny koszt:", // daily cost of merc - L"Ogólny koszt:", // total cost of merc - L"Wartość kontraktu:", // cost of current contract - L"Usługi ogółem", // total service rendered by merc - L"Zaległa kwota", // amount left on MERC merc to be paid - L"Celność:", // percentage of shots that hit target - L"Ilość walk:", // number of battles fought - L"Ranny(a):", // number of times merc has been wounded - L"Umiejętności:", - L"Brak umięjętności", - L"Osiągnięcia:", // added by SANDRO -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"Elitarni: %d\n", - L"Regularni: %d\n", - L"Administratorzy: %d\n", - L"Wrodzy Cywile: %d\n", - L"Stworzenia: %d\n", - L"Czołgi: %d\n", - L"Inne: %d\n", - - L"Do najemników: %d\n", - L"Milicja: %d\n", - L"Inni: %d\n", - - L"Strzałów: %d\n", - L"Wystrzelonych Pocisków: %d\n", - L"Rzuconych Granatów: %d\n", - L"Rzuconych Noży: %d\n", - L"Ataków Nożem: %d\n", - L"Ataków Wręcz: %d\n", - L"Udanych Trafień: %d\n", - - L"Zamki Otwarte Wytrychem: %d\n", - L"Zamki Wyłamane: %d\n", - L"Usunięte Pułapka: %d\n", - L"Zdetonowane Ładunki: %d\n", - L"Naprawione Przedmioty: %d\n", - L"Połączone Przedmioty: %d\n", - L"Ukradzione Przedmioty: %d\n", - L"Wytrenowana Milicja: %d\n", - L"Zabandażowani Najemnicy: %d\n", - L"Wykonane Operacje Chirurgiczne: %d\n", - L"Spotkani NPC: %d\n", - L"Odkryte Sektory: %d\n", - L"Uniknięte Zasadzki: %d\n", - L"Wykonane Zadania: %d\n", - - L"Bitwy Taktyczne: %d\n", - L"Bitwy Autorozstrzygnięte: %d\n", - L"Wykonane Odwroty: %d\n", - L"Napotkanych Zasadzek: %d\n", - L"Największa Walka: %d Wrogów\n", - - L"Postrzelony: %d\n", - L"Ugodzony Nożem: %d\n", - L"Uderzony: %d\n", - L"Wysadzony W Powietrze: %d\n", - L"Uszkodzonych Atrybutów: %d\n", - L"Poddany Zabiegom Chirurgicznym: %d\n", - L"Wypadków Przy Pracy: %d\n", - - L"Charakter:", - L"Niepełnosprawność:", - - L"Attitudes:", // WANNE: For old traits display instead of "Character:"! - - L"Zombies: %d\n", // TODO.Translate - - L"Background:", // TODO.Translate - L"Personality:", // TODO.Translate - - L"Prisoners interrogated: %d\n", // TODO.Translate - L"Diseases caught: %d\n", - L"Total damage received: %d\n", - L"Total damage caused: %d\n", - L"Total healing: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - L"Brak umiejętności", - L"Otwieranie zamków", - L"Walka wręcz", //JA25: modified - L"Elektronika", - L"Nocne operacje", //JA25: modified - L"Rzucanie", - L"Szkolenie", - L"Ciężka broń", - L"Broń automatyczna", - L"Skradanie się", - L"Oburęczność", - L"Kradzież", - L"Sztuki walki", - L"Broń biała", - L"Snajper", //JA25: modified - L"Kamuflaż", //JA25: modified - L"(Eksp.)", -}; - -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"Brak Umiejętności", - L"Broń Automatyczna", - L"Broń Ciężka", - L"Strzelec Wyborowy", - L"Myśliwy", - L"Pistolero", - L"Walka Wręcz", - L"Zastępca Szeryfa", - L"Technik", - L"Paramedyk", - // Minor traits - L"Oburęczność", - L"Walka Wręcz", - L"Rzucanie", - L"Operacje Nocne", - L"Ukradkowość", - L"Atletyka", - L"Bodybuilding", - L"Ładunki Wybuchowe", - L"Uczenie", - L"Zwiad", - // covert ops is a major trait that was added later - L"Tajne Operacje", // 20 - // new minor traits - L"Radiooperator", // 21 - L"Kapuś", // 22 - L"Survival", - - // second names for major skills - L"Strzelec RKMu", // 24 - L"Bombardier", - L"Snajper", - L"Myśliwy", - L"Pistolero", - L"Sztuki Walki", - L"Dowódca Drużyny", - L"Inżynier", - L"Doktor", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"Szpieg", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch(minor trait) - L"Placeholder", // for survival (minor trait) - L"Więcej...", // 47 - L"Intel", // for INTEL // TODO.Translate - L"Disguise", // for DISGUISE - L"różne", // for VARIOUSSKILLS - L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate -}; -////////////////////////////////////////////////////////// - - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"W|stań/Idź", - L"S|chyl się/Idź", - L"Wstań/Biegnij (|R)", - L"|Padnij/Czołgaj się", - L"Patrz (|L)", - L"Akcja", - L"Rozmawiaj", - L"Zbadaj (|C|t|r|l)", - - // Pop up door menu - L"Otwórz", - L"Poszukaj pułapek", - L"Użyj wytrychów", - L"Wyważ", - L"Usuń pułapki", - L"Zamknij na klucz", - L"Otwórz kluczem", - L"Użyj ładunku wybuchowego", - L"Użyj łomu", - L"Anuluj (|E|s|c)", - L"Zamknij" -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"nie posiada żadnych pułapek", - L"ma założony ładunek wybuchowy", - L"jest pod napięciem", - L"posiada syrenę alarmową", - L"posiada dyskretny alarm" -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"dzień", - L"tydzień", - L"dwa tygodnie", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Wybór postaci", - L"Przydział najemnika", - L"Nanieś trasę podróży", - L"Kontrakt najemnika", - L"Usuń najemnika", - L"Śpij", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"CICHY", - L"WYRAŹNY", - L"GŁOŚNY", - L"BARDZO GŁOŚNY" -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"NIEOKREŚLONY DŹWIĘK", - L"ODGŁOS RUCHU", - L"ODGŁOS SKRZYPNIĘCIA", - L"PLUSK", - L"ODGŁOS UDERZENIA", - L"STRZAŁ", - L"WYBUCH", - L"KRZYK", - L"ODGŁOS UDERZENIA", - L"ODGŁOS UDERZENIA", - L"ŁOMOT", - L"TRZASK" -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"PŁN-WSCH", - L"WSCH", - L"PŁD-WSCH", - L"PŁD", - L"PŁD-ZACH", - L"ZACH", - L"PŁN-ZACH", - L"PŁN" -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"Miasto", - L"Droga", - L"Otwarty teren", - L"Pustynia", - L"Las", - L"Las", - L"Bagno", - L"Woda", - L"Wzgórza", - L"Teren nieprzejezdny", - L"Rzeka", //river from north to south - L"Rzeka", //river from east to west - L"Terytorium innego kraju", - //NONE of the following are used for directional travel, just for the sector description. - L"Tropiki", - L"Pola uprawne", - L"Otwarty teren, droga", - L"Las, droga", - L"Las, droga", - L"Tropiki, droga", - L"Las, droga", - L"Wybrzeże", - L"Góry, droga", - L"Wybrzeże, droga", - L"Pustynia, droga", - L"Bagno, droga", - L"Las, Rakiety Z-P", - L"Pustynia, Rakiety Z-P", - L"Tropiki, Rakiety Z-P", - L"Meduna, Rakiety Z-P", - - //These are descriptions for special sectors - L"Szpital w Cambrii", - L"Lotnisko w Drassen", - L"Lotnisko w Medunie", - L"Rakiety Z-P", - L"Refuel site", // TODO.Translate - L"Kryjówka rebeliantów", //The rebel base underground in sector A10 - L"Tixa - Lochy", //The basement of the Tixa Prison (J9) - L"Gniazdo stworzeń", //Any mine sector with creatures in it - L"Orta - Piwnica", //The basement of Orta (K4) - L"Tunel", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Schron", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s wykryto w sektorze %c%d, a inny oddział jest w drodze.", //STR_DETECTED_SINGULAR - L"%s wykryto w sektorze %c%d, a inne oddziały są w drodze.", //STR_DETECTED_PLURAL - L"Chcesz skoordynować jednoczesne przybycie?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"Wróg daje ci szansę się poddać.", //STR_ENEMY_SURRENDER_OFFER - L"Wróg schwytał resztę twoich nieprzytomnych najemników.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Odwrót", //The retreat button //STR_AR_RETREAT_BUTTON - L"OK", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"OBRONA", //STR_AR_DEFEND_HEADER - L"ATAK", //STR_AR_ATTACK_HEADER - L"STARCIE", //STR_AR_ENCOUNTER_HEADER - L"Sektor", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"ZWYCIĘSTWO!", //STR_AR_OVER_VICTORY - L"PORAŻKA!", //STR_AR_OVER_DEFEAT - L"KAPITULACJA!", //STR_AR_OVER_SURRENDERED - L"NIEWOLA!", //STR_AR_OVER_CAPTURED - L"ODWRÓT!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Samoobrona", //STR_AR_MILITIA_NAME, - L"Elity", //STR_AR_ELITE_NAME, - L"Żołnierze", //STR_AR_TROOP_NAME, - L"Administrator", //STR_AR_ADMINISTRATOR_NAME, - L"Stworzenie", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Czas trwania", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"WYCOFAŁ(A) SIĘ", //STR_AR_MERC_RETREATED, - L"WYCOFUJE SIĘ", //STR_AR_MERC_RETREATING, - L"WYCOFAJ SIĘ", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Rozst. autom.", //STR_PB_AUTORESOLVE_BTN, - L"Idź do sektora", //STR_PB_GOTOSECTOR_BTN, - L"Wycof. ludzi", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"STARCIE Z WROGIEM", //STR_PB_ENEMYENCOUNTER_HEADER, - L"INWAZJA WROGA", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"ZASADZKA WROGA", //STR_PB_ENEMYAMBUSH_HEADER - L"WEJŚCIE DO WROGIEGO SEKTORA", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"ATAK STWORÓW", //STR_PB_CREATUREATTACK_HEADER - L"ATAK DZIKICH KOTÓW", //STR_PB_BLOODCATAMBUSH_HEADER - L"WEJŚCIE DO LEGOWISKA DZIKICH KOTÓW", //STR_PB_ENTERINGBLOODCATLAIR_HEADER - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Położenie", - L"Wrogowie", - L"Najemnicy", - L"Samoobrona", - L"Stwory", - L"Dzikie koty", - L"Sektor", - L"Brak", //If there are no uninvolved mercs in this fight. - L"N/D", //Acronym of Not Applicable - L"d", //One letter abbreviation of day - L"g", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Wyczyść", - L"Rozprosz", - L"Zgrupuj", - L"OK", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"Kasuje wszystkie pozy|cje najemników, \ni pozwala ponownie je wprowadzić.", - L"Po każdym naciśnięciu rozmie|szcza\nlosowo twoich najemników.", - L"|Grupuje najemników w wybranym miejscu.", - L"Kliknij ten klawisz gdy już rozmieścisz \nswoich najemników. (|E|n|t|e|r)", - L"Musisz rozmieścić wszystkich najemników \nzanim rozpoczniesz walkę.", - - //Various strings (translate word for word) - - L"Sektor", - L"Wybierz początkowe pozycje", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"To miejsce nie jest zbyt dobre. Jest niedostępne. Spróbuj gdzie indziej.", - L"Rozmieść swoich najemników na podświetlonej części mapy.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"przybył(a) do sektora", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"Automatycznie prowadzi walkę za ciebie, \nnie ładując planszy. (|A)", - L"Atakując sektor wroga \nnie można automatycznie rozstrzygnąć walki.", - L"Wejście do sektora \nby nawiązać walkę z wrogiem. (|E)", - L"Wycofuje oddział \ndo sąsiedniego sektora. (|R)", //singular version - L"Wycofuje wszystkie oddziały \ndo sąsiedniego sektora. (|R)", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"Nieprzyjaciel zatakował oddziały samoobrony w sektorze %c%d.", - //%c%d is the sector -- ex: A9 - L"Stworzenia zaatakowały oddziały samoobrony w sektorze %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Stworzenia zatakowały i zabiły %d cywili w sektorze %s.", - //%c%d is the sector -- ex: A9 - L"Nieprzyjaciel zatakował twoich najemników w sektorze %s. Żaden z twoich najemników nie może walczyć!", - //%c%d is the sector -- ex: A9 - L"Stworzenia zatakowały twoich najemników w sektorze %s. Żaden z twoich najemników nie może walczyć!", - - // Flugente: militia movement forbidden due to limited roaming // TODO.Translate - L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", - L"War room isn't staffed - militia move aborted!", - - L"Robot", //STR_AR_ROBOT_NAME, // TODO: translate - L"Tank", //STR_AR_TANK_NAME, - L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate - - L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", // TODO.Translate - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"Dzień", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"Zn. w sektorze:", - L"Zn. w dniu:", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"Stan:", - L"Waga:", - L"PA Koszty", - L"Zas.:", // Range - L"Siła:", // Damage - L"Ilość:", // Number of bullets left in a magazine - L"PA:", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Celność:", //9 - L"Zasięg:", //10 - L"Siła:", //11 - L"Waga:", //12 - L"Ogłuszenie:",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - L"Attachments:", //14 // TODO.Translate - L"AUTO/5:", //15 - L"Remaining ammo:", //16 // TODO.Translate - - L"Domyślne:", //17 //WarmSteel - So we can also display default attachments - L"Dirt:", // 18 //added by Flugente // TODO.Translate - L"Space:", // 19 //space left on Molle items // TODO.Translate - L"Spread Pattern:", // 20 // TODO.Translate - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - // TODO.Translate - L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", - L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", - L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", - L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", - L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", - L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", - L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", - L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", - L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"", //12 - L"AP/przygot.", - L"AP za 1 strzał", - L"AP za serię", - L"AP za Auto", - L"AP/przeładuj", - L"AP/przeładuj ręcznie", - L"Burst Penalty (Lower is better)", //19 - L"Modf. dwójnogu", - L"Auto/5AP", - L"Autofire Penalty (Lower is better)", - L"PA: (mniej - lepiej)", //23 - L"AP za rzut", - L"AP za strzał", - L"AP/cios-nóż", - L"Wył. 1 strzał!", - L"Wył. serię!", - L"Wył. auto!", - L"AP/cios-łom", - L"", - L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Modyf. rozmiaru (mniej - lepiej)", // 0 - L"Modyf. sprawności", - L"Modyf. głośności (mniej - lepiej)", - L"Ukrywa błysk", - L"Modf. dwójnogu", - L"Modyf. zasięgu", // 5 - L"Modyf. trafień", - L"Max zasg. lasera", - L"Modf bonusu celowania", - L"Modyf. dług. serii", - L"Modyf. kary za serię (więcej - lepiej)", // 10 - L"Modyf. kary za ogień auto (więcej - lepiej)", - L"Modyf. AP", - L"Modyf. AP za serię (mniej - lepiej)", - L"Modyf. AP za ogień auto (mniej - lepiej)", - L"Modf AP/przygotwanie (mniej - lepiej)", // 15 - L"Modf AP/przeładowanie (mniej - lepiej)", - L"Modyf. wlk. magazynka", - L"Modyf. AP/atak (mniej - lepiej)", - L"Modyf. obrażeń", - L"Modf obr. walki wręcz", // 20 - L"Kam leśny", - L"Kam miasto", - L"Kam pustyn.", - L"Kam śnieg", - L"Modyf. skradania", // 25 - L"Modyf. zasg. słuchu", - L"Modyf. zasg. wzroku", - L"Modyf. zasg. wzroku/dzień", - L"Modyf. zasg. wzroku/noc", - L"Modyf. zasg. wzroku/jasne światło", //30 - L"Modyf. zasg. wzr./jaskinia", - L"Widzenie tunelowe w % (mniej - lepiej)", - L"Min. zasg. dla bonusu cel.", - L"Hold |C|t|r|l to compare items", // item compare help text // TODO.Translate - L"Equipment weight: %4.1f kg", // 35 // TODO.Translate -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"In ", - L"PERFECT", - L"EXCELLENT", - L"GOOD", - L"FAIR", - L"POOR", - L"BAD", - L"TERRIBLE", - L" condition." -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Kwota", - L"Pozostało:", //this is the overall balance - L"Kwota", - L"Wydzielić:", // the amount he wants to separate from the overall balance to get two piles of money - - L"Bieżące", - L"Saldo:", - L"Kwota", - L"do podjęcia:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"UMIERAJĄCY", // >= 0 - L"KRYTYCZNY", // >= 15 - L"KIEPSKI", // >= 30 - L"RANNY", // >= 45 - L"ZDROWY", // >= 60 - L"SILNY", // >= 75 - L"DOSKONAŁY", // >= 90 - L"CAPTURED", // added by Flugente TODO.Translate -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"$1000", - L"$100", - L"$10", - L"OK", - L"Wydziel", - L"Podejmij", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"Zalety:", -}; - -CHAR16 gzConsLabel[10] = -{ - L"Wady:", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Powtórz", //meaning "Repeat yourself" - L"Przyjaźnie", //approach in a friendly - L"Bezpośrednio", //approach directly - let's get down to business - L"Groźnie", //approach threateningly - talk now, or I'll blow your face off - L"Daj", - L"Rekrutuj", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Kup/Sprzedaj", - L"Kup", - L"Sprzedaj", - L"Napraw", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"OK", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"Eldorado", - L"Hummer", // a hummer jeep/truck -- military vehicle - L"Furgonetka z lodami", - L"Jeep", - L"Czołg", - L"Helikopter", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Eldor.", - L"Hummer", // the HMVV - L"Furg.", - L"Jeep", - L"Czołg", - L"Heli.", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Eldorado", - L"Hummer", //a military jeep. This is a brand name. - L"Furg.", // Ice cream truck - L"Jeep", - L"Czołg", - L"Heli.", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"Nie jesteś w stanie strzelać z tego miejsca.", - L"Nie możesz sie przesiąść między tymi dwoma miejscami bez opuszczania pojazdu.", -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Nalot", - L"Udzielić automatycznie pierwszej pomocy?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s zauważył(a) że dostawa jest niekompletna.", - - // The %s is a string from pDoorTrapStrings - - L"Zamek %s.", - L"Brak zamka.", - L"Sukces!", - L"Niepowodzenie.", - L"Sukces!", - L"Niepowodzenie.", - L"Zamek nie ma pułapek.", - L"Sukces!", - // The %s is a merc name - L"%s nie posiada odpowiedniego klucza.", - L"Zamek został rozbrojony.", - L"Zamek nie ma pułapek.", - L"Zamknięte.", - L"DRZWI", - L"ZABEZP.", - L"ZAMKNIĘTE", - L"OTWARTE", - L"ROZWALONE", - L"Tu jest przełącznik. Włączyć go?", - L"Rozbroić pułapkę?", - L"Poprz...", - L"Nast...", - L"Więcej...", - - // In the next 2 strings, %s is an item name - - L"%s - położono na ziemi.", - L"%s - przekazano do - %s.", - - // In the next 2 strings, %s is a name - - L"%s otrzymał(a) całą zapłatę.", - L"%s - należność wobec niej/niego wynosi jeszcze %d.", - L"Wybierz częstotliwość sygnału detonującego:", //in this case, frequency refers to a radio signal - L"Ile tur do eksplozji:", //how much time, in turns, until the bomb blows - L"Ustaw częstotliwość zdalnego detonatora:", //in this case, frequency refers to a radio signal - L"Rozbroić pułapkę?", - L"Usunąć niebieską flagę?", - L"Umieścić tutaj niebieską flagę?", - L"Kończąca tura", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"Na pewno chcesz zaatakować - %s?", - L"Pojazdy nie mogą zmieniać pozycji.", - L"Robot nie może zmieniać pozycji.", - - // In the next 3 strings, %s is a name - - L"%s nie może zmienić pozycji w tym miejscu.", - L"%s nie może tu otrzymać pierwszej pomocy.", - L"%s nie potrzebuje pierwszej pomocy.", - L"Nie można ruszyć w to miejsce.", - L"Oddział jest już kompletny. Nie ma miejsca dla nowych rekrutów.", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s pracuje już dla ciebie.", - - // Here %s is a name and %d is a number - - L"%s - należność wobec niej/niego wynosi %d$.", - - // In the next string, %s is a name - - L"%s - Eskortować tą osobę?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"%s - Zatrudnić tą osobę za %s dziennie?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"Chcesz walczyć?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"%s - Kupić to za %s?", - - // In the next string, %s is a name - - L"%s jest pod eskortą oddziału %d.", - - // These messages are displayed during play to alert the player to a particular situation - - L"ZACIĘTA", //weapon is jammed. - L"Robot potrzebuje amunicji kaliber %s.", //Robot is out of ammo - L"Rzucić tam? To niemożliwe.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Skradanie się (|Z)", - L"Ekran |Mapy", - L"Koniec tury (|D)", - L"Rozmowa", - L"Wycisz", - L"Pozycja do góry (|P|g|U|p)", - L"Poziom kursora (|T|a|b)", - L"Wspinaj się / Zeskocz (|J)", - L"Pozycja w dół (|P|g|D|n)", - L"Badać (|C|t|r|l)", - L"Poprzedni najemnik", - L"Następny najemnik (|S|p|a|c|j|a)", - L"|Opcje", - L"Ciągły ogień (|B)", - L"Spójrz/Obróć się (|L)", - L"Zdrowie: %d/%d\nEnergia: %d/%d\nMorale: %s", - L"Co?", //this means "what?" - L"Kont", //an abbrieviation for "Continued" - L"%s ma włączone potwierdzenia głosowe.", - L"%s ma wyłączone potwierdzenia głosowe.", - L"Stan: %d/%d\nPaliwo: %d/%d", - L"Wysiądź z pojazdu" , - L"Zmień oddział ( |S|h|i|f|t |S|p|a|c|j|a )", - L"Prowadź", - L"N/D", //this is an acronym for "Not Applicable." - L"Użyj ( Walka wręcz )", - L"Użyj ( Broni palnej )", - L"Użyj ( Broni białej )", - L"Użyj ( Mat. wybuchowych )", - L"Użyj ( Apteczki )", - L"(Łap)", - L"(Przeładuj)", - L"(Daj)", - L"%s - pułapka została uruchomiona.", - L"%s przybył(a) na miejsce.", - L"%s stracił(a) wszystkie Punkty Akcji.", - L"%s jest nieosiągalny(na).", - L"%s ma już założone opatrunki.", - L"%s nie ma bandaży.", - L"Wróg w sektorze!", - L"Nie ma wroga w zasięgu wzroku.", - L"Zbyt mało Punktów Akcji.", - L"Nikt nie używa zdalnego sterowania.", - L"Ciągły ogień opróżnił magazynek!", - L"ŻOŁNIERZ", - L"STWÓR", - L"SAMOOBRONA", - L"CYWIL", - L"ZOMBIE", // TODO.Translate - L"PRISONER",// TODO.Translate - L"Wyjście z sektora", - L"OK", - L"Anuluj", - L"Wybrany najemnik", - L"Wszyscy najemnicy w oddziale", - L"Idź do sektora", - L"Otwórz mapę", - L"Nie można opuścić sektora z tej strony.", - L"You can't leave in turn based mode.", // TODO.Translate - L"%s jest zbyt daleko.", - L"Usuń korony drzew", - L"Pokaż korony drzew", - L"WRONA", //Crow, as in the large black bird - L"SZYJA", - L"GŁOWA", - L"TUŁÓW", - L"NOGI", - L"Powiedzieć królowej to, co chce wiedzieć?", - L"Wzór odcisku palca pobrany", - L"Niewłaściwy wzór odcisku palca. Broń bezużyteczna.", - L"Cel osiągnięty", - L"Droga zablokowana", - L"Wpłata/Podjęcie pieniędzy", //Help text over the $ button on the Single Merc Panel - L"Nikt nie potrzebuje pierwszej pomocy.", - L"Zac.", // Short form of JAMMED, for small inv slots - L"Nie można się tam dostać.", // used ( now ) for when we click on a cliff - L"Przejście zablokowane. Czy chcesz zamienić się miejscami z tą osobą?", - L"Osoba nie chce się przesunąć.", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Zgadzasz się zapłacić %s?", - L"Zgadzasz się na darmowe leczenie?", - L"Zgadasz się na małżeństwo z %s?", //Darylem - L"Kółko na klucze", - L"Nie możesz tego zrobić z eskortowaną osobą.", - L"Oszczędzić %s?", //Krotta - L"Poza zasięgiem broni", - L"Górnik", - L"Pojazdem można podróżować tylko pomiędzy sektorami", - L"Teraz nie można automatycznie udzielić pierwszej pomocy", - L"Przejście zablokowane dla - %s", - L"Twoi najemnicy, schwytani przez żołnierzy %s, są tutaj uwięzieni!", //Deidranny - L"Zamek został trafiony", - L"Zamek został zniszczony", - L"Ktoś inny majstruje przy tych drzwiach.", - L"Stan: %d/%d\nPaliwo: %d/%d", - L"%s nie widzi - %s.", // Cannot see person trying to talk to - L"Dodatek usunięty", - L"Nie możesz zdobyć kolejnego pojazdu, ponieważ posiadasz już 2", - - // added by Flugente for defusing/setting up trap networks // TODO.Translate - L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", - L"Set defusing frequency:", - L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", - L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", - L"Select tripwire hierarchy (1 - 4) and network (A - D):", - - // added by Flugente to display food status - L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"What do you want to do?", - L"Fill canteens", - L"Clean guns (Merc)", - L"Clean guns (Team)", - L"Take off clothes", - L"Lose disguise", - L"Militia inspection", - L"Militia restock", - L"Test disguise", - L"unused", - - // added by Flugente: decide what to do with the corpses - L"What do you want to do with the body?", - L"Decapitate", - L"Gut", - L"Take Clothes", - L"Take Body", - - // Flugente: weapon cleaning - L"%s cleaned %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", // TODO.Translate - L"Field interrogation", - L"Where do you want to send the %d prisoners?", // TODO.Translate - L"Let them go", - L"What do you want to do?", - L"Demand surrender", - L"Offer surrender", - L"Distract", // TODO.Translate - L"Talk", - L"Recruit Turncoat", // TODO: translate - - // TODO.Translate - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Disarm trap", - L"Inspect trap", - L"Remove blue flag", - L"Blow up!", - L"Activate tripwire", - L"Deactivate tripwire", - L"Reveal tripwire", - L"No detonator or remote detonator found!", - L"This bomb is already armed!", - L"Safe", - L"Mostly safe", - L"Risky", - L"Dangerous", - L"High danger!", - - L"Mask", // TODO.Translate - L"NVG", - L"Item", - - L"This feature works only with New Inventory System", - L"No item in your main hand", - L"Nowhere to place item from main hand", - L"No defined item for this quick slot", - L"No free hand for new item", - L"Item not found", - L"Cannot take item to main hand", - - L"Attempting to bandage travelling mercs...", //TODO.Translate - - L"Improve gear", - L"%s changed %s for superior version", - L"%s picked up %s", // TODO.Translate - - L"%s has stopped chatting with %s", // TODO.Translate -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"Jeśli zaznaczysz tę opcję, to sąsiedni sektor zostanie natychmiast załadowany.", - L"Jeśli zaznaczysz tę opcję, to na czas podróży pojawi się automatycznie ekran mapy.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"Ten sektor jest okupowany przez wroga i nie możesz tu zostawić najemników.\nMusisz uporać się z tą sytuacją zanim załadujesz inny sektor.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"Gdy wyprowadzisz swoich pozostałych najemników z tego sektora,\nsąsiedni sektor zostanie automatycznie załadowany.", - L"Gdy wyprowadzisz swoich pozostałych najemników z tego sektora,\nto na czas podróży pojawi się automatycznie ekran mapy.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s jest pod eskortą twoich najemników i nie może bez nich opuścić tego sektora.", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s nie może sam opuścić tego sektora, gdyż %s jest pod jego eskortą.", //male singular - L"%s nie może sama opuścić tego sektora, gdyż %s jest pod jej eskortą.", //female singular - L"%s nie może sam opuścić tego sektora, gdyż eskortuje inne osoby.", //male plural - L"%s nie może sama opuścić tego sektora, gdyż eskortuje inne osoby.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"Wszyscy twoi najemnicy muszą być w pobliżu,\naby oddział mógł się przemieszczać.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"Jeśli zaznaczysz tę opcję, %s będzie podróżować w pojedynkę\ni automatycznie znajdzie się w osobnym oddziale.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"Jeśli zaznaczysz tę opcję, aktualnie\nwybrany oddział opuści ten sektor.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s jest pod eskortą twoich najemników i nie może bez nich opuścić tego sektora. Aby opuścić sektor twoi najemnicy muszą być w pobliżu.", -}; - - - -STR16 pRepairStrings[] = -{ - L"Wyposażenie", // tell merc to repair items in inventory - L"Baza rakiet Z-P", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Anuluj", // cancel this menu - L"Robot", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"traci", // the merc has lost a statistic - L"zyskuje", // the merc has gained a statistic - L"pkt.", // singular - L"pkt.", // plural - L"pkt.", // singular - L"pkt.", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"zdrowia.", - L"zwinności.", - L"zręczności.", - L"inteligencji.", - L"umiejętności medycznych.", - L"umiejętności w dziedzinie materiałów wybuchowych.", - L"umiejętności w dziedzinie mechaniki.", - L"umiejętności strzeleckich.", - L"doświadczenia.", - L"siły.", - L"umiejętności dowodzenia.", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"Całkowita trasa: ",// total distance for helicopter to travel - L" Bezp.: ", // distance to travel to destination - L" Niebezp.:", // distance to return from destination to airport - L"Całkowity koszt: ", // total cost of trip by helicopter - L"PCP: ", // ETA is an acronym for "estimated time of arrival" - L"Helikopter ma mało paliwa i musi wylądować na terenie wroga.", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Pasażerowie: ", - L"Wybór Skyridera lub pasażerów?", - L"Skyrider", - L"Pasażerowie", - L"Helikopter został poważnie uszkodzony i musi wylądować na terenie wroga!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Helikopter powróci teraz wprost do bazy, czy chcesz najpierw wysadzić pasażerów?", - L"Remaining Fuel:", // TODO.Translate - L"Dist. To Refuel Site:", // TODO.Translate -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Czy chcesz aby %s rozpoczął naprawę? Będzie to kosztować %d$, a helikopter pozostanie niedostępny przez około %d godzin(y).", - L"Helikopter jest obecnie rozmontowany. Zaczekaj aż naprawa zostanie ukończona.", - L"Helikopter jest znów dostępny do lotu.", - L"Helicopter jest zatankowany do pełna.", - - L"Helicopter has exceeded maximum range!", // TODO.Translate -}; - -STR16 sMapLevelString[] = -{ - L"Poziom:", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"Lojalności", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"nie można wydawać rozkazów podróży pod ziemią.", -}; - -STR16 gsTimeStrings[] = -{ - L"g", // hours abbreviation - L"m", // minutes abbreviation - L"s", // seconds abbreviation - L"d", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"Brak", - L"Szpital", - L"Factory", // TODO.Translate - L"Więzienie", - L"Baza wojskowa", - L"Lotnisko", - L"Strzelnica", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"Inwentarz", - L"Zamknij", - L"Repair", // TODO.Translate - L"Factories", // TODO.Translate -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"Rozmiar", // 0 // size of the town in sectors - L"", // blank line, required - L"Pod kontrolą", // how much of town is controlled - L"Brak", // none of this town - L"Przynależna kopalnia", // mine associated with this town - L"Lojalność", // 5 // the loyalty level of this town - L"Wyszkolonych", // the forces in the town trained by the player - L"", - L"Główne obiekty", // main facilities in this town - L"Poziom", // the training level of civilians in this town - L"Szkolenie cywili", // 10 // state of civilian training in town - L"Samoobrona", // the state of the trained civilians in the town - - // Flugente: prisoner texts // TODO.Translate - L"Prisoners", - L"%d (capacity %d)", - L"%d Admins", - L"%d Regulars", - L"%d Elites", - L"%d Officers", - L"%d Generals", - L"%d Civilians", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"Kopalnia", // 0 - L"Srebro", - L"Złoto", - L"Dzienna produkcja", - L"Możliwa produkcja", - L"Opuszczona", // 5 - L"Zamknięta", - L"Na wyczerpaniu", - L"Produkuje", - L"Stan", - L"Tempo produkcji", - L"Resource", // 10 L"Typ złoża", // TODO.Translate - L"Kontrola miasta", - L"Lojalność miasta", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"Siły wroga", - L"Sektor", - L"Przedmiotów", - L"Nieznane", - - L"Pod kontrolą", - L"Tak", - L"Nie", - L"Status/Software status:", // TODO.Translate - - L"Additional Intel", // TODO:Translate -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s jest zbyt daleko.", //Merc is in sector with item but not close enough - L"Nie można wybrać tego najemnika.", //MARK CARTER - L"%s nie może stąd zabrać tego przedmiotu, gdyż nie jest w tym sektorze.", - L"Podczas walki nie można korzystać z tego panelu.", - L"Podczas walki nie można korzystać z tego panelu.", - L"%s nie może tu zostawić tego przedmiotu, gdyż nie jest w tym sektorze.", - L"W trakcie walki nie możesz doładowywać magazynka.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Położenie", // sector these items are in - L"Razem przedmiotów", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"Kliknij w kolumnie 'Przydz.', aby przydzielić najemnika do innego oddziału lub wybranego zadania.", - L"Aby wyznaczyć najemnikowi cel w innym sektorze, kliknij pole w kolumnie 'Cel'.", - L"Gdy najemnicy otrzymają już rozkaz przemieszczenia się, kompresja czasu pozwala im szybciej dotrzeć na miejsce.", - L"Kliknij lewym klawiszem aby wybrać sektor. Kliknij ponownie aby wydać najemnikom rozkazy przemieszczenia, lub kliknij prawym klawiszem by uzyskać informacje o sektorze.", - L"Naciśnij w dowolnym momencie klawisz 'H' by wyświetlić okienko pomocy.", - L"Próbny tekst", - L"Próbny tekst", - L"Próbny tekst", - L"Próbny tekst", - L"Niewiele możesz tu zrobić, dopóki najemnicy nie przylecą do Arulco. Gdy już zbierzesz swój oddział, kliknij przycisk Kompresji Czasu, w prawym dolnym rogu. W ten sposób twoi najemnicy szybciej dotrą na miejsce.", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"Przemieść najemników", // title for movement box - L"Nanieś trasę podróży", // done with movement menu, start plotting movement - L"Anuluj", // cancel this menu - L"Inni", // title for group of mercs not on squads nor in vehicles - L"Select all", // Select all squads TODO: Translate -}; - - -STR16 pUpdateMercStrings[] = -{ - L"Oj:", // an error has occured - L"Wygasł kontrakt najemników:", // this pop up came up due to a merc contract ending - L"Najemnicy wypełnili zadanie:", // this pop up....due to more than one merc finishing assignments - L"Najemnicy wrócili do pracy:", // this pop up ....due to more than one merc waking up and returing to work - L"Odpoczywający najemnicy:", // this pop up ....due to more than one merc being tired and going to sleep - L"Wkrótce wygasną kontrakty:", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Pokaż miasta (|W)", - L"Pokaż kopalnie (|M)", - L"Pokaż oddziały i wrogów (|T)", - L"Pokaż przestrzeń powietrzną (|A)", - L"Pokaż przedmioty (|I)", - L"Pokaż samoobronę i wrogów (|Z)", - L"Show |Disease Data", // TODO.Translate - L"Show Weathe|r", - L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Next (|.)", // next page // TODO.Translate - L"Previous (|,)", // previous page // TODO.Translate - L"Exit Sector Inventory (|E|s|c)", // exit sector inventory // TODO.Translate - - // TODO.Translate - L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button - L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge - L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items - L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo - L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button - L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button - L"Toggle Get Item Display", // Flugente: move item display // TODO.Translate - L"Save Gear Template", // TODO.Translate - L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"|Laptop", - L"Ekran taktyczny (|E|s|c)", - L"|Opcje", - L"Kompresja czasu (|+)", // time compress more - L"Kompresja czasu (|-)", // time compress less - L"Poprzedni komunikat (|S|t|r|z|a|ł|k|a |w |g|ó|r|ę)\nPoprzednia strona (|P|g|U|p)", // previous message in scrollable list - L"Następny komunikat (|S|t|r|z|a|ł|k|a |w |d|ó|ł)\nNastępna strona (|P|g|D|n)", // next message in the scrollable list - L"Włącz/Wyłącz kompresję czasu (|S|p|a|c|j|a)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Saldo dostępne", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s nie żyje.", -}; - - -STR16 pDayStrings[] = -{ - L"Dzień", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Enrico", - L"Psych Pro Inc", - L"Pomoc", - L"Psych Pro Inc", - L"Speck", - L"R.I.S.", //5 - L"Barry", - L"Blood", - L"Lynx", - L"Grizzly", - L"Vicki", //10 - L"Trevor", - L"Grunty", - L"Ivan", - L"Steroid", - L"Igor", //15 - L"Shadow", - L"Red", - L"Reaper", - L"Fidel", - L"Fox", //20 - L"Sidney", - L"Gus", - L"Buns", - L"Ice", - L"Spider", //25 - L"Cliff", - L"Bull", - L"Hitman", - L"Buzz", - L"Raider", //30 - L"Raven", - L"Static", - L"Len", - L"Danny", - L"Magic", - L"Stephen", - L"Scully", - L"Malice", - L"Dr.Q", - L"Nails", - L"Thor", - L"Scope", - L"Wolf", - L"MD", - L"Meltdown", - //---------- - L"M.I.S. Ubezpieczenia", - L"Bobby Rays", - L"Kingpin", - L"John Kulba", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"Poprzedni", - L"Następny", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"Masz nową pocztę...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"Usunąć wiadomość?", - L"Usunąć wiadomość?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"Od:", - L"Temat:", - L"Dzień:", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"Skrzynka odbiorcza", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Księgowy Plus", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Wypłata:", // credit (subtract from) to player's account - L"Wpłata:", // debit (add to) to player's account - L"Wczorajsze wpływy:", - L"Wczorajsze dodatkowe wpływy:", - L"Wczorajsze wydatki:", - L"Saldo na koniec dnia:", - L"Dzisiejsze wpływy:", - L"Dzisiejsze dodatkowe wpływy:", - L"Dzisiejsze wydatki:", - L"Saldo dostępne:", - L"Przewidywane wpływy:", - L"Przewidywane saldo:", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"Dzień", // the day column - L"Ma", // the credits column - L"Winien", // the debits column - L"Transakcja", // transaction type - see TransactionText below - L"Saldo", // balance at this point in time - L"Strona", // page number - L"Dzień (dni)", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"Narosłe odsetki", // interest the player has accumulated so far - L"Anonimowa wpłata", - L"Koszt transakcji", - L"Wynajęto -", // Merc was hired - L"Zakupy u Bobby'ego Ray'a", // Bobby Ray is the name of an arms dealer - L"Uregulowanie rachunków w M.E.R.C.", - L"Zastaw na życie dla - %s", // medical deposit for merc - L"Analiza profilu w IMP", // IMP is the acronym for International Mercenary Profiling - L"Ubezpieczneie dla - %s", - L"Redukcja ubezp. dla - %s", - L"Przedł. ubezp. dla - %s", // johnny contract extended - L"Anulowano ubezp. dla - %s", - L"Odszkodowanie za - %s", // insurance claim for merc - L"1 dzień", // merc's contract extended for a day - L"1 tydzień", // merc's contract extended for a week - L"2 tygodnie", // ... for 2 weeks - L"Przychód z kopalni", - L"", //String nuked - L"Zakup kwiatów", - L"Pełny zwrot zastawu za - %s", - L"Częściowy zwrot zastawu za - %s", - L"Brak zwrotu zastawu za - %s", - L"Zapłata dla - %s", // %s is the name of the npc being paid - L"Transfer funduszy do - %s", // transfer funds to a merc - L"Transfer funduszy od - %s", // transfer funds from a merc - L"Samoobrona w - %s", // initial cost to equip a town's militia - L"Zakupy u - %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s wpłacił(a) pieniądze.", - L"Sprzedano rzecz(y) miejscowym", - L"Wykorzystanie Placówki", // HEADROCK HAM 3.6 - L"Utrzymanie Samoobr.", // HEADROCK HAM 3.6 - L"Ransom for released prisoners", // Flugente: prisoner system TODO.Translate - L"WHO data subscription", // Flugente: disease TODO.Translate - L"Payment to Kerberus", // Flugente: PMC - L"SAM site repair", // Flugente: SAM repair // TODO.Translate - L"Trained workers", // Flugente: train workers - L"Drill militia in %s", // Flugente: drill militia // TODO.Translate - L"Mini event", // rftr: mini events // TODO: translate - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Ubezpieczenie dla -", // insurance for a merc - L"Przedł. kontrakt z - %s o 1 dzień.", // entend mercs contract by a day - L"Przedł. kontrakt z - %s o 1 tydzień.", - L"Przedł. kontrakt z - %s o 2 tygodnie.", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"Skyriderowi zapłacono %d$", // skyrider was paid an amount of money - L"Skyriderowi trzeba jeszcze zapłacić %d$", // skyrider is still owed an amount of money - L"Skyrider zatankował", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Skyrider jest gotów do kolejnego lotu.", // Skyrider was grounded but has been freed - L"Skyrider nie ma pasażerów. Jeśli chcesz przetransportować najemników, zmień ich przydział na POJAZD/HELIKOPTER.", -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"Świetne", - L"Dobre", - L"Stabilne", - L"Słabe", - L"Panika", - L"Złe", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"%s - jego/jej sprzęt jest już w Omercie( A9 ).", - L"%s - jego/jej sprzęt jest już w Drassen( B13 ).", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"Zdrowie", - L"Energia", - L"Morale", - L"Stan", // the condition of the current vehicle (its "health") - L"Paliwo", // the fuel level of the current vehicle (its "energy") - L"Poison", // TODO.Translate - L"Water", // drink level - L"Food", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Poprzedni najemnik (|S|t|r|z|a|ł|k|a |w |l|e|w|o)", // previous merc in the list - L"Następny najemnik (|S|t|r|z|a|ł|k|a |w |p|r|a|w|o)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"PCP:", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"Więcej tego nie zobaczysz. Czy na pewno chcesz to zrobić?", // do you want to continue and lose the item forever - L"To wygląda na coś NAPRAWDĘ ważnego. Czy NA PEWNO chcesz to zniszczyć?", // does the user REALLY want to trash this item -}; - - -STR16 pMapErrorString[] = -{ - L"Oddział nie może się przemieszczać, jeśli któryś z najemników śpi.", - -//1-5 - L"Najpierw wyprowadź oddział na powierzchnię.", - L"Rozkazy przemieszczenia? To jest sektor wroga!", - L"Aby podróżować najemnicy muszą być przydzieleni do oddziału lub pojazdu.", - L"Nie masz jeszcze ludzi.", // you have no members, can't do anything - L"Najemnik nie może wypełnić tego rozkazu.", // merc can't comply with your order -//6-10 - L"musi mieć eskortę, aby się przemieszczać. Umieść go w oddziale z eskortą.", // merc can't move unescorted .. for a male - L"musi mieć eskortę, aby się przemieszczać. Umieść ją w oddziale z eskortą.", // for a female - L"Najemnik nie przybył jeszcze do %s!", - L"Wygląda na to, że trzeba wpierw uregulować sprawy kontraktu.", - L"Nie można przemieścić najemnika. Trwa nalot powietrzny.", -//11-15 - L"Rozkazy przemieszczenia? Trwa walka!", - L"Zaatakowały cię dzikie koty, w sektorze %s!", - L"W sektorze %s znajduje się coś, co wygląda na legowisko dzikich kotów!", - L"", - L"Baza rakiet Ziemia-Powietrze została przejęta.", -//16-20 - L"%s - kopalnia została przejęta. Twój dzienny przychód został zredukowany do %s.", - L"Nieprzyjaciel bezkonfliktowo przejął sektor %s.", - L"Przynajmniej jeden z twoich najemników nie został do tego przydzielony.", - L"%s nie może się przyłączyć, ponieważ %s jest pełny", - L"%s nie może się przyłączyć, ponieważ %s jest zbyt daleko.", -//21-25 - L"%s - kopalnia została przejęta przez siły Deidranny!", - L"Siły wroga właśnie zaatakowały bazę rakiet Ziemia-Powietrze w - %s.", - L"Siły wroga właśnie zaatakowały - %s.", - L"Właśnie zauważono siły wroga w - %s.", - L"Siły wroga właśnie przejęły - %s.", -//26-30 - L"Przynajmniej jeden z twoich najemników nie mógł się położyć spać.", - L"Przynajmniej jeden z twoich najemników nie mógł wstać.", - L"Oddziały samoobrony nie pojawią się dopóki nie zostaną wyszkolone.", - L"%s nie może się w tej chwili przemieszczać.", - L"Żołnierze samoobrony, którzy znajdują się poza granicami miasta, nie mogą być przeniesieni do innego sektora.", -//31-35 - L"Nie możesz trenować samoobrony w - %s.", - L"Pusty pojazd nie może się poruszać!", - L"%s ma zbyt wiele ran by podróżować!", - L"Musisz wpierw opuścić muzeum!", - L"%s nie żyje!", -//36-40 - L"%s nie może się zamienić z - %s, ponieważ się porusza", - L"%s nie może w ten sposób wejśc do pojazdu", - L"%s nie może się dołączyć do - %s", - L"Nie możesz kompresować czasu dopóki nie zatrudnisz sobie kilku nowych najemników!", - L"Ten pojazd może się poruszać tylko po drodze!", -//41-45 - L"Nie można zmieniać przydziału najemników, którzy są w drodze", - L"Pojazd nie ma paliwa!", - L"%s jest zbyt zmęczony(na) by podróżować.", - L"Żaden z pasażerów nie jest w stanie kierować tym pojazdem.", - L"Jeden lub więcej członków tego oddziału nie może się w tej chwili przemieszczać.", -//46-50 - L"Jeden lub więcej INNYCH członków tego oddziału nie może się w tej chwili przemieszczać.", - L"Pojazd jest uszkodzony!", - L"Pamiętaj, że w jednym sektorze tylko dwóch najemników może trenować żołnierzy samoobrony.", - L"Robot nie może się poruszać bez operatora. Umieść ich razem w jednym oddziale.", - L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate -// 51-55 - L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Kliknij ponownie sektor docelowy, aby zatwierdzić trasę podróży, lub kliknij inny sektor, aby ją wydłużyć.", - L"Trasa podróży zatwierdzona.", - L"Cel podróży nie został zmieniony.", - L"Trasa podróży została anulowana.", - L"Trasa podróży została skrócona.", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Kliknij sektor, do którego mają przylatywać najemnicy.", - L"Dobrze. Przylatujący najemnicy będą zrzucani w %s", - L"Najemnicy nie mogą tu przylatywać. Przestrzeń powietrzna nie jest zabezpieczona!", - L"Anulowano. Sektor zrzutu nie został zmieniony.", - L"Przestrzeń powietrzna nad %s nie jest już bezpieczna! Sektor zrzutu został przesunięty do %s.", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Otwórz wyposażenie (|E|n|t|e|r)", - L"Zniszcz przedmiot", - L"Zamknij wyposażenie (|E|n|t|e|r)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"Czy %s ma zostawić swój sprzęt w sektorze, w którym się obecnie znajduje (%s), czy w (%s), skąd odlatuje?", - L"%s wkrótce odchodzi i zostawi swój sprzęt w (%s).", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"Czy %s ma zostawić swój sprzęt w sektorze, w którym się obecnie znajduje (%s), czy w (%s), skąd odlatuje? ", - L"%s wkrótce odchodzi i zostawi swój sprzęt w (%s.", -}; - - -STR16 pMercContractOverStrings[] = -{ - L" zakończył kontrakt więc wyjechał.", // merc's contract is over and has departed - L" zakończyła kontrakt więc wyjechała.", // merc's contract is over and has departed - L" - jego kontrakt został zerwany więc odszedł.", // merc's contract has been terminated - L" - jej kontrakt został zerwany więc odeszła.", // merc's contract has been terminated - L"Masz za duży dług wobec M.E.R.C. więc %s odchodzi.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages - -// WDS: Allow flexible numbers of IMPs of each sex -// note: I only updated the English text to remove "three" below -STR16 pImpPopUpStrings[] = -{ - L"Nieprawidłowy kod dostępu", - L"Czy na pewno chcesz wznowić proces określenia profilu?", - L"Wprowadź nazwisko oraz płeć", - L"Wstępna kontrola stanu twoich finansów wykazała, że nie stać cię na analizę profilu.", - L"Opcja tym razem nieaktywna.", - L"Aby wykonać profil, musisz mieć miejsce dla przynajmniej jednego członka załogi.", - L"Profil został już wykonany.", - L"Nie można załadować postaci I.M.P. z dysku.", - L"Wykorzystałeś już maksymalną liczbę postaci I.M.P.", - L"Masz już w oddziale trzy postacie I.M.P. tej samej płci.", //L"You have already the maximum number of I.M.P characters with that gender on your team.", BYŁo ->>L"You have already three I.M.P characters with the same gender on your team.", - L"Nie stać cię na postać I.M.P.", // 10 - L"Nowa postać I.M.P. dołączyła do oddziału.", - L"You have already selected the maximum number of traits.", // TODO.Translate - L"No voicesets found.", // TODO.Translate -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"O Nas", // about the IMP site - L"ZACZNIJ", // begin profiling - L"Umiejętności", // personality section - L"Atrybuty", // personal stats/attributes section - L"Appearance", // changed from portrait - L"Głos %d", // the voice selection - L"Gotowe", // done profiling - L"Zacznij od początku", // start over profiling - L"Tak, wybieram tą odpowiedź.", - L"Tak", - L"Nie", - L"Skończone", // finished answering questions - L"Poprz.", // previous question..abbreviated form - L"Nast.", // next question - L"TAK, JESTEM.", // yes, I am certain - L"NIE, CHCĘ ZACZĄĆ OD NOWA.", // no, I want to start over the profiling process - L"TAK", - L"NIE", - L"Wstecz", // back one page - L"Anuluj", // cancel selection - L"Tak.", - L"Nie, Chcę spojrzeć jeszcze raz.", - L"Rejestr", // the IMP site registry..when name and gender is selected - L"Analizuję...", // analyzing your profile results - L"OK", - L"Postać", // Change from "Voice" - L"Brak", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"Po wybraniu twoich cech pora wybrać twoje umiejętności.", - L"Wybierz twoje atrybuty.", - L"Aby dokonać prawdziwego profilowania wybież portret, głos i kolory.", - L"Teraz, po wybraniu wyglądu, przejdź do analizy postaci.", -}; - -STR16 pFilesTitle[] = -{ - L"Przeglądarka plików", -}; - -STR16 pFilesSenderList[] = -{ - L"Raport Rozp.", // the recon report sent to the player. Recon is an abbreviation for reconissance - L"Intercept #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"Intercept #2", // second intercept file - L"Intercept #3", // third intercept file - L"Intercept #4", // fourth intercept file - L"Intercept #5", // fifth intercept file - L"Intercept #6", // sixth intercept file -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"Historia", -}; - -STR16 pHistoryHeaders[] = -{ - L"Dzień", // the day the history event occurred - L"Strona", // the current page in the history report we are in - L"Dzień", // the days the history report occurs over - L"Położenie", // location (in sector) the event occurred - L"Zdarzenie", // the event label -}; - -// Externalized to "TableData\History.xml" -/* -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"%s najęty(ta) w A.I.M.", // merc was hired from the aim site - L"%s najęty(ta) w M.E.R.C.", // merc was hired from the aim site - L"%s ginie.", // merc was killed - L"Uregulowano rachunki w M.E.R.C.", // paid outstanding bills at MERC - L"Przyjęto zlecenie od Enrico Chivaldori", - //6-10 - L"Profil IMP wygenerowany", - L"Podpisano umowę ubezpieczeniową dla %s.", // insurance contract purchased - L"Anulowano umowę ubezpieczeniową dla %s.", // insurance contract canceled - L"Wypłata ubezpieczenia za %s.", // insurance claim payout for merc - L"Przedłużono kontrakt z: %s o 1 dzień.", // Extented "mercs name"'s for a day - //11-15 - L"Przedłużono kontrakt z: %s o 1 tydzień.", // Extented "mercs name"'s for a week - L"Przedłużono kontrakt z: %s o 2 tygodnie.", // Extented "mercs name"'s 2 weeks - L"%s zwolniony(na).", // "merc's name" was dismissed. - L"%s odchodzi.", // "merc's name" quit. - L"przyjęto zadanie.", // a particular quest started - //16-20 - L"zadanie wykonane.", - L"Rozmawiano szefem kopalni %s", // talked to head miner of town - L"Wyzwolono - %s", - L"Użyto kodu Cheat", - L"Żywność powinna być jutro w Omercie", - //21-25 - L"%s odchodzi, aby wziąć ślub z Darylem Hickiem", - L"Wygasł kontrakt z - %s.", - L"%s zrekrutowany(na).", - L"Enrico narzeka na brak postępów", - L"Walka wygrana", - //26-30 - L"%s - w kopalni kończy się ruda", - L"%s - w kopalni skończyła się ruda", - L"%s - kopalnia została zamknięta", - L"%s - kopalnia została otwarta", - L"Informacja o więzieniu zwanym Tixa.", - //31-35 - L"Informacja o tajnej fabryce broni zwanej Orta.", - L"Naukowiec w Orcie ofiarował kilka karabinów rakietowych.", - L"Królowa Deidranna robi użytek ze zwłok.", - L"Frank opowiedział o walkach w San Monie.", - L"Pewien pacjent twierdzi, że widział coś w kopalni.", - //36-40 - L"Gość o imieniu Devin sprzedaje materiały wybuchowe.", - L"Spotkanie ze sławynm eks-najemnikiem A.I.M. - Mike'iem!", - L"Tony handluje bronią.", - L"Otrzymano karabin rakietowy od sierżanta Krotta.", - L"Dano Kyle'owi akt własności sklepu Angela.", - //41-45 - L"Madlab zaoferował się zbudować robota.", - L"Gabby potrafi zrobić miksturę chroniącą przed robakami.", - L"Keith wypadł z interesu.", - L"Howard dostarczał cyjanek królowej Deidrannie.", - L"Spotkanie z handlarzem Keithem w Cambrii.", - //46-50 - L"Spotkanie z aptekarzem Howardem w Balime", - L"Spotkanie z Perko, prowadzącym mały warsztat.", - L"Spotkanie z Samem z Balime - prowadzi sklep z narzędziami.", - L"Franz handluje sprzętem elektronicznym.", - L"Arnold prowadzi warsztat w Grumm.", - //51-55 - L"Fredo naprawia sprzęt elektroniczny w Grumm.", - L"Otrzymano darowiznę od bogatego gościa w Balime.", - L"Spotkano Jake'a, który prowadzi złomowisko.", - L"Jakiś włóczęga dał nam elektroniczną kartę dostępu.", - L"Przekupiono Waltera, aby otworzył drzwi do piwnicy.", - //56-60 - L"Dave oferuje darmowe tankowania, jeśli będzie miał paliwo.", - L"Greased Pablo's palms.", - L"Kingpin trzyma pieniądze w kopalni w San Mona.", - L"%s wygrał(a) walkę", - L"%s przegrał(a) walkę", - //61-65 - L"%s zdyskwalifikowany(na) podczas walki", - L"Znaleziono dużo pieniędzy w opuszczonej kopalni.", - L"Spotkano zabójcę nasłanego przez Kingpina.", - L"Utrata kontroli nad sektorem", //ENEMY_INVASION_CODE - L"Sektor obroniony", - //66-70 - L"Przegrana bitwa", //ENEMY_ENCOUNTER_CODE - L"Fatalna zasadzka", //ENEMY_AMBUSH_CODE - L"Usunieto zasadzkę wroga", - L"Nieudany atak", //ENTERING_ENEMY_SECTOR_CODE - L"Udany atak!", - //71-75 - L"Stworzenia zaatakowały", //CREATURE_ATTACK_CODE - L"Zabity(ta) przez dzikie koty", //BLOODCAT_AMBUSH_CODE - L"Wyrżnięto dzikie koty", - L"%s zabity(ta)", - L"Przekazano Carmenowi głowę terrorysty", - //76-80 - L"Slay odszedł", - L"Zabito: %s", - L"Spotkanie z Waldo - mechanikiem lotniczym.", - L"Rozpoczęto naprawę helikoptera. Szacowany czas: %d godzin(y).", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"N/D", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"E-mail", - L"Sieć", - L"Finanse", - L"Personel", - L"Historia", - L"Pliki", - L"Zamknij", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"A.I.M.", - L"Bobby Ray's", - L"I.M.P", - L"M.E.R.C.", - L"Pogrzeby", - L"Kwiaty", - L"Ubezpieczenia", - L"Anuluj", - L"Encyclopedia", - L"Briefing Room", - L"Campaign History", // TODO.Translate - L"MeLoDY", - L"WHO", - L"Kerberus", - L"Militia Overview", // TODO.Translate - L"R.I.S.", - L"Factories", // TODO.Translate -}; - -STR16 pBookmarkTitle[] = -{ - L"Ulubione", - L"Aby w przyszłości otworzyć to menu, kliknij prawym klawiszem myszy.", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"Ładowanie strony...", - L"Otwieranie strony...", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Weź", // take money from merc - L"Daj", // give money to merc - L"Anuluj", // cancel transaction - L"Skasuj", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Transfer $", // transfer money to merc -- short form - L"Atrybuty", // view stats of the merc - L"Wyposażenie", // view the inventory of the merc - L"Zatrudnienie", -}; - -STR16 sATMText[ ]= -{ - L"Przesłać fundusze?", // transfer funds to merc? - L"OK?", // are we certain? - L"Wprowadź kwotę", // enter the amount you want to transfer to merc - L"Wybierz typ", // select the type of transfer to merc - L"Brak środków", // not enough money to transfer to merc - L"Kwota musi być podzielna przez $10", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"Błąd", - L"Serwer nie posiada DNS.", - L"Sprawdź adres URL i spróbuj ponownie.", - L"OK", - L"Niestabilne połączenie z Hostem. Transfer może trwać dłużej.", -}; - - -STR16 pPersonnelString[] = -{ - L"Najemnicy:", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"A.I.M.", - L"A.I.M. Członkowie", - L"A.I.M. Portrety", // a mug shot is another name for a portrait - L"A.I.M. Lista", - L"A.I.M.", - L"A.I.M. Weterani", - L"A.I.M. Polisy", - L"A.I.M. Historia", - L"A.I.M. Linki", - L"M.E.R.C.", - L"M.E.R.C. Konta", - L"M.E.R.C. Rejestracja", - L"M.E.R.C. Indeks", - L"Bobby Ray's", - L"Bobby Ray's - Broń", - L"Bobby Ray's - Amunicja", - L"Bobby Ray's - Pancerz", - L"Bobby Ray's - Różne", //misc is an abbreviation for miscellaneous - L"Bobby Ray's - Używane", - L"Bobby Ray's - Zamówienie pocztowe", - L"I.M.P.", - L"I.M.P.", - L"United Floral Service", - L"United Floral Service - Galeria", - L"United Floral Service - Zamówienie", - L"United Floral Service - Galeria kartek", - L"Malleus, Incus & Stapes - Brokerzy ubezpieczeniowi", - L"Informacja", - L"Kontrakt", - L"Uwagi", - L"McGillicutty - Zakład pogrzebowy", - L"", - L"Nie odnaleziono URL.", - L"%s Press Council - Conflict Summary", // TODO.Translate - L"%s Press Council - Battle Reports", - L"%s Press Council - Latest News", - L"%s Press Council - About us", - L"Mercs Love or Dislike You - About us", // TODO.Translate - L"Mercs Love or Dislike You - Analyze a team", - L"Mercs Love or Dislike You - Pairwise comparison", - L"Mercs Love or Dislike You - Personality", - L"WHO - About WHO", - L"WHO - Disease in Arulco", - L"WHO - Helpful Tips", - L"Kerberus - About Us", - L"Kerberus - Hire a Team", - L"Kerberus - Individual Contracts", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services - Information Requests", // TODO.Translate - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Factory Overview", // TODO.Translate - L"Bobby Ray's - Ostatnie dostawy", - L"Encyclopedia", - L"Encyclopedia - Dane", - L"Briefing Room", - L"Briefing Room - Dane", -}; - -STR16 pShowBookmarkString[] = -{ - L"Sir-Pomoc", - L"Kliknij ponownie Sieć by otworzyć menu Ulubione.", -}; - -STR16 pLaptopTitles[] = -{ - L"Poczta", - L"Przeglądarka plików", - L"Personel", - L"Księgowy Plus", - L"Historia", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"Śmierć w akcji", - L"Zwolnienie", - L"Inny", - L"Małżeństwo", - L"Koniec kontraktu", - L"Rezygnacja", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"Bieżący oddział", - L"Wyjazdy", - L"Koszt dzienny:", - L"Najwyższy koszt:", - L"Najniższy koszt:", - L"Śmierć w akcji:", - L"Zwolnienie:", - L"Inny:", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Najniższy", - L"Średni", - L"Najwyższy", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"ZDR", - L"ZWN", - L"ZRCZ", - L"SIŁA", - L"DOW", - L"INT", - L"DOŚW", - L"STRZ", - L"MECH", - L"WYB", - L"MED", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"Kontrakt", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"Dalej", - L"Stop", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"Pokonano cię w tym sektorze!", - L"Wróg nie zna litości i pożera was wszystkich!", - L"Nieprzytomni członkowie twojego oddziału zostali pojmani!", - L"Członkowie twojego oddziału zostali uwięzieni.", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"Wstecz", - L"Dalej", - L"Akceptuję", - L"Skasuj", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"Wstecz", - L"Dalej" -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Autoryzacja", - L"Strona główna", - L"Konto #:", - L"Najemnik", - L"Dni", - L"Stawka", //5 - L"Opłata", - L"Razem:", - L"Czy na pewno chcesz zatwierdzić płatność: %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+gear)", // TODO.Translate -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Wstecz", - L"Dalej", -}; - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"Zdrowie", - L"Zwinność", - L"Sprawność", - L"Siła", - L"Um. dowodz.", - L"Inteligencja", - L"Poz. doświadczenia", - L"Um. strzeleckie", - L"Zn. mechaniki", - L"Mat. wybuchowe", - L"Wiedza medyczna", - - L"Poprzedni", - L"Najmij", - L"Następny", - L"Dodatkowe informacje", - L"Strona główna", - L"Najęty", - L"Koszt:", - L"Dziennie", - L"Gear:", // TODO.Translate - L"Razem:", - L"Nie żyje", - - L"You have a full team of mercs already.", // TODO.Translate - L"Weź sprzęt?", - L"Niedostępny", - L"Unsettled Bills", // TODO.Translate - L"Bio", // TODO.Translate - L"Inv", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Otwórz konto", - L"Anuluj", - L"Nie posiadasz konta. Czy chcesz sobie założyć?" -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Speck T. Kline, założyciel i właściciel", - L"Aby otworzyć konto naciśnij tu", - L"Aby zobaczyć konto naciśnij tu", - L"Aby obejrzeć akta naciśnij tu", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Transfer failed. No funds available.", // TODO.Translate -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"Zakład pogrzebowy McGillicutty, pomaga rodzinom pogrążonym w smutku od 1983.", - L"Kierownik, były najemnik A.I.M. Murray \'Pops\' McGillicutty jest doświadczonym pracownikiem zakładu pogrzebowego.", - L"Przez całe życie obcował ze śmiercią, 'Pops' wie jak trudne są te chwile.", - L"Zakład pogrzebowy McGillicutty oferuje szeroki zakres usług, od duchowego wsparcia po rekonstrukcję silnie zniekształconych zwłok.", - L"Pozwól by McGillicutty ci pomógł a twój ukochany będzie spoczywał w pokoju.", - - // Text for the various links available at the bottom of the page - L"WYŚLIJ KWIATY", - L"KOLEKCJA TRUMIEN I URN", - L"USŁUGI KREMA- CYJNE", - L"USŁUGI PLANOWANIA POGRZEBU", - L"KARTKI POGRZE- BOWE", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"Niestety, z powodu śmierci w rodzinie, nie działają jeszcze wszystkie elementy tej strony.", - L"Przepraszamy za powyższe uniedogodnienie." -}; - -// Text for the florist Home page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Galeria", - - //Address of United Florist - - L"\"Zrzucamy z samolotu w dowolnym miejscu\"", - L"1-555-POCZUJ-MNIE", - L"333 Dr Nos, Miasto Nasion, CA USA 90210", - L"http://www.poczuj-mnie.com", - - // detail of the florist page - - L"Działamy szybko i sprawnie!", - L"Gwarantujemy dostawę w dowolny punkt na Ziemi, następnego dnia po złożeniu zamówienia!", - L"Oferujemy najniższe ceny na świecie!", - L"Pokaż nam ofertę z niższą ceną, a dostaniesz w nagrodę tuzin róż, za darmo!", - L"Latająca flora, fauna i kwiaty od 1981.", - L"Nasz ozdobiony bombowiec zrzuci twój bukiet w promieniu co najwyżej dziesięciu mil od żądanego miejsca. Kiedy tylko zechcesz!", - L"Pozwól nam zaspokoić twoje kwieciste fantazje.", - L"Bruce, nasz światowej renomy projektant bukietów, zerwie dla ciebie najświeższe i najwspanialsze kwiaty z naszej szklarni.", - L"I pamiętaj, jeśli czegoś nie mamy, możemy to szybko zasadzić!" -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"Powrót", - L"Wyślij", - L"Skasuj", - L"Galeria", - - L"Nazwa bukietu:", - L"Cena:", //5 - L"Zamówienie numer:", - L"Czas dostawy", - L"nast. dnia", - L"dostawa gdy to będzie możliwe", - L"Miejsce dostawy", //10 - L"Dodatkowe usługi", - L"Zgnieciony bukiet($10)", - L"Czarne Róże($20)", - L"Zwiędnięty bukiet($10)", - L"Ciasto owocowe (jeżeli będzie)($10)", //15 - L"Osobiste kondolencje:", - L"Ze względu na rozmiar karteczek, tekst nie może zawierać więcej niż 75 znaków.", - L"...możesz też przejrzeć nasze", - - L"STANDARDOWE KARTKI", - L"Informacja o rachunku",//20 - - //The text that goes beside the area where the user can enter their name - - L"Nazwisko:", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"Poprz.", //abbreviation for previous - L"Nast.", //abbreviation for next - - L"Kliknij wybraną pozycję aby złożyć zamówienie.", - L"Uwaga: $10 dodatkowej opłaty za zwiędnięty lub zgnieciony bukiet.", - - //text on the button - - L"Główna", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"Kliknij swój wybór", - L"Wstecz" -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"Formularz zamówienia", //Title of the page - L"Ilość", // The number of items ordered - L"Waga (%s)", // The weight of the item - L"Nazwa", // The name of the item - L"Cena", // the item's weight - L"Wartość", //5 // The total price of all of items of the same type - L"W sumie", // The sub total of all the item totals added - L"Transport", // S&H is an acronym for Shipping and Handling - L"Razem", // The grand total of all item totals + the shipping and handling - L"Miejsce dostawy", - L"Czas dostawy", //10 // See below - L"Koszt (za %s.)", // The cost to ship the items - L"Ekspres - 24h", // Gets deliverd the next day - L"2 dni robocze", // Gets delivered in 2 days - L"Standardowa dostawa", // Gets delivered in 3 days - L" Wyczyść",//15 // Clears the order page - L" Akceptuję", // Accept the order - L"Wstecz", // text on the button that returns to the previous page - L"Strona główna", // Text on the button that returns to the home page - L"* oznacza używane rzeczy", // Disclaimer stating that the item is used - L"Nie stać cię na to.", //20 // A popup message that to warn of not enough money - L"", // Gets displayed when there is no valid city selected - L"Miejsce docelowe przesyłki: %s. Potwierdzasz?", // A popup that asks if the city selected is the correct one - L"Waga przesyłki*", // Displays the weight of the package - L"* Min. Waga", // Disclaimer states that there is a minimum weight for the package - L"Dostawy", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"Pistolet", - L"Pistolet maszynowy", - L"Karabin maszynowy", - L"Karabin", - L"Karabin snajperski", - L"Karabin bojowy", - L"Lekki karabin maszynowy", - L"Strzelba", - L"Inny", - - // Ammo - L"Pistolet", - L"Pistolet maszynowy", - L"Karabin maszynowy", - L"Karabin", - L"Karabin snajperski", - L"Karabin bojowy", - L"Lekki karabin maszynowy", - L"Strzelba", - - // Used - L"Broń", - L"Pancerz", - L"Oporządzenie", - L"Różne", - - // Armour - L"Hełmy", - L"Kamizelki", - L"Getry ochronne", - L"Płytki ceramiczne", - - // Misc - L"Ostrza", - L"Noże do rzucania", - L"Blunt W.", // TODO.Translate - L"Granaty", - L"Bomby", - L"Apteczki", - L"Ekwipunek", - L"Na twarz", - L"Oporządzenie", //LBE Gear - L"Optics", // Madd: new BR filters // TODO.Translate - L"Grip/LAM", - L"Muzzle", - L"Stock", - L"Mag/Trig.", - L"Other Att.", - L"Inne", -}; - - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"Zamów", // Title - // instructions on how to order - L"Kliknij wybrane towary. Lewym klawiszem zwiększasz ilość towaru, a prawym zmniejszasz. Gdy już skompletujesz swoje zakupy przejdź do formularza zamówienia.", - - //Text on the buttons to go the various links - - L"Poprzednia", // - L"Broń", //3 - L"Amunicja", //4 - L"Ochraniacze", //5 - L"Różne", //6 //misc is an abbreviation for miscellaneous - L"Używane", //7 - L"Następna", - L"FORMULARZ", - L"Strona główna", //10 - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"Twój zespół posiada",//11 - L"szt. broni do której pasuje amunicja tego typu", //12 - - //The following lines provide information on the items - - L"Waga:", // Weight of all the items of the same type - L"Kal:", // the caliber of the gun - L"Mag:", // number of rounds of ammo the Magazine can hold - L"Zas:", // The range of the gun - L"Siła:", // Damage of the weapon - L"CS:", // Weapon's Rate Of Fire, acronym ROF - L"PA:", // Weapon's Action Points, acronym AP - L"Ogłuszenie:", // Weapon's Stun Damage - L"Ochrona:", // Armour's Protection - L"Kamuf.:", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Koszt:", // Cost of the item - L"Na stanie:", // The number of items still in the store's inventory - L"Ilość na zamów.:", // The number of items on order - L"Uszkodz.", // If the item is damaged - L"Waga:", // the Weight of the item - L"Razem:", // The total cost of all items on order - L"* Stan: %%", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"Przepraszamy za to utrudnienie, ale na jednym zamówieniu może się znajdować tylko " ,//First part - L" pozycji! Jeśli potrzebujesz więcej, złóż kolejne zamówienie.", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Przykro nam. Chwilowo nie mamy tego więcej na magazynie. Proszę spróbować później.", - - //A popup that tells the user that the store is temporarily sold out - - L"Przykro nam, ale chwilowo nie mamy tego towaru na magazynie", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"Tu znajdziesz nowości z dziedziny broni i osprzętu wojskowego", - L"Zaspokoimy wszystkie twoje potrzeby w dziedzinie materiałów wybuchowych", - L"UŻYWANE RZECZY", - - //Text for the various links to the sub pages - - L"RÓŻNE", - L"BROŃ", - L"AMUNICJA", //5 - L"OCHRANIACZE", - - //Details on the web site - - L"Jeśli MY tego nie mamy, to znaczy, że nigdzie tego nie dostaniesz!", - L"W trakcie budowy", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"Członkowie A.I.M.", // Title - // Title for the way to sort - L"Sortuj wg:", - - // sort by... - - L"Ceny", - L"Doświadczenia", - L"Um. strzeleckich", - L"Zn. mechaniki", - L"Zn. mat. wyb.", - L"Um. med.", - L"Zdrowie", - L"Zwinność", - L"Sprawność", - L"Siła", - L"Um. dowodzenia", - L"Inteligencja", - L"Nazwisko", - - //Text of the links to other AIM pages - - L"Portrety najemników", - L"Akta najemnika", - L"Pokaż galerię byłych członków A.I.M.", - - // text to display how the entries will be sorted - - L"Rosnąco", - L"Malejąco", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Poprzednia str.", - L"Strona główna", - L"Przepisy", - L"Następna str.", - L"Rezygnuję", - L"Akceptuję", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"Lewy klawisz myszy", - L"kontakt z najemnikiem", - L"Prawy klawisz myszy", - L"lista portretów", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Zdrowie", - L"Zwinność", - L"Sprawność", - L"Siła", - L"Um. dowodzenia", - L"Inteligencja", - L"Poziom dośw.", - L"Um. strzeleckie", - L"Zn. mechaniki", - L"Zn. mat. wyb.", - L"Wiedza med.", //10 - - // the contract expenses' area - - L"Zapłata", - L"Czas", - L"1 dzień", - L"1 tydzień", - L"2 tygodnie", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"Poprzedni", - L"Kontakt", - L"Następny", - - L"Dodatkowe informacje", // Title for the additional info for the merc's bio - L"Aktywni członkowie", //20 // Title of the page - L"Opcjonalne wyposażenie:", // Displays the optional gear cost - L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's // TODO.Translate - L"Wymagany jest zastaw na życie", // If the merc required a medical deposit, this is displayed - L"Zestaw nr 1", // Text on Starting Gear Selection Button 1 - L"Zestaw nr 2", // Text on Starting Gear Selection Button 2 - L"Zestaw nr 3", // Text on Starting Gear Selection Button 3 - L"Zestaw nr 4", // Text on Starting Gear Selection Button 4 - L"Zestaw nr 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"Wartość kontraktu:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"Jeden dzień", - L"Jeden tydzień", - L"Dwa tygodnie", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"Bez sprzętu", - L"Weź sprzęt", - - // Text on the Buttons - - L"TRANSFER", // to actually hire the merc - L"ANULUJ", // go back to the previous menu - L"WYNAJMIJ", // go to menu in which you can hire the merc - L"ROZŁĄCZ", // stops talking with the merc - L"OK", - L"NAGRAJ SIĘ", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Wideo konferencja z - ", - L"Łączę. . .", - - L"z zastawem" // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"TRANSFER ZAKOŃCZONY POMYŚLNIE", // You hired the merc - L"PRZEPROWADZENIE TRANSFERU NIE MOŻLIWE", // Player doesn't have enough money, message 1 - L"BRAK ŚRODKÓW", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"Wynajęto", - L"Proszę zostaw wiadomość", - L"Nie żyje", - - //If you try to hire more mercs than game can support - - L"You have a full team of mercs already.", // TODO.Translate - - L"Nagrana wiadomość", - L"Wiadomość zapisana", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"A.I.M. Linki", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"A.I.M. Historia", //Title - - // Text on the buttons at the bottom of the page - - L"Poprzednia str.", - L"Strona główna", - L"Byli członkowie", - L"Następna str." -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Ceny", - L"Doświadczenia", - L"Um. strzeleckich", - L"Zn. mechaniki", - L"Zn. mat. wyb.", - L"Um. med.", - L"Zdrowie", - L"Zwinność", - L"Sprawność", - L"Siła", - L"Um. dowodzenia", - L"Inteligencja", - L"Nazwisko", - - // The title of the page, the above text gets added at the end of this text - - L"Członkowie A.I.M. posortowani rosnąco wg %s", - L"Członkowie A.I.M. posortowani malejąco wg %s", - - // Instructions to the players on what to do - - L"Lewy klawisz", - L"Wybór najemnika", //10 - L"Prawy klawisz", - L"Opcje sortowania", - - // Gets displayed on top of the merc's portrait if they are... - - L"Wyjechał(a)", - L"Nie żyje", //14 - L"Wynajęto", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"STRONA 1", - L"STRONA 2", - L"STRONA 3", - - L"Byli członkowie A.I.M.", // Title of the page - - - L"OK", // Stops displaying information on selected merc - L"Next page", // TODO.Translate -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"Znaki A.I.M. i logo A.I.M. są prawnie chronione w większości krajów.", - L"Więc nawet nie myśl o próbie ich podrobienia.", - L"Copyright 1998-1999 A.I.M., Ltd. All rights reserved.", - - //Text for an advertisement that gets displayed on the AIM page - - L"United Floral Service", - L"\"Zrzucamy gdziekolwiek\"", //10 - L"Zrób to jak należy...", - L"...za pierwszym razem", - L"Broń i akcesoria, jeśli czegoś nie mamy, to tego nie potrzebujesz.", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"Strona główna", - L"Członkowie", - L"Byli członkowie", - L"Przepisy", - L"Historia", - L"Linki", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"TOWARY NA STANIE", //Header for the merchandise available - L"STRONA", //The current store inventory page being displayed - L"KOSZT OGÓŁEM", //The total cost of the the items in the Dealer inventory area - L"WARTOŚĆ OGÓŁEM", //The total value of items player wishes to sell - L"WYCENA", //Button text for dealer to evaluate items the player wants to sell - L"TRANSAKCJA", //Button text which completes the deal. Makes the transaction. - L"OK", //Text for the button which will leave the shopkeeper interface. - L"KOSZT NAPRAWY", //The amount the dealer will charge to repair the merc's goods - L"1 GODZINA", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d GODZIN(Y)", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"NAPRAWIONO", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"Brak miejsca by zaoferować więcej rzeczy.", //Message box that tells the user there is no more room to put there stuff - L"%d MINUT(Y)", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Upuść przedmiot na ziemię.", - L"BUDGET", // TODO.Translate -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Weź", // Take money from the player - L"Daj", // Give money to the player - L"Anuluj", // Cancel the transfer - L"Skasuj", // Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"Wybierz", // tells the user to select either to give or take from the merc - L"Wprowadź kwotę", // Enter the amount to transfer - L"Transfer gotówki do najemnika", // Giving money to the merc - L"Transfer gotówki od najemnika", // Taking money from the merc - L"Brak środków", // Not enough money to transfer - L"Saldo", // Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"Czy chcesz dołożyć %s ze swojego konta, aby pokryć różnicę?", - L"Brak środków. Brakuje ci %s", - L"Czy chcesz przeznaczyć %s ze swojego konta, aby pokryć koszty?", - L"Poproś o rozpoczęcie transakscji", - L"Poproś o naprawę wybranych przedmiotów", - L"Zakończ rozmowę", - L"Saldo dostępne", - - L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate - L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"Zapisz grę", - L"Odczytaj grę", - L"Wyjście", - L">>", - L"<<", - L"OK", - L"1.13 Features", - L"New in 1.13", - L"Options", - - //Text above the slider bars - L"Efekty", - L"Dialogi", - L"Muzyka", - - //Confirmation pop when the user selects.. - L"Zakończyć grę i wrócić do głównego menu?", - - L"Musisz włączyć opcję dialogów lub napisów.", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Zapisz grę", - L"Odczytaj grę", - L"Anuluj", - L"Zapisz wybraną", - L"Odczytaj wybraną", - - L"Gra została pomyślnie zapisana", - L"BŁĄD podczas zapisu gry!", - L"Gra została pomyślnie odczytana", - L"BŁĄD podczas odczytu gry!", - - L"Wersja gry w zapisanym pliku różni się od bieżącej. Prawdopodobnie można bezpiecznie kontynuować. Kontynuować?", - L"Zapisane pliki gier mogą być uszkodzone. Czy chcesz je usunąć?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Nieprawidłowa wersja zapisu gry. W razie problemów prosimy o raport. Kontynuować?", -#else - L"Próba odczytu starszej wersji zapisu gry. Zaktualizować ten zapis i odczytać grę?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Nieprawidłowa wersja zapisu gry. W razie problemów prosimy o raport. Kontynuować?", -#else - L"Próba odczytu starszej wersji zapisu gry. Zaktualizować ten zapis i odczytać grę?", -#endif - - L"Czy na pewno chcesz nadpisać grę na pozycji %d?", - L"Chcesz odczytać grę z pozycji", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"Brak miejsca na dysku twardym. Na dysku wolne jest %d MB, a wymagane jest przynajmniej %d MB.", - - L"Zapisuję", //When saving a game, a message box with this string appears on the screen - - L"Standardowe uzbrojenie", - L"Całe mnóstwo broni", - L"Realistyczna gra", - L"Elementy S-F", - - L"Stopień trudności", - L"Platynowy tryb", //Placeholder English - - L"Bobby Ray Quality",// TODO.Translate - L"Normalne", - L"Świetne", - L"Wyśmienite", - L"Niewiarygodne", - - L"Nowy inwentarz nie działa w rozdzielczości 640x480. Aby z niego korzystać zmień rozdzielczość i spróbuj ponownie.", - L"Nowy inwentarz nie korzysta z domyślnego folderu 'Data'.", - - L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", // TODO.Translate - L"Bobby Ray Quantity", // TODO.Translate -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Poziom mapy", - L"Nie masz jeszcze żołnierzy samoobrony. Musisz najpierw wytrenować mieszkańców miast.", - L"Dzienny przychód", - L"Najmemnik ma polisę ubezpieczeniową", - L"%s nie potrzebuje snu.", - L"%s jest w drodze i nie może spać", - L"%s jest zbyt zmęczony(na), spróbuj trochę później.", - L"%s prowadzi.", - L"Oddział nie może się poruszać jeżeli jeden z najemników śpi.", - - // stuff for contracts - L"Mimo, że możesz opłacić kontrakt, to jednak nie masz gotówki by opłacić składkę ubezpieczeniową za najemnika.", - L"%s - składka ubezpieczeniowa najemnika będzie kosztować %s za %d dzień(dni). Czy chcesz ją opłacić?", - L"Inwentarz sektora", - L"Najemnik posiada zastaw na życie.", - - // other items - L"Lekarze", // people acting a field medics and bandaging wounded mercs - L"Pacjenci", // people who are being bandaged by a medic - L"Gotowe", // Continue on with the game after autobandage is complete - L"Przerwij", // Stop autobandaging of patients by medics now - L"Przykro nam, ale ta opcja jest wyłączona w wersji demo.", // informs player this option/button has been disabled in the demo - L"%s nie ma zestawu narzędzi.", - L"%s nie ma apteczki.", - L"Brak chętnych ludzi do szkolenia, w tej chwili.", - L"%s posiada już maksymalną liczbę oddziałów samoobrony.", - L"Najemnik ma kontrakt na określony czas.", - L"Kontrakt najemnika nie jest ubezpieczony", - L"Mapa", // 24 - - // Flugente: disease texts describing what a map view does TODO.Translate - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate - - // Flugente: weather texts describing what a map view does - L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"Oddział %d zauważył kogoś w sektorze %s", - L"Oddział %s zauważył kogoś w sektorze %s", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"Szkolenie oddziału samoobrony będzie kosztowało $", // telling player how much it will cost - L"Zatwierdzasz wydatek?", // asking player if they wish to pay the amount requested - L"Nie stać cię na to.", // telling the player they can't afford to train this town - L"Kontynuować szkolenie samoobrony w - %s (%s %d)?", // continue training this town? - - L"Koszt $", // the cost in dollars to train militia - L"( T/N )", // abbreviated yes/no - L"", // unused - L"Szkolenie samoobrony w %d sektorach będzie kosztowało $ %d. %s", // cost to train sveral sectors at once - - L"Nie masz %d$, aby wyszkolić samoobronę w tym mieście.", - L"%s musi mieć %d% lojalności, aby można było kontynuować szkolenie samoobrony.", - L"Nie możesz już dłużej szkolić samoobrony w mieście %s.", - L"liberate more town sectors", // TODO.Translate - - L"liberate new town sectors", // TODO.Translate - L"liberate more towns", // TODO.Translate - L"regain your lost progress", // TODO.Translate - L"progress further", // TODO.Translate - - L"recruit more rebels", // TODO.Translate -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"Jednorazowo możesz wypłacić do 20,000$.", - L"Czy na pewno chcesz wpłacić %s na swoje konto?", -}; - -STR16 gzCopyrightText[] = -{ - L"Prawa autorskie należą do (C) 1999 Sir-tech Canada Ltd. Wszelkie prawa zastrzeżone.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Dialogi", - L"Wycisz potwierdzenia", - L"Napisy", - L"Wstrzymuj napisy", - L"Animowany dym", - L"Drastyczne sceny", - L"Nigdy nie ruszaj mojej myszki!", - L"Stara metoda wyboru", - L"Pokazuj trasę ruchu", - L"Pokazuj chybione strzały", - L"Potwierdzenia Real-Time", - L"Najemnik śpi/budzi się", - L"Używaj systemu metrycznego", - L"Wyróżnij najemników", - L"Przyciągaj kursor do najemników", - L"Przyciągaj kursor do drzwi", - L"Pulsujące przedmioty", - L"Pokazuj korony drzew", - L"Smart Tree Tops", // TODO. Translate - L"Pokazuj siatkę", - L"Pokazuj kursor 3D", - L"Pokazuj szansę na trafienie", - L"Zamiana kursora granatnika", - L"Pozwól na przechwałki wrogów", // Changed from "Enemies Drop all Items" - SANDRO - L"Wysoki kąt strzałów z granatnika", - L"Pozwól na skradanie się w czasie rzeczywistym", // Changed from "Restrict extra Aim Levels" - SANDRO - L"Spacja = następny oddział", - L"Pokazuj cienie przedmiotów", - L"Pokazuj zasięg broni w polach", - L"Efekt smugowy dla poj. strzału", - L"Odgłosy padającego deszczu", - L"Pokazuj wrony", - L"Show Soldier Tooltips", - L"Automatyczny zapis", - L"Cichy Skyrider", - L"Rozszerzone Okno Opisu (EDB)", //Enhanced Description Box - L"Wymuś tryb turowy", // add forced turn mode - L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map - L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate - L"Logical Bodytypes", - L"Show Merc Ranks", // shows mercs ranks // TODO.Translate - L"Show Face gear graphics", // TODO.Translate - L"Show Face gear icons", - L"Disable Cursor Swap", // Disable Cursor Swap // TODO.Translate - L"Quiet Training", // Madd: mercs don't say quotes while training // TODO.Translate - L"Quiet Repairing", // Madd: mercs don't say quotes while repairing // 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"Allow Zombies", // Flugente Zombies - L"Enable inventory popups", // the_bob : enable popups for picking items from sector inv // TODO.Translate - L"Mark Remaining Hostiles", // TODO.Translate - L"Show LBE Content", // TODO.Translate - L"Invert mouse wheel", // TODO.Translate - L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances // TODO.Translate - L"Show enemy location", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--DEBUG OPTIONS--", // an example options screen options header (pure text) - L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. // TODO.Translate - L"Reset ALL game options", // failsafe show/hide option to reset all options - L"Do you really want to reset?", // a do once and reset self option (button like effect) - L"Debug Options in other builds", // allow debugging in release or mapeditor - L"DEBUG Render Option group", // an example option that will show/hide other options - L"Render Mouse Regions", // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Jeśli WŁĄCZONE, w grze pojawiać się będą dialogi.", - - //Mute Confirmation - L"Jeśli WŁĄCZONE, głosowe potwierdzenia postaci zostaną wyciszone.", - - //Subtitles - L"Jeśli WŁĄCZONE, pojawiać się będą napisy podczas rozmów z innymi postaciami.", - - //Key to advance speech - L"Jeśli WŁĄCZONE, napisy pojawiające się podczas dialogów będą znikały dopiero po kliknięciu.", - - //Toggle smoke animation - L"Jeśli WŁĄCZONE, dym z granatów będzie animowany. Może spowolnić działanie gry.", - - //Blood n Gore - L"Jeśli WŁĄCZONE, pokazywane będą bardzo drastyczne sceny.", - - //Never move my mouse - L"Jeśli WŁĄCZONE, kursor nie będzie automatycznie ustawiał się nad pojawiającymi się okienkami dialogowymi.", - - //Old selection method - L"Jeśli WŁĄCZONE, wybór postaci będzie działał tak jak w poprzednich częściach gry.", - - //Show movement path - L"Jeśli WŁĄCZONE, będziesz widział trasę ruchu w trybie Real-Time.", - - //show misses - L"Jeśli WŁĄCZONE, będzie mógł obserwować w co trafiają twoje kule gdy spudłujesz.", - - //Real Time Confirmation - L"Jeśli WŁĄCZONE, każdy ruch najemnika w trybie Real-Time będzie wymagał dodatkowego, potwierdzającego kliknięcia.", - - //Sleep/Wake notification - L"Jeśli WŁĄCZONE, wyświetlana będzie informacja, że najemnik położył się spać lub wstał i wrócił do pracy.", - - //Use the metric system - L"Jeśli WŁĄCZONE, gra będzie używała systemu metrycznego.", - - //Highlight Mercs - L"Gdy jest włączony, podświetla najemnika (niewidoczny dla wrogów).\nPrzełącz w grze za pomocą (|G)", - - //Smart cursor - L"Jeśli WŁĄCZONE, kursor będzie automatycznie ustawiał się na najemnikach gdy znajdzie się w ich pobliżu.", - - //snap cursor to the door - L"Jeśli WŁĄCZONE, kursor będzie automatycznie ustawiał się na drzwiach gdy znajdzie się w ich pobliżu.", - - //glow items - L"Jeśli WŁĄCZONE, przedmioty będą pulsować. ( |C|t|r|l+|A|l|t+|I )", - - //toggle tree tops - L"Jeśli WŁĄCZONE, wyświetlane będą korony drzew. ( |T )", - - //smart tree tops - L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate - - //toggle wireframe - L"Jeśli WŁĄCZONE, wyświetlane będą zarysy niewidocznych ścian. ( |C|t|r|l+|A|l|t+|W )", - - L"Jeśli WŁĄCZONE, kursor ruchu wyświetlany będzie w 3D. (|H|o|m|e)", - - // Options for 1.13 - L"Jeśli WŁĄCZONE, kursor będzie pokazywał szansę na trafienie.", - L"Jeśli WŁĄCZONE, seria z granatnika będzie używała kursora serii z broni palnej.", - L"Jeśli WŁĄCZONE, to wrogowie będą czasami komentować pewne akcje.", // Changed from Enemies Drop All Items - SANDRO - L"Jeśli WŁĄCZONE, granatniki będą strzelały pod wysokim kątem. (|A|l|t+|Q)", - L"Jeśli WŁĄCZONE, zapobiega przejściu do trybu turowego po zauważeniu wroga podczas skradania. Aby wymusić tryb turowy z tą opcją aktywną naciśnij |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO - L"Jeśli WŁĄCZONE, |S|p|a|c|j|a wybiera kolejny oddział.", - L"Jeśli WŁĄCZONE, pokazywane będą cienie przedmiotów.", - L"Jeśli WŁĄCZONE, zasięg broni będzie wyświetlany w polach.", - L"Jeśli WŁĄCZONE, pojedynczy strzał będzie z efektem pocisku smugowego", - L"Jeśli WŁĄCZONE, będziesz słyszał padający deszcz.", - L"Jeśli WŁĄCZONE, w grze pojawiać się będą wrony.", - L"Jeśli WŁĄCZONE, wskazanie postaci wroga kursorem i naciśnięcie A|l|t ukaże okienko informacji dodatkowych.", - 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, gra będzie obciążała procesor w mniejszym stopniu.", - 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+|T).", // add forced turn mode - L"When ON, the Strategic Map will be colored differently based on exploration.", - L"Jeśli WŁĄCZONE, zastępuje starą animację pocisku nową.", - L"When ON, mercenary body graphic can change along with equipped gear.", // 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 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, 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, zombies will spawn. Beware!", // allow zombies // TODO.Translate - L"When ON, enables popup boxes that appear when you left click on empty merc inventory slots while viewing sector inventory in mapscreen.", // TODO.Translate - L"When ON, approximate locations of the last enemies in the sector are highlighted.", // TODO.Translate - L"When ON, show the contents of an LBE item, otherwise show the regular NAS interface.", // TODO.Translate - L"When ON, inverts mouse wheel directions.", // TODO.Translate - L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate - L"When ON, shows last known enemy location.", //TODO.Translate - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Wymuś wszystkie oczekiwane dostawy od Bobby Ray's.", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", - L"Kliknij by naprawić błędy w ustawieniach gry.", // failsafe show/hide option to reset all options - L"Kliknij by naprawić błędy w ustawieniach gry.", // a do once and reset self option (button like effect) - L"Udostępnia tryb debugowania w edytorze map oraz wersji końcowej.", // allow debugging in release or mapeditor - L"Przełącz na tryb wyświetlania/ukrycia opcji renderowania debugowego.", // an example option that will show/hide other options - L"Wyświetl wymiary wokół kursora myszy.", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"TOPTION_LAST_OPTION", -}; - -STR16 gzGIOScreenText[] = -{ - L"POCZĄTKOWE USTAWIENIA GRY", -#ifdef JA2UB - L"Dialogi Manuela", - L"Wył.", - L"Wł.", -#else - L"Styl gry", - L"Realistyczny", - L"S-F", -#endif - L"Platynowy", //Placeholder English - L"Dostępny arsenał", - L"Mnóstwo", - L"Standardowo", - L"Stopień trudności", - L"Nowicjusz", - L"Doświadczony", - L"Ekspert", - L"SZALONY", - L"Start", // TODO.Translate - L"Anuluj", - L"Zapis gry", - L"W dowolny momencie", - L"Człowiek z żelaza", - L"Nie działa w wersji demo", - L"Jakość zasobów Bobby'ego Ray'a", - L"Normalna", - L"Świetna", - L"Wyśmienita", - L"Niewiarygodna", - L"System ekwipunku / dodatków", - L"Nieużywane", - L"Nieużywane", - L"Wczytaj grę MP", - L"POCZĄTKOWE USTAWIENIA GRY (Tylko te po stronie serwera będą w użyciu)", - // Added by SANDRO - L"System zdolności", - L"Stary", - L"Nowy", - L"Maks. liczba IMP", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Polegli wrogowie pozostawiają cały ekwipunek", - L"Wył.", - L"Wł.", -#ifdef JA2UB - L"Tex i John", - L"Losowo", - L"Obaj", -#else - L"Liczba terrorystów", - L"Losowo", - L"Wszyscy", -#endif - L"Ukryte składowiska broni", - L"Losowe", - L"Wszystkie", - L"Przyrost dostępności przedmiotów", - L"Bardzo wolny", - L"Wolny", - L"Normalny", - L"Szybki", - L"Bardzo szybki", - - L"Stary / Stary", - L"Nowy / Stary", - L"Nowy / Nowy", - - // Squad Size - L"Maks. liczebność oddziału", - L"6", - L"8", - L"10", - //L"Faster Bobby Ray Shipments", - L"Manipulacja ekwipunkiem kosztuje punkty akcji", - - L"Nowy system szans trafienia", - L"Ulepszony system przerwań", - L"Historie najemników", - L"System pożywienia", - L"Wielkość zasobów Bobby'ego Ray'a", - - // anv: extra iron man modes - L"Człowiek z żeliwa", - L"Człowiek ze stali", -}; - -STR16 gzMPJScreenText[] = -{ - L"MULTIPLAYER", - L"Dołącz", - L"Uruchom serwer", - L"Anuluj", - L"Odśwież", - L"Nazwa gracza", - L"IP Serwera", - L"Port", - L"Nazwa serwera", - L"# Plrs", // ?? if plrs=players then "# graczy" - L"Wersja", - L"Typ rozgrywki", - L"Ping", - L"Musisz podać nazwę gracza", - L"Musisz podać odpowiedni numer IP serwera. (np. 84.114.195.239).", - L"Musisz podać odpowiedni port serwera pomiędzy 1 i 65535.", -}; - -// TODO.Translate -STR16 gzMPJHelpText[] = -{ - L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", - L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", // TODO.Translate - - L"HOST", - L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", - L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", - L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", - L"Click on 'Host' to host a new Multiplayer Game.", - - L"JOIN", - L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", - L"Enter the external IP and the Port number from the host.", - L"Click on 'Join' to join an already hosted Multiplayer Game.", -}; - -// TODO.Translate -STR16 gzMPHScreenText[] = -{ - L"HOST GAME", - L"Start", - L"Cancel", - L"Server Name", - L"Game Type", - L"Deathmatch", - L"Team-Deathmatch", - L"Co-Operative", - L"Maximum Players", - L"Maximum Mercs", - L"Merc Selection", - L"Merc Hiring", - L"Hired by Player", - L"Starting Cash", - L"Allow Hiring Same Merc", - L"Report Hired Mercs", - L"Bobby Rays", - L"Sector Starting Edge", - L"You must enter a server name", - L"", - L"", - L"Starting Time", - L"", - L"", - L"Weapon Damage", - L"", - L"Timed Turns", - L"", - L"Enable Civilians in CO-OP", - L"", - L"Maximum Enemies in CO-OP", - L"Synchronize Game Directory", - L"MP Sync. Directory", - L"You must enter a file transfer directory.", - L"(Use '/' instead of '\\' for directory delimiters.)", - L"The specified synchronisation directory does not exist.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"Yes", - L"No", - // Starting Time - L"Morning", - L"Afternoon", - L"Night", - // Starting Cash - L"Low", - L"Medium", - L"Heigh", - L"Unlimited", - // Time Turns - L"Never", - L"Slow", - L"Medium", - L"Fast", - // Weapon Damage - L"Very low", - L"Low", - L"Normal", - // Merc Hire - L"Random", - L"Normal", - // Sector Edge - L"Random", - L"Selectable", - // Bobby Ray / Hire same merc - L"Disable", - L"Allow", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Austin", //Austin, Texas, USA - L"Bagdad", //Baghdad, Iraq (Suddam Hussein's home) - L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"Hong Kong", //Hong Kong, Hong Kong - L"Bejrut", //Beirut, Lebanon (Middle East) - L"Londyn", //London, England - L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) - L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. - L"Metavira", //The island of Metavira was the fictional location used by JA1 - L"Miami", //Miami, Florida, USA (SE corner of USA) - L"Moskwa", //Moscow, USSR - L"Nowy Jork", //New York, New York, USA - L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Paryż", //Paris, France - L"Trypolis", //Tripoli, Libya (eastern Mediterranean) - L"Tokio", //Tokyo, Japan - L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Na pewno? Wartość zero oznacza brak jakichkolwiek umiejętności w tej dziedzinie.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"( Maks. 8 znaków )", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"Analizuję", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"Dziękujemy, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Głos", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"Śmierć w akcji", - L"Zwolnienie", - L"Inny", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Personel", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Gra wstrzymana", - L"Wznów grę (|P|a|u|s|e)", - L"Wstrzymaj grę (|P|a|u|s|e)", -}; - - -STR16 pMessageStrings[] = -{ - L"Zakończyć grę?", - L"OK", - L"TAK", - L"NIE", - L"ANULUJ", - L"NAJMIJ", - L"LIE", - L"Brak opisu", //Save slots that don't have a description. - L"Gra zapisana.", - L"Gra zapisana.", - L"QuickSave", //10 The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"Dzień", - L"Najemn.", - L"Wolna pozycja", //An empty save game slot - L"Demo", //Demo of JA2 - L"Debug", //State of development of a project (JA2) that is a debug build - L"", //Release build for JA2 - L"strz/min", //20 Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"min", //Abbreviation for minute. - L"m", //One character abbreviation for meter (metric distance measurement unit). - L"kul", //Abbreviation for rounds (# of bullets) - L"kg", //Abbreviation for kilogram (metric weight measurement unit) - L"lb", //Abbreviation for pounds (Imperial weight measurement unit) - L"Strona główna", //Home as in homepage on the internet. - L"USD", //Abbreviation to US dollars - L"N/D", //Lowercase acronym for not applicable. - L"Tymczasem", //Meanwhile - L"%s przybył(a) do sektora %s%s", //30 Name/Squad has arrived in sector A9. Order must not change without notifying - //SirTech - L"Wersja", - L"Wolna pozycja na szybki zapis", - L"Ta pozycja zarezerwowana jest na szybkie zapisy wykonywane podczas gry kombinacją klawiszy ALT+S.", - L"Otwarte", - L"Zamknięte", - L"Brak miejsca na dysku twardym. Na dysku wolne jest %s MB, a wymagane jest przynajmniej %s MB.", - L"Najęto - %s z A.I.M.", - L"%s złapał(a) %s", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s has taken %s.", // TODO.Translate - L"%s nie posiada wiedzy medycznej",//40 'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"Integralność gry została narażona na szwank.", - L"BŁĄD: Wyjęto płytę CD", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"Nie ma miejsca, żeby stąd oddać strzał.", - - //Can't change stance due to objects in the way... - L"Nie można zmienić pozycji w tej chwili.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Upuść", - L"Rzuć", - L"Podaj", - - L"%s przekazano do - %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"Brak wolnego miejsca, by przekazać %s do - %s.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" dołączono]", // 50 - - //Cheat modes - L"Pierwszy poziom lamerskich zagrywek osiągnięty", - L"Drugi poziom lamerskich zagrywek osiągnięty", - - //Toggling various stealth modes - L"Oddział ma włączony tryb skradania się.", - L"Oddział ma wyłączony tryb skradania się.", - L"%s ma włączony tryb skradania się.", - L"%s ma wyłączony tryb skradania się.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Dodatkowe siatki włączone.", - L"Dodatkowe siatki wyłączone.", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Nie można wyjść do góry z tego poziomu...", - L"Nie ma już niższych poziomów...", // 60 - L"Wejście na %d poziom pod ziemią...", - L"Wyjście z podziemii...", - - L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Automatyczne centrowanie ekranu wyłączone.", - L"Automatyczne centrowanie ekranu włączone.", - L"Kursor 3D wyłączony.", - L"Kursor 3D włączony.", - L"Oddział %d aktywny.", - L"%s - Nie stać cię by wypłacić jej/jemu dzienną pensję w wysokości %s.", //first %s is the mercs name, the seconds is a string containing the salary - L"Pomiń", // 70 - L"%s nie może odejść sam(a).", - L"Utworzono zapis gry o nazwie SaveGame249.sav. W razie potrzeby zmień jego nazwę na SaveGame01..10. Wtedy będzie można go odczytać ze standardowego okna odczytu gry.", - L"%s wypił(a) trochę - %s", - L"Przesyłka dotarła do Drassen.", - L"%s przybędzie do wyznaczonego punktu zrzutu (sektor %s) w dniu %d, około godziny %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival - L"Lista historii zaktualizowana.", - L"Seria z granatnika używa kursora celowania (dostępny ogień rozproszony)", //L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", BYŁO -->>L"Grenade Bursts - Using Targeting Cursor (Spread fire enabled)", - L"Seria z granatnika używa kursora trajektorii (dostępny ogień rozproszony)", //L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", BYŁO -->L"Grenade Bursts - Using Trajectory Cursor (Spread fire disabled)", - L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO - L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO - L"Granatniki strzelają pod standardowymi kątami", //L"Grenade Launchers fire at standard angles", BYŁo->>L"Grenade Launchers - Fire at standard angles", - L"Granatniki strzelają pod wysokimi kątami", //L"Grenade Launchers fire at higher angles", BYŁo-->>L"Grenade Launchers - Fire at high angles", - // forced turn mode strings - L"Forced Turn Mode", - L"Normal turn mode", - L"Exit combat mode", - L"Forced Turn Mode Active, Entering Combat", - L"Automatyczny zapis został pomyślnie wykonany.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. - L"Client", - - L"Nie możesz używać nowego trybu wyposażenia i nowego systemu dodatków jednocześnie.", - - // TODO.Translate - L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID - L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save - L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"End-Turn Save #", // 95 // The text for the tactical end turn auto save - L"Saving Auto Save #", // 96 // The message box, when doing auto save - L"Saving", // 97 // The message box, when doing end turn auto save - L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save - L"This Slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) // TODO.Translate - L"Lock mouse cursor within game window boundary.", // 104 - L"Release mouse cursor from game window boundary.", // 105 - L"Move in Formation ON", // TODO.Translate - L"Move in Formation OFF", - L"Artificial Merc Light ON", // TODO.Translate - L"Artificial Merc Light OFF", - L"Squad %s active.", //TODO.Translate - L"%s smoked %s.", - L"Activate cheats?", - L"Deactivate cheats?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"OK", - L"W górę", - L"Wybierz wszystko", - L"W dół", - L"Anuluj", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s jest za daleko, aby poddać się leczeniu.", - L"Lekarze nie mogli opatrzyć wszystkich rannych.", -}; - -// TODO.Translate -STR16 pMilitiaButtonsHelpText[] = -{ - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", - L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", - L"Distribute available militia equally among all sectors", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Zajrzyj do A.I.M. i zatrudnij kilku najemników (*Wskazówka* musisz otworzyć laptopa)", // to inform the player to hired some mercs to get things going -#ifdef JA2UB - L"Jeśli chcesz już udać się do Tracony, kliknij przycisk kompresji czasu, w prawym dolnym rogu ekranu.", // to inform the player to hit time compression to get the game underway -#else - L"Jeśli chcesz już udać się do Arulco, kliknij przycisk kompresji czasu, w prawym dolnym rogu ekranu.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Błąd. Brakuje pliku, lub jest on uszkodzony. Gra zostanie przerwana.", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"Przeglądanie poczty", - L"Przeglądanie stron internetowych", - L"Przeglądanie plików i załączników pocztowych", - L"Rejestr zdarzeń", - L"Informacje o członkach oddziału", - L"Finanse i rejestr transakcji", - L"Koniec pracy z laptopem", - - //Bottom task bar icons (if they exist): - L"Masz nową pocztę", - L"Masz nowe pliki", - - //Bookmarks: - L"Międzynarodowe Stowarzyszenie Najemników", - L"Bobby Ray's - Internetowy sklep z bronią", - L"Instytut Badań Najemników", - L"Bardziej Ekonomiczne Centrum Rekrutacyjne", - L"McGillicutty's - Zakład pogrzebowy", - L"United Floral Service", - L"Brokerzy ubezpieczeniowi", - //New Bookmarks - L"", - L"Encyklopedia", - L"Briefing Room", - L"Campaign History", // TODO.Translate - L"Mercenaries Love or Dislike You", // TODO.Translate - L"World Health Organization", - L"Kerberus - Experience In Security", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services", // TODO.Translate - L"Controlled factories", // TODO.Translate -}; - - -STR16 gzHelpScreenText[] = -{ - L"Zamknij okno pomocy", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"Trwa walka. Najemników można wycofać tylko na ekranie taktycznym.", - L"W|ejdź do sektora, aby kontynuować walkę.", - L"|Automatycznie rozstrzyga walkę.", - L"Nie można automatycznie rozstrzygnąć walki, gdy atakujesz.", - L"Nie można automatycznie rozstrzygnąć walki, gdy wpadasz w pułapkę.", - L"Nie można automatycznie rozstrzygnąć walki, gdy walczysz ze stworzeniami w kopalni.", - L"Nie można automatycznie rozstrzygnąć walki, gdy w sektorze są wrodzy cywile.", - L"Nie można automatycznie rozstrzygnąć walki, gdy w sektorze są dzikie koty.", - L"TRWA WALKA", - L"W tym momencie nie możesz się wycofać.", -}; - -STR16 gzMiscString[] = -{ - L"Żołnierze samoobrony kontynuują walkę bez pomocy twoich najemników...", - L"W tym momencie tankowanie nie jest konieczne.", - L"W baku jest %d%% paliwa.", - L"Żołnierze Deidranny przejęli całkowitą kontrolę nad - %s.", - L"Nie masz już gdzie zatankować.", -}; - -STR16 gzIntroScreen[] = -{ - L"Nie odnaleziono filmu wprowadzającego", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s słyszy %s DŹWIĘK dochodzący z %s.", - L"%s słyszy %s ODGŁOS RUCHU dochodzący z %s.", - L"%s słyszy %s ODGŁOS SKRZYPNIĘCIA dochodzący z %s.", - L"%s słyszy %s PLUSK dochodzący z %s.", - L"%s słyszy %s ODGŁOS UDERZENIA dochodzący z %s.", - L"%s słyszy %s ODGŁOS STRZAŁU dochodzący z %s.", // anv: without this, all further noise notifications were off by 1! // TODO.Translate - L"%s słyszy %s WYBUCH dochodzący z %s.", - L"%s słyszy %s KRZYK dochodzący z %s.", - L"%s słyszy %s ODGŁOS UDERZENIA dochodzący z %s.", - L"%s słyszy %s ODGŁOS UDERZENIA dochodzący z %s.", - L"%s słyszy %s ŁOMOT dochodzący z %s.", - L"%s słyszy %s TRZASK dochodzący z %s.", - L"", // anv: placeholder for silent alarm // TODO.Translate - L"%s słyszy czyjś %s GŁOS dochodzący z %s.", // anv: report enemy taunt to player // TODO.Translate -}; - -// TODO.Translate -STR16 pTauntUnknownVoice[] = -{ - L"Nieznany głos", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Sortuj według kolumny Imię (|F|1)", - L"Sortuj według kolumny Przydział (|F|2)", - L"Sortuj według kolumny Sen (|F|3)", - L"Sortuj według kolumny Lokalizacja (|F|4)", - L"Sortuj według kolumny Cel podróży (|F|5)", - L"Sortuj według kolumny Wyjazd (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"Błąd 404", - L"Nie odnaleziono strony.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"Ostatnie dostawy", - L"Zamówienie nr ", - L"Ilość przedmiotów", - L"Zamówiono:", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"Game Internals Programmer", // Chris Camfield - L"Co-designer/Writer", // Shaun Lyng - L"Strategic Systems & Editor Programmer", //Kris \"The Cow Rape Man\" Marnes - L"Producer/Co-designer", // Ian Currie - L"Co-designer/Map Designer", // Linda Currie - L"Artist", // Eric \"WTF\" Cheng - L"Beta Coordinator, Support", // Lynn Holowka - L"Artist Extraordinaire", // Norman \"NRG\" Olsen - L"Sound Guru", // George Brooks - L"Screen Designer/Artist", // Andrew Stacey - L"Lead Artist/Animator", // Scot Loving - L"Lead Programmer", // Andrew \"Big Cheese Doddle\" Emmons - L"Programmer", // Dave French - L"Strategic Systems & Game Balance Programmer", // Alex Meduna - L"Portraits Artist", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(wciąż uczy się interpunkcji)", // Shaun Lyng - L"(\"Skończone, tylko to poskładam\")", //Kris \"The Cow Rape Man\" Marnes - L"(robię się na to za stary)", // Ian Currie - L"(i pracuje nad Wizardry 8)", // Linda Currie - L"(zmuszony pod bronią do końcowych testów jakości produktu)", // Eric \"WTF\" Cheng - L"(Opuścił nas dla Stowarzyszenia na Rzecz Rozsądnych Wynagrodzeń. Ciekawe czemu... )", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(miłośnik zespołu Dead Head i jazzu)", // Andrew Stacey - L"(tak naprawdę na imię ma Robert)", // Scot Loving - L"(jedyna odpowiedzialna osoba)", // Andrew \"Big Cheese Doddle\" Emmons - L"(teraz może wrócić do motocrossu)", // Dave French - L"(ukradziony z projektu Wizardry 8)", // Alex Meduna - L"(zrobił przedmioty i ekrany wczytywania!!)", // Joey \"Joeker\" Whelan", -}; - -STR16 sRepairsDoneString[] = -{ - L"%s skończył(a) naprawiać własne wyposażenie", - L"%s skończył(a) naprawiać broń i ochraniacze wszystkich członków oddziału", - L"%s skończył(a) naprawiać wyposażenie wszystkich członków oddziału", - L"%s skończył(a) naprawiać ciężkie wyposażenie wszystkich członków oddziału", - L"%s skończył(a) naprawiać średnie wyposażenie wszystkich członków oddziału", - L"%s skończył(a) naprawiać lekkie wyposażenie wszystkich członków oddziału", - L"%s skończył(a) naprawiać strój LBE wszystkich członków oddziału", - L"%s finished cleaning everyone's guns.", // TODO.Translate -}; - -STR16 zGioDifConfirmText[]= -{ - L"Wybrano opcję NOWICJUSZ. Opcja ta jest przeznaczona dla niedoświadczonych graczy, lub dla tych, którzy nie mają ochoty na długie i ciężkie walki. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie Nowicjusz?", - L"Wybrano opcję DOŚWIADCZONY. Opcja ta jest przenaczona dla graczy posiadających już pewne doświadczenie w grach tego typu. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie Doświadczony?", - L"Wybrano opcję EKSPERT. Jakby co, to ostrzegaliśmy cię. Nie obwiniaj nas, jeśli wrócisz w plastikowym worku. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie Ekspert?", - L"Wybrano opcję SZALONY. OSTRZEŻENIE: Nie obwiniaj nas, jeśli wrócisz w malutkich kawałeczkach... Deidranna NAPRAWDę skopie ci tyłek. Mocno. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie SZALONY?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"%S - nie odnaleziono pliku...", - - //1-5 - L"Robot nie może opuścić sektora bez operatora.", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"Nie można teraz kompresować czasu. Poczekaj na fajerwerki!", - - //'Name' refuses to move. - L"%s nie chce się przesunąć.", - - //%s a merc name - L"%s ma zbyt mało energii, aby zmienić pozycję.", - - //A message that pops up when a vehicle runs out of gas. - L"%s nie ma paliwa i stoi w sektorze %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"GÓRY", - L"DOŁU", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"Żaden z twoich najemników nie posiada wiedzy medycznej.", - L"Brak środków medycznych, aby założyć rannym opatrunki.", - L"Zabrakło środków medycznych, aby założyć wszystkim rannym opatrunki.", - L"Żaden z twoich najemników nie potrzebuje pomocy medycznej.", - L"Automatyczne zakładanie opatrunków rannym najemnikom.", - L"Wszystkim twoim najemnikom założono opatrunki.", - - //14 -#ifdef JA2UB - L"Tracona", -#else - L"Arulco", -#endif - - L"(dach)", - - L"Zdrowie: %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d vs. %d", - - L"%s - brak wolnych miejsc!", //(ex "The ice cream truck is full") - - L"%s nie potrzebuje pierwszej pomocy lecz opieki lekarza lub dłuższego odpoczynku.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"%s dostał(a) w nogi i upadł(a)!", - //Name can't speak right now. - L"%s nie może teraz mówić.", - - //22-24 plural versions - L"%d zielonych żołnierzy samoobrony awansowało na weteranów.", - L"%d zielonych żołnierzy samoobrony awansowało na regularnych żołnierzy.", - L"%d regularnych żołnierzy samoobrony awansowało na weteranów.", - - //25 - L"Przełącznik", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"%s dostaje świra!", - - //27-28 - //Messages why a player can't time compress. - L"Niebezpiecznie jest kompresować teraz czas, gdyż masz najemników w sektorze %s.", - L"Niebezpiecznie jest kompresować teraz czas, gdyż masz najemników w kopalni zaatakowanej przez robale.", - - //29-31 singular versions - L"1 zielony żołnierz samoobrony awansował na weterana.", - L"1 zielony żołnierz samoobrony awansował na regularnego żołnierza.", - L"1 regularny żołnierz samoobrony awansował na weterana.", - - //32-34 - L"%s nic nie mówi.", - L"Wyjść na powierzchnię?", - L"(Oddział %d)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s naprawił(a) najemnikowi - %s, jego/jej - %s", - - //36 - L"DZIKI KOT", - - //37-38 "Name trips and falls" - L"%s potyka się i upada", - L"Nie można stąd podnieść tego przedmiotu.", - - //39 - L"Żaden z twoich najemników nie jest w stanie walczyć. Żołnierze samoobrony sami będą walczyć z robalami.", - - //40-43 - //%s is the name of merc. - L"%s nie ma środków medycznych!", - L"%s nie posiada odpowiedniej wiedzy, aby kogokolwiek wyleczyć!", - L"%s nie ma narzędzi!", - L"%s nie posiada odpowiedniej wiedzy, aby cokolwiek naprawić!", - - //44-45 - L"Czas naprawy", - L"%s nie widzi tej osoby.", - - //46-48 - L"%s - przedłużka lufy jego/jej broni odpada!", - L"W tym sektorze może być maks. %d instruktorów szkolących samoobronę.", - L"Na pewno?", - - //49-50 - L"Kompresja czasu", - L"Pojazd ma pełny zbiornik paliwa.", - - //51-52 Fast help text in mapscreen. - L"Kontynuuj kompresję czasu (|S|p|a|c|j|a)", - L"Zatrzymaj kompresję czasu (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s odblokował(a) - %s", - L"%s odblokował(a) najemnikowi - %s, jego/jej - %s", - - //55 - L"Nie można kompresować czasu, gdy otwarty jest inwentarz sektora.", - - L"Nie odnaleziono płyty nr 2 Jagged Alliance 2.", - - L"Przedmioty zostały pomyślnie połączone.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Bieżący/Maks. postęp: %d%%/%d%%", - - L"Eskortować Johna i Mary?", - - // 60 - L"Przełącznik aktywowany.", - - L"%s: dodatki do pancerza zostały zniszczone!", - L"%s wystrzelił(a) %d pocisk(ów) więcej niż to było zamierzone!", - L"%s wystrzelił(a) 1 pocisk(ów) więcej niż to było zamierzone!", - - L"You need to close the item description box first!", // TODO.Translate - - L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 // TODO.Translate -}; - -STR16 gzCWStrings[] = -{ - L"Wezwać posiłki do %s z przyległych sektorów?", -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Miejsce: %d\n", - L"%s|Jasność: %d / %d\n", - L"%s|Odległość do |Celu: %d\n", - L"%s|I|D: %d\n", - L"%s|Rozkazy: %d\n", - L"%s|Postawa: %d\n", - L"%s|Aktualne |P|A: %d\n", - L"%s|Aktualne |Zdrowie: %d\n", - L"%s|Current |Breath: %d\n", // TODO.Translate - L"%s|Current |Morale: %d\n", - L"%s|Current |S|hock: %d\n",// TODO.Translate - L"%s|Current |S|uppression Points: %d\n",// TODO.Translate - // Full info - L"%s|Hełm: %s\n", - L"%s|Kamizelka: %s\n", - L"%s|Getry ochronne: %s\n", - // Limited, Basic - L"|Pancerz: ", - L"hełm", - L"kamizelka", - L"getry ochronne", - L"używane", - L"brak pancerza", - L"%s|N|V|G: %s\n", - L"brak NVG", - L"%s|Maska |Gazowa: %s\n", - L"brak maski gazowej", - L"%s|Pozycja |Głowy |1: %s\n", - L"%s|Pozycja |Głów |2: %s\n", - L"\n(w plecaku) ", - L"%s|Broń: %s ", - L"brak broni", - L"rewolwer", - L"SMG", - L"karabin", - L"MG", - L"strzelba", - L"nóż", - L"broń Ciężka", - L"brak hełmu", - L"brak kamizelki", - L"brak getrów ochronnych", - L"|Pancerz: %s\n", - // Added - SANDRO - L"%s|Umiejętność 1: %s\n", - L"%s|Umiejętność 2: %s\n", - L"%s|Umiejętność 3: %s\n", - // Additional suppression effects - sevenfm // TODO.Translate - L"%s|A|Ps lost due to |S|uppression: %d\n", - L"%s|Suppression |Tolerance: %d\n", - L"%s|Effective |S|hock |Level: %d\n", - L"%s|A|I |Morale: %d\n", -}; - -STR16 New113Message[] = -{ - L"Nadeszła burza.", - L"Burza skończyła się.", - L"Rozpadał się deszcz.", - L"Deszcz przestał padać.", - L"Uważaj na snajperów...", - L"Ogień dławiący!", - L"BRST", - L"AUTO", - L"GL", - L"GL BRST", - L"GL AUTO", - L"UB", // TODO.Translate - L"UBRST", - L"UAUTO", - L"BAYONET", - L"Snajper!", - L"Nie można podzielić pieniędzy z powodu przedmiotu na kursorze.", - L"Przybycie nowych rekrutów zostało przekierowane do sektora %s , z uwagi na to, że poprzedni punkt zrzutu w sektorze %s jest zajęty przez wroga.", - L"Przedmiot usunięty", - L"Usunięto wszystkie przedmioty tego typu", - L"Przedmiot sprzedany", - L"Wszystkie przedmioty tego typu sprzedane", - L"Sprawdź swoje gogle", - // Real Time Mode messages - L"W trakcie walki", - L"Brak wrogów w zasięgu wzroku", - L"Wyłączone skradanie w czasie rzeczywistym", - L"Włączone skradanie w czasie rzeczywistym", - //L"Spotkano wroga! (Ctrl + x by uruchomić tryb turowy)", - L"Spotkano wroga!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s dokonał(a) udanej kradzieży!", - L"%s nie posiada wystarczającej liczby PA by ukraść wszystkie zaznaczone przedmioty.", - L"Chcesz operować %s zanim użyjesz bandaży? (możesz przywrócić około %i punktów zdrowia.)", - L"Chcesz operować %s zanim użyjesz bandaży? (możesz przywrócić około %i punktów zdrowia.)", - L"Do you wish to perform surgeries first? (%i patient(s))", // TODO.Translate - L"Czy chcesz najpierw operować pacjenta?", - L"Apply first aid automatically with surgeries or without them?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"operacja na %s zakończona.", - L"%s otrzymuje trafienie w korpus i traci punkt maksymalnego zdrowia!", - L"%s otrzymuje trafienie w korpus i traci %d punktów maksymalnego zdrowia!", - L"%s is blinded by the blast!", // TODO.Translate - L"%s odzyskał(a) utracony punkt %s", - L"%s odzyskał(a) %d utraconych punktów %s", - L"Twoja umiejętność zwiadowcy uchroniła cię przed zasadzką!", - L"Twoja umiejętność zwiadowcy pozwoliła ci ominąć stado krwawych kotów!", - L"%s został trafiony w pachwinę i pada na ziemię!", - ////////////////////////////////////////////////////////////////////////////// - L"Warning: enemy corpse found!!!", - L"%s [%d rnds]\n%s %1.1f %s", - L"Insufficient AP Points! Cost %d, you have %d.", // TODO.Translate - L"Hint: %s", // TODO.Translate - L"Player strength: %d - Enemy strength: %6.0f", // TODO.Translate Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE - - L"Cannot use skill!", // TODO.Translate - L"Cannot build while enemies are in this sector!", - L"Cannot spot that location!", - L"Incorrect GridNo for firing artillery!", - L"Radio frequencies are jammed. No communication possible!", - L"Radio action failed!", - L"Not enough mortar shells in sector to start a barrage!", - L"No signal shell item found in Items.xml!", - L"No High-Explosive shell item found in Items.xml!", - L"No mortars found, cannot commence barrage!", - L"Already jamming signal, no need to do so again!", - L"Already listening for nearby sounds, no need to do so again!", - L"Already trying to spot, no need to do so again!", - L"Already scanning for jam signals, no need to do so again!", - L"%s could not apply %s to %s.", - L"%s orders reinforcements from %s.", - L"%s radio set is out of energy.", - L"a working radio set", - L"a binocular", - L"patience", - L"%s's shield has been destroyed!", // TODO.Translate - L" DELAY", // TODO.Translate - L"Yes*", - L"Yes", - L"No", - L"%s applied %s to %s.", // TODO.Translate -}; - -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s kuli się ze strachu!", - L"%s został przyparty do muru!", - L"%s oddał(a) więcej strzałów niż zamierzał(a)!", - L"Nie możesz szkolić samoobrony w tym sektorze.", - L"Samoobrona znajduje %s.", - L"Nie można szkolić samoobrony, gdy wróg jest w sektorze!", - // 6 - 10 - L"%s Brak odpowiednich umiejętności dowodzenia do szkolenia samoobrony.", - L"W tym sektorze jest dozwolonych nie więcej niż %d instruktorów samoobrony.", - L"W %s oraz okolicy nie ma miejsca dla nowych oddziałów samoobrony!", - L"Musisz mieć conajmniej %d jednostek samoobrony w każdym z %s wyzwolonych sektorów zanim będziesz mógł szkolić tu nowe oddziały.", - L"Nie możesz obsadzić fabryki dopóki w okolicy są wrogie jednostki!", // not sure - // 11 - 15 - L"%s zbyt niska inteligencja do obsadzenia tej fabryki.", - L"%s posiada już maksymalną liczbę personelu.", - L"Obsadzenie tej fabryki będzie kosztować $%d za godzinę. Chcesz kontynuować?", - L"Nie posiadasz funduszy potrzebnych na opłacenie wszystkich fabryk. Zapłacono $%d, ale wciąż pozostało $%d do zapłaty. Tubylcy są zaniepokojeni.", - L"Nie posiadasz funduszy potrzebnych na opłacenie wszystkich fabryk. Pozostało $%d do zapłaty. Tubylcy są zaniepokojeni.", - // 16 - 20 - L"Zalegasz $%d dla Fabryki i nie posiadasz funduszy umożliwiających spłatę długu!", - L"Zalegasz $%d dla Fabryki!. Nie możesz przydzielić tego najemnika do fabryki do momentu spłaty długu.", - L"Zalegasz $%d dla Fabryki!. Czy chcesz spłacić ten dług?", - L"Niedostępny w tym sektorze", - L"Dzienne wydatki", - // 21 - 25 - L"Brak funduszy do opłacenia wykazanych jednostek samoobrony! %d jednostek opuszcza oddziały i wraca do domu.", - L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 - L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 - L"To merge two items during combat, you must pick them both up first.", // HAM 5 -}; - -// TODO.Translate -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"No available adjustments", - L"%s was split into several parts.", - L"%s was split into several parts. Check %s's inventory for the resulting items.", - L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", - L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", - L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", - // 6 - 10 - L"Split Crate into Inventory", - L"Split into %d-rd Mags", - L"%s was split into %d Magazines containing %d rounds each.", - L"%s was split into %s's inventory.", - L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", - L"Instant mode", // TODO.Translate - L"Delayed mode", - L"Instant mode (%d AP)", - L"Delayed mode (%d AP)", -}; - -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Niniejszym informuję, iż w związku z dotychczasowymi osiągnięciami Gastona, opłata za jego usługi została podniesiona. Osobiście, nie jestem tymfaktem zaskoczony. ± ± Speck T. Kline ± ", - // Stogie: Text from Line 43 in Email.edt - L"Informujemy, iż od chwili obecnej cena za usługi świadczone przez pana Stoggiego wzrosła w związku ze wzrostem jego umiejętności. ± ± Speck T. Kline ± ", - // Tex: Text from Line 45 in Email.edt - L"Informujemy, iż nabyte przez Texa doświadczenie upoważnia go do wyższego wynagrodzenia, z tego względu jego wynagrodzenie zostało zwiększone w celu lepszego odzwierciedlenia jego wartości. ± ± Speck T. Kline ± ", - // Biggens: Text from Line 49 in Email.edt - L"Proszę o zwrócenie uwagi, iż w związku ze wzrostem jakości usług świadczonych przez pana Biggens`a jego pensja także uległa podwyższeniu. ± ± Speck T. Kline ± ", -}; - -// TODO.Translate -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk - L"PD z Serwera AIM: Wiadomość od - Victor Kolesnikov", - L"Hej, tu Monk. Dostałem Twoją wiadomość. Już jestem z powrotem - jeśli chcesz się skontaktować. ± ± Zadzwoń. ±", - - // Brain - L"PD z Serwera AIM: Wiadomość od - Janno Allik", - L"Jestem już gotów do przyjęcia nowego zadania. Wszystko musi mieć swoją porę. ± ± Janno Allik ±", - - // Scream - L"PD z Serwera AIM: Wiadomość od - Lennart Vilde", - L"Lennart Vilde jest obecnie dostępny! ±", - - // Henning - L"PD z Serwera AIM: Wiadomość od - Henning von Branitz", - L"Otrzymałem Twoją wiadomość, dziękuję. Jeśli chcesz omówić możliwość zatrudnienia, skontaktuj się ze mną za pośrednictwem strony AIM . ± ± Na razie! ± ± Henning von Branitz ±", - - // Luc - L"PD z Serwera AIM: Wiadomość od - Luc Fabre", - L"Otrzymałem wiadomość, merci! Chętnie rozważę Twoje propozycje. Wiesz, gdzie mnie znaleźć. ± ± Oczekuję odpowiedzi ±", - - // Laura - L"PD z Serwera AIM: Wiadomość od - Laura Colin", - L"Pozdrowienia! Dobrze, że zostawiłeś wiadomość. Sprawa wygląda interesująco. ± ± Zajrzyj jeszcze raz do AIM. Chętnie poznam więcej informacji. ± ± Wyrazy szacunku ± ± Dr Laura Colin ±", - - // Grace - L"PD z Serwera AIM: Wiadomość od - Graziella Girelli", - L"Chciałeś się ze mną skontaktować, ale Ci się nie udało.± ± Miałam spotkanie rodzinne, na pewno to rozumiesz. Teraz mam już dość swojej rodziny i bardzo się ucieszę, jeśli skontaktujesz się ze mną ponownie za pośrednictwem witryny AIM . ± ± Ciao! ±", - - // Rudolf - L"PD z Serwera AIM: Wiadomość od - Rudolf Steiger", - L"Wiesz, ile telefonów odbieram każdego dnia? Co drugi baran myśli, że może do mnie wydzwaniać. ± ± W każdym razie już jestem, jeśli masz dla mnie coś ciekawego. ±", - - // TODO.Translate - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"FW from AIM Server: Message about merc availability", - L"I got your message. Waiting for your call. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Snajper: Sokole oczy! Możesz odstrzelić skrzydła muszce ze stu jardów. ± ", - // Camouflage - L"Kamuflaż: Przy tobie nawet krzaki wyglądają na sztuczne! ± ", - // SANDRO - new strings for new traits added - // Ranger - L"Strażnik: To ty jesteś tym z pustyni Teksasu! ± ", - // Gunslinger - L"Rewolwerowiec: Z pistoletem lub dwoma, możesz być tak śmiercionośny jak Billy Kid! ± ", - // Squadleader - L"Przywódca: Urodzony dowódca i szef, jesteś naprawdę grubą rybą bez kitu! ± ", - // Technician - L"Mechanik: Naprawa sprzętu, rozbrajanie pułapek, podkładanie bomb, to twoja działka! ± ", - // Doctor - L"Chirurg: Możesz przeprowadzić skomplikowaną operację przy użyciu scyzoryka i gumy do żucia! ± ", - // Athletics - L"Atleta: Kondycji mógłby ci pozazdrościć niejeden maratończyk! ± ", - // Bodybuilding - L"Budowa ciała: Ta ogromna muskularna postać, której nie sposób przeoczyć, to w rzeczy samej ty! ± ", - // Demolitions - L"Materiały wybuchowe: Potrafisz wysadzić miasto przy użyciu standardowego wyposażenia kuchni! ± ", - // Scouting - L"Zwiadowca: Nic nie umknie twej uwadze! ± ", - // Covert ops - L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate - // Radio Operator - L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate - // Survival - L"Survival: Nature is a second home to you. ± ", // TODO.Translate -}; - -STR16 NewInvMessage[] = -{ - L"Nie możesz teraz podnieść plecaka.", - L"Nie ma miejsca, aby położyć tutaj plecak", - L"Nie znaleziono plecaka", - L"Zamek błyskawiczny działa tylko podczas walki.", - L"Nie możesz się przemieszczać, gdy zamek plecaka jest aktywny.", - L"Na pewno chcesz sprzedać wszystkie przedmioty z tego sektora?", - L"Na pewno chcesz skasować wszystkie przedmioty z tego sektora?", - L"Nie można wspinać się z plecakiem", - L"All backpacks dropped", // TODO.Translate - L"All owned backpacks picked up", - L"%s drops backpack", - L"%s picks up backpack", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Inicjacja serwera RakNet...", - L"Serwer wł., oczekiwanie na połączenie", - L"Musisz teraz połączyć swojego klienta z serwerem, wciskając 2", - L"Serwer już działa", - L"Wł. nie powiodło się. Przerwanie.", - // 5 - L"%d/%d klientów gotowych na tryb realtime.", - L"Serwer rozłączony i wył.", - L"Serwer nie działa", - L"Ładowanie klientów, czekaj.", - L"Nie można zmieniać miejsc zrzutu po starcie serwera.", - // 10 - L"Wysłano '%S' pliku - 100/100", - L"Zakończono wysyłanie plików do '%S'.", - L"Rozpoczęto wysyłanie plików do '%S'.", - L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", // TODO.Translate -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Inicjacja klienta RakNet…", - L"Łączenie z IP: %S ...", - L"Otrzymano ustawienia:", - L"Jesteś już połączony.", - L"Jesteś już w trakcie łączenia", - // 5 - L"Klient #%d - '%S' wynajął '%s'.", - L"Klient #%d - '%S' has hired another merc.", - L"Gotowy! Wszystkich gotowych - %d/%d.", - L"Nie jesteś już gotowy. Gotowych - %d/%d.", - L"Początek bitwy...", - // 10 - L"Klient #%d - '%S' jest gotów. Gotowych - %d/%d.", - L"Klient #%d - '%S' nie jest już gotowy. Gotowych - %d/%d", - L"Jesteś gotów. Czekanie na pozostałych… Naciśnij OK., jeśli już nie jesteś gotów.", - L"Zaczynajmy już!", - L"Klient A musi działać, by zacząć grę.", - // 15 - L"Nie można zacząć. Brak najemników.", - L"Czekaj na zgodę serwera, by odblokować laptopa…", - L"Przerwano", - L"Koniec przerwania", - L"Położenie siatki myszy:", - // 20 - L"X: %d, Y: %d", - L"Numer siatki %d", - L"Właściwości serwera", - L"Ustaw ręcznie stopień nadrzędności serwera: ‘1’ – wł.laptop/rekrut.; ‘2’- wł./ładuj poziom; ‘3’ – odblok. UI; ‘4’ – kończy rozmieszczanie", - L"Sektor=%s, MaxKlientów=%d, Max Najem=%d, Tryb_Gry=%d, TenSamNaj=%d, Mnożnik obraż.=%f, TuryCzas=%d, Sek/ruch=%d, Dis BobbyRay=%d, Wył Aim/Merc Ekwip=%d, Wył morale=%d, Test=%d", - // 25 - L"", - L"Nowe połączenie Client #%d - '%S'.", - L"Drużyna: %d.",//not used any more - L"'%s' (klient %d - '%S') zabity przez '%s' (client %d - '%S')", - L"Wyrzucono #%d - '%S'", - // 30 - L"Zacząć turę dla klientów. #1: , #2: %S, #3: %S, #4: %S", - L"Początek tury dla #%d", - L"Żądanie trybu realtime…", - L"Zmieniono w tryb realtime.", - L"Błąd. Coś poszło nie tak przy przełączaniu.", - // 35 - L"Odblokować laptopy? (Czy gracze są już podłączeni?)", - L"Serwer odblokował laptopa. Zaczynaj rekrutować!", - L"Przerywający", - L"Nie możesz zmieniać strefy zrzutu, jeśli nie jesteś serwerem gry.", - L"Odrzuciłeś ofertę poddania się, gdyż grasz w trybie Multiplayer.", - // 40 - L"Wszyscy twoi ludzie są martwi!", - L"Tryb obserwatora wł..", - L"Zostałeś pokonany!", - L"Wspinanie wyłączone w MP", - L"Wynajęto '%s'", - // 45 - L"Nie możesz zmienić mapy w trakcie dokonywania zakupu", - L"Mapa zmieniona na '%s'", - L"Klient '%s' rozłączony, usuwanie z gry", - L"Zostałeś rozłączony, powrót do głównego menu", - L"Próba połączenia zakończona niepowodzeniem, kolejna poróba za 5 sekund, %i prób pozostało...", - //50 - L"Próba połączenia zakończona niepowodzeniem, rezygnacja z kolejnych prób...", - L"Nie możesz rozpocząć gry dopóki nie są podłączeni inni gracze", - L"%s : %s", - L"Wyślij do wszystkich", - L"Wyślij do sprzymierzeńców", - // 55 - L"Nie można dołączyć do gry. Ta gra już się rozpoczęła", - L"%s (drużyna): %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"Pobrano wszystkie pliki z serwera.", - L"Pobrano '%S' z serwera", - L"Rozpoczęto pobieranie '%s' z serwera", - L"Nie można rozpocząć gry dopóki wszyscy nie zakończą pobierania plików z serwera", - L"Ten serwer przed rozpoczęciem gry wymaga pobrania zmodyfikowanych plików, czy chcesz kontynuować", - // 65 - L"Naciśnij 'Gotowe' aby przejść do ekranu taktycznego", - L"Nie można się połączyć ponieważ twoja wersja %S różni się od wersji %S na serwerze.", - L"Zabiłeś wrogą jednostkę", - L"Nie można dołączyć do gry. Ta gra już się rozpoczęła", - L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", - // 70 // TODO.Translate - L"Could not save received file '%S'", - L"%s's bomb was disarmed by %s", - L"You loose, what a shame", // All over red rover - L"Spectator mode disabled", - L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", - // 75 - L"Team %s is wiped out.", - L"Client failed to start. Terminating.", - L"Client disconnected and shutdown.", - L"Client is not running.", - L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", // TODO.Translate - // 80 - L"AI's turn - %d left", // TODO.Translate -}; - -STR16 gszMPEdgesText[] = -{ - L"Pn", //- Północ - L"W", //- Wschód - L"Pd", //- Południe - L"Z", //- Zachód - L"C", // "C" - Centralny -}; - -STR16 gszMPTeamNames[] = -{ - L"Foxtrot", - L"Bravo", - L"Delta", - L"Charlie", - L"N/D", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Tryb gry: ", - L"Gracze: ", - L"Mercs each: ", - L"Nie możesz zmienić początkowego wierzchołka dopóki laptop jest odblokowany.", - L"Nie możesz zmieniać drużyn dopóki laptop jest odblokowany.", - L"Losowi najemnicy: ", - L"T", //if "Y" means Yes here - L"Poziom trudności:", - L"Wersja serwera:", -}; - -STR16 gzMPSScreenText[] = -{ - L"Tabela punktów", - L"Kontynuuj", - L"Anuluj", - L"Gracz", - L"Zabitych", - L"Liczba zgonów", - L"Armia królowej", - L"Trafienia", - L"Strzały chybione", - L"Celność", - L"Obrażenia zadane", - L"Obrażenia otrzymane", - L"Czekaj na połączenie z serwerem aby nacisnąć 'Kontynuuj'", -}; - -STR16 gzMPCScreenText[] = -{ - L"Anuluj", - L"Łączenie z serwerem", - L"Pobieranie ustawień serwera", - L"Pobieranie plików", - L"Naciśnij 'ESC' aby anulować lub 'Y' aby wejść na chat", - L"Naciśnij 'ESC'aby anuować", - L"Gotowe", -}; - -STR16 gzMPChatToggleText[] = -{ - L"Wyślij do wszystkich", - L"Wyślij do sprzymierzeńców", -}; - -STR16 gzMPChatboxText[] = -{ - L"Multiplayer Chat", - L"Chat: Naciśnij 'ENTER' aby wysłać lub 'ESC' by anulować", -}; - -// Following strings added - SANDRO -STR16 pSkillTraitBeginIMPStrings[] = -{ - // Odnośnie starych umiejętności - L"Na następnej stronie, wybierzesz umiejętności dotyczące twojej specjalizacji jako najemnika. Nie można wybrać więcej niż dwóch różnych umiejętności, albo jednej w stopniu eksperta.", - - //L"Możesz także wybrać jedną, albo nawet nie wybrać żadnej umiejętności, co da ci bonus do liczby punktów atrybutów. Zauważ, że elektronika i oburęczność nie mogą być wybrane w stopniu eksperta.", - - // TODO.Translate (added Camouflage) - L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", - - // Odnośnie nowych/pomniejszych umiejętności - L"Następny etap dotyczy wybierania umiejętności dotyczących twojej specjalizacji jako najemnika. Na pierwszej stronie, możesz wybrać do %d głównych umiejętności, które reprezentują twoją rolę w zespole. Druga strona to lista pomniejszych cech, które reprezentują twoją osobowość.", - L"Wybranie więcej niż %d jednocześnie jest niemożliwe. Oznacza to, że jeżeli nie wybierzesz żadnych głównych umiejętności, możesz wybrać %d pomniejsze cechy. Jeśli wybierzesz 2 główne umiejętności (albo jedną zaawansowaną), możesz wybrać tylko %d cechę dodatkową...", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"Proszę, wybierz swoje atrybuty fizyczne zgodnie z twoimi prawdziwymi umiejętnościami. Nie możesz podnieść żadnego z powyższych wyników.", - L"Przegląd atrybutów i umiejętności I.M.P..", - L"Punkty bonusowe.:", - L"Poziom startowy", - // New strings for new traits - L"Na następnej stronie wybierzesz swoje atrybuty fizyczne i umiejętności. 'Atrybuty' to: zdrowie, zwinność, zręczność, siła oraz inteligencja. Atrybuty nie mogą być niższe niż %d.", - L"Reszta to 'umiejętności', w przeciwieństwie do atrybutów, mogą być ustawione na zero, co oznacza, że nie masz w nich kompletnie żadnej wprawy.", - L"Wszystkie punkty są na początku ustawione na minimum. Zauważ, że niektóre atrybuty są ustawione na wartościach, co ma związek z wcześniej wybranymi umiejętnościami. Nie możesz ustawić ich niżej.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"Analiza charakteru I.M.P.", - L"Analiza charakteru to następny krok w tworzeniu twojego profile. Na pierwszej stronie zostanie ci przedstawiona lista cech charakteru do wybrania. Domyślamy się, że możesz identyfikować się z większą ich ilością, jednak będziesz mógł wybrać tylko jedną. Wybierz taką, z którą czujesz się najbardziej związany.", - L"Druga strona przedstawia listę niepełnosprawności, na które możesz cierpieć. Jeśli cierpisz na jedną z nich, wybierz ją (wierzymy, że każdy ma tylko jedną taką niepełnosprawność). Bądź szczery, ponieważ to ważne, by poinformować potencjalnych pracodawców o twoim faktycznym stanie zdrowia.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Normalny", - L"Przyjazny", - L"Samotnik", - L"Optymista", - L"Pesymista", - L"Agresywny", - L"Arogancki", - L"Gruba ryba", - L"Dupek", - L"Tchórz", - L"Nastawienie I.M.P.-a", -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Normalny", - L"Towarzyski", - L"Samotnik", - L"Optymista", - L"Asertywny", - L"Intelektualista", - L"Prymityw", - L"Agresywny", - L"Flegmatyk", - L"Nieustraszony", - L"Pacyfista", - L"Podstępny", - L"Gwiazdor", - L"Coward", // TODO.Translate - L"Cechy charakteru I.M.P.-a", -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"Kolory i sylwetka ciała I.M.P.-a", - L"Kolory I.M.P.", - L"Proszę wybrać odpowiednie kolory skóry, włosów i ubrań oraz swoją sylwetkę ciała.", - L" Proszę wybrać odpowiednie kolory skóry, włosów i ubrań.", - L"Zaznacz, by używać alternatywnego sposobu trzymania broni.", - L"\n(Uwaga: będziesz potrzebować do tego dużej siły.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Kolor włosów", - L"Kolor skóry", - L"Kolor koszulki", - L"Kolor spodni", - L"Normalne ciało", - L"Duże ciało", -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"Bez niepełnosprawności", - L"Nie lubi ciepła", - L"Nerwowy", - L"Klaustrofobik", - L"Nie umie pływać", - L"Boi się owadów", - L"Zapominalski", - L"Psychol", - L"Deaf", - L"Shortsighted", - L"Hemophiliac", // TODO.Translate - L"Fear of Heights", - L"Self-Harming", - L"Niepełnosprawności I.M.P.-a", -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] =// TODO.Translate -{ - L"We bet you're glad this isn't voicemail.", - L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"You'll be screwed if you ever lose your glasses.", - L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate -{ - L"Are you SURE this is the right job for you?", - L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate -{ - L"Let's just say you are a grounded person.", - L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Might want to make sure your knives are always clean.", - L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", -}; - -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s nie ma wystarczającej siły, by tego dokonać", - L"%s nie ma wystarczającej zręczności, by tego dokonać", - L"%s nie ma wystarczającej zwinności, by tego dokonać", - L"%s nie ma dość zdrowia, by tego dokonać", - L"%s nie ma wystarczającej inteligencji, by tego dokonać", - L"%s nie ma wystarczającej celności, by tego dokonać", - // 6 - 10 - L"%s nie ma wystarczających um. medycznych, by tego dokonać.", - L"%s nie ma wystarczających um. mechaniki, by tego dokonać.", - L"%s nie ma wystarczających um. dowodzenia, by tego dokonać.", - L"%s nie ma wystarczających um. mat. wyb., by tego dokonać.", - L"%s nie ma wystarczającego doświadczenia, by tego dokonać.", - // 11 - 15 - L"%s ma za małe morale, by tego dokonać", - L"%s nie ma wystarczająco dużo energii, by tego dokonać", - L"W %s jest zbyt mała lojalność. Mieszkańcy nie pozwolą ci tego zrobić.", - L"W %s pracuje już zbyt wiele osób.", - L"W %s zbyt wiele osób wykonuje już to polecenie.", - // 16 - 20 - L"%s nie znajduje przedmiotów do naprawy.", - L"%s traci nieco %s, pracując w sektorze %s", - L"%s traci nieco %s, pracując w %s w sektorze %s", - L"%s odnosi rany, pracując w sektorze %s i wymaga natychmiastowej pomocy medycznej!", - L"%s odnosi rany, pracując w %s w sektorze %s i wymaga natychmiastowej pomocy medycznej!", - // 21 - 25 - L"%s odnosi rany, pracując w sektorze %s. Nie wygląda to jednak bardzo poważnie.", - L"%s odnosi rany, pracując w %s w sektorze %s. Nie wygląda to jednak bardzo poważnie.", - L"Mieszkańcy miasta %s wydają się poirytowani tym, że %s przebywa w ich okolicy.", - L"Mieszkańcy miasta %s wydają się poirytowani tym, że %s pracuje w %s.", - L"%s po swych działaniach w sektorze %s powoduje spadek poparcia w regionie.", - // 26 - 30 - L"%s swymi działaniami w %s w %s powoduje spadek poparcia w regionie.", - L"%s jest w stanie upojenia alkoholowego", - L"%s ciężko choruje w sektorze %s i przechodzi w stan spoczynku", - L"%s cięzko choruje i nie może dalej pracować w %s w %s", - L"%s doznaje ciężkich obrażeń w sektorze %s", // %s was injured in sector %s. // <--- This is a log message string. - // 31 - 35 - L"%s doznaje ciężkich obrażeń w sektorze %s", //<--- This is a log message string. - L"Obecni więźniowie zdają sobie sprawę, iż %s jest najemnikiem.", - L"%s jest obecnie powszechnie znany jako kapuś. Odczekaj przynajmniej %d godzin(ę).", - - -}; - -STR16 gzFacilityRiskResultStrings[]= -{ - L"Siła", - L"Zwinność", - L"Zręczność", - L"Inteligencja", - L"Zdrowie", - L"Umiejętności strzeleckie", //short: "Um. strzeleckie" - // 5-10 - L"Umiejętność dowodzenia", //short: "Um. dowodzenia" - L"Znajomość mechaniki", //short: "Zn. mechaniki" - L"Wiedza medyczna", - L"Znajomość materiałów wybuchowych", //short: "Zn. mat. wybuchowych" -}; - -STR16 gzFacilityAssignmentStrings[]= -{ - L"AMBIENT", - L"Staff", - L"Eat",// TODO.Translate - L"Odpoczywa" - L"Naprawa ekwipunku", - L"Naprawa %s", - L"Naprawa Robota", - // 6-10 - L"Lekarz", - L"Pacjent", - L"Trening siły", - L"Trening zręczności", - L"Trening zwinności", - L"Trening zdrowia", - // 11-15 - L"Trening um. strzeleckich", - L"Trening wiedzy medycznej", - L"Trening zn. mechaniki", - L"Trening dowodzenia", - L"Trening zn. mat. wybuchowych", - // 16-20 - L"Uczeń siła", - L"Uczeń zręczność", - L"Uczeń zwinność", - L"Uczeń zdrowie", - L"Uczeń um. strzeleckie", - // 21-25 - L"Uczeń wiedza medyczna", - L"Uczeń zn. mechaniki", - L"Uczeń um. dowodzenia", - L"Uczeń zn. mat. wybuchowych", - L"Instruktor siła", - // 26-30 - L"Instruktor zręczność", - L"Instruktor zwinność", - L"Instruktor zdrowie", - L"Instruktor um. strzeleckie", - L"Instruktor wiedza medyczna", - // 30-35 - L"Instruktor zn. mechaniki", - L"Instruktor um. dowodzenia", - L"Instruktor zn. mat. wybuchowych", - L"Interrogate Prisoners", // added by Flugente TODO.Translate - L"Undercover Snitch", // TODO.Translate - // 36-40 - L"Spread Propaganda", - L"Spread Propaganda", // spread propaganda (globally) - L"Gather Rumours", - L"Command Militia", // militia movement orders -}; - -STR16 Additional113Text[]= -{ - L"Jagged Alliance 2 v1.13 trybie okienkowym wymaga głębi koloru 16-bitowego.", - L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate - L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", // TODO.Translate - // TODO.Translate - // WANNE: Savegame slots validation against INI file - L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", - L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -STR16 sEnemyTauntsFireGun[]= -{ - L"Masz cwelu!", - L"A masz!", - L"Nażryj się!", - L"Jesteście moi!", - L"Zdychaj!", - L"Boisz się kurwo?", - L"To dopiero zaboli!", - L"Dawaj skurwielu!", - L"Dawaj! Nie mam całego dnia!", - L"Chodź do tatusia!", - L"Zaraz pójdziesz do piachu!", - L"Wracasz do domu w dębowej jesionce frajerze!", - L"Chcesz się zabawić?" - L"Trzeba było zostać w domu kurwo." - L"Ciota!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"Urządzamy grilla.", - L"Mam dla ciebie prezent.", - L"Bum!", - L"Uśmiech!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Łap!", - L"A masz!", - L"Przyszła kryska na Matyska!", - L"To dla ciebie!", - L"Hahahaha!", - L"Łap świnio!", - L"Uwielbiam to.", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"Zedrę ci skalp!", - L"Chodź do tatusia.", - L"Pochwal się flakami!", - L"Porżnę cię na kawałki!", - L"Skurwysyny!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"Jesteśmy po uszy w gównie...", - L"Idź do wojska -mówili. Nie ma chuja, nie po to!", - L"Mam już dość.", - L"O mój Boże.", - L"Za to mi nie płacą.", - L"Nie wytrzymam tego!", - L"Wrócę z kumplami.", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"Słyszałem to!", - L"Kto tam?", - L"Co to było?", - L"Hej! Co do...", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"Są tutaj!", - L"Czas zacząć zabawę." - L"Liczyłem na to, że to się nie stanie.", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"Au!", - L"Uł...", - L"To... boli!", - L"Skurwysyny!", - L"Pożałujecie... tego.", - L"Co do..!", - L"Teraz się... wkurwiłem.", - -}; - -// TODO.Translate -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Da'ffff...!", - L"Oh my God!", - L"Holy crap!", - L"Enemy!!!", - L"Alert! Alert!", - L"There is one!", - L"Attack!", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Description", - L"General", - L"Advanced", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Desc", - L"Gen", - L"Adv", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Primary", - L"Secondary", - L"AP Costs", - L"Burst / Autofire", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Prop.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", - L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", - L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", - L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", - L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", - L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", - L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", - L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", - L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Property icon (mouse-over to reveal name).", - L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", - L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", - L"Bonus/penalty given while |p|r|o|n|e.", - L"Bonus/penalty given", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y", - L"|D|a|m|a|g|e", - L"|R|a|n|g|e", - L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", // TODO.Translate - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s", - L"|R|e|l|i|a|b|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", - L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", - L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", - L"|A|P|s |t|o |R|e|a|d|y", - L"|A|P|s |t|o |A|t|t|a|c|k", - L"|A|P|s |t|o |B|u|r|s|t", - L"|A|P|s |t|o |A|u|t|o|f|i|r|e", - L"|A|P|s |t|o |R|e|l|o|a|d", - L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", - L"", // No longer used! - L"|T|o|t|a|l |R|e|c|o|i|l", // TODO.Translate - L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", - L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", - L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", - L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", // TODO.Translate - L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", - L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", - L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", - L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", - L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", - L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nThe minimum range at which a scope can provide it's aimBonus.", - L"\n \nTo hit modifier granted by laser sights.", - L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", - L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", - L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", - L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", - L"", // No longer used! - L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. // TODO.Translate - L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", - L"|C|o|v|e|r|a|g|e", - L"|D|e|g|r|a|d|e |R|a|t|e", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", - L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", - L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|A|r|m|o|r |P|i|e|r|c|i|n|g", - L"|B|u|l|l|e|t |T|u|m|b|l|e", - L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate - L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", // TODO.Translate - L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", - L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", - L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", // TODO.Translate - L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", // TODO.Translate - L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", // TODO.Translate -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|D|a|m|a|g|e", - L"|S|t|u|n |D|a|m|a|g|e", - L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 // TODO.Translate - L"|B|l|a|s|t |R|a|d|i|u|s", - L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", - L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", - L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", - L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", - L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", - L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", - L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", - L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", - L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", - L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", - // HEADROCK HAM 5: Fragmentation // TODO.Translate - L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", - L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", - L"|F|r|a|g|m|e|n|t |R|a|n|g|e", - // HEADROCK HAM 5: End Fragmentations - L"|L|o|u|d|n|e|s|s", - L"|V|o|l|a|t|i|l|i|t|y", - L"|R|e|p|a|i|r |E|a|s|e", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", - L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", - L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 // TODO.Translate - L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", - L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", - L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", - L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", - L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", - L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", - L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", - L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", - L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", - // HEADROCK HAM 5: Fragmentation // TODO.Translate - L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", - L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", - L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", - L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", - L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|R|e|p|a|i|r |E|a|s|e", - L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", - L"|V|o|l|u|m|e", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", - L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", - L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|T|r|a|c|e|r |A|m|m|o", - L"|A|n|t|i|-|T|a|n|k |A|m|m|o", - L"|I|g|n|o|r|e|s |A|r|m|o|r", - L"|A|c|i|d|i|c |A|m|m|o", - L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", - L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", - L"|W|a|t|e|r|p|r|o|o|f", - L"|E|l|e|c|t|r|o|n|i|c", - L"|G|a|s |M|a|s|k", - L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", - L"|C|a|n |P|i|c|k |L|o|c|k|s", - L"|C|a|n |C|u|t |W|i|r|e|s", - L"|C|a|n |S|m|a|s|h |L|o|c|k|s", - L"|M|e|t|a|l |D|e|t|e|c|t|o|r", - L"|R|e|m|o|t|e |T|r|i|g|g|e|r", - L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", - L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", - L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", - L"|T|o|o|l |K|i|t", - L"|T|h|e|r|m|a|l |O|p|t|i|c|s", - L"|X|-|R|a|y |D|e|v|i|c|e", - L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", - L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", - L"|F|i|r|s|t |A|i|d |K|i|t", - L"|M|e|d|i|c|a|l |K|i|t", - L"|L|o|c|k |B|o|m|b", - L"|D|r|i|n|k",// TODO.Translate - L"|M|e|a|l", - L"|A|m|m|o |B|e|l|t", - L"|A|m|m|o |V|e|s|t", - L"|D|e|f|u|s|a|l |K|i|t", // TODO.Translate - L"|C|o|v|e|r|t |I|t|e|m", // TODO.Translate - L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", - L"|M|a|d|e |o|f |M|e|t|a|l", - L"|S|i|n|k|s", - L"|T|w|o|-|H|a|n|d|e|d", - L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", - L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate - L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", - L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 - L"|S|h|i|e|l|d", // TODO.Translate - L"|C|a|m|e|r|a", // TODO.Translate - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate - L"|B|l|o|o|d |B|a|g", // 44 - L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", - L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", - L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", - L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", - L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", - L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", - L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", - L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", - L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", - L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", - L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate - L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", - L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate - L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", - L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", - L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", - L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", - L"\n \nThis item contains various tools that can\nbe used to repair other items.\n \nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", //JMich_SkillsModifiers: need to be followed by a number // TODO.Translate - L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", - L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", - L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", - L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", - L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", - L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", - L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", - L"\n \nThis item will still your thirst\nif you drink it.",// TODO.Translate - L"\n \nThis item will still your hunger\nif you eat it.", - L"\n \nWith this ammo belt you can\nfeed someone else's MG.", - L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", - L"\n \nThis item improves your trap disarm chance by ", // TODO.Translate - L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", // TODO.Translate - L"\n \nThis item cannot be damaged.", - L"\n \nThis item is made of metal.\nIt takes less damage than other items.", - L"\n \nThis item sinks when put in water.", - L"\n \nThis item requires both hands to be used.", - L"\n \nThis item will block your iron sights\nso you cannot use them.", - L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate - L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", - L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", - L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate - L"\n \nYou can take photos with this.", // TODO.Translate - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate - L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", - L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", - L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", - L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", - L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", - L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", - L"|R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", - L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", - L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", - L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", - L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", - L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", - L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", - L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", - L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", - L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", - L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", - L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", - L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", - L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", - L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", - L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", - L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", - L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", - L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", - L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", - L"|T|u|n|n|e|l |V|i|s|i|o|n", - L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", - L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", - L"|T|o|-|H|i|t |B|o|n|u|s", - L"|A|i|m |B|o|n|u|s", - L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", // TODO.Translate - L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", - L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", - L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", - L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", - L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate - L"|D|i|r|t |M|o|d|i|f|i|e|r", // TODO.Translate - L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r",// TODO.Translate - L"|F|o|o|d| |P|o|i|n|t|s",// TODO.Translate - L"|D|r|i|n|k |P|o|i|n|t|s",// TODO.Translate - L"|P|o|r|t|i|o|n |S|i|z|e",// TODO.Translate - L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r",// TODO.Translate - 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 - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", - L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", - L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", - L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", - L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", - L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", - L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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 \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", - L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate - L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", - L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", - L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", - L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", - L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", // TODO.Translate - L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate - L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", // TODO.Translate - L"\n \nAmount of energy in kcal.\n \nHigher is better.", // TODO.Translate - L"\n \nAmount of water in liter.\n \nHigher is better.", // TODO.Translate - 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"", - 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 - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", - L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", - L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", - L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", - L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", - L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", - L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", - L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", - L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", - L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", - L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", - L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", - L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", - L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", - L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", - L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", - L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", - L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", - L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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 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 \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 be damaged more easily.", - L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"SINGLE", - L"AP", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// TODO.Translate -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"Spakowano amunicję do skrzyń w sektorze %c%d.", - L"Usunięto dodatki z przedmiotów w sektorze %c%d.", - L"Rozładowano amunicję z broni w sektorze %c%d.", - L"Poukładano i scalono przedmioty w sektorze %c%d.", - // Bob: new strings for emptying LBE items - L"Rozładowano LBE w sektorze %c%d.", - L"Wyrzucono %i przedmiot(ów) z %s", // Bunch of stuff removed from LBE item %s - L"Nie można nic wyjąć z %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"Rozładowano %s.", // LBE item %s contained stuff and was emptied - L"Nie udało się rozładować %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"Utracona zawartość %s!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Show all", - L"Guns", - L"Ammo", - L"Explosives", - L"Melee Weapons", - L"Armor", - L"LBE", - L"Kits", - L"Misc. Items", - L"Hide all", -}; - -STR16 gzMercCompare[] = -{ - L"???", - L"Base opinion:", - - L"Dislikes %s %s", - L"Likes %s %s", - - L"Strongly hates %s", - L"Hates %s", // 5 - - L"Deep racism against %s", - L"Racism against %s", - - L"Cares deeply about looks", - L"Cares about looks", - - L"Very sexist", // 10 - L"Sexist", - - L"Dislikes other background", - L"Dislikes other backgrounds", - - L"Past grievances", - L"____", // 15 - L"/", - L"* Opinion is always in [%d; %d]", // TODO.Translate -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = // TODO.Translate -{ - L"Temperature is ", - L"very low", - L"low", - L"medium", - L"high", - L"very high", - L"dangerous", - L"CRITICAL", - L"DRAMATIC", - L"unknown", - L"." -}; - -// TODO.Translate -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"Food is ", - L"fresh", - L"good", - L"ok", - L"stale", - L"shabby", - L"rotting", - L"." -}; - -// TODO.Translate -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Pvt. ", //ExpLevel 1 - L"Pfc. ", //ExpLevel 2 - L"Cpl. ", //ExpLevel 3 - L"Sgt. ", //ExpLevel 4 - L"Lt. ", //ExpLevel 5 - L"Cpt. ", //ExpLevel 6 - L"Maj. ", //ExpLevel 7 - L"Lt.Col. ", //ExpLevel 8 - L"Col. ", //ExpLevel 9 - L"Gen. " //ExpLevel 10 -}; - -//Ja25 UB - -STR16 gzNewLaptopMessages[]= -{ - L"Zapytaj o naszą specjalną ofertę", - L"Temporarily Unavailable", - L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Odległość od celu (w polach): %d, Jasność = %d/%d", - L"Nadajnik został podłączony do twojego laptopa.", - L"Nie możesz zatrudnić %s(a)", - L"Na określony czas, poniższe honorarium pokryje koszt całej misji razem z wyposażeniem zamieszczonym poniżej.", - L"Zatrudnij %s(a) już teraz i weź udział w naszej promocji 'jedno honorarium pokrywa wszystko'. Ponadto w tej niewiarygodnej ofercie cały ekwipunek najemnika otrzymasz za darmo.", - L"Honorarium", - L"Ktoś jest w sektorze...", - //L"Zasięg broni (w polach): %d, Szansa na trafienie: %d procent", - L"Pokaż osłonę", - L"Zasięg wzroku", - L"Nowi rekruci nie mogą tam przybyć.", - L"Dopóki twój laptop będzie bez nadajnika, nie będziesz mógł zatrudniać nowych członków zespołu. Możliwe, że to odpowiedni moment by odczytać zapisany stan gry lub zacząć grać od nowa!", - L"%s słyszy dźwięk zgniatanego metalu dochodzący spod ciała Jerry'ego. Niestety zabrzmiało to jak dźwięk zgniatanej anteny twojego laptopa.", //the %s is the name of a merc. @@@ Modified - L"Po przejrzeniu notatki pozostawionej przez podkomendanta Morrisa, %s zauważa pewną możliwość. Notatka zawiera koordynaty potrzebne do wystrzelenia pocisków w stronę różnych miast w Arulco. Są na niej również współrzędne, z których pociski te zostaną wystrzelone.", - L"Przyglądając się panelowi kontrolnemu, %s spostrzega, że liczby można zamienić tak, by pociski zniszczyły tę placówkę. %s musi znaleźć drogę ucieczki. Winda zdaje się być najszybszym rozwiązaniem...", - L"Grasz w trybie CZŁOWIEKA Z ŻELAZA i nie możesz zapisywać gry, gdy wróg jest w sektorze.", // @@@ new text - L"(Nie można zapisywać gry podczas walki)", //@@@@ new text - L"Kampania ma więcej niż 30 postaci.", // @@@ new text - L"Nie można odnaleźć kampanii.", // @@@ new text - L"Kampania: Standardowa ( %S )", // @@@ new text - L"Kampania: %S", // @@@ new text - L"Wybrałeś kampanię %S. Ta kampania została stworzona przez fanów gry. Czy jesteś pewien, że chcesz w nią zagrać?", // @@@ new text - L"Żeby użyć edytora powinieneś wcześniej wybrać kampanię inną niż standardowa.", ///@@new - // anv: extra iron man modes - L"Grasz w trybie CZŁOWIEKA Z ŻELIWA i nie możesz zapisywać gry w trakcie walki turowej.", - L"Grasz w trybie CZŁOWIEKA ZE STALI i możesz zapisywać grę tylko raz dziennie, o %02d:00.", -}; - -// The_bob : pocket popup text defs // TODO.Translate -STR16 gszPocketPopupText[]= -{ - L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN - L"- no matching ammo -", //POCKET_POPUP_NO_AMMO - L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS - L"more...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features // TODO.Translate -STR16 szCovertTextStr[]= -{ - L"%s has camo!", - L"%s has a backpack!", - L"%s is seen carrying a corpse!", - L"%s's %s is suspicious!", - L"%s's %s is considered military hardware!", - L"%s carries too many guns!", - L"%s's %s is too advanced for an %s soldier!", - L"%s's %s has too many attachments!", - L"%s was seen performing suspicious activities!", - L"%s does not look like a civilian!", - L"%s bleeding was discovered!", - L"%s is drunk and doesn't behave like a soldier!", - L"On closer inspection, %s's disguise does not hold!", - L"%s isn't supposed to be here!", - L"%s isn't supposed to be here at this time!", - L"%s was seen near a fresh corpse!", - L"%s equipment raises a few eyebrows!", - L"%s is seen targetting %s!", - L"%s has seen through %s's disguise!", - L"No clothes item found in Items.xml!", - L"This does not work with the old trait system!", - L"Not enough APs!", - L"Bad palette found!", - L"You need the covert skill to do this!", - L"No uniform found!", - L"%s is now disguised as a civilian.", - L"%s is now disguised as a soldier.", - L"%s wears a disorderly uniform!", - L"In retrospect, asking for surrender in disguise wasn't the best idea...", - L"%s was uncovered!", - L"%s's disguise seems to be ok...", - L"%s's disguise will not hold.", - L"%s was caught stealing!", - L"%s tried to manipulate %s's inventory.", - L"An elite soldier did not recognize %s!", // TODO.Translate - L"A officer knew %s was unfamiliar!", -}; - -STR16 szCorpseTextStr[]= -{ - L"No head item found in Items.xml!", - L"Corpse cannot be decapitated!", - L"No meat item found in Items.xml!", - L"Not possible, you sick, twisted individual!", - L"No clothes to take!", - L"%s cannot take clothes off of this corpse!", - L"This corpse cannot be taken!", - L"No free hand to carry corpse!", - L"No corpse item found in Items.xml!", - L"Invalid corpse ID!", -}; - -STR16 szFoodTextStr[]= -{ - L"%s does not want to eat %s", - L"%s does not want to drink %s", - L"%s ate %s", - L"%s drank %s", - L"%s's strength was damaged due to being overfed!", - L"%s's strength was damaged due to lack of nutrition!", - L"%s's health was damaged due to being overfed!", - L"%s's health was damaged due to lack of nutrition!", - L"%s's strength was damaged due to excessive drinking!", - L"%s's strength was damaged due to lack of water!", - L"%s's health was damaged due to excessive drinking!", - L"%s's health was damaged due to lack of water!", - L"Sectorwide canteen filling not possible, Food System is off!" -}; - -// TODO.Translate -STR16 szPrisonerTextStr[]= -{ - L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate - L"Gained $%d as ransom money.", // TODO.Translate - L"%d prisoners revealed enemy positions.", - L"%d officers, %d elites, %d regulars and %d admins joined our cause.", - L"Prisoners start a massive riot in %s!", - L"%d prisoners were sent to %s!", - L"Prisoners have been released!", - L"The army now occupies the prison in %s, the prisoners were freed!", - L"The enemy refuses to surrender!", - L"The enemy refuses to take you as prisoners - they prefer you dead!", - L"This behaviour is set OFF in your ini settings.", - L"%s has freed %s!", - L"A high-ranking army officer in %s has been revealed!", // TODO.Translate - L"The enemy leader refuses to even consider surrender!", - L"%d prisoners volunteered to join our forces.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= // TODO.Translate -{ - L"nothing", - L"building a fortification", - L"removing a fortification", - L"hacking", // TODO.Translate - L"%s had to stop %s.", - L"The selected barricade cannot be built in this sector", // TODO.Translate -}; - -STR16 szInventoryArmTextStr[]= // TODO.Translate -{ - L"Blow up (%d AP)", - L"Blow up", - L"Arm (%d AP)", - L"Arm", - L"Disarm (%d AP)", - L"Disarm", -}; - -// TODO.Translate -STR16 szBackgroundText_Flags[]= -{ - L" might consume drugs in inventory\n", - L" disregard for all other backgrounds\n", - L" +1 level in underground sectors\n", - L" steals money from the locals sometimes\n", // TODO.Translate - - 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 - - L" huge loyality penalty in all towns if we die\n", // TODO.Translate - - L" refuses to attack animals\n", // TODO.Translate - L" refuses to attack members of the same group\n", // TODO.Translate -}; - -// TODO.Translate -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% APs in polar sectors\n", - L" %s%d%% APs in desert sectors\n", - L" %s%d%% APs in swamp sectors\n", - L" %s%d%% APs in urban sectors\n", - L" %s%d%% APs in forest sectors\n", - L" %s%d%% APs in plain sectors\n", - L" %s%d%% APs in river sectors\n", - L" %s%d%% APs in tropical sectors\n", - L" %s%d%% APs in coastal sectors\n", - L" %s%d%% APs in mountainous sectors\n", - - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% leadership stat\n", - L" %s%d%% marksmanship stat\n", - 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", - L" %s%d%% APs needed for fortification actions\n", - L" %s%d%% APs needed for mortars\n", - L" %s%d%% APs needed to access inventory\n", - L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", - L" %s%d%% APs on first turn when assaulting a sector\n", - - L" %s%d%% travel speed on foot\n", - L" %s%d%% travel speed on land vehicles\n", - L" %s%d%% travel speed on air vehicles\n", - L" %s%d%% travel speed on water vehicles\n", - - L" %s%d%% fear resistance\n", - L" %s%d%% suppression resistance\n", - L" %s%d%% physical resistance\n", - L" %s%d%% alcohol resistance\n", - L" %s%d%% disease resistance\n", // TODO.Translate - - L" %s%d%% interrogation effectiveness\n", - L" %s%d%% prison guard strength\n", - L" %s%d%% better prices when trading guns and ammo\n", - L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", - L" %s%d%% team capitulation strength if we lead negotiations\n", - L" %s%d%% faster running\n", - L" %s%d%% bandaging speed\n", - L" %s%d%% breath regeneration\n", // TODO.Translate - L" %s%d%% strength to carry items\n", - L" %s%d%% food consumption\n", - L" %s%d%% water consumption\n", - L" %s%d need for sleep\n", - L" %s%d%% melee damage\n", - L" %s%d%% cth with blades\n", - L" %s%d%% camo effectiveness\n", - L" %s%d%% stealth\n", - L" %s%d%% max CTH\n", - L" %s%d hearing range during the night\n", - L" %s%d hearing range during the day\n", - L" %s%d effectivity at disarming traps\n", // TODO.Translate - L" %s%d%% CTH with SAMs\n", // TODO.Translate - - L" %s%d%% effectiveness to friendly approach\n", - L" %s%d%% effectiveness to direct approach\n", - L" %s%d%% effectiveness to threaten approach\n", - 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", - L" %s%d%% insurance cost\n", - L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate - L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate - L" %s%d%% effectiveness at treating population against diseases\n", - L"Can spot tracks up to %d tiles away\n", - L" %s%d%% initial distance to enemy in ambush\n", - L" %s%d%% chance to evade snake attacks\n", // TODO.Translate - - L" dislikes some other backgrounds\n", // TODO.Translate - L"Smoker", - L"Nonsmoker", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% building speed\n", - L" hacking skill: %s%d ", // TODO.Translate - L" %s%d%% burial speed\n", // TODO.Translate - L" %s%d%% administration effectiveness\n", // TODO.Translate - L" %s%d%% exploration effectiveness\n", // TODO.Translate -}; - -STR16 szBackgroundTitleText[] = // TODO.Translate -{ - L"I.M.P. Background", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = // TODO.Translate -{ - L"I.M.P. Prejudices", -}; - -STR16 szPersonalityDisplayText[]= // TODO.Translate -{ - L"You look", - L"and appearance is", - L"important to you.", - L"You have", - L"and care", - L"about that.", - L"You are", - L"and hate everyone", - L".", - L"racist against non-", - L"people.", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"How do you look?", - L"How important are the looks of others to you?", - L"What are your manners?", - L"How important are the manners of other people to you?", - L"What is your nationality?", - L"What nation o you dislike?", - L"How much do you dislike that nation?", - L"How racist are you?", - L"What is your race? You will be\nracist against all other races.", - L"How sexist are you against the other gender?", -}; - -STR16 szRaceText[]= -{ - L"white", - L"black", - L"asian", - L"eskimo", - L"hispanic", -}; - -STR16 szAppearanceText[]= -{ - L"average", - L"ugly", - L"homely", - L"attractive", - L"like a babe", -}; - -STR16 szRefinementText[]= -{ - L"average manners", - L"manners of a slob", - L"manners of a snob", -}; - -STR16 szRefinementTextTypes[] = // TODO.Translate -{ - L"normal people", - L"slobs", - L"snobs", -}; - -STR16 szNationalityText[]= -{ - L"American", // 0 - L"Arab", - L"Australian", - L"British", - L"Canadian", - L"Cuban", // 5 - L"Danish", - L"French", - L"Russian", - L"Traconian", - L"Swiss", // 10 - L"Jamaican", - L"Polish", - L"Chinese", - L"Irish", - L"South African", // 15 - L"Hungarian", - L"Scottish", - L"Arulcan", - L"German", - L"African", // 20 - L"Italian", - L"Dutch", - L"Romanian", - L"Metaviran", - - // newly added from here on - L"Afghan", // 25 - L"Albanian", - L"Argentinian", - L"Armenian", - L"Azerbaijani", - L"Bangladeshi ", // 30 - L"Belarusian", - L"Belgian", - L"Beninese", - L"Bolivian", - L"Bosnian", // 35 - L"Brasilian", - L"Bulgarian", - L"Cambodian", - L"Chadian", - L"Chilean", // 40 - L"Columbian", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Egyptian", // 45 - L"English", - L"Eritrean", - L"Estonian", - L"Ethiopian", - L"Filipino", // 50 - L"Finnish", - L"Georgian", - L"Greek", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Indian", - L"Indonesian", - L"Iranian", - L"Iraqi", // 60 - L"Islandic", - L"Israeli", - L"Japanese", - L"Jordanian", - L"Kazakhstani", // 65 - L"Korean", - L"Kyrgyzstani", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Mexican", // 75 - L"Mongolian", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Nigerian", - L"Nigerien", - L"Norwegian", - L"Pakistani", // 85 - L"Panamanian", - L"Portoguese", - L"Rwandanese", - L"Salvadoran", - L"Saudi", // 90 - L"Serbian", - L"Slovakian", - L"Slovenian", - L"Somali", - L"Spanish", // 95 - L"Sudanese", - L"Swedish", - L"Syrian", - L"Thai", - L"Togolese", // 100 - L"Tunisian", - L"Turkish", - L"Ugandan", - L"Ukrainian", - L"Uruguayan", // 105 - L"Uzbekistani", - L"Venezuelan", - L"Vietnamese", - L"Welsh", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Zimbabwean", -}; - -STR16 szNationalityTextAdjective[] = // TODO.Translate -{ - L"americans", // 0 - L"arabs", - L"australians", - L"britains", - L"canadians", - L"cubans", // 5 - L"danes", - L"frenchmen", - L"russians", - L"traconians", - L"swiss", // 10 - L"jamaicans", - L"poles", - L"chinese", - L"irishmen", - L"south africans", // 15 - L"hungarians", - L"scotsmen", - L"arulcans", - L"germans", - L"africans", // 20 - L"italians", - L"dutchmen", - L"romanians", - L"metavirans", - - // newly added from here on - L"afghans", // 25 - L"albanians", - L"argentinians", - L"armenians", - L"azerbaijani", - L"bangladeshi", // 30 - L"belarusians", - L"belgians", - L"beninese", - L"bolivians", - L"bosnians", // 35 - L"brasilians", - L"bulgarians", - L"cambodians", - L"chadians", - L"chileans", // 40 - L"columbians", - L"congolese", - L"croatians", - L"ecuadorians", - L"egyptians", // 45 - L"englishmen", - L"eritreans", - L"estonians", - L"ethiopians", - L"filipinos", // 50 - L"finns", - L"georgians", - L"greek", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"indians", - L"indonesians", - L"iranians", - L"iraqis", // 60 - L"islandics", - L"israelis", - L"japanese", - L"jordanians", - L"kazakhstani", // 65 - L"koreans", - L"kyrgyzstani", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"mexicans", // 75 - L"mongolians", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"nigerians", - L"nigeriens", - L"norwegians", - L"pakistanis", // 85 - L"panamanians", - L"portoguese", - L"rwandanese", - L"salvadorans", - L"saudis", // 90 - L"serbians", - L"slovakians", - L"slovenians", - L"somali", - L"spaniards", // 95 - L"sudanese", - L"swedes", - L"syrians", - L"thais", - L"togolese", // 100 - L"tunisians", - L"turks", - L"ugandans", - L"ukrainians", - L"uruguayans", // 105 - L"uzbekistani", - L"venezuelans", - L"vietnamese", - L"welshs", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"zimbabweans", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"and do not hate any other nationality.", // used in personnel.cpp - L"of no origin", // used in IMP generation -}; - -STR16 szCareLevelText[]= -{ - L"not", - L"somewhat", - L"extremely", -}; - -STR16 szRacistText[]= -{ - L"not", - L"somewhat", - L"very", -}; - -STR16 szSexistText[]= -{ - L"no sexist", - L"somewhat sexist", - L"very sexist", - L"a Gentleman", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"Batteries are ", - L"full", - L"good", - L"at half", - L"low", - L"depleted", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= // TODO.Translate -{ - L"Mercenary", - L"Green militia", - L"Regular militia", - L"Elite militia", - - L"Civilian", - - L"Administrator", - L"Army Soldier", - L"Elite Soldier", - L"Tank", - - L"Creature", - L"Zombie", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"%s Press Council", - L"Ministry for %s Information Distribution", - L"%s Revolutionary Movement", - L"The Times International", - L"International Times", - L"R.I.S. (Recon Intelligence Service)", - - L"A collection of press sources from %s", - L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", - - L"Conflict Summary", - L"Battle reports", - L"News", - L"About us", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s in %s.", - - L"rebel forces", - L"the army", - - L"attacked", - L"ambushed", - L"airdropped", - - L"The attack came from %s.", - L"%s were reinforced from %s.", - L"The attack came from %s, %s were reinforced from %s.", - L"north", - L"east", - L"south", - L"west", - L"and", - L"an unknown location", // TODO.Translate - - L"Buildings in the sector were damaged.", // TODO.Translate - L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", - L"During the attack, %s and %s called reinforcements.", - L"During the attack, %s called reinforcements.", - L"Eyewitnesses report the use of chemical weapons from both sides.", - L"Chemical weapons were used by %s.", - L"In a serious escalation of the conflict, both sides deployed tanks.", - L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", - L"Both sides are said to have used snipers.", - L"Unverified reports indicate %s snipers were involved in the firefight.", - L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", - L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", - L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"Deep in the night", // 23 - 3 - L"At dawn", // 3 - 6 - L"Early in the morning", // 6 - 8 - L"In the morning hours", // 8 - 11 - L"At noon", // 11 - 14 - L"On the afternoon", // 14 - 18 - L"On the evening", // 18 - 21 - L"During the night", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Initial funding", - L"Mine income", - L"Trade", - L"Other sources", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Ammunition", - L"Explosives", - L"Food", - L"Medical gear", - L"Item maintenance", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"In an extremely one-sided battle, the army force was wiped out without much resistance.", - - L"The rebels easily defeated the army, inflicting heavy losses.", - L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", - - L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", - L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", - - L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", - - L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", - L"Despite the high number of rebels in this sector, the army easily dispatched them.", - - L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", - L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", - - L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", - L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", - - L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"Irrelevant", - L"Insignificant", - L"Notable", - L"Noteworthy", - L"Significant", - L"Interesting", - L"Important", - L"Very important", - L"Grave", - L"Major", - L"Momentous", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"Killed", - L"Wounded", - L"Prisoners", - L"Shots fired", - - L"Money earned", - L"Consumption", - L"Losses", - L"Participants", - - L"Promotions", - L"Summary", - L"Detail", - L"Previous", - - L"Next", - L"Incident", - L"Day", -}; - -STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate -{ - L"Glorious %s", - L"Mighty %s", - L"Awesome %s", - L"Intimidating %s", - - L"Powerful %s", - L"Earth-Shattering %s", - L"Insidious %s", - L"Swift %s", - - L"Violent %s", - L"Brutal %s", - L"Relentless %s", - L"Merciless %s", - - L"Cannibalistic %s", - L"Gorgeous %s", - L"Rogue %s", - L"Dubious %s", - - L"Sexually Ambigious %s", - L"Burning %s", - L"Enraged %s", - L"Visonary %s", - - // 20 - L"Gruesome %s", - L"International-law-ignoring %s", - L"Provoked %s", - L"Ceaseless %s", - - L"Inflexible %s", - L"Unyielding %s", - L"Regretless %s", - L"Remorseless %s", - - L"Choleric %s", - L"Unexpected %s", - L"Democratic %s", - L"Bursting %s", - - L"Bipartisan %s", - L"Bloodstained %s", - L"Rouge-wearing %s", - L"Innocent %s", - - L"Hateful %s", - L"Underwear-staining %s", - L"Civilian-devouring %s", - L"Unflinching %s", - - // 40 - L"Expect No Mercy From Our %s", - L"Very Mad %s", - L"Ultimate %s", - L"Furious %s", - - L"Its best to Avoid Our %s", - L"Fear the %s", - L"All Hail the %s!", - L"Protect the %s", - - L"Beware the %s", - L"Crush the %s", - L"Backstabbing %s", - L"Vicious %s", - - L"Sadistic %s", - L"Burning %s", - L"Wrathful %s", - L"Invincible %s", - - L"Guilt-ridden %s", - L"Rotting %s", - L"Sanitized %s", - L"Self-doubting %s", - - // 60 - L"Ancient %s", - L"Very Hungry %s", - L"Sleepy %s", - L"Demotivated %s", - - L"Cruel %s", - L"Annoying %s", - L"Huffy %s", - L"Bisexual %s", - - L"Screaming %s", - L"Hideous %s", - L"Praying %s", - L"Stalking %s", - - L"Cold-blooded %s", - L"Fearsome %s", - L"Trippin' %s", - L"Damned %s", - - L"Vegetarian %s", - L"Grotesque %s", - L"Backward %s", - L"Superior %s", - - // 80 - L"Inferior %s", - L"Okay-ish %s", - L"Porn-consuming %s", - L"Poisoned %s", - - L"Spontaneous %s", - L"Lethargic %s", - L"Tickled %s", - L"The %s is a dupe!", - - L"%s on Steroids", - L"%s vs. Predator", - L"A %s with a twist", - L"Self-Pleasuring %s", - - L"Man-%s hybrid", - L"Inane %s", - L"Overpriced %s", - L"Midnight %s", - - L"Capitalist %s", - L"Communist %s", - L"Intense %s", - L"Steadfast %s", - - // 100 - L"Narcoleptic %s", // TODO.Translate - L"Bleached %s", - L"Nail-biting %s", - L"Smite the %s", - - L"Bloodthirsty %s", - L"Obese %s", - L"Scheming %s", - L"Tree-Humping %s", - - L"Cheaply made %s", - L"Sanctified %s", - L"Falsely accused %s", - L"%s to the rescue", - - L"Crab-people vs. %s", - L"%s in Space!!!", - L"%s vs. Godzilla", - L"Untamed %s", - - L"Durable %s", - L"Brazen %s", - L"Greedy %s", - L"Midnight %s", - - // 120 - L"Confused %s", - L"Irritated %s", - L"Loathsome %s", - L"Manic %s", - - L"Ancient %s", - L"Sneaking %s", - L"%s of Doom", - L"%s's revenge", - - L"A %s on the run", - L"A %s out of time", - L"One with %s", - L"%s from hell", - - L"Super-%s", - L"Ultra-%s", - L"Mega-%s", - L"Giga-%s", - - L"A quantum of %s", - L"Her Majesties' %s", - L"Shivering %s", - L"Fearful %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Dragon", - L"Mountain Lion", - L"Copperhead Snake", - L"Jack Russell Terrier", - - L"Arch-Nemesis", - L"Basilisk", - L"Blade", - L"Shield", - - L"Hammer", - L"Spectre", - L"Congress", - L"Oilfield", - - L"Boyfriend", - L"Girlfriend", - L"Husband", - L"Stepmother", - - L"Sand Lizard", - L"Bankers", - L"Anaconda", - L"Kitten", - - // 20 - L"Congress", - L"Senate", - L"Cleric", - L"Badass", - - L"Bayonet", - L"Wolverine", - L"Soldier", - L"Tree Frog", - - L"Weasel", - L"Shrubbery", - L"Tar pit", - L"Sunset", - - L"Hurricane", - L"Ocelot", - L"Tiger", - L"Defense Industry", - - L"Snow Leopard", - L"Megademon", - L"Dragonfly", - L"Rottweiler", - - // 40 - L"Cousin", - L"Grandma", - L"Newborn", - L"Cultist", - - L"Disinfectant", - L"Democracy", - L"Warlord", - L"Doomsday Device", - - L"Minister", - L"Beaver", - L"Assassin", - L"Rain of Burning Death", - - L"Prophet", - L"Interloper", - L"Crusader", - L"Administration", - - L"Supernova", - L"Liberty", - L"Explosion", - L"Bird of Prey", - - // 60 - L"Manticore", - L"Frost Giant", - L"Celebrity", - L"Middle Class", - - L"Loudmouth", - L"Scape Goat", - L"Warhound", - L"Vengeance", - - L"Fortress", - L"Mime", - L"Conductor", - L"Job-Creator", - - L"Frenchman", - L"Superglue", - L"Newt", - L"Incompetency", - - L"Steppenwolf", - L"Iron Anvil", - L"Grand Lord", - L"Supreme Ruler", - - // 80 - L"Dictator", - L"Old Man Death", - L"Shredder", - L"Vacuum Cleaner", - - L"Hamster", - L"Hypno-Toad", - L"Discjockey", - L"Undertaker", - - L"Gorgon", - L"Child", - L"Mob", - L"Raptor", - - L"Goddess", - L"Gender Inequality", - L"Mole", - L"Baby Jesus", - - L"Gunship", - L"Citizen", - L"Lover", - L"Mutual Fund", - - // 100 - L"Uniform", // TODO.Translate - L"Saber", - L"Snow Leopard", - L"Panther", - - L"Centaur", - L"Scorpion", - L"Serpent", - L"Black Widow", - - L"Tarantula", - L"Vulture", - L"Heretic", - L"Zombie", - - L"Role-Model", - L"Hellhound", - L"Mongoose", - L"Nurse", - - L"Nun", - L"Space Ghost", - L"Viper", - L"Mamba", - - // 120 - L"Sinner", - L"Saint", - L"Comet", - L"Meteor", - - L"Can of worms", - L"Fish oil pills", - L"Breastmilk", - L"Tentacle", - - L"Insanity", - L"Madness", - L"Cough reflex", - L"Colon", - - L"King", - L"Queen", - L"Bishop", - L"Peasant", - - L"Tower", - L"Mansion", - L"Warhorse", - L"Referee", - - // 140 -}; - -STR16 szMercCompareWebSite[] = // TODO.Translate -{ - // main page - L"Mercs Love or Dislike You", - L"Your #1 teambuilding experts on the web", - - L"About us", - L"Analyse a team", - L"Pairwise comparison", - L"Customer voices", - - L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", - L"Your team struggles with itself.", - L"Your employees waste time working against each other.", - L"Your workforce experiences a high fluctuation rate.", - L"You constantly receive low marks on workplace satisfaction ratings.", - L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", - - // customer quotes - L"A few citations from our satisfied customers:", - L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", - L"-Louisa G., Novelist-", - L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", - L"-Konrad C., Corrective law enforcement-", - L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", - L"-Grant W., Snake charmer-", - L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", - L"-Halle L., SPK-", - L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", - L"-Michael C., NASA-", - L"I fully recommend this site!", - L"-Kasper H., H&C logistic Inc-", - L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", - L"-Stan Duke, Kerberus Inc-", - - // analyze - L"Choose your employee", - L"Choose your squad", - - // error messages - L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s shot me!", - L"%s is scheming behind my back", - L"%s interfered in my business", - L"%s is friends with my enemy", - - L"%s got a contract before I did", - L"%s ordered a shameful retreat", - L"%s massacred the innocent", - L"%s slows us down", - - L"%s doesn't share food", - L"%s jeopardizes the mission", - L"%s is a drug addict", - L"%s is thieving scum", - - L"%s is an incompetent commander", - L"%s is overpaid", - L"%s gets all the good stuff", - L"%s mounted a gun on me", - - L"%s treated my wounds", - L"Had a good drink with %s", - L"%s is fun to get wasted with", - L"%s is annoying when drunk", - - L"%s is an idiot when drunk", - L"%s opposed our view in an argument", - L"%s supported our position", - L"%s agrees to our reasoning", - - L"%s's beliefs are contrary to ours", - L"%s knows how to calm down people", - L"%s is insensitive", - L"%s puts people in their places", - - L"%s is way too impulsive", - L"%s is disease-ridden", - L"%s treated my diseases", - L"%s does not hold back in combat", - - L"%s enjoys combat a bit too much", - L"%s is a good teacher", - L"%s led us to victory", - L"%s saved my life", - - L"%s stole my kill", - L"%s and me fought well together", - L"%s made the enemy surrender", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"World Health Organization", - L"Bringing health to life", - - // links to other pages - L"About WHO", - L"Disease in Arulco", - L"About diseases", - - // text on the main page - L"WHO is the directing and coordinating authority for health within the United Nations system.", - L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", - L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", - - // contract page - L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", - L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", - L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", - L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", - L"You currently do not have access to WHO data on the arulcan plague.", - L"You have acquired detailed maps on the status of the disease.", - L"Subscribe to map updates", - L"Unsubscribe map updates", - - // helpful tips page - L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", - L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", - L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", - L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", - L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", - L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", - L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", - L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Kerberus", - L"Experience In Security", - - // links to other pages - L"What is Kerberus?", - L"Team Contracts", - L"Individual Contracts", - - // text on the main page - L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", - L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", - L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", - L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", - L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", - L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", - L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", - - // militia contract page - L"You can select the type and number of personnel you want to hire here:", - L"Initial deployment", - L"Regular personnel", - L"Veteran personnel", - - L"%d available, %d$ each", - L"Hire: %d", - L"Cost: %d$", - - L"Select the initial operational area:", - L"Total Cost: %d$", - L"ETA: %02d:%02d", - L"Close Contract", - - L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", - L"Kerberus reinforcements have arrived in %s.", - L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", - L"You do not control any location through which we could insert troops!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"Inventory Manipulations", - - L"NVG", - L"Reload All", - L"Move", // TODO.Translate - L"", - - L"Sort", - L"Merge", - L"Separate", - L"Organize", - - L"Crates", - L"Boxes", - L"Drop B/P", - L"Pickup B/P", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"Cover Display Mode", - - L"Off", - L"Enemy", - L"Merc", - L"", - - L"Roles", // TODO.Translate - L"Fortification", // TODO.Translate - L"Tracker", - L"CTH mode", - - L"Traps", - L"Network", - L"Detector", - L"", - - L"Net A", - L"Net B", - L"Net C", - L"Net D", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Turning off cover/traps display", - L"Showing danger zones", - L"Showing merc view", - L"", - - L"Display enemy role symbols", // TODO.Translate - L"Display planned fortifications", - L"Display enemy tracks", - L"", - - L"Display trap network", - L"Display trap network colouring", - L"Display nearby traps", - L"", - - L"Display trap network A", - L"Display trap network B", - L"Display trap network C", - L"Display trap network D", -}; - -// TODO.Translate -STR16 szDynamicDialogueText[40][17] = // TODO.Translate -{ - // OPINIONEVENT_FRIENDLYFIRE - L"What the hell! $CAUSE$ attacked me!", - L"", - L"", - L"What? Me? No way, I'm engaging at the enemy!", - L"Oops.", - L"", - L"", - L"$CAUSE$ has attacked $VICTIM$. What do you do?", - L"Nah, that must have been enemy fire!", - L"Yeah, I saw it too!", - L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", - L"I saw it, it was clearly enemy fire!", - L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", - L"This is war! People get shot all the time! Speaking of... shoot more people, people!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", - L"", - L"", - L"I would if you weren't such a wussy!", - L"You heard that? Dammit.", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Thanks, $CAUSE$. I thought I was gonna bleed out.", - L"", - L"", - L"I'm doing my job. Get back to yours!", - L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", - L"", - L"", - L"$CAUSE$ has bandaged $VICTIM$. What do you do?", - L"Patched together again? Good, now move!", - L"You're welcome.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ha! See? Even $CAUSE$ agrees with me.", - L"", - L"", - L"'Even'? What does that mean?", - L"Yeah. I'm 100%% with $VICTIM$ on this.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Nice one, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", - L"", - L"", - L"Is there a difference?", - L"Oops. This thing is powerful!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"What?!", - L"No!", - L"That is false!", - L"That is not true!", - - L"Lies, lies, lies. Nothing but lies!", - L"Liar!", - L"Traitor!", - L"You watch your mouth!", - - L"This is none of your business.", - L"Who ever invited you?", - L"Nobody asked for your opinion, $INTERJECTOR$.", - L"You stay away from me.", - - L"Why are you all against me?", - L"Why are you against me, $INTERJECTOR$?", - L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", - L"Not listening...!", - - L"I hate this psycho circus.", - L"I hate this freak show.", - L"Back off!", - L"Lies, lies, lies...", - - L"No way!", - L"So not true.", - L"That is so not true.", - L"I know what I saw.", - - L"I don't know what $INTERJECTOR_GENDER$ is talking off.", - L"Don't listen to $INTERJECTOR_PRONOUN$!", - L"Nope.", - L"You are mistaken.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"What $INTERJECTOR_GENDER$ said.", - - L"Thanks, $INTERJECTOR$!", - L"Once again I'm right!", - L"See, $CAUSE$? I am right!", - L"Once again $SPEAKER$ is right!", - - L"Aye.", - L"Yup.", - L"Yep", - L"Yes.", - - L"Indeed.", - L"True.", - L"Ha!", - L"See?", - - L"Exactly!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"That's right!", - L"Indeed!", - L"Exactly that.", - L"$CAUSE$ does that all the time.", - - L"$VICTIM$ is right!", - L"I was gonna' point that out, too!", - L"What $VICTIM$ said.", - L"That's our $CAUSE$!", - - L"Yeah!", - L"Now THIS is going to be interesting...", - L"You tell'em, $VICTIM$!", - L"Agreeing with $VICTIM$ here...", - - L"Classic $CAUSE$.", - L"I couldn't have said it better myself.", - L"That is exactly what happened.", - L"Agreed!", - - L"Yup.", - L"True.", - L"Bingo.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"Now wait a minute...", - L"Wait a sec, that's not what right...", - L"What? No.", - L"That is not what happened.", - - L"Hey, stop blaming $CAUSE$!", - L"Oh shut up, $VICTIM$!", - L"Nonono, you got that wrong.", - L"Whoa. Why so stiff all of a sudden, $VICTIM$?", - - L"And I suppose you never did, $VICTIM$?", - L"Hmmmm... no.", - L"Great. Let's have an argument. It's not like we have other things to do...", - L"You are mistaken!", - - L"You are wrong!", - L"Me and $CAUSE$ would never do such a thing.", - L"Nah, can't be.", - L"I don't think so.", - - L"Why bring that up now?", - L"Really, $VICTIM$? Is this necessary?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Keep silent", - L"Support $VICTIM$", - L"Support $CAUSE$", - L"Appeal to reason", - L"Shut them up", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"he", - L"she", - L"him", - L"her", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% agility stat\n", - L" %s%d%% dexterity stat\n", - L" %s%d%% strength stat\n", - L" %s%d%% wisdom stat\n", - L" %s%d%% effective level\n", - - L" %s%d%% APs\n", - L" %s%d maximum breath\n", - L" %s%d%% strength to carry items\n", - L" %s%2.2f life regeneration/hour\n", - L" %s%d need for sleep\n", - L" %s%d%% water consumption\n", - L" %s%d%% food consumption\n", - - L"%s was diagnosed with %s!", - L"%s is cured of %s!", - - L"Diagnosis", - L"Treatment", - L"Burial", // TODO.Translate - L"Cancel", - - L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate - - L"High amount of distress can cause a personality split\n", // TODO.Translate - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", // TODO.Translate - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"Hide", // TODO.Translate - L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|W|a|t|e|r: %d%%\n", - L"\n\n|F|o|o|d: %d%%\n", - - L"max morale altered by %s%d\n", - L" %s%d need for sleep\n", - L" %s%d%% breath regeneration\n", - L" %s%d%% assignment efficiency\n", - L" %s%d%% chance to lose stats\n", -}; - -STR16 szIMPGearWebSiteText[] = // TODO.Translate -{ - // IMP Gear Entrance - L"How should gear be selected?", - L"Old method: Random gear according to your choices", - L"New method: Free selection of gear", - L"Old method", - L"New method", - - // IMP Gear Entrance - L"I.M.P. Equipment", - L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate -}; - -STR16 szIMPGearPocketText[] = -{ - L"Select helmet", - L"Select vest", - L"Select pants", - L"Select face gear", - L"Select face gear", - - L"Select main gun", - L"Select sidearm", - - L"Select LBE vest", - L"Select left LBE holster", - L"Select right LBE holster", - L"Select LBE combat pack", - L"Select LBE backpack", - - L"Select launcher / rifle", - L"Select melee weapon", - - L"Select additional items", //BIGPOCK1POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select medkit", //MEDPOCK1POS - L"Select medkit", - L"Select medkit", - L"Select medkit", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select additional items", //SMALLPOCK19POS - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", - L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"We cannot relay orders to this sector, militia command not possible.", - L"Unassigned", - L"Group No.", - L"Next", - - L"ETA", - L"Group %d (new)", - L"Group %d", - L"Final", - - L"Volunteers: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = // TODO.Translate -{ - L"Enemy helicopter shot down in %s!", - L"We... uhm... currently don't control that site, commander...", - L"The SAM does not need maintenance at the moment.", - L"We've already ordered the repair, this will take time.", - - L"We do not have enough resources to do that.", - L"Repair SAM site? This will cost %d$ and take %d hours.", - L"Enemy helicopter hit in %s.", - L"%s fires %s at enemy helicopter in %s.", - - L"SAM in %s fires at enemy helicopter in %s.", -}; - -STR16 szFortificationText[] = -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"Militia", - L"Militia Forces Overview", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Took part in Operation %s", - L"Recruited on Day %d, %d:%02d in %s", - L"Promoted on Day %d, %d:%02d", - L"KIA, Operation %s", - - L"Lightly wounded during Operation %s", - L"Heavily wounded during Operation %s", - L"Critically wounded during Operation %s", - L"Valiantly fought in Operation %s", - - L"Hired from Kerberus on Day %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", // TODO:Translate -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"All sectors", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"Merchant is hostile and does not want to trade.", - L"Merchant is in no state to do business.", - L"Merchant won't trade during combat.", - L"Merchant refuses to interact with you.", -}; - -STR16 szWeatherTypeText[] = // TODO.Translate -{ - L"normal", - L"rain", - L"thunderstorm", - L"sandstorm", - - L"snow", -}; - -STR16 szSnakeText[] = -{ - L"%s evaded a snake attack!", - L"%s was attacked by a snake!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"Converted %s into resources", - L"Guns: ", - L"Armour: ", - L"Misc: ", - - L"There are no volunteers left for militia!", - L"Not enough resources to train militia!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s starts hacking.", - L"%s accesses the computer, but finds nothing of interest.", - L"%s is not skilled enough to hack the computer.", - L"%s reads the file, but learns nothing new.", - - L"%s can't make sense out of this.", - L"%s couldn't use the watertap.", - L"%s has bought a %s.", - L"%s doesn't have enough money. That's just embarassing.", - - L"%s drank from water tap", - L"This machine doesn't seem to be working.", // TODO.Translate -}; - -STR16 szLaptopStatText[] = // TODO.Translate -{ - L"threaten effectiveness %d\n", - L"leadership %d\n", - L"approach modifier %.2f\n", - L"background modifier %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Good Guy", - L"%s eschews excessive violence and will refuse to attack non-hostiles.", - - L"Friendly approach", - L"Direct approach", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -STR16 szGearTemplateText[] = // TODO.Translate -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate -}; - -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -STR16 szFactoryText[] = // TODO.Translate -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -// TODO.Translate -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Space Available:", - L"MOLLE Space Required:", - L"MOLLE Small Slot Count:", - L"MOLLE Medium Slot Count:", - L"MOLLE Pouch Size: Small", - L"MOLLE Pouch Size: Medium", - L"MOLLE Pouch Size: Medium (Hydration)", - L"Thigh Rig", - L"Vest", - L"Combat Pack", - L"Backpack", // 10 - L"MOLLE Pouch", - L"Compatible backpacks:", - L"Compatible combat packs:", -}; - -STR16 szRebelCommandText[] = // TODO.Translate -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = // TODO.Translate -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = // TODO.Translate -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = // TODO.Translate -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia\nthat appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = // TODO: Translate -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //POLISH +// WANNE: This pragma should not be needed anymore for Polish version, after we set the encoding to UTF8 +// WANNE: Yes we need this here exclusivly in Polish version, because we do not have a codepage in the code like for other versions. +//#pragma setlocale("POLISH") + + #if defined( POLISH ) + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_PolishText_public_symbol(void){;} + +#ifdef POLISH + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|j|a) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; + +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Lokalizacje", //0 + L"Postacie", + L"Przedmioty", + L"Zadania", + L"Menu 5", + L"Menu 6", //5 + L"Menu 7", + L"Menu 8", + L"Menu 9", + L"Menu 10", + L"Menu 11", //10 + L"Menu 12", + L"Menu 13", + L"Menu 14", + L"Menu 15", + L"Menu 15", // 15 + + //Briefing Room + L"Enter", // TODO.Translate +}; + +STR16 pOtherButtonsText[] = +{ + L"Odprawa", + L"Akceptuj", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Odprawa", + L"Akceptuj misje", +}; + + +STR16 pLocationPageText[] = +{ + L"Poprzednia str.", + L"Zdjęcia", + L"Następna str.", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"Strona główna", + L">>", + L"Typ: ", + L"Brak danych", + L"Brak zdefiniowanych misji. Dodaj misje do pliku TableData\\BriefingRoom\\BriefingRoom.xml. Pierwsza misja ma byæ widoczna. Ustaw Hidden = 0", + L"Briefing Room. Please click the 'Enter' button.", // TODO.Translate +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Nieznane",// 0 - unknown + L"Miasto", //1 - cities + L"Wyrzutnia rakiet", //2 - SAM Site + L"Inna lokacja", //3 - other location + L"Kopalnia", //4 - mines + L"Kompleks militarny", //5 - military complex + L"Laboratorium", //6 - laboratory complex + L"Fabryka", //7 - factory complex + L"Szpital", //8 - hospital + L"Więzienie", //9 - prison + L"Port lotniczy", //10 - air port +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Pokaż wszystko", + L"Pokaż AIM", + L"Pokaż MERC", + L"Pokaż RPC", + L"Pokaż NPC", + L"Pokaż Pojazd", + L"Pokaż IMP", + L"Pokaż EPC", + L"Filtr", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"Wszy.", + L"AIM", + L"MERC", + L"RPC", + L"NPC", + L"Pojazd", + L"IMP", + L"EPC", + L"Filtr", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Pokaż wszystko", + L"Pokaż miasta", + L"Pokaż wyrzutnie rakiet", + L"Pokaż inne lokacje", + L"Pokaż kopalnie", + L"Pokaż lokacje militarne", + L"Pokaż laboratoria", + L"Pokaż fabryki", + L"Pokaż szpitale", + L"Pokaż więzienie", + L"Pokaż porty lotnicze", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"Wszy.", + L"Miasta", + L"W-R", + L"Inne", + L"Kop.", + L"Kom.M.", + L"Lab.", + L"Fabry.", + L"Szpit.", + L"Więz.", + L"Por.L.", +}; + +// TODO.Translate +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"All",//0 + L"City", + L"SAM", + L"Mine", + L"Airport", + L"Wilder.", + L"Underg.", + L"Facil.", + L"Other", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//facility index + 1 + L"Show Cities", + L"Show SAM sites", + L"Show mines", + L"Show airports", + L"Show sectors in wilderness", + L"Show underground sectors", + L"Show sectors with facilities\n[|L|B]toggle filter\n[|R|B]reset filter", + L"Show Other sectors", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; +// TODO.Translate +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"All",//0 + L"A.I.M.", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"Other",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//Other index + 1 + L"Show A.I.M. members", + L"Show M.E.R.C staff", + L"Show Rebels", + L"Show Non-hirable Characters", + L"Show Player created Characters", + L"Show Other\n[|L|B] toggle filter\n[|R|B] reset filter", +}; +// TODO.Translate +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Vehic.", + L"EPC", + L"",//reserved. Insert new Other filters above! +}; +// TODO.Translate +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"All",//0 + L"Gun", + L"Ammo", + L"Armor", + L"LBE", + L"Attach.", + L"Misc",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Guns\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Amunition\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Armor Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show LBE Gear\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Attachments\n[|L|B] toggle filter\n[|R|B] reset filter", + L"Show Misc Items\n[|L|B] toggle filter\n[|R|B] reset filter", +}; +// TODO.Translate +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"Pistol", + L"M.Pist.", + L"SMG", + L"Rifle", + L"SN Rif.", + L"AS Rif.", + L"MG", + L"Shotgun", + L"H.Weap.", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Helmet", + L"Vest", + L"Pant", + L"Plate", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Tight", + L"Vest", + L"Combat", + L"Backp.", + L"Pocket", + L"Other", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Optic", + L"Side", + L"Muzzle", + L"Extern.", + L"Intern.", + L"Other", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"Blade", + L"T.Knife", + L"Punch", + L"Grenade", + L"Bomb", + L"Medikit", + L"Kit", + L"Face", + L"Other", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; +// TODO.Translate +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"All", + L"Active", + L"Compl.", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Show All",//misc index + 1 + L"Show Active Quests", + L"Show Completed Quests", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"Wszystko", //0 + L"Broń", + L"Amu.", + L"Oporz.", + L"Różne", + + L"Wszystko", //5 + L"Broń", + L"Amunicja", + L"Oporz¹dzenie", + L"Różne", +}; + + +STR16 BoxFilter[] = +{ + // Guns + L"Inny", //0 + L"Pist.", + L"P.masz.", + L"K.masz.", + L"Kar.", + L"K.snaj.", + L"K.boj.", + L"L.k.m.", + L"Strz.", //8 + + // Ammo + L"Pist.", + L"P.masz.", + L"K.masz.", + L"Kar.", + L"K.snaj.", + L"K.boj.", + L"L.k.masz.", + L"Strz.", //16 + + // Used + L"Broń", + L"Panc.", + L"Oporz.", + L"Różne", //20 + + // Armour + L"Hełmy", + L"Kami.", + L"G.ochr.", + L"P.cer.", + + // Misc + L"Ostrza", + L"N.do.rzu.", + L"Punch.W.", + L"Gr.", + L"Bomby", + L"Apt.", + L"Ekwi.", + L"N.twa.", + L"Oporz.", //LBE Gear + L"Inne", +}; + +// TODO.Translate +STR16 QuestDescText[] = +{ + L"Deliver Letter", + L"Food Route", + L"Terrorists", + L"Kingpin Chalice", + L"Kingpin Money", + L"Runaway Joey", + L"Rescue Maria", + L"Chitzena Chalice", + L"Held in Alma", + L"Interogation", + + L"Hillbilly Problem", //10 + L"Find Scientist", + L"Deliver Video Camera", + L"Blood Cats", + L"Find Hermit", + L"Creatures", + L"Find Chopper Pilot", + L"Escort SkyRider", + L"Free Dynamo", + L"Escort Tourists", + + + L"Doreen", //20 + L"Leather Shop Dream", + L"Escort Shank", + L"No 23 Yet", + L"No 24 Yet", + L"Kill Deidranna", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", +}; + +// TODO.Translate +STR16 FactDescText[] = +{ + L"Omerta Liberated", + L"Drassen Liberated", + L"Sanmona Liberated", + L"Cambria Liberated", + L"Alma Liberated", + L"Grumm Liberated", + L"Tixa Liberated", + L"Chitzena Liberated", + L"Estoni Liberated", + L"Balime Liberated", + + L"Orta Liberated", //10 + L"Meduna Liberated", + L"Pacos approched", + L"Fatima Read note", + L"Fatima Walked away from player", + L"Dimitri (#60) is dead", + L"Fatima responded to Dimitri's supprise", + L"Carlo's exclaimed 'no one moves'", + L"Fatima described note", + L"Fatima arrives at final dest", + + L"Dimitri said Fatima has proof", //20 + L"Miguel overheard conversation", + L"Miguel asked for letter", + L"Miguel read note", + L"Ira comment on Miguel reading note", + L"Rebels are enemies", + L"Fatima spoken to before given note", + L"Start Drassen quest", + L"Miguel offered Ira", + L"Pacos hurt/Killed", + + L"Pacos is in A10", //30 + L"Current Sector is safe", + L"Bobby R Shpmnt in transit", + L"Bobby R Shpmnt in Drassen", + L"33 is TRUE and it arrived within 2 hours", + L"33 is TRUE 34 is false more then 2 hours", + L"Player has realized part of shipment is missing", + L"36 is TRUE and Pablo was injured by player", + L"Pablo admitted theft", + L"Pablo returned goods, set 37 false", + + L"Miguel will join team", //40 + L"Gave some cash to Pablo", + L"Skyrider is currently under escort", + L"Skyrider is close to his chopper in Drassen", + L"Skyrider explained deal", + L"Player has clicked on Heli in Mapscreen at least once", + L"NPC is owed money", + L"Npc is wounded", + L"Npc was wounded by Player", + L"Father J.Walker was told of food shortage", + + L"Ira is not in sector", //50 + L"Ira is doing the talking", + L"Food quest over", + L"Pablo stole something from last shpmnt", + L"Last shipment crashed", + L"Last shipment went to wrong airport", + L"24 hours elapsed since notified that shpment went to wrong airport", + L"Lost package arrived with damaged goods. 56 to False", + L"Lost package is lost permanently. Turn 56 False", + L"Next package can (random) be lost", + + L"Next package can(random) be delayed", //60 + L"Package is medium sized", + L"Package is largesized", + L"Doreen has conscience", + L"Player Spoke to Gordon", + L"Ira is still npc and in A10-2(hasnt joined)", + L"Dynamo asked for first aid", + L"Dynamo can be recruited", + L"Npc is bleeding", + L"Shank wnts to join", + + L"NPC is bleeding", //70 + L"Player Team has head & Carmen in San Mona", + L"Player Team has head & Carmen in Cambria", + L"Player Team has head & Carmen in Drassen", + L"Father is drunk", + L"Player has wounded mercs within 8 tiles of NPC", + L"1 & only 1 merc wounded within 8 tiles of NPC", + L"More then 1 wounded merc within 8 tiles of NPC", + L"Brenda is in the store ", + L"Brenda is Dead", + + L"Brenda is at home", //80 + L"NPC is an enemy", + L"Speaker Strength >= 84 and < 3 males present", + L"Speaker Strength >= 84 and at least 3 males present", + L"Hans lets ou see Tony", + L"Hans is standing on 13523", + L"Tony isnt available Today", + L"Female is speaking to NPC", + L"Player has enjoyed the Brothel", + L"Carla is available", + + L"Cindy is available", //90 + L"Bambi is available", + L"No girls is available", + L"Player waited for girls", + L"Player paid right amount of money", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Kingping expectingh visit from player", + L"Darren expecting money from player", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Usuń", + L"Przedmiot usuń (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"north", + L"northeast", + L"east", + L"southeast", + L"south", + L"southwest", + L"west", + L"northwest" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Przełącz wyœwietlanie graczy", //0 + L"Przełącz wyœwietlanie wrogów", + L"Przełącz wyœwietlanie zwierząt", + L"Przełącz wyœwietlanie rebeliantów", + L"Przełącz wyœwietlanie cywili", + + L"Gracz", + L"Wróg", + L"Stworzenia", + L"Rebelianci", + L"Cywile", + + L"Szczegóły", //10 + L"Tryb informacji ogólnych", + L"Tryb fizyczny", + L"Tryb atrybutów", + L"Tryb wyposażenia", + L"Tryb profilu", + L"Tryb planowania", + L"Tryb planowania", + L"Usuń", + L"Usuń zaznaczonego najemnika (|D|e|l)", + L"Kolejny", //20 + L"Znajdź następnego najemnika (|S|p|a|c|j|a)\nZnajdź poprzedniego najemnika ((|C|t|r|l+|S|p|a|c|j|a)", + L"Włącz priorytet egzystencji", + L"Postać ma dostęp do wszystkich zamkniętych drzwi", + + //Orders + L"STACJONARNY", + L"CZUJNY", + L"NA STRA¯Y", + L"SZUKAJ WROGA", + L"BLISKI PATROL", + L"DALEKI PATROL", + L"PKT PATROL.",//30 + L"LOS PKT PATR.", + + //Attitudes + L"OBRONA", + L"DZIELNY SOLO", + L"DZIELNY POMOC", + L"AGRESYWNA", + L"SPRYTNY SOLO", + L"SPRYTNY POMOC", + + L"Set merc to face %s", + + L"Znaj", + + L"MARNE", //40 + L"SŁABE", + L"ŚREDNIE", + L"DOBRE", + L"ŚWIETNE", + + L"MARNE", + L"SŁABE", + L"ŚREDNIE", + L"DOBRE", + L"ŚWIETNE", + + L"Poprzedni zbiór kolorów",//"Previous color set", //50 + L"Następny zbiór kolorów",//"Next color set", + + L"Poprzednia budowa ciała",//"Previous body type", + L"Następna budowa ciała",//"Next body type", + + L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", + L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", + L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", + L"Ustaw niezgodnoŚć czasu (+ or - 15 minut)", + + L"Brak akcji", + L"Brak akcji", + L"Brak akcji", //60 + L"Brak akcji", + + L"CzyŚć zadanie", + + L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"DACHY", //0 + L"ŚCIANY", + L"DANE POM.", + + L"RozmieŚć Ściany, używając metody wyboru", + L"RozmieŚć drzwi, używając metody wyboru", + L"RozmieŚć dachy, używając metody wyboru", + L"RozmieŚć okna, używając metody wyboru", + L"RozmieŚć uszkodzone Ściany, używając metody wyboru", + L"RozmieŚć meble, używając metody wyboru", + L"RozmieŚć tekstury Ścian, używając metody wyboru", + L"RozmieŚć podłogi, używając metody wyboru", //10 + L"RozmieŚć generyczne meble, używając metody wyboru", + L"RozmieŚć Ściany, używając metody domyŚlnej", + L"RozmieŚć drzwi, używając metody domyŚlnej", + L"RozmieŚć okna, używając metody domyŚlnej", + L"RozmieŚć uszkodzone Ściany, używając metody domyŚlnej", + L"Zablokuj drzwi, lub umieŚć pułapkę na drzwiach", + + L"Dodaj nowe pomieszczenie", + L"Edytuj Ściany jaskini.", + L"Usuń obszar z istniejącego budynku.", + L"Usuń budynek", //20 + L"Dodaj/zastąp dach budynku nowym płaskim dachem.", + L"kopiuj budynek", + L"Przesuń budynek", + L"Rysuj numer pomieszczenia\n(Hold |S|h|i|f|t to reuse room number)", // TODO.Translate + L"Usuń numer pomieszczenia", + + L"Przełącz tryb wymazywania (|E)", + L"Cofnij ostatnią zmianę (|B|a|c|k|s|p|a|c|e)", + L"Wybierz rozmiar pędzla (|A/|Z)", + L"Dachy (|H)", + L"Ściany (|W)", //30 + L"Dane Pom. (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Broń", //0 + L"Amun.", + L"Pancerz", + L"LBE", + L"Mat.Wyb.", + L"E1", + L"E2", + L"E3", + L"Włączniki", + L"Klucze", + L"Rnd", //10 // TODO.Translate + L"Previous (|,)", // previous page // TODO.Translate + L"Next (|.)", // next page // TODO.Translate +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Dodaj źródło Światła z otoczenia", //0 + L"Przełącz fałszywe Światła z otoczenia.", + L"Dodaj pola wyjŚcia (p-klik, aby usunąć istniejące).", + L"Wybierz rozmiar pędzla (|A/|Z)", + L"Cofnij ostatnią zmianę (|B|a|c|k|s|p|a|c|e)", + L"Przełącz tryb wymazywania (|E)", + L"OkreŚl punkt północny dla celów potwierdzenia.", + L"OkreŚl punkt zachodu dla celów potwierdzenia.", + L"OkreŚl punkt wschodu dla celów potwierdzenia.", + L"OkreŚl punkt południa dla celów potwierdzenia.", + L"OkreŚl punkt Środka dla celów potwierdzenia.", //10 + L"OkreŚl odosobniony punkt dla celów potwierdzenia.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"Nowa na wolnym powietrzu", //0 + L"Nowa piwnica", + L"Nowy poziom jaskini", + L"Zapisz mapę (|C|t|r|l+|S)", + L"Wczytaj mapę (|C|t|r|l+|L)", + L"Wybierz zestaw", + L"Wyjdź z trybu edycji do trybu gry", + L"Wyjdź z trybu edycji (|A|l|t+|X)", + L"Utwórz mapę radaru", + L"Kiedy zaznaczone, mapa będzie zapisana w oryginalnym formacie JA2. Items with ID > 350 will be lost.\nTa opcja jest ważna przy normalnych wielkoŚciach map, których numery siatki nie są (siatki wyjŚcia) > 25600.", // TODO.Translate + L"Kiedy zaznaczone, wczytana mapa lub nowa, będzie powiększona automatycznie do wybranych rozmiarów.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Rysuj tekstury terenu (|G)", //0 + L"Ustaw tekstury terenu mapy", + L"UmieŚć brzegi i urwiska (|C)", + L"Rysuj drogi (|P)", + L"Rysuj gruzy (|D)", + L"UmieŚć drzewa i krzewy (|T)", + L"UmieŚć skały (|R)", + L"UmieŚć beczki i inne Śmieci (|O)", + L"Wypełnij teren", + L"Cofnij ostatnią zmianę (|B|a|c|k|s|p|a|c|e)", + L"Przełącz tryb wymazywania (|E)", //10 + L"Wybierz rozmiar pędzla (|A/|Z)", + L"Zwiększ gęstoŚć pędzla (|])", + L"Zmniejsz gęstoŚć pędzla (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Teren", //0 + L"Budynki", + L"Przedmioty", + L"Najemnicy", + L"Dane mapy", + L"Opcje", + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text // TODO.Translate + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text // TODO.Translate + L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text + L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text + L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text + L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"Północny pkt wejŚcja", //0 + L"Zachodni pkt wejŚcja", + L"Wschodni pkt wejŚcja", + L"Południowy pkt wejŚcja", + L"Środkowy pkt wejŚcja", + L"Odizolowany pkt wejŚcja", + + L"Brzask", + L"Noc", + L"24h", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Włącznik Paniki1", //0 + L"Włącznik Paniki2", + L"Włącznik Paniki3", + L"Włącznik%d", + + L"Akcja nacisku", + L"Akcja Paniki1", + L"Akcja Paniki2", + L"Akcja Paniki3", + L"Akcja%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"Niezablokowane (ID)", //0 + L"Pułapka eksplodująca", + L"Pułapka elektryczna", + L"Cicha pułapka", + L"Cichy alarm", + L"Super-Elektryczna Pułapka", //5 + L"Alarm domu publicznego", + L"Poziom pułapki %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Zapisz stary format mapy JA2 (v1.12) Version: 5.00 / 25", //0 + L"Brak mapy.", + L"Plik: %S, Aktualny zestaw: %s", + L"Powiększ istniejącą mapę lub nową.", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"PRZEŁ¥CZ", //0 + L"WIDOKI", + L"METODA WYBORU", + L"METODA DOMYŚLNA", + L"METODA BUDOWANIA", + L"Pomieszczenia", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Edytuj atrybuty zamka na mapie (siatka) %d.", + L"Typ blokady (ID)", + L"Typ pułapki", + L"Poziom pułapki", + L"Zablokowane", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Akcja nacisku", //0 + L"Akcja Paniki1", + L"Akcja Paniki2", + L"Akcja Paniki3", + L"Akcja%d", + + L"Włącznik Paniki1", //5 + L"Włącznik Paniki2", + L"Włącznik Paniki3", + L"Włącznik%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Status Info Line 1", + L"Status Info Line 2", + L"Status Info Line 3", + L"Status Info Line 4", + L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Brzask", + L"Noc", + L"24h", //5 + + L"Promień", + + L"Pod ziemią", + L"Poziom Światła", + + L"Ter. Otw.", + L"Piwnica", //10 + L"Jaskinia", + + L"Ograniczenie", + L"Scroll ID", + + L"Cel", + L"Sektor", //15 + L"Cel", + L"Poziom piw.", + L"Cel", + L"Śiatka", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"Brak akcji", + L"Zablokuj drzwi", + L"Odblokuj drzwi", + L"Otwórz drzwi", + L"Zamknij drzwi", + L"Idź do siatki", + L"OpóŚć sektor", + L"Wejdź do sektora", + L"Pozostań w sektorze", + L"Idź spać", + L"Zignoruj to!" +}; + +STR16 zDiffNames[5] = +{ + L"Wimp", + L"Easy", + L"Average", + L"Tough", + L"Steroid Users Only" +}; + +STR16 EditMercStat[12] = +{ + L"Zdrowie", + L"Akt. zdrowie", + L"Siła", + L"ZwinnoŚć", + L"SprawnoŚć", + L"Charyzma", + L"MądroŚć", + L"CelnoŚć", + L"Mat. Wybuchowe", + L"Medycyna", + L"Scientific", + L"Poz. doŚw.", +}; + +STR16 EditMercOrders[8] = +{ + L"Stationary", + L"On Guard", + L"Close Patrol", + L"Far Patrol", + L"Point Patrol", + L"On Call", + L"Seek Enemy", + L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Defensive", + L"Brave Loner", + L"Brave Buddy", + L"Cunning Loner", + L"Cunning Buddy", + L"Aggressive", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Nazwa najemnika:", //0 + L"Rozkaz:", + L"Postawa walki:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Kolor najemnika", //0 + L"Done", + + L"Previous merc standing orders", + L"Next merc standing orders", + + L"Previous merc combat attitude", + L"Next merc combat attitude", //5 + + L"Decrease merc stat", + L"Increase merc stat", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Losowy", //0 + L"Reg Male", + L"Big Male", + L"Stocky Male", + L"Reg Female", + L"NE Czołg", //5 + L"NW Czołg", + L"Fat Civilian", + L"M Civilian", + L"Miniskirt", + L"F Civilian", //10 + L"Kid w/ Hat", + L"Humvee", + L"Eldorado", + L"Icecream Truck", + L"Jeep", //15 + L"Kid Civilian", + L"Domestic Cow", + L"Cripple", + L"Nieuzbrojony robot", + L"Larwa", //20 + L"Infant", + L"Yng F Monster", + L"Yng M Monster", + L"Adt F Monster", + L"Adt M Monster", //25 + L"Queen Monster", + L"Dziki kot", + L"Humvee", // TODO.Translate +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=ROZKAZY=-- ", //0 + L"--=POSTAWA=--", + + L"RELATIVE", + L"ATRYBUTY", + + L"RELATIVE", + L"WYPOSA¯ENIA", + + L"RELATIVE", + L"ATRYBUTY", + + L"Armia", + L"Admin.", + L"Gwardia", //10 + + L"Poz. doŚw.", + L"Zdrowie", + L"Akt. zdrowie", + L"CelnoŚć", + L"Siła", + L"ZwinnoŚć", + L"SprawnoŚć", + L"Inteligencja", + L"Zdol. dowodzenia", + L"Mat. wybuchowe", //20 + L"Zdol. medyczne", + L"Zdol. mechaniczne", + L"Morale", + + L"Kolor włosów:", + L"Kolor skóry:", + L"Kolor kamizelki:", + L"Kolor spodni:", + + L"LOSOWY", + L"LOSOWY", + L"LOSOWY", //30 + L"LOSOWY", + + L"Podaj index profilu i naciŚnij ENTER. ", + L"Wszystkie informacje (statystyki, itd.) będą pobrane z pliku Prof.dat lub MercStartingGear.xml. ", + L"JeŚli nie chcesz użyć profilu, to zostaw pole puste i naciŚnij ENTER. ", + L"Nie podawaj wartoŚci '200'! WartoŚć '200' nie może być profilem! ", + L"Wybierz profil od 0 do ", + + L"Aktualny Profil: brak ", + L"Aktualny Profil: %s", + + L"STACJONARNY", + L"CZUJNY", //40 + L"NA STRA¯Y", + L"SZUKAJ WROGA", + L"BLISKI PATROL", + L"DALEKI PATROL", + L"PKT PATROL.", + L"LOS PKT PATR.", + + L"Akcja", + L"Czas", + L"V", + L"Siatka 1", //50 + L"Siatka 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"zablokuj", + L"odblokuj", + L"otwórz", + L"zamknij", + + L"Kliknij na siatkę przylegającą do drzwi (%s).", //60 + L"Kliknij na siatkę, gdzie chcesz się przemieŚcić gdy drzwi są otwarte\\zamknięte (%s).", + L"Kliknij na siatkę, gdzie chciałbyŚ się przemieŚcić.", + L"Kliknij na siatkę, gdzie chciałbyŚ spać. Postać po obudzeniu się automatycznie wróci do oryginalnej pozycji.", + L" NaciŚnij ESC, by wyjŚć z trybu edycji planu.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"Slot #%d", + L"Rozkaz patrolu bez punktów poŚrednich", + L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"Brak akcji", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Umiejscowienie nie zostało skopiowane, gdyż żadne nie zostało wybrane.", + L"Umiejscowienie skopiowane.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Umiejscowienie nie zostało wklejone, gdyż żadne umiejscowienie nie jest zapisane w buforze.", + L"Umiejscowienie wklejone.", + L"Umiejscowienie nie zostało wklejone, gdyż maksymalna liczba umiejscowień dla tej drużyny jest już wykorzystana.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Czy chcesz wyjŚć z trybu edytora do trybu gry ?", + L"Czy chcesz zakończyć pracę edytora ?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Czy jesteŚ pewny, że chcesz usunąć wszystkie Światła?", //0 + L"Czy jesteŚ pewny, że chcesz cofnąć plany?", + L"Czy jesteŚ pewny, że chcesz usunąć wszystkie plany?", + + L"Włączono rozmieszczanie elementów przez kilknięcie", + L"Wyłączono rozmieszczanie elementów przez kilknięcie", + + L"Włączono rysowanie wysokiego podłoża", //5 + L"Wyłączono rysowanie wysokiego podłoża", + + L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"Włączono losowe rozmieszczanie", + L"Wyłączono losowe rozmieszczanie", + + L"Usuń korony drzew", //10 + L"Pokaż korony drzew", + + L"World Raise Reset", + + L"World Raise Set Old", + L"World Raise Set", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"Utworzono mape radaru dla %S", //0 + + L"Usunąć aktualną mapę i rozpocząć nowy poziom piwnicy ?", + L"Usunąć aktualną mapę i rozpocząć nowy poziom jaskini ?", + L"Usunąć aktualną mapę i rozpocząć nowy poziom na wolnym powietrzu ?", + + L" Wipe out ground textures? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 + L"Przełącz fałszywe Światła z otoczenia ON/OFF", + + L"INSERT", + L"Przełącz tryb wypełnienia ON/OFF", + + L"BKSPC", + L"Usuń ostatnią zmianę", + + L"DEL", + L"Quick erase object under mouse cursor", + + L"ESC", + L"Wyjdź z edytora", + + L"PGUP/PGDN", //10 + L"Change object to be pasted", + + L"F1", + L"WyŚwietl ekran pomocy", + + L"F10", + L"Zapisz mapę", + + L"F11", + L"Wczytaj mapę", + + L"+/-", + L"Change shadow darkness by .01", + + L"SHFT +/-", //20 + L"Change shadow darkness by .05", + + L"0 - 9", + L"Change map/tileset filename", + + L"b", + L"Wybierz wielkoŚć pędzla", + + L"d", + L"Rysuj Śmieci", + + L"o", + L"Draw obstacle", + + L"r", //30 + L"Rysuj skały", + + L"t", + L"Toggle trees display ON/OFF", + + L"g", + L"Rysuj tekstury ziemi", + + L"w", + L"Rysuj Ściany budunków", + + L"e", + L"Przełącz tryb wymazywania ON/OFF", + + L"h", //40 + L"Przełącz tryb dachów ON/OFF", +}; + +STR16 pAutoLoadMapText[] = +{ + L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +STR16 pShowHighGroundText[] = +{ + L"Showing High Ground Markers", + L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/* +CHAR16 gszActionItemDesc[ 34 ][ 30 ] = +{ + L"Mina klaksonowa", + L"Mina oświetlająca", + L"Eksplozja gazu Łzaw.", + L"Eksplozja granatu Oszałam.", + L"Eksplozja granatu dymnego", + L"Gaz musztardowy", + L"Mina przeciwpiechotna", + L"Otwórz drzwi", + L"Zamknij drzwi", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Mała eksplozja", + L"średnia eksplozja", + L"Duża eksplozja", + L"Otwórz/Zamknij drzwi", + L"Przełącz wszystkie Akcje1", + L"Przełącz wszystkie Akcje2", + L"Przełącz wszystkie Akcje3", + L"Przełącz wszystkie Akcje4", + L"Wejście do burdelu", + L"Wyjście z burdelu", + L"Alarm Kingpin'a", + L"Seks z prostytutką", + L"Pokaż pokój", + L"Alarm lokalny", + L"Alarm globalny", + L"Dźwięk klaksonu", + L"Odbezpiecz drzwi", + L"Przełącz blokadę (drzwi)", + L"Usuń pułapkę (drzwi)", + L"Tog pressure items", + L"Alarm w Museum", + L"Alarm dzikich kotów", + L"Duży gaz łzawiący", +}; +*/ +STR16 pUpdateItemStatsPanelText[] = +{ + L"Chowanie flagi", //0 + L"Brak wybranego przedmiotu.", + L"Slot dostępny dla", + L"losowej generacji.", + L"Nie można edytować kluczy.", + L"Profil identifikacyjny właŚciciela", + L"Item class not implemented.", + L"Slot locked as empty.", + L"Stan", + L"Naboje", + L"Poziom pułapki", //10 + L"IloŚć", + L"Poziom pułapki", + L"Stan", + L"Poziom pułapki", + L"Stan", + L"IloŚć", + L"Poziom pułapki", + L"Dolary", + L"Stan", + L"Poziom pułapki", //20 + L"Poziom pułapki", + L"Tolerancja", + L"Wyzwalacz alarmu", + L"Istn. szansa", + L"B", + L"R", + L"S", +}; + +STR16 pSetupGameTypeFlagsText[] = +{ + L"Przedmiot będzie wyŚwietlany w trybie Sci-Fi i realistycznym", //0 + L"Przedmiot będzie wyŚwietlany tylko w trybie realistycznym", + L"Przedmiot będzie wyŚwietlany tylko w trybie Sci-Fi", +}; + +STR16 pSetupGunGUIText[] = +{ + L"TŁUMIK", //0 + L"CEL. SNAJP", + L"CEL. LSER.", + L"DWÓJNÓG", + L"KACZY DZIÓB", + L"GRANATNIK", //5 +}; + +STR16 pSetupArmourGUIText[] = +{ + L"PŁYTKI CERAM.", //0 +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"DETONATOR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"Ok", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"WCZYTAJ", + L"ZAPISZ", + L"Aktual.", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"Zestaw: %s", //0 + L"Wersja: Podsumowanie: 1.%02d, Map: %1.2f / %02d", + L"IloŚć przedmiotów: %d", + L"IloŚć Świateł: %d", + L"IloŚć punktów wyjŚcia: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"IloŚć pomieszczeń: %d", + L"Całkowita populacja : %d", + L"Wróg: %d", + L"Admin.: %d", + + L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", + L"¯ołnierze: %d", + + L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", + L"Gwardia: %d", + + L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", + L"Cywile: %d", //20 + + L"(%d szczegółowych, profile : %d -- %d mają priorytet egzystencji)", + + L"Ludzie: %d", + L"Krowy: %d", + L"Dzikie koty: %d", + + L"Zwierzęta: %d", + + L"Stworzenia: %d", + L"Dzikie koty: %d", + + L"IloŚć zablokowanych drzwi oraz pułapki zamontowane na drzwiach: %d", + L"Zablokowane: %d", + L"Pułapki: %d", //30 + L"Zablokowane i pułapki: %d", + + L"Cywile z planami: %d", + + L"Zbyt wiele wyjŚć (siatki) (więcej niż 4)...", + L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : %d (%d dalekie miejsce docelowe)", + L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : brak", + L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 1 używane miejsca %d siatki", + L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 2 -- 1) Qty: %d, 2) Qty: %d", + L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"Siatka wejŚcia-wyjŚcia (piwnice itd.) : poziom 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"Enemy Relative Attributes: %d marne, %d słabe, %d Średnie, %d dobre, %d Świetne (%+d Całkowity)", //40 + L"Enemy Relative Equipment: %d marne, %d słabe, %d Średnie, %d dobre, %d Świetne (%+d Całkowity)", + L"%d umiejscowienie mają rozkazy patrolu bez żadnego zdefiniowanego punktu poŚredniego.", + L"%d umiejscowienia mają punkty poŚrednie, ale bez żadnych rozkazów.", + L"%d siatki mają niejasne numery pokoju.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Wróg", + + L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", + + L"Paniki1", + L"Paniki2", + L"Paniki3", + L"Norm1", + L"Norm2", + L"Norm3", + L"Norm4", //10 + L"Akcje nacisku", + + L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", + + L"PRIORITY ENEMY DROPPED ITEMS", + L"Nic", + + L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", + L"NORMAL ENEMY DROPPED ITEMS", + L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", + L"Nic", + L"ZBYT WIELE PRZEDMIOTÓW DO WYŚWIETLENIA!", + L"BŁ¥D: Nie można wczytać przedmiotów dla tej mapy. Powód nieznany.", //20 +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"EDYTOR KAMPANII -- %s Version 1.%02d", //0 + L"(NIE WCZYTANO MAPY).", + L"You currently have %d outdated maps.", + L"The more maps that need to be updated, the longer it takes. It'll take ", + L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"depending on your computer, it may vary.", + L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"Aktualnie nie ma wybranego sektora.", + + L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"You need to either load an existing map or create a new map before being", + L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 + + L", poziom na powietrzu", + L", podziemny poziom 1", + L", podziemny poziom 2", + L", podziemny poziom 3", + L", alternatywny poziom G", + L", alternatywny poziom 1", + L", alternatywny poziom 2", + L", alternatywny poziom 3", + + L"SZCZEGÓŁY PRZEDMIOTÓW -- sektor %s", + L"Podsumowanie informacji dla sektora %s:", //20 + + L"Podsumowanie informacji dla sektora %s", + L"nie egzystują.", + + L"Podsumowanie informacji dla sektora %s", + L"nie egzystują.", + + L"Brak informacji o egzystencji dla sektora %s.", + + L"Brak informacji o egzystencji dla sektora %s.", + + L"PLIK: %s", + + L"PLIK: %s", + + L"Override READONLY", + L"Nadpisz plik", //30 + + L"You currently have no summary data. By creating one, you will be able to keep track", + L"of information pertaining to all of the sectors you edit and save. The creation process", + L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"Czy chcesz to teraz zrobić (y/n)?", + + L"Brak informacji o podsumowaniu. Anulowano tworzenie.", + + L"Siatka", + L"Postęp", //40 + L"Use Alternate Maps", + + L"Podsumowanie", + L"Przedmioty", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"Analizuję mapę: %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Wczytuję mapę: %s", +}; + +STR16 pReportErrorText[] = +{ + L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Generuje informację o mapię", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"Generuję podsumowanie mapy", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MAJOR VERSION UPDATE", + L"There are %d maps requiring a major version update.", + L"Updating all outdated maps", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] z domyŚlnego zestawu %s (%d, %S)", + L"Plik: %S, podindeks: %d (%d, %S)", + L"Zestaw: %s", +}; +// TODO.Translate +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Accept selections (|E|n|t|e|r)", + L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", + L"Scroll window up (|U|p)", + L"Scroll window down (|D|o|w|n)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Mały", + L"Średni", + L"Duży", + L"B.Duży", + L"SzerokoŚć: xx", + L"Obszar" + }; + +//--- + +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Str. 1/2", //0 + L"Str. 2/2", + + L"Str. 1/3", + L"Str. 2/3", + L"Str. 3/3", + + L"Str. 1/1", //5 +}; + +// by Jazz: TODO.Translate +CHAR16 zGrod[][500] = +{ + L"Robot", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;JA2 v1.13 Development Team", + L"@T,C144,R134,{;Kodowanie", + L"@T,C144,R134,{;Grafika i dźwięki", + L"@};(Różne inne mody!)", + L"@T,C144,R134,{;Przedmioty", + L"@T,C144,R134,{;Pozostali autorzy", + L"@};(Wszyscy pozostali członkowie sceny JA którzy nas wsparli!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L".38 cal", +// L"9mm", +// L".45 cal", +// L".357 cal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm NATO", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monstrum", +// L"Rakiety", +// L"strzałka", // dart +// L"", // flame +// L".50 cal", // barrett +// L"9mm Hvy", // Val silent +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L".38 cal", +// L"9mm", +// L".45 cal", +// L".357 cal", +// L"12 gauge", +// L"CAWS", +// L"5.45mm", +// L"5.56mm", +// L"7.62mm N.", +// L"7.62mm WP", +// L"4.7mm", +// L"5.7mm", +// L"Monstrum", +// L"Rakiety", +// L"strzałka", // dart +// L"", // flamethrower +// L".50 cal", // barrett +// L"9mm Hvy", // Val silent +//}; + + +CHAR16 WeaponType[MAXITEMS][30] = +{ + L"Inny", + L"Pistolet", + L"Pistolet maszynowy", + L"Karabin maszynowy", + L"Karabin", + L"Karabin snajperski", + L"Karabin bojowy", + L"Lekki karabin maszynowy", + L"Strzelba" +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Tura gracza", // player's turn + L"Tura przeciwnika", + L"Tura stworzeń", + L"Tura samoobrony", + L"Tura cywili" + L"Player_Plan",// planning turn + L"Client #1",//hayden + L"Client #2",//hayden + L"Client #3",//hayden + L"Client #4",//hayden +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s dostał(a) w głowę i traci 1 punkt inteligencji!", + L"%s dostał(a) w ramię i traci 1 punkt zręczności!", + L"%s dostał(a) w klatkę piersiową i traci 1 punkt siły!", + L"%s dostał(a) w nogi i traci 1 punkt zwinności!", + L"%s dostał(a) w głowę i traci %d pkt. inteligencji!", + L"%s dostał(a) w ramię i traci %d pkt. zręczności!", + L"%s dostał(a) w klatkę piersiową i traci %d pkt. siły!", + L"%s dostał(a) w nogi i traci %d pkt. zwinności!", + L"Przerwanie!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"Dotarły twoje posiłki!", + + // In the following four lines, all %s's are merc names + + L"%s przeładowuje.", + L"%s posiada za mało Punktów Akcji!", + L"%s udziela pierwszej pomocy. (Naciśnij dowolny klawisz aby przerwać.)", + L"%s i %s udzielają pierwszej pomocy. (Naciśnij dowolny klawisz aby przerwać.)", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"niezawodna", + L"zawodna", + L"łatwa w naprawie", + L"trudna do naprawy", + L"solidna", + L"niesolidna", + L"szybkostrzelna", + L"wolno strzelająca", + L"daleki zasięg", + L"krótki zasięg", + L"mała waga", + L"duża waga", + L"niewielkie rozmiary", + L"szybki ciągły ogień", + L"brak możliwości strzelania serią", + L"duży magazynek", + L"mały magazynek", + + // In the following two lines, all %s's are merc names + + L"%s: kamuflaż się starł.", + L"%s: kamuflaż się zmył.", + + // The first %s is a merc name and the second %s is an item name + + L"Brak amunicji w dodatkowej broni!", + L"%s ukradł(a): %s.", + + // The %s is a merc name + + L"%s ma broń bez funkcji ciągłego ognia.", + + L"Już masz coś takiego dołączone.", + L"Połączyć przedmioty?", + + // Both %s's are item names + + L"%s i %s nie pasują do siebie.", + + L"Brak", + L"Wyjmij amunicję", + L"Dodatki", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and you gas mask at the same time. + L" %s i %s nie mogą być używane jednocześnie.", + + L"Element, który masz na kursorze myszy może być dołączony do pewnych przedmiotów, poprzez umieszczenie go w jednym z czterech slotów.", + L"Element, który masz na kursorze myszy może być dołączony do pewnych przedmiotów, poprzez umieszczenie go w jednym z czterech slotów. (Jednak w tym przypadku, przedmioty do siebie nie pasują.)", + L"Ten sektor nie został oczyszczony z wrogów!", + L"Wciąż musisz dać %s %s", + L"%s dostał(a) w głowę!", + L"Przerwać walkę?", + L"Ta zmiana będzie trwała. Kontynuować?", + L"%s ma więcej energii!", + L"%s poślizgnął(nęła) się na kulkach!", + L"%s nie chwycił(a) - %s!", + L"%s naprawił(a) %s", + L"Przerwanie dla: ", + L"Poddać się?", + L"Ta osoba nie chce twojej pomocy.", + L"NIE SĄDZĘ!", + L"Aby podróżować helikopterem Skyridera, musisz najpierw zmienić przydział najemników na POJAZD/HELIKOPTER.", + L"%s miał(a) czas by przeładować tylko jedną broń", + L"Tura dzikich kotów", + L"ogień ciągły", + L"brak ognia ciągłego", + L"celna", + L"niecelna", + L"broń samoczynna", + L"Wróg nie ma przedmiotów, które można ukraść!", + L"Wróg nie ma żadnego przedmiotu w ręce!", + + //add new camo string + L"%s: kamuflaż pustynny się starł.", + L"%s: kamuflaż pustynny się zmył.", + + L"%s: kamuflaż leśny się starł.", + L"%s: kamuflaż leśny się zmył.", + + L"%s: kamuflaż miejski się starł.", + L"%s: kamuflaż miejski się zmył.", + + L"%s: kamuflaż zimowy się starł.", + L"%s: kamuflaż zimowy się zmył.", + + L"Niemożesz przydzielić %s do tego slotu.", + L"The %s will not fit in any open slots.", + L"There's not enough space for this pocket.", //TODO:Translate + + L"%s has repaired the %s as much as possible.", // TODO.Translate + L"%s has repaired %s's %s as much as possible.", + + L"%s has cleaned the %s.", // TODO.Translate + L"%s has cleaned %s's %s.", + + L"Assignment not possible at the moment", // TODO.Translate + L"No militia that can be drilled present.", + + L"%s has fully explored %s.", // TODO.Translate +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Tracony", + L"Traconian", +#else + L"Arulco", + L"Arulcan", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Omerta", + L"Drassen", + L"Alma", + L"Grumm", + L"Tixa", + L"Cambria", + L"San Mona", + L"Estoni", + L"Orta", + L"Balime", + L"Meduna", + L"Chitzena", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"Pauza", + L"Normalna", + L"5 min.", + L"30 min.", + L"60 min.", + L"6 godz.", //NEW +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"Oddz. 1", + L"Oddz. 2", + L"Oddz. 3", + L"Oddz. 4", + L"Oddz. 5", + L"Oddz. 6", + L"Oddz. 7", + L"Oddz. 8", + L"Oddz. 9", + L"Oddz. 10", + L"Oddz. 11", + L"Oddz. 12", + L"Oddz. 13", + L"Oddz. 14", + L"Oddz. 15", + L"Oddz. 16", + L"Oddz. 17", + L"Oddz. 18", + L"Oddz. 19", + L"Oddz. 20", + L"Oddz. 21", + L"Oddz. 22", + L"Oddz. 23", + L"Oddz. 24", + L"Oddz. 25", + L"Oddz. 26", + L"Oddz. 27", + L"Oddz. 28", + L"Oddz. 29", + L"Oddz. 30", + L"Oddz. 31", + L"Oddz. 32", + L"Oddz. 33", + L"Oddz. 34", + L"Oddz. 35", + L"Oddz. 36", + L"Oddz. 37", + L"Oddz. 38", + L"Oddz. 39", + L"Oddz. 40", + L"Służba", // on active duty + L"Lekarz", // administering medical aid + L"Pacjent", // getting medical aid + L"Pojazd", // in a vehicle + L"Podróż", // in transit - abbreviated form + L"Naprawa", // repairing + L"Radio Scan", // scanning for nearby patrols // TODO.Translate + L"Praktyka", // training themselves + L"Samoobr.", // training a town to revolt + L"R.Samoobr.", //training moving militia units + L"Instruk.", // training a teammate + L"Uczeń", // being trained by someone else + L"Get Item", // get items // TODO.Translate + L"Staff", // operating a strategic facility // TODO.Translate + L"Eat", // eating at a facility (cantina etc.) // TODO.Translate + L"Rest", // Resting at a facility // TODO.Translate + L"Prison", // Flugente: interrogate prisoners + L"Nie żyje", // dead + L"Obezwł.", // abbreviation for incapacitated + L"Jeniec", // Prisoner of war - captured + L"Szpital", // patient in a hospital + L"Pusty", // Vehicle is empty + L"Snitch", // facility: undercover prisoner (snitch) // TODO.Translate + L"Propag.", // facility: spread propaganda + L"Propag.", // facility: spread propaganda (globally) + L"Rumours", // facility: gather information + L"Propag.", // spread propaganda + L"Rumours", // gather information + L"Command", // militia movement orders + L"Diagnose", // disease diagnosis //TODO.Translate + L"Treat D.", // treat disease among the population + L"Lekarz", // administering medical aid + L"Pacjent", // getting medical aid + L"Naprawa", // repairing + L"Fortify", // build structures according to external layout // TODO.Translate + L"Train W.", + L"Hide", // TODO.Translate + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", // TODO.Translate + L"Explore", // TODO.Translate + L"Event",// rftr: merc is on a mini event // TODO: translate + L"Mission", // rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"Samoobrona", // the title of the militia box + L"Bez przydziału", //the number of unassigned militia troops + L"Nie możesz przemieszczać oddziałów samoobrony gdy nieprzyjaciel jest w sektorze!", + L"Część samoobrony nie została przydzielona do sektoru. Czy chcesz ich rozwiązać?", +}; + + +STR16 pMilitiaButtonString[] = +{ + L"Automatyczne", // auto place the militia troops for the player + L"OK", // done placing militia troops + L"Rozwiąż", // HEADROCK HAM 3.6: Disband militia + L"Unassign All", // move all milita troops to unassigned pool // TODO.Translate +}; + +STR16 pConditionStrings[] = +{ + L"Doskonały", //the state of a soldier .. excellent health + L"Dobry", // good health + L"Dość dobry", // fair health + L"Ranny", // wounded health + L"Zmęczony",//L"Wyczerpany", // tired + L"Krwawi", // bleeding to death + L"Nieprzyt.", // knocked out + L"Umierający", // near death + L"Nie żyje", // dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"Służba", // set merc on active duty + L"Pacjent", // set as a patient to receive medical aid + L"Pojazd", // tell merc to enter vehicle + L"Wypuść", // let the escorted character go off on their own + L"Anuluj", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"Oddz. 1", + L"Oddz. 2", + L"Oddz. 3", + L"Oddz. 4", + L"Oddz. 5", + L"Oddz. 6", + L"Oddz. 7", + L"Oddz. 8", + L"Oddz. 9", + L"Oddz. 10", + L"Oddz. 11", + L"Oddz. 12", + L"Oddz. 13", + L"Oddz. 14", + L"Oddz. 15", + L"Oddz. 16", + L"Oddz. 17", + L"Oddz. 18", + L"Oddz. 19", + L"Oddz. 20", + L"Oddz. 21", + L"Oddz. 22", + L"Oddz. 23", + L"Oddz. 24", + L"Oddz. 25", + L"Oddz. 26", + L"Oddz. 27", + L"Oddz. 28", + L"Oddz. 29", + L"Oddz. 30", + L"Oddz. 31", + L"Oddz. 32", + L"Oddz. 33", + L"Oddz. 34", + L"Oddz. 35", + L"Oddz. 36", + L"Oddz. 37", + L"Oddz. 38", + L"Oddz. 39", + L"Oddz. 40", + L"Służba", + L"Lekarz", + L"Pacjent", + L"Pojazd", + L"Podróż", + L"Naprawa", + L"Radio Scan", // radio scan // TODO.Translate + L"Praktyka", + L"Trenuje samoobronę", + L"Training Mobile Militia", // TODO.Translate + L"Instruktor", + L"Uczeń", + L"Get Item", // get items // TODO.Translate + L"Facility Staff", // TODO.Translate + L"Eat", // eating at a facility (cantina etc.) // TODO.Translate + L"Resting at Facility", // TODO.Translate + L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate + L"Nie żyje", + L"Obezwładniony", + L"Jeniec", + L"Szpital", + L"Pusty", // Vehicle is empty + L"Więzienny kapuś", // facility: undercover prisoner (snitch) + L"Szerzy propagandę", // facility: spread propaganda + L"Szerzy propagandę", // facility: spread propaganda (globally) + L"Zbiera plotki", // facility: gather rumours + L"Szerzy propagandę", // spread propaganda + L"Zbiera plotki", // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Lekarz", + L"Pacjent", + L"Naprawa", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"Oddział 1", + L"Oddział 2", + L"Oddział 3", + L"Oddział 4", + L"Oddział 5", + L"Oddział 6", + L"Oddział 7", + L"Oddział 8", + L"Oddział 9", + L"Oddział 10", + L"Oddział 11", + L"Oddział 12", + L"Oddział 13", + L"Oddział 14", + L"Oddział 15", + L"Oddział 16", + L"Oddział 17", + L"Oddział 18", + L"Oddział 19", + L"Oddział 20", + L"Oddział 21", + L"Oddział 22", + L"Oddział 23", + L"Oddział 24", + L"Oddział 25", + L"Oddział 26", + L"Oddział 27", + L"Oddział 28", + L"Oddział 29", + L"Oddział 30", + L"Oddział 31", + L"Oddział 32", + L"Oddział 33", + L"Oddział 34", + L"Oddział 35", + L"Oddział 36", + L"Oddział 37", + L"Oddział 38", + L"Oddział 39", + L"Oddział 40", + L"Służba", + L"Lekarz", + L"Pacjent", + L"Pojazd", + L"W podróży", + L"Naprawa", + L"Radio Scan", // radio scan // TODO.Translate + L"Praktyka", + L"Trenuj samoobronę", + L"Train Mobiles", // TODO.Translate + L"Trenuj oddział", + L"Uczeń", + L"Get Item", // get items // TODO.Translate + L"Staff Facility", // TODO.Translate + L"Rest at Facility", // TODO.Translate + L"Interrogate prisoners", // Flugente: interrogate prisoners TODO.Translate + L"Nie żyje", + L"Obezwładniony", + L"Jeniec", + L"W szpitalu", // patient in a hospital + L"Pusty", // Vehicle is empty + L"Więzienny kapuś", // facility: undercover prisoner (snitch) + L"Szerz propagandę", // facility: spread propaganda + L"Szerz propagandę", // facility: spread propaganda (globally) + L"Zbieraj plotki", // facility: gather rumours + L"Szerz propagandę", // spread propaganda + L"Zbieraj plotki", // gather information + L"Commanding Militia", // militia movement orders // TODO.Translate + L"Diagnose", // disease diagnosis + L"Treat Population disease", // treat disease among the population + L"Lekarz", + L"Pacjent", + L"Naprawa", + L"Fortify sector", // build structures according to external layout // TODO.Translate + L"Train workers", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"Opcje kontraktu:", + L"", // a blank line, required + L"Zaproponuj 1 dzień", // offer merc a one day contract extension + L"Zaproponuj 1 tydzień", // 1 week + L"Zaproponuj 2 tygodnie", // 2 week + L"Zwolnij", // end merc's contract + L"Anuluj", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"Jeniec", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"SIŁA", //The merc's strength attribute. Others below represent the other attributes. + L"ZRĘCZNOŚĆ", + L"ZWINNOŚĆ", + L"INTELIGENCJA", + L"UMIEJĘTNOŚCI STRZELECKIE", + L"WIEDZA MEDYCZNA", + L"ZNAJOMOŚĆ MECHANIKI", + L"UMIEJĘTNOŚĆ DOWODZENIA", + L"ZNAJOMOŚĆ MATERIAŁÓW WYBUCHOWYCH", + L"POZIOM DOŚWIADCZENIA", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Osłona", // the armor rating of the merc + L"Ekwip.", // the weight the merc is carrying + L"Kamuf.", // the merc's camouflage rating + L"Kamuflaż:", + L"Ochrona:", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Zwn", // the abbreviated version of : agility + L"Zrc", // dexterity + L"Sił", // strength + L"Dow", // leadership + L"Int", // wisdom + L"Doś", // experience level + L"Str", // marksmanship skill + L"Mec", // mechanical skill + L"Wyb", // explosive skill + L"Med", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Przydział", // the mercs current assignment + L"Kontrakt", // the contract info about the merc + L"Zdrowie", // the health level of the current merc + L"Morale", // the morale of the current merc + L"Stan", // the condition of the current vehicle + L"Paliwo", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Praktyka", // tell merc to train self + L"Samoobrona", // tell merc to train town + L"Instruktor", // tell merc to act as trainer + L"Uczeń", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Limit ognia:", // the allowable rate of fire for a merc who is guarding + L" Agresywny ogień", // the merc can be aggressive in their choice of fire rates + L" Oszczędzaj amunicję", // conserve ammo + L" Strzelaj w ostateczności", // fire only when the merc needs to + L"Inne opcje:", // other options available to merc + L" Może się wycofać", // merc can retreat + L" Może szukać schronienia", // merc is allowed to seek cover + L" Może pomagać partnerom", // merc can assist teammates + L"OK", // done with this menu + L"Anuluj", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"Limit ognia:", + L" *Agresywny ogień*", + L" *Oszczędzaj amunicję*", + L" *Strzelaj w ostateczności*", + L"Inne opcje:", + L" *Może się wycofać*", + L" *Może szukać schronienia*", + L" *Może pomagać partnerom*", + L"OK", + L"Anuluj", +}; + +STR16 pAssignMenuStrings[] = +{ + L"Służba", // merc is on active duty + L"Lekarz", // the merc is acting as a doctor + L"Disease", // merc is a doctor doing diagnosis TODO.Translate + L"Pacjent", // the merc is receiving medical attention + L"Pojazd", // the merc is in a vehicle + L"Naprawa", // the merc is repairing items + L"Nasłuch", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"Kapuś", // anv: snitch actions + L"Szkolenie", // the merc is training + L"Militia", // all things militia + L"Get Item", // get items // TODO.Translate + L"Fortify", // fortify sector // TODO.Translate + L"Intel", // covert assignments // TODO.Translate + L"Administer", // TODO.Translate + L"Explore", // TODO.Translate + L"Facility", // the merc is using/staffing a facility // TODO.Translate + L"Anuluj", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"Atakuj", // set militia to aggresive + L"Utrzymaj pozycję", // set militia to stationary + L"Wycofaj się", // retreat militia + L"Chodź do mnie", // retreat militia + L"Padnij", // retreat militia + L"Crouch", // TODO.Translate + L"Kryj się", + L"Move to", // TODO.Translate + L"Wszyscy: Atakujcie", + L"Wszyscy: Utrzymajcie pozycje", + L"Wszyscy: Wycofajcie się", + L"Wszyscy: Chodźcie do mnie", + L"Wszyscy: Rozproszcie się", + L"Wszyscy: Padnijcie", + L"All: Crouch", // TODO.Translate + L"Wszyscy: Kryjcie się", + //L"Wszyscy: Szukajcie przedmiotów", + L"Anuluj", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = // TODO.Translate +{ + // radio operator + L"Artillery Strike", + L"Jam communications", + L"Scan frequencies", + L"Eavesdrop", + L"Call reinforcements", + L"Switch off radio set", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", // TODO.Translate + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Spotter", // TODO.Translate + L"Focus", // TODO.Translate + L"Drag", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Order an artillery strike from sector...", + L"Fill all radio frequencies with white noise, making communications impossible.", + L"Scan for jamming signals.", + L"Use your radio equipment to continously listen for enemy movement.", + L"Call in reinforcements from neighbouring sectors.", + L"Turn off radio set.", // TODO.Translate + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", // TODO.Translate + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Observe an area, granting allied snipers a bonus to cth on anything you see.", // TODO.Translate + L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Requires:\n", + L" - %d AP\n", + L" - %s\n", + L" - %s or higher\n", + L" - %s or higher or\n", + L" - %d minutes to be ready\n", + L" - mortar positions in neighbouring sectors\n", + L" - %s |o|r %s |a|n|d %s or %s or higher\n", + L" - possession by a demon", + L" - a gun-related trait\n", // TODO.Translate + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = // TODO.Translate +{ + L"Militia", + L"Other Squads", + L"Cancel", + L"%d Militia", + L"All Militia", + + L"More", // TODO.Translate + L"Corpse: %s", // TODO.Translate +}; + +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Drużynowy kapuś", + L"Zlecenie w mieście", + L"Anuluj", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Przedyskutuj zachowanie kapusia względem jego kolegów.", + L"Podejmij zlecenie w sektorze miejskim.", + L"Anuluj", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Zgłaszaj skargi", + L"Nie zgłaszaj skarg", + L"Zapobiegaj złemu zachowaniu", + L"Nie zapobiegaj złemu zachowaniu", + L"Anuluj", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Zgłaszaj swojemu dowódcy wszelkie skargi jakie usłyszysz ze strony pozostałych najemników.", + L"Niczego nie zgłaszaj.", + L"Próbuj powstrzymywać pozostałych najemników przed pijaństwem czy kradzieżami.", + L"Nie zwracaj uwagi na zachowanie pozostałych najemników.", + L"Anuluj", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Szerz propagandę", + L"Zbieraj plotki", + L"Anuluj", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Wychwalaj postępowanie najemników aby podnieść lojalność miasta i zaprzeczaj wszelkim negatywnym doniesieniom.", + L"Nasłuchuj wszelkich pogłosek o wrogiej aktywności.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = // TODO.Translate +{ + L"Interrogate admins", + L"Interrogate troops", + L"Interrogate elites", + L"Interrogate officers", + L"Interrogate generals", + L"Interrogate civilians", + L"Cancel", +}; + +STR16 pPrisonerMenuDescStrings[] = +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Cancel", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s został zdemaskowany jako kapuś, ale w porę to spostrzegł i zdołał ujść z życiem.", + L"%s został zdemaskowany jako kapuś, ale zdołał załagodzić sytuację i ujść z życiem.", + L"%s został zdemaskowany jako kapuś, ale zdołał uniknąć próby zamachu.", + L"%s został zdemaskowany jako kapuś, ale strażnicy zdołali zapobiec wybuchowi agresji wśród więźniów.", + + L"%s został zdemaskowany jako kapuś i niemal utopiony przez współwięźniów nim strażnicy zdołali go uratować.", + L"%s został zdemaskowany jako kapuś i niemal pobity na śmierć przez współwięźniów nim strażnicy zdołali go uratować.", + L"%s został zdemaskowany jako kapuś i niemal zasztyletowany przez współwięźniów nim strażnicy zdołali go uratować.", + L"%s został zdemaskowany jako kapuś i niemal uduszony przez współwięźniów nim strażnicy zdołali go uratować.", + + L"%s został zdemaskowany jako kapuś i utopiony w kiblu przez współwięźniów.", + L"%s został zdemaskowany jako kapuś i pobity na śmierć przez współwięźniów.", + L"%s został zdemaskowany jako kapuś i zasztyletowany przez współwięźniów.", + L"%s został zdemaskowany jako kapuś i uduszony przez współwięźniów.", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s słyszał pogłoski o aktywnośći wroga w %d sektorach.", + +}; + +STR16 pRemoveMercStrings[] = +{ + L"Usuń najemnika", // remove dead merc from current team + L"Anuluj", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Zdrowie", + L"Zwinność", + L"Zręczność", + L"Siła", + L"Um. dowodzenia", + L"Um. strzeleckie", + L"Zn. mechaniki", + L"Zn. mat. wyb.", + L"Wiedza med.", + L"Anuluj", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Praktyka", // train yourself + L"Train workers", // TODO.Translate + L"Instruktor", // train your teammates + L"Uczeń", // be trained by an instructor + L"Anuluj", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"Oddział 1", + L"Oddział 2", + L"Oddział 3", + L"Oddział 4", + L"Oddział 5", + L"Oddział 6", + L"Oddział 7", + L"Oddział 8", + L"Oddział 9", + L"Oddział 10", + L"Oddział 11", + L"Oddział 12", + L"Oddział 13", + L"Oddział 14", + L"Oddział 15", + L"Oddział 16", + L"Oddział 17", + L"Oddział 18", + L"Oddział 19", + L"Oddział 20", + L"Oddział 21", + L"Oddział 22", + L"Oddział 23", + L"Oddział 24", + L"Oddział 25", + L"Oddział 26", + L"Oddział 27", + L"Oddział 28", + L"Oddział 29", + L"Oddział 30", + L"Oddział 31", + L"Oddział 32", + L"Oddział 33", + L"Oddział 34", + L"Oddział 35", + L"Oddział 36", + L"Oddział 37", + L"Oddział 38", + L"Oddział 39", + L"Oddział 40", + L"Anuluj", +}; + +STR16 pPersonnelTitle[] = +{ + L"Personel", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Zdrowie: ", // health of merc + L"Zwinność: ", + L"Zręczność: ", + L"Siła: ", + L"Um. dowodzenia: ", + L"Inteligencja: ", + L"Poziom dośw.: ", // experience level + L"Um. strzeleckie: ", + L"Zn. mechaniki: ", + L"Zn. mat. wybuchowych: ", + L"Wiedza medyczna: ", + L"Zastaw na życie: ", // amount of medical deposit put down on the merc + L"Bieżący kontrakt: ", // cost of current contract + L"Liczba zabójstw: ", // number of kills by merc + L"Liczba asyst: ", // number of assists on kills by merc + L"Dzienny koszt:", // daily cost of merc + L"Ogólny koszt:", // total cost of merc + L"Wartość kontraktu:", // cost of current contract + L"Usługi ogółem", // total service rendered by merc + L"Zaległa kwota", // amount left on MERC merc to be paid + L"Celność:", // percentage of shots that hit target + L"Ilość walk:", // number of battles fought + L"Ranny(a):", // number of times merc has been wounded + L"Umiejętności:", + L"Brak umięjętności", + L"Osiągnięcia:", // added by SANDRO +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"Elitarni: %d\n", + L"Regularni: %d\n", + L"Administratorzy: %d\n", + L"Wrodzy Cywile: %d\n", + L"Stworzenia: %d\n", + L"Czołgi: %d\n", + L"Inne: %d\n", + + L"Do najemników: %d\n", + L"Milicja: %d\n", + L"Inni: %d\n", + + L"Strzałów: %d\n", + L"Wystrzelonych Pocisków: %d\n", + L"Rzuconych Granatów: %d\n", + L"Rzuconych Noży: %d\n", + L"Ataków Nożem: %d\n", + L"Ataków Wręcz: %d\n", + L"Udanych Trafień: %d\n", + + L"Zamki Otwarte Wytrychem: %d\n", + L"Zamki Wyłamane: %d\n", + L"Usunięte Pułapka: %d\n", + L"Zdetonowane Ładunki: %d\n", + L"Naprawione Przedmioty: %d\n", + L"Połączone Przedmioty: %d\n", + L"Ukradzione Przedmioty: %d\n", + L"Wytrenowana Milicja: %d\n", + L"Zabandażowani Najemnicy: %d\n", + L"Wykonane Operacje Chirurgiczne: %d\n", + L"Spotkani NPC: %d\n", + L"Odkryte Sektory: %d\n", + L"Uniknięte Zasadzki: %d\n", + L"Wykonane Zadania: %d\n", + + L"Bitwy Taktyczne: %d\n", + L"Bitwy Autorozstrzygnięte: %d\n", + L"Wykonane Odwroty: %d\n", + L"Napotkanych Zasadzek: %d\n", + L"Największa Walka: %d Wrogów\n", + + L"Postrzelony: %d\n", + L"Ugodzony Nożem: %d\n", + L"Uderzony: %d\n", + L"Wysadzony W Powietrze: %d\n", + L"Uszkodzonych Atrybutów: %d\n", + L"Poddany Zabiegom Chirurgicznym: %d\n", + L"Wypadków Przy Pracy: %d\n", + + L"Charakter:", + L"Niepełnosprawność:", + + L"Attitudes:", // WANNE: For old traits display instead of "Character:"! + + L"Zombies: %d\n", // TODO.Translate + + L"Background:", // TODO.Translate + L"Personality:", // TODO.Translate + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", + L"Total healing: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + L"Brak umiejętności", + L"Otwieranie zamków", + L"Walka wręcz", //JA25: modified + L"Elektronika", + L"Nocne operacje", //JA25: modified + L"Rzucanie", + L"Szkolenie", + L"Ciężka broń", + L"Broń automatyczna", + L"Skradanie się", + L"Oburęczność", + L"Kradzież", + L"Sztuki walki", + L"Broń biała", + L"Snajper", //JA25: modified + L"Kamuflaż", //JA25: modified + L"(Eksp.)", +}; + +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"Brak Umiejętności", + L"Broń Automatyczna", + L"Broń Ciężka", + L"Strzelec Wyborowy", + L"Myśliwy", + L"Pistolero", + L"Walka Wręcz", + L"Zastępca Szeryfa", + L"Technik", + L"Paramedyk", + // Minor traits + L"Oburęczność", + L"Walka Wręcz", + L"Rzucanie", + L"Operacje Nocne", + L"Ukradkowość", + L"Atletyka", + L"Bodybuilding", + L"Ładunki Wybuchowe", + L"Uczenie", + L"Zwiad", + // covert ops is a major trait that was added later + L"Tajne Operacje", // 20 + // new minor traits + L"Radiooperator", // 21 + L"Kapuś", // 22 + L"Survival", + + // second names for major skills + L"Strzelec RKMu", // 24 + L"Bombardier", + L"Snajper", + L"Myśliwy", + L"Pistolero", + L"Sztuki Walki", + L"Dowódca Drużyny", + L"Inżynier", + L"Doktor", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"Szpieg", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch(minor trait) + L"Placeholder", // for survival (minor trait) + L"Więcej...", // 47 + L"Intel", // for INTEL // TODO.Translate + L"Disguise", // for DISGUISE + L"różne", // for VARIOUSSKILLS + L"Bandage Mercs", // for AUTOBANDAGESKILLS //TODO.Translate +}; +////////////////////////////////////////////////////////// + + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"W|stań/Idź", + L"S|chyl się/Idź", + L"Wstań/Biegnij (|R)", + L"|Padnij/Czołgaj się", + L"Patrz (|L)", + L"Akcja", + L"Rozmawiaj", + L"Zbadaj (|C|t|r|l)", + + // Pop up door menu + L"Otwórz", + L"Poszukaj pułapek", + L"Użyj wytrychów", + L"Wyważ", + L"Usuń pułapki", + L"Zamknij na klucz", + L"Otwórz kluczem", + L"Użyj ładunku wybuchowego", + L"Użyj łomu", + L"Anuluj (|E|s|c)", + L"Zamknij" +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"nie posiada żadnych pułapek", + L"ma założony ładunek wybuchowy", + L"jest pod napięciem", + L"posiada syrenę alarmową", + L"posiada dyskretny alarm" +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"dzień", + L"tydzień", + L"dwa tygodnie", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Wybór postaci", + L"Przydział najemnika", + L"Nanieś trasę podróży", + L"Kontrakt najemnika", + L"Usuń najemnika", + L"Śpij", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"CICHY", + L"WYRAŹNY", + L"GŁOŚNY", + L"BARDZO GŁOŚNY" +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"NIEOKREŚLONY DŹWIĘK", + L"ODGŁOS RUCHU", + L"ODGŁOS SKRZYPNIĘCIA", + L"PLUSK", + L"ODGŁOS UDERZENIA", + L"STRZAŁ", + L"WYBUCH", + L"KRZYK", + L"ODGŁOS UDERZENIA", + L"ODGŁOS UDERZENIA", + L"ŁOMOT", + L"TRZASK" +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"PŁN-WSCH", + L"WSCH", + L"PŁD-WSCH", + L"PŁD", + L"PŁD-ZACH", + L"ZACH", + L"PŁN-ZACH", + L"PŁN" +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"Miasto", + L"Droga", + L"Otwarty teren", + L"Pustynia", + L"Las", + L"Las", + L"Bagno", + L"Woda", + L"Wzgórza", + L"Teren nieprzejezdny", + L"Rzeka", //river from north to south + L"Rzeka", //river from east to west + L"Terytorium innego kraju", + //NONE of the following are used for directional travel, just for the sector description. + L"Tropiki", + L"Pola uprawne", + L"Otwarty teren, droga", + L"Las, droga", + L"Las, droga", + L"Tropiki, droga", + L"Las, droga", + L"Wybrzeże", + L"Góry, droga", + L"Wybrzeże, droga", + L"Pustynia, droga", + L"Bagno, droga", + L"Las, Rakiety Z-P", + L"Pustynia, Rakiety Z-P", + L"Tropiki, Rakiety Z-P", + L"Meduna, Rakiety Z-P", + + //These are descriptions for special sectors + L"Szpital w Cambrii", + L"Lotnisko w Drassen", + L"Lotnisko w Medunie", + L"Rakiety Z-P", + L"Refuel site", // TODO.Translate + L"Kryjówka rebeliantów", //The rebel base underground in sector A10 + L"Tixa - Lochy", //The basement of the Tixa Prison (J9) + L"Gniazdo stworzeń", //Any mine sector with creatures in it + L"Orta - Piwnica", //The basement of Orta (K4) + L"Tunel", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Schron", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s wykryto w sektorze %c%d, a inny oddział jest w drodze.", //STR_DETECTED_SINGULAR + L"%s wykryto w sektorze %c%d, a inne oddziały są w drodze.", //STR_DETECTED_PLURAL + L"Chcesz skoordynować jednoczesne przybycie?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"Wróg daje ci szansę się poddać.", //STR_ENEMY_SURRENDER_OFFER + L"Wróg schwytał resztę twoich nieprzytomnych najemników.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Odwrót", //The retreat button //STR_AR_RETREAT_BUTTON + L"OK", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"OBRONA", //STR_AR_DEFEND_HEADER + L"ATAK", //STR_AR_ATTACK_HEADER + L"STARCIE", //STR_AR_ENCOUNTER_HEADER + L"Sektor", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"ZWYCIĘSTWO!", //STR_AR_OVER_VICTORY + L"PORAŻKA!", //STR_AR_OVER_DEFEAT + L"KAPITULACJA!", //STR_AR_OVER_SURRENDERED + L"NIEWOLA!", //STR_AR_OVER_CAPTURED + L"ODWRÓT!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Samoobrona", //STR_AR_MILITIA_NAME, + L"Elity", //STR_AR_ELITE_NAME, + L"Żołnierze", //STR_AR_TROOP_NAME, + L"Administrator", //STR_AR_ADMINISTRATOR_NAME, + L"Stworzenie", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Czas trwania", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"WYCOFAŁ(A) SIĘ", //STR_AR_MERC_RETREATED, + L"WYCOFUJE SIĘ", //STR_AR_MERC_RETREATING, + L"WYCOFAJ SIĘ", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Rozst. autom.", //STR_PB_AUTORESOLVE_BTN, + L"Idź do sektora", //STR_PB_GOTOSECTOR_BTN, + L"Wycof. ludzi", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"STARCIE Z WROGIEM", //STR_PB_ENEMYENCOUNTER_HEADER, + L"INWAZJA WROGA", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"ZASADZKA WROGA", //STR_PB_ENEMYAMBUSH_HEADER + L"WEJŚCIE DO WROGIEGO SEKTORA", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"ATAK STWORÓW", //STR_PB_CREATUREATTACK_HEADER + L"ATAK DZIKICH KOTÓW", //STR_PB_BLOODCATAMBUSH_HEADER + L"WEJŚCIE DO LEGOWISKA DZIKICH KOTÓW", //STR_PB_ENTERINGBLOODCATLAIR_HEADER + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Położenie", + L"Wrogowie", + L"Najemnicy", + L"Samoobrona", + L"Stwory", + L"Dzikie koty", + L"Sektor", + L"Brak", //If there are no uninvolved mercs in this fight. + L"N/D", //Acronym of Not Applicable + L"d", //One letter abbreviation of day + L"g", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Wyczyść", + L"Rozprosz", + L"Zgrupuj", + L"OK", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"Kasuje wszystkie pozy|cje najemników, \ni pozwala ponownie je wprowadzić.", + L"Po każdym naciśnięciu rozmie|szcza\nlosowo twoich najemników.", + L"|Grupuje najemników w wybranym miejscu.", + L"Kliknij ten klawisz gdy już rozmieścisz \nswoich najemników. (|E|n|t|e|r)", + L"Musisz rozmieścić wszystkich najemników \nzanim rozpoczniesz walkę.", + + //Various strings (translate word for word) + + L"Sektor", + L"Wybierz początkowe pozycje", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"To miejsce nie jest zbyt dobre. Jest niedostępne. Spróbuj gdzie indziej.", + L"Rozmieść swoich najemników na podświetlonej części mapy.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"przybył(a) do sektora", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"Automatycznie prowadzi walkę za ciebie, \nnie ładując planszy. (|A)", + L"Atakując sektor wroga \nnie można automatycznie rozstrzygnąć walki.", + L"Wejście do sektora \nby nawiązać walkę z wrogiem. (|E)", + L"Wycofuje oddział \ndo sąsiedniego sektora. (|R)", //singular version + L"Wycofuje wszystkie oddziały \ndo sąsiedniego sektora. (|R)", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"Nieprzyjaciel zatakował oddziały samoobrony w sektorze %c%d.", + //%c%d is the sector -- ex: A9 + L"Stworzenia zaatakowały oddziały samoobrony w sektorze %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Stworzenia zatakowały i zabiły %d cywili w sektorze %s.", + //%c%d is the sector -- ex: A9 + L"Nieprzyjaciel zatakował twoich najemników w sektorze %s. Żaden z twoich najemników nie może walczyć!", + //%c%d is the sector -- ex: A9 + L"Stworzenia zatakowały twoich najemników w sektorze %s. Żaden z twoich najemników nie może walczyć!", + + // Flugente: militia movement forbidden due to limited roaming // TODO.Translate + L"Militia cannot move here (RESTRICT_ROAMING = TRUE).", + L"War room isn't staffed - militia move aborted!", + + L"Robot", //STR_AR_ROBOT_NAME, // TODO: translate + L"Tank", //STR_AR_TANK_NAME, + L"Jeep", //STR_AR_JEEP_NAME // TODO.Translate + + L"\nBreath regeneration per hour: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", // TODO.Translate + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"Dzień", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"Zn. w sektorze:", + L"Zn. w dniu:", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"Stan:", + L"Waga:", + L"PA Koszty", + L"Zas.:", // Range + L"Siła:", // Damage + L"Ilość:", // Number of bullets left in a magazine + L"PA:", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Celność:", //9 + L"Zasięg:", //10 + L"Siła:", //11 + L"Waga:", //12 + L"Ogłuszenie:",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + L"Attachments:", //14 // TODO.Translate + L"AUTO/5:", //15 + L"Remaining ammo:", //16 // TODO.Translate + + L"Domyślne:", //17 //WarmSteel - So we can also display default attachments + L"Dirt:", // 18 //added by Flugente // TODO.Translate + L"Space:", // 19 //space left on Molle items // TODO.Translate + L"Spread Pattern:", // 20 // TODO.Translate + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + // TODO.Translate + L"|R|a|n|g|e\n \nThe effective range of this weapon. Attacking from\nbeyond this range will lead to massive penalties.\n \nHigher is better.", + L"|D|a|m|a|g|e\n \nThis is the damage potential of the weapon.\nIt will usually deliver this much damage\n(or close to it) to any unprotected target.\n \nHigher is better.", + L"|A|c|c|u|r|a|c|y\n \nThis is an innate Chance-to-Hit Bonus (or\npenalty!) given by this gun due to its\nparticular good (or bad) design.\n \nHigher is better.", + L"|A|i|m|i|n|g |L|e|v|e|l|s\n \nThis is the maximum number of aiming clicks allowed\nwhen using this gun.\n \nEach aiming-click will make an attack more\naccurate.\n \nHigher is better.", + L"|A|i|m|i|n|g |M|o|d|i|f|i|e|r\n \nA flat modifier, which alters the effectiveness\nof each aiming click you make while using this\nweapon.\n \nHigher is better.", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s\n \nThe minimum range-to-target required before this\nweapon can make use of its Aiming Modifier.\n \nIf the target is closer than this many tiles,\naiming clicks will stay at their default\neffectiveness.\n \nLower is better.", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r\n \nA flat modifier to Chance-to-Hit with any\nattack made using this weapon.\n \nHigher is better.", + L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e\n \nThe range (in tiles) at which the laser installed\non this weapon will be at its full effectiveness.\n \nWhen attacking a target beyond this range, the\nlaser will provide a smaller bonus or none at all.\n \nHigher is better.", + L"|F|l|a|s|h |S|u|p|p|r|e|s|s|i|o|n\n \nWhen this icon appears, it means that the gun\ndoes not make a flash when it fires. This helps the\nshooter remain concealed.", + L"|L|o|u|d|n|e|s|s\n \nAttacks made with this weapon can be heard up to\nthe listed distance (in tiles).\n \nLower is better.\n(unless deliberately trying to draw in enemies...)", + L"|R|e|l|i|a|b|i|l|i|t|y\n \nThis value indicates (in general) how quickly\nthis weapon will degrade when used in combat.\n \nHigher is better.", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"", //12 + L"AP/przygot.", + L"AP za 1 strzał", + L"AP za serię", + L"AP za Auto", + L"AP/przeładuj", + L"AP/przeładuj ręcznie", + L"Burst Penalty (Lower is better)", //19 + L"Modf. dwójnogu", + L"Auto/5AP", + L"Autofire Penalty (Lower is better)", + L"PA: (mniej - lepiej)", //23 + L"AP za rzut", + L"AP za strzał", + L"AP/cios-nóż", + L"Wył. 1 strzał!", + L"Wył. serię!", + L"Wył. auto!", + L"AP/cios-łom", + L"", + L"|R|e|p|a|i|r |E|a|s|e\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Modyf. rozmiaru (mniej - lepiej)", // 0 + L"Modyf. sprawności", + L"Modyf. głośności (mniej - lepiej)", + L"Ukrywa błysk", + L"Modf. dwójnogu", + L"Modyf. zasięgu", // 5 + L"Modyf. trafień", + L"Max zasg. lasera", + L"Modf bonusu celowania", + L"Modyf. dług. serii", + L"Modyf. kary za serię (więcej - lepiej)", // 10 + L"Modyf. kary za ogień auto (więcej - lepiej)", + L"Modyf. AP", + L"Modyf. AP za serię (mniej - lepiej)", + L"Modyf. AP za ogień auto (mniej - lepiej)", + L"Modf AP/przygotwanie (mniej - lepiej)", // 15 + L"Modf AP/przeładowanie (mniej - lepiej)", + L"Modyf. wlk. magazynka", + L"Modyf. AP/atak (mniej - lepiej)", + L"Modyf. obrażeń", + L"Modf obr. walki wręcz", // 20 + L"Kam leśny", + L"Kam miasto", + L"Kam pustyn.", + L"Kam śnieg", + L"Modyf. skradania", // 25 + L"Modyf. zasg. słuchu", + L"Modyf. zasg. wzroku", + L"Modyf. zasg. wzroku/dzień", + L"Modyf. zasg. wzroku/noc", + L"Modyf. zasg. wzroku/jasne światło", //30 + L"Modyf. zasg. wzr./jaskinia", + L"Widzenie tunelowe w % (mniej - lepiej)", + L"Min. zasg. dla bonusu cel.", + L"Hold |C|t|r|l to compare items", // item compare help text // TODO.Translate + L"Equipment weight: %4.1f kg", // 35 // TODO.Translate +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"In ", + L"PERFECT", + L"EXCELLENT", + L"GOOD", + L"FAIR", + L"POOR", + L"BAD", + L"TERRIBLE", + L" condition." +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Kwota", + L"Pozostało:", //this is the overall balance + L"Kwota", + L"Wydzielić:", // the amount he wants to separate from the overall balance to get two piles of money + + L"Bieżące", + L"Saldo:", + L"Kwota", + L"do podjęcia:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"UMIERAJĄCY", // >= 0 + L"KRYTYCZNY", // >= 15 + L"KIEPSKI", // >= 30 + L"RANNY", // >= 45 + L"ZDROWY", // >= 60 + L"SILNY", // >= 75 + L"DOSKONAŁY", // >= 90 + L"CAPTURED", // added by Flugente TODO.Translate +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"$1000", + L"$100", + L"$10", + L"OK", + L"Wydziel", + L"Podejmij", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"Zalety:", +}; + +CHAR16 gzConsLabel[10] = +{ + L"Wady:", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Powtórz", //meaning "Repeat yourself" + L"Przyjaźnie", //approach in a friendly + L"Bezpośrednio", //approach directly - let's get down to business + L"Groźnie", //approach threateningly - talk now, or I'll blow your face off + L"Daj", + L"Rekrutuj", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Kup/Sprzedaj", + L"Kup", + L"Sprzedaj", + L"Napraw", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"OK", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"Eldorado", + L"Hummer", // a hummer jeep/truck -- military vehicle + L"Furgonetka z lodami", + L"Jeep", + L"Czołg", + L"Helikopter", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Eldor.", + L"Hummer", // the HMVV + L"Furg.", + L"Jeep", + L"Czołg", + L"Heli.", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Eldorado", + L"Hummer", //a military jeep. This is a brand name. + L"Furg.", // Ice cream truck + L"Jeep", + L"Czołg", + L"Heli.", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"Nie jesteś w stanie strzelać z tego miejsca.", + L"Nie możesz sie przesiąść między tymi dwoma miejscami bez opuszczania pojazdu.", +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Nalot", + L"Udzielić automatycznie pierwszej pomocy?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s zauważył(a) że dostawa jest niekompletna.", + + // The %s is a string from pDoorTrapStrings + + L"Zamek %s.", + L"Brak zamka.", + L"Sukces!", + L"Niepowodzenie.", + L"Sukces!", + L"Niepowodzenie.", + L"Zamek nie ma pułapek.", + L"Sukces!", + // The %s is a merc name + L"%s nie posiada odpowiedniego klucza.", + L"Zamek został rozbrojony.", + L"Zamek nie ma pułapek.", + L"Zamknięte.", + L"DRZWI", + L"ZABEZP.", + L"ZAMKNIĘTE", + L"OTWARTE", + L"ROZWALONE", + L"Tu jest przełącznik. Włączyć go?", + L"Rozbroić pułapkę?", + L"Poprz...", + L"Nast...", + L"Więcej...", + + // In the next 2 strings, %s is an item name + + L"%s - położono na ziemi.", + L"%s - przekazano do - %s.", + + // In the next 2 strings, %s is a name + + L"%s otrzymał(a) całą zapłatę.", + L"%s - należność wobec niej/niego wynosi jeszcze %d.", + L"Wybierz częstotliwość sygnału detonującego:", //in this case, frequency refers to a radio signal + L"Ile tur do eksplozji:", //how much time, in turns, until the bomb blows + L"Ustaw częstotliwość zdalnego detonatora:", //in this case, frequency refers to a radio signal + L"Rozbroić pułapkę?", + L"Usunąć niebieską flagę?", + L"Umieścić tutaj niebieską flagę?", + L"Kończąca tura", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"Na pewno chcesz zaatakować - %s?", + L"Pojazdy nie mogą zmieniać pozycji.", + L"Robot nie może zmieniać pozycji.", + + // In the next 3 strings, %s is a name + + L"%s nie może zmienić pozycji w tym miejscu.", + L"%s nie może tu otrzymać pierwszej pomocy.", + L"%s nie potrzebuje pierwszej pomocy.", + L"Nie można ruszyć w to miejsce.", + L"Oddział jest już kompletny. Nie ma miejsca dla nowych rekrutów.", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s pracuje już dla ciebie.", + + // Here %s is a name and %d is a number + + L"%s - należność wobec niej/niego wynosi %d$.", + + // In the next string, %s is a name + + L"%s - Eskortować tą osobę?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"%s - Zatrudnić tą osobę za %s dziennie?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"Chcesz walczyć?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"%s - Kupić to za %s?", + + // In the next string, %s is a name + + L"%s jest pod eskortą oddziału %d.", + + // These messages are displayed during play to alert the player to a particular situation + + L"ZACIĘTA", //weapon is jammed. + L"Robot potrzebuje amunicji kaliber %s.", //Robot is out of ammo + L"Rzucić tam? To niemożliwe.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Skradanie się (|Z)", + L"Ekran |Mapy", + L"Koniec tury (|D)", + L"Rozmowa", + L"Wycisz", + L"Pozycja do góry (|P|g|U|p)", + L"Poziom kursora (|T|a|b)", + L"Wspinaj się / Zeskocz (|J)", + L"Pozycja w dół (|P|g|D|n)", + L"Badać (|C|t|r|l)", + L"Poprzedni najemnik", + L"Następny najemnik (|S|p|a|c|j|a)", + L"|Opcje", + L"Ciągły ogień (|B)", + L"Spójrz/Obróć się (|L)", + L"Zdrowie: %d/%d\nEnergia: %d/%d\nMorale: %s", + L"Co?", //this means "what?" + L"Kont", //an abbrieviation for "Continued" + L"%s ma włączone potwierdzenia głosowe.", + L"%s ma wyłączone potwierdzenia głosowe.", + L"Stan: %d/%d\nPaliwo: %d/%d", + L"Wysiądź z pojazdu" , + L"Zmień oddział ( |S|h|i|f|t |S|p|a|c|j|a )", + L"Prowadź", + L"N/D", //this is an acronym for "Not Applicable." + L"Użyj ( Walka wręcz )", + L"Użyj ( Broni palnej )", + L"Użyj ( Broni białej )", + L"Użyj ( Mat. wybuchowych )", + L"Użyj ( Apteczki )", + L"(Łap)", + L"(Przeładuj)", + L"(Daj)", + L"%s - pułapka została uruchomiona.", + L"%s przybył(a) na miejsce.", + L"%s stracił(a) wszystkie Punkty Akcji.", + L"%s jest nieosiągalny(na).", + L"%s ma już założone opatrunki.", + L"%s nie ma bandaży.", + L"Wróg w sektorze!", + L"Nie ma wroga w zasięgu wzroku.", + L"Zbyt mało Punktów Akcji.", + L"Nikt nie używa zdalnego sterowania.", + L"Ciągły ogień opróżnił magazynek!", + L"ŻOŁNIERZ", + L"STWÓR", + L"SAMOOBRONA", + L"CYWIL", + L"ZOMBIE", // TODO.Translate + L"PRISONER",// TODO.Translate + L"Wyjście z sektora", + L"OK", + L"Anuluj", + L"Wybrany najemnik", + L"Wszyscy najemnicy w oddziale", + L"Idź do sektora", + L"Otwórz mapę", + L"Nie można opuścić sektora z tej strony.", + L"You can't leave in turn based mode.", // TODO.Translate + L"%s jest zbyt daleko.", + L"Usuń korony drzew", + L"Pokaż korony drzew", + L"WRONA", //Crow, as in the large black bird + L"SZYJA", + L"GŁOWA", + L"TUŁÓW", + L"NOGI", + L"Powiedzieć królowej to, co chce wiedzieć?", + L"Wzór odcisku palca pobrany", + L"Niewłaściwy wzór odcisku palca. Broń bezużyteczna.", + L"Cel osiągnięty", + L"Droga zablokowana", + L"Wpłata/Podjęcie pieniędzy", //Help text over the $ button on the Single Merc Panel + L"Nikt nie potrzebuje pierwszej pomocy.", + L"Zac.", // Short form of JAMMED, for small inv slots + L"Nie można się tam dostać.", // used ( now ) for when we click on a cliff + L"Przejście zablokowane. Czy chcesz zamienić się miejscami z tą osobą?", + L"Osoba nie chce się przesunąć.", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Zgadzasz się zapłacić %s?", + L"Zgadzasz się na darmowe leczenie?", + L"Zgadasz się na małżeństwo z %s?", //Darylem + L"Kółko na klucze", + L"Nie możesz tego zrobić z eskortowaną osobą.", + L"Oszczędzić %s?", //Krotta + L"Poza zasięgiem broni", + L"Górnik", + L"Pojazdem można podróżować tylko pomiędzy sektorami", + L"Teraz nie można automatycznie udzielić pierwszej pomocy", + L"Przejście zablokowane dla - %s", + L"Twoi najemnicy, schwytani przez żołnierzy %s, są tutaj uwięzieni!", //Deidranny + L"Zamek został trafiony", + L"Zamek został zniszczony", + L"Ktoś inny majstruje przy tych drzwiach.", + L"Stan: %d/%d\nPaliwo: %d/%d", + L"%s nie widzi - %s.", // Cannot see person trying to talk to + L"Dodatek usunięty", + L"Nie możesz zdobyć kolejnego pojazdu, ponieważ posiadasz już 2", + + // added by Flugente for defusing/setting up trap networks // TODO.Translate + L"Choose detonation frequency (1 - 4) or defuse frequency (A - D):", + L"Set defusing frequency:", + L"Set detonation frequency (1 - 4) and defusing frequency (A - D):", + L"Set detonation time in turns (1 - 4) and defusing frequency (A - D):", + L"Select tripwire hierarchy (1 - 4) and network (A - D):", + + // added by Flugente to display food status + L"Health: %d/%d\nEnergy: %d/%d\nMorale: %s\nWater: %d%s\nFood: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"What do you want to do?", + L"Fill canteens", + L"Clean guns (Merc)", + L"Clean guns (Team)", + L"Take off clothes", + L"Lose disguise", + L"Militia inspection", + L"Militia restock", + L"Test disguise", + L"unused", + + // added by Flugente: decide what to do with the corpses + L"What do you want to do with the body?", + L"Decapitate", + L"Gut", + L"Take Clothes", + L"Take Body", + + // Flugente: weapon cleaning + L"%s cleaned %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", // TODO.Translate + L"Field interrogation", + L"Where do you want to send the %d prisoners?", // TODO.Translate + L"Let them go", + L"What do you want to do?", + L"Demand surrender", + L"Offer surrender", + L"Distract", // TODO.Translate + L"Talk", + L"Recruit Turncoat", // TODO: translate + + // TODO.Translate + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Disarm trap", + L"Inspect trap", + L"Remove blue flag", + L"Blow up!", + L"Activate tripwire", + L"Deactivate tripwire", + L"Reveal tripwire", + L"No detonator or remote detonator found!", + L"This bomb is already armed!", + L"Safe", + L"Mostly safe", + L"Risky", + L"Dangerous", + L"High danger!", + + L"Mask", // TODO.Translate + L"NVG", + L"Item", + + L"This feature works only with New Inventory System", + L"No item in your main hand", + L"Nowhere to place item from main hand", + L"No defined item for this quick slot", + L"No free hand for new item", + L"Item not found", + L"Cannot take item to main hand", + + L"Attempting to bandage travelling mercs...", //TODO.Translate + + L"Improve gear", + L"%s changed %s for superior version", + L"%s picked up %s", // TODO.Translate + + L"%s has stopped chatting with %s", // TODO.Translate +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"Jeśli zaznaczysz tę opcję, to sąsiedni sektor zostanie natychmiast załadowany.", + L"Jeśli zaznaczysz tę opcję, to na czas podróży pojawi się automatycznie ekran mapy.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"Ten sektor jest okupowany przez wroga i nie możesz tu zostawić najemników.\nMusisz uporać się z tą sytuacją zanim załadujesz inny sektor.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"Gdy wyprowadzisz swoich pozostałych najemników z tego sektora,\nsąsiedni sektor zostanie automatycznie załadowany.", + L"Gdy wyprowadzisz swoich pozostałych najemników z tego sektora,\nto na czas podróży pojawi się automatycznie ekran mapy.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s jest pod eskortą twoich najemników i nie może bez nich opuścić tego sektora.", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s nie może sam opuścić tego sektora, gdyż %s jest pod jego eskortą.", //male singular + L"%s nie może sama opuścić tego sektora, gdyż %s jest pod jej eskortą.", //female singular + L"%s nie może sam opuścić tego sektora, gdyż eskortuje inne osoby.", //male plural + L"%s nie może sama opuścić tego sektora, gdyż eskortuje inne osoby.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"Wszyscy twoi najemnicy muszą być w pobliżu,\naby oddział mógł się przemieszczać.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"Jeśli zaznaczysz tę opcję, %s będzie podróżować w pojedynkę\ni automatycznie znajdzie się w osobnym oddziale.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"Jeśli zaznaczysz tę opcję, aktualnie\nwybrany oddział opuści ten sektor.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s jest pod eskortą twoich najemników i nie może bez nich opuścić tego sektora. Aby opuścić sektor twoi najemnicy muszą być w pobliżu.", +}; + + + +STR16 pRepairStrings[] = +{ + L"Wyposażenie", // tell merc to repair items in inventory + L"Baza rakiet Z-P", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Anuluj", // cancel this menu + L"Robot", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"traci", // the merc has lost a statistic + L"zyskuje", // the merc has gained a statistic + L"pkt.", // singular + L"pkt.", // plural + L"pkt.", // singular + L"pkt.", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"zdrowia.", + L"zwinności.", + L"zręczności.", + L"inteligencji.", + L"umiejętności medycznych.", + L"umiejętności w dziedzinie materiałów wybuchowych.", + L"umiejętności w dziedzinie mechaniki.", + L"umiejętności strzeleckich.", + L"doświadczenia.", + L"siły.", + L"umiejętności dowodzenia.", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"Całkowita trasa: ",// total distance for helicopter to travel + L" Bezp.: ", // distance to travel to destination + L" Niebezp.:", // distance to return from destination to airport + L"Całkowity koszt: ", // total cost of trip by helicopter + L"PCP: ", // ETA is an acronym for "estimated time of arrival" + L"Helikopter ma mało paliwa i musi wylądować na terenie wroga.", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Pasażerowie: ", + L"Wybór Skyridera lub pasażerów?", + L"Skyrider", + L"Pasażerowie", + L"Helikopter został poważnie uszkodzony i musi wylądować na terenie wroga!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Helikopter powróci teraz wprost do bazy, czy chcesz najpierw wysadzić pasażerów?", + L"Remaining Fuel:", // TODO.Translate + L"Dist. To Refuel Site:", // TODO.Translate +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Czy chcesz aby %s rozpoczął naprawę? Będzie to kosztować %d$, a helikopter pozostanie niedostępny przez około %d godzin(y).", + L"Helikopter jest obecnie rozmontowany. Zaczekaj aż naprawa zostanie ukończona.", + L"Helikopter jest znów dostępny do lotu.", + L"Helicopter jest zatankowany do pełna.", + + L"Helicopter has exceeded maximum range!", // TODO.Translate +}; + +STR16 sMapLevelString[] = +{ + L"Poziom:", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"Lojalności", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"nie można wydawać rozkazów podróży pod ziemią.", +}; + +STR16 gsTimeStrings[] = +{ + L"g", // hours abbreviation + L"m", // minutes abbreviation + L"s", // seconds abbreviation + L"d", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"Brak", + L"Szpital", + L"Factory", // TODO.Translate + L"Więzienie", + L"Baza wojskowa", + L"Lotnisko", + L"Strzelnica", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"Inwentarz", + L"Zamknij", + L"Repair", // TODO.Translate + L"Factories", // TODO.Translate +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"Rozmiar", // 0 // size of the town in sectors + L"", // blank line, required + L"Pod kontrolą", // how much of town is controlled + L"Brak", // none of this town + L"Przynależna kopalnia", // mine associated with this town + L"Lojalność", // 5 // the loyalty level of this town + L"Wyszkolonych", // the forces in the town trained by the player + L"", + L"Główne obiekty", // main facilities in this town + L"Poziom", // the training level of civilians in this town + L"Szkolenie cywili", // 10 // state of civilian training in town + L"Samoobrona", // the state of the trained civilians in the town + + // Flugente: prisoner texts // TODO.Translate + L"Prisoners", + L"%d (capacity %d)", + L"%d Admins", + L"%d Regulars", + L"%d Elites", + L"%d Officers", + L"%d Generals", + L"%d Civilians", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"Kopalnia", // 0 + L"Srebro", + L"Złoto", + L"Dzienna produkcja", + L"Możliwa produkcja", + L"Opuszczona", // 5 + L"Zamknięta", + L"Na wyczerpaniu", + L"Produkuje", + L"Stan", + L"Tempo produkcji", + L"Resource", // 10 L"Typ złoża", // TODO.Translate + L"Kontrola miasta", + L"Lojalność miasta", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"Siły wroga", + L"Sektor", + L"Przedmiotów", + L"Nieznane", + + L"Pod kontrolą", + L"Tak", + L"Nie", + L"Status/Software status:", // TODO.Translate + + L"Additional Intel", // TODO:Translate +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s jest zbyt daleko.", //Merc is in sector with item but not close enough + L"Nie można wybrać tego najemnika.", //MARK CARTER + L"%s nie może stąd zabrać tego przedmiotu, gdyż nie jest w tym sektorze.", + L"Podczas walki nie można korzystać z tego panelu.", + L"Podczas walki nie można korzystać z tego panelu.", + L"%s nie może tu zostawić tego przedmiotu, gdyż nie jest w tym sektorze.", + L"W trakcie walki nie możesz doładowywać magazynka.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Położenie", // sector these items are in + L"Razem przedmiotów", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"Kliknij w kolumnie 'Przydz.', aby przydzielić najemnika do innego oddziału lub wybranego zadania.", + L"Aby wyznaczyć najemnikowi cel w innym sektorze, kliknij pole w kolumnie 'Cel'.", + L"Gdy najemnicy otrzymają już rozkaz przemieszczenia się, kompresja czasu pozwala im szybciej dotrzeć na miejsce.", + L"Kliknij lewym klawiszem aby wybrać sektor. Kliknij ponownie aby wydać najemnikom rozkazy przemieszczenia, lub kliknij prawym klawiszem by uzyskać informacje o sektorze.", + L"Naciśnij w dowolnym momencie klawisz 'H' by wyświetlić okienko pomocy.", + L"Próbny tekst", + L"Próbny tekst", + L"Próbny tekst", + L"Próbny tekst", + L"Niewiele możesz tu zrobić, dopóki najemnicy nie przylecą do Arulco. Gdy już zbierzesz swój oddział, kliknij przycisk Kompresji Czasu, w prawym dolnym rogu. W ten sposób twoi najemnicy szybciej dotrą na miejsce.", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"Przemieść najemników", // title for movement box + L"Nanieś trasę podróży", // done with movement menu, start plotting movement + L"Anuluj", // cancel this menu + L"Inni", // title for group of mercs not on squads nor in vehicles + L"Select all", // Select all squads TODO: Translate +}; + + +STR16 pUpdateMercStrings[] = +{ + L"Oj:", // an error has occured + L"Wygasł kontrakt najemników:", // this pop up came up due to a merc contract ending + L"Najemnicy wypełnili zadanie:", // this pop up....due to more than one merc finishing assignments + L"Najemnicy wrócili do pracy:", // this pop up ....due to more than one merc waking up and returing to work + L"Odpoczywający najemnicy:", // this pop up ....due to more than one merc being tired and going to sleep + L"Wkrótce wygasną kontrakty:", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Pokaż miasta (|W)", + L"Pokaż kopalnie (|M)", + L"Pokaż oddziały i wrogów (|T)", + L"Pokaż przestrzeń powietrzną (|A)", + L"Pokaż przedmioty (|I)", + L"Pokaż samoobronę i wrogów (|Z)", + L"Show |Disease Data", // TODO.Translate + L"Show Weathe|r", + L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Next (|.)", // next page // TODO.Translate + L"Previous (|,)", // previous page // TODO.Translate + L"Exit Sector Inventory (|E|s|c)", // exit sector inventory // TODO.Translate + + // TODO.Translate + L"Zoom Inventory", // HEAROCK HAM 5: Inventory Zoom Button + L"Stack and merge items", // HEADROCK HAM 5: Stack and Merge + L"|L|e|f|t |C|l|i|c|k: Sort ammo into crates\n|R|i|g|h|t |C|l|i|c|k: Sort ammo into boxes", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|L|e|f|t |C|l|i|c|k: Remove all item attachments\n|R|i|g|h|t |C|l|i|c|k: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments; Bob: empty LBE items + L"Eject ammo from all weapons", //HEADROCK HAM 5: Eject Ammo + L"|L|e|f|t |C|l|i|c|k: Show all items\n|R|i|g|h|t |C|l|i|c|k: Hide all items", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Guns\n|R|i|g|h|t |C|l|i|c|k|: Show only Guns", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Ammunition\n|R|i|g|h|t |C|l|i|c|k: Show only Ammunition", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|L|e|f|t |C|l|i|c|k: Toggle Explosives\n|R|i|g|h|t |C|l|i|c|k: Show only Explosives", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Melee Weapons\n|R|i|g|h|t |C|l|i|c|k: Show only Melee Weapons", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Armor\n|R|i|g|h|t |C|l|i|c|k: Show only Armor", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle LBEs\n|R|i|g|h|t |C|l|i|c|k: Show only LBEs", // HEADROCK HAM 5: Filter Button + L"|L|e|f|t |C|l|i|c|k: Toggle Kits\n|R|i|g|h|t |C|l|i|c|k: Show only Kits", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|L|e|f|t |C|l|i|c|k: Toggle Misc. Items\n|R|i|g|h|t |C|l|i|c|k: Show only Misc. Items", // HEADROCK HAM 5: Filter Button + L"Toggle Get Item Display", // Flugente: move item display // TODO.Translate + L"Save Gear Template", // TODO.Translate + L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"|Laptop", + L"Ekran taktyczny (|E|s|c)", + L"|Opcje", + L"Kompresja czasu (|+)", // time compress more + L"Kompresja czasu (|-)", // time compress less + L"Poprzedni komunikat (|S|t|r|z|a|ł|k|a |w |g|ó|r|ę)\nPoprzednia strona (|P|g|U|p)", // previous message in scrollable list + L"Następny komunikat (|S|t|r|z|a|ł|k|a |w |d|ó|ł)\nNastępna strona (|P|g|D|n)", // next message in the scrollable list + L"Włącz/Wyłącz kompresję czasu (|S|p|a|c|j|a)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Saldo dostępne", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s nie żyje.", +}; + + +STR16 pDayStrings[] = +{ + L"Dzień", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Enrico", + L"Psych Pro Inc", + L"Pomoc", + L"Psych Pro Inc", + L"Speck", + L"R.I.S.", //5 + L"Barry", + L"Blood", + L"Lynx", + L"Grizzly", + L"Vicki", //10 + L"Trevor", + L"Grunty", + L"Ivan", + L"Steroid", + L"Igor", //15 + L"Shadow", + L"Red", + L"Reaper", + L"Fidel", + L"Fox", //20 + L"Sidney", + L"Gus", + L"Buns", + L"Ice", + L"Spider", //25 + L"Cliff", + L"Bull", + L"Hitman", + L"Buzz", + L"Raider", //30 + L"Raven", + L"Static", + L"Len", + L"Danny", + L"Magic", + L"Stephen", + L"Scully", + L"Malice", + L"Dr.Q", + L"Nails", + L"Thor", + L"Scope", + L"Wolf", + L"MD", + L"Meltdown", + //---------- + L"M.I.S. Ubezpieczenia", + L"Bobby Rays", + L"Kingpin", + L"John Kulba", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"Poprzedni", + L"Następny", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"Masz nową pocztę...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"Usunąć wiadomość?", + L"Usunąć wiadomość?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"Od:", + L"Temat:", + L"Dzień:", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"Skrzynka odbiorcza", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Księgowy Plus", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Wypłata:", // credit (subtract from) to player's account + L"Wpłata:", // debit (add to) to player's account + L"Wczorajsze wpływy:", + L"Wczorajsze dodatkowe wpływy:", + L"Wczorajsze wydatki:", + L"Saldo na koniec dnia:", + L"Dzisiejsze wpływy:", + L"Dzisiejsze dodatkowe wpływy:", + L"Dzisiejsze wydatki:", + L"Saldo dostępne:", + L"Przewidywane wpływy:", + L"Przewidywane saldo:", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"Dzień", // the day column + L"Ma", // the credits column + L"Winien", // the debits column + L"Transakcja", // transaction type - see TransactionText below + L"Saldo", // balance at this point in time + L"Strona", // page number + L"Dzień (dni)", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"Narosłe odsetki", // interest the player has accumulated so far + L"Anonimowa wpłata", + L"Koszt transakcji", + L"Wynajęto -", // Merc was hired + L"Zakupy u Bobby'ego Ray'a", // Bobby Ray is the name of an arms dealer + L"Uregulowanie rachunków w M.E.R.C.", + L"Zastaw na życie dla - %s", // medical deposit for merc + L"Analiza profilu w IMP", // IMP is the acronym for International Mercenary Profiling + L"Ubezpieczneie dla - %s", + L"Redukcja ubezp. dla - %s", + L"Przedł. ubezp. dla - %s", // johnny contract extended + L"Anulowano ubezp. dla - %s", + L"Odszkodowanie za - %s", // insurance claim for merc + L"1 dzień", // merc's contract extended for a day + L"1 tydzień", // merc's contract extended for a week + L"2 tygodnie", // ... for 2 weeks + L"Przychód z kopalni", + L"", //String nuked + L"Zakup kwiatów", + L"Pełny zwrot zastawu za - %s", + L"Częściowy zwrot zastawu za - %s", + L"Brak zwrotu zastawu za - %s", + L"Zapłata dla - %s", // %s is the name of the npc being paid + L"Transfer funduszy do - %s", // transfer funds to a merc + L"Transfer funduszy od - %s", // transfer funds from a merc + L"Samoobrona w - %s", // initial cost to equip a town's militia + L"Zakupy u - %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s wpłacił(a) pieniądze.", + L"Sprzedano rzecz(y) miejscowym", + L"Wykorzystanie Placówki", // HEADROCK HAM 3.6 + L"Utrzymanie Samoobr.", // HEADROCK HAM 3.6 + L"Ransom for released prisoners", // Flugente: prisoner system TODO.Translate + L"WHO data subscription", // Flugente: disease TODO.Translate + L"Payment to Kerberus", // Flugente: PMC + L"SAM site repair", // Flugente: SAM repair // TODO.Translate + L"Trained workers", // Flugente: train workers + L"Drill militia in %s", // Flugente: drill militia // TODO.Translate + L"Mini event", // rftr: mini events // TODO: translate + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Ubezpieczenie dla -", // insurance for a merc + L"Przedł. kontrakt z - %s o 1 dzień.", // entend mercs contract by a day + L"Przedł. kontrakt z - %s o 1 tydzień.", + L"Przedł. kontrakt z - %s o 2 tygodnie.", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"Skyriderowi zapłacono %d$", // skyrider was paid an amount of money + L"Skyriderowi trzeba jeszcze zapłacić %d$", // skyrider is still owed an amount of money + L"Skyrider zatankował", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Skyrider jest gotów do kolejnego lotu.", // Skyrider was grounded but has been freed + L"Skyrider nie ma pasażerów. Jeśli chcesz przetransportować najemników, zmień ich przydział na POJAZD/HELIKOPTER.", +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"Świetne", + L"Dobre", + L"Stabilne", + L"Słabe", + L"Panika", + L"Złe", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"%s - jego/jej sprzęt jest już w Omercie( A9 ).", + L"%s - jego/jej sprzęt jest już w Drassen( B13 ).", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"Zdrowie", + L"Energia", + L"Morale", + L"Stan", // the condition of the current vehicle (its "health") + L"Paliwo", // the fuel level of the current vehicle (its "energy") + L"Poison", // TODO.Translate + L"Water", // drink level + L"Food", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Poprzedni najemnik (|S|t|r|z|a|ł|k|a |w |l|e|w|o)", // previous merc in the list + L"Następny najemnik (|S|t|r|z|a|ł|k|a |w |p|r|a|w|o)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"PCP:", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"Więcej tego nie zobaczysz. Czy na pewno chcesz to zrobić?", // do you want to continue and lose the item forever + L"To wygląda na coś NAPRAWDĘ ważnego. Czy NA PEWNO chcesz to zniszczyć?", // does the user REALLY want to trash this item +}; + + +STR16 pMapErrorString[] = +{ + L"Oddział nie może się przemieszczać, jeśli któryś z najemników śpi.", + +//1-5 + L"Najpierw wyprowadź oddział na powierzchnię.", + L"Rozkazy przemieszczenia? To jest sektor wroga!", + L"Aby podróżować najemnicy muszą być przydzieleni do oddziału lub pojazdu.", + L"Nie masz jeszcze ludzi.", // you have no members, can't do anything + L"Najemnik nie może wypełnić tego rozkazu.", // merc can't comply with your order +//6-10 + L"musi mieć eskortę, aby się przemieszczać. Umieść go w oddziale z eskortą.", // merc can't move unescorted .. for a male + L"musi mieć eskortę, aby się przemieszczać. Umieść ją w oddziale z eskortą.", // for a female + L"Najemnik nie przybył jeszcze do %s!", + L"Wygląda na to, że trzeba wpierw uregulować sprawy kontraktu.", + L"Nie można przemieścić najemnika. Trwa nalot powietrzny.", +//11-15 + L"Rozkazy przemieszczenia? Trwa walka!", + L"Zaatakowały cię dzikie koty, w sektorze %s!", + L"W sektorze %s znajduje się coś, co wygląda na legowisko dzikich kotów!", + L"", + L"Baza rakiet Ziemia-Powietrze została przejęta.", +//16-20 + L"%s - kopalnia została przejęta. Twój dzienny przychód został zredukowany do %s.", + L"Nieprzyjaciel bezkonfliktowo przejął sektor %s.", + L"Przynajmniej jeden z twoich najemników nie został do tego przydzielony.", + L"%s nie może się przyłączyć, ponieważ %s jest pełny", + L"%s nie może się przyłączyć, ponieważ %s jest zbyt daleko.", +//21-25 + L"%s - kopalnia została przejęta przez siły Deidranny!", + L"Siły wroga właśnie zaatakowały bazę rakiet Ziemia-Powietrze w - %s.", + L"Siły wroga właśnie zaatakowały - %s.", + L"Właśnie zauważono siły wroga w - %s.", + L"Siły wroga właśnie przejęły - %s.", +//26-30 + L"Przynajmniej jeden z twoich najemników nie mógł się położyć spać.", + L"Przynajmniej jeden z twoich najemników nie mógł wstać.", + L"Oddziały samoobrony nie pojawią się dopóki nie zostaną wyszkolone.", + L"%s nie może się w tej chwili przemieszczać.", + L"Żołnierze samoobrony, którzy znajdują się poza granicami miasta, nie mogą być przeniesieni do innego sektora.", +//31-35 + L"Nie możesz trenować samoobrony w - %s.", + L"Pusty pojazd nie może się poruszać!", + L"%s ma zbyt wiele ran by podróżować!", + L"Musisz wpierw opuścić muzeum!", + L"%s nie żyje!", +//36-40 + L"%s nie może się zamienić z - %s, ponieważ się porusza", + L"%s nie może w ten sposób wejśc do pojazdu", + L"%s nie może się dołączyć do - %s", + L"Nie możesz kompresować czasu dopóki nie zatrudnisz sobie kilku nowych najemników!", + L"Ten pojazd może się poruszać tylko po drodze!", +//41-45 + L"Nie można zmieniać przydziału najemników, którzy są w drodze", + L"Pojazd nie ma paliwa!", + L"%s jest zbyt zmęczony(na) by podróżować.", + L"Żaden z pasażerów nie jest w stanie kierować tym pojazdem.", + L"Jeden lub więcej członków tego oddziału nie może się w tej chwili przemieszczać.", +//46-50 + L"Jeden lub więcej INNYCH członków tego oddziału nie może się w tej chwili przemieszczać.", + L"Pojazd jest uszkodzony!", + L"Pamiętaj, że w jednym sektorze tylko dwóch najemników może trenować żołnierzy samoobrony.", + L"Robot nie może się poruszać bez operatora. Umieść ich razem w jednym oddziale.", + L"Items cannot be moved to %s, as no valid dropoff point was found. Please enter map to resolve this issue.", // TODO.Translate +// 51-55 + L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Kliknij ponownie sektor docelowy, aby zatwierdzić trasę podróży, lub kliknij inny sektor, aby ją wydłużyć.", + L"Trasa podróży zatwierdzona.", + L"Cel podróży nie został zmieniony.", + L"Trasa podróży została anulowana.", + L"Trasa podróży została skrócona.", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Kliknij sektor, do którego mają przylatywać najemnicy.", + L"Dobrze. Przylatujący najemnicy będą zrzucani w %s", + L"Najemnicy nie mogą tu przylatywać. Przestrzeń powietrzna nie jest zabezpieczona!", + L"Anulowano. Sektor zrzutu nie został zmieniony.", + L"Przestrzeń powietrzna nad %s nie jest już bezpieczna! Sektor zrzutu został przesunięty do %s.", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Otwórz wyposażenie (|E|n|t|e|r)", + L"Zniszcz przedmiot", + L"Zamknij wyposażenie (|E|n|t|e|r)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"Czy %s ma zostawić swój sprzęt w sektorze, w którym się obecnie znajduje (%s), czy w (%s), skąd odlatuje?", + L"%s wkrótce odchodzi i zostawi swój sprzęt w (%s).", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"Czy %s ma zostawić swój sprzęt w sektorze, w którym się obecnie znajduje (%s), czy w (%s), skąd odlatuje? ", + L"%s wkrótce odchodzi i zostawi swój sprzęt w (%s.", +}; + + +STR16 pMercContractOverStrings[] = +{ + L" zakończył kontrakt więc wyjechał.", // merc's contract is over and has departed + L" zakończyła kontrakt więc wyjechała.", // merc's contract is over and has departed + L" - jego kontrakt został zerwany więc odszedł.", // merc's contract has been terminated + L" - jej kontrakt został zerwany więc odeszła.", // merc's contract has been terminated + L"Masz za duży dług wobec M.E.R.C. więc %s odchodzi.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages + +// WDS: Allow flexible numbers of IMPs of each sex +// note: I only updated the English text to remove "three" below +STR16 pImpPopUpStrings[] = +{ + L"Nieprawidłowy kod dostępu", + L"Czy na pewno chcesz wznowić proces określenia profilu?", + L"Wprowadź nazwisko oraz płeć", + L"Wstępna kontrola stanu twoich finansów wykazała, że nie stać cię na analizę profilu.", + L"Opcja tym razem nieaktywna.", + L"Aby wykonać profil, musisz mieć miejsce dla przynajmniej jednego członka załogi.", + L"Profil został już wykonany.", + L"Nie można załadować postaci I.M.P. z dysku.", + L"Wykorzystałeś już maksymalną liczbę postaci I.M.P.", + L"Masz już w oddziale trzy postacie I.M.P. tej samej płci.", //L"You have already the maximum number of I.M.P characters with that gender on your team.", BYŁo ->>L"You have already three I.M.P characters with the same gender on your team.", + L"Nie stać cię na postać I.M.P.", // 10 + L"Nowa postać I.M.P. dołączyła do oddziału.", + L"You have already selected the maximum number of traits.", // TODO.Translate + L"No voicesets found.", // TODO.Translate +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"O Nas", // about the IMP site + L"ZACZNIJ", // begin profiling + L"Umiejętności", // personality section + L"Atrybuty", // personal stats/attributes section + L"Appearance", // changed from portrait + L"Głos %d", // the voice selection + L"Gotowe", // done profiling + L"Zacznij od początku", // start over profiling + L"Tak, wybieram tą odpowiedź.", + L"Tak", + L"Nie", + L"Skończone", // finished answering questions + L"Poprz.", // previous question..abbreviated form + L"Nast.", // next question + L"TAK, JESTEM.", // yes, I am certain + L"NIE, CHCĘ ZACZĄĆ OD NOWA.", // no, I want to start over the profiling process + L"TAK", + L"NIE", + L"Wstecz", // back one page + L"Anuluj", // cancel selection + L"Tak.", + L"Nie, Chcę spojrzeć jeszcze raz.", + L"Rejestr", // the IMP site registry..when name and gender is selected + L"Analizuję...", // analyzing your profile results + L"OK", + L"Postać", // Change from "Voice" + L"Brak", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"Po wybraniu twoich cech pora wybrać twoje umiejętności.", + L"Wybierz twoje atrybuty.", + L"Aby dokonać prawdziwego profilowania wybież portret, głos i kolory.", + L"Teraz, po wybraniu wyglądu, przejdź do analizy postaci.", +}; + +STR16 pFilesTitle[] = +{ + L"Przeglądarka plików", +}; + +STR16 pFilesSenderList[] = +{ + L"Raport Rozp.", // the recon report sent to the player. Recon is an abbreviation for reconissance + L"Intercept #1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"Intercept #2", // second intercept file + L"Intercept #3", // third intercept file + L"Intercept #4", // fourth intercept file + L"Intercept #5", // fifth intercept file + L"Intercept #6", // sixth intercept file +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"Historia", +}; + +STR16 pHistoryHeaders[] = +{ + L"Dzień", // the day the history event occurred + L"Strona", // the current page in the history report we are in + L"Dzień", // the days the history report occurs over + L"Położenie", // location (in sector) the event occurred + L"Zdarzenie", // the event label +}; + +// Externalized to "TableData\History.xml" +/* +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"%s najęty(ta) w A.I.M.", // merc was hired from the aim site + L"%s najęty(ta) w M.E.R.C.", // merc was hired from the aim site + L"%s ginie.", // merc was killed + L"Uregulowano rachunki w M.E.R.C.", // paid outstanding bills at MERC + L"Przyjęto zlecenie od Enrico Chivaldori", + //6-10 + L"Profil IMP wygenerowany", + L"Podpisano umowę ubezpieczeniową dla %s.", // insurance contract purchased + L"Anulowano umowę ubezpieczeniową dla %s.", // insurance contract canceled + L"Wypłata ubezpieczenia za %s.", // insurance claim payout for merc + L"Przedłużono kontrakt z: %s o 1 dzień.", // Extented "mercs name"'s for a day + //11-15 + L"Przedłużono kontrakt z: %s o 1 tydzień.", // Extented "mercs name"'s for a week + L"Przedłużono kontrakt z: %s o 2 tygodnie.", // Extented "mercs name"'s 2 weeks + L"%s zwolniony(na).", // "merc's name" was dismissed. + L"%s odchodzi.", // "merc's name" quit. + L"przyjęto zadanie.", // a particular quest started + //16-20 + L"zadanie wykonane.", + L"Rozmawiano szefem kopalni %s", // talked to head miner of town + L"Wyzwolono - %s", + L"Użyto kodu Cheat", + L"Żywność powinna być jutro w Omercie", + //21-25 + L"%s odchodzi, aby wziąć ślub z Darylem Hickiem", + L"Wygasł kontrakt z - %s.", + L"%s zrekrutowany(na).", + L"Enrico narzeka na brak postępów", + L"Walka wygrana", + //26-30 + L"%s - w kopalni kończy się ruda", + L"%s - w kopalni skończyła się ruda", + L"%s - kopalnia została zamknięta", + L"%s - kopalnia została otwarta", + L"Informacja o więzieniu zwanym Tixa.", + //31-35 + L"Informacja o tajnej fabryce broni zwanej Orta.", + L"Naukowiec w Orcie ofiarował kilka karabinów rakietowych.", + L"Królowa Deidranna robi użytek ze zwłok.", + L"Frank opowiedział o walkach w San Monie.", + L"Pewien pacjent twierdzi, że widział coś w kopalni.", + //36-40 + L"Gość o imieniu Devin sprzedaje materiały wybuchowe.", + L"Spotkanie ze sławynm eks-najemnikiem A.I.M. - Mike'iem!", + L"Tony handluje bronią.", + L"Otrzymano karabin rakietowy od sierżanta Krotta.", + L"Dano Kyle'owi akt własności sklepu Angela.", + //41-45 + L"Madlab zaoferował się zbudować robota.", + L"Gabby potrafi zrobić miksturę chroniącą przed robakami.", + L"Keith wypadł z interesu.", + L"Howard dostarczał cyjanek królowej Deidrannie.", + L"Spotkanie z handlarzem Keithem w Cambrii.", + //46-50 + L"Spotkanie z aptekarzem Howardem w Balime", + L"Spotkanie z Perko, prowadzącym mały warsztat.", + L"Spotkanie z Samem z Balime - prowadzi sklep z narzędziami.", + L"Franz handluje sprzętem elektronicznym.", + L"Arnold prowadzi warsztat w Grumm.", + //51-55 + L"Fredo naprawia sprzęt elektroniczny w Grumm.", + L"Otrzymano darowiznę od bogatego gościa w Balime.", + L"Spotkano Jake'a, który prowadzi złomowisko.", + L"Jakiś włóczęga dał nam elektroniczną kartę dostępu.", + L"Przekupiono Waltera, aby otworzył drzwi do piwnicy.", + //56-60 + L"Dave oferuje darmowe tankowania, jeśli będzie miał paliwo.", + L"Greased Pablo's palms.", + L"Kingpin trzyma pieniądze w kopalni w San Mona.", + L"%s wygrał(a) walkę", + L"%s przegrał(a) walkę", + //61-65 + L"%s zdyskwalifikowany(na) podczas walki", + L"Znaleziono dużo pieniędzy w opuszczonej kopalni.", + L"Spotkano zabójcę nasłanego przez Kingpina.", + L"Utrata kontroli nad sektorem", //ENEMY_INVASION_CODE + L"Sektor obroniony", + //66-70 + L"Przegrana bitwa", //ENEMY_ENCOUNTER_CODE + L"Fatalna zasadzka", //ENEMY_AMBUSH_CODE + L"Usunieto zasadzkę wroga", + L"Nieudany atak", //ENTERING_ENEMY_SECTOR_CODE + L"Udany atak!", + //71-75 + L"Stworzenia zaatakowały", //CREATURE_ATTACK_CODE + L"Zabity(ta) przez dzikie koty", //BLOODCAT_AMBUSH_CODE + L"Wyrżnięto dzikie koty", + L"%s zabity(ta)", + L"Przekazano Carmenowi głowę terrorysty", + //76-80 + L"Slay odszedł", + L"Zabito: %s", + L"Spotkanie z Waldo - mechanikiem lotniczym.", + L"Rozpoczęto naprawę helikoptera. Szacowany czas: %d godzin(y).", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"N/D", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"E-mail", + L"Sieć", + L"Finanse", + L"Personel", + L"Historia", + L"Pliki", + L"Zamknij", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"A.I.M.", + L"Bobby Ray's", + L"I.M.P", + L"M.E.R.C.", + L"Pogrzeby", + L"Kwiaty", + L"Ubezpieczenia", + L"Anuluj", + L"Encyclopedia", + L"Briefing Room", + L"Campaign History", // TODO.Translate + L"MeLoDY", + L"WHO", + L"Kerberus", + L"Militia Overview", // TODO.Translate + L"R.I.S.", + L"Factories", // TODO.Translate +}; + +STR16 pBookmarkTitle[] = +{ + L"Ulubione", + L"Aby w przyszłości otworzyć to menu, kliknij prawym klawiszem myszy.", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"Ładowanie strony...", + L"Otwieranie strony...", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Weź", // take money from merc + L"Daj", // give money to merc + L"Anuluj", // cancel transaction + L"Skasuj", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Transfer $", // transfer money to merc -- short form + L"Atrybuty", // view stats of the merc + L"Wyposażenie", // view the inventory of the merc + L"Zatrudnienie", +}; + +STR16 sATMText[ ]= +{ + L"Przesłać fundusze?", // transfer funds to merc? + L"OK?", // are we certain? + L"Wprowadź kwotę", // enter the amount you want to transfer to merc + L"Wybierz typ", // select the type of transfer to merc + L"Brak środków", // not enough money to transfer to merc + L"Kwota musi być podzielna przez $10", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"Błąd", + L"Serwer nie posiada DNS.", + L"Sprawdź adres URL i spróbuj ponownie.", + L"OK", + L"Niestabilne połączenie z Hostem. Transfer może trwać dłużej.", +}; + + +STR16 pPersonnelString[] = +{ + L"Najemnicy:", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"A.I.M.", + L"A.I.M. Członkowie", + L"A.I.M. Portrety", // a mug shot is another name for a portrait + L"A.I.M. Lista", + L"A.I.M.", + L"A.I.M. Weterani", + L"A.I.M. Polisy", + L"A.I.M. Historia", + L"A.I.M. Linki", + L"M.E.R.C.", + L"M.E.R.C. Konta", + L"M.E.R.C. Rejestracja", + L"M.E.R.C. Indeks", + L"Bobby Ray's", + L"Bobby Ray's - Broń", + L"Bobby Ray's - Amunicja", + L"Bobby Ray's - Pancerz", + L"Bobby Ray's - Różne", //misc is an abbreviation for miscellaneous + L"Bobby Ray's - Używane", + L"Bobby Ray's - Zamówienie pocztowe", + L"I.M.P.", + L"I.M.P.", + L"United Floral Service", + L"United Floral Service - Galeria", + L"United Floral Service - Zamówienie", + L"United Floral Service - Galeria kartek", + L"Malleus, Incus & Stapes - Brokerzy ubezpieczeniowi", + L"Informacja", + L"Kontrakt", + L"Uwagi", + L"McGillicutty - Zakład pogrzebowy", + L"", + L"Nie odnaleziono URL.", + L"%s Press Council - Conflict Summary", // TODO.Translate + L"%s Press Council - Battle Reports", + L"%s Press Council - Latest News", + L"%s Press Council - About us", + L"Mercs Love or Dislike You - About us", // TODO.Translate + L"Mercs Love or Dislike You - Analyze a team", + L"Mercs Love or Dislike You - Pairwise comparison", + L"Mercs Love or Dislike You - Personality", + L"WHO - About WHO", + L"WHO - Disease in Arulco", + L"WHO - Helpful Tips", + L"Kerberus - About Us", + L"Kerberus - Hire a Team", + L"Kerberus - Individual Contracts", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services - Information Requests", // TODO.Translate + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Factory Overview", // TODO.Translate + L"Bobby Ray's - Ostatnie dostawy", + L"Encyclopedia", + L"Encyclopedia - Dane", + L"Briefing Room", + L"Briefing Room - Dane", +}; + +STR16 pShowBookmarkString[] = +{ + L"Sir-Pomoc", + L"Kliknij ponownie Sieć by otworzyć menu Ulubione.", +}; + +STR16 pLaptopTitles[] = +{ + L"Poczta", + L"Przeglądarka plików", + L"Personel", + L"Księgowy Plus", + L"Historia", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"Śmierć w akcji", + L"Zwolnienie", + L"Inny", + L"Małżeństwo", + L"Koniec kontraktu", + L"Rezygnacja", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"Bieżący oddział", + L"Wyjazdy", + L"Koszt dzienny:", + L"Najwyższy koszt:", + L"Najniższy koszt:", + L"Śmierć w akcji:", + L"Zwolnienie:", + L"Inny:", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Najniższy", + L"Średni", + L"Najwyższy", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"ZDR", + L"ZWN", + L"ZRCZ", + L"SIŁA", + L"DOW", + L"INT", + L"DOŚW", + L"STRZ", + L"MECH", + L"WYB", + L"MED", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"Kontrakt", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"Dalej", + L"Stop", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"Pokonano cię w tym sektorze!", + L"Wróg nie zna litości i pożera was wszystkich!", + L"Nieprzytomni członkowie twojego oddziału zostali pojmani!", + L"Członkowie twojego oddziału zostali uwięzieni.", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"Wstecz", + L"Dalej", + L"Akceptuję", + L"Skasuj", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"Wstecz", + L"Dalej" +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Autoryzacja", + L"Strona główna", + L"Konto #:", + L"Najemnik", + L"Dni", + L"Stawka", //5 + L"Opłata", + L"Razem:", + L"Czy na pewno chcesz zatwierdzić płatność: %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+gear)", // TODO.Translate +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Wstecz", + L"Dalej", +}; + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"Zdrowie", + L"Zwinność", + L"Sprawność", + L"Siła", + L"Um. dowodz.", + L"Inteligencja", + L"Poz. doświadczenia", + L"Um. strzeleckie", + L"Zn. mechaniki", + L"Mat. wybuchowe", + L"Wiedza medyczna", + + L"Poprzedni", + L"Najmij", + L"Następny", + L"Dodatkowe informacje", + L"Strona główna", + L"Najęty", + L"Koszt:", + L"Dziennie", + L"Gear:", // TODO.Translate + L"Razem:", + L"Nie żyje", + + L"You have a full team of mercs already.", // TODO.Translate + L"Weź sprzęt?", + L"Niedostępny", + L"Unsettled Bills", // TODO.Translate + L"Bio", // TODO.Translate + L"Inv", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Otwórz konto", + L"Anuluj", + L"Nie posiadasz konta. Czy chcesz sobie założyć?" +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Speck T. Kline, założyciel i właściciel", + L"Aby otworzyć konto naciśnij tu", + L"Aby zobaczyć konto naciśnij tu", + L"Aby obejrzeć akta naciśnij tu", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Transfer failed. No funds available.", // TODO.Translate +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"Zakład pogrzebowy McGillicutty, pomaga rodzinom pogrążonym w smutku od 1983.", + L"Kierownik, były najemnik A.I.M. Murray \'Pops\' McGillicutty jest doświadczonym pracownikiem zakładu pogrzebowego.", + L"Przez całe życie obcował ze śmiercią, 'Pops' wie jak trudne są te chwile.", + L"Zakład pogrzebowy McGillicutty oferuje szeroki zakres usług, od duchowego wsparcia po rekonstrukcję silnie zniekształconych zwłok.", + L"Pozwól by McGillicutty ci pomógł a twój ukochany będzie spoczywał w pokoju.", + + // Text for the various links available at the bottom of the page + L"WYŚLIJ KWIATY", + L"KOLEKCJA TRUMIEN I URN", + L"USŁUGI KREMA- CYJNE", + L"USŁUGI PLANOWANIA POGRZEBU", + L"KARTKI POGRZE- BOWE", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"Niestety, z powodu śmierci w rodzinie, nie działają jeszcze wszystkie elementy tej strony.", + L"Przepraszamy za powyższe uniedogodnienie." +}; + +// Text for the florist Home page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Galeria", + + //Address of United Florist + + L"\"Zrzucamy z samolotu w dowolnym miejscu\"", + L"1-555-POCZUJ-MNIE", + L"333 Dr Nos, Miasto Nasion, CA USA 90210", + L"http://www.poczuj-mnie.com", + + // detail of the florist page + + L"Działamy szybko i sprawnie!", + L"Gwarantujemy dostawę w dowolny punkt na Ziemi, następnego dnia po złożeniu zamówienia!", + L"Oferujemy najniższe ceny na świecie!", + L"Pokaż nam ofertę z niższą ceną, a dostaniesz w nagrodę tuzin róż, za darmo!", + L"Latająca flora, fauna i kwiaty od 1981.", + L"Nasz ozdobiony bombowiec zrzuci twój bukiet w promieniu co najwyżej dziesięciu mil od żądanego miejsca. Kiedy tylko zechcesz!", + L"Pozwól nam zaspokoić twoje kwieciste fantazje.", + L"Bruce, nasz światowej renomy projektant bukietów, zerwie dla ciebie najświeższe i najwspanialsze kwiaty z naszej szklarni.", + L"I pamiętaj, jeśli czegoś nie mamy, możemy to szybko zasadzić!" +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"Powrót", + L"Wyślij", + L"Skasuj", + L"Galeria", + + L"Nazwa bukietu:", + L"Cena:", //5 + L"Zamówienie numer:", + L"Czas dostawy", + L"nast. dnia", + L"dostawa gdy to będzie możliwe", + L"Miejsce dostawy", //10 + L"Dodatkowe usługi", + L"Zgnieciony bukiet($10)", + L"Czarne Róże($20)", + L"Zwiędnięty bukiet($10)", + L"Ciasto owocowe (jeżeli będzie)($10)", //15 + L"Osobiste kondolencje:", + L"Ze względu na rozmiar karteczek, tekst nie może zawierać więcej niż 75 znaków.", + L"...możesz też przejrzeć nasze", + + L"STANDARDOWE KARTKI", + L"Informacja o rachunku",//20 + + //The text that goes beside the area where the user can enter their name + + L"Nazwisko:", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"Poprz.", //abbreviation for previous + L"Nast.", //abbreviation for next + + L"Kliknij wybraną pozycję aby złożyć zamówienie.", + L"Uwaga: $10 dodatkowej opłaty za zwiędnięty lub zgnieciony bukiet.", + + //text on the button + + L"Główna", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"Kliknij swój wybór", + L"Wstecz" +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"Formularz zamówienia", //Title of the page + L"Ilość", // The number of items ordered + L"Waga (%s)", // The weight of the item + L"Nazwa", // The name of the item + L"Cena", // the item's weight + L"Wartość", //5 // The total price of all of items of the same type + L"W sumie", // The sub total of all the item totals added + L"Transport", // S&H is an acronym for Shipping and Handling + L"Razem", // The grand total of all item totals + the shipping and handling + L"Miejsce dostawy", + L"Czas dostawy", //10 // See below + L"Koszt (za %s.)", // The cost to ship the items + L"Ekspres - 24h", // Gets deliverd the next day + L"2 dni robocze", // Gets delivered in 2 days + L"Standardowa dostawa", // Gets delivered in 3 days + L" Wyczyść",//15 // Clears the order page + L" Akceptuję", // Accept the order + L"Wstecz", // text on the button that returns to the previous page + L"Strona główna", // Text on the button that returns to the home page + L"* oznacza używane rzeczy", // Disclaimer stating that the item is used + L"Nie stać cię na to.", //20 // A popup message that to warn of not enough money + L"", // Gets displayed when there is no valid city selected + L"Miejsce docelowe przesyłki: %s. Potwierdzasz?", // A popup that asks if the city selected is the correct one + L"Waga przesyłki*", // Displays the weight of the package + L"* Min. Waga", // Disclaimer states that there is a minimum weight for the package + L"Dostawy", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"Pistolet", + L"Pistolet maszynowy", + L"Karabin maszynowy", + L"Karabin", + L"Karabin snajperski", + L"Karabin bojowy", + L"Lekki karabin maszynowy", + L"Strzelba", + L"Inny", + + // Ammo + L"Pistolet", + L"Pistolet maszynowy", + L"Karabin maszynowy", + L"Karabin", + L"Karabin snajperski", + L"Karabin bojowy", + L"Lekki karabin maszynowy", + L"Strzelba", + + // Used + L"Broń", + L"Pancerz", + L"Oporządzenie", + L"Różne", + + // Armour + L"Hełmy", + L"Kamizelki", + L"Getry ochronne", + L"Płytki ceramiczne", + + // Misc + L"Ostrza", + L"Noże do rzucania", + L"Blunt W.", // TODO.Translate + L"Granaty", + L"Bomby", + L"Apteczki", + L"Ekwipunek", + L"Na twarz", + L"Oporządzenie", //LBE Gear + L"Optics", // Madd: new BR filters // TODO.Translate + L"Grip/LAM", + L"Muzzle", + L"Stock", + L"Mag/Trig.", + L"Other Att.", + L"Inne", +}; + + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"Zamów", // Title + // instructions on how to order + L"Kliknij wybrane towary. Lewym klawiszem zwiększasz ilość towaru, a prawym zmniejszasz. Gdy już skompletujesz swoje zakupy przejdź do formularza zamówienia.", + + //Text on the buttons to go the various links + + L"Poprzednia", // + L"Broń", //3 + L"Amunicja", //4 + L"Ochraniacze", //5 + L"Różne", //6 //misc is an abbreviation for miscellaneous + L"Używane", //7 + L"Następna", + L"FORMULARZ", + L"Strona główna", //10 + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"Twój zespół posiada",//11 + L"szt. broni do której pasuje amunicja tego typu", //12 + + //The following lines provide information on the items + + L"Waga:", // Weight of all the items of the same type + L"Kal:", // the caliber of the gun + L"Mag:", // number of rounds of ammo the Magazine can hold + L"Zas:", // The range of the gun + L"Siła:", // Damage of the weapon + L"CS:", // Weapon's Rate Of Fire, acronym ROF + L"PA:", // Weapon's Action Points, acronym AP + L"Ogłuszenie:", // Weapon's Stun Damage + L"Ochrona:", // Armour's Protection + L"Kamuf.:", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Koszt:", // Cost of the item + L"Na stanie:", // The number of items still in the store's inventory + L"Ilość na zamów.:", // The number of items on order + L"Uszkodz.", // If the item is damaged + L"Waga:", // the Weight of the item + L"Razem:", // The total cost of all items on order + L"* Stan: %%", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"Przepraszamy za to utrudnienie, ale na jednym zamówieniu może się znajdować tylko " ,//First part + L" pozycji! Jeśli potrzebujesz więcej, złóż kolejne zamówienie.", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Przykro nam. Chwilowo nie mamy tego więcej na magazynie. Proszę spróbować później.", + + //A popup that tells the user that the store is temporarily sold out + + L"Przykro nam, ale chwilowo nie mamy tego towaru na magazynie", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"Tu znajdziesz nowości z dziedziny broni i osprzętu wojskowego", + L"Zaspokoimy wszystkie twoje potrzeby w dziedzinie materiałów wybuchowych", + L"UŻYWANE RZECZY", + + //Text for the various links to the sub pages + + L"RÓŻNE", + L"BROŃ", + L"AMUNICJA", //5 + L"OCHRANIACZE", + + //Details on the web site + + L"Jeśli MY tego nie mamy, to znaczy, że nigdzie tego nie dostaniesz!", + L"W trakcie budowy", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"Członkowie A.I.M.", // Title + // Title for the way to sort + L"Sortuj wg:", + + // sort by... + + L"Ceny", + L"Doświadczenia", + L"Um. strzeleckich", + L"Zn. mechaniki", + L"Zn. mat. wyb.", + L"Um. med.", + L"Zdrowie", + L"Zwinność", + L"Sprawność", + L"Siła", + L"Um. dowodzenia", + L"Inteligencja", + L"Nazwisko", + + //Text of the links to other AIM pages + + L"Portrety najemników", + L"Akta najemnika", + L"Pokaż galerię byłych członków A.I.M.", + + // text to display how the entries will be sorted + + L"Rosnąco", + L"Malejąco", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Poprzednia str.", + L"Strona główna", + L"Przepisy", + L"Następna str.", + L"Rezygnuję", + L"Akceptuję", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"Lewy klawisz myszy", + L"kontakt z najemnikiem", + L"Prawy klawisz myszy", + L"lista portretów", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Zdrowie", + L"Zwinność", + L"Sprawność", + L"Siła", + L"Um. dowodzenia", + L"Inteligencja", + L"Poziom dośw.", + L"Um. strzeleckie", + L"Zn. mechaniki", + L"Zn. mat. wyb.", + L"Wiedza med.", //10 + + // the contract expenses' area + + L"Zapłata", + L"Czas", + L"1 dzień", + L"1 tydzień", + L"2 tygodnie", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"Poprzedni", + L"Kontakt", + L"Następny", + + L"Dodatkowe informacje", // Title for the additional info for the merc's bio + L"Aktywni członkowie", //20 // Title of the page + L"Opcjonalne wyposażenie:", // Displays the optional gear cost + L"gear", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's // TODO.Translate + L"Wymagany jest zastaw na życie", // If the merc required a medical deposit, this is displayed + L"Zestaw nr 1", // Text on Starting Gear Selection Button 1 + L"Zestaw nr 2", // Text on Starting Gear Selection Button 2 + L"Zestaw nr 3", // Text on Starting Gear Selection Button 3 + L"Zestaw nr 4", // Text on Starting Gear Selection Button 4 + L"Zestaw nr 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"Wartość kontraktu:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"Jeden dzień", + L"Jeden tydzień", + L"Dwa tygodnie", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"Bez sprzętu", + L"Weź sprzęt", + + // Text on the Buttons + + L"TRANSFER", // to actually hire the merc + L"ANULUJ", // go back to the previous menu + L"WYNAJMIJ", // go to menu in which you can hire the merc + L"ROZŁĄCZ", // stops talking with the merc + L"OK", + L"NAGRAJ SIĘ", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Wideo konferencja z - ", + L"Łączę. . .", + + L"z zastawem" // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"TRANSFER ZAKOŃCZONY POMYŚLNIE", // You hired the merc + L"PRZEPROWADZENIE TRANSFERU NIE MOŻLIWE", // Player doesn't have enough money, message 1 + L"BRAK ŚRODKÓW", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"Wynajęto", + L"Proszę zostaw wiadomość", + L"Nie żyje", + + //If you try to hire more mercs than game can support + + L"You have a full team of mercs already.", // TODO.Translate + + L"Nagrana wiadomość", + L"Wiadomość zapisana", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"A.I.M. Linki", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"A.I.M. Historia", //Title + + // Text on the buttons at the bottom of the page + + L"Poprzednia str.", + L"Strona główna", + L"Byli członkowie", + L"Następna str." +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Ceny", + L"Doświadczenia", + L"Um. strzeleckich", + L"Zn. mechaniki", + L"Zn. mat. wyb.", + L"Um. med.", + L"Zdrowie", + L"Zwinność", + L"Sprawność", + L"Siła", + L"Um. dowodzenia", + L"Inteligencja", + L"Nazwisko", + + // The title of the page, the above text gets added at the end of this text + + L"Członkowie A.I.M. posortowani rosnąco wg %s", + L"Członkowie A.I.M. posortowani malejąco wg %s", + + // Instructions to the players on what to do + + L"Lewy klawisz", + L"Wybór najemnika", //10 + L"Prawy klawisz", + L"Opcje sortowania", + + // Gets displayed on top of the merc's portrait if they are... + + L"Wyjechał(a)", + L"Nie żyje", //14 + L"Wynajęto", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"STRONA 1", + L"STRONA 2", + L"STRONA 3", + + L"Byli członkowie A.I.M.", // Title of the page + + + L"OK", // Stops displaying information on selected merc + L"Next page", // TODO.Translate +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"Znaki A.I.M. i logo A.I.M. są prawnie chronione w większości krajów.", + L"Więc nawet nie myśl o próbie ich podrobienia.", + L"Copyright 1998-1999 A.I.M., Ltd. All rights reserved.", + + //Text for an advertisement that gets displayed on the AIM page + + L"United Floral Service", + L"\"Zrzucamy gdziekolwiek\"", //10 + L"Zrób to jak należy...", + L"...za pierwszym razem", + L"Broń i akcesoria, jeśli czegoś nie mamy, to tego nie potrzebujesz.", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"Strona główna", + L"Członkowie", + L"Byli członkowie", + L"Przepisy", + L"Historia", + L"Linki", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"TOWARY NA STANIE", //Header for the merchandise available + L"STRONA", //The current store inventory page being displayed + L"KOSZT OGÓŁEM", //The total cost of the the items in the Dealer inventory area + L"WARTOŚĆ OGÓŁEM", //The total value of items player wishes to sell + L"WYCENA", //Button text for dealer to evaluate items the player wants to sell + L"TRANSAKCJA", //Button text which completes the deal. Makes the transaction. + L"OK", //Text for the button which will leave the shopkeeper interface. + L"KOSZT NAPRAWY", //The amount the dealer will charge to repair the merc's goods + L"1 GODZINA", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d GODZIN(Y)", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"NAPRAWIONO", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"Brak miejsca by zaoferować więcej rzeczy.", //Message box that tells the user there is no more room to put there stuff + L"%d MINUT(Y)", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Upuść przedmiot na ziemię.", + L"BUDGET", // TODO.Translate +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Weź", // Take money from the player + L"Daj", // Give money to the player + L"Anuluj", // Cancel the transfer + L"Skasuj", // Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"Wybierz", // tells the user to select either to give or take from the merc + L"Wprowadź kwotę", // Enter the amount to transfer + L"Transfer gotówki do najemnika", // Giving money to the merc + L"Transfer gotówki od najemnika", // Taking money from the merc + L"Brak środków", // Not enough money to transfer + L"Saldo", // Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"Czy chcesz dołożyć %s ze swojego konta, aby pokryć różnicę?", + L"Brak środków. Brakuje ci %s", + L"Czy chcesz przeznaczyć %s ze swojego konta, aby pokryć koszty?", + L"Poproś o rozpoczęcie transakscji", + L"Poproś o naprawę wybranych przedmiotów", + L"Zakończ rozmowę", + L"Saldo dostępne", + + L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate + L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"Zapisz grę", + L"Odczytaj grę", + L"Wyjście", + L">>", + L"<<", + L"OK", + L"1.13 Features", + L"New in 1.13", + L"Options", + + //Text above the slider bars + L"Efekty", + L"Dialogi", + L"Muzyka", + + //Confirmation pop when the user selects.. + L"Zakończyć grę i wrócić do głównego menu?", + + L"Musisz włączyć opcję dialogów lub napisów.", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Zapisz grę", + L"Odczytaj grę", + L"Anuluj", + L"Zapisz wybraną", + L"Odczytaj wybraną", + + L"Gra została pomyślnie zapisana", + L"BŁĄD podczas zapisu gry!", + L"Gra została pomyślnie odczytana", + L"BŁĄD podczas odczytu gry!", + + L"Wersja gry w zapisanym pliku różni się od bieżącej. Prawdopodobnie można bezpiecznie kontynuować. Kontynuować?", + L"Zapisane pliki gier mogą być uszkodzone. Czy chcesz je usunąć?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Nieprawidłowa wersja zapisu gry. W razie problemów prosimy o raport. Kontynuować?", +#else + L"Próba odczytu starszej wersji zapisu gry. Zaktualizować ten zapis i odczytać grę?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Nieprawidłowa wersja zapisu gry. W razie problemów prosimy o raport. Kontynuować?", +#else + L"Próba odczytu starszej wersji zapisu gry. Zaktualizować ten zapis i odczytać grę?", +#endif + + L"Czy na pewno chcesz nadpisać grę na pozycji %d?", + L"Chcesz odczytać grę z pozycji", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"Brak miejsca na dysku twardym. Na dysku wolne jest %d MB, a wymagane jest przynajmniej %d MB.", + + L"Zapisuję", //When saving a game, a message box with this string appears on the screen + + L"Standardowe uzbrojenie", + L"Całe mnóstwo broni", + L"Realistyczna gra", + L"Elementy S-F", + + L"Stopień trudności", + L"Platynowy tryb", //Placeholder English + + L"Bobby Ray Quality",// TODO.Translate + L"Normalne", + L"Świetne", + L"Wyśmienite", + L"Niewiarygodne", + + L"Nowy inwentarz nie działa w rozdzielczości 640x480. Aby z niego korzystać zmień rozdzielczość i spróbuj ponownie.", + L"Nowy inwentarz nie korzysta z domyślnego folderu 'Data'.", + + L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", // TODO.Translate + L"Bobby Ray Quantity", // TODO.Translate +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Poziom mapy", + L"Nie masz jeszcze żołnierzy samoobrony. Musisz najpierw wytrenować mieszkańców miast.", + L"Dzienny przychód", + L"Najmemnik ma polisę ubezpieczeniową", + L"%s nie potrzebuje snu.", + L"%s jest w drodze i nie może spać", + L"%s jest zbyt zmęczony(na), spróbuj trochę później.", + L"%s prowadzi.", + L"Oddział nie może się poruszać jeżeli jeden z najemników śpi.", + + // stuff for contracts + L"Mimo, że możesz opłacić kontrakt, to jednak nie masz gotówki by opłacić składkę ubezpieczeniową za najemnika.", + L"%s - składka ubezpieczeniowa najemnika będzie kosztować %s za %d dzień(dni). Czy chcesz ją opłacić?", + L"Inwentarz sektora", + L"Najemnik posiada zastaw na życie.", + + // other items + L"Lekarze", // people acting a field medics and bandaging wounded mercs + L"Pacjenci", // people who are being bandaged by a medic + L"Gotowe", // Continue on with the game after autobandage is complete + L"Przerwij", // Stop autobandaging of patients by medics now + L"Przykro nam, ale ta opcja jest wyłączona w wersji demo.", // informs player this option/button has been disabled in the demo + L"%s nie ma zestawu narzędzi.", + L"%s nie ma apteczki.", + L"Brak chętnych ludzi do szkolenia, w tej chwili.", + L"%s posiada już maksymalną liczbę oddziałów samoobrony.", + L"Najemnik ma kontrakt na określony czas.", + L"Kontrakt najemnika nie jest ubezpieczony", + L"Mapa", // 24 + + // Flugente: disease texts describing what a map view does TODO.Translate + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate + + // Flugente: weather texts describing what a map view does + L"This view shows current weather. No colour=Sunny. CYAN=Rain. BLUE=Thunderstorm. ORANGE=Sandstorm. WHITE=Snow.", // TODO.Translate + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"Oddział %d zauważył kogoś w sektorze %s", + L"Oddział %s zauważył kogoś w sektorze %s", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"Szkolenie oddziału samoobrony będzie kosztowało $", // telling player how much it will cost + L"Zatwierdzasz wydatek?", // asking player if they wish to pay the amount requested + L"Nie stać cię na to.", // telling the player they can't afford to train this town + L"Kontynuować szkolenie samoobrony w - %s (%s %d)?", // continue training this town? + + L"Koszt $", // the cost in dollars to train militia + L"( T/N )", // abbreviated yes/no + L"", // unused + L"Szkolenie samoobrony w %d sektorach będzie kosztowało $ %d. %s", // cost to train sveral sectors at once + + L"Nie masz %d$, aby wyszkolić samoobronę w tym mieście.", + L"%s musi mieć %d% lojalności, aby można było kontynuować szkolenie samoobrony.", + L"Nie możesz już dłużej szkolić samoobrony w mieście %s.", + L"liberate more town sectors", // TODO.Translate + + L"liberate new town sectors", // TODO.Translate + L"liberate more towns", // TODO.Translate + L"regain your lost progress", // TODO.Translate + L"progress further", // TODO.Translate + + L"recruit more rebels", // TODO.Translate +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"Jednorazowo możesz wypłacić do 20,000$.", + L"Czy na pewno chcesz wpłacić %s na swoje konto?", +}; + +STR16 gzCopyrightText[] = +{ + L"Prawa autorskie należą do (C) 1999 Sir-tech Canada Ltd. Wszelkie prawa zastrzeżone.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Dialogi", + L"Wycisz potwierdzenia", + L"Napisy", + L"Wstrzymuj napisy", + L"Animowany dym", + L"Drastyczne sceny", + L"Nigdy nie ruszaj mojej myszki!", + L"Stara metoda wyboru", + L"Pokazuj trasę ruchu", + L"Pokazuj chybione strzały", + L"Potwierdzenia Real-Time", + L"Najemnik śpi/budzi się", + L"Używaj systemu metrycznego", + L"Wyróżnij najemników", + L"Przyciągaj kursor do najemników", + L"Przyciągaj kursor do drzwi", + L"Pulsujące przedmioty", + L"Pokazuj korony drzew", + L"Smart Tree Tops", // TODO. Translate + L"Pokazuj siatkę", + L"Pokazuj kursor 3D", + L"Pokazuj szansę na trafienie", + L"Zamiana kursora granatnika", + L"Pozwól na przechwałki wrogów", // Changed from "Enemies Drop all Items" - SANDRO + L"Wysoki kąt strzałów z granatnika", + L"Pozwól na skradanie się w czasie rzeczywistym", // Changed from "Restrict extra Aim Levels" - SANDRO + L"Spacja = następny oddział", + L"Pokazuj cienie przedmiotów", + L"Pokazuj zasięg broni w polach", + L"Efekt smugowy dla poj. strzału", + L"Odgłosy padającego deszczu", + L"Pokazuj wrony", + L"Show Soldier Tooltips", + L"Automatyczny zapis", + L"Cichy Skyrider", + L"Rozszerzone Okno Opisu (EDB)", //Enhanced Description Box + L"Wymuś tryb turowy", // add forced turn mode + L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map + L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate + L"Logical Bodytypes", + L"Show Merc Ranks", // shows mercs ranks // TODO.Translate + L"Show Face gear graphics", // TODO.Translate + L"Show Face gear icons", + L"Disable Cursor Swap", // Disable Cursor Swap // TODO.Translate + L"Quiet Training", // Madd: mercs don't say quotes while training // TODO.Translate + L"Quiet Repairing", // Madd: mercs don't say quotes while repairing // 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"Allow Zombies", // Flugente Zombies + L"Enable inventory popups", // the_bob : enable popups for picking items from sector inv // TODO.Translate + L"Mark Remaining Hostiles", // TODO.Translate + L"Show LBE Content", // TODO.Translate + L"Invert mouse wheel", // TODO.Translate + L"Formation Movement", // when multiple mercs are selected, they will try to keep their relative distances // TODO.Translate + L"Show enemy location", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--DEBUG OPTIONS--", // an example options screen options header (pure text) + L"Report Miss Offsets", // Screen messages showing amount and direction of shot deviation. // TODO.Translate + L"Reset ALL game options", // failsafe show/hide option to reset all options + L"Do you really want to reset?", // a do once and reset self option (button like effect) + L"Debug Options in other builds", // allow debugging in release or mapeditor + L"DEBUG Render Option group", // an example option that will show/hide other options + L"Render Mouse Regions", // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Jeśli WŁĄCZONE, w grze pojawiać się będą dialogi.", + + //Mute Confirmation + L"Jeśli WŁĄCZONE, głosowe potwierdzenia postaci zostaną wyciszone.", + + //Subtitles + L"Jeśli WŁĄCZONE, pojawiać się będą napisy podczas rozmów z innymi postaciami.", + + //Key to advance speech + L"Jeśli WŁĄCZONE, napisy pojawiające się podczas dialogów będą znikały dopiero po kliknięciu.", + + //Toggle smoke animation + L"Jeśli WŁĄCZONE, dym z granatów będzie animowany. Może spowolnić działanie gry.", + + //Blood n Gore + L"Jeśli WŁĄCZONE, pokazywane będą bardzo drastyczne sceny.", + + //Never move my mouse + L"Jeśli WŁĄCZONE, kursor nie będzie automatycznie ustawiał się nad pojawiającymi się okienkami dialogowymi.", + + //Old selection method + L"Jeśli WŁĄCZONE, wybór postaci będzie działał tak jak w poprzednich częściach gry.", + + //Show movement path + L"Jeśli WŁĄCZONE, będziesz widział trasę ruchu w trybie Real-Time.", + + //show misses + L"Jeśli WŁĄCZONE, będzie mógł obserwować w co trafiają twoje kule gdy spudłujesz.", + + //Real Time Confirmation + L"Jeśli WŁĄCZONE, każdy ruch najemnika w trybie Real-Time będzie wymagał dodatkowego, potwierdzającego kliknięcia.", + + //Sleep/Wake notification + L"Jeśli WŁĄCZONE, wyświetlana będzie informacja, że najemnik położył się spać lub wstał i wrócił do pracy.", + + //Use the metric system + L"Jeśli WŁĄCZONE, gra będzie używała systemu metrycznego.", + + //Highlight Mercs + L"Gdy jest włączony, podświetla najemnika (niewidoczny dla wrogów).\nPrzełącz w grze za pomocą (|G)", + + //Smart cursor + L"Jeśli WŁĄCZONE, kursor będzie automatycznie ustawiał się na najemnikach gdy znajdzie się w ich pobliżu.", + + //snap cursor to the door + L"Jeśli WŁĄCZONE, kursor będzie automatycznie ustawiał się na drzwiach gdy znajdzie się w ich pobliżu.", + + //glow items + L"Jeśli WŁĄCZONE, przedmioty będą pulsować. ( |C|t|r|l+|A|l|t+|I )", + + //toggle tree tops + L"Jeśli WŁĄCZONE, wyświetlane będą korony drzew. ( |T )", + + //smart tree tops + L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate + + //toggle wireframe + L"Jeśli WŁĄCZONE, wyświetlane będą zarysy niewidocznych ścian. ( |C|t|r|l+|A|l|t+|W )", + + L"Jeśli WŁĄCZONE, kursor ruchu wyświetlany będzie w 3D. (|H|o|m|e)", + + // Options for 1.13 + L"Jeśli WŁĄCZONE, kursor będzie pokazywał szansę na trafienie.", + L"Jeśli WŁĄCZONE, seria z granatnika będzie używała kursora serii z broni palnej.", + L"Jeśli WŁĄCZONE, to wrogowie będą czasami komentować pewne akcje.", // Changed from Enemies Drop All Items - SANDRO + L"Jeśli WŁĄCZONE, granatniki będą strzelały pod wysokim kątem. (|A|l|t+|Q)", + L"Jeśli WŁĄCZONE, zapobiega przejściu do trybu turowego po zauważeniu wroga podczas skradania. Aby wymusić tryb turowy z tą opcją aktywną naciśnij |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", // Changed from Restrict Extra Aim Levels - SANDRO + L"Jeśli WŁĄCZONE, |S|p|a|c|j|a wybiera kolejny oddział.", + L"Jeśli WŁĄCZONE, pokazywane będą cienie przedmiotów.", + L"Jeśli WŁĄCZONE, zasięg broni będzie wyświetlany w polach.", + L"Jeśli WŁĄCZONE, pojedynczy strzał będzie z efektem pocisku smugowego", + L"Jeśli WŁĄCZONE, będziesz słyszał padający deszcz.", + L"Jeśli WŁĄCZONE, w grze pojawiać się będą wrony.", + L"Jeśli WŁĄCZONE, wskazanie postaci wroga kursorem i naciśnięcie A|l|t ukaże okienko informacji dodatkowych.", + 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, gra będzie obciążała procesor w mniejszym stopniu.", + 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+|T).", // add forced turn mode + L"When ON, the Strategic Map will be colored differently based on exploration.", + L"Jeśli WŁĄCZONE, zastępuje starą animację pocisku nową.", + L"When ON, mercenary body graphic can change along with equipped gear.", // 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 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, 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, zombies will spawn. Beware!", // allow zombies // TODO.Translate + L"When ON, enables popup boxes that appear when you left click on empty merc inventory slots while viewing sector inventory in mapscreen.", // TODO.Translate + L"When ON, approximate locations of the last enemies in the sector are highlighted.", // TODO.Translate + L"When ON, show the contents of an LBE item, otherwise show the regular NAS interface.", // TODO.Translate + L"When ON, inverts mouse wheel directions.", // TODO.Translate + L"When ON and multiple mercs are selected, they will try to keep their relative distances while moving.\n(press |C|t|r|l+|A|l|t+|G to toggle mode or |S|h|i|f|t + click to move in formation)", //TODO.Translate + L"When ON, shows last known enemy location.", //TODO.Translate + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Wymuś wszystkie oczekiwane dostawy od Bobby Ray's.", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", + L"Kliknij by naprawić błędy w ustawieniach gry.", // failsafe show/hide option to reset all options + L"Kliknij by naprawić błędy w ustawieniach gry.", // a do once and reset self option (button like effect) + L"Udostępnia tryb debugowania w edytorze map oraz wersji końcowej.", // allow debugging in release or mapeditor + L"Przełącz na tryb wyświetlania/ukrycia opcji renderowania debugowego.", // an example option that will show/hide other options + L"Wyświetl wymiary wokół kursora myszy.", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", +}; + +STR16 gzGIOScreenText[] = +{ + L"POCZĄTKOWE USTAWIENIA GRY", +#ifdef JA2UB + L"Dialogi Manuela", + L"Wył.", + L"Wł.", +#else + L"Styl gry", + L"Realistyczny", + L"S-F", +#endif + L"Platynowy", //Placeholder English + L"Dostępny arsenał", + L"Mnóstwo", + L"Standardowo", + L"Stopień trudności", + L"Nowicjusz", + L"Doświadczony", + L"Ekspert", + L"SZALONY", + L"Start", // TODO.Translate + L"Anuluj", + L"Zapis gry", + L"W dowolny momencie", + L"Człowiek z żelaza", + L"Nie działa w wersji demo", + L"Jakość zasobów Bobby'ego Ray'a", + L"Normalna", + L"Świetna", + L"Wyśmienita", + L"Niewiarygodna", + L"System ekwipunku / dodatków", + L"Nieużywane", + L"Nieużywane", + L"Wczytaj grę MP", + L"POCZĄTKOWE USTAWIENIA GRY (Tylko te po stronie serwera będą w użyciu)", + // Added by SANDRO + L"System zdolności", + L"Stary", + L"Nowy", + L"Maks. liczba IMP", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Polegli wrogowie pozostawiają cały ekwipunek", + L"Wył.", + L"Wł.", +#ifdef JA2UB + L"Tex i John", + L"Losowo", + L"Obaj", +#else + L"Liczba terrorystów", + L"Losowo", + L"Wszyscy", +#endif + L"Ukryte składowiska broni", + L"Losowe", + L"Wszystkie", + L"Przyrost dostępności przedmiotów", + L"Bardzo wolny", + L"Wolny", + L"Normalny", + L"Szybki", + L"Bardzo szybki", + + L"Stary / Stary", + L"Nowy / Stary", + L"Nowy / Nowy", + + // Squad Size + L"Maks. liczebność oddziału", + L"6", + L"8", + L"10", + //L"Faster Bobby Ray Shipments", + L"Manipulacja ekwipunkiem kosztuje punkty akcji", + + L"Nowy system szans trafienia", + L"Ulepszony system przerwań", + L"Historie najemników", + L"System pożywienia", + L"Wielkość zasobów Bobby'ego Ray'a", + + // anv: extra iron man modes + L"Człowiek z żeliwa", + L"Człowiek ze stali", +}; + +STR16 gzMPJScreenText[] = +{ + L"MULTIPLAYER", + L"Dołącz", + L"Uruchom serwer", + L"Anuluj", + L"Odśwież", + L"Nazwa gracza", + L"IP Serwera", + L"Port", + L"Nazwa serwera", + L"# Plrs", // ?? if plrs=players then "# graczy" + L"Wersja", + L"Typ rozgrywki", + L"Ping", + L"Musisz podać nazwę gracza", + L"Musisz podać odpowiedni numer IP serwera. (np. 84.114.195.239).", + L"Musisz podać odpowiedni port serwera pomiędzy 1 i 65535.", +}; + +// TODO.Translate +STR16 gzMPJHelpText[] = +{ + L"Visit http://webchat.quakenet.org/?channels=ja2-multiplayer to find other players.", + L"You can press 'y' to open the ingame chat window, after you have been connected to the server.", // TODO.Translate + + L"HOST", + L"Enter '127.0.0.1' for the IP and the Port number should be greater than 60000.", + L"Be sure that the Port (UDP, TCP) is forwarded on your Router. For more information see: http://portforward.com", + L"You have to send (via IRC, ICQ, etc) your external IP (http://www.whatismyip.com) and the Port number to the other players.", + L"Click on 'Host' to host a new Multiplayer Game.", + + L"JOIN", + L"The host has to send (via IRC, ICQ, etc) you the external IP and the Port number.", + L"Enter the external IP and the Port number from the host.", + L"Click on 'Join' to join an already hosted Multiplayer Game.", +}; + +// TODO.Translate +STR16 gzMPHScreenText[] = +{ + L"HOST GAME", + L"Start", + L"Cancel", + L"Server Name", + L"Game Type", + L"Deathmatch", + L"Team-Deathmatch", + L"Co-Operative", + L"Maximum Players", + L"Maximum Mercs", + L"Merc Selection", + L"Merc Hiring", + L"Hired by Player", + L"Starting Cash", + L"Allow Hiring Same Merc", + L"Report Hired Mercs", + L"Bobby Rays", + L"Sector Starting Edge", + L"You must enter a server name", + L"", + L"", + L"Starting Time", + L"", + L"", + L"Weapon Damage", + L"", + L"Timed Turns", + L"", + L"Enable Civilians in CO-OP", + L"", + L"Maximum Enemies in CO-OP", + L"Synchronize Game Directory", + L"MP Sync. Directory", + L"You must enter a file transfer directory.", + L"(Use '/' instead of '\\' for directory delimiters.)", + L"The specified synchronisation directory does not exist.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"Yes", + L"No", + // Starting Time + L"Morning", + L"Afternoon", + L"Night", + // Starting Cash + L"Low", + L"Medium", + L"Heigh", + L"Unlimited", + // Time Turns + L"Never", + L"Slow", + L"Medium", + L"Fast", + // Weapon Damage + L"Very low", + L"Low", + L"Normal", + // Merc Hire + L"Random", + L"Normal", + // Sector Edge + L"Random", + L"Selectable", + // Bobby Ray / Hire same merc + L"Disable", + L"Allow", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Austin", //Austin, Texas, USA + L"Bagdad", //Baghdad, Iraq (Suddam Hussein's home) + L"Drassen", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"Hong Kong", //Hong Kong, Hong Kong + L"Bejrut", //Beirut, Lebanon (Middle East) + L"Londyn", //London, England + L"Los Angeles", //Los Angeles, California, USA (SW corner of USA) + L"Meduna", //Meduna -- the other airport in JA2 that you can receive items. + L"Metavira", //The island of Metavira was the fictional location used by JA1 + L"Miami", //Miami, Florida, USA (SE corner of USA) + L"Moskwa", //Moscow, USSR + L"Nowy Jork", //New York, New York, USA + L"Ottawa", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Paryż", //Paris, France + L"Trypolis", //Tripoli, Libya (eastern Mediterranean) + L"Tokio", //Tokyo, Japan + L"Vancouver", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Na pewno? Wartość zero oznacza brak jakichkolwiek umiejętności w tej dziedzinie.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"( Maks. 8 znaków )", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"Analizuję", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"Dziękujemy, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Głos", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"Śmierć w akcji", + L"Zwolnienie", + L"Inny", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Personel", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Gra wstrzymana", + L"Wznów grę (|P|a|u|s|e)", + L"Wstrzymaj grę (|P|a|u|s|e)", +}; + + +STR16 pMessageStrings[] = +{ + L"Zakończyć grę?", + L"OK", + L"TAK", + L"NIE", + L"ANULUJ", + L"NAJMIJ", + L"LIE", + L"Brak opisu", //Save slots that don't have a description. + L"Gra zapisana.", + L"Gra zapisana.", + L"QuickSave", //10 The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"Dzień", + L"Najemn.", + L"Wolna pozycja", //An empty save game slot + L"Demo", //Demo of JA2 + L"Debug", //State of development of a project (JA2) that is a debug build + L"", //Release build for JA2 + L"strz/min", //20 Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"min", //Abbreviation for minute. + L"m", //One character abbreviation for meter (metric distance measurement unit). + L"kul", //Abbreviation for rounds (# of bullets) + L"kg", //Abbreviation for kilogram (metric weight measurement unit) + L"lb", //Abbreviation for pounds (Imperial weight measurement unit) + L"Strona główna", //Home as in homepage on the internet. + L"USD", //Abbreviation to US dollars + L"N/D", //Lowercase acronym for not applicable. + L"Tymczasem", //Meanwhile + L"%s przybył(a) do sektora %s%s", //30 Name/Squad has arrived in sector A9. Order must not change without notifying + //SirTech + L"Wersja", + L"Wolna pozycja na szybki zapis", + L"Ta pozycja zarezerwowana jest na szybkie zapisy wykonywane podczas gry kombinacją klawiszy ALT+S.", + L"Otwarte", + L"Zamknięte", + L"Brak miejsca na dysku twardym. Na dysku wolne jest %s MB, a wymagane jest przynajmniej %s MB.", + L"Najęto - %s z A.I.M.", + L"%s złapał(a) %s", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s has taken %s.", // TODO.Translate + L"%s nie posiada wiedzy medycznej",//40 'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"Integralność gry została narażona na szwank.", + L"BŁĄD: Wyjęto płytę CD", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"Nie ma miejsca, żeby stąd oddać strzał.", + + //Can't change stance due to objects in the way... + L"Nie można zmienić pozycji w tej chwili.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Upuść", + L"Rzuć", + L"Podaj", + + L"%s przekazano do - %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"Brak wolnego miejsca, by przekazać %s do - %s.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" dołączono]", // 50 + + //Cheat modes + L"Pierwszy poziom lamerskich zagrywek osiągnięty", + L"Drugi poziom lamerskich zagrywek osiągnięty", + + //Toggling various stealth modes + L"Oddział ma włączony tryb skradania się.", + L"Oddział ma wyłączony tryb skradania się.", + L"%s ma włączony tryb skradania się.", + L"%s ma wyłączony tryb skradania się.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Dodatkowe siatki włączone.", + L"Dodatkowe siatki wyłączone.", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Nie można wyjść do góry z tego poziomu...", + L"Nie ma już niższych poziomów...", // 60 + L"Wejście na %d poziom pod ziemią...", + L"Wyjście z podziemii...", + + L"'s", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Automatyczne centrowanie ekranu wyłączone.", + L"Automatyczne centrowanie ekranu włączone.", + L"Kursor 3D wyłączony.", + L"Kursor 3D włączony.", + L"Oddział %d aktywny.", + L"%s - Nie stać cię by wypłacić jej/jemu dzienną pensję w wysokości %s.", //first %s is the mercs name, the seconds is a string containing the salary + L"Pomiń", // 70 + L"%s nie może odejść sam(a).", + L"Utworzono zapis gry o nazwie SaveGame249.sav. W razie potrzeby zmień jego nazwę na SaveGame01..10. Wtedy będzie można go odczytać ze standardowego okna odczytu gry.", + L"%s wypił(a) trochę - %s", + L"Przesyłka dotarła do Drassen.", + L"%s przybędzie do wyznaczonego punktu zrzutu (sektor %s) w dniu %d, około godziny %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival + L"Lista historii zaktualizowana.", + L"Seria z granatnika używa kursora celowania (dostępny ogień rozproszony)", //L"Grenade Bursts use Targeting Cursor (Spread fire enabled)", BYŁO -->>L"Grenade Bursts - Using Targeting Cursor (Spread fire enabled)", + L"Seria z granatnika używa kursora trajektorii (dostępny ogień rozproszony)", //L"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", BYŁO -->L"Grenade Bursts - Using Trajectory Cursor (Spread fire disabled)", + L"Enabled Soldier Tooltips", // Changed from Drop All On - SANDRO + L"Disabled Soldier Tooltips", // 80 // Changed from Drop All Off - SANDRO + L"Granatniki strzelają pod standardowymi kątami", //L"Grenade Launchers fire at standard angles", BYŁo->>L"Grenade Launchers - Fire at standard angles", + L"Granatniki strzelają pod wysokimi kątami", //L"Grenade Launchers fire at higher angles", BYŁo-->>L"Grenade Launchers - Fire at high angles", + // forced turn mode strings + L"Forced Turn Mode", + L"Normal turn mode", + L"Exit combat mode", + L"Forced Turn Mode Active, Entering Combat", + L"Automatyczny zapis został pomyślnie wykonany.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved. + L"Client", + + L"Nie możesz używać nowego trybu wyposażenia i nowego systemu dodatków jednocześnie.", + + // TODO.Translate + L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID + L"This Slot is reserved for Auto Saves, which can be enabled/disabled (AUTO_SAVE_EVERY_N_HOURS) in the ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save + L"Empty Auto Save Slot #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"End-Turn Save #", // 95 // The text for the tactical end turn auto save + L"Saving Auto Save #", // 96 // The message box, when doing auto save + L"Saving", // 97 // The message box, when doing end turn auto save + L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save + L"This Slot is reserved for Tactical End-Turn Saves, which can be enabled/disabled in the Option Screen.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) // TODO.Translate + L"Lock mouse cursor within game window boundary.", // 104 + L"Release mouse cursor from game window boundary.", // 105 + L"Move in Formation ON", // TODO.Translate + L"Move in Formation OFF", + L"Artificial Merc Light ON", // TODO.Translate + L"Artificial Merc Light OFF", + L"Squad %s active.", //TODO.Translate + L"%s smoked %s.", + L"Activate cheats?", + L"Deactivate cheats?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"OK", + L"W górę", + L"Wybierz wszystko", + L"W dół", + L"Anuluj", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s jest za daleko, aby poddać się leczeniu.", + L"Lekarze nie mogli opatrzyć wszystkich rannych.", +}; + +// TODO.Translate +STR16 pMilitiaButtonsHelpText[] = +{ + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nGreen Troops", // button help text informing player they can pick up or drop militia with this button + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nRegular Troops", + L"Unassign (|R|i|g|h|t |C|l|i|c|k)\nAssign (|L|e|f|t |C|l|i|c|k)\nVeteran Troops", + L"Distribute available militia equally among all sectors", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Zajrzyj do A.I.M. i zatrudnij kilku najemników (*Wskazówka* musisz otworzyć laptopa)", // to inform the player to hired some mercs to get things going +#ifdef JA2UB + L"Jeśli chcesz już udać się do Tracony, kliknij przycisk kompresji czasu, w prawym dolnym rogu ekranu.", // to inform the player to hit time compression to get the game underway +#else + L"Jeśli chcesz już udać się do Arulco, kliknij przycisk kompresji czasu, w prawym dolnym rogu ekranu.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Błąd. Brakuje pliku, lub jest on uszkodzony. Gra zostanie przerwana.", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"Przeglądanie poczty", + L"Przeglądanie stron internetowych", + L"Przeglądanie plików i załączników pocztowych", + L"Rejestr zdarzeń", + L"Informacje o członkach oddziału", + L"Finanse i rejestr transakcji", + L"Koniec pracy z laptopem", + + //Bottom task bar icons (if they exist): + L"Masz nową pocztę", + L"Masz nowe pliki", + + //Bookmarks: + L"Międzynarodowe Stowarzyszenie Najemników", + L"Bobby Ray's - Internetowy sklep z bronią", + L"Instytut Badań Najemników", + L"Bardziej Ekonomiczne Centrum Rekrutacyjne", + L"McGillicutty's - Zakład pogrzebowy", + L"United Floral Service", + L"Brokerzy ubezpieczeniowi", + //New Bookmarks + L"", + L"Encyklopedia", + L"Briefing Room", + L"Campaign History", // TODO.Translate + L"Mercenaries Love or Dislike You", // TODO.Translate + L"World Health Organization", + L"Kerberus - Experience In Security", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services", // TODO.Translate + L"Controlled factories", // TODO.Translate +}; + + +STR16 gzHelpScreenText[] = +{ + L"Zamknij okno pomocy", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"Trwa walka. Najemników można wycofać tylko na ekranie taktycznym.", + L"W|ejdź do sektora, aby kontynuować walkę.", + L"|Automatycznie rozstrzyga walkę.", + L"Nie można automatycznie rozstrzygnąć walki, gdy atakujesz.", + L"Nie można automatycznie rozstrzygnąć walki, gdy wpadasz w pułapkę.", + L"Nie można automatycznie rozstrzygnąć walki, gdy walczysz ze stworzeniami w kopalni.", + L"Nie można automatycznie rozstrzygnąć walki, gdy w sektorze są wrodzy cywile.", + L"Nie można automatycznie rozstrzygnąć walki, gdy w sektorze są dzikie koty.", + L"TRWA WALKA", + L"W tym momencie nie możesz się wycofać.", +}; + +STR16 gzMiscString[] = +{ + L"Żołnierze samoobrony kontynuują walkę bez pomocy twoich najemników...", + L"W tym momencie tankowanie nie jest konieczne.", + L"W baku jest %d%% paliwa.", + L"Żołnierze Deidranny przejęli całkowitą kontrolę nad - %s.", + L"Nie masz już gdzie zatankować.", +}; + +STR16 gzIntroScreen[] = +{ + L"Nie odnaleziono filmu wprowadzającego", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s słyszy %s DŹWIĘK dochodzący z %s.", + L"%s słyszy %s ODGŁOS RUCHU dochodzący z %s.", + L"%s słyszy %s ODGŁOS SKRZYPNIĘCIA dochodzący z %s.", + L"%s słyszy %s PLUSK dochodzący z %s.", + L"%s słyszy %s ODGŁOS UDERZENIA dochodzący z %s.", + L"%s słyszy %s ODGŁOS STRZAŁU dochodzący z %s.", // anv: without this, all further noise notifications were off by 1! // TODO.Translate + L"%s słyszy %s WYBUCH dochodzący z %s.", + L"%s słyszy %s KRZYK dochodzący z %s.", + L"%s słyszy %s ODGŁOS UDERZENIA dochodzący z %s.", + L"%s słyszy %s ODGŁOS UDERZENIA dochodzący z %s.", + L"%s słyszy %s ŁOMOT dochodzący z %s.", + L"%s słyszy %s TRZASK dochodzący z %s.", + L"", // anv: placeholder for silent alarm // TODO.Translate + L"%s słyszy czyjś %s GŁOS dochodzący z %s.", // anv: report enemy taunt to player // TODO.Translate +}; + +// TODO.Translate +STR16 pTauntUnknownVoice[] = +{ + L"Nieznany głos", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Sortuj według kolumny Imię (|F|1)", + L"Sortuj według kolumny Przydział (|F|2)", + L"Sortuj według kolumny Sen (|F|3)", + L"Sortuj według kolumny Lokalizacja (|F|4)", + L"Sortuj według kolumny Cel podróży (|F|5)", + L"Sortuj według kolumny Wyjazd (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"Błąd 404", + L"Nie odnaleziono strony.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"Ostatnie dostawy", + L"Zamówienie nr ", + L"Ilość przedmiotów", + L"Zamówiono:", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"Game Internals Programmer", // Chris Camfield + L"Co-designer/Writer", // Shaun Lyng + L"Strategic Systems & Editor Programmer", //Kris \"The Cow Rape Man\" Marnes + L"Producer/Co-designer", // Ian Currie + L"Co-designer/Map Designer", // Linda Currie + L"Artist", // Eric \"WTF\" Cheng + L"Beta Coordinator, Support", // Lynn Holowka + L"Artist Extraordinaire", // Norman \"NRG\" Olsen + L"Sound Guru", // George Brooks + L"Screen Designer/Artist", // Andrew Stacey + L"Lead Artist/Animator", // Scot Loving + L"Lead Programmer", // Andrew \"Big Cheese Doddle\" Emmons + L"Programmer", // Dave French + L"Strategic Systems & Game Balance Programmer", // Alex Meduna + L"Portraits Artist", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(wciąż uczy się interpunkcji)", // Shaun Lyng + L"(\"Skończone, tylko to poskładam\")", //Kris \"The Cow Rape Man\" Marnes + L"(robię się na to za stary)", // Ian Currie + L"(i pracuje nad Wizardry 8)", // Linda Currie + L"(zmuszony pod bronią do końcowych testów jakości produktu)", // Eric \"WTF\" Cheng + L"(Opuścił nas dla Stowarzyszenia na Rzecz Rozsądnych Wynagrodzeń. Ciekawe czemu... )", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(miłośnik zespołu Dead Head i jazzu)", // Andrew Stacey + L"(tak naprawdę na imię ma Robert)", // Scot Loving + L"(jedyna odpowiedzialna osoba)", // Andrew \"Big Cheese Doddle\" Emmons + L"(teraz może wrócić do motocrossu)", // Dave French + L"(ukradziony z projektu Wizardry 8)", // Alex Meduna + L"(zrobił przedmioty i ekrany wczytywania!!)", // Joey \"Joeker\" Whelan", +}; + +STR16 sRepairsDoneString[] = +{ + L"%s skończył(a) naprawiać własne wyposażenie", + L"%s skończył(a) naprawiać broń i ochraniacze wszystkich członków oddziału", + L"%s skończył(a) naprawiać wyposażenie wszystkich członków oddziału", + L"%s skończył(a) naprawiać ciężkie wyposażenie wszystkich członków oddziału", + L"%s skończył(a) naprawiać średnie wyposażenie wszystkich członków oddziału", + L"%s skończył(a) naprawiać lekkie wyposażenie wszystkich członków oddziału", + L"%s skończył(a) naprawiać strój LBE wszystkich członków oddziału", + L"%s finished cleaning everyone's guns.", // TODO.Translate +}; + +STR16 zGioDifConfirmText[]= +{ + L"Wybrano opcję NOWICJUSZ. Opcja ta jest przeznaczona dla niedoświadczonych graczy, lub dla tych, którzy nie mają ochoty na długie i ciężkie walki. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie Nowicjusz?", + L"Wybrano opcję DOŚWIADCZONY. Opcja ta jest przenaczona dla graczy posiadających już pewne doświadczenie w grach tego typu. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie Doświadczony?", + L"Wybrano opcję EKSPERT. Jakby co, to ostrzegaliśmy cię. Nie obwiniaj nas, jeśli wrócisz w plastikowym worku. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie Ekspert?", + L"Wybrano opcję SZALONY. OSTRZEŻENIE: Nie obwiniaj nas, jeśli wrócisz w malutkich kawałeczkach... Deidranna NAPRAWDę skopie ci tyłek. Mocno. Pamiętaj, że opcja ta ma wpływ na przebieg całej gry. Czy na pewno chcesz grać w trybie SZALONY?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"%S - nie odnaleziono pliku...", + + //1-5 + L"Robot nie może opuścić sektora bez operatora.", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"Nie można teraz kompresować czasu. Poczekaj na fajerwerki!", + + //'Name' refuses to move. + L"%s nie chce się przesunąć.", + + //%s a merc name + L"%s ma zbyt mało energii, aby zmienić pozycję.", + + //A message that pops up when a vehicle runs out of gas. + L"%s nie ma paliwa i stoi w sektorze %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"GÓRY", + L"DOŁU", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"Żaden z twoich najemników nie posiada wiedzy medycznej.", + L"Brak środków medycznych, aby założyć rannym opatrunki.", + L"Zabrakło środków medycznych, aby założyć wszystkim rannym opatrunki.", + L"Żaden z twoich najemników nie potrzebuje pomocy medycznej.", + L"Automatyczne zakładanie opatrunków rannym najemnikom.", + L"Wszystkim twoim najemnikom założono opatrunki.", + + //14 +#ifdef JA2UB + L"Tracona", +#else + L"Arulco", +#endif + + L"(dach)", + + L"Zdrowie: %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d vs. %d", + + L"%s - brak wolnych miejsc!", //(ex "The ice cream truck is full") + + L"%s nie potrzebuje pierwszej pomocy lecz opieki lekarza lub dłuższego odpoczynku.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"%s dostał(a) w nogi i upadł(a)!", + //Name can't speak right now. + L"%s nie może teraz mówić.", + + //22-24 plural versions + L"%d zielonych żołnierzy samoobrony awansowało na weteranów.", + L"%d zielonych żołnierzy samoobrony awansowało na regularnych żołnierzy.", + L"%d regularnych żołnierzy samoobrony awansowało na weteranów.", + + //25 + L"Przełącznik", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"%s dostaje świra!", + + //27-28 + //Messages why a player can't time compress. + L"Niebezpiecznie jest kompresować teraz czas, gdyż masz najemników w sektorze %s.", + L"Niebezpiecznie jest kompresować teraz czas, gdyż masz najemników w kopalni zaatakowanej przez robale.", + + //29-31 singular versions + L"1 zielony żołnierz samoobrony awansował na weterana.", + L"1 zielony żołnierz samoobrony awansował na regularnego żołnierza.", + L"1 regularny żołnierz samoobrony awansował na weterana.", + + //32-34 + L"%s nic nie mówi.", + L"Wyjść na powierzchnię?", + L"(Oddział %d)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s naprawił(a) najemnikowi - %s, jego/jej - %s", + + //36 + L"DZIKI KOT", + + //37-38 "Name trips and falls" + L"%s potyka się i upada", + L"Nie można stąd podnieść tego przedmiotu.", + + //39 + L"Żaden z twoich najemników nie jest w stanie walczyć. Żołnierze samoobrony sami będą walczyć z robalami.", + + //40-43 + //%s is the name of merc. + L"%s nie ma środków medycznych!", + L"%s nie posiada odpowiedniej wiedzy, aby kogokolwiek wyleczyć!", + L"%s nie ma narzędzi!", + L"%s nie posiada odpowiedniej wiedzy, aby cokolwiek naprawić!", + + //44-45 + L"Czas naprawy", + L"%s nie widzi tej osoby.", + + //46-48 + L"%s - przedłużka lufy jego/jej broni odpada!", + L"W tym sektorze może być maks. %d instruktorów szkolących samoobronę.", + L"Na pewno?", + + //49-50 + L"Kompresja czasu", + L"Pojazd ma pełny zbiornik paliwa.", + + //51-52 Fast help text in mapscreen. + L"Kontynuuj kompresję czasu (|S|p|a|c|j|a)", + L"Zatrzymaj kompresję czasu (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s odblokował(a) - %s", + L"%s odblokował(a) najemnikowi - %s, jego/jej - %s", + + //55 + L"Nie można kompresować czasu, gdy otwarty jest inwentarz sektora.", + + L"Nie odnaleziono płyty nr 2 Jagged Alliance 2.", + + L"Przedmioty zostały pomyślnie połączone.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Bieżący/Maks. postęp: %d%%/%d%%", + + L"Eskortować Johna i Mary?", + + // 60 + L"Przełącznik aktywowany.", + + L"%s: dodatki do pancerza zostały zniszczone!", + L"%s wystrzelił(a) %d pocisk(ów) więcej niż to było zamierzone!", + L"%s wystrzelił(a) 1 pocisk(ów) więcej niż to było zamierzone!", + + L"You need to close the item description box first!", // TODO.Translate + + L"Cannot compress time - hostile civilians and/or bloodcats are in this sector.", // 65 // TODO.Translate +}; + +STR16 gzCWStrings[] = +{ + L"Wezwać posiłki do %s z przyległych sektorów?", +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Miejsce: %d\n", + L"%s|Jasność: %d / %d\n", + L"%s|Odległość do |Celu: %d\n", + L"%s|I|D: %d\n", + L"%s|Rozkazy: %d\n", + L"%s|Postawa: %d\n", + L"%s|Aktualne |P|A: %d\n", + L"%s|Aktualne |Zdrowie: %d\n", + L"%s|Current |Breath: %d\n", // TODO.Translate + L"%s|Current |Morale: %d\n", + L"%s|Current |S|hock: %d\n",// TODO.Translate + L"%s|Current |S|uppression Points: %d\n",// TODO.Translate + // Full info + L"%s|Hełm: %s\n", + L"%s|Kamizelka: %s\n", + L"%s|Getry ochronne: %s\n", + // Limited, Basic + L"|Pancerz: ", + L"hełm", + L"kamizelka", + L"getry ochronne", + L"używane", + L"brak pancerza", + L"%s|N|V|G: %s\n", + L"brak NVG", + L"%s|Maska |Gazowa: %s\n", + L"brak maski gazowej", + L"%s|Pozycja |Głowy |1: %s\n", + L"%s|Pozycja |Głów |2: %s\n", + L"\n(w plecaku) ", + L"%s|Broń: %s ", + L"brak broni", + L"rewolwer", + L"SMG", + L"karabin", + L"MG", + L"strzelba", + L"nóż", + L"broń Ciężka", + L"brak hełmu", + L"brak kamizelki", + L"brak getrów ochronnych", + L"|Pancerz: %s\n", + // Added - SANDRO + L"%s|Umiejętność 1: %s\n", + L"%s|Umiejętność 2: %s\n", + L"%s|Umiejętność 3: %s\n", + // Additional suppression effects - sevenfm // TODO.Translate + L"%s|A|Ps lost due to |S|uppression: %d\n", + L"%s|Suppression |Tolerance: %d\n", + L"%s|Effective |S|hock |Level: %d\n", + L"%s|A|I |Morale: %d\n", +}; + +STR16 New113Message[] = +{ + L"Nadeszła burza.", + L"Burza skończyła się.", + L"Rozpadał się deszcz.", + L"Deszcz przestał padać.", + L"Uważaj na snajperów...", + L"Ogień dławiący!", + L"BRST", + L"AUTO", + L"GL", + L"GL BRST", + L"GL AUTO", + L"UB", // TODO.Translate + L"UBRST", + L"UAUTO", + L"BAYONET", + L"Snajper!", + L"Nie można podzielić pieniędzy z powodu przedmiotu na kursorze.", + L"Przybycie nowych rekrutów zostało przekierowane do sektora %s , z uwagi na to, że poprzedni punkt zrzutu w sektorze %s jest zajęty przez wroga.", + L"Przedmiot usunięty", + L"Usunięto wszystkie przedmioty tego typu", + L"Przedmiot sprzedany", + L"Wszystkie przedmioty tego typu sprzedane", + L"Sprawdź swoje gogle", + // Real Time Mode messages + L"W trakcie walki", + L"Brak wrogów w zasięgu wzroku", + L"Wyłączone skradanie w czasie rzeczywistym", + L"Włączone skradanie w czasie rzeczywistym", + //L"Spotkano wroga! (Ctrl + x by uruchomić tryb turowy)", + L"Spotkano wroga!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s dokonał(a) udanej kradzieży!", + L"%s nie posiada wystarczającej liczby PA by ukraść wszystkie zaznaczone przedmioty.", + L"Chcesz operować %s zanim użyjesz bandaży? (możesz przywrócić około %i punktów zdrowia.)", + L"Chcesz operować %s zanim użyjesz bandaży? (możesz przywrócić około %i punktów zdrowia.)", + L"Do you wish to perform surgeries first? (%i patient(s))", // TODO.Translate + L"Czy chcesz najpierw operować pacjenta?", + L"Apply first aid automatically with surgeries or without them?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"operacja na %s zakończona.", + L"%s otrzymuje trafienie w korpus i traci punkt maksymalnego zdrowia!", + L"%s otrzymuje trafienie w korpus i traci %d punktów maksymalnego zdrowia!", + L"%s is blinded by the blast!", // TODO.Translate + L"%s odzyskał(a) utracony punkt %s", + L"%s odzyskał(a) %d utraconych punktów %s", + L"Twoja umiejętność zwiadowcy uchroniła cię przed zasadzką!", + L"Twoja umiejętność zwiadowcy pozwoliła ci ominąć stado krwawych kotów!", + L"%s został trafiony w pachwinę i pada na ziemię!", + ////////////////////////////////////////////////////////////////////////////// + L"Warning: enemy corpse found!!!", + L"%s [%d rnds]\n%s %1.1f %s", + L"Insufficient AP Points! Cost %d, you have %d.", // TODO.Translate + L"Hint: %s", // TODO.Translate + L"Player strength: %d - Enemy strength: %6.0f", // TODO.Translate Surrender values to be printed, if DISPLAY_SURRENDER_VALUES = TRUE + + L"Cannot use skill!", // TODO.Translate + L"Cannot build while enemies are in this sector!", + L"Cannot spot that location!", + L"Incorrect GridNo for firing artillery!", + L"Radio frequencies are jammed. No communication possible!", + L"Radio action failed!", + L"Not enough mortar shells in sector to start a barrage!", + L"No signal shell item found in Items.xml!", + L"No High-Explosive shell item found in Items.xml!", + L"No mortars found, cannot commence barrage!", + L"Already jamming signal, no need to do so again!", + L"Already listening for nearby sounds, no need to do so again!", + L"Already trying to spot, no need to do so again!", + L"Already scanning for jam signals, no need to do so again!", + L"%s could not apply %s to %s.", + L"%s orders reinforcements from %s.", + L"%s radio set is out of energy.", + L"a working radio set", + L"a binocular", + L"patience", + L"%s's shield has been destroyed!", // TODO.Translate + L" DELAY", // TODO.Translate + L"Yes*", + L"Yes", + L"No", + L"%s applied %s to %s.", // TODO.Translate +}; + +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s kuli się ze strachu!", + L"%s został przyparty do muru!", + L"%s oddał(a) więcej strzałów niż zamierzał(a)!", + L"Nie możesz szkolić samoobrony w tym sektorze.", + L"Samoobrona znajduje %s.", + L"Nie można szkolić samoobrony, gdy wróg jest w sektorze!", + // 6 - 10 + L"%s Brak odpowiednich umiejętności dowodzenia do szkolenia samoobrony.", + L"W tym sektorze jest dozwolonych nie więcej niż %d instruktorów samoobrony.", + L"W %s oraz okolicy nie ma miejsca dla nowych oddziałów samoobrony!", + L"Musisz mieć conajmniej %d jednostek samoobrony w każdym z %s wyzwolonych sektorów zanim będziesz mógł szkolić tu nowe oddziały.", + L"Nie możesz obsadzić fabryki dopóki w okolicy są wrogie jednostki!", // not sure + // 11 - 15 + L"%s zbyt niska inteligencja do obsadzenia tej fabryki.", + L"%s posiada już maksymalną liczbę personelu.", + L"Obsadzenie tej fabryki będzie kosztować $%d za godzinę. Chcesz kontynuować?", + L"Nie posiadasz funduszy potrzebnych na opłacenie wszystkich fabryk. Zapłacono $%d, ale wciąż pozostało $%d do zapłaty. Tubylcy są zaniepokojeni.", + L"Nie posiadasz funduszy potrzebnych na opłacenie wszystkich fabryk. Pozostało $%d do zapłaty. Tubylcy są zaniepokojeni.", + // 16 - 20 + L"Zalegasz $%d dla Fabryki i nie posiadasz funduszy umożliwiających spłatę długu!", + L"Zalegasz $%d dla Fabryki!. Nie możesz przydzielić tego najemnika do fabryki do momentu spłaty długu.", + L"Zalegasz $%d dla Fabryki!. Czy chcesz spłacić ten dług?", + L"Niedostępny w tym sektorze", + L"Dzienne wydatki", + // 21 - 25 + L"Brak funduszy do opłacenia wykazanych jednostek samoobrony! %d jednostek opuszcza oddziały i wraca do domu.", + L"To examine an item's stats during combat, you must pick it up manually first.", // HAM 5 + L"To attach an item to another item during combat, you must pick them both up first.", // HAM 5 + L"To merge two items during combat, you must pick them both up first.", // HAM 5 +}; + +// TODO.Translate +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"No available adjustments", + L"%s was split into several parts.", + L"%s was split into several parts. Check %s's inventory for the resulting items.", + L"Due to lack of inventory space after transformation, some of %s's items have been dropped to the ground.", + L"%s was split into several parts. Due to a lack of inventory space, %s has had to drop a few items to the ground.", + L"Do you wish to adjust all %d items in this stack? (To transform only one item, remove it from the stack first)", + // 6 - 10 + L"Split Crate into Inventory", + L"Split into %d-rd Mags", + L"%s was split into %d Magazines containing %d rounds each.", + L"%s was split into %s's inventory.", + L"There is insufficient room in %s's inventory to fit any magazines of this caliber!", + L"Instant mode", // TODO.Translate + L"Delayed mode", + L"Instant mode (%d AP)", + L"Delayed mode (%d AP)", +}; + +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Niniejszym informuję, iż w związku z dotychczasowymi osiągnięciami Gastona, opłata za jego usługi została podniesiona. Osobiście, nie jestem tymfaktem zaskoczony. ± ± Speck T. Kline ± ", + // Stogie: Text from Line 43 in Email.edt + L"Informujemy, iż od chwili obecnej cena za usługi świadczone przez pana Stoggiego wzrosła w związku ze wzrostem jego umiejętności. ± ± Speck T. Kline ± ", + // Tex: Text from Line 45 in Email.edt + L"Informujemy, iż nabyte przez Texa doświadczenie upoważnia go do wyższego wynagrodzenia, z tego względu jego wynagrodzenie zostało zwiększone w celu lepszego odzwierciedlenia jego wartości. ± ± Speck T. Kline ± ", + // Biggens: Text from Line 49 in Email.edt + L"Proszę o zwrócenie uwagi, iż w związku ze wzrostem jakości usług świadczonych przez pana Biggens`a jego pensja także uległa podwyższeniu. ± ± Speck T. Kline ± ", +}; + +// TODO.Translate +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk + L"PD z Serwera AIM: Wiadomość od - Victor Kolesnikov", + L"Hej, tu Monk. Dostałem Twoją wiadomość. Już jestem z powrotem - jeśli chcesz się skontaktować. ± ± Zadzwoń. ±", + + // Brain + L"PD z Serwera AIM: Wiadomość od - Janno Allik", + L"Jestem już gotów do przyjęcia nowego zadania. Wszystko musi mieć swoją porę. ± ± Janno Allik ±", + + // Scream + L"PD z Serwera AIM: Wiadomość od - Lennart Vilde", + L"Lennart Vilde jest obecnie dostępny! ±", + + // Henning + L"PD z Serwera AIM: Wiadomość od - Henning von Branitz", + L"Otrzymałem Twoją wiadomość, dziękuję. Jeśli chcesz omówić możliwość zatrudnienia, skontaktuj się ze mną za pośrednictwem strony AIM . ± ± Na razie! ± ± Henning von Branitz ±", + + // Luc + L"PD z Serwera AIM: Wiadomość od - Luc Fabre", + L"Otrzymałem wiadomość, merci! Chętnie rozważę Twoje propozycje. Wiesz, gdzie mnie znaleźć. ± ± Oczekuję odpowiedzi ±", + + // Laura + L"PD z Serwera AIM: Wiadomość od - Laura Colin", + L"Pozdrowienia! Dobrze, że zostawiłeś wiadomość. Sprawa wygląda interesująco. ± ± Zajrzyj jeszcze raz do AIM. Chętnie poznam więcej informacji. ± ± Wyrazy szacunku ± ± Dr Laura Colin ±", + + // Grace + L"PD z Serwera AIM: Wiadomość od - Graziella Girelli", + L"Chciałeś się ze mną skontaktować, ale Ci się nie udało.± ± Miałam spotkanie rodzinne, na pewno to rozumiesz. Teraz mam już dość swojej rodziny i bardzo się ucieszę, jeśli skontaktujesz się ze mną ponownie za pośrednictwem witryny AIM . ± ± Ciao! ±", + + // Rudolf + L"PD z Serwera AIM: Wiadomość od - Rudolf Steiger", + L"Wiesz, ile telefonów odbieram każdego dnia? Co drugi baran myśli, że może do mnie wydzwaniać. ± ± W każdym razie już jestem, jeśli masz dla mnie coś ciekawego. ±", + + // TODO.Translate + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"FW from AIM Server: Message about merc availability", + L"I got your message. Waiting for your call. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Snajper: Sokole oczy! Możesz odstrzelić skrzydła muszce ze stu jardów. ± ", + // Camouflage + L"Kamuflaż: Przy tobie nawet krzaki wyglądają na sztuczne! ± ", + // SANDRO - new strings for new traits added + // Ranger + L"Strażnik: To ty jesteś tym z pustyni Teksasu! ± ", + // Gunslinger + L"Rewolwerowiec: Z pistoletem lub dwoma, możesz być tak śmiercionośny jak Billy Kid! ± ", + // Squadleader + L"Przywódca: Urodzony dowódca i szef, jesteś naprawdę grubą rybą bez kitu! ± ", + // Technician + L"Mechanik: Naprawa sprzętu, rozbrajanie pułapek, podkładanie bomb, to twoja działka! ± ", + // Doctor + L"Chirurg: Możesz przeprowadzić skomplikowaną operację przy użyciu scyzoryka i gumy do żucia! ± ", + // Athletics + L"Atleta: Kondycji mógłby ci pozazdrościć niejeden maratończyk! ± ", + // Bodybuilding + L"Budowa ciała: Ta ogromna muskularna postać, której nie sposób przeoczyć, to w rzeczy samej ty! ± ", + // Demolitions + L"Materiały wybuchowe: Potrafisz wysadzić miasto przy użyciu standardowego wyposażenia kuchni! ± ", + // Scouting + L"Zwiadowca: Nic nie umknie twej uwadze! ± ", + // Covert ops + L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate + // Radio Operator + L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate + // Survival + L"Survival: Nature is a second home to you. ± ", // TODO.Translate +}; + +STR16 NewInvMessage[] = +{ + L"Nie możesz teraz podnieść plecaka.", + L"Nie ma miejsca, aby położyć tutaj plecak", + L"Nie znaleziono plecaka", + L"Zamek błyskawiczny działa tylko podczas walki.", + L"Nie możesz się przemieszczać, gdy zamek plecaka jest aktywny.", + L"Na pewno chcesz sprzedać wszystkie przedmioty z tego sektora?", + L"Na pewno chcesz skasować wszystkie przedmioty z tego sektora?", + L"Nie można wspinać się z plecakiem", + L"All backpacks dropped", // TODO.Translate + L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Inicjacja serwera RakNet...", + L"Serwer wł., oczekiwanie na połączenie", + L"Musisz teraz połączyć swojego klienta z serwerem, wciskając 2", + L"Serwer już działa", + L"Wł. nie powiodło się. Przerwanie.", + // 5 + L"%d/%d klientów gotowych na tryb realtime.", + L"Serwer rozłączony i wył.", + L"Serwer nie działa", + L"Ładowanie klientów, czekaj.", + L"Nie można zmieniać miejsc zrzutu po starcie serwera.", + // 10 + L"Wysłano '%S' pliku - 100/100", + L"Zakończono wysyłanie plików do '%S'.", + L"Rozpoczęto wysyłanie plików do '%S'.", + L"Use the Airspace view to select a map you wish to play. If you want to change the map you have to do this before clicking the 'Start Game' button.", // TODO.Translate +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Inicjacja klienta RakNet…", + L"Łączenie z IP: %S ...", + L"Otrzymano ustawienia:", + L"Jesteś już połączony.", + L"Jesteś już w trakcie łączenia", + // 5 + L"Klient #%d - '%S' wynajął '%s'.", + L"Klient #%d - '%S' has hired another merc.", + L"Gotowy! Wszystkich gotowych - %d/%d.", + L"Nie jesteś już gotowy. Gotowych - %d/%d.", + L"Początek bitwy...", + // 10 + L"Klient #%d - '%S' jest gotów. Gotowych - %d/%d.", + L"Klient #%d - '%S' nie jest już gotowy. Gotowych - %d/%d", + L"Jesteś gotów. Czekanie na pozostałych… Naciśnij OK., jeśli już nie jesteś gotów.", + L"Zaczynajmy już!", + L"Klient A musi działać, by zacząć grę.", + // 15 + L"Nie można zacząć. Brak najemników.", + L"Czekaj na zgodę serwera, by odblokować laptopa…", + L"Przerwano", + L"Koniec przerwania", + L"Położenie siatki myszy:", + // 20 + L"X: %d, Y: %d", + L"Numer siatki %d", + L"Właściwości serwera", + L"Ustaw ręcznie stopień nadrzędności serwera: ‘1’ – wł.laptop/rekrut.; ‘2’- wł./ładuj poziom; ‘3’ – odblok. UI; ‘4’ – kończy rozmieszczanie", + L"Sektor=%s, MaxKlientów=%d, Max Najem=%d, Tryb_Gry=%d, TenSamNaj=%d, Mnożnik obraż.=%f, TuryCzas=%d, Sek/ruch=%d, Dis BobbyRay=%d, Wył Aim/Merc Ekwip=%d, Wył morale=%d, Test=%d", + // 25 + L"", + L"Nowe połączenie Client #%d - '%S'.", + L"Drużyna: %d.",//not used any more + L"'%s' (klient %d - '%S') zabity przez '%s' (client %d - '%S')", + L"Wyrzucono #%d - '%S'", + // 30 + L"Zacząć turę dla klientów. #1: , #2: %S, #3: %S, #4: %S", + L"Początek tury dla #%d", + L"Żądanie trybu realtime…", + L"Zmieniono w tryb realtime.", + L"Błąd. Coś poszło nie tak przy przełączaniu.", + // 35 + L"Odblokować laptopy? (Czy gracze są już podłączeni?)", + L"Serwer odblokował laptopa. Zaczynaj rekrutować!", + L"Przerywający", + L"Nie możesz zmieniać strefy zrzutu, jeśli nie jesteś serwerem gry.", + L"Odrzuciłeś ofertę poddania się, gdyż grasz w trybie Multiplayer.", + // 40 + L"Wszyscy twoi ludzie są martwi!", + L"Tryb obserwatora wł..", + L"Zostałeś pokonany!", + L"Wspinanie wyłączone w MP", + L"Wynajęto '%s'", + // 45 + L"Nie możesz zmienić mapy w trakcie dokonywania zakupu", + L"Mapa zmieniona na '%s'", + L"Klient '%s' rozłączony, usuwanie z gry", + L"Zostałeś rozłączony, powrót do głównego menu", + L"Próba połączenia zakończona niepowodzeniem, kolejna poróba za 5 sekund, %i prób pozostało...", + //50 + L"Próba połączenia zakończona niepowodzeniem, rezygnacja z kolejnych prób...", + L"Nie możesz rozpocząć gry dopóki nie są podłączeni inni gracze", + L"%s : %s", + L"Wyślij do wszystkich", + L"Wyślij do sprzymierzeńców", + // 55 + L"Nie można dołączyć do gry. Ta gra już się rozpoczęła", + L"%s (drużyna): %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"Pobrano wszystkie pliki z serwera.", + L"Pobrano '%S' z serwera", + L"Rozpoczęto pobieranie '%s' z serwera", + L"Nie można rozpocząć gry dopóki wszyscy nie zakończą pobierania plików z serwera", + L"Ten serwer przed rozpoczęciem gry wymaga pobrania zmodyfikowanych plików, czy chcesz kontynuować", + // 65 + L"Naciśnij 'Gotowe' aby przejść do ekranu taktycznego", + L"Nie można się połączyć ponieważ twoja wersja %S różni się od wersji %S na serwerze.", + L"Zabiłeś wrogą jednostkę", + L"Nie można dołączyć do gry. Ta gra już się rozpoczęła", + L"The server has choosen New Inventory (NIV), but your screen resolution does not support NIV.", + // 70 // TODO.Translate + L"Could not save received file '%S'", + L"%s's bomb was disarmed by %s", + L"You loose, what a shame", // All over red rover + L"Spectator mode disabled", + L"Choose client to kick from game. #1: , #2: %S, #3: %S, #4: %S", + // 75 + L"Team %s is wiped out.", + L"Client failed to start. Terminating.", + L"Client disconnected and shutdown.", + L"Client is not running.", + L"INFO: If the game is stuck (the opponents progress bar is not moving), notify the server to press ALT + E to give the turn back to you!", // TODO.Translate + // 80 + L"AI's turn - %d left", // TODO.Translate +}; + +STR16 gszMPEdgesText[] = +{ + L"Pn", //- Północ + L"W", //- Wschód + L"Pd", //- Południe + L"Z", //- Zachód + L"C", // "C" - Centralny +}; + +STR16 gszMPTeamNames[] = +{ + L"Foxtrot", + L"Bravo", + L"Delta", + L"Charlie", + L"N/D", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Tryb gry: ", + L"Gracze: ", + L"Mercs each: ", + L"Nie możesz zmienić początkowego wierzchołka dopóki laptop jest odblokowany.", + L"Nie możesz zmieniać drużyn dopóki laptop jest odblokowany.", + L"Losowi najemnicy: ", + L"T", //if "Y" means Yes here + L"Poziom trudności:", + L"Wersja serwera:", +}; + +STR16 gzMPSScreenText[] = +{ + L"Tabela punktów", + L"Kontynuuj", + L"Anuluj", + L"Gracz", + L"Zabitych", + L"Liczba zgonów", + L"Armia królowej", + L"Trafienia", + L"Strzały chybione", + L"Celność", + L"Obrażenia zadane", + L"Obrażenia otrzymane", + L"Czekaj na połączenie z serwerem aby nacisnąć 'Kontynuuj'", +}; + +STR16 gzMPCScreenText[] = +{ + L"Anuluj", + L"Łączenie z serwerem", + L"Pobieranie ustawień serwera", + L"Pobieranie plików", + L"Naciśnij 'ESC' aby anulować lub 'Y' aby wejść na chat", + L"Naciśnij 'ESC'aby anuować", + L"Gotowe", +}; + +STR16 gzMPChatToggleText[] = +{ + L"Wyślij do wszystkich", + L"Wyślij do sprzymierzeńców", +}; + +STR16 gzMPChatboxText[] = +{ + L"Multiplayer Chat", + L"Chat: Naciśnij 'ENTER' aby wysłać lub 'ESC' by anulować", +}; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + // Odnośnie starych umiejętności + L"Na następnej stronie, wybierzesz umiejętności dotyczące twojej specjalizacji jako najemnika. Nie można wybrać więcej niż dwóch różnych umiejętności, albo jednej w stopniu eksperta.", + + //L"Możesz także wybrać jedną, albo nawet nie wybrać żadnej umiejętności, co da ci bonus do liczby punktów atrybutów. Zauważ, że elektronika i oburęczność nie mogą być wybrane w stopniu eksperta.", + + // TODO.Translate (added Camouflage) + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics, Ambidextrous and Camouflage traits cannot be achieved at expert levels.", + + // Odnośnie nowych/pomniejszych umiejętności + L"Następny etap dotyczy wybierania umiejętności dotyczących twojej specjalizacji jako najemnika. Na pierwszej stronie, możesz wybrać do %d głównych umiejętności, które reprezentują twoją rolę w zespole. Druga strona to lista pomniejszych cech, które reprezentują twoją osobowość.", + L"Wybranie więcej niż %d jednocześnie jest niemożliwe. Oznacza to, że jeżeli nie wybierzesz żadnych głównych umiejętności, możesz wybrać %d pomniejsze cechy. Jeśli wybierzesz 2 główne umiejętności (albo jedną zaawansowaną), możesz wybrać tylko %d cechę dodatkową...", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Proszę, wybierz swoje atrybuty fizyczne zgodnie z twoimi prawdziwymi umiejętnościami. Nie możesz podnieść żadnego z powyższych wyników.", + L"Przegląd atrybutów i umiejętności I.M.P..", + L"Punkty bonusowe.:", + L"Poziom startowy", + // New strings for new traits + L"Na następnej stronie wybierzesz swoje atrybuty fizyczne i umiejętności. 'Atrybuty' to: zdrowie, zwinność, zręczność, siła oraz inteligencja. Atrybuty nie mogą być niższe niż %d.", + L"Reszta to 'umiejętności', w przeciwieństwie do atrybutów, mogą być ustawione na zero, co oznacza, że nie masz w nich kompletnie żadnej wprawy.", + L"Wszystkie punkty są na początku ustawione na minimum. Zauważ, że niektóre atrybuty są ustawione na wartościach, co ma związek z wcześniej wybranymi umiejętnościami. Nie możesz ustawić ich niżej.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"Analiza charakteru I.M.P.", + L"Analiza charakteru to następny krok w tworzeniu twojego profile. Na pierwszej stronie zostanie ci przedstawiona lista cech charakteru do wybrania. Domyślamy się, że możesz identyfikować się z większą ich ilością, jednak będziesz mógł wybrać tylko jedną. Wybierz taką, z którą czujesz się najbardziej związany.", + L"Druga strona przedstawia listę niepełnosprawności, na które możesz cierpieć. Jeśli cierpisz na jedną z nich, wybierz ją (wierzymy, że każdy ma tylko jedną taką niepełnosprawność). Bądź szczery, ponieważ to ważne, by poinformować potencjalnych pracodawców o twoim faktycznym stanie zdrowia.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Normalny", + L"Przyjazny", + L"Samotnik", + L"Optymista", + L"Pesymista", + L"Agresywny", + L"Arogancki", + L"Gruba ryba", + L"Dupek", + L"Tchórz", + L"Nastawienie I.M.P.-a", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normalny", + L"Towarzyski", + L"Samotnik", + L"Optymista", + L"Asertywny", + L"Intelektualista", + L"Prymityw", + L"Agresywny", + L"Flegmatyk", + L"Nieustraszony", + L"Pacyfista", + L"Podstępny", + L"Gwiazdor", + L"Coward", // TODO.Translate + L"Cechy charakteru I.M.P.-a", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"Kolory i sylwetka ciała I.M.P.-a", + L"Kolory I.M.P.", + L"Proszę wybrać odpowiednie kolory skóry, włosów i ubrań oraz swoją sylwetkę ciała.", + L" Proszę wybrać odpowiednie kolory skóry, włosów i ubrań.", + L"Zaznacz, by używać alternatywnego sposobu trzymania broni.", + L"\n(Uwaga: będziesz potrzebować do tego dużej siły.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Kolor włosów", + L"Kolor skóry", + L"Kolor koszulki", + L"Kolor spodni", + L"Normalne ciało", + L"Duże ciało", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"Bez niepełnosprawności", + L"Nie lubi ciepła", + L"Nerwowy", + L"Klaustrofobik", + L"Nie umie pływać", + L"Boi się owadów", + L"Zapominalski", + L"Psychol", + L"Deaf", + L"Shortsighted", + L"Hemophiliac", // TODO.Translate + L"Fear of Heights", + L"Self-Harming", + L"Niepełnosprawności I.M.P.-a", +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] =// TODO.Translate +{ + L"We bet you're glad this isn't voicemail.", + L"You've either visited to many discos in your teens, or were to close a massive artillery bombardment. Or just old. Either way, your team better learn sign language.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"You'll be screwed if you ever lose your glasses.", + L"That happens when you spend your days in front of glowing rectangles. You should have eaten more carrots. Ever seen a rabbit with glasses? Figures.", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = // TODO.Translate +{ + L"Are you SURE this is the right job for you?", + L"As long as you are so good to never ever get hit, or fight only in fully staffed hospitals, you should be fine.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= // TODO.Translate +{ + L"Let's just say you are a grounded person.", + L"You prefer missions where you don't have to scale tall buildings or mountains. We recommend conquering the Netherlands.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Might want to make sure your knives are always clean.", + L"You have some issues with knives. Not that you tend to avoid them, quite the opposite, really.", +}; + +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s nie ma wystarczającej siły, by tego dokonać", + L"%s nie ma wystarczającej zręczności, by tego dokonać", + L"%s nie ma wystarczającej zwinności, by tego dokonać", + L"%s nie ma dość zdrowia, by tego dokonać", + L"%s nie ma wystarczającej inteligencji, by tego dokonać", + L"%s nie ma wystarczającej celności, by tego dokonać", + // 6 - 10 + L"%s nie ma wystarczających um. medycznych, by tego dokonać.", + L"%s nie ma wystarczających um. mechaniki, by tego dokonać.", + L"%s nie ma wystarczających um. dowodzenia, by tego dokonać.", + L"%s nie ma wystarczających um. mat. wyb., by tego dokonać.", + L"%s nie ma wystarczającego doświadczenia, by tego dokonać.", + // 11 - 15 + L"%s ma za małe morale, by tego dokonać", + L"%s nie ma wystarczająco dużo energii, by tego dokonać", + L"W %s jest zbyt mała lojalność. Mieszkańcy nie pozwolą ci tego zrobić.", + L"W %s pracuje już zbyt wiele osób.", + L"W %s zbyt wiele osób wykonuje już to polecenie.", + // 16 - 20 + L"%s nie znajduje przedmiotów do naprawy.", + L"%s traci nieco %s, pracując w sektorze %s", + L"%s traci nieco %s, pracując w %s w sektorze %s", + L"%s odnosi rany, pracując w sektorze %s i wymaga natychmiastowej pomocy medycznej!", + L"%s odnosi rany, pracując w %s w sektorze %s i wymaga natychmiastowej pomocy medycznej!", + // 21 - 25 + L"%s odnosi rany, pracując w sektorze %s. Nie wygląda to jednak bardzo poważnie.", + L"%s odnosi rany, pracując w %s w sektorze %s. Nie wygląda to jednak bardzo poważnie.", + L"Mieszkańcy miasta %s wydają się poirytowani tym, że %s przebywa w ich okolicy.", + L"Mieszkańcy miasta %s wydają się poirytowani tym, że %s pracuje w %s.", + L"%s po swych działaniach w sektorze %s powoduje spadek poparcia w regionie.", + // 26 - 30 + L"%s swymi działaniami w %s w %s powoduje spadek poparcia w regionie.", + L"%s jest w stanie upojenia alkoholowego", + L"%s ciężko choruje w sektorze %s i przechodzi w stan spoczynku", + L"%s cięzko choruje i nie może dalej pracować w %s w %s", + L"%s doznaje ciężkich obrażeń w sektorze %s", // %s was injured in sector %s. // <--- This is a log message string. + // 31 - 35 + L"%s doznaje ciężkich obrażeń w sektorze %s", //<--- This is a log message string. + L"Obecni więźniowie zdają sobie sprawę, iż %s jest najemnikiem.", + L"%s jest obecnie powszechnie znany jako kapuś. Odczekaj przynajmniej %d godzin(ę).", + + +}; + +STR16 gzFacilityRiskResultStrings[]= +{ + L"Siła", + L"Zwinność", + L"Zręczność", + L"Inteligencja", + L"Zdrowie", + L"Umiejętności strzeleckie", //short: "Um. strzeleckie" + // 5-10 + L"Umiejętność dowodzenia", //short: "Um. dowodzenia" + L"Znajomość mechaniki", //short: "Zn. mechaniki" + L"Wiedza medyczna", + L"Znajomość materiałów wybuchowych", //short: "Zn. mat. wybuchowych" +}; + +STR16 gzFacilityAssignmentStrings[]= +{ + L"AMBIENT", + L"Staff", + L"Eat",// TODO.Translate + L"Odpoczywa" + L"Naprawa ekwipunku", + L"Naprawa %s", + L"Naprawa Robota", + // 6-10 + L"Lekarz", + L"Pacjent", + L"Trening siły", + L"Trening zręczności", + L"Trening zwinności", + L"Trening zdrowia", + // 11-15 + L"Trening um. strzeleckich", + L"Trening wiedzy medycznej", + L"Trening zn. mechaniki", + L"Trening dowodzenia", + L"Trening zn. mat. wybuchowych", + // 16-20 + L"Uczeń siła", + L"Uczeń zręczność", + L"Uczeń zwinność", + L"Uczeń zdrowie", + L"Uczeń um. strzeleckie", + // 21-25 + L"Uczeń wiedza medyczna", + L"Uczeń zn. mechaniki", + L"Uczeń um. dowodzenia", + L"Uczeń zn. mat. wybuchowych", + L"Instruktor siła", + // 26-30 + L"Instruktor zręczność", + L"Instruktor zwinność", + L"Instruktor zdrowie", + L"Instruktor um. strzeleckie", + L"Instruktor wiedza medyczna", + // 30-35 + L"Instruktor zn. mechaniki", + L"Instruktor um. dowodzenia", + L"Instruktor zn. mat. wybuchowych", + L"Interrogate Prisoners", // added by Flugente TODO.Translate + L"Undercover Snitch", // TODO.Translate + // 36-40 + L"Spread Propaganda", + L"Spread Propaganda", // spread propaganda (globally) + L"Gather Rumours", + L"Command Militia", // militia movement orders +}; + +STR16 Additional113Text[]= +{ + L"Jagged Alliance 2 v1.13 trybie okienkowym wymaga głębi koloru 16-bitowego.", + L"Jagged Alliance 2 v1.13 fullscreen mode (%d x %d) is not supported by your primary screen.\nPlease either change the game resolution or use 16bpp windowed mode.", // TODO.Translate + L"Internal error in reading %s slots from Savegame: Number of slots in Savegame (%d) differs from defined slots in ja2_options.ini settings (%d)", // TODO.Translate + // TODO.Translate + // WANNE: Savegame slots validation against INI file + L"Mercenary (MAX_NUMBER_PLAYER_MERCS) / Vehicle (MAX_NUMBER_PLAYER_VEHICLES)", + L"Enemy (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Creature (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Militia (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Civilian (MAX_NUMBER_CIVS_IN_TACTICAL)", +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +STR16 sEnemyTauntsFireGun[]= +{ + L"Masz cwelu!", + L"A masz!", + L"Nażryj się!", + L"Jesteście moi!", + L"Zdychaj!", + L"Boisz się kurwo?", + L"To dopiero zaboli!", + L"Dawaj skurwielu!", + L"Dawaj! Nie mam całego dnia!", + L"Chodź do tatusia!", + L"Zaraz pójdziesz do piachu!", + L"Wracasz do domu w dębowej jesionce frajerze!", + L"Chcesz się zabawić?" + L"Trzeba było zostać w domu kurwo." + L"Ciota!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"Urządzamy grilla.", + L"Mam dla ciebie prezent.", + L"Bum!", + L"Uśmiech!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Łap!", + L"A masz!", + L"Przyszła kryska na Matyska!", + L"To dla ciebie!", + L"Hahahaha!", + L"Łap świnio!", + L"Uwielbiam to.", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"Zedrę ci skalp!", + L"Chodź do tatusia.", + L"Pochwal się flakami!", + L"Porżnę cię na kawałki!", + L"Skurwysyny!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"Jesteśmy po uszy w gównie...", + L"Idź do wojska -mówili. Nie ma chuja, nie po to!", + L"Mam już dość.", + L"O mój Boże.", + L"Za to mi nie płacą.", + L"Nie wytrzymam tego!", + L"Wrócę z kumplami.", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"Słyszałem to!", + L"Kto tam?", + L"Co to było?", + L"Hej! Co do...", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"Są tutaj!", + L"Czas zacząć zabawę." + L"Liczyłem na to, że to się nie stanie.", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"Au!", + L"Uł...", + L"To... boli!", + L"Skurwysyny!", + L"Pożałujecie... tego.", + L"Co do..!", + L"Teraz się... wkurwiłem.", + +}; + +// TODO.Translate +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Da'ffff...!", + L"Oh my God!", + L"Holy crap!", + L"Enemy!!!", + L"Alert! Alert!", + L"There is one!", + L"Attack!", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Description", + L"General", + L"Advanced", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Desc", + L"Gen", + L"Adv", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Primary", + L"Secondary", + L"AP Costs", + L"Burst / Autofire", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Prop.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|D|e|s|c|r|i|p|t|i|o|n |P|a|g|e:\n \nShows basic textual information about this item.", + L"|G|e|n|e|r|a|l |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows specific data about this item.\n \nWeapons: Click again to see second page.", + L"|A|d|v|a|n|c|e|d| |P|r|o|p|e|r|t|i|e|s |P|a|g|e:\n \nShows bonuses given by this item.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|P|r|i|m|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nProperties and data related to this item's class\n(Weapon / Armor / etcetera).", + L"|S|e|c|o|n|d|a|r|y |P|r|o|p|e|r|t|i|e|s:\n \nAdditional features of this item,\nand/or possible secondary abilities.", + L"|A|P |C|o|s|t|s:\n \nVarious Action Point costs to fire\nor manipulate this weapon.", + L"|B|u|r|s|t |/ |A|u|t|o|f|i|r|e |P|r|o|p|e|r|t|i|e|s:\n \nData related to firing this weapon in\nBurst or Autofire modes.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|P|r|o|p|e|r|t|y |i|c|o|n\n \nMouse-over to reveal the property's name.", + L"|B|a|s|i|c |v|a|l|u|e\n \nThe basic value given by this item, excluding any\nbonuses or penalties from attachments or ammo.", + L"|A|t|t|a|c|h|m|e|n|t |B|o|n|u|s|e|s\n \nBonus or penalty given by ammo, any attachments,\nor low item condition.", + L"|F|i|n|a|l |V|a|l|u|e\n \nThe final value given by this item, including any\nbonuses/penalties from attachments or ammo.", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Property icon (mouse-over to reveal name).", + L"Bonus/penalty given while |s|t|a|n|d|i|n|g.", + L"Bonus/penalty given while |c|r|o|u|c|h|i|n|g.", + L"Bonus/penalty given while |p|r|o|n|e.", + L"Bonus/penalty given", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y", + L"|D|a|m|a|g|e", + L"|R|a|n|g|e", + L"|H|a|n|d|l|i|n|g |D|i|f|f|i|c|u|l|t|y", // TODO.Translate + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s", + L"|R|e|l|i|a|b|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", + L"|M|i|n|. |R|a|n|g|e |f|o|r |A|i|m|i|n|g |B|o|n|u|s", + L"|T|o|-|H|i|t |M|o|d|i|f|i|e|r", + L"|A|P|s |t|o |R|e|a|d|y", + L"|A|P|s |t|o |A|t|t|a|c|k", + L"|A|P|s |t|o |B|u|r|s|t", + L"|A|P|s |t|o |A|u|t|o|f|i|r|e", + L"|A|P|s |t|o |R|e|l|o|a|d", + L"|A|P|s |t|o |R|e|c|h|a|m|b|e|r", + L"", // No longer used! + L"|T|o|t|a|l |R|e|c|o|i|l", // TODO.Translate + L"|A|u|t|o|f|i|r|e |B|u|l|l|e|t|s |p|e|r |5 |A|P|s", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines whether bullets fired by\nthis gun will stray far from where\nit is pointed.\n \nScale: 0-100.\nHigher is better.", + L"\n \nDetermines the average amount of damage done\nby bullets fired from this weapon, before\ntaking into account armor or armor-penetration.\n \nHigher is better.", + L"\n \nThe maximum distance (in tiles) that\nbullets fired from this gun will travel\nbefore they begin dropping towards the\nground.\n \nHigher is better.", + L"\n \nDetermines the difficulty of holding and firing\nthis gun.\n \nHigher Handling Difficulty results in lower\nchance-to-hit - when aimed and especially when\nunaimed.\n \nLower is better.", // TODO.Translate + L"\n \nThis is the number of Extra Aiming\nLevels you can add when aiming this gun.\n \nThe FEWER aiming levels are allowed, the MORE\nbonus each aiming level gives you. Therefore,\nhaving FEWER levels makes the gun faster to aim,\nwithout making it any less accurate.\n \nLower is better.", + L"\n \nWhen greater than 1.0, will proportionally reduce\naiming errors at a distance.\n \nRemember that high scope magnification is detrimental\nwhen the target is too close!\n \nA value of 1.0 means no scope is installed.", + L"\n \nProportionally reduces aiming errors at a distance.\n \nThis effect works up to a given distance,\nthen begins to dissipate and eventually\ndisappears at sufficient range.\n \nHigher is better.", + L"\n \nWhen this property is in effect, the weapon\nproduces no visible flash when firing.\n \nEnemies will not be able to spot you\njust by your muzzle flash (but they\nmight still HEAR you).", + L"\n \nWhen firing this weapon, Loudness is the\ndistance (in tiles) that the sound of\ngunfire will travel.\n \nEnemies within this distance will probably\nhear the shot.\n \nLower is better.", + L"\n \nDetermines how quickly this weapon will degrade\nwith use.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nThe minimum range at which a scope can provide it's aimBonus.", + L"\n \nTo hit modifier granted by laser sights.", + L"\n \nThe number of APs required to bring this\nweapon up to firing stance.\n \nOnce the weapon is raised, you may fire repeatedly\nwithout paying this cost again.\n \nA weapon is automatically 'Unreadied' if its\nwielder performs any action other than\nfiring or turning.\n \nLower is better.", + L"\n \nThe number of APs required to perform\na single attack with this weapon.\n \nFor guns, this is the cost of firing\na single shot without extra aiming.\n \nIf this icon is greyed-out, single-shots\n are not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\na burst.\n \nThe number of bullets fired in each burst is\ndetermined by the weapon itself, and indicated\nby the number of bullets shown on this icon.\n \nIf this icon is greyed-out, burst fire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to fire\nan Autofire Volley of three bullets.\n \nIf you wish to fire more than 3 bullets,\nyou will need to pay extra APs.\n \nIf this icon is greyed-out, autofire\nis not possible with this weapon.\n \nLower is better.", + L"\n \nThe number of APs required to reload\nthis weapon.\n \nLower is better.", + L"\n \nThe number of APs required to rechamber this weapon\nbetween each and every shot fired.\n \nLower is better.", + L"", // No longer used! + L"\n \nThe total distance this weapon's muzzle will shift\nbetween each and every bullet in a burst or\nautofire volley, if no Counter Force is applied.\n \nLower is better.", // HEADROCK HAM 5: Altered to reflect unified number. // TODO.Translate + L"\n \nIndicates the number of bullets that will be added\nto an autofire volley for every extra 5 APs\nyou spend.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis weapon and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|P|r|o|t|e|c|t|i|o|n |V|a|l|u|e", + L"|C|o|v|e|r|a|g|e", + L"|D|e|g|r|a|d|e |R|a|t|e", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nThis primary armor property defines how much\ndamage the armor will absorb from any attack.\n \nRemember that armor-piercing attacks and\nvarious randomal factors may alter the\nfinal damage reduction.\n \nHigher is better.", + L"\n \nDetermines how much of the protected\nbodypart is covered by the armor.\n \nIf coverage is below 100%, attacks have\na certain chance of bypassing the armor\ncompletely, causing maximum damage\nto the protected bodypart.\n \nHigher is better.", + L"\n \nIndicates how quickly this armor's condition\ndrops when it is struck, proportional to\nthe damage caused by the attack.\n \nLower is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only Technicians and special\nNPCs can repair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how difficult it is to repair\nthis armor and who can fully repair it.\n \ngreen = Anybody can repair it.\n \nyellow = Only special NPCs can\nrepair it beyond repair threshold.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|A|r|m|o|r |P|i|e|r|c|i|n|g", + L"|B|u|l|l|e|t |T|u|m|b|l|e", + L"|P|r|e|-|I|m|p|a|c|t |E|x|p|l|o|s|i|o|n", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate + L"|D|i|r|t |M|o|d|i|f|i|c|a|t|i|o|n", // TODO.Translate +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nThis is the bullet's ability to penetrate\na target's armor.\n \nWhen below 1.0, the bullet proportionally\nreduces the Protection value of any\narmor it hits.\n \nWhen above 1.0, the bullet increases the\nprotection value of the armor instead.\n \nLower is better.", // TODO.Translate + L"\n \nDetermines a proportional increase of damage\npotential once the bullet gets through the\ntarget's armor and hits the bodypart behind it.\n \nWhen above 1.0, the bullet's damage\nincreases after penetrating the armor.\n \nWhen below 1.0, the bullet's damage\npotential decreases after passing through armor.\n \nHigher is better.", + L"\n \nA multiplier to the bullet's damage potential\nthat is applied immediately before hitting the\ntarget.\n \nValues above 1.0 indicate an increase in damage,\nvalues below 1.0 indicate a decrease.\n \nHigher is better.", + L"\n \nAdditional heat generated by this ammunition.\n \nLower is better.", // TODO.Translate + L"\n \nDetermines what percentage of a\nbullet's damage will be poisonous.", // TODO.Translate + L"\n \nAdditional dirt generated by this ammunition.\n \nLower is better.", // TODO.Translate +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|D|a|m|a|g|e", + L"|S|t|u|n |D|a|m|a|g|e", + L"|E|x|p|l|o|d|e|s |o|n| |I|m|p|a|c|t", // HEADROCK HAM 5 // TODO.Translate + L"|B|l|a|s|t |R|a|d|i|u|s", + L"|S|t|u|n |B|l|a|s|t |R|a|d|i|u|s", + L"|N|o|i|s|e |B|l|a|s|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |S|t|a|r|t |R|a|d|i|u|s", + L"|L|i|g|h|t |S|t|a|r|t |R|a|d|i|u|s", + L"|S|m|o|k|e |S|t|a|r|t |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |S|t|a|r|t |R|a|d|i|u|s", + L"|T|e|a|r|g|a|s |E|n|d |R|a|d|i|u|s", + L"|M|u|s|t|a|r|d |G|a|s |E|n|d |R|a|d|i|u|s", + L"|L|i|g|h|t |E|n|d |R|a|d|i|u|s", + L"|S|m|o|k|e |E|n|d |R|a|d|i|u|s", + L"|I|n|c|e|n|d|i|a|r|y |E|n|d |R|a|d|i|u|s", + L"|E|f|f|e|c|t |D|u|r|a|t|i|o|n", + // HEADROCK HAM 5: Fragmentation // TODO.Translate + L"|N|u|m|b|e|r |o|f |F|r|a|g|m|e|n|t|s", + L"|D|a|m|a|g|e |p|e|r |F|r|a|g|m|e|n|t", + L"|F|r|a|g|m|e|n|t |R|a|n|g|e", + // HEADROCK HAM 5: End Fragmentations + L"|L|o|u|d|n|e|s|s", + L"|V|o|l|a|t|i|l|i|t|y", + L"|R|e|p|a|i|r |E|a|s|e", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nThe amount of damage caused by this explosive.\n \nNote that blast-type explosives deliver this damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of damage every turn until the\neffect dissipates.\n \nHigher is better.", + L"\n \nThe amount of non-lethal (stun) damage caused\nby this explosive.\n \nNote that blast-type explosives deliver their damage\nonly once (when they go off), while prolonged effect\nexplosives deliver this amount of stun damage every\nturn until the effect dissipates.\n \nHigher is better.", + L"\n \nThis explosive will not bounce around -\nit will explode as soon as it hits any obstacle.", // HEADROCK HAM 5 // TODO.Translate + L"\n \nThis is the radius of the explosive blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the explosion.\n \nHigher is better.", + L"\n \nThis is the radius of the stun-blast caused by\nthis explosive item.\n \nTargets will suffer less damage the further they are\nfrom the center of the blast.\n \nHigher is better.", + L"\n \nThis is the distance that the noise from this\ntrap will travel. Soldiers within this distance\nare likely to hear the noise and be alerted.\n \nHigher is better.", + L"\n \nThis is the starting radius of the tear-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the mustard-gas\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the light\nemitted by this explosive item.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the starting radius of the smoke\nreleased by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the end radius and duration\nof the effect (displayed below).\n \nHigher is better.", + L"\n \nThis is the starting radius of the flames\ncaused by this explosive item.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the end radius and duration of the effect\n(displayed below).\n \nHigher is better.", + L"\n \nThis is the final radius of the tear-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the mustard-gas released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn,\nunless wearing a gas mask.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the light emitted\nby this explosive item before it dissipates.\n \nTiles close to the center of the effect will become\nvery bright, while tiles nearer the edge\nwill only be a little brighter than normal.\n \nAlso note the start radius and duration\nof the effect.\n \nAlso remember that unlike other explosives with\ntimed effects, the light effect gets SMALLER\nover time, until it disappears.\n \nHigher is better.", + L"\n \nThis is the final radius of the smoke released\nby this explosive item before it dissipates.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn\n(if any), unless wearing a gas mask. More importantly,\nanyone inside the cloud becomes extremely difficult to spot,\nand also loses a large chunk of sight-range themselves.\n \nAlso note the start radius and duration\nof the effect.\n \nHigher is better.", + L"\n \nThis is the final radius of the flames caused\nby this explosive item before they dissipate.\n \nEnemies caught within the radius will suffer\nthe listed damage and stun-damage each turn.\n \nAlso note the start radius and duration of the effect.\n \nHigher is better.", + L"\n \nThis is the duration of the explosive effect.\n \nEach turn, the radius of the effect will grow by\none tile in every direction, until reaching\nthe listed End Radius.\n \nOnce the duration has been reached, the effect\ndissipates completely.\n \nNote that light-type explosives become SMALLER\nover time, unlike other effects.\n \nHigher is better.", + // HEADROCK HAM 5: Fragmentation // TODO.Translate + L"\n \nThis is the number of fragments that will\nbe ejected from the explosion.\n \nFragments are similar to bullets, and may hit\nanyone who's close enough to the explosion.\n \nHigher is better.", + L"\n \nThe potential amount of damage caused by each\nfragment ejected from the explosion.\n \nHigher is better.", + L"\n \nThis is the average range to which fragments\nfrom this explosion will fly.\n \nSome fragments may end up further away, or fail\nto cover the distance altogether.\n \nHigher is better.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nThis is the distance (in Tiles) within which\nsoldiers and mercs will hear the explosion when\nit goes off.\n \nEnemies hearing the explosion will be alerted to your\npresence.\n \nLower is better.", + L"\n \nThis value represents a chance (out of 100) for this\nexplosive to spontaneously explode whenever it is damaged\n(for instance, when other explosions go off nearby).\n \nCarrying highly-volatile explosives into combat\nis therefore extremely risky and should be avoided.\n \nScale: 0-100.\nLower is better.", + L"\n \nDetermines how difficult it is to repair these explosives.\n \ngreen = Anybody can repair them.\n \nred = This item can't be repaired.\n \nHigher is better.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|R|e|p|a|i|r |E|a|s|e", + L"|A|v|a|i|l|a|b|l|e |V|o|l|u|m|e", + L"|V|o|l|u|m|e", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nDetermines how difficult it is to repair this item.\n \ngreen = Anybody can repair it.\n \nred = This item can't be repaired.\n \nHigher is better.", + L"\n \nDetermines how much space is available on this MOLLE carrier.\n \nHigher is better.", + L"\n \nDetermines how much space this MOLLE pocket will occupy.\n \nLower is better.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|T|r|a|c|e|r |A|m|m|o", + L"|A|n|t|i|-|T|a|n|k |A|m|m|o", + L"|I|g|n|o|r|e|s |A|r|m|o|r", + L"|A|c|i|d|i|c |A|m|m|o", + L"|L|o|c|k|-|B|u|s|t|i|n|g |A|m|m|o", + L"|R|e|s|i|s|t|a|n|t |t|o |E|x|p|l|o|s|i|v|e|s", + L"|W|a|t|e|r|p|r|o|o|f", + L"|E|l|e|c|t|r|o|n|i|c", + L"|G|a|s |M|a|s|k", + L"|N|e|e|d|s |B|a|t|t|e|r|i|e|s", + L"|C|a|n |P|i|c|k |L|o|c|k|s", + L"|C|a|n |C|u|t |W|i|r|e|s", + L"|C|a|n |S|m|a|s|h |L|o|c|k|s", + L"|M|e|t|a|l |D|e|t|e|c|t|o|r", + L"|R|e|m|o|t|e |T|r|i|g|g|e|r", + L"|R|e|m|o|t|e |D|e|t|o|n|a|t|o|r", + L"|T|i|m|e|r |D|e|t|o|n|a|t|o|r", + L"|C|o|n|t|a|i|n|s |G|a|s|o|l|i|n|e", + L"|T|o|o|l |K|i|t", + L"|T|h|e|r|m|a|l |O|p|t|i|c|s", + L"|X|-|R|a|y |D|e|v|i|c|e", + L"|C|o|n|t|a|i|n|s |D|r|i|n|k|i|n|g |W|a|t|e|r", + L"|C|o|n|t|a|i|n|s |A|l|c|o|h|o|l", + L"|F|i|r|s|t |A|i|d |K|i|t", + L"|M|e|d|i|c|a|l |K|i|t", + L"|L|o|c|k |B|o|m|b", + L"|D|r|i|n|k",// TODO.Translate + L"|M|e|a|l", + L"|A|m|m|o |B|e|l|t", + L"|A|m|m|o |V|e|s|t", + L"|D|e|f|u|s|a|l |K|i|t", // TODO.Translate + L"|C|o|v|e|r|t |I|t|e|m", // TODO.Translate + L"|C|a|n|n|o|t |b|e |d|a|m|a|g|e|d", + L"|M|a|d|e |o|f |M|e|t|a|l", + L"|S|i|n|k|s", + L"|T|w|o|-|H|a|n|d|e|d", + L"|B|l|o|c|k|s |I|r|o|n |S|i|g|h|t|s", + L"|A|n|t|i|-|M|a|t|e|r|i|a|l |A|m|m|o", // TODO.Translate + L"|F|a|c|e |P|r|o|t|e|c|t|i|o|n", + L"|I|n|f|e|c|t|i|o|n |P|r|o|t|e|c|t|i|o|n", // 39 + L"|S|h|i|e|l|d", // TODO.Translate + L"|C|a|m|e|r|a", // TODO.Translate + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate + L"|B|l|o|o|d |B|a|g", // 44 + L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nThis ammo creates a tracer effect when fired in\nfull-auto or burst mode.\n \nTracer fire helps keep the volley accurate\nand thus deadly despite the gun's recoil.\n \nAlso, tracer bullets create paths of light that\ncan reveal a target in darkness. However, they\nalso reveal the shooter to the enemy!\n \nTracer Bullets automatically disable any\nMuzzle Flash Suppression items installed on the\nsame weapon.", + L"\n \nThis ammo can damage the armor on a tank.\n \nAmmo WITHOUT this property will do no damage\nat all to tanks.\n \nEven with this property, remember that most guns\ndon't cause enough damage anyway, so don't\nexpect too much.", + L"\n \nThis ammo ignores armor completely.\n \nWhen fired at an armored target, it will behave\nas though the target is completely unarmored,\nand thus transfer all its damage potential to the target!", + L"\n \nWhen this ammo strikes the armor on a target,\nit will cause that armor to degrade rapidly.\n \nThis can potentially strip a target of its\narmor!", + L"\n \nThis type of ammo is exceptional at breaking locks.\n \nFire it directly at a locked door or container\nto cause massive damage to the lock.", + L"\n \nThis armor is three times more resistant\nagainst explosives than it should be, given\nits Protection value.\n \nWhen an explosion hits the armor, its Protection\nvalue is considered three times higher than\nthe listed value.", + L"\n \nThis item is impervious to water. It does not\nreceive damage from being submerged.\n \nItems WITHOUT this property will gradually deteriorate\nif the person carrying them goes for a swim.", + L"\n \nThis item is electronic in nature, and contains\ncomplex circuitry.\n \nElectronic items are inherently more difficult\nto repair, at least without the ELECTRONICS skill.", + L"\n \nWhen this item is worn on a character's face,\nit will protect them from all sorts of noxious gasses.\n \nNote that some gases are corrosive, and might eat\nright through the mask...", + L"\n \nThis item requires batteries. Without batteries,\nyou cannot activate its primary abilities.\n \nTo use a set of batteries, attach them to\nthis item as you would a scope to a rifle.", + L"\n \nThis item can be used to pick open locked\ndoors or containers.\n \nLockpicking is silent, although it requires\nsubstantial mechanical skill to pick anything\nbut the simplest locks. This item modifies\nthe lockpicking chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate + L"\n \nThis item can be used to cut through wire fences.\n \nThis allows a character to rapidly move through\nfenced areas, possibly outflanking the enemy!", + L"\n \nThis item can be used to smash open locked\ndoors or containers.\n \nLock-smashing requires substantial strength,\ngenerates a lot of noise, and can easily\ntire a character out. However, it is a good\nway to get through locks without superior skills or\ncomplicated tools. This item improves \nyour chance by ", //JMich_SkillsModifiers: needs to be followed by a number // TODO.Translate + L"\n \nThis item can be used to detect metallic objects\nunder the ground.\n \nNaturally, its primary function is to detect\nmines without the necessary skills to spot them\nwith the naked eye.\n \nMaybe you'll find some buried treasure too.", + L"\n \nThis item can be used to detonate a bomb\nwhich has been set with a remote detonator.\n \nPlant the bomb first, then use the\nRemote Trigger item to set it off when the\ntime is right.", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator can be triggered\nby a (separate) remote device.\n \nRemote Detonators are great for setting traps,\nbecause they only go off when you tell them to.\n \nAlso, you have plenty of time to get away!", + L"\n \nWhen attached to an explosive device and set up\nin the right position, this detonator will count down\nfrom the set amount of time, and explode once the\ntimer expires.\n \nTimer Detonators are cheap and easy to install,\nbut you'll need to time them just right to give\nyourself enough chance to get away!", + L"\n \nThis item contains gasoline (fuel).\n \nIt might come in handy if you ever\nneed to fill up a gas tank...", + L"\n \nThis item contains various tools that can\nbe used to repair other items.\n \nA toolkit item is always required when setting\na character to repair duty. This item modifies\nthe effectiveness of repair by ", //JMich_SkillsModifiers: need to be followed by a number // TODO.Translate + L"\n \nWhen worn in a face-slot, this item provides\nthe ability to spot enemies through walls,\nthanks to their heat signature.", + L"\n \nThis powerful device can be used to scan\nfor enemies using X-rays.\n \nIt will reveal all enemies within a certain radius\nfor a short period of time.\n \nKeep away from reproductive organs!", + L"\n \nThis item contains fresh drinking water.\nUse when thirsty.", + L"\n \nThis item contains liquor, alcohol, booze,\nwhatever you fancy calling it.\n \nUse with caution. Do not drink and drive.\nMay cause cirrhosis of the liver.", + L"\n \nThis is a basic field medical kit, containing\nitems required to provide basic medical aid.\n \nIt can be used to bandage wounded characters\nand prevent bleeding.\n \nFor actual healing, use a proper Medical Kit\nand/or plenty of rest.", + L"\n \nThis is a proper medical kit, which can\nbe used in surgery and other serious medicinal\npurposes.\n \nMedical Kits are always required when setting\na character to Doctoring duty.", + L"\n \nThis item can be used to blast open locked\ndoors and containers.\n \nExplosives skill is required to avoid\npremature detonation.\n \nBlowing locks is a relatively easy way of quickly\ngetting through locked doors. However,\nit is very loud, and dangerous to most characters.", + L"\n \nThis item will still your thirst\nif you drink it.",// TODO.Translate + L"\n \nThis item will still your hunger\nif you eat it.", + L"\n \nWith this ammo belt you can\nfeed someone else's MG.", + L"\n \nYou can feed an MG with ammo\nbelts stored in this vest.", + L"\n \nThis item improves your trap disarm chance by ", // TODO.Translate + L"\n \nThis item and everything attached/inside\nit is hidden from curious eyes.", // TODO.Translate + L"\n \nThis item cannot be damaged.", + L"\n \nThis item is made of metal.\nIt takes less damage than other items.", + L"\n \nThis item sinks when put in water.", + L"\n \nThis item requires both hands to be used.", + L"\n \nThis item will block your iron sights\nso you cannot use them.", + L"\n \nThis ammo can destroy light walls\nand various other objects.", // TODO.Translate + L"\n \nIf worn on your face, this will lower\nthe chance to be infected by other people.", + L"\n \nIf kept in your inventory, this will lower\nthe chance to be infected by other people.", + L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate + L"\n \nYou can take photos with this.", // TODO.Translate + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate + L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|F|l|a|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |S|n|a|p|s|h|o|t |M|o|d|i|f|i|e|r", + L"|F|l|a|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|P|e|r|c|e|n|t |A|i|m|i|n|g |M|o|d|i|f|i|e|r", + L"|A|l|l|o|w|e|d |A|i|m|i|n|g |L|e|v|e|l|s |M|o|d|i|f|i|e|r", + L"|A|i|m|i|n|g |C|a|p |M|o|d|i|f|i|e|r", + L"|G|u|n |H|a|n|d|l|i|n|g |M|o|d|i|f|i|e|r", + L"|D|r|o|p |C|o|m|p|e|n|s|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|T|a|r|g|e|t |T|r|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|M|e|l|e|e |D|a|m|a|g|e |M|o|d|i|f|i|e|r", + L"|R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|S|c|o|p|e |M|a|g|n|i|f|i|c|a|t|i|o|n |F|a|c|t|o|r", + L"|P|r|o|j|e|c|t|i|o|n |F|a|c|t|o|r", + L"|L|a|t|e|r|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|V|e|r|t|i|c|a|l |R|e|c|o|i|l |M|o|d|i|f|i|e|r", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |A|c|c|u|r|a|c|y |M|o|d|i|f|i|e|r", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y |M|o|d|i|f|i|e|r", + L"|T|o|t|a|l |A|P |M|o|d|i|f|i|e|r", + L"|A|P|-|t|o|-|R|e|a|d|y |M|o|d|i|f|i|e|r", + L"|S|i|n|g|l|e|-|a|t|t|a|c|k |A|P |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |A|P |M|o|d|i|f|i|e|r", + L"|A|u|t|o|f|i|r|e |A|P |M|o|d|i|f|i|e|r", + L"|R|e|l|o|a|d |A|P |M|o|d|i|f|i|e|r", + L"|M|a|g|a|z|i|n|e |S|i|z|e |M|o|d|i|f|i|e|r", + L"|B|u|r|s|t |S|i|z|e |M|o|d|i|f|i|e|r", + L"|H|i|d|d|e|n |M|u|z|z|l|e |F|l|a|s|h", + L"|L|o|u|d|n|e|s|s |M|o|d|i|f|i|e|r", + L"|I|t|e|m |S|i|z|e |M|o|d|i|f|i|e|r", + L"|R|e|l|i|a|b|i|l|i|t|y |M|o|d|i|f|i|e|r", + L"|W|o|o|d|l|a|n|d |C|a|m|o|u|f|l|a|g|e", + L"|U|r|b|a|n |C|a|m|o|u|f|l|a|g|e", + L"|D|e|s|e|r|t |C|a|m|o|u|f|l|a|g|e", + L"|S|n|o|w |C|a|m|o|u|f|l|a|g|e", + L"|S|t|e|a|l|t|h |M|o|d|i|f|i|e|r", + L"|H|e|a|r|i|n|g |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|G|e|n|e|r|a|l |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|N|i|g|h|t|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|D|a|y|-|t|i|m|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|B|r|i|g|h|t|-|L|i|g|h|t |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|C|a|v|e |V|i|s|i|o|n |R|a|n|g|e |M|o|d|i|f|i|e|r", + L"|T|u|n|n|e|l |V|i|s|i|o|n", + L"|M|a|x|i|m|u|m |C|o|u|n|t|e|r|-|F|o|r|c|e", + L"|C|o|u|n|t|e|r|-|F|o|r|c|e |F|r|e|q|u|e|n|c|y", + L"|T|o|-|H|i|t |B|o|n|u|s", + L"|A|i|m |B|o|n|u|s", + L"|S|i|n|g|l|e |S|h|o|t |T|e|m|p|e|r|a|t|u|r|e", // TODO.Translate + L"|C|o|o|l|d|o|w|n |F|a|c|t|o|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d", + L"|T|e|m|p|e|r|a|t|u|r|e |M|o|d|i|f|i|e|r", + L"|C|o|o|l|d|o|w|n |M|o|d|i|f|i|e|r", + L"|J|a|m |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|D|a|m|a|g|e |T|h|r|e|s|h|o|l|d |M|o|d|i|f|i|e|r", + L"|P|o|i|s|o|n |P|e|r|c|e|n|t|a|g|e", // TODO.Translate + L"|D|i|r|t |M|o|d|i|f|i|e|r", // TODO.Translate + L"|P|o|i|s|o|n |M|o|d|i|f|i|e|r",// TODO.Translate + L"|F|o|o|d| |P|o|i|n|t|s",// TODO.Translate + L"|D|r|i|n|k |P|o|i|n|t|s",// TODO.Translate + L"|P|o|r|t|i|o|n |S|i|z|e",// TODO.Translate + L"|M|o|r|a|l|e |M|o|d|i|f|i|e|r",// TODO.Translate + 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 + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Accuracy value.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the shooter's accuracy\nfor ANY shot with a ranged weapon by the\nlisted percentage, based on their original accuracy.\n \nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis item modifies the accuracy gained from each\nextra aiming level you pay for, when aiming\na ranged weapon, by the\nlisted percentage based on the original value.\n \nHigher is better.", + L"\n \nThis item modifies the number of extra aiming\nlevels this gun can take.\n \nReducing the number of allowed aiming levels\nmeans that each level adds proportionally\nmore accuracy to the shot.\nTherefore, the FEWER aiming levels are allowed,\nthe faster you can aim this gun, without losing\naccuracy!\n \nLower is better.", + L"\n \nThis item modifies the shooter's maximum accuracy\nwhen using ranged weapons, as a percentage\nof their original maximum accuracy.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis item modifies the difficulty of\ncompensating for shots beyond a weapon's range.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis item modifies the difficulty of hitting\na moving target with a ranged weapon.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour weapon, by the listed amount.\n \nHigher is better.", + L"\n \nThis item modifies the damage output of\nyour melee weapon, by the listed amount.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies its maximum effective range.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprovides extra magnification, making shots at a distance\ncomparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nprojects a dot on the target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Horizontal Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Vertical Recoil\nby the listed value.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis item modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\naccurately apply counter-force against a gun's\nrecoil, during Burst or Autofire volleys.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis item modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, during Burst\nor Autofire volleys.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nThis item directly modifies the amount of\nAPs the character gets at the start of each turn.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifiest the AP cost to bring the weapon to\n'Ready' mode.\n \nLower is better.", + L"\n \nWhen attached to any weapon, this item\nmodifies the AP cost to make a single attack with\nthat weapon.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nBurst-fire mode, this item modifies the AP cost\nof firing a Burst.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon capable of\nAuto-fire mode, this item modifies the AP cost\nof firing an Autofire Volley.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the AP cost of reloading the weapon.\n \nLower is better.", + L"\n \nWhen attached to a ranged weapon, this item\nchanges the size of magazines that can be loaded\ninto the weapon.\n \nThat weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the amount of bullets fired\nby the weapon in Burst mode.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, attaching it to the weapon\nwill enable burst-fire mode.\n \nConversely, if the weapon is initially Burst-Capable,\na high-enough negative modifier here can disable\nburst mode completely.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nWhen attached to a ranged weapon, this item\nwill hide the weapon's muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nWhen attached to a weapon, this item modifies\nthe range at which firing the weapon can be\nheard by both enemies and mercs.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nThis item modifies the size of any item it\nis attached to.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", + L"\n \nWhen attached to any weapon, this item modifies\nthat weapon's Reliability value.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nwoodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nurban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\ndesert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's camouflage in\nsnowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's stealth ability by\nmaking it more difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Hearing Range by the\nlisted percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it modifies the wearer's Vision Range by the\nlisted percent.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this item is worn, or attached to a worn\nitem, it changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nLower is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \n\n \nHigher 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, during Burst\nor Autofire volleys.\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 \nWhen attached to a ranged weapon, this item\nmodifies the weapon's CTH value.\n \nIncreased CTH allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", + L"\n \nWhen attached to a ranged weapon, this item\nmodifies the weapon's Aim Bonus.\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.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate + L"\n \nEvery turn, the temperature is lowered\nby this amount.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will jam more frequently.\n \nHigher is better.", + L"\n \nIf an item's temperature is above this,\nit will be damaged more easily.\n \nHigher is better.", + L"\n \nA gun's single shot temperature is\nincreased by this percentage.\n \nLower is better.", + L"\n \nA gun's cooldown factor is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's jam threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nA gun's damage threshold is\nincreased by this percentage.\n \nHigher is better.", + L"\n \nThis is the percentage of damage dealt\nby this item that will be poisonous.\n\nUsefulness depends on whether enemy\nhas poison resistance or absorption.", // TODO.Translate + L"\n \nA single shot causes this much dirt.\nAmmunition types and attachments can\naffect this value.\n \nLower is better.", // TODO.Translate + L"\n \nWhen this item is eaten\nit causes that much poison.\n \nLower is better.", // TODO.Translate + L"\n \nAmount of energy in kcal.\n \nHigher is better.", // TODO.Translate + L"\n \nAmount of water in liter.\n \nHigher is better.", // TODO.Translate + 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"", + 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 + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nThis weapon's accuracy is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased accuracy allows the gun to hit targets\nat longer ranges more often, assuming it is\nalso well-aimed.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies its shooter's accuracy\nwith ANY shot by the listed percentage\nbased on the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed amount.\n \nScale: -100 to +100.\nHigher is better.", + L"\n \nThis weapon modifies the amount of accuracy\ngained from each extra aiming level you\npay for by the listed percentage, based\non the shooter's original accuracy.\n \nHigher is better.", + L"\n \nThe number of Extra Aiming Levels allowed\nfor this gun has been modified by its ammo,\nattachments, or built-in attributes.\nIf the number of levels is being reduced, the gun is\nfaster to aim without being any less accurate.\n \nConversely, if the number of levels is increased,\nthe gun becomes slower to aim without being\nmore accurate.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's maximum\naccuracy, as a percentage of the shooter's original\nmaximum accuracy.\n \nHigher is better.", + L"\n \nThis weapon's attachments or inherent abilities\nmodify the weapon's Handling difficulty.\n \nBetter handling makes the gun more accurate to fire,\nwith or without extra aiming.\n \nNote that this is based on the gun's original\nGun Handling factor, which is higher for rifles and\nheavy weapons, and lower for pistols and small\nweapons.\n \nLower is better.", + L"\n \nThis weapon's ability to compensate for shots\nbeyond its maximum range is being modified by\nattachments or the weapon's inherent abilities.\n \nA high bonus here can increase a weapon's\nnatural Maximum Range by at least a few tiles.\n \nHigher is better.", + L"\n \nThis weapon's ability to hit moving targets\nat a distance is being modified by attachments\nor the weapon's inherent abilities.\n \nA high bonus here can help hitting\nfast-moving targets, even at a distance.\n \nHigher is better.", + L"\n \nThis weapon's damage output is being modified\nby its ammo, attachments, or inherent abilities.\n \nHigher is better.", + L"\n \nThis weapon's melee-combat damage output is being\nmodified by its ammo, attachments, or inherent abilities.\n \nThis applies only to melee weapons, both sharp\nand blunt.\n \nHigher is better.", + L"\n \nThis weapon's maximum range has been increased\nor decreased thanks to its ammo, attachments,\nor inherent abilities.\n \nMaximum Range mainly dictates how far a bullet\nfired from the weapon can fly before it begins\ndropping sharply towards the ground.\n \nHigher is better.", + L"\n \nThis weapon is equipped with optical magnification,\nmaking shots at a distance comparatively easier to make.\n \nNote that a high Magnification Factor is detrimental\nwhen used at targets CLOSER than the\noptimal distance.\n \nHigher is better.", + L"\n \nThis weapon is equipped with a projection device\n(possibly a laser), which projects a dot on\nthe target, making it easier to hit.\n \nThe projection effect is only useful up to a given\ndistance, beyond which it begins to diminish and\neventually disappears.\n \nHigher is better.", + L"\n \nThis weapon's horizontal recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon's vertical recoil strength is being\nmodified by its ammo, attachments, or inherent\nabilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"\n \nThis weapon modifies the shooter's ability to\ncope with recoil during Burst or Autofire volleys,\ndue to its attachments, ammo, or inherent abilities.\n \nWhen high, this can help a shooter to control\nguns with powerful recoil, even if the shooter\nhas low Strength.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\naccurately apply counter-force against its\nrecoil, due to its attachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nA high bonus helps the shooter bring the gun's muzzle\nprecisely towards the target, even at longer ranges,\nmaking volleys more accurate as a result.\n \nHigher is better.", + L"\n \nThis weapon modifies the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil, due to its\nattachments, ammo, or inherent abilities.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nHigher frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nHigher is better.", + L"\n \nWhen held in hand, this weapon modifies the amount of\nAPs its user gets at the start of each turn.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to bring this weapon to 'Ready' mode has\nbeen modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to make a single attack with this\nweapon has been modified.\n \nNote that for Burst/Auto-capable weapons, the\ncost of using these modes is directly influenced\nby this modifier as well!\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire a Burst with this weapon has\nbeen modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Burst fire.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost to fire an Autofire Volley with this weapon\nhas been modified.\n \nNaturally, this has no effect if the weapon is not\ncapable of Auto Fire.\n \nNote that it does NOT modify the extra AP\ncost for adding bullets to the volley, only\nthe initial cost for starting the volley.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe AP cost of reloading this weapon has been modified.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe size of magazines that can be loaded into this\nweapon has been modified.\n \nThe weapon will now accept larger or smaller\nmagazines of the same caliber.\n \nHigher is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthe amount of bullets fired by this weapon in Burst mode\nhas been modified.\n \nIf the weapon was not initially Burst-Capable, and the\nmodifier is positive, then this is what\ngives the weapon its burst-fire capability.\n \nConversely, if the weapon was initially Burst-Capable,\na high-enough negative modifier here may have\ndisabled burst mode entirely for this weapon.\n \nHigher is USUALLY better. Of course, part of the\npoint in Burst Mode is to conserve bullets...", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon produces no muzzle flash.\n \nThis makes sure that enemies cannot spot the shooter\nif he is firing while hidden, and is especially\nimportant at night.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's loudness has been modified. The distance\nat which enemies and mercs can hear the weapon being\nused has subsequently changed.\n \nIf this modifier drops the weapon's Loudness value\nto 0, the weapon becomes completely silent.\n \nLower is better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's size category has changed.\n \nSize is important when using the New Inventory system,\nwhere pockets only accept items of specific sizes and shapes.\n \nIncreasing an item's size makes it too big for some pockets\nit used to fit into.\n \nConversely, making an item smaller means it will fit into\nmore pockets, and pockets will be able to contain\nmore of it.\n \nLower is generall better.", + L"\n \nDue to its attachments, ammo or inherent abilities,\nthis weapon's reliability has been modified.\n \nIf positive, the weapon's condition will deteriorate\nslower when used in combat. Otherwise, the\nweapon deteriorates faster.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in woodland backgrounds.\n \nTo make good on a positive Woodland Camo modifier, the\nwearer needs to stay close to trees or tall grass.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in urban backgrounds.\n \nTo make good on a positive Urban Camo modifier, the\nwearer needs to stay close to asphalt or concrete.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in desert backgrounds.\n \nTo make good on a positive Desert Camo modifier, the\nwearer needs to stay close to sand, gravel, or\ndesert vegetation.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's camouflage in snowy backgrounds.\n \nTo make good on a positive Snow Camo modifier, the\nwearer needs to stay close to snowy tiles.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's stealth ability by making it\nmore or less difficult to HEAR the character moving\nwhile in Sneaking mode.\n \nNote that this does NOT change a character's visibility,\nonly the amount of noise they make while sneaking.\n \nHigher is better.", + L"\n \nWhen this weapon is held in hand, it modifies the\nsoldier's Hearing Range by the listed percent.\n \nA positive bonus makes it possible to hear noises\nfrom a greater distance.\n \nConversely, a negative modifier impairs the wearer's hearing.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis General modifier works in all conditions.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Night-Vision modifier works only when light\nlevels are sufficiently low.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Day-Vision modifier works only when light\nlevels are average or higher.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Bright-Vision modifier works only when light\nlevels are very high, for example when looking\ninto tiles lit by Break-Lights or at high noon.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit modifies the wearer's Vision Range by the\nlisted percent, thanks to attachments or\ninherent properties of the weapon.\n \nThis Cave-Vision modifier works only in the dark\nand only underground.\n \nHigher is better.", + L"\n \nWhen this weapon is raised to the shooting position,\nit changes the wearer's field-of-view.\n \nNarrowing the field of view shortens sightrange to\neither side.\n \nHigher is better.", + L"\n \nThis is the shooter's ability to\ncope with recoil during Burst or Autofire volleys.\n \nHigher 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 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 \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 be damaged more easily.", + L"\n \nThis weapon's recoil strength is being\nmodified by this percentage value by its ammo,\nattachments, or inherent abilities.\n \nThis has no effect if the weapon lacks both\nBurst and Auto-Fire modes.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"SINGLE", + L"AP", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// TODO.Translate +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"Spakowano amunicję do skrzyń w sektorze %c%d.", + L"Usunięto dodatki z przedmiotów w sektorze %c%d.", + L"Rozładowano amunicję z broni w sektorze %c%d.", + L"Poukładano i scalono przedmioty w sektorze %c%d.", + // Bob: new strings for emptying LBE items + L"Rozładowano LBE w sektorze %c%d.", + L"Wyrzucono %i przedmiot(ów) z %s", // Bunch of stuff removed from LBE item %s + L"Nie można nic wyjąć z %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"Rozładowano %s.", // LBE item %s contained stuff and was emptied + L"Nie udało się rozładować %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"Utracona zawartość %s!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Show all", + L"Guns", + L"Ammo", + L"Explosives", + L"Melee Weapons", + L"Armor", + L"LBE", + L"Kits", + L"Misc. Items", + L"Hide all", +}; + +STR16 gzMercCompare[] = +{ + L"???", + L"Base opinion:", + + L"Dislikes %s %s", + L"Likes %s %s", + + L"Strongly hates %s", + L"Hates %s", // 5 + + L"Deep racism against %s", + L"Racism against %s", + + L"Cares deeply about looks", + L"Cares about looks", + + L"Very sexist", // 10 + L"Sexist", + + L"Dislikes other background", + L"Dislikes other backgrounds", + + L"Past grievances", + L"____", // 15 + L"/", + L"* Opinion is always in [%d; %d]", // TODO.Translate +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = // TODO.Translate +{ + L"Temperature is ", + L"very low", + L"low", + L"medium", + L"high", + L"very high", + L"dangerous", + L"CRITICAL", + L"DRAMATIC", + L"unknown", + L"." +}; + +// TODO.Translate +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"Food is ", + L"fresh", + L"good", + L"ok", + L"stale", + L"shabby", + L"rotting", + L"." +}; + +// TODO.Translate +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Pvt. ", //ExpLevel 1 + L"Pfc. ", //ExpLevel 2 + L"Cpl. ", //ExpLevel 3 + L"Sgt. ", //ExpLevel 4 + L"Lt. ", //ExpLevel 5 + L"Cpt. ", //ExpLevel 6 + L"Maj. ", //ExpLevel 7 + L"Lt.Col. ", //ExpLevel 8 + L"Col. ", //ExpLevel 9 + L"Gen. " //ExpLevel 10 +}; + +//Ja25 UB + +STR16 gzNewLaptopMessages[]= +{ + L"Zapytaj o naszą specjalną ofertę", + L"Temporarily Unavailable", + L"This special press preview of Jagged Alliance 2: Unfinished Business contains the only first 6 sector maps. The final version of the game will feature many more - please see the included readme file for details.", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Odległość od celu (w polach): %d, Jasność = %d/%d", + L"Nadajnik został podłączony do twojego laptopa.", + L"Nie możesz zatrudnić %s(a)", + L"Na określony czas, poniższe honorarium pokryje koszt całej misji razem z wyposażeniem zamieszczonym poniżej.", + L"Zatrudnij %s(a) już teraz i weź udział w naszej promocji 'jedno honorarium pokrywa wszystko'. Ponadto w tej niewiarygodnej ofercie cały ekwipunek najemnika otrzymasz za darmo.", + L"Honorarium", + L"Ktoś jest w sektorze...", + //L"Zasięg broni (w polach): %d, Szansa na trafienie: %d procent", + L"Pokaż osłonę", + L"Zasięg wzroku", + L"Nowi rekruci nie mogą tam przybyć.", + L"Dopóki twój laptop będzie bez nadajnika, nie będziesz mógł zatrudniać nowych członków zespołu. Możliwe, że to odpowiedni moment by odczytać zapisany stan gry lub zacząć grać od nowa!", + L"%s słyszy dźwięk zgniatanego metalu dochodzący spod ciała Jerry'ego. Niestety zabrzmiało to jak dźwięk zgniatanej anteny twojego laptopa.", //the %s is the name of a merc. @@@ Modified + L"Po przejrzeniu notatki pozostawionej przez podkomendanta Morrisa, %s zauważa pewną możliwość. Notatka zawiera koordynaty potrzebne do wystrzelenia pocisków w stronę różnych miast w Arulco. Są na niej również współrzędne, z których pociski te zostaną wystrzelone.", + L"Przyglądając się panelowi kontrolnemu, %s spostrzega, że liczby można zamienić tak, by pociski zniszczyły tę placówkę. %s musi znaleźć drogę ucieczki. Winda zdaje się być najszybszym rozwiązaniem...", + L"Grasz w trybie CZŁOWIEKA Z ŻELAZA i nie możesz zapisywać gry, gdy wróg jest w sektorze.", // @@@ new text + L"(Nie można zapisywać gry podczas walki)", //@@@@ new text + L"Kampania ma więcej niż 30 postaci.", // @@@ new text + L"Nie można odnaleźć kampanii.", // @@@ new text + L"Kampania: Standardowa ( %S )", // @@@ new text + L"Kampania: %S", // @@@ new text + L"Wybrałeś kampanię %S. Ta kampania została stworzona przez fanów gry. Czy jesteś pewien, że chcesz w nią zagrać?", // @@@ new text + L"Żeby użyć edytora powinieneś wcześniej wybrać kampanię inną niż standardowa.", ///@@new + // anv: extra iron man modes + L"Grasz w trybie CZŁOWIEKA Z ŻELIWA i nie możesz zapisywać gry w trakcie walki turowej.", + L"Grasz w trybie CZŁOWIEKA ZE STALI i możesz zapisywać grę tylko raz dziennie, o %02d:00.", +}; + +// The_bob : pocket popup text defs // TODO.Translate +STR16 gszPocketPopupText[]= +{ + L"Grenade launchers", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Rocket launchers", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Melee & thrown weapons", // POCKET_POPUP_MEELE_AND_THROWN + L"- no matching ammo -", //POCKET_POPUP_NO_AMMO + L"- no guns in inventory -", //POCKET_POPUP_NO_GUNS + L"more...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features // TODO.Translate +STR16 szCovertTextStr[]= +{ + L"%s has camo!", + L"%s has a backpack!", + L"%s is seen carrying a corpse!", + L"%s's %s is suspicious!", + L"%s's %s is considered military hardware!", + L"%s carries too many guns!", + L"%s's %s is too advanced for an %s soldier!", + L"%s's %s has too many attachments!", + L"%s was seen performing suspicious activities!", + L"%s does not look like a civilian!", + L"%s bleeding was discovered!", + L"%s is drunk and doesn't behave like a soldier!", + L"On closer inspection, %s's disguise does not hold!", + L"%s isn't supposed to be here!", + L"%s isn't supposed to be here at this time!", + L"%s was seen near a fresh corpse!", + L"%s equipment raises a few eyebrows!", + L"%s is seen targetting %s!", + L"%s has seen through %s's disguise!", + L"No clothes item found in Items.xml!", + L"This does not work with the old trait system!", + L"Not enough APs!", + L"Bad palette found!", + L"You need the covert skill to do this!", + L"No uniform found!", + L"%s is now disguised as a civilian.", + L"%s is now disguised as a soldier.", + L"%s wears a disorderly uniform!", + L"In retrospect, asking for surrender in disguise wasn't the best idea...", + L"%s was uncovered!", + L"%s's disguise seems to be ok...", + L"%s's disguise will not hold.", + L"%s was caught stealing!", + L"%s tried to manipulate %s's inventory.", + L"An elite soldier did not recognize %s!", // TODO.Translate + L"A officer knew %s was unfamiliar!", +}; + +STR16 szCorpseTextStr[]= +{ + L"No head item found in Items.xml!", + L"Corpse cannot be decapitated!", + L"No meat item found in Items.xml!", + L"Not possible, you sick, twisted individual!", + L"No clothes to take!", + L"%s cannot take clothes off of this corpse!", + L"This corpse cannot be taken!", + L"No free hand to carry corpse!", + L"No corpse item found in Items.xml!", + L"Invalid corpse ID!", +}; + +STR16 szFoodTextStr[]= +{ + L"%s does not want to eat %s", + L"%s does not want to drink %s", + L"%s ate %s", + L"%s drank %s", + L"%s's strength was damaged due to being overfed!", + L"%s's strength was damaged due to lack of nutrition!", + L"%s's health was damaged due to being overfed!", + L"%s's health was damaged due to lack of nutrition!", + L"%s's strength was damaged due to excessive drinking!", + L"%s's strength was damaged due to lack of water!", + L"%s's health was damaged due to excessive drinking!", + L"%s's health was damaged due to lack of water!", + L"Sectorwide canteen filling not possible, Food System is off!" +}; + +// TODO.Translate +STR16 szPrisonerTextStr[]= +{ + L"%d officers, %d elites, %d regulars, %d admins, %d generals and %d civilians were interrogated.", // TODO.Translate + L"Gained $%d as ransom money.", // TODO.Translate + L"%d prisoners revealed enemy positions.", + L"%d officers, %d elites, %d regulars and %d admins joined our cause.", + L"Prisoners start a massive riot in %s!", + L"%d prisoners were sent to %s!", + L"Prisoners have been released!", + L"The army now occupies the prison in %s, the prisoners were freed!", + L"The enemy refuses to surrender!", + L"The enemy refuses to take you as prisoners - they prefer you dead!", + L"This behaviour is set OFF in your ini settings.", + L"%s has freed %s!", + L"A high-ranking army officer in %s has been revealed!", // TODO.Translate + L"The enemy leader refuses to even consider surrender!", + L"%d prisoners volunteered to join our forces.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= // TODO.Translate +{ + L"nothing", + L"building a fortification", + L"removing a fortification", + L"hacking", // TODO.Translate + L"%s had to stop %s.", + L"The selected barricade cannot be built in this sector", // TODO.Translate +}; + +STR16 szInventoryArmTextStr[]= // TODO.Translate +{ + L"Blow up (%d AP)", + L"Blow up", + L"Arm (%d AP)", + L"Arm", + L"Disarm (%d AP)", + L"Disarm", +}; + +// TODO.Translate +STR16 szBackgroundText_Flags[]= +{ + L" might consume drugs in inventory\n", + L" disregard for all other backgrounds\n", + L" +1 level in underground sectors\n", + L" steals money from the locals sometimes\n", // TODO.Translate + + 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 + + L" huge loyality penalty in all towns if we die\n", // TODO.Translate + + L" refuses to attack animals\n", // TODO.Translate + L" refuses to attack members of the same group\n", // TODO.Translate +}; + +// TODO.Translate +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% APs in polar sectors\n", + L" %s%d%% APs in desert sectors\n", + L" %s%d%% APs in swamp sectors\n", + L" %s%d%% APs in urban sectors\n", + L" %s%d%% APs in forest sectors\n", + L" %s%d%% APs in plain sectors\n", + L" %s%d%% APs in river sectors\n", + L" %s%d%% APs in tropical sectors\n", + L" %s%d%% APs in coastal sectors\n", + L" %s%d%% APs in mountainous sectors\n", + + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% leadership stat\n", + L" %s%d%% marksmanship stat\n", + 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", + L" %s%d%% APs needed for fortification actions\n", + L" %s%d%% APs needed for mortars\n", + L" %s%d%% APs needed to access inventory\n", + L" looks in other direction on airdrops\n %s%d%% APs after airdrop\n", + L" %s%d%% APs on first turn when assaulting a sector\n", + + L" %s%d%% travel speed on foot\n", + L" %s%d%% travel speed on land vehicles\n", + L" %s%d%% travel speed on air vehicles\n", + L" %s%d%% travel speed on water vehicles\n", + + L" %s%d%% fear resistance\n", + L" %s%d%% suppression resistance\n", + L" %s%d%% physical resistance\n", + L" %s%d%% alcohol resistance\n", + L" %s%d%% disease resistance\n", // TODO.Translate + + L" %s%d%% interrogation effectiveness\n", + L" %s%d%% prison guard strength\n", + L" %s%d%% better prices when trading guns and ammo\n", + L" %s%d%% better prices when trading armour, lbe, blades, kits etc.\n", + L" %s%d%% team capitulation strength if we lead negotiations\n", + L" %s%d%% faster running\n", + L" %s%d%% bandaging speed\n", + L" %s%d%% breath regeneration\n", // TODO.Translate + L" %s%d%% strength to carry items\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", + L" %s%d need for sleep\n", + L" %s%d%% melee damage\n", + L" %s%d%% cth with blades\n", + L" %s%d%% camo effectiveness\n", + L" %s%d%% stealth\n", + L" %s%d%% max CTH\n", + L" %s%d hearing range during the night\n", + L" %s%d hearing range during the day\n", + L" %s%d effectivity at disarming traps\n", // TODO.Translate + L" %s%d%% CTH with SAMs\n", // TODO.Translate + + L" %s%d%% effectiveness to friendly approach\n", + L" %s%d%% effectiveness to direct approach\n", + L" %s%d%% effectiveness to threaten approach\n", + 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", + L" %s%d%% insurance cost\n", + L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate + L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate + L" %s%d%% effectiveness at treating population against diseases\n", + L"Can spot tracks up to %d tiles away\n", + L" %s%d%% initial distance to enemy in ambush\n", + L" %s%d%% chance to evade snake attacks\n", // TODO.Translate + + L" dislikes some other backgrounds\n", // TODO.Translate + L"Smoker", + L"Nonsmoker", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% building speed\n", + L" hacking skill: %s%d ", // TODO.Translate + L" %s%d%% burial speed\n", // TODO.Translate + L" %s%d%% administration effectiveness\n", // TODO.Translate + L" %s%d%% exploration effectiveness\n", // TODO.Translate +}; + +STR16 szBackgroundTitleText[] = // TODO.Translate +{ + L"I.M.P. Background", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = // TODO.Translate +{ + L"I.M.P. Prejudices", +}; + +STR16 szPersonalityDisplayText[]= // TODO.Translate +{ + L"You look", + L"and appearance is", + L"important to you.", + L"You have", + L"and care", + L"about that.", + L"You are", + L"and hate everyone", + L".", + L"racist against non-", + L"people.", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"How do you look?", + L"How important are the looks of others to you?", + L"What are your manners?", + L"How important are the manners of other people to you?", + L"What is your nationality?", + L"What nation o you dislike?", + L"How much do you dislike that nation?", + L"How racist are you?", + L"What is your race? You will be\nracist against all other races.", + L"How sexist are you against the other gender?", +}; + +STR16 szRaceText[]= +{ + L"white", + L"black", + L"asian", + L"eskimo", + L"hispanic", +}; + +STR16 szAppearanceText[]= +{ + L"average", + L"ugly", + L"homely", + L"attractive", + L"like a babe", +}; + +STR16 szRefinementText[]= +{ + L"average manners", + L"manners of a slob", + L"manners of a snob", +}; + +STR16 szRefinementTextTypes[] = // TODO.Translate +{ + L"normal people", + L"slobs", + L"snobs", +}; + +STR16 szNationalityText[]= +{ + L"American", // 0 + L"Arab", + L"Australian", + L"British", + L"Canadian", + L"Cuban", // 5 + L"Danish", + L"French", + L"Russian", + L"Traconian", + L"Swiss", // 10 + L"Jamaican", + L"Polish", + L"Chinese", + L"Irish", + L"South African", // 15 + L"Hungarian", + L"Scottish", + L"Arulcan", + L"German", + L"African", // 20 + L"Italian", + L"Dutch", + L"Romanian", + L"Metaviran", + + // newly added from here on + L"Afghan", // 25 + L"Albanian", + L"Argentinian", + L"Armenian", + L"Azerbaijani", + L"Bangladeshi ", // 30 + L"Belarusian", + L"Belgian", + L"Beninese", + L"Bolivian", + L"Bosnian", // 35 + L"Brasilian", + L"Bulgarian", + L"Cambodian", + L"Chadian", + L"Chilean", // 40 + L"Columbian", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Egyptian", // 45 + L"English", + L"Eritrean", + L"Estonian", + L"Ethiopian", + L"Filipino", // 50 + L"Finnish", + L"Georgian", + L"Greek", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Indian", + L"Indonesian", + L"Iranian", + L"Iraqi", // 60 + L"Islandic", + L"Israeli", + L"Japanese", + L"Jordanian", + L"Kazakhstani", // 65 + L"Korean", + L"Kyrgyzstani", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Mexican", // 75 + L"Mongolian", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Nigerian", + L"Nigerien", + L"Norwegian", + L"Pakistani", // 85 + L"Panamanian", + L"Portoguese", + L"Rwandanese", + L"Salvadoran", + L"Saudi", // 90 + L"Serbian", + L"Slovakian", + L"Slovenian", + L"Somali", + L"Spanish", // 95 + L"Sudanese", + L"Swedish", + L"Syrian", + L"Thai", + L"Togolese", // 100 + L"Tunisian", + L"Turkish", + L"Ugandan", + L"Ukrainian", + L"Uruguayan", // 105 + L"Uzbekistani", + L"Venezuelan", + L"Vietnamese", + L"Welsh", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Zimbabwean", +}; + +STR16 szNationalityTextAdjective[] = // TODO.Translate +{ + L"americans", // 0 + L"arabs", + L"australians", + L"britains", + L"canadians", + L"cubans", // 5 + L"danes", + L"frenchmen", + L"russians", + L"traconians", + L"swiss", // 10 + L"jamaicans", + L"poles", + L"chinese", + L"irishmen", + L"south africans", // 15 + L"hungarians", + L"scotsmen", + L"arulcans", + L"germans", + L"africans", // 20 + L"italians", + L"dutchmen", + L"romanians", + L"metavirans", + + // newly added from here on + L"afghans", // 25 + L"albanians", + L"argentinians", + L"armenians", + L"azerbaijani", + L"bangladeshi", // 30 + L"belarusians", + L"belgians", + L"beninese", + L"bolivians", + L"bosnians", // 35 + L"brasilians", + L"bulgarians", + L"cambodians", + L"chadians", + L"chileans", // 40 + L"columbians", + L"congolese", + L"croatians", + L"ecuadorians", + L"egyptians", // 45 + L"englishmen", + L"eritreans", + L"estonians", + L"ethiopians", + L"filipinos", // 50 + L"finns", + L"georgians", + L"greek", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"indians", + L"indonesians", + L"iranians", + L"iraqis", // 60 + L"islandics", + L"israelis", + L"japanese", + L"jordanians", + L"kazakhstani", // 65 + L"koreans", + L"kyrgyzstani", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"mexicans", // 75 + L"mongolians", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"nigerians", + L"nigeriens", + L"norwegians", + L"pakistanis", // 85 + L"panamanians", + L"portoguese", + L"rwandanese", + L"salvadorans", + L"saudis", // 90 + L"serbians", + L"slovakians", + L"slovenians", + L"somali", + L"spaniards", // 95 + L"sudanese", + L"swedes", + L"syrians", + L"thais", + L"togolese", // 100 + L"tunisians", + L"turks", + L"ugandans", + L"ukrainians", + L"uruguayans", // 105 + L"uzbekistani", + L"venezuelans", + L"vietnamese", + L"welshs", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"zimbabweans", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"and do not hate any other nationality.", // used in personnel.cpp + L"of no origin", // used in IMP generation +}; + +STR16 szCareLevelText[]= +{ + L"not", + L"somewhat", + L"extremely", +}; + +STR16 szRacistText[]= +{ + L"not", + L"somewhat", + L"very", +}; + +STR16 szSexistText[]= +{ + L"no sexist", + L"somewhat sexist", + L"very sexist", + L"a Gentleman", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"Batteries are ", + L"full", + L"good", + L"at half", + L"low", + L"depleted", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= // TODO.Translate +{ + L"Mercenary", + L"Green militia", + L"Regular militia", + L"Elite militia", + + L"Civilian", + + L"Administrator", + L"Army Soldier", + L"Elite Soldier", + L"Tank", + + L"Creature", + L"Zombie", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"%s Press Council", + L"Ministry for %s Information Distribution", + L"%s Revolutionary Movement", + L"The Times International", + L"International Times", + L"R.I.S. (Recon Intelligence Service)", + + L"A collection of press sources from %s", + L"We are a neutral source of information. We collect different news articles from %s. We do not judge these sources - we merely publish them, so you can judge yourself. We post articles from various sources, among them", + + L"Conflict Summary", + L"Battle reports", + L"News", + L"About us", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s in %s.", + + L"rebel forces", + L"the army", + + L"attacked", + L"ambushed", + L"airdropped", + + L"The attack came from %s.", + L"%s were reinforced from %s.", + L"The attack came from %s, %s were reinforced from %s.", + L"north", + L"east", + L"south", + L"west", + L"and", + L"an unknown location", // TODO.Translate + + L"Buildings in the sector were damaged.", // TODO.Translate + L"In the fighting, buildings in the sector were damaged, and %d civilians were killed and %d wounded.", + L"During the attack, %s and %s called reinforcements.", + L"During the attack, %s called reinforcements.", + L"Eyewitnesses report the use of chemical weapons from both sides.", + L"Chemical weapons were used by %s.", + L"In a serious escalation of the conflict, both sides deployed tanks.", + L"%d tanks were used by %s, %d of them were destroyed in the fierce fighting.", + L"Both sides are said to have used snipers.", + L"Unverified reports indicate %s snipers were involved in the firefight.", + L"This sector is of huge strategic importance, as it houses one of the handful of anti-air missile batteries the %s army posesses. Aerial photographs show extensive damage to the command center. This will leave the airspace above %s undefended for the time being.", + L"The situation on the ground has gotten even more confusing, as it seems rebel infighting has reached a new level. We now have confirmation that rebel militia engaged in active combat with foreign mercenaries.", + L"The royalists position seems more precarious than previously thought. Reports of a split surfaced, with army personnel opening fire on each other.", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"Deep in the night", // 23 - 3 + L"At dawn", // 3 - 6 + L"Early in the morning", // 6 - 8 + L"In the morning hours", // 8 - 11 + L"At noon", // 11 - 14 + L"On the afternoon", // 14 - 18 + L"On the evening", // 18 - 21 + L"During the night", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Initial funding", + L"Mine income", + L"Trade", + L"Other sources", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Ammunition", + L"Explosives", + L"Food", + L"Medical gear", + L"Item maintenance", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"In an extremely one-sided battle, the army force was wiped out without much resistance.", + + L"The rebels easily defeated the army, inflicting heavy losses.", + L"Without much effort, the rebels inflicted heavy losses upon the army and took several prisoners.", + + L"In a bloody fight, the rebels finally overcame the opposition. The army had severe losses.", + L"The rebels had losses but defeated the royalists. Unverified information says several soldiers might have been taken prisoner.", + + L"In a phyrric victory, the rebels defeated the royalists but had severe casualties of their own. Whether they will be able to hold this position against continued attacks is doubtful.", + + L"The army's superiority in numbers came into full play. The rebels never had a chance and had to either retreat or be killed or captured.", + L"Despite the high number of rebels in this sector, the army easily dispatched them.", + + L"The rebels were clearly unprepared against the army's superiority in numbers an equipment. They were easily defeated.", + L"Even though the rebels had more boots on the ground, the army was better equipped. The rebels clearly lost.", + + L"Fierce fighting saw significant losses on both sides, but in the end, the army's higher number of bodies decided the battle. The rebel force was destroyed. There might have been survivors, but we cannot verify this at this point.", + L"In an intense firefight, the superior training of the armed forces tipped the scales. The rebels had to retreat.", + + L"Neither side was willing to yield. While the army ultimately removed the rebel threat in the area, the staggering losses have resulted in the army unit continuing to exist in name only. But it is clear the rebels will soon be out of men and women if the army can keep on this rate of attrition.", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"Irrelevant", + L"Insignificant", + L"Notable", + L"Noteworthy", + L"Significant", + L"Interesting", + L"Important", + L"Very important", + L"Grave", + L"Major", + L"Momentous", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"Killed", + L"Wounded", + L"Prisoners", + L"Shots fired", + + L"Money earned", + L"Consumption", + L"Losses", + L"Participants", + + L"Promotions", + L"Summary", + L"Detail", + L"Previous", + + L"Next", + L"Incident", + L"Day", +}; + +STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate +{ + L"Glorious %s", + L"Mighty %s", + L"Awesome %s", + L"Intimidating %s", + + L"Powerful %s", + L"Earth-Shattering %s", + L"Insidious %s", + L"Swift %s", + + L"Violent %s", + L"Brutal %s", + L"Relentless %s", + L"Merciless %s", + + L"Cannibalistic %s", + L"Gorgeous %s", + L"Rogue %s", + L"Dubious %s", + + L"Sexually Ambigious %s", + L"Burning %s", + L"Enraged %s", + L"Visonary %s", + + // 20 + L"Gruesome %s", + L"International-law-ignoring %s", + L"Provoked %s", + L"Ceaseless %s", + + L"Inflexible %s", + L"Unyielding %s", + L"Regretless %s", + L"Remorseless %s", + + L"Choleric %s", + L"Unexpected %s", + L"Democratic %s", + L"Bursting %s", + + L"Bipartisan %s", + L"Bloodstained %s", + L"Rouge-wearing %s", + L"Innocent %s", + + L"Hateful %s", + L"Underwear-staining %s", + L"Civilian-devouring %s", + L"Unflinching %s", + + // 40 + L"Expect No Mercy From Our %s", + L"Very Mad %s", + L"Ultimate %s", + L"Furious %s", + + L"Its best to Avoid Our %s", + L"Fear the %s", + L"All Hail the %s!", + L"Protect the %s", + + L"Beware the %s", + L"Crush the %s", + L"Backstabbing %s", + L"Vicious %s", + + L"Sadistic %s", + L"Burning %s", + L"Wrathful %s", + L"Invincible %s", + + L"Guilt-ridden %s", + L"Rotting %s", + L"Sanitized %s", + L"Self-doubting %s", + + // 60 + L"Ancient %s", + L"Very Hungry %s", + L"Sleepy %s", + L"Demotivated %s", + + L"Cruel %s", + L"Annoying %s", + L"Huffy %s", + L"Bisexual %s", + + L"Screaming %s", + L"Hideous %s", + L"Praying %s", + L"Stalking %s", + + L"Cold-blooded %s", + L"Fearsome %s", + L"Trippin' %s", + L"Damned %s", + + L"Vegetarian %s", + L"Grotesque %s", + L"Backward %s", + L"Superior %s", + + // 80 + L"Inferior %s", + L"Okay-ish %s", + L"Porn-consuming %s", + L"Poisoned %s", + + L"Spontaneous %s", + L"Lethargic %s", + L"Tickled %s", + L"The %s is a dupe!", + + L"%s on Steroids", + L"%s vs. Predator", + L"A %s with a twist", + L"Self-Pleasuring %s", + + L"Man-%s hybrid", + L"Inane %s", + L"Overpriced %s", + L"Midnight %s", + + L"Capitalist %s", + L"Communist %s", + L"Intense %s", + L"Steadfast %s", + + // 100 + L"Narcoleptic %s", // TODO.Translate + L"Bleached %s", + L"Nail-biting %s", + L"Smite the %s", + + L"Bloodthirsty %s", + L"Obese %s", + L"Scheming %s", + L"Tree-Humping %s", + + L"Cheaply made %s", + L"Sanctified %s", + L"Falsely accused %s", + L"%s to the rescue", + + L"Crab-people vs. %s", + L"%s in Space!!!", + L"%s vs. Godzilla", + L"Untamed %s", + + L"Durable %s", + L"Brazen %s", + L"Greedy %s", + L"Midnight %s", + + // 120 + L"Confused %s", + L"Irritated %s", + L"Loathsome %s", + L"Manic %s", + + L"Ancient %s", + L"Sneaking %s", + L"%s of Doom", + L"%s's revenge", + + L"A %s on the run", + L"A %s out of time", + L"One with %s", + L"%s from hell", + + L"Super-%s", + L"Ultra-%s", + L"Mega-%s", + L"Giga-%s", + + L"A quantum of %s", + L"Her Majesties' %s", + L"Shivering %s", + L"Fearful %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Dragon", + L"Mountain Lion", + L"Copperhead Snake", + L"Jack Russell Terrier", + + L"Arch-Nemesis", + L"Basilisk", + L"Blade", + L"Shield", + + L"Hammer", + L"Spectre", + L"Congress", + L"Oilfield", + + L"Boyfriend", + L"Girlfriend", + L"Husband", + L"Stepmother", + + L"Sand Lizard", + L"Bankers", + L"Anaconda", + L"Kitten", + + // 20 + L"Congress", + L"Senate", + L"Cleric", + L"Badass", + + L"Bayonet", + L"Wolverine", + L"Soldier", + L"Tree Frog", + + L"Weasel", + L"Shrubbery", + L"Tar pit", + L"Sunset", + + L"Hurricane", + L"Ocelot", + L"Tiger", + L"Defense Industry", + + L"Snow Leopard", + L"Megademon", + L"Dragonfly", + L"Rottweiler", + + // 40 + L"Cousin", + L"Grandma", + L"Newborn", + L"Cultist", + + L"Disinfectant", + L"Democracy", + L"Warlord", + L"Doomsday Device", + + L"Minister", + L"Beaver", + L"Assassin", + L"Rain of Burning Death", + + L"Prophet", + L"Interloper", + L"Crusader", + L"Administration", + + L"Supernova", + L"Liberty", + L"Explosion", + L"Bird of Prey", + + // 60 + L"Manticore", + L"Frost Giant", + L"Celebrity", + L"Middle Class", + + L"Loudmouth", + L"Scape Goat", + L"Warhound", + L"Vengeance", + + L"Fortress", + L"Mime", + L"Conductor", + L"Job-Creator", + + L"Frenchman", + L"Superglue", + L"Newt", + L"Incompetency", + + L"Steppenwolf", + L"Iron Anvil", + L"Grand Lord", + L"Supreme Ruler", + + // 80 + L"Dictator", + L"Old Man Death", + L"Shredder", + L"Vacuum Cleaner", + + L"Hamster", + L"Hypno-Toad", + L"Discjockey", + L"Undertaker", + + L"Gorgon", + L"Child", + L"Mob", + L"Raptor", + + L"Goddess", + L"Gender Inequality", + L"Mole", + L"Baby Jesus", + + L"Gunship", + L"Citizen", + L"Lover", + L"Mutual Fund", + + // 100 + L"Uniform", // TODO.Translate + L"Saber", + L"Snow Leopard", + L"Panther", + + L"Centaur", + L"Scorpion", + L"Serpent", + L"Black Widow", + + L"Tarantula", + L"Vulture", + L"Heretic", + L"Zombie", + + L"Role-Model", + L"Hellhound", + L"Mongoose", + L"Nurse", + + L"Nun", + L"Space Ghost", + L"Viper", + L"Mamba", + + // 120 + L"Sinner", + L"Saint", + L"Comet", + L"Meteor", + + L"Can of worms", + L"Fish oil pills", + L"Breastmilk", + L"Tentacle", + + L"Insanity", + L"Madness", + L"Cough reflex", + L"Colon", + + L"King", + L"Queen", + L"Bishop", + L"Peasant", + + L"Tower", + L"Mansion", + L"Warhorse", + L"Referee", + + // 140 +}; + +STR16 szMercCompareWebSite[] = // TODO.Translate +{ + // main page + L"Mercs Love or Dislike You", + L"Your #1 teambuilding experts on the web", + + L"About us", + L"Analyse a team", + L"Pairwise comparison", + L"Customer voices", + + L"If your business provides innovative solutions for critical applications with realtime demands, perhaps some of these observations sound familiar to you:", + L"Your team struggles with itself.", + L"Your employees waste time working against each other.", + L"Your workforce experiences a high fluctuation rate.", + L"You constantly receive low marks on workplace satisfaction ratings.", + L"If you can say 'yes' to one or more of these statements, then you might have a problem in your business. Your employees likely won't work at peak perfection. Thanks to our patented, easy-to-understand MeLoDY system, you can bring productivity back up in no time, and a happy smile on the faces all your staff!", + + // customer quotes + L"A few citations from our satisfied customers:", + L"My last relationship was terrible. I blamed myself... but now I know better. All men deserve a violent death! Thanks, MeLoDY, for enlightening me!", + L"-Louisa G., Novelist-", + L"I never got along with my brothers to start with, and recently its gotten worse. You've shown me that our trust problem with father is to blame. Thank you for that! I have to make a bold statement to open his eyes to the facts.", + L"-Konrad C., Corrective law enforcement-", + L"I've always been a loner, so joining a team was hard for me. Your insight showed me how to become part of a team. You've been a big help!", + L"-Grant W., Snake charmer-", + L"In my line of work, you need to trust every member of your team 100%%. That's why we went to the experts - we went to MeLoDY.", + L"-Halle L., SPK-", + L"I'll be the first to admit our crew was a rather illustrious assortion of characters, and we ran into some scuffles. But we learned to respect each other, and now complement each other perfectly.", + L"-Michael C., NASA-", + L"I fully recommend this site!", + L"-Kasper H., H&C logistic Inc-", + L"Our training process has to be very quick, so we need to know whom we're dealing with. MeLoDY were the logical choice for this.", + L"-Stan Duke, Kerberus Inc-", + + // analyze + L"Choose your employee", + L"Choose your squad", + + // error messages + L"You currently have no employees at their workplace. Sub-par morale often results in a high rate of absent staff.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s shot me!", + L"%s is scheming behind my back", + L"%s interfered in my business", + L"%s is friends with my enemy", + + L"%s got a contract before I did", + L"%s ordered a shameful retreat", + L"%s massacred the innocent", + L"%s slows us down", + + L"%s doesn't share food", + L"%s jeopardizes the mission", + L"%s is a drug addict", + L"%s is thieving scum", + + L"%s is an incompetent commander", + L"%s is overpaid", + L"%s gets all the good stuff", + L"%s mounted a gun on me", + + L"%s treated my wounds", + L"Had a good drink with %s", + L"%s is fun to get wasted with", + L"%s is annoying when drunk", + + L"%s is an idiot when drunk", + L"%s opposed our view in an argument", + L"%s supported our position", + L"%s agrees to our reasoning", + + L"%s's beliefs are contrary to ours", + L"%s knows how to calm down people", + L"%s is insensitive", + L"%s puts people in their places", + + L"%s is way too impulsive", + L"%s is disease-ridden", + L"%s treated my diseases", + L"%s does not hold back in combat", + + L"%s enjoys combat a bit too much", + L"%s is a good teacher", + L"%s led us to victory", + L"%s saved my life", + + L"%s stole my kill", + L"%s and me fought well together", + L"%s made the enemy surrender", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"World Health Organization", + L"Bringing health to life", + + // links to other pages + L"About WHO", + L"Disease in Arulco", + L"About diseases", + + // text on the main page + L"WHO is the directing and coordinating authority for health within the United Nations system.", + L"It is responsible for providing leadership on global health matters, shaping the health research agenda, setting norms and standards, articulating evidence-based policy options, providing technical support to countries and monitoring and assessing health trends.", + L"In the 21st century, health is a shared responsibility, involving equitable access to essential care and collective defence against transnational threats.", + + // contract page + L"The small country of Arulco is currently experiencing an outbreak of the deadly arulcan plague.", + L"Due to the catastrophic state of the state's health system, only the armies' medical corps is there to combat the deadly disease.", + L"With the country being of limits to UN affiliates, all we can currently do is provide detailed maps on the current status of infection in Arulco. Due to the difficulty in dealing with Arulco, we regret to have to ask for a daily fee of %d$ for anyone wishing to obtain these maps.", + L"Do you wish to acquire detailed data on the current status of diease in Arulco? You can access this data on the strategic map once aquired.", + L"You currently do not have access to WHO data on the arulcan plague.", + L"You have acquired detailed maps on the status of the disease.", + L"Subscribe to map updates", + L"Unsubscribe map updates", + + // helpful tips page + L"The arulcan plague is a deadly strain of the plague unique to the small country of Arulco. In a typical outbreak, the first victims get infected by a mosquito in a swamp or tropical sector. These first victims then inadvertently infect the population of nearby cities.", + L"You won't immediately notice when you are infected - it might take days for the symptoms to show.", + L"You can see the current effects of known diseases your mercs suffer from by hovering over their portrait in the strategic map.", + L"Most diseases get worse over time, be sure to assign a doctor as soon as possible.", + L"Some diseases can be treated with special medicine. You might find some in a well-equipped drugstore.", + L"Doctors can be ordered to check on all local teammates for diseases. You can find out about a disease before it breaks out!", + L"Doctors have a much higher chance to be infected when treating infected patients. Protective gear is very useful.", + L"If a blade weapon hits an infected person, the blade becomes infected, and can be used to spread the infection further.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Kerberus", + L"Experience In Security", + + // links to other pages + L"What is Kerberus?", + L"Team Contracts", + L"Individual Contracts", + + // text on the main page + L"Kerberus is a well known international private military contractor. Founded in 1983, we provide security and armed forces training around the world.", + L"Our extensively trained personnel provides security for over 30 governments areound the world. This includes several conflict zones.", + L"We have several training centres around the globe, including in Indonesia, Colombia, Katar, South Africa and Romania. As a result, we can usually fulfil your contract requirements within 24 hours.", + L"Under 'Individual Contracts', we offer individual contracts with experienced veterans in the field of security.", + L"You can also hire an entire security team. In the 'Team Contracts' page, you can select how many of our personnel you want to hire, and where you require their services. Due to regrettable incidents in the past, we have to insist that the landing zone be under your control prior to debarkation.", + L"Our team can deploy by air, in which case, of course, an airport is required. Depending on the country our services are required in, insetion via harbours or border posts is also possible.", + L"An advance payment is required. After that, the daily fee for our personnel will be deducted from your account.", + + // militia contract page + L"You can select the type and number of personnel you want to hire here:", + L"Initial deployment", + L"Regular personnel", + L"Veteran personnel", + + L"%d available, %d$ each", + L"Hire: %d", + L"Cost: %d$", + + L"Select the initial operational area:", + L"Total Cost: %d$", + L"ETA: %02d:%02d", + L"Close Contract", + + L"Thank you! Our personnel will be on site on %02d:%02d tomorrow.", + L"Kerberus reinforcements have arrived in %s.", + L"Next deployment: %d regulars and %d veterans at %s on %02d:%02d, day %d.", + L"You do not control any location through which we could insert troops!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"Inventory Manipulations", + + L"NVG", + L"Reload All", + L"Move", // TODO.Translate + L"", + + L"Sort", + L"Merge", + L"Separate", + L"Organize", + + L"Crates", + L"Boxes", + L"Drop B/P", + L"Pickup B/P", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Cover Display Mode", + + L"Off", + L"Enemy", + L"Merc", + L"", + + L"Roles", // TODO.Translate + L"Fortification", // TODO.Translate + L"Tracker", + L"CTH mode", + + L"Traps", + L"Network", + L"Detector", + L"", + + L"Net A", + L"Net B", + L"Net C", + L"Net D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Turning off cover/traps display", + L"Showing danger zones", + L"Showing merc view", + L"", + + L"Display enemy role symbols", // TODO.Translate + L"Display planned fortifications", + L"Display enemy tracks", + L"", + + L"Display trap network", + L"Display trap network colouring", + L"Display nearby traps", + L"", + + L"Display trap network A", + L"Display trap network B", + L"Display trap network C", + L"Display trap network D", +}; + +// TODO.Translate +STR16 szDynamicDialogueText[40][17] = // TODO.Translate +{ + // OPINIONEVENT_FRIENDLYFIRE + L"What the hell! $CAUSE$ attacked me!", + L"", + L"", + L"What? Me? No way, I'm engaging at the enemy!", + L"Oops.", + L"", + L"", + L"$CAUSE$ has attacked $VICTIM$. What do you do?", + L"Nah, that must have been enemy fire!", + L"Yeah, I saw it too!", + L"Don't play stupid, $CAUSE$. You had a clear line of sight! What side are you on?", + L"I saw it, it was clearly enemy fire!", + L"In the heat of battle, this can happen. Just be more careful next time, $CAUSE$.", + L"This is war! People get shot all the time! Speaking of... shoot more people, people!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Hey! Keep your mouth shut, $CAUSE$! Freakin' snitch!", + L"", + L"", + L"I would if you weren't such a wussy!", + L"You heard that? Dammit.", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ because $CAUSE_GENDER$ spoke to you. What do you do?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Thanks, $CAUSE$. I thought I was gonna bleed out.", + L"", + L"", + L"I'm doing my job. Get back to yours!", + L"Hey, we have to look after each other. You'd do the same, $VICTIM$.", + L"", + L"", + L"$CAUSE$ has bandaged $VICTIM$. What do you do?", + L"Patched together again? Good, now move!", + L"You're welcome.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ha! See? Even $CAUSE$ agrees with me.", + L"", + L"", + L"'Even'? What does that mean?", + L"Yeah. I'm 100%% with $VICTIM$ on this.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Nice one, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Dammit, $CAUSE$, your supposed to kill them, not evaporate them!", + L"", + L"", + L"Is there a difference?", + L"Oops. This thing is powerful!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"What?!", + L"No!", + L"That is false!", + L"That is not true!", + + L"Lies, lies, lies. Nothing but lies!", + L"Liar!", + L"Traitor!", + L"You watch your mouth!", + + L"This is none of your business.", + L"Who ever invited you?", + L"Nobody asked for your opinion, $INTERJECTOR$.", + L"You stay away from me.", + + L"Why are you all against me?", + L"Why are you against me, $INTERJECTOR$?", + L"I knew it! $VICTIM$ and $INTERJECTOR$ are in cahoots!", + L"Not listening...!", + + L"I hate this psycho circus.", + L"I hate this freak show.", + L"Back off!", + L"Lies, lies, lies...", + + L"No way!", + L"So not true.", + L"That is so not true.", + L"I know what I saw.", + + L"I don't know what $INTERJECTOR_GENDER$ is talking off.", + L"Don't listen to $INTERJECTOR_PRONOUN$!", + L"Nope.", + L"You are mistaken.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"What $INTERJECTOR_GENDER$ said.", + + L"Thanks, $INTERJECTOR$!", + L"Once again I'm right!", + L"See, $CAUSE$? I am right!", + L"Once again $SPEAKER$ is right!", + + L"Aye.", + L"Yup.", + L"Yep", + L"Yes.", + + L"Indeed.", + L"True.", + L"Ha!", + L"See?", + + L"Exactly!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"That's right!", + L"Indeed!", + L"Exactly that.", + L"$CAUSE$ does that all the time.", + + L"$VICTIM$ is right!", + L"I was gonna' point that out, too!", + L"What $VICTIM$ said.", + L"That's our $CAUSE$!", + + L"Yeah!", + L"Now THIS is going to be interesting...", + L"You tell'em, $VICTIM$!", + L"Agreeing with $VICTIM$ here...", + + L"Classic $CAUSE$.", + L"I couldn't have said it better myself.", + L"That is exactly what happened.", + L"Agreed!", + + L"Yup.", + L"True.", + L"Bingo.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"Now wait a minute...", + L"Wait a sec, that's not what right...", + L"What? No.", + L"That is not what happened.", + + L"Hey, stop blaming $CAUSE$!", + L"Oh shut up, $VICTIM$!", + L"Nonono, you got that wrong.", + L"Whoa. Why so stiff all of a sudden, $VICTIM$?", + + L"And I suppose you never did, $VICTIM$?", + L"Hmmmm... no.", + L"Great. Let's have an argument. It's not like we have other things to do...", + L"You are mistaken!", + + L"You are wrong!", + L"Me and $CAUSE$ would never do such a thing.", + L"Nah, can't be.", + L"I don't think so.", + + L"Why bring that up now?", + L"Really, $VICTIM$? Is this necessary?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Keep silent", + L"Support $VICTIM$", + L"Support $CAUSE$", + L"Appeal to reason", + L"Shut them up", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"he", + L"she", + L"him", + L"her", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% agility stat\n", + L" %s%d%% dexterity stat\n", + L" %s%d%% strength stat\n", + L" %s%d%% wisdom stat\n", + L" %s%d%% effective level\n", + + L" %s%d%% APs\n", + L" %s%d maximum breath\n", + L" %s%d%% strength to carry items\n", + L" %s%2.2f life regeneration/hour\n", + L" %s%d need for sleep\n", + L" %s%d%% water consumption\n", + L" %s%d%% food consumption\n", + + L"%s was diagnosed with %s!", + L"%s is cured of %s!", + + L"Diagnosis", + L"Treatment", + L"Burial", // TODO.Translate + L"Cancel", + + L"\n\n%s (undiagnosed) - %d / %d\n", // TODO.Translate + + L"High amount of distress can cause a personality split\n", // TODO.Translate + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", // TODO.Translate + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"Hide", // TODO.Translate + L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|W|a|t|e|r: %d%%\n", + L"\n\n|F|o|o|d: %d%%\n", + + L"max morale altered by %s%d\n", + L" %s%d need for sleep\n", + L" %s%d%% breath regeneration\n", + L" %s%d%% assignment efficiency\n", + L" %s%d%% chance to lose stats\n", +}; + +STR16 szIMPGearWebSiteText[] = // TODO.Translate +{ + // IMP Gear Entrance + L"How should gear be selected?", + L"Old method: Random gear according to your choices", + L"New method: Free selection of gear", + L"Old method", + L"New method", + + // IMP Gear Entrance + L"I.M.P. Equipment", + L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate +}; + +STR16 szIMPGearPocketText[] = +{ + L"Select helmet", + L"Select vest", + L"Select pants", + L"Select face gear", + L"Select face gear", + + L"Select main gun", + L"Select sidearm", + + L"Select LBE vest", + L"Select left LBE holster", + L"Select right LBE holster", + L"Select LBE combat pack", + L"Select LBE backpack", + + L"Select launcher / rifle", + L"Select melee weapon", + + L"Select additional items", //BIGPOCK1POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select additional items", //SMALLPOCK19POS + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", + L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"We cannot relay orders to this sector, militia command not possible.", + L"Unassigned", + L"Group No.", + L"Next", + + L"ETA", + L"Group %d (new)", + L"Group %d", + L"Final", + + L"Volunteers: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = // TODO.Translate +{ + L"Enemy helicopter shot down in %s!", + L"We... uhm... currently don't control that site, commander...", + L"The SAM does not need maintenance at the moment.", + L"We've already ordered the repair, this will take time.", + + L"We do not have enough resources to do that.", + L"Repair SAM site? This will cost %d$ and take %d hours.", + L"Enemy helicopter hit in %s.", + L"%s fires %s at enemy helicopter in %s.", + + L"SAM in %s fires at enemy helicopter in %s.", +}; + +STR16 szFortificationText[] = +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"Militia", + L"Militia Forces Overview", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Took part in Operation %s", + L"Recruited on Day %d, %d:%02d in %s", + L"Promoted on Day %d, %d:%02d", + L"KIA, Operation %s", + + L"Lightly wounded during Operation %s", + L"Heavily wounded during Operation %s", + L"Critically wounded during Operation %s", + L"Valiantly fought in Operation %s", + + L"Hired from Kerberus on Day %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", // TODO:Translate +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"All sectors", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"Merchant is hostile and does not want to trade.", + L"Merchant is in no state to do business.", + L"Merchant won't trade during combat.", + L"Merchant refuses to interact with you.", +}; + +STR16 szWeatherTypeText[] = // TODO.Translate +{ + L"normal", + L"rain", + L"thunderstorm", + L"sandstorm", + + L"snow", +}; + +STR16 szSnakeText[] = +{ + L"%s evaded a snake attack!", + L"%s was attacked by a snake!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"Converted %s into resources", + L"Guns: ", + L"Armour: ", + L"Misc: ", + + L"There are no volunteers left for militia!", + L"Not enough resources to train militia!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s starts hacking.", + L"%s accesses the computer, but finds nothing of interest.", + L"%s is not skilled enough to hack the computer.", + L"%s reads the file, but learns nothing new.", + + L"%s can't make sense out of this.", + L"%s couldn't use the watertap.", + L"%s has bought a %s.", + L"%s doesn't have enough money. That's just embarassing.", + + L"%s drank from water tap", + L"This machine doesn't seem to be working.", // TODO.Translate +}; + +STR16 szLaptopStatText[] = // TODO.Translate +{ + L"threaten effectiveness %d\n", + L"leadership %d\n", + L"approach modifier %.2f\n", + L"background modifier %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Good Guy", + L"%s eschews excessive violence and will refuse to attack non-hostiles.", + + L"Friendly approach", + L"Direct approach", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +STR16 szGearTemplateText[] = // TODO.Translate +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate +}; + +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +STR16 szFactoryText[] = // TODO.Translate +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +// TODO.Translate +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Space Available:", + L"MOLLE Space Required:", + L"MOLLE Small Slot Count:", + L"MOLLE Medium Slot Count:", + L"MOLLE Pouch Size: Small", + L"MOLLE Pouch Size: Medium", + L"MOLLE Pouch Size: Medium (Hydration)", + L"Thigh Rig", + L"Vest", + L"Combat Pack", + L"Backpack", // 10 + L"MOLLE Pouch", + L"Compatible backpacks:", + L"Compatible combat packs:", +}; + +STR16 szRebelCommandText[] = // TODO.Translate +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = // TODO.Translate +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = // TODO.Translate +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = // TODO.Translate +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia\nthat appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = // TODO: Translate +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //POLISH diff --git a/i18n/_RussianText.cpp b/i18n/_RussianText.cpp index 3b0a21c7..63e3b173 100644 --- a/i18n/_RussianText.cpp +++ b/i18n/_RussianText.cpp @@ -1,12232 +1,12312 @@ -// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! -//#pragma setlocale("RUSSIAN") - - #if defined( RUSSIAN ) - #include "Text.h" - #include "FileMan.h" - #include "Scheduling.h" - #include "EditorMercs.h" - #include "Item Statistics.h" - #endif - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -void this_is_the_RussianText_public_symbol(void){;} - -#ifdef RUSSIAN - -/* - -****************************************************************************************************** -** IMPORTANT TRANSLATION NOTES ** -****************************************************************************************************** - -GENERAL INSTRUCTIONS -- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. - I know that this is difficult to do on many occasions due to the nature of foreign languages when - compared to English. By doing so, this will greatly reduce the amount of work on both sides. In - most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. - The general rule is if the string is very short (less than 10 characters), then it's short because of - interface limitations. On the other hand, full sentences commonly have little limitations for length. - Strings in between are a little dicey. -- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", - must fit on a single line no matter how long the string is. All strings start with L" and end with ", -- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only - have one space after a period, which is different than standard typing convention. Never modify sections - of strings contain combinations of % characters. These are special format characters and are always - used in conjunction with other characters. For example, %s means string, and is commonly used for names, - locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). - %% is how a single % character is built. There are countless types, but strings containing these - special characters are usually commented to explain what they mean. If it isn't commented, then - if you can't figure out the context, then feel free to ask SirTech. -- Comments are always started with // Anything following these two characters on the same line are - considered to be comments. Do not translate comments. Comments are always applied to the following - string(s) on the next line(s), unless the comment is on the same line as a string. -- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching - for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. - Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the - comments intact, and SirTech will remove them once the translation for that particular area is resolved. -- If you have a problem or question with translating certain strings, please use "//!!! comment" - (without the quotes). The syntax is important, and should be identical to the comments used with @@@ - symbols. SirTech will search for !!! to look for your problems and questions. This is a more - efficient method than detailing questions in email, so try to do this whenever possible. - - - -FAST HELP TEXT -- Explains how the syntax of fast help text works. -************** - -1) BOLDED LETTERS - The popup help text system supports special characters to specify the hot key(s) for a button. - Anytime you see a '|' symbol within the help text string, that means the following key is assigned - to activate the action which is usually a button. - - EX: L"|Map Screen" - - This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that - button. When translating the text to another language, it is best to attempt to choose a word that - uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end - of the string in this format: - - EX: L"Ecran De Carte (|M)" (this is the French translation) - - Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) - -2) NEWLINE - Any place you see a \n within the string, you are looking at another string that is part of the fast help - text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish - to start a new line. - - EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." - - Would appear as: - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this - in the above example, we would see - - WRONG WAY -- spaces before and after the \n - EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." - - Would appear as: (the second line is moved in a character) - - Clears all the mercs' positions, - and allows you to re-enter them manually. - - -@@@ NOTATION -************ - - Throughout the text files, you'll find an assortment of comments. Comments are used to describe the - text to make translation easier, but comments don't need to be translated. A good thing is to search for - "@@@" after receiving new version of the text file, and address the special notes in this manner. - -!!! NOTATION -************ - - As described above, the "!!!" notation should be used by you to ask questions and address problems as - SirTech uses the "@@@" notation. - -*/ - -CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = -{ - L"", -}; - -//Encyclopedia - -STR16 pMenuStrings[] = -{ - //Encyclopedia - L"Места", // 0 - L"Команда", - L"Предметы", - L"Задания", - L"Меню 5", - L"Меню 6", //5 - L"Меню 7", - L"Меню 8", - L"Меню 9", - L"Меню 10", - L"Меню 11", //10 - L"Меню 12", - L"Меню 13", - L"Меню 14", - L"Меню 15", - L"Меню 15", // 15 - - //Briefing Room - L"Войти", -}; - -STR16 pOtherButtonsText[] = -{ - L"Инструктаж", - L"Принять", -}; - -STR16 pOtherButtonsHelpText[] = -{ - L"Инструктаж", - L"Принять задания", -}; - - -STR16 pLocationPageText[] = -{ - L"Пред.", - L"Фото", - L"След.", -}; - -STR16 pSectorPageText[] = -{ - L"<<", - L"В начало", - L">>", - L"Тип: ", - L"Нет данных", - L"Нет поставленных заданий. Добавьте задания в файл TableData\\BriefingRoom\\BriefingRoom.xml. Первое задание должно быть видимым. Чтобы скрыть задание, установите значение = 0.", - L"Брифинг-зал. Пожалуйста, нажмите кнопку 'Войти'.", -}; - -STR16 pEncyclopediaTypeText[] = -{ - L"Неизвестно",// 0 - unknown - L"Город", //1 - city - L"База ПВО", //2 - SAM Site - L"Другое", //3 - other location - L"Шахты", //4 - mines - L"Военный комплекс", //5 - military complex - L"Лаборатория", //6 - laboratory complex - L"Фабрика", //7 - factory complex - L"Госпиталь", //8 - hospital - L"Тюрьма", //9 - prison - L"Аэропорт", //10 - air port -}; - -STR16 pEncyclopediaHelpCharacterText[] = -{ - L"Показ. всех", - L"Показ. AIM", - L"Показ. MERC", - L"Показ. RPC", - L"Показ. NPC", - L"Показ. транс.", - L"Показ. IMP", - L"Показ. EPC", - L"Фильтр", -}; - -STR16 pEncyclopediaShortCharacterText[] = -{ - L"Все", - L"AIM", - L"MERC", - L"RPC", - L"NPC", - L"Транс.", - L"IMP", - L"EPC", - L"Фильтр", -}; - -STR16 pEncyclopediaHelpText[] = -{ - L"Показать всё", - L"Показать города", - L"Показать базы ПВО", - L"Показать другие места", - L"Показать шахты", - L"Показать военный комплекс", - L"Показать лабораторию", - L"Показать фабрику", - L"Показать госпиталь", - L"Показать тюрьму", - L"Показать аэропорт", -}; - -STR16 pEncyclopediaSkrotyText[] = -{ - L"Всё", - L"Город", - L"ПВО", - L"Друг.", - L"Шахт.", - L"Воен.", - L"Лаб.", - L"Фабр.", - L"Госп.", - L"Тюрьм.", - L"Аэроп.", -}; - -STR16 pEncyclopediaFilterLocationText[] = -{//major location filter button text max 7 chars -//..L"------v" - L"Всё",//0 - L"Города", - L"ПВО", - L"Шахты", - L"Аэроп.", - L"Дик.мес", - L"Подзем.", - L"Завед.", - L"Другое", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Показать всё",//facility index + 1 - L"Показать города", - L"Показать базы ПВО", - L"Показать шахты", - L"Показать аэропорты", - L"Показать дикую местность", - L"Показать подземные секторы", - L"Показать секторы с заведениями\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", - L"Показать другие секторы", -}; - -STR16 pEncyclopediaSubFilterLocationText[] = -{//item subfilter button text max 7 chars -//..L"------v" - L"",//reserved. Insert new city filters above! - L"",//reserved. Insert new SAM filters above! - L"",//reserved. Insert new mine filters above! - L"",//reserved. Insert new airport filters above! - L"",//reserved. Insert new wilderness filters above! - L"",//reserved. Insert new underground sector filters above! - L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! - L"",//reserved. Insert new other filters above! -}; - -STR16 pEncyclopediaFilterCharText[] = -{//major char filter button text -//..L"------v" - L"Все",//0 - L"A.I.M.", - L"MERC", - L"RPC", - L"NPC", - L"IMP", - L"Другое",//add new filter buttons before other -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Показать всех",//Other index + 1 - L"Показать наёмников из A.I.M.", - L"Показать наёмников из M.E.R.C", - L"Показать повстанцев", - L"Показать неигровых персонажей", - L"Показать персонажей игрока", - L"Показать другое\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", -}; - -STR16 pEncyclopediaSubFilterCharText[] = -{//item subfilter button text -//..L"------v" - L"",//reserved. Insert new AIM filters above! - L"",//reserved. Insert new MERC filters above! - L"",//reserved. Insert new RPC filters above! - L"",//reserved. Insert new NPC filters above! - L"",//reserved. Insert new IMP filters above! -//Other-----v" - L"Транс.", - L"EPC", - L"",//reserved. Insert new Other filters above! -}; - -STR16 pEncyclopediaFilterItemText[] = -{//major item filter button text max 7 chars -//..L"------v" - L"Всё",//0 - L"Оружие", - L"Патроны", - L"Броня", - L"Разгр.", - L"Навеска", - L"Разное",//add new filter buttons before misc -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Показать всё",//misc index + 1 - L"Показать оружие\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", - L"Показать боеприпасы\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", - L"Показать броню\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", - L"Показать разрузочные комплекты\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", - L"Показать навеску\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", - L"Показать разное\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", -}; - -STR16 pEncyclopediaSubFilterItemText[] = -{//item subfilter button text max 7 chars -//..L"------v" -//Guns......v" - L"Пистол.", - L"А.пист.", - L"ПП", - L"Винтов.", - L"Сн.винт", - L"Автомат", - L"Пулем.", - L"Дробов.", - L"Тяжел.", - L"",//reserved. insert new gun filters above! -//Amunition.v" - L"Пистол.", - L"А.пист.", - L"ПП", - L"Винтов.", - L"Сн.винт", - L"Автомат", - L"Пулем.", - L"Дробов.", - L"Тяжел.", - L"",//reserved. insert new ammo filters above! -//Armor.....v" - L"Шлем", - L"Жилет", - L"Штаны", - L"Пласт.", - L"",//reserved. insert new armor filters above! -//LBE.......v" - L"Кобуры", - L"Жилеты", - L"Ранцы", - L"Рюкзаки", - L"Карманы", - L"Другое", - L"",//reserved. insert new LBE filters above! -//Attachments" - L"Оптика", - L"Доп.", - L"Дуло", - L"Съёмн.", - L"Встроен.", - L"Другое", - L"",//reserved. insert new attachment filters above! -//Misc......v" - L"Ножи", - L"Мет.нож", - L"Удар.", - L"Гранаты", - L"Бомбы", - L"Мед.наб", - L"Наборы", - L"Лицо", - L"Другое", - L"",//reserved. insert new misc filters above! -//add filters for a new button here -}; - -STR16 pEncyclopediaFilterQuestText[] = -{//major quest filter button text max 7 chars -//..L"------v" - L"Все", - L"Активн.", - L"Заверш.", -//filter button tooltip -//..L"---------------------------------------------------------------------v" - L"Показать все",//misc index + 1 - L"Показать активные квесты", - L"Показать завершённые квесты", -}; - -STR16 pEncyclopediaSubFilterQuestText[] = -{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added -//..L"------v" - L"",//reserved. insert new active quest subfilters above! - L"",//reserved. insert new completed quest subfilters above! -}; - -STR16 pEncyclopediaShortInventoryText[] = -{ - L"Всё", //0 - L"Оружие", - L"Патроны", - L"Разгр.", - L"Другое", - - L"Все", //5 - L"Оружие", - L"Патроны", - L"Разгр.", - L"Другое", -}; - -STR16 BoxFilter[] = -{ - // Guns - L"Тяжел.", - L"Пистол.", - L"А.пист.", - L"ПП", - L"Винтов.", - L"С.винт.", - L"Ш.винт.", - L"Пулем.", - L"Дробов.", - - // Ammo - L"Пистол.", - L"А.пист.", //10 - L"ПП", - L"Винтов.", - L"С.винт.", - L"Ш.винт.", - L"Пулем.", - L"Дробов.", - - // Used - L"Оружие", - L"Броня", - L"Разгр.", - L"Другое", //20 - - // Armour - L"Шлемы", - L"Жилеты", - L"Штаны", - L"Пласт.", - - // Misc - L"Ножи", - L"Мет.нож", - L"Бл.бой", - L"Гранаты", - L"Бомбы", - L"Мед.", //30 - L"Наборы", - L"Лицо", - L"Разгр.", - L"Разное", //34 -}; - -STR16 QuestDescText[] = -{ - L"Доставка письма", - L"Поставка еды", - L"Террористы", - L"Кубок Босса", - L"Деньги Босса", - L"Беглец Джои", - L"Спасение Марии", - L"Кубок Читзены", - L"Пленники в Альме", - L"Допрос", - - L"Проблемные фермеры", //10 - L"Найти учёного", - L"Принести видеокамеру", - L"Кошки-убийцы", - L"Найти отшельника", - L"Твари в шахте", - L"Найти пилота вертолёта", - L"Сопроводить Всадника", - L"Освободить Динамо", - L"Сопроводить туристов", - - - L"Проверить Дорин", //20 - L"Мечта о магазине", - L"Сопроводить Шенка", - L"No 23 Yet", - L"No 24 Yet", - L"Убить Дейдрану", - L"No 26 Yet", - L"No 27 Yet", - L"No 28 Yet", - L"No 29 Yet", -}; - -STR16 FactDescText[] = -{ - L"Омерта освобождена", - L"Драссен освобождён", - L"Сан-Мона освобождена", - L"Камбрия освобождена", - L"Альма освобождена", - L"Грам освобождён", - L"Тикса освобождена", - L"Читзена освобождена", - L"Эстони освобождён", - L"Балайм освобождён", - - L"Орта освобождена", //10 - L"Медуна освобождена", - L"Поговорили с Пакосом", - L"Фатима прочла письмо", - L"Фатима сбежала от игрока", - L"Димитрий (#60) мёртв", - L"Фатима ответила на удивление Димитрия", - L"Карлос крикнул 'никому не двигаться'", - L"Фатима рассказала о письме", - L"Фатима пришла в место назначения", - - L"Димитрий сказал, что у Фатимы есть доказательства", //20 - L"Мигель выслушал доводы", - L"Мигель попросил письмо", - L"Мигель прочёл письмо", - L"Айра прокоментировала письмо Мигелю", - L"Повстанцы наши враги", - L"Разговор Фатимы до передачи письма", - L"Получено задание с Драссеном", - L"Мигель предложил Айру", - L"Пакос ранен или убит", - - L"Пакос в A10", //30 - L"В секотре безопасно", - L"Посылка от БР в пути", - L"Посылка от БР в Драссене", - L"33 - ВЕРНО и прибыло в течение 2 часов", - L"33 - ВЕРНО 34 - ЛОЖЬ, более чем 2 часа", - L"Игрок заметил что часть груза пропала", - L"36 - ВЕРНО и Пабло был избит игроком", - L"Пабло проворовался", - L"Пабло вернул украденное, set 37 false", - - L"Мигель присоединится к команде", //40 - L"Дали Пабло немного денег", - L"Небесного всадника сопровождают в город", - L"Небесный Всадник уже близок к своему вертолёту в Драссене", - L"Небесный всадник оговорил условия контракта", - L"Игрок выбрал вертолёт на стратегическом экране как минимум один раз", - L"Неигровому персонажу должны денег", - L"Неигровой персонаж ранен", - L"Неигровой персонаж ранен игроком", - L"Отцу Джону Уолкеру сказали о нехватке продовольствия", - - L"Айра не в секторе", //50 - L"Айра ведёт беседу", - L"Задание с продовольствием выполнено", - L"Пабло что-то украл с последней посылки", - L"Последнее отправление повреждено", - L"Последнее отправление отправлено не туда", - L"Прошло 24 часа с момента сообщения, что отправление отправлено не в тот аэропорт", - L"Потерянная посылка пришла с повреждённым грузом. 56 to False", - L"Потерянная посылка пропала бесследно. Turn 56 False", - L"Следующее отправление может быть (random) потеряно", - - L"Следующее отправление может быть (random) задержано", //60 - L"Отправление среднего размера", - L"Отправление большого размера", - L"У Дорин проснулась совесть", - L"Игрок поговорил с Гордоном", - L"Айра до сих пор неигровой персонаж и находится в A10-2(не присоединилась)", - L"Динамо просит оказать ему первую помощь", - L"Динамо можно нанять", - L"Неигровой персонаж истекает кровью", - L"Шенк хочет присоединиться", - - L"Неигровой персонаж истекает кровью", //70 - L"У игрока есть голова и Кармен в Сан-Мона", - L"У игрока есть голова и Кармен в Камбрии", - L"У игрока есть голова и Кармен в Драссене", - L"Отец пьян", - L"Раненые бойцы игрока находятся ближе 8 тайлов от неигрового персонажа", - L"1 и только 1 раненый боец ближе 8 тайлов от неигрового персонажа", - L"Больше одного раненного бойца ближе 8 тайлов от неигрового персонажа", - L"Бренда в магазине ", - L"Бренда мертва", - - L"Бренда у себя дома", //80 - L"Неигровой персонаж - враг", - L"Уровень разговора >= 84 и < 3 мужчин присутствует", - L"Уровень разговора >= 84 и хотя бы 3 мужчины присутствует", - L"Ганс позволил нам встретиться с Тони", - L"Ганс стоит на позиции 13523", - L"Сегодня Тони нет", - L"Женщина разговаривает с неигровым персонажем", - L"Игрок развлекался в борделе", - L"Карла доступна", - - L"Синди доступна", //90 - L"Бэмби доступна", - L"Свободных девочек нет", - L"Игрок ожидал девочек", - L"Игрок заплатил правильную сумму денег", - L"Mercs walked by goon", - L"More thean 1 merc present within 3 tiles of NPC", - L"At least 1 merc present withing 3 tiles of NPC", - L"Босс ожидает визита игрока", - L"Дэррен ожидает денег от игрока", - - L"Player within 5 tiles and NPC is visible", // 100 - L"Carmen is in San Mona", - L"Player Spoke to Carmen", - L"KingPin knows about stolen money", - L"Player gave money back to KingPin", - L"Frank was given the money ( not to buy booze )", - L"Player was told about KingPin watching fights", - L"Past club closing time and Darren warned Player. (reset every day)", - L"Joey is EPC", - L"Joey is in C5", - - L"Joey is within 5 tiles of Martha(109) in sector G8", //110 - L"Joey is Dead!", - L"At least one player merc within 5 tiles of Martha", - L"Spike is occuping tile 9817", - L"Angel offered vest", - L"Angel sold vest", - L"Maria is EPC", - L"Maria is EPC and inside leather Shop", - L"Player wants to buy vest", - L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", - - L"Angel left deed on counter", //120 - L"Maria quest over", - L"Player bandaged NPC today", - L"Doreen revealed allegiance to Queen", - L"Pablo should not steal from player", - L"Player shipment arrived but loyalty to low, so it left", - L"Helicopter is in working condition", - L"Player is giving amount of money >= $1000", - L"Player is giving amount less than $1000", - L"Waldo agreed to fix helicopter( heli is damaged )", - - L"Helicopter was destroyed", //130 - L"Waldo told us about heli pilot", - L"Father told us about Deidranna killing sick people", - L"Father told us about Chivaldori family", - L"Father told us about creatures", - L"Loyalty is OK", - L"Loyalty is Low", - L"Loyalty is High", - L"Player doing poorly", - L"Player gave valid head to Carmen", - - L"Current sector is G9(Cambria)", //140 - L"Current sector is C5(SanMona)", - L"Current sector is C13(Drassen", - L"Carmen has at least $10,000 on him", - L"Player has Slay on team for over 48 hours", - L"Carmen is suspicous about slay", - L"Slay is in current sector", - L"Carmen gave us final warning", - L"Vince has explained that he has to charge", - L"Vince is expecting cash (reset everyday)", - - L"Player stole some medical supplies once", //150 - L"Player stole some medical supplies again", - L"Vince can be recruited", - L"Vince is currently doctoring", - L"Vince was recruited", - L"Slay offered deal", - L"All terrorists killed", - L"", - L"Maria left in wrong sector", - L"Skyrider left in wrong sector", - - L"Joey left in wrong sector", //160 - L"John left in wrong sector", - L"Mary left in wrong sector", - L"Walter was bribed", - L"Shank(67) is part of squad but not speaker", - L"Maddog spoken to", - L"Jake told us about shank", - L"Shank(67) is not in secotr", - L"Bloodcat quest on for more than 2 days", - L"Effective threat made to Armand", - - L"Queen is DEAD!", //170 - L"Speaker is with Aim or Aim person on squad within 10 tiles", - L"Current mine is empty", - L"Current mine is running out", - L"Loyalty low in affiliated town (low mine production)", - L"Creatures invaded current mine", - L"Player LOST current mine", - L"Current mine is at FULL production", - L"Dynamo(66) is Speaker or within 10 tiles of speaker", - L"Fred told us about creatures", - - L"Matt told us about creatures", //180 - L"Oswald told us about creatures", - L"Calvin told us about creatures", - L"Carl told us about creatures", - L"Chalice stolen from museam", - L"John(118) is EPC", - L"Mary(119) and John (118) are EPC's", - L"Mary(119) is alive", - L"Mary(119)is EPC", - L"Mary(119) is bleeding", - - L"John(118) is alive", //190 - L"John(118) is bleeding", - L"John or Mary close to airport in Drassen(B13)", - L"Mary is Dead", - L"Miners placed", - L"Krott planning to shoot player", - L"Madlab explained his situation", - L"Madlab expecting a firearm", - L"Madlab expecting a video camera.", - L"Item condition is < 70 ", - - L"Madlab complained about bad firearm.", //200 - L"Madlab complained about bad video camera.", - L"Robot is ready to go!", - L"First robot destroyed.", - L"Madlab given a good camera.", - L"Robot is ready to go a second time!", - L"Second robot destroyed.", - L"Mines explained to player.", - L"Dynamo (#66) is in sector J9.", - L"Dynamo (#66) is alive.", - - L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 - L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", - L"Player has been to K4_b1", - L"Brewster got to talk while Warden was alive", - L"Warden (#103) is dead.", - L"Ernest gave us the guns", - L"This is the first bartender", - L"This is the second bartender", - L"This is the third bartender", - L"This is the fourth bartender", - - - L"Manny is a bartender.", //220 - L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", - L"Player made purchase from Howard (#125)", - L"Dave sold vehicle", - L"Dave's vehicle ready", - L"Dave expecting cash for car", - L"Dave has gas. (randomized daily)", - L"Vehicle is present", - L"First battle won by player", - L"Robot recruited and moved", - - L"No club fighting allowed", //230 - L"Player already fought 3 fights today", - L"Hans mentioned Joey", - L"Player is doing better than 50% (Alex's function)", - L"Player is doing very well (better than 80%)", - L"Father is drunk and sci-fi option is on", - L"Micky (#96) is drunk", - L"Player has attempted to force their way into brothel", - L"Rat effectively threatened 3 times", - L"Player paid for two people to enter brothel", - - L"", //240 - L"", - L"Player owns 2 towns including omerta", - L"Player owns 3 towns including omerta",// 243 - L"Player owns 4 towns including omerta",// 244 - L"", - L"", - L"", - L"Fact male speaking female present", - L"Fact hicks married player merc",// 249 - - L"Fact museum open",// 250 - L"Fact brothel open",// 251 - L"Fact club open",// 252 - L"Fact first battle fought",// 253 - L"Fact first battle being fought",// 254 - L"Fact kingpin introduced self",// 255 - L"Fact kingpin not in office",// 256 - L"Fact dont owe kingpin money",// 257 - L"Fact pc marrying daryl is flo",// 258 - L"", - - L"", //260 - L"Fact npc cowering", // 261, - L"", - L"", - L"Fact top and bottom levels cleared", - L"Fact top level cleared",// 265 - L"Fact bottom level cleared",// 266 - L"Fact need to speak nicely",// 267 - L"Fact attached item before",// 268 - L"Fact skyrider ever escorted",// 269 - - L"Fact npc not under fire",// 270 - L"Fact willis heard about joey rescue",// 271 - L"Fact willis gives discount",// 272 - L"Fact hillbillies killed",// 273 - L"Fact keith out of business", // 274 - L"Fact mike available to army",// 275 - L"Fact kingpin can send assassins",// 276 - L"Fact estoni refuelling possible",// 277 - L"Fact museum alarm went off",// 278 - L"", - - L"Fact maddog is speaker", //280, - L"", - L"Fact angel mentioned deed", // 282, - L"Fact iggy available to army",// 283 - L"Fact pc has conrads recruit opinion",// 284 - L"", - L"", - L"", - L"", - L"Fact npc hostile or pissed off", //289, - - L"", //290 - L"Fact tony in building", //291, - L"Fact shank speaking", // 292, - L"Fact doreen alive",// 293 - L"Fact waldo alive",// 294 - L"Fact perko alive",// 295 - L"Fact tony alive",// 296 - L"", - L"Fact vince alive",// 298, - L"Fact jenny alive",// 299 - - L"", //300 - L"", - L"Fact arnold alive",// 302, - L"", - L"Fact rocket rifle exists",// 304, - L"", - L"", - L"", - L"", - L"", - - L"", //310 - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //320 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //330 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //340 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //350 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //360 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //370 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //380 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //390 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //400 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //410 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //420 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //430 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //440 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //450 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //460 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //470 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //480 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //490 - - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", - L"", //500 -}; - -//----------- - -// Editor -//Editor Taskbar Creation.cpp -STR16 iEditorItemStatsButtonsText[] = -{ - L"Delete", - L"Delete item (|D|e|l)", -}; - -STR16 FaceDirs[8] = -{ - L"north", - L"northeast", - L"east", - L"southeast", - L"south", - L"southwest", - L"west", - L"northwest" -}; - -STR16 iEditorMercsToolbarText[] = -{ - L"Toggle viewing of players", //0 - L"Toggle viewing of enemies", - L"Toggle viewing of creatures", - L"Toggle viewing of rebels", - L"Toggle viewing of civilians", - - L"Player", - L"Enemy", - L"Creature", - L"Rebels", - L"Civilian", - - L"DETAILED PLACEMENT", //10 - L"General information mode", - L"Physical appearance mode", - L"Attributes mode", - L"Inventory mode", - L"Profile ID mode", - L"Schedule mode", - L"Schedule mode", - L"DELETE", - L"Delete currently selected merc (|D|e|l)", - L"NEXT", //20 - L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", - L"Toggle priority existance", - L"Toggle whether or not placement\nhas access to all doors", - - //Orders - L"STATIONARY", - L"ON GUARD", - L"ON CALL", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", //30 - L"RND PT PATROL", - - //Attitudes - L"DEFENSIVE", - L"BRAVE SOLO", - L"BRAVE AID", - L"AGGRESSIVE", - L"CUNNING SOLO", - L"CUNNING AID", - - L"Set merc to face %s", - - L"Find", - L"BAD", //40 - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"BAD", - L"POOR", - L"AVERAGE", - L"GOOD", - L"GREAT", - - L"Previous color set", //50 - L"Next color set", - - L"Previous body type", - L"Next body type", - - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - L"Toggle time variance (+ or - 15 minutes)", - - L"No action", - L"No action", - L"No action", //60 - L"No action", - - L"Clear Schedule", - - L"Find selected merc", -}; - -STR16 iEditorBuildingsToolbarText[] = -{ - L"ROOFS", //0 - L"WALLS", - L"ROOM INFO", - - L"Place walls using selection method", - L"Place doors using selection method", - L"Place roofs using selection method", - L"Place windows using selection method", - L"Place damaged walls using selection method.", - L"Place furniture using selection method", - L"Place wall decals using selection method", - L"Place floors using selection method", //10 - L"Place generic furniture using selection method", - L"Place walls using smart method", - L"Place doors using smart method", - L"Place windows using smart method", - L"Place damaged walls using smart method", - L"Lock or trap existing doors", - - L"Add a new room", - L"Edit cave walls.", - L"Remove an area from existing building.", - L"Remove a building", //20 - L"Add/replace building's roof with new flat roof.", - L"Copy a building", - L"Move a building", - L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", - L"Erase room numbers", - - L"Toggle |Erase mode", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Cycle brush size (|A/|Z)", - L"Roofs (|H)", - L"|Walls", //30 - L"Room Info (|N)", -}; - -STR16 iEditorItemsToolbarText[] = -{ - L"Wpns", //0 - L"Ammo", - L"Armour", - L"Разгр.", - L"Exp", - L"E1", - L"E2", - L"E3", - L"Triggers", - L"Keys", - L"Rnd", //10 - L"Previous (|,)", // previous page - L"Next (|.)", // next page -}; - -STR16 iEditorMapInfoToolbarText[] = -{ - L"Add ambient light source", //0 - L"Toggle fake ambient lights.", - L"Add exit grids (r-clk to query existing).", - L"Cycle brush size (|A/|Z)", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", - L"Specify north point for validation purposes.", - L"Specify west point for validation purposes.", - L"Specify east point for validation purposes.", - L"Specify south point for validation purposes.", - L"Specify center point for validation purposes.", //10 - L"Specify isolated point for validation purposes.", -}; - -STR16 iEditorOptionsToolbarText[]= -{ - L"New outdoor level", //0 - L"New basement", - L"New cave level", - L"Save map (|C|t|r|l+|S)", - L"Load map (|C|t|r|l+|L)", - L"Select tileset", - L"Leave Editor mode", - L"Exit game (|A|l|t+|X)", - L"Create radar map", - L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", - L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", -}; - -STR16 iEditorTerrainToolbarText[] = -{ - L"Draw |Ground textures", //0 - L"Set map ground textures", - L"Place banks and |Cliffs", - L"Draw roads (|P)", - L"Draw |Debris", - L"Place |Trees & bushes", - L"Place |Rocks", - L"Place barrels & |Other junk", - L"Fill area", - L"Undo last change (|B|a|c|k|s|p|a|c|e)", - L"Toggle |Erase mode", //10 - L"Cycle brush size (|A/|Z)", - L"Raise brush density (|])", - L"Lower brush density (|[)", -}; - -STR16 iEditorTaskbarInternalText[]= -{ - L"Terrain", //0 - L"Buildings", - L"Items", - L"Mercs", - L"Map Info", - L"Options", - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text - L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text - L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text - L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text - L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text - L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text -}; - -//Editor Taskbar Utils.cpp - -STR16 iRenderMapEntryPointsAndLightsText[] = -{ - L"North Entry Point", //0 - L"West Entry Point", - L"East Entry Point", - L"South Entry Point", - L"Center Entry Point", - L"Isolated Entry Point", - - L"Prime", - L"Night", - L"24Hour", -}; - -STR16 iBuildTriggerNameText[] = -{ - L"Panic Trigger1", //0 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", - - L"Pressure Action", - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", -}; - -STR16 iRenderDoorLockInfoText[]= -{ - L"No Lock ID", //0 - L"Explosion Trap", - L"Electric Trap", - L"Siren Trap", - L"Silent Alarm", - L"Super Electric Trap", //5 - L"Brothel Siren Trap", - L"Trap Level %d", -}; - -STR16 iRenderEditorInfoText[]= -{ - L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 - L"No map currently loaded.", - L"File: %S, Current Tileset: %s", - L"Enlarge map on loading", -}; -//EditorBuildings.cpp -STR16 iUpdateBuildingsInfoText[] = -{ - L"TOGGLE", //0 - L"VIEWS", - L"SELECTION METHOD", - L"SMART METHOD", - L"BUILDING METHOD", - L"Room#", //5 -}; - -STR16 iRenderDoorEditingWindowText[] = -{ - L"Editing lock attributes at map index %d.", - L"Lock ID", - L"Trap Type", - L"Trap Level", - L"Locked", -}; - -//EditorItems.cpp - -STR16 pInitEditorItemsInfoText[] = -{ - L"Pressure Action", //0 - L"Panic Action1", - L"Panic Action2", - L"Panic Action3", - L"Action%d", - - L"Panic Trigger1", //5 - L"Panic Trigger2", - L"Panic Trigger3", - L"Trigger%d", -}; - -STR16 pDisplayItemStatisticsTex[] = -{ - L"Status Info Line 1", - L"Status Info Line 2", - L"Status Info Line 3", - L"Status Info Line 4", - L"Status Info Line 5", -}; - -//EditorMapInfo.cpp -STR16 pUpdateMapInfoText[] = -{ - L"R", //0 - L"G", - L"B", - - L"Prime", - L"Night", - L"24Hrs", //5 - - L"Radius", - - L"Underground", - L"Light Level", - - L"Outdoors", - L"Basement", //10 - L"Caves", - - L"Restricted", - L"Scroll ID", - - L"Destination", - L"Sector", //15 - L"Destination", - L"Bsmt. Level", - L"Dest.", - L"GridNo", -}; -//EditorMercs.cpp -CHAR16 gszScheduleActions[ 11 ][20] = -{ - L"No action", - L"Lock door", - L"Unlock door", - L"Open door", - L"Close door", - L"Move to gridno", - L"Leave sector", - L"Enter sector", - L"Stay in sector", - L"Sleep", - L"Ignore this!" -}; - -STR16 zDiffNames[5] = // NUM_DIFF_LVLS = 5 -{ - L"Wimp", - L"Easy", - L"Average", - L"Tough", - L"Steroid Users Only" -}; - -STR16 EditMercStat[12] = -{ - L"Max Health", - L"Cur Health", - L"Strength", - L"Agility", - L"Dexterity", - L"Charisma", - L"Wisdom", - L"Marksmanship", - L"Explosives", - L"Medical", - L"Scientific", - L"Exp Level", -}; - - -STR16 EditMercOrders[8] = -{ - L"Stationary", - L"On Guard", - L"Close Patrol", - L"Far Patrol", - L"Point Patrol", - L"On Call", - L"Seek Enemy", - L"Random Point Patrol", -}; - -STR16 EditMercAttitudes[6] = -{ - L"Defensive", - L"Brave Loner", - L"Brave Buddy", - L"Cunning Loner", - L"Cunning Buddy", - L"Aggressive", -}; - -STR16 pDisplayEditMercWindowText[] = -{ - L"Merc Name:", //0 - L"Orders:", - L"Combat Attitude:", -}; - -STR16 pCreateEditMercWindowText[] = -{ - L"Merc Colors", //0 - L"Done", - - L"Previous merc standing orders", - L"Next merc standing orders", - - L"Previous merc combat attitude", - L"Next merc combat attitude", //5 - - L"Decrease merc stat", - L"Increase merc stat", -}; - -STR16 pDisplayBodyTypeInfoText[] = -{ - L"Random", //0 - L"Reg Male", - L"Big Male", - L"Stocky Male", - L"Reg Female", - L"NE Tank", //5 - L"NW Tank", - L"Fat Civilian", - L"M Civilian", - L"Miniskirt", - L"F Civilian", //10 - L"Kid w/ Hat", - L"Humvee", - L"Eldorado", - L"Icecream Truck", - L"Jeep", //15 - L"Kid Civilian", - L"Domestic Cow", - L"Cripple", - L"Unarmed Robot", - L"Larvae", //20 - L"Infant", - L"Yng F Monster", - L"Yng M Monster", - L"Adt F Monster", - L"Adt M Monster", //25 - L"Queen Monster", - L"Bloodcat", - L"Humvee", // TODO.Translate -}; - -STR16 pUpdateMercsInfoText[] = -{ - L" --=ORDERS=-- ", //0 - L"--=ATTITUDE=--", - - L"RELATIVE", - L"ATTRIBUTES", - - L"RELATIVE", - L"EQUIPMENT", - - L"RELATIVE", - L"ATTRIBUTES", - - L"Army", - L"Admin", - L"Elite", //10 - - L"Exp. Level", - L"Life", - L"LifeMax", - L"Marksmanship", - L"Strength", - L"Agility", - L"Dexterity", - L"Wisdom", - L"Leadership", - L"Explosives", //20 - L"Medical", - L"Mechanical", - L"Morale", - - L"Hair color:", - L"Skin color:", - L"Vest color:", - L"Pant color:", - - L"RANDOM", - L"RANDOM", - L"RANDOM", //30 - L"RANDOM", - - L"By specifying a profile index, all of the information will be extracted from the profile ", - L"and override any values that you have edited. It will also disable the editing features ", - L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", - L"extract the number you have typed. A blank field will clear the profile. The current ", - L"number of profiles range from 0 to ", - - L"Current Profile: n/a ", - L"Current Profile: %s", - - L"STATIONARY", - L"ON CALL", //40 - L"ON GUARD", - L"SEEK ENEMY", - L"CLOSE PATROL", - L"FAR PATROL", - L"POINT PATROL", - L"RND PT PATROL", - - L"Action", - L"Time", - L"V", - L"GridNo 1", //50 - L"GridNo 2", - L"1)", - L"2)", - L"3)", - L"4)", - - L"lock", - L"unlock", - L"open", - L"close", - - L"Click on the gridno adjacent to the door that you wish to %s.", //60 - L"Click on the gridno where you wish to move after you %s the door.", - L"Click on the gridno where you wish to move to.", - L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", - L" Hit ESC to abort entering this line in the schedule.", -}; - -CHAR16 pRenderMercStringsText[][100] = -{ - L"Slot #%d", - L"Patrol orders with no waypoints", - L"Waypoints with no patrol orders", -}; - -STR16 pClearCurrentScheduleText[] = -{ - L"No action", -}; - -STR16 pCopyMercPlacementText[] = -{ - L"Placement not copied because no placement selected.", - L"Placement copied.", -}; - -STR16 pPasteMercPlacementText[] = -{ - L"Placement not pasted as no placement is saved in buffer.", - L"Placement pasted.", - L"Placement not pasted as the maximum number of placements for this team has been reached.", -}; - -//editscreen.cpp -STR16 pEditModeShutdownText[] = -{ - L"Exit editor?", -}; - -STR16 pHandleKeyboardShortcutsText[] = -{ - L"Are you sure you wish to remove all lights?", //0 - L"Are you sure you wish to reverse the schedules?", - L"Are you sure you wish to clear all of the schedules?", - - L"Clicked Placement Enabled", - L"Clicked Placement Disabled", - - L"Draw High Ground Enabled", //5 - L"Draw High Ground Disabled", - - L"Number of edge points: N=%d E=%d S=%d W=%d", - - L"Random Placement Enabled", - L"Random Placement Disabled", - - L"Removing Treetops", //10 - L"Showing Treetops", - - L"World Raise Reset", - - L"World Raise Set Old", - L"World Raise Set", -}; - -STR16 pPerformSelectedActionText[] = -{ - L"Creating radar map for %S", //0 - - L"Delete current map and start a new basement level?", - L"Delete current map and start a new cave level?", - L"Delete current map and start a new outdoor level?", - - L" Wipe out ground textures? ", -}; - -STR16 pWaitForHelpScreenResponseText[] = -{ - L"HOME", //0 - L"Toggle fake editor lighting ON/OFF", - - L"INSERT", - L"Toggle fill mode ON/OFF", - - L"BKSPC", - L"Undo last change", - - L"DEL", - L"Quick erase object under mouse cursor", - - L"ESC", - L"Exit editor", - - L"PGUP/PGDN", //10 - L"Change object to be pasted", - - L"F1", - L"This help screen", - - L"F10", - L"Save current map", - - L"F11", - L"Load map as current", - - L"+/-", - L"Change shadow darkness by .01", - - L"SHFT +/-", //20 - L"Change shadow darkness by .05", - - L"0 - 9", - L"Change map/tileset filename", - - L"b", - L"Change brush size", - - L"d", - L"Draw debris", - - L"o", - L"Draw obstacle", - - L"r", //30 - L"Draw rocks", - - L"t", - L"Toggle trees display ON/OFF", - - L"g", - L"Draw ground textures", - - L"w", - L"Draw building walls", - - L"e", - L"Toggle erase mode ON/OFF", - - L"h", //40 - L"Toggle roofs ON/OFF", -}; - -STR16 pAutoLoadMapText[] = -{ - L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", - L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", -}; - -STR16 pShowHighGroundText[] = -{ - L"Showing High Ground Markers", - L"Hiding High Ground Markers", -}; - -//Item Statistics.cpp -/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = -{ - L"Klaxon Mine", - L"Flare Mine", - L"Teargas Explosion", - L"Stun Explosion", - L"Smoke Explosion", - L"Mustard Gas", - L"Land Mine", - L"Open Door", - L"Close Door", - L"3x3 Hidden Pit", - L"5x5 Hidden Pit", - L"Small Explosion", - L"Medium Explosion", - L"Large Explosion", - L"Toggle Door", - L"Toggle Action1s", - L"Toggle Action2s", - L"Toggle Action3s", - L"Toggle Action4s", - L"Enter Brothel", - L"Exit Brothel", - L"Kingpin Alarm", - L"Sex with Prostitute", - L"Reveal Room", - L"Local Alarm", - L"Global Alarm", - L"Klaxon Sound", - L"Unlock door", - L"Toggle lock", - L"Untrap door", - L"Tog pressure items", - L"Museum alarm", - L"Bloodcat alarm", - L"Big teargas", -}; -*/ -STR16 pUpdateItemStatsPanelText[] = -{ - L"Toggle hide flag", //0 - L"No item selected.", - L"Slot available for", - L"Random generation.", - L"Keys not editable.", - L"ProfileID of owner", - L"Item class not implemented.", - L"Slot locked as empty.", - L"Status", - L"Rounds", - L"Trap Level", //10 - L"Quantity", - L"Trap Level", - L"Status", - L"Trap Level", - L"Status", - L"Quantity", - L"Trap Level", - L"Dollars", - L"Status", - L"Trap Level", //20 - L"Trap Level", - L"Tolerance", - L"Alarm Trigger", - L"Exist Chance", - L"B", - L"R", - L"S", -}; - -STR16 pSetupGameTypeFlagsText[] = -{ - L"Item appears in both Sci-Fi and Realistic modes", //0 - L"Item appears in Realistic mode only", - L"Item appears in Sci-Fi mode only", -}; - -STR16 pSetupGunGUIText[] = -{ - L"SILENCER", //0 - L"SNIPERSCOPE", - L"LASERSCOPE", - L"BIPOD", - L"DUCKBILL", - L"G-LAUNCHER", //5 -}; - -STR16 pSetupArmourGUIText[] = -{ - L"CERAMIC PLATES", //0 -}; - -STR16 pSetupExplosivesGUIText[] = -{ - L"DETONATOR", -}; - -STR16 pSetupTriggersGUIText[] = -{ - L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", -}; - -//Sector Summary.cpp - -STR16 pCreateSummaryWindowText[]= -{ - L"Okay", //0 - L"A", - L"G", - L"B1", - L"B2", - L"B3", //5 - L"LOAD", - L"SAVE", - L"Update", -}; - -STR16 pRenderSectorInformationText[] = -{ - L"Tileset: %s", //0 - L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", - L"Number of items: %d", - L"Number of lights: %d", - L"Number of entry points: %d", - - L"N", - L"E", - L"S", - L"W", - L"C", - L"I", //10 - - L"Number of rooms: %d", - L"Total map population: %d", - L"Enemies: %d", - L"Admins: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Troops: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Elites: %d", - - L"(%d detailed, %d profile -- %d have priority existance)", - L"Civilians: %d", //20 - - L"(%d detailed, %d profile -- %d have priority existance)", - - L"Humans: %d", - L"Cows: %d", - L"Bloodcats: %d", - - L"Creatures: %d", - - L"Monsters: %d", - L"Bloodcats: %d", - - L"Number of locked and/or trapped doors: %d", - L"Locked: %d", - L"Trapped: %d", //30 - L"Locked & Trapped: %d", - - L"Civilians with schedules: %d", - - L"Too many exit grid destinations (more than 4)...", - L"ExitGrids: %d (%d with a long distance destination)", - L"ExitGrids: none", - L"ExitGrids: 1 destination using %d exitgrids", - L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", - L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", - L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 - L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", - L"%d placements have patrol orders without any waypoints defined.", - L"%d placements have waypoints, but without any patrol orders.", - L"%d gridnos have questionable room numbers. Please validate.", - -}; - -STR16 pRenderItemDetailsText[] = -{ - L"R", //0 - L"S", - L"Enemy", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"Panic1", - L"Panic2", - L"Panic3", - L"Norm1", - L"Norm2", - L"Norm3", - L"Norm4", //10 - L"Pressure Actions", - - L"TOO MANY ITEMS TO DISPLAY!", - - L"PRIORITY ENEMY DROPPED ITEMS", - L"None", - - L"TOO MANY ITEMS TO DISPLAY!", - L"NORMAL ENEMY DROPPED ITEMS", - L"TOO MANY ITEMS TO DISPLAY!", - L"None", - L"TOO MANY ITEMS TO DISPLAY!", - L"ERROR: Can't load the items for this map. Reason unknown.", //20 -}; - -STR16 pRenderSummaryWindowText[] = -{ - L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 - L"(NO MAP LOADED).", - L"You currently have %d outdated maps.", - L"The more maps that need to be updated, the longer it takes. It'll take ", - L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", - L"depending on your computer, it may vary.", - L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", - - L"There is no sector currently selected.", - - L"Entering a temp file name that doesn't follow campaign editor conventions...", - - L"You need to either load an existing map or create a new map before being", - L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 - - L", ground level", - L", underground level 1", - L", underground level 2", - L", underground level 3", - L", alternate G level", - L", alternate B1 level", - L", alternate B2 level", - L", alternate B3 level", - - L"ITEM DETAILS -- sector %s", - L"Summary Information for sector %s:",//20 - - L"Summary Information for sector %s", - L"does not exist.", - - L"Summary Information for sector %s", - L"does not exist.", - - L"No information exists for sector %s.", - - L"No information exists for sector %s.", - - L"FILE: %s", - - L"FILE: %s", - - L"Override READONLY", - L"Overwrite File", //30 - - L"You currently have no summary data. By creating one, you will be able to keep track", - L"of information pertaining to all of the sectors you edit and save. The creation process", - L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", - L"take a few minutes depending on how many valid maps you have. Valid maps are", - L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", - L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", - - L"Do you wish to do this now (y/n)?", - - L"No summary info. Creation denied.", - - L"Grid", - L"Progress", //40 - L"Use Alternate Maps", - - L"Summary", - L"Items", -}; - -STR16 pUpdateSectorSummaryText[] = -{ - L"Analyzing map: %s...", -}; - -STR16 pSummaryLoadMapCallbackText[] = -{ - L"Loading map: %s", -}; - -STR16 pReportErrorText[] = -{ - L"Skipping update for %s. Probably due to tileset conflicts...", -}; - -STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = -{ - L"Generating map information", -}; - -STR16 pSummaryUpdateCallbackText[] = -{ - L"Generating map summary", -}; - -STR16 pApologizeOverrideAndForceUpdateEverythingText[] = -{ - L"MAJOR VERSION UPDATE", - L"There are %d maps requiring a major version update.", - L"Updating all outdated maps", -}; - -//selectwin.cpp -STR16 pDisplaySelectionWindowGraphicalInformationText[] = -{ - L"%S[%d] from default tileset %s (%d, %S)", - L"File: %S, subindex: %d (%d, %S)", - L"Tileset: %s", -}; - -STR16 pDisplaySelectionWindowButtonText[] = -{ - L"Accept selections (|E|n|t|e|r)", - L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", - L"Scroll window up (|U|p)", - L"Scroll window down (|D|o|w|n)", -}; - -//Cursor Modes.cpp -STR16 wszSelType[6] = { - L"Small", - L"Medium", - L"Large", - L"XLarge", - L"Width: xx", - L"Area" - }; - -//--- - -CHAR16 gszAimPages[ 6 ][ 20 ] = -{ - L"Cтp. 1/2", //0 - L"Cтp. 2/2", - - L"Cтp. 1/3", - L"Cтp. 2/3", - L"Cтp. 3/3", - - L"Cтp. 1/1", //5 -}; - -// by Jazz -CHAR16 zGrod[][500] = -{ - L"Робот", //0 // Robot -}; - -STR16 pCreditsJA2113[] = -{ - L"@T,{;Разработчики JA2 v1.13", - L"@T,C144,R134,{;Программирование", - L"@T,C144,R134,{;Графика и звук", - L"@};(Многое взято из других модов)", - L"@T,C144,R134,{;Предметы", - L"@T,C144,R134,{;Также помогали", - L"@};(И многие другие, предложившие хорошие идеи и высказавшие важные замечания!)", -}; - -CHAR16 ItemNames[MAXITEMS][80] = -{ - L"", -}; - - -CHAR16 ShortItemNames[MAXITEMS][80] = -{ - L"", -}; - -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 AmmoCaliber[MAXITEMS][20];// = -//{ -// L"0", -// L".38 кал", -// L"9 мм", -// L".45 кал", -// L".357 кал", -// L"12 кал", -// L"ОББ", -// L"5,45 мм", -// L"5,56 мм", -// L"7,62 мм НАТО", -// L"7,62 мм ВД", -// L"4,7 мм", -// L"5,7 мм", -// L"Монстр", -// L"Ракета", -// L"", // дротик -// L"", // пламя -//// L".50 кал", // barrett -//// L"9 мм тяж", // Val silent -//}; - -// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. -// -// Different weapon calibres -// CAWS is Close Assault Weapon System and should probably be left as it is -// NATO is the North Atlantic Treaty Organization -// WP is Warsaw Pact -// cal is an abbreviation for calibre -CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= -//{ -// L"0", -// L".38 кал", -// L"9 мм", -// L".45 кал", -// L".357 кал", -// L"12 кал", -// L"ОББ", -// L"5,45 мм", -// L"5,56 мм", -// L"7,62 мм Н.", -// L"7,62 мм ВД", -// L"4,7 мм", -// L"5,7 мм", -// L"Монстр", -// L"Ракета", -// L"", // дротик -//// L"", // flamethrower -//// L".50 кал", // barrett -//// L"9 мм тяж", // Val silent -//}; - - -CHAR16 WeaponType[MAXITEMS][30] = -{ - L"Прочие", - L"Пистолет", - L"Авт.пистолет", - L"ПП", - L"Винтовка", - L"Сн.винтовка", - L"Автомат", - L"Ручной пулемёт", - L"Дробовик", -}; - -CHAR16 TeamTurnString[][STRING_LENGTH] = -{ - L"Ход Игрока", // player's turn - L"Ход Противника", - L"Ход Тварей", - L"Ход Ополчения", - L"Ход Гражданских", - L"Планирование",// planning turn - L"Клиент №1",//hayden - L"Клиент №2",//hayden - L"Клиент №3",//hayden - L"Клиент №4",//hayden - -}; - -CHAR16 Message[][STRING_LENGTH] = -{ - L"", - - // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. - - L"%s получает ранение в голову и теряет в интеллекте!", - L"%s получает ранение в плечо и теряет в ловкости!", - L"%s получает ранение в грудь и теряет в силе!", - L"%s получает ранение в ногу и теряет в проворности!", - L"%s получает ранение в голову и теряет %d ед. интеллекта!", - L"%s получает ранение в плечо и теряет %d ед. ловкости!", - L"%s получает ранение в грудь и теряет %d ед. силы!", - L"%s получает ранение в ногу и теряет %d ед. проворности!", - L"Перехват!", - - // The first %s is a merc's name, the second is a string from pNoiseVolStr, - // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr - - L"", //OBSOLETE - L"К вам на помощь прибыло подкрепление!", - - // In the following four lines, all %s's are merc names - - L"%s перезаряжает оружие.", - L"%s недостаточно очков действия!", - L"%s оказывает первую помощь (любая клавиша - отмена).", - L"%s и %s оказывают первую помощь (любая клавиша - отмена).", - // the following 17 strings are used to create lists of gun advantages and disadvantages - // (separated by commas) - L"надёжно", - L"ненадёжно", - L"простой ремонт", - L"сложный ремонт", - L"большой урон", - L"малый урон", - L"скорострельное", - L"нескорострельное", - L"дальний бой", - L"ближний бой", - L"лёгкое", - L"тяжёлое", - L"компактное", - L"очередями", - L"нет отсечки очереди", - L"бол.магазин", - L"мал.магазин", - - // In the following two lines, all %s's are merc names - - L"%s: камуфляжная краска стёрлась.", - L"%s: камуфляжная краска смылась.", - - // The first %s is a merc name and the second %s is an item name - - L"Второе оружие: закончились патроны!", - L"%s крадёт %s.", - - // The %s is a merc name - - L"%s: оружие не стреляет очередями.", - - L"Уже установлено!", - L"Объединить?", - - // Both %s's are item names - - L"Нельзя присоединить %s к %s.", - - L"Ничего", - L"Разрядить", - L"Навеска", - - //You cannot use "item(s)" and your "other item" at the same time. - //Ex: You cannot use sun goggles and you gas mask at the same time. - L"Нельзя использовать %s и %s одновременно.", - - L"Этот предмет можно присоединить к другим, поместив его в одно из четырех мест для навески.", - L"Этот предмет можно присоединить к другим, поместив его в одно из четырех мест для навески. (Однако эти предметы несовместимы)", - L"В секторе еще остались враги!", - L"%s требует полную оплату, нужно заплатить ещё %s", - L"%s: попадание в голову!", - L"Покинуть битву?", - L"Это несъёмное приспособление. Установить его?", - L"%s чувствует прилив энергии!", - L"%s поскальзывается на стеклянных шариках!", - L"%s не удалось отобрать %s у врага!", - L"%s чинит %s", - L"Перехватили ход: ", - L"Сдаться?", - L"Человек отверг вашу помощь.", - L"Вам это надо?", - L"Чтобы воспользоваться вертолётом Небесного Всадника - выберите \"Транспорт/Вертолёт\".", - L"%s успевает зарядить только одно оружие.", - L"Ход кошек-убийц", - L"автоматический", - L"неавтоматический", - L"точный", - L"неточный", - L"нет одиночных", - L"Враг обобран до нитки!", - L"У врага в руках ничего нет!", - - L"%s: песчаный камуфляж стёрся.", - L"%s: песчаный камуфляж смылся.", - - L"%s: растительный камуфляж стёрся.", - L"%s: растительный камуфляж смылся.", - - L"%s: городской камуфляж стёрся.", - L"%s: городской камуфляж смылся.", - - L"%s: зимний камуфляж стёрся.", - L"%s: зимний камуфляж смылся.", - - L"Нельзя установить навеску %s на это место.", - L"%s не поместится ни в один слот.", - L"Недостаточно места для этого кармана.", - - L"%s отремонтировал(а) %s, насколько это было возможно.", - L"%s отремонтировал(а) у наёмника %s %s, насколько это было возможно.", - - L"%s почистил(а) %s.", // TODO.Translate - L"%s почистил(а) у %s %s.", - - L"Assignment not possible at the moment", // TODO.Translate - L"No militia that can be drilled present.", - - L"%s has fully explored %s.", // TODO.Translate -}; - -// the country and its noun in the game -CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = -{ -#ifdef JA2UB - L"Тракону", - L"Траконец", -#else - L"Арулько", - L"Арулькиец", -#endif -}; - -// the names of the towns in the game -CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = -{ - L"", - L"Омерта", - L"Драссен", - L"Альма", - L"Грам", - L"Тикса", - L"Камбрия", - L"Сан-Мона", - L"Эстони", - L"Орта", - L"Балайм", - L"Медуна", - L"Читзена", -}; - -// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. -// min is an abbreviation for minutes - -STR16 sTimeStrings[] = -{ - L"Пауза", - L"Норма", - L"5 мин", - L"30 мин", - L"60 мин", - L"6 часов", -}; - - -// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, -// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. - -STR16 pAssignmentStrings[] = -{ - L"Отряд 1", - L"Отряд 2", - L"Отряд 3", - L"Отряд 4", - L"Отряд 5", - L"Отряд 6", - L"Отряд 7", - L"Отряд 8", - L"Отряд 9", - L"Отряд 10", - L"Отряд 11", - L"Отряд 12", - L"Отряд 13", - L"Отряд 14", - L"Отряд 15", - L"Отряд 16", - L"Отряд 17", - L"Отряд 18", - L"Отряд 19", - L"Отряд 20", - L"На службе", // on active duty - L"Медик", // administering medical aid - L"Пациент", // getting medical aid - L"Транспорт", // in a vehicle - L"В пути", // in transit - abbreviated form - L"Ремонт", // repairing - L"Сканировать частоты", // scanning for nearby patrols - L"Практика", // training themselves - L"Ополчение", // training a town to revolt - L"Патруль", //training moving militia units //M.Militia - L"Тренер", // training a teammate - L"Ученик", // being trained by someone else - L"Носильщик", // move items - L"Штат", // operating a strategic facility //Staff - L"Питаться", // eating at a facility (cantina etc.) - L"Отдых", // Resting at a facility //Rest - L"Допрос", // Flugente: interrogate prisoners - L"Мёртв", // dead - L"Недеесп.", // abbreviation for incapacitated - L"В плену", // Prisoner of war - captured - L"Госпиталь", // patient in a hospital - L"Пуст", // Vehicle is empty - L"Осведомитель",// facility: undercover prisoner (snitch) - L"Пропаганда", // facility: spread propaganda - L"Пропаганда", // facility: spread propaganda (globally) - L"Слухи", // facility: gather information - L"Пропаганда", // spread propaganda - L"Слухи", // gather information - L"Командует", // militia movement orders - L"Осмотр", // disease diagnosis - L"Леч.насел.", // treat disease among the population - L"Медик", // administering medical aid - L"Пациент", // getting medical aid - L"Ремонт", // repairing - L"Укрепляет", // build structures according to external layout - L"Учит рабочих", - L"Hide", // TODO.Translate - L"GetIntel", - L"DoctorM.", - L"DMilitia", - L"Burial", - L"Admin", // TODO.Translate - L"Explore", // TODO.Translate - L"Event",// rftr: merc is on a mini event // TODO: translate - L"Mission", // rftr: rebel command -}; - - -STR16 pMilitiaString[] = -{ - L"Ополчение", // the title of the militia box - L"Резерв", //the number of unassigned militia troops - L"Нельзя перераспределять ополчение во время боя!", - L"Некоторые ополченцы не были определены по секторам. Желаете их распустить (уволить)?", -}; - - -STR16 pMilitiaButtonString[] = -{ - L"Авто", // auto place the militia troops for the player - L"Готово", // done placing militia troops - L"Распустить", // HEADROCK HAM 3.6: Disband militia - L"В резерв", // move all milita troops to unassigned pool -}; - -STR16 pConditionStrings[] = -{ - L"Отличное", //the state of a soldier .. excellent health - L"Хорошее", //good health - L"Сносное", //fair health - L"Ранен", //wounded health - L"Устал", //tired - L"Кровоточит", //bleeding to death - L"Без сознания", //knocked out - L"Умирает", //near death - L"Мёртв", //dead -}; - -STR16 pEpcMenuStrings[] = -{ - L"На службе", // set merc on active duty - L"Пациент", // set as a patient to receive medical aid - L"Транспорт", // tell merc to enter vehicle - L"Без эскорта", // let the escorted character go off on their own - L"Отмена", // close this menu -}; - - -// look at pAssignmentString above for comments - -STR16 pPersonnelAssignmentStrings[] = -{ - L"Отряд 1", - L"Отряд 2", - L"Отряд 3", - L"Отряд 4", - L"Отряд 5", - L"Отряд 6", - L"Отряд 7", - L"Отряд 8", - L"Отряд 9", - L"Отряд 10", - L"Отряд 11", - L"Отряд 12", - L"Отряд 13", - L"Отряд 14", - L"Отряд 15", - L"Отряд 16", - L"Отряд 17", - L"Отряд 18", - L"Отряд 19", - L"Отряд 20", - L"На службе", - L"Медик", - L"Пациент", - L"Транспорт", - L"В пути", - L"Ремонт", - L"Сканирует радиочастоты", // radio scan - L"Практика", - L"Ополчение", - L"Тренирует патруль", //Training Mobile Militia - L"Тренер", - L"Ученик", - L"Носильщик", // move items - L"Работает с населением", //Facility Staff - L"Питается", // eating at a facility (cantina etc.) - L"Отдыхает", //Resting at Facility - L"Допрашивает пленных", // Flugente: interrogate prisoners - L"Мёртв", - L"Недеесп.", - L"В плену", - L"Госпиталь", - L"Пуст", // Vehicle is empty - L"Осведомитель", // facility: undercover prisoner (snitch) - L"Ведет пропаганду", // facility: spread propaganda - L"Ведет пропаганду", // facility: spread propaganda (globally) - L"Собирает слухи", // facility: gather rumours - L"Ведет пропаганду", // spread propaganda - L"Собирает слухи", // gather information - L"Руководит ополчением", // militia movement orders - L"Обследование", // disease diagnosis - L"Лечит население", // treat disease among the population - L"Медик", - L"Пациент", - L"Ремонт", - L"Укрепляет сектор", // build structures according to external layout - L"Учит рабочих", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// refer to above for comments - -STR16 pLongAssignmentStrings[] = -{ - L"Отряд 1", - L"Отряд 2", - L"Отряд 3", - L"Отряд 4", - L"Отряд 5", - L"Отряд 6", - L"Отряд 7", - L"Отряд 8", - L"Отряд 9", - L"Отряд 10", - L"Отряд 11", - L"Отряд 12", - L"Отряд 13", - L"Отряд 14", - L"Отряд 15", - L"Отряд 16", - L"Отряд 17", - L"Отряд 18", - L"Отряд 19", - L"Отряд 20", - L"На службе", - L"Медик", - L"Пациент", - L"В транспорте", - L"В пути", - L"Ремонтирует", - L"Сканирует радиочастоты", // radio scan - L"Практикуется", - L"Тренирует ополчение", - L"Тренирует патруль", //Train Mobiles - L"Тренирует", - L"Обучается", - L"Носильщик", // move items - L"Работает с населением", //Staff Facility - L"Отдыхает в заведении", //Resting at Facility - L"Допрашивает пленных", // Flugente: interrogate prisoners - L"Мёртв", - L"Недееспособен", - L"В плену", - L"В госпитале", // patient in a hospital - L"Без пассажиров", // Vehicle is empty - L"Осведомитель", // facility: undercover prisoner (snitch) - L"Ведет пропаганду", // facility: spread propaganda - L"Ведет пропаганду", // facility: spread propaganda (globally) - L"Собирает слухи", // facility: gather rumours - L"Ведет пропаганду", // spread propaganda - L"Собирает слухи", // gather information - L"Руководит ополчением", // militia movement orders - L"Обследование", // disease diagnosis - L"Лечит население", // treat disease among the population - L"Медик", - L"Пациент", - L"Ремонтирует", - L"Укрепляет сектор", // build structures according to external layout - L"Учит рабочих", - L"Hide while disguised", // TODO.Translate - L"Get intel while disguised", - L"Doctor wounded militia", - L"Drill existing militia", - L"Bury corpses", - L"Administration", // TODO.Translate - L"Exploration", // TODO.Translate -}; - - -// the contract options - -STR16 pContractStrings[] = -{ - L"Изменение контракта:", - L"", // a blank line, required - L"Продлить на 1 день", // offer merc a one day contract extension - L"Продлить на 7 дней", // 1 week - L"Продлить на 14 дней", // 2 week - L"Уволить", // end merc's contract - L"Отмена", // stop showing this menu -}; - -STR16 pPOWStrings[] = -{ - L"В плену", //an acronym for Prisoner of War - L"??", -}; - -STR16 pLongAttributeStrings[] = -{ - L"СИЛА", - L"ЛОВКОСТЬ", - L"ПРОВОРНОСТЬ", - L"ИНТЕЛЛЕКТ", - L"МЕТКОСТЬ", - L"МЕДИЦИНА", - L"МЕХАНИКА", - L"ЛИДЕРСТВО", - L"ВЗРЫВЧАТКА", - L"УРОВЕНЬ", -}; - -STR16 pInvPanelTitleStrings[] = -{ - L"Броня", // the armor rating of the merc - L"Вес", // the weight the merc is carrying - L"Камуф.", // the merc's camouflage rating - L"Камуфляж:", - L"Броня:", -}; - -STR16 pShortAttributeStrings[] = -{ - L"Прв", // the abbreviated version of : agility - L"Лов", // dexterity - L"Сил", // strength - L"Лид", // leadership - L"Инт", // wisdom - L"Опт", // experience level - L"Мет", // marksmanship skill - L"Мех", // mechanical skill - L"Взр", // explosive skill - L"Мед", // medical skill -}; - - -STR16 pUpperLeftMapScreenStrings[] = -{ - L"Занятие", // the mercs current assignment - L"Контракт", // the contract info about the merc - L"Здоровье", // the health level of the current merc - L"Боев.дух", // the morale of the current merc - L"Сост.", // the condition of the current vehicle - L"Топливо", // the fuel level of the current vehicle -}; - -STR16 pTrainingStrings[] = -{ - L"Практика", // tell merc to train self - L"Ополчение", // tell merc to train town - L"Тренер", // tell merc to act as trainer - L"Ученик", // tell merc to be train by other -}; - -STR16 pGuardMenuStrings[] = -{ - L"Ведение огня:", // the allowable rate of fire for a merc who is guarding - L" Агрессивная атака", // the merc can be aggressive in their choice of fire rates - L" Беречь патроны", // conserve ammo - L" Воздержаться от стрельбы", // fire only when the merc needs to - L"Другие параметры:", // other options available to merc - L" Может отступить", // merc can retreat - L" Может искать укрытие", // merc is allowed to seek cover - L" Может помочь команде", // merc can assist teammates - L"Готово", // done with this menu - L"Отмена", // cancel this menu -}; - -// This string has the same comments as above, however the * denotes the option has been selected by the player - -STR16 pOtherGuardMenuStrings[] = -{ - L"Ведение огня:", - L" *Агрессивная атака*", - L" *Беречь патроны*", - L" *Воздержаться от стрельбы*", - L"Другие параметры:", - L" *Может отступить*", - L" *Может искать укрытие*", - L" *Может помочь команде*", - L"Готово", - L"Отмена", -}; - -STR16 pAssignMenuStrings[] = -{ - L"На службе", // merc is on active duty - L"Медик", // the merc is acting as a doctor - L"Заболевания", // merc is a doctor doing diagnosis - L"Пациент", // the merc is receiving medical attention - L"Транспорт", // the merc is in a vehicle - L"Ремонт", // the merc is repairing items - L"Радио", // Flugente: the merc is scanning for patrols in neighbouring sectors - L"Осведомитель", // anv: snitch actions - L"Обучение", // the merc is training - L"Militia", // all things militia - L"Носильщик", // move items - L"Укреплять", // fortify sector - L"Intel", // covert assignments // TODO.Translate - L"Administer", // TODO.Translate - L"Explore", // TODO.Translate - L"Занятия", // the merc is using/staffing a facility - L"Отмена", // cancel this menu -}; - -//lal -STR16 pMilitiaControlMenuStrings[] = -{ - L"В атаку", // set militia to aggresive - L"Держать оборону", // set militia to stationary - L"Отступать", // retreat militia - L"За мной", - L"Ложись", - L"Присесть", - L"В укрытие", - L"Двигаться в точку", - L"Все в атаку", - L"Всем держать оборону", - L"Всем отступать", - L"Все за мной", - L"Всем рассеяться", - L"Всем залечь", - L"Всем присесть", - L"Всем в укрытие", - //L"Всем искать предметы", - L"Отмена", // cancel this menu -}; - -//Flugente -STR16 pTraitSkillsMenuStrings[] = -{ - // radio operator - L"Артналет", - L"Постановка помех", - L"Сканировать радиочастоты", - L"Прослушивать", - L"Вызвать подкрепления", - L"Выключить радиостанцию", - L"Radio: Activate all turncoats", - - // spy - L"Hide assignment", - L"Get Intel assignment", - L"Recruit turncoat", - L"Activate turncoat", - L"Activate all turncoats", - - // disguise - L"Disguise", - L"Remove disguise", - L"Test disguise", - L"Remove clothes", - - // various - L"Наблюдатель", - L"Focus", // TODO.Translate - L"Drag", - L"Fill canteens", -}; - -//Flugente: short description of the above skills for the skill selection menu -STR16 pTraitSkillsMenuDescStrings[] = -{ - // radio operator - L"Вызвать артиллерийский удар из сектора...", - L"Заполнить эфир помехами, чтобы сделать невозможным использование средств связи.", - L"Искать источник помех.", - L"Использовать радиопрослушку для обнаружения противника.", - L"Вызвать подкрепления из соседних секторов.", - L"Turn off radio set.", // TODO.Translate - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // spy - L"Assignment: hide among the population.", // TODO.Translate - L"Assignment: hide among the population and gather intel.", - L"Try to turn an enemy into a turncoat.", - L"Order previously turned soldier to betray their comrades and join you.", - L"Order all previously turned soldiers in the sector to betray their comrades and join you.", - - // disguise - L"Try to disguise with the merc's current clothes.", - L"Remove the disguise, but clothes remain worn.", - L"Test the viability of the disguise.", - L"Remove any extra clothes.", - - // various - L"Наблюдать за местностью, чтобы обеспечить более меткую стрельбу своим снайперам.", - L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate - L"Drag a person, corpse or structure while you move.", - L"Refill your squad's canteens with water from this sector.", -}; - -STR16 pTraitSkillsDenialStrings[] = -{ - L"Требуется:\n", - L" - %d ОД\n", - L" - %s\n", - L" - %s или выше\n", - L" - %s или выше или\n", - L" - %d минут на подготовку\n", - L" - позиции миномётов в соседних секторах\n", - L" - %s |и|л|и %s |и %s или %s или выше\n", - L" - одержим бесами", - L" - a gun-related trait\n", // TODO.Translate - L" - aimed gun\n", - L" - prone person, corpse or structure next to merc\n", - L" - crouched position\n", - L" - free main hand\n", - L" - covert trait\n", - L" - enemy occupied sector\n", - L" - single merc\n", - L" - no alarm raised\n", - L" - civilian or soldier disguise\n", - L" - being our turn\n", - L" - turned enemy soldier\n", - L" - enemy soldier\n", - L" - surface sector\n", - L" - not being under suspicion\n", - L" - not disguised\n", - L" - not in combat\n", - L" - friendly controlled sector\n", -}; - -STR16 pSkillMenuStrings[] = -{ - L"Ополчение", - L"Другие отряды", - L"Отмена", - L"%d ополченцев", - L"Все ополченцы", - - L"More", // TODO.Translate - L"Corpse: %s", // TODO.Translate -}; - -STR16 pSnitchMenuStrings[] = -{ - // snitch - L"Осведомитель в отряде", - L"Городское назначение", - L"Отмена", -}; - -STR16 pSnitchMenuDescStrings[] = -{ - // snitch - L"Обсудить поведение осведомителя по отношению к его команде.", - L"Взять задание в этом секторе.", - L"Отмена", -}; - -STR16 pSnitchToggleMenuStrings[] = -{ - // toggle snitching - L"Сообщать о недовольстве", - L"Не сообщать", - L"Предотвращать нарушения", - L"Игнорировать нарушения", - L"Отмена", -}; - -STR16 pSnitchToggleMenuDescStrings[] = -{ - L"Сообщать командиру обо всех недовольных.", - L"Ничего не сообщать.", - L"Предотвращать попытки воровства и наркомании.", - L"Не обращать внимания на нарушения.", - L"Отмена", -}; - -STR16 pSnitchSectorMenuStrings[] = -{ - // sector assignments - L"Вести пропаганду", - L"Собирать слухи", - L"Отмена", -}; - -STR16 pSnitchSectorMenuDescStrings[] = -{ - L"Прославлять действия наёмников для повышения лояльности. ", - L"Собирать слухи о действиях противника.", - L"", -}; - -STR16 pPrisonerMenuStrings[] = -{ - L"Допросить полицию", - L"Допросить солдат", - L"Допросить спецназ", - L"Допросить офицеров", - L"Допросить генералов", - L"Допросить граждан", - L"Отмена", -}; - -STR16 pPrisonerMenuDescStrings[] = // TODO.Translate -{ - L"Administrators are easy to process, but give only poor results", - L"Regular troops are common and don't give you high rewards.", - L"If elite troops defect to you, they can become veteran militia.", - L"Interrogating enemy officers can lead you to find enemy generals.", - L"Generals cannot join your militia, but lead to high ransoms.", - L"Civilians don't offer much resistance, but are second-rate troops at best.", - L"Отмена", -}; - -STR16 pSnitchPrisonExposedStrings[] = -{ - L"%s был уличен как осведомитель, но вовремя сумел заметить это и выбраться живым.", - L"%s был уличен как осведомитель, но сумел разрядить обстановку и выбраться живым.", - L"%s был уличен как осведомитель, но сумел избежать покушения.", - L"%s был уличен как осведомитель, но охрана сумела предотвратить насилие.", - - L"%s был уличен как осведомитель и почти утоплен другими заключенными, но охрана успела вмешаться.", - L"%s был уличен как осведомитель и чуть не забит до смерти, прежде чем охрана вмешалась.", - L"%s был уличен как осведомитель и едва не заколот, но охрана успела вмешаться.", - L"%s был уличен как осведомитель и чуть не задушен, но охрана успела вмешаться.", - - L"%s был уличен как осведомитель и утоплен в сортире другими заключенными.", - L"%s был уличен как осведомитель и забит до смерти другими заключенными.", - L"%s был уличен как осведомитель и заколот насмерть другими заключенными.", - L"%s был уличен как осведомитель и задушен другими заключенными.", -}; - -STR16 pSnitchGatheringRumoursResultStrings[] = -{ - L"%s собрал(а) слухи об активности противника в %d секторах.", - -}; - -STR16 pRemoveMercStrings[] = -{ - L"Убрать бойца", // remove dead merc from current team - L"Отмена", -}; - -STR16 pAttributeMenuStrings[] = -{ - L"Здоровье", - L"Проворность", - L"Ловкость", - L"Сила", - L"Лидерство", - L"Меткость", - L"Механика", - L"Взрывчатка", - L"Медицина", - L"Отмена", -}; - -STR16 pTrainingMenuStrings[] = -{ - L"Практика", // train yourself - L"Рабочие", // Train workers - L"Тренер", // train your teammates - L"Ученик", // be trained by an instructor - L"Отмена", // cancel this menu -}; - - -STR16 pSquadMenuStrings[] = -{ - L"Отряд 1", - L"Отряд 2", - L"Отряд 3", - L"Отряд 4", - L"Отряд 5", - L"Отряд 6", - L"Отряд 7", - L"Отряд 8", - L"Отряд 9", - L"Отряд 10", - L"Отряд 11", - L"Отряд 12", - L"Отряд 13", - L"Отряд 14", - L"Отряд 15", - L"Отряд 16", - L"Отряд 17", - L"Отряд 18", - L"Отряд 19", - L"Отряд 20", - L"Отмена", -}; - -STR16 pPersonnelTitle[] = -{ - L"Команда", // the title for the personnel screen/program application -}; - -STR16 pPersonnelScreenStrings[] = -{ - L"Здоровье:", // health of merc - L"Проворность:", - L"Ловкость:", - L"Сила:", - L"Лидерство:", - L"Интеллект:", - L"Опыт:", // experience level - L"Меткость:", - L"Механика:", - L"Взрывчатка:", - L"Медицина:", - L"Мед. депозит:", // amount of medical deposit put down on the merc - L"До конца контракта:", // cost of current contract - L"Убил врагов:", // number of kills by merc - L"Помог убить:", // number of assists on kills by merc - L"Гонорар за день:", // daily cost of merc - L"Общая цена услуг:", // total cost of merc - L"Контракт:", // cost of current contract - L"У вас на службе:", // total service rendered by merc - L"Задолж. жалования:", // amount left on MERC merc to be paid - L"Процент попаданий:", // percentage of shots that hit target - L"Боёв:", // number of battles fought - L"Ранений:", // number of times merc has been wounded - L"Навыки:", - L"Нет навыков", - L"Достижения:", //Achievements -}; - -// SANDRO - helptexts for merc records -STR16 pPersonnelRecordsHelpTexts[] = -{ - L"Спецназа: %d\n", - L"Солдат: %d\n", - L"Полиции: %d\n", - L"Враждебных граждан: %d\n", - L"Животных: %d\n", - L"Танков: %d\n", - L"Других объектов: %d\n", - - L"Своим: %d\n", - L"Ополчению: %d\n", - L"Другим: %d\n", - - L"Выпущено пуль: %d\n", - L"Выпущено ракет: %d\n", - L"Брошено гранат: %d\n", - L"Брошено ножей: %d\n", - L"Ударов ножом: %d\n", - L"Ударов кулаками: %d\n", - L"Удачных попаданий: %d\n", - - L"Замков взломано: %d\n", - L"Замков сорвано: %d\n", - L"Ловушек обезврежено: %d\n", - L"Взрывчатки взорвано: %d\n", - L"Предметов отремонтированно: %d\n", - L"Предметов собрано: %d\n", - L"Вещей украдено: %d\n", - L"Ополченцев натренировано: %d\n", - L"Бойцов перевязано: %d\n", - L"Заданий: %d\n", - L"Встречено информаторов: %d\n", - L"Секторов разведано: %d\n", - L"Предотвращено засад: %d\n", - L"Заданий жителей выполнено: %d\n", - - L"Тактических сражений: %d\n", - L"Автобитв: %d\n", - L"Количество отступлений: %d\n", - L"Попаданий в засады: %d\n", - L"Крупнейшая битва: %d врагов\n", - - L"Огнестрельных ран: %d\n", - L"Ножевых ран: %d\n", - L"Пропущенных ударов: %d\n", - L"Подорвался: %d\n", - L"Ухудшений параметров: %d\n", - L"Перенёс хир. операций: %d\n", - L"Травм на производстве: %d\n", - - L"Характер:", - L"Недостаток:", - - L"По жизни:", //Attitudes // WANNE: For old traits display instead of "Character:"! - - L"Зомби: %d\n", - - L"Биография:", - L"Характер:", - - L"Допросил(а): %d\n", - L"Заболел(а): %d\n", - L"Получено урона: %d\n", - L"Нанесено урона: %d\n", - L"Вылечено: %d\n", -}; - - -//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h -STR16 gzMercSkillText[] = -{ - // SANDRO - tweaked this - L"Нет навыка", - L"Взлом замков", - L"Рукопашный бой", - L"Электроника", - L"Ночные операции", - L"Метание", - L"Инструктор", - L"Тяжелое оружие", - L"Автоматическое оружие", - L"Скрытность", - L"Ловкач", - L"Воровство", - L"Боевые искусства", - L"Холодное оружие", - L"Снайпер", - L"Камуфляж", - L"(Эксперт)", -}; -////////////////////////////////////////////////////////// -// SANDRO - added this -STR16 gzMercSkillTextNew[] = -{ - // Major traits - L"Нет навыка", // 0 - L"Автоматчик", // 1 - L"Гренадёр", - L"Стрелок", - L"Охотник", - L"Ковбой", // 5 - L"Боксёр", - L"Старшина", - L"Техник", - L"Санитар", - // Minor traits - L"Ловкач", // 10 - L"Мастер клинка", - L"Мастер по метанию", - L"Ночник", - L"Бесшумный убийца", - L"Спортсмен", - L"Культурист", - L"Подрывник", - L"Инструктор", - L"Разведчик", - // covert ops is a major trait that was added later - L"Диверсант", // 20 - - // new minor traits - L"Радист", // 21 - L"Осведомитель", // 22 - L"Спец по выживанию", - - // second names for major skills - L"Пулемётчик", - L"Артиллерист", - L"Снайпер", - L"Рейнджер", - L"Пистолетчик", - L"Боевые искусства", - L"Командир", - L"Инженер", - L"Доктор", - // placeholders for minor traits - L"Placeholder", // 33 - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", - L"Placeholder", // 42 - L"Шпион", // 43 - L"Placeholder", // for radio operator (minor trait) - L"Placeholder", // for snitch (minor trait) - L"Placeholder", // for survival (minor trait) - L"Ещё...", // 47 - L"Intel", // for INTEL // TODO.Translate - L"Disguise", // for DISGUISE - L"Различные", // for VARIOUSSKILLS - L"Автоперевязка", // for AUTOBANDAGESKILLS -}; -////////////////////////////////////////////////////////// - -// This is pop up help text for the options that are available to the merc - -STR16 pTacticalPopupButtonStrings[] = -{ - L"Встать/Идти (|S)", - L"Присесть/Гусиный шаг (|C)", - L"Стоять/Бежать (|R)", - L"Лечь/Ползти (|P)", - L"Поворот (|L)", - L"Действие", - L"Поговорить", - L"Осмотреть (|C|t|r|l)", - - // Pop up door menu - L"Открыть", - L"Искать ловушки", - L"Вскрыть отмычками", - L"Открыть cилой", - L"Обезвредить", - L"Запереть", - L"Отпереть", - L"Использовать заряд взрывчатки", - L"Взломать ломом", - L"Отмена (|E|s|c)", - L"Закрыть", -}; - -// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. - -STR16 pDoorTrapStrings[] = -{ - L"нет ловушки", - L"бомба-ловушка", - L"электроловушка", - L"сирена", - L"сигнализация", -}; - -// Contract Extension. These are used for the contract extension with AIM mercenaries. - -STR16 pContractExtendStrings[] = -{ - L"1 день", - L"7 дней", - L"14 дней", -}; - -// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. - -STR16 pMapScreenMouseRegionHelpText[] = -{ - L"Выбрать наёмника", - L"Отдать приказ", - L"Проложить путь движения", - L"Контракт наёмника (|C)", - L"Местонахождение бойца", - L"Спать", -}; - -// volumes of noises - -STR16 pNoiseVolStr[] = -{ - L"ТИХИЙ", - L"ЧЕТКИЙ", - L"ГРОМКИЙ", - L"ОЧЕНЬ ГРОМКИЙ", -}; - -// types of noises - -STR16 pNoiseTypeStr[] = // OBSOLETE -{ - L"НЕПОНЯТНЫЙ", - L"ШАГИ", - L"СКРИП", - L"ВСПЛЕСК", - L"УДАР", - L"ВЫСТРЕЛ", - L"ВЗРЫВ", - L"КРИК", - L"УДАР", - L"УДАР", - L"ЗВОН", - L"ГРОХОТ", -}; - -// Directions that are used to report noises - -STR16 pDirectionStr[] = -{ - L"c СЕВЕРО-ВОСТОКА", - L"c ВОСТОКА", - L"c ЮГО-ВОСТОКА", - L"c ЮГА", - L"c ЮГО-ЗАПАДА", - L"c ЗАПАДА", - L"c СЕВЕРО-ЗАПАДА", - L"c СЕВЕРА", -}; - -// These are the different terrain types. - -STR16 pLandTypeStrings[] = -{ - L"Город", - L"Дорога", - L"Равнина", - L"Пустыня", - L"Прерия", - L"Лес", - L"Болото", - L"Вода", - L"Холмы", - L"Непроходимо", - L"Река", //river from north to south - L"Река", //river from east to west - L"Чужая страна", - //NONE of the following are used for directional travel, just for the sector description. - L"Тропики", - L"Ферма", - L"Поля, дорога", - L"Леса, дорога", - L"Ферма, дорога", - L"Тропики, дорога", - L"Леса, дорога", - L"Побережье", - L"Горы, дорога", - L"Берег, дорога", - L"Пустыня, дорога", - L"Болота, дорога", - L"Прерия, ПВО", - L"Пустыня, ПВО", - L"Тропики, ПВО", - L"Медуна, ПВО", - - //These are descriptions for special sectors - L"Госпиталь Камбрии", - L"Аэропорт Драссена", - L"Аэропорт Медуны", - L"База ПВО", - L"АЗС ", - L"Убежище повстанцев", //The rebel base underground in sector A10 - L"Подвалы Тиксы", //The basement of the Tixa Prison (J9) - L"Логово тварей", //Any mine sector with creatures in it - L"Подвалы Орты", //The basement of Orta (K4) - L"Туннель", //The tunnel access from the maze garden in Meduna - //leading to the secret shelter underneath the palace - L"Убежище", //The shelter underneath the queen's palace - L"", //Unused -}; - -STR16 gpStrategicString[] = -{ - L"", //Unused - L"%s замечен в секторе %c%d, и другой отряд уже на подходе.", //STR_DETECTED_SINGULAR - L"%s замечен в секторе %c%d, и остальные отряды уже на подходе.", //STR_DETECTED_PLURAL - L"Желаете дождаться прибытия остальных?", //STR_COORDINATE - - //Dialog strings for enemies. - - L"Враг предлагает вам сдаться.", //STR_ENEMY_SURRENDER_OFFER - L"Оставшиеся без сознания бойцы попали в плен.", //STR_ENEMY_CAPTURED - - //The text that goes on the autoresolve buttons - - L"Отступить", //The retreat button //STR_AR_RETREAT_BUTTON - L"OK", //The done button //STR_AR_DONE_BUTTON - - //The headers are for the autoresolve type (MUST BE UPPERCASE) - - L"ОБОРОНА", //STR_AR_DEFEND_HEADER - L"АТАКА", //STR_AR_ATTACK_HEADER - L"ВСТРЕЧА", //STR_AR_ENCOUNTER_HEADER - L"Сектор", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER - - //The battle ending conditions - - L"ПОБЕДА!", //STR_AR_OVER_VICTORY - L"ПОРАЖЕНИЕ!", //STR_AR_OVER_DEFEAT - L"СДАЛСЯ!", //STR_AR_OVER_SURRENDERED - L"ПЛЕНЁН!", //STR_AR_OVER_CAPTURED - L"ОТСТУПИЛ!", //STR_AR_OVER_RETREATED - - //These are the labels for the different types of enemies we fight in autoresolve. - - L"Ополченец", //STR_AR_MILITIA_NAME, - L"Спецназ", //STR_AR_ELITE_NAME, - L"Солдат", //STR_AR_TROOP_NAME, - L"Полиция", //STR_AR_ADMINISTRATOR_NAME, - L"Рептион", //STR_AR_CREATURE_NAME, - - //Label for the length of time the battle took - - L"Прошло времени", //STR_AR_TIME_ELAPSED, - - //Labels for status of merc if retreating. (UPPERCASE) - - L"ОТСТУПИЛ", //STR_AR_MERC_RETREATED, - L"ОТСТУПАЕТ", //STR_AR_MERC_RETREATING, - L"ОТСТУПИТЬ", //STR_AR_MERC_RETREAT, - - //PRE BATTLE INTERFACE STRINGS - //Goes on the three buttons in the prebattle interface. The Auto resolve button represents - //a system that automatically resolves the combat for the player without having to do anything. - //These strings must be short (two lines -- 6-8 chars per line) - - L"Авто битва", //STR_PB_AUTORESOLVE_BTN, - L"Перейти в сектор", //STR_PB_GOTOSECTOR_BTN, - L"Уйти из сектора", //STR_PB_RETREATMERCS_BTN, - - //The different headers(titles) for the prebattle interface. - L"ВСТРЕЧА С ВРАГОМ", //STR_PB_ENEMYENCOUNTER_HEADER, - L"НАСТУПЛЕНИЕ ВРАГА", //STR_PB_ENEMYINVASION_HEADER, // 30 - L"ВРАЖЕСКАЯ ЗАСАДА", //STR_PB_ENEMYAMBUSH_HEADER - L"ВРАЖЕСКИЙ СЕКТОР", //STR_PB_ENTERINGENEMYSECTOR_HEADER - L"АТАКА ТВАРЕЙ", //STR_PB_CREATUREATTACK_HEADER - L"ЗАСАДА КОШЕК-УБИЙЦ", //STR_PB_BLOODCATAMBUSH_HEADER - L"ВХОД В ЛОГОВИЩЕ КОШЕК-УБИЙЦ", //STR_PB_ENTERINGBLOODCATLAIR_HEADER - L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate - - //Various single words for direct translation. The Civilians represent the civilian - //militia occupying the sector being attacked. Limited to 9-10 chars - - L"Сектор", - L"Враг", - L"Наёмники", - L"Ополчение", - L"Рептионы", - L"Кошки-убийцы", - L"Сектор", - L"Нет", //If there are no uninvolved mercs in this fight. - L"Н/Д", //Acronym of Not Applicable - L"д", //One letter abbreviation of day - L"ч", //One letter abbreviation of hour - - //TACTICAL PLACEMENT USER INTERFACE STRINGS - //The four buttons - - L"Отмена", - L"Случайно", - L"Группой", - L"B aтaку!", - - //The help text for the four buttons. Use \n to denote new line (just like enter). - - L"Убирает все позиции бойцов \nи позволяет заново расставить их. (|C)", - L"При каждом нажатии распределяет \nбойцов случайным образом. (|S)", - L"Позволяет выбрать место, \nгде сгруппировать ваших бойцов. (|G)", - L"Нажмите эту кнопку, когда завершите \nвыбор позиций для бойцов. (|В|в|о|д)", - L"Вы должны разместить всех своих бойцов \nперед тем, как начать бой.", - - //Various strings (translate word for word) - - L"Сектор", - L"Выбор точек входа (используйте стрелки для скроллинга карты)", - - //Strings used for various popup message boxes. Can be as long as desired. - - L"Препятствие. Место недоступно. Попробуйте пройти другим путем.", - L"Поместите бойцов в незатененную часть карты.", - - //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. - //Don't uppercase first character, or add spaces on either end. - - L"прибыл(а) в сектор", - - //These entries are for button popup help text for the prebattle interface. All popup help - //text supports the use of \n to denote new line. Do not use spaces before or after the \n. - L"Автоматически просчитывает бой\nбез загрузки карты. (|A)", - L"Нельзя включить автобой\nво время нападения.", - L"Войти в сектор, чтобы атаковать врага. (|E)", - L"Отступить отрядом в предыдущий сектор. (|R)", //singular version - L"Всем отрядам отступить в предыдущий сектор. (|R)", //multiple groups with same previous sector - - //various popup messages for battle conditions. - - //%c%d is the sector -- ex: A9 - L"Враги атаковали ваших ополченцев в секторе %c%d.", - //%c%d сектор -- напр: A9 - L"Твари атаковали ваших ополченцев в секторе %c%d.", - //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 - //Note: the minimum number of civilians eaten will be two. - L"Твари убили %d гражданских во время атаки сектора %s.", - //%s is the sector location -- ex: A9: Omerta - L"Враги атаковали ваших наёмников в секторе %s. Ни один из ваших бойцов не в состоянии сражаться!", - //%s is the sector location -- ex: A9: Omerta - L"Твари атаковали ваших наёмников в секторе %s. Ни один из ваших бойцов не в состоянии сражаться!", - - // Flugente: militia movement forbidden due to limited roaming - L"Ополчение не может быть сюда перемещено (RESTRICT_ROAMING = TRUE).", - L"War room isn't staffed - militia move aborted!", // TODO.Translate - - L"Робот", //STR_AR_ROBOT_NAME, TODO: translate - L"Танк", //STR_AR_TANK_NAME, - L"Джип", //STR_AR_JEEP_NAME - - L"\nВосстановление дыхания в час: %d", // STR_BREATH_REGEN_SLEEP - - L"Zombies", // TODO.Translate - L"Bandits", - L"BLOODCAT ATTACK", - L"ZOMBIE ATTACK", - L"BANDIT ATTACK", - L"Zombie", - L"Bandit", - L"Bandits attack and kill %d civilians in sector %s.", - L"Transport group", - L"Transport group en route", -}; - -STR16 gpGameClockString[] = -{ - //This is the day represented in the game clock. Must be very short, 4 characters max. - L"День", -}; - -//When the merc finds a key, they can get a description of it which -//tells them where and when they found it. -STR16 sKeyDescriptionStrings[2] = -{ - L"Найдено в секторе:", - L"День находки:", -}; - -//The headers used to describe various weapon statistics. - -CHAR16 gWeaponStatsDesc[][ 20 ] = -{ - // HEADROCK: Changed this for Extended Description project - L"Состояние:", - L"Вес:", - L"Нужно ОД", - L"Дист:", // Range - L"Урон:", // Damage - L"Всего:", // Number of bullets left in a magazine - L"ОД:", // abbreviation for Action Points - L"=", - L"=", - //Lal: additional strings for tooltips - L"Точность:", //9 - L"Дист:", //10 - L"Урон:", //11 - L"Вес:", //12 - L"Оглушение:",//13 - // HEADROCK: Added new strings for extended description ** REDUNDANT ** - // HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only) - // Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES... - L"Навеска:", //14 //Attachments - L"AUTO/5:", //15 - L"Осталось патрон:", //16 //Remaining ammo - L"Предустановка:", //17 //WarmSteel - So we can also display default attachments - L"Нагар:", // 18 - L"Место:", // 19 //space left on Molle items - L"Разброс:", // 20 - -}; - -// HEADROCK: Several arrays of tooltip text for new Extended Description Box -STR16 gzWeaponStatsFasthelpTactical[ 33 ] = -{ - L"|Д|а|л|ь|н|о|с|т|ь\n \nФактическая дальность стрельбы из этого оружия.\nСтрельба с расстояний, превышающих данный показатель,\nбудет осуществляться со значительными штрафами\nна точность.\n \nБольше - лучше.", - L"|У|р|о|н\n \nПоказатель потенциального урона оружия.\nПопадание в незащищенную цель нанесет ей\nпримерно столько единиц урона.\n \nБольше - лучше.", - L"|Т|о|ч|н|о|с|т|ь\n \nПоказатель исходного бонуса (или штрафа!)\nк точности, присущего этому оружию благодаря\nего удачному (или неудачному) дизайну.\n \nБольше - лучше.", - L"|У|р|о|в|н|и |п|р|и|ц|е|л|и|в|а|н|и|я\n \nМаксимальное число кликов прицеливания,\nвозможных при использовании этого оружия.\n \nС каждым кликом прицеливания атака\nстановится более точной.\n \nБольше - лучше.", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|р|и|ц|е|л|и|в|а|н|и|я\n \nФиксированный модификатор, меняющий\nэффективность каждого клика прицеливания\nпри использовании этого оружия.\n \nБольше - лучше.", - L"|М|и|н|. |р|а|с|с|т|о|я|н|и|е |д|л|я |б|о|н|у|с|а |п|р|и |п|р|и|ц|е|л|и|в|а|н|и|и\n \nМинимальное расстояние до цели, при котором\nк этому оружию может применяться\nмодификатор прицеливания.\n \nЕсли цель находится ближе, чем\nэтот показатель, то эффективность каждого\nклика прицеливания будет неизменной.\n \nМеньше - лучше.", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|п|а|д|а|н|и|я\n \nФиксированный модификатор шанса попадания\nпри любой атаке из этого оружия.\n \nБольше - лучше.", - L"|О|п|т|и|м|а|л|ь|н|а|я |д|а|л|ь|н|о|с|т|ь |л|а|з|е|р|а\n \nДальность (в тайлах), в пределах которой\nлазерный целеуказатель, установленный на оружии,\nбудет работать с максимальной эффективностью.\n \nПри стрельбе с расстояний, превышающих данный показатель,\nцелеуказатель будет давать меньший бонус или\nне будет давать его вовсе.\n \nБольше - лучше.", - L"|С|к|р|ы|т|а|я |в|с|п|ы|ш|к|а |в|ы|с|т|р|е|л|а\n \nПоявление этой иконки означает, что\nоружие не производит вспышки при выстреле.\nЭто позволяет стрелку оставаться незамеченным.", - L"|Г|р|о|м|к|о|с|т|ь\n \nЭто расстояние в тайлах, на которое распространяется\nзвук стрельбы. В пределах этого расстояния\nвраги смогут услышать звук вашего выстрела.\n \nМеньше - лучше.", - L"|Н|а|д|ё|ж|н|о|с|т|ь\n \nОпределяет, как быстро состояние этого\nоружия ухудшается при использовании.\n \nБольше - лучше.", - L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nЖелтый - только техники и некоторые NPC\nмогут починить его свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", - L"", //12 - L"ОД на вскидывание", - L"ОД на 1 выстрел", - L"ОД на огонь с отсечкой", - L"ОД на огонь очередью", - L"ОД на замену магазина", - L"ОД на досылку патрона", - L"Штраф за отдачу при\nстрельбе очередью c отсечкой\n(меньше - лучше)", //19 - L"Бонус от сошек\n(при стрельбе лёжа)", - L"Выстрелов в автоматическом\nрежиме за 5 ОД", - L"Штраф за отдачу при \nстрельбе очередью \n(меньше - лучше)", - L"Штраф за отдачу при\nстрельбе очередью\n(c отсечкой/без) (меньше - лучше)", //23 - L"ОД на бросок", - L"ОД на выстрел", - L"ОД на удар ножом", - L"Не стреляет одиночными!", - L"Нет отсечки патрона!", - L"Нет автоматического режима!", - L"ОД на удар", - L"", - L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nЖелтый - только некоторые NPC\nмогут починить его свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", -}; - -STR16 gzMiscItemStatsFasthelp[] = -{ - L"Модификатор размера предмета\n(меньше - лучше)", //0 - L"Модификатор надёжности", - L"Модификатор шумности\n(меньше - лучше)", - L"Скрывает вспышку", - L"Модификатор сошек", - L"Модификатор дальности", //5 - L"Модификатор точности", - L"Оптимальная дальность лазера", - L"Модификатор бонусов оптики", - L"Модификатор очереди с отсечкой", - L"Модификатор штрафа за отдачу\nпри стрельбе c отсечкой\n(больше - лучше)", //10 - L"Модификатор штрафа за отдачу\nпри стрельбе очередью\n(больше - лучше)", - L"Модификатор ОД", - L"Модификатор ОД\nна очередь с отсечкой\n(меньше - лучше)", - L"Модификатор ОД\nна очередь без отсечки\n(меньше - лучше)", - L"Модификатор ОД на вскидывание\n(меньше - лучше)", //15 - L"Модификатор ОД\nна замену магазина\n(меньше - лучше)", - L"Модификатор размера магазина", - L"Модификатор ОД на выстрел\n(меньше - лучше)", - L"Модификатор урона", - L"Модификатор урона\nв ближнем бою", //20 - L"Камуфляж 'Лес'", - L"Камуфляж 'Город'", - L"Камуфляж 'Пустыня'", - L"Камуфляж 'Снег'", - L"Модификатор скрытности", // 25 - L"Модификатор диапазона\nслышимости", - L"Модификатор диапазона\nвидимости", - L"Модификатор диапазона\nвидимости днём", - L"Модификатор диапазона\nвидимости ночью", - L"Модификатор диапазона\nвидимости при ярком освещении", //30 - L"Модификатор диапазона\nвидимости в пещере", - L"Туннельное зрение\n(меньше - лучше)", - L"Минимальное расстояние\nдля бонуса при прицеливании", - L"Зажмите |C|t|r|l для сравнения предметов", // item compare help text - L"Equipment weight: %4.1f kg", // 35 // TODO.Translate -}; - -// HEADROCK: End new tooltip text - -// HEADROCK HAM 4: New condition-based text similar to JA1. -STR16 gConditionDesc[] = -{ - L"В ", //In - L"ИДЕАЛЬНОМ", - L"ОТЛИЧНОМ", - L"ХОРОШЕМ", //GOOD - L"НОРМАЛЬНОМ", //FAIR - L"ПЛОХОМ", //POOR - L"УЖАСНОМ", //BAD - L"НЕРАБОЧЕМ", - L" состоянии." -}; - -//The headers used for the merc's money. - -CHAR16 gMoneyStatsDesc[][ 14 ] = -{ - L"Кол-во", - L"Осталось:", //this is the overall balance - L"Кол-во", - L"Отделить:", //the amount he wants to separate from the overall balance to get two piles of money - - L"Текущий", - L"Баланс:", - L"Снимаемая", - L"Сумма:", -}; - -//The health of various creatures, enemies, characters in the game. The numbers following each are for comment -//only, but represent the precentage of points remaining. - -CHAR16 zHealthStr[][13] = -{ - L"УМИРАЕТ", // >= 0 - L"КРИТИЧЕН", // >= 15 - L"ПЛОХ", // >= 30 - L"РАНЕН", // >= 45 - L"ЗДОРОВ", // >= 60 - L"СИЛЕН", // >= 75 - L"ОТЛИЧНО", // >= 90 - L"ЗАХВАЧЕН", -}; - -STR16 gzHiddenHitCountStr[1] = -{ - L"?", -}; - -STR16 gzMoneyAmounts[6] = -{ - L"1000$", - L"100$", - L"10$", - L"Снять", - L"Разделить", - L"Взять", -}; - -// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." -CHAR16 gzProsLabel[10] = -{ - L"+", -}; - -CHAR16 gzConsLabel[10] = -{ - L"-", -}; - -//Conversation options a player has when encountering an NPC -CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = -{ - L"Повторить", //meaning "Repeat yourself" - L"Дружественно", //approach in a friendly - L"Напрямую", //approach directly - let's get down to business - L"Угрожать", //approach threateningly - talk now, or I'll blow your face off - L"Дать", - L"Нанять", -}; - -//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. -CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= -{ - L"Купить/Продать", - L"Купить", - L"Продать", - L"Ремонтировать", -}; - -CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = -{ - L"До встречи", -}; - - -//These are vehicles in the game. - -STR16 pVehicleStrings[] = -{ - L"Эльдорадо", - L"Хаммер", // a hummer jeep/truck -- military vehicle - L"Фургон", - L"Джип", - L"Танк", - L"Вертолёт", -}; - -STR16 pShortVehicleStrings[] = -{ - L"Эльдорадо", - L"Хаммер", // the HMVV - L"Фургон", - L"Джип", - L"Танк", - L"Вертолёт", // the helicopter -}; - -STR16 zVehicleName[] = -{ - L"Эльдорадо", - L"Хаммер", //a military jeep. This is a brand name. - L"Фургон", // Ice cream truck - L"Джип", - L"Танк", - L"Вертолёт", //an abbreviation for Helicopter -}; - -STR16 pVehicleSeatsStrings[] = -{ - L"Вы не можете стрелять с этого места.", - L"Вы не можете поменять их местами во время боя, не выходя из автомобиля.", -}; - -//These are messages Used in the Tactical Screen - -CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = -{ - L"Воздушный Рейд", - L"Оказать первую помощь?", - - // CAMFIELD NUKE THIS and add quote #66. - - L"%s замечает, что некоторые вещи отсутствуют в посылке.", - - // The %s is a string from pDoorTrapStrings - - L"Замок (%s).", - L"Тут нет замка.", - L"Успех!", - L"Провал.", - L"Успех!", - L"Провал", - L"На замке нет ловушки.", - L"Успех!", - // The %s is a merc name - L"У %s нет подходящего ключа", - L"Ловушка обезврежена", - L"На замке не найдено ловушки.", - L"Заперто", - L"ДВЕРЬ", - L"С ЛОВУШКОЙ", - L"ЗАПЕРТАЯ", - L"НЕЗАПЕРТАЯ", - L"СЛОМАНАЯ", - L"Тут есть кнопка. Нажать?", - L"Разрядить ловушку?", - L"Пред...", - L"След...", - L"Еще...", - - // In the next 2 strings, %s is an item name - - L"%s помещен(а) на землю.", - L"%s отдан(а) %s.", - - // In the next 2 strings, %s is a name - - L"%s: Оплачено сполна.", - L"%s: Еще должен %d.", - L"Установить частоту радиодетонатора:", //in this case, frequency refers to a radio signal - L"Количество ходов до взрыва:", //how much time, in turns, until the bomb blows - L"Выберите частоту радиодетонатора на пульте:", //in this case, frequency refers to a radio signal - L"Обезвредить ловушку?", - L"Убрать синий флаг?", - L"Поставить здесь синий флаг?", - L"Завершающий ход", - - // In the next string, %s is a name. Stance refers to way they are standing. - - L"Вы действительно хотите атаковать %s?", - L"Увы, в машине боец не может изменить положение.", - L"Робот не может менять положение.", - - // In the next 3 strings, %s is a name - - L"%s не может поменять положение здесь.", - L"%s не может получить первую помощь.", - L"%s не нуждается в медицинской помощи.", - L"Туда идти нельзя.", - L"У вас уже полная команда, мест нет.", //there's no room for a recruit on the player's team - - // In the next string, %s is a name - - L"%s нанят(а).", - - // Here %s is a name and %d is a number - - L"%s должен получить $%d.", - - // In the next string, %s is a name - - L"Сопроводить %s?", - - // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) - - L"Нанять %s за %s в день?", - - // This line is used repeatedly to ask player if they wish to participate in a boxing match. - - L"Хотите участвовать в поединке?", - - // In the next string, the first %s is an item name and the - // second %s is an amount of money (including $ sign) - - L"Купить %s за %s?", - - // In the next string, %s is a name - - L"%s сопровождается отрядом %d.", - - // These messages are displayed during play to alert the player to a particular situation - - L"ОТКАЗ", //weapon is jammed. - L"Роботу нужны патроны %s калибра.", //Robot is out of ammo - L"Бросить туда не получится.", //Merc can't throw to the destination he selected - - // These are different buttons that the player can turn on and off. - - L"Режим скрытности (|Z)", - L"Карта (|M)", - L"Завершить ход (|D)", - L"Говорить", - L"Молчать", - L"Подняться (|P|g|U|p)", - L"Смена уровня (|T|a|b)", - L"Забраться/Спрыгнуть (|J)", - L"Присесть/Лечь (|P|g|D|n)", - L"Осмотреть (|C|t|r|l)", - L"Предыдущий боец", - L"Следующий боец (|П|p|o|б|e|л)", - L"Настройки (|O)", - L"Режим очереди (|B)", - L"Смотреть/Повернуться (|L)", - L"Здоровье: %d/%d\nЭнергия: %d/%d\nБоевой дух: %s", - L"Ну и?", //this means "what?" - L"Продолж.", // an abbrieviation for "Continued" - L"%s будет говорить.", - L"%s будет молчать.", - L"Состояние: %d/%d\nТопливо: %d/%d", - L"Выйти из машины", - L"Сменить отряд (|S|h|i|f|t |П|p|о|б|e|л)", - L"Ехать", - L"Н/Д", //this is an acronym for "Not Applicable." - L"Рукопашный бой", - L"Применить оружие", - L"Воспользоваться ножом", - L"Использовать взрывчатку", - L"Воспользоваться аптечкой", - L"(Ловит)", - L"(Перезарядка)", - L"(Дать)", - L"Сработала %s.", // The %s here is a string from pDoorTrapStrings ASSUME all traps are female gender - L"%s прибыл(а).", - L"%s: истратил(а) все очки действия.", - L"%s сейчас не может действовать.", - L"%s перевязан(а).", - L"%s: закончились бинты.", - L"Враг в секторе!", - L"Врагов в поле зрения нет.", - L"Недостаточно очков действия.", - L"Наденьте на голову одного из наёмников пульт управления роботом.", - L"Последняя очередь опустошила магазин!", - L"СОЛДАТ", - L"РЕПТИОН", - L"ОПОЛЧЕНЕЦ", - L"ЖИТЕЛЬ", - L"ЗОМБИ", - L"Пленный", - L"Выход из сектора", - L"ДА", - L"ОТМЕНА", - L"Выбранный боец", - L"Все бойцы отряда", - L"Идти в сектор", - L"Идти на карту", - L"Этот сектор отсюда покинуть нельзя.", - L"Вы не можете покинуть сектор в походовом режиме.", - L"%s слишком далеко.", - L"Скрыть кроны деревьев", - L"Показать кроны деревьев", - L"ВОРОНА", //Crow, as in the large black bird - L"ШЕЯ", - L"ГОЛОВА", - L"ТОРС", - L"НОГИ", - L"Рассказать королеве то, что она хочет знать?", - L"Регистрация отпечатков пальцев пройдена.", - L"Неопознанные отпечатки пальцев. Оружие заблокировано.", - L"Цель захвачена", - L"Путь заблокирован", - L"Положить/Снять деньги", // Help text over the $ button on the Single Merc Panel - L"Никто не нуждается в медицинской помощи.", - L"отказ", // Short form of JAMMED, for small inv slots - L"Туда вскарабкаться невозможно.", // used ( now ) for when we click on a cliff - L"Путь блокирован. Хотите поменяться местами с этим человеком?", - L"Человек отказывается двигаться.", - // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) - L"Вы согласны заплатить %s?", - L"Принять бесплатное лечение?", - L"Согласиться выйти замуж за %s?", //Daryl - L"Связка ключей", - L"С эскортируемыми этого сделать нельзя.", - L"Пощадить %s?", //Krott - L"За пределами прицельной дальности.", - L"Шахтер", - L"Машина может ездить только между секторами.", - L"Ни у кого из наёмников нет аптечки", - L"Путь для %s заблокирован", - L"Ваши бойцы, захваченные армией %s, томятся здесь в плену!", //Deidranna - L"Замок поврежден.", - L"Замок разрушен.", - L"Кто-то с другой стороны пытается открыть эту дверь.", - L"Состояние: %d/%d\nТопливо: %d/%d", - L"%s не видит %s.", // Cannot see person trying to talk to - L"Навеска снята", - L"Вы не можете содержать еще одну машину, довольствуйтесь уже имеющимися двумя.", - - // added by Flugente for defusing/setting up trap networks - L"Выберите частоту активации (1 - 4) или частоту деактивации (A - D):", - L"Установите частоту деактивации:", - L"Установите частоту активации (1 - 4) и частоту деактивации (A - D):", - L"Установите время до активации в ходах (1 - 4) и частоту деактивации (A - D):", - L"Выберите уровень (1 - 4) и сеть (A - D):", - - // added by Flugente to display food status - L"Здоровье: %d/%d\nЭнергия: %d/%d\nБоевой дух: %s\nВода: %d%s\nПища: %d%s", - - // added by Flugente: selection of a function to call in tactical - L"Что будем делать?", - L"Наполнить фляги", - L"Чистить (один)", - L"Чистить (все)", - L"Убрать одежду", - L"Убрать маскировку", - L"Ополчение: бросить оружие", - L"Ополчение: взять оружие", - L"Проверить маскировку", - L"", - - // added by Flugente: decide what to do with the corpses - L"Что будем делать с телом?", - L"Отсечь голову", - L"Потрошить", - L"Забрать одежду", - L"Забрать тело", - - // Flugente: weapon cleaning - L"%s чистит %s", - - // added by Flugente: decide what to do with prisoners - L"As we have no prison, a field interrogation is performed.", // TODO.Translate - L"Field interrogation", - L"Куда отправить %d пленного(-иков)?", - L"Отпустить", - L"Что вы хотите сделать?", - L"Требовать сдаться", - L"Предложить сдаться", - L"Distract", // TODO.Translate - L"Переговоры", - L"Recruit Turncoat", // TODO: translate - - // added by sevenfm: disarm messagebox options, messages when arming wrong bomb - L"Обезвредить", - L"Исследовать", - L"Убрать флаг", - L"Взорвать!", - L"Активировать сеть", - L"Деактивировать сеть", - L"Показать сеть", - L"Нет детонатора!", - L"Эта бомба уже взведена!", - L"Безопасно", - L"Относительно безопасно", - L"Рискованно", - L"Опасно", - L"Очень опасно!", - - L"Маска", - L"ПНВ", - L"Предмет", - - L"Эта функция работает только с новой системой инвентаря (NIV)", - L"Нет предметов в главной руке", - L"Некуда поместить предмет", - L"Для этого быстрого слота не определены предметы", - L"Нет свободной руки для предмета", - L"Предмет не обнаружен", - L"Невозможно взять предмет в руку", - - L"Перевязка идуших бойцов...", - - L"Комплектовать", - L"%s заменил %s на лучшую версию", - L"%s поднял %s", - - L"%s has stopped chatting with %s", // TODO.Translate - L"Attempt to turn", -}; - -//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. -STR16 pExitingSectorHelpText[] = -{ - //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. - L"Если выбрано, то карта соседнего сектора будет сразу же загружена.", - L"Если выбрано, то вы автоматически попадете на экран карты,\nтак как путешествие займет некоторое время.", - - //If you attempt to leave a sector when you have multiple squads in a hostile sector. - L"Этот сектор оккупирован врагом, и вы не можете выйти отсюда.\nВы должны разобраться с этим, прежде чем перейти в любой другой сектор.", - - //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. - //The helptext explains why it is locked. - L"Как только оставшиеся наёмники покинут этот сектор,\nсразу будет загружен соседний сектор.", - L"Выведя оставшихся наёмников из этого сектора,\nвы автоматически попадете на экран карты,\nтак как на путешествие потребуется некоторое время.", - - //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. - L"%s нуждается в сопровождении ваших наёмников и не может самостоятельно покинуть сектор.", - - //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. - //There are several strings depending on the gender of the merc and how many EPCs are in the squad. - //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! - L"%s не может покинуть сектор один, так как он сопровождает %s.", //male singular - L"%s не может покинуть сектор одна, так как она сопровождает %s.", //female singular - L"%s не может покинуть сектор один, так как он сопровождает группу из нескольких человек.", //male plural - L"%s не может покинуть сектор одна, так как она сопровождает группу из нескольких человек.", //female plural - - //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, - //and this helptext explains why. - L"Все ваши наёмники должны быть в машине,\nчтобы отряд смог отправиться в место назначения.", - - L"", //UNUSED - - //Standard helptext for single movement. Explains what will happen (splitting the squad) - L"Если выбрать, то %s отправится в одиночку\nи автоматически будет переведен в отдельный отряд.", - - //Standard helptext for all movement. Explains what will happen (moving the squad) - L"Если выбрать, данный отряд отправится\nв место назначения, покинув этот сектор.", - - //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically - //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the - //"exiting sector" interface will not appear. This is just like the situation where - //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. - L"%s сопровождается вашими наёмниками и не может покинуть этот сектор в одиночку. Остальные наёмники должны быть рядом, прежде чем вы сможете покинуть сектор.", -}; - - - -STR16 pRepairStrings[] = -{ - L"Предметы", // tell merc to repair items in inventory - L"База ПВО", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile - L"Отмена", // cancel this menu - L"Робот", // repair the robot -}; - - -// NOTE: combine prestatbuildstring with statgain to get a line like the example below. -// "John has gained 3 points of marksmanship skill." - -STR16 sPreStatBuildString[] = -{ - L"теряет", // the merc has lost a statistic - L"получает", // the merc has gained a statistic - L"ед.", // singular - L"ед.", // plural - L"уровень", // singular - L"уровня", // plural -}; - -STR16 sStatGainStrings[] = -{ - L"здоровья.", - L"проворности.", - L"ловкости.", - L"интеллекта.", - L"медицины.", - L"взрывного дела.", - L"механики.", - L"меткости.", - L"опыта.", - L"силы.", - L"лидерства.", -}; - - -STR16 pHelicopterEtaStrings[] = -{ - L"Общая дистанция:", // total distance for helicopter to travel - L"Безопасно: ", // distance to travel to destination - L"Опасно:", // distance to return from destination to airport - L"Итого:", // total cost of trip by helicopter - L"РВП:", // ETA is an acronym for "estimated time of arrival" - L"У вертолета закончилось топливо. Придется совершить посадку на вражеской территории!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Пассажиры:", - L"Выбрать вертолет или точку высадки?", - L"Вертолёт", - L"Высадка", - L"Вертолет серьезно поврежден и идет на вынужденную посадку во вражеской территории!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> - L"Вертолет возвращается на базу, высадить сначала пассажиров?", - L"Остаток топлива:", - L"Расст. до заправки:", -}; - -STR16 pHelicopterRepairRefuelStrings[]= -{ - // anv: Waldo The Mechanic - prompt and notifications - L"Хотите, чтобы %s начал ремонт? Это будет стоить $%d, вертолет не будет доступен в течение %d часов.", - L"Вертолет разобран. Подождите, пока не закончится его ремонт.", - L"Ремонт закончен. Вертолет снова доступен.", - L"Вертолет полностью заправлен.", - - L"Helicopter has exceeded maximum range!", // TODO.Translate -}; - -STR16 sMapLevelString[] = -{ - L"Подуровень:", // what level below the ground is the player viewing in mapscreen -}; - -STR16 gsLoyalString[] = -{ - L"Лояльность", // the loyalty rating of a town ie : Loyal 53% -}; - - -// error message for when player is trying to give a merc a travel order while he's underground. - -STR16 gsUndergroundString[] = -{ - L"не может выйти на марш в подземельях.", -}; - -STR16 gsTimeStrings[] = -{ - L"ч", // hours abbreviation - L"м", // minutes abbreviation - L"с", // seconds abbreviation - L"д", // days abbreviation -}; - -// text for the various facilities in the sector - -STR16 sFacilitiesStrings[] = -{ - L"Нет", //важные объекты сектора - L"Госпиталь", - L"Завод", //Factory - L"Тюрьма", - L"Военная база", - L"Аэропорт", - L"Стрельбище", // a field for soldiers to practise their shooting skills -}; - -// text for inventory pop up button - -STR16 pMapPopUpInventoryText[] = -{ - L"Инвентарь", - L"Выйти", - L"Ремонт", - L"Factories", // TODO.Translate -}; - -// town strings - -STR16 pwTownInfoStrings[] = -{ - L"Размер", // 0 // size of the town in sectors - L"", // blank line, required - L"Контроль", // how much of town is controlled - L"Нет", // none of this town - L"Шахта города", // mine associated with this town - L"Лояльность", // 5 // the loyalty level of this town - L"Готовы", // the forces in the town trained by the player - L"", - L"Важные объекты", // main facilities in this town - L"Уровень", // the training level of civilians in this town - L"Тренировка ополчения", // 10 // state of civilian training in town - L"Ополчение", // the state of the trained civilians in the town - - // Flugente: prisoner texts - L"Заключенные", - L"%d (вместимость %d)", - L"%d Полиция", - L"%d Солдаты", - L"%d Спецназ", - L"%d Офицеры", - L"%d Генералы", - L"%d Гражданские", - L"%d Special1", - L"%d Special2", -}; - -// Mine strings - -STR16 pwMineStrings[] = -{ - L"Шахта", // 0 - L"Серебро", - L"Золото", - L"Дневная выработка", - L"Производственные возможности", - L"Заброшена", // 5 - L"Закрыта", - L"Истощается", - L"Идет добыча", - L"Статус", - L"Уровень добычи", - L"Ресурс", // 10 - L"Принадлежность", - L"Лояльность", -}; - -// blank sector strings - -STR16 pwMiscSectorStrings[] = -{ - L"Силы врага", - L"Сектор", - L"Количество предметов", - L"Неизвестно", - - L"Под контролем", - L"Да", - L"Нет", - L"Status/Software status:", // TODO.Translate - - L"Additional Intel", // TODO:Translate -}; - -// error strings for inventory - -STR16 pMapInventoryErrorString[] = -{ - L"%s слишком далеко.", //Merc is in sector with item but not close enough - L"Нельзя выбрать этого бойца.", //MARK CARTER - L"%s вне этого сектора, и не может подобрать предмет.", - L"Во время боя вам придется подбирать вещи с земли.", - L"Во время боя вам придется выкладывать вещи на землю на тактической карте.", - L"%s вне этого сектора и не может оставить предмет.", - L"Во время битвы вы не можете заряжать оружие патронами из короба.", -}; - -STR16 pMapInventoryStrings[] = -{ - L"Локация", // sector these items are in - L"Всего предметов", // total number of items in sector -}; - - -// help text for the user - -STR16 pMapScreenFastHelpTextList[] = -{ - L"Чтобы перевести наёмника в другой отряд, назначить его врачом или отдать приказ ремонтировать вещи, щелкните по колонке 'ЗАНЯТИЕ'.", - L"Чтобы приказать наёмнику перейти в другой сектор, щелкните в колонке 'КУДА'.", - L"Как только наёмник получит приказ на передвижение, включится сжатие времени.", - L"Нажатием левой кнопки мыши выбирается сектор. Еще одно нажатие нужно, чтобы отдать наёмникам приказы на передвижение. Нажатие правой кнопки мыши на секторе откроет экран дополнительной информации.", - L"Чтобы вызвать экран помощи, в любой момент времени нажмите 'h'.", - L"Тестовый текст", - L"Тестовый текст", - L"Тестовый текст", - L"Тестовый текст", - L"Вы практически ничего не сможете сделать на этом экране, пока не прибудете в Арулько. Когда познакомитесь со своей командой, включите сжатие времени (кнопки в правом нижнем углу). Это ускорит течение времени, пока ваша команда не прибудет в Арулько.", -}; - -// movement menu text - -STR16 pMovementMenuStrings[] = -{ - L"Отправить наёмников в сектор", // title for movement box - L"Путь", // done with movement menu, start plotting movement - L"Отмена", // cancel this menu - L"Другое", // title for group of mercs not on squads nor in vehicles - L"Выбрать все", // Select all squads -}; - - -STR16 pUpdateMercStrings[] = -{ - L"Ой!:", // an error has occured - L"Срок контракта истек:", // this pop up came up due to a merc contract ending - L"Задание выполнили:", // this pop up....due to more than one merc finishing assignments - L"Бойцы вернулись к своим обязанностям:", // this pop up ....due to more than one merc waking up and returing to work - L"Бойцы ложатся спать:", // this pop up ....due to more than one merc being tired and going to sleep - L"Скоро закончатся контракты у:", // this pop up came up due to a merc contract ending -}; - -// map screen map border buttons help text - -STR16 pMapScreenBorderButtonHelpText[] = -{ - L"Населенные пункты (|W)", - L"Шахты (|M)", - L"Отряды и враги (|T)", - L"Карта воздушного пространства (|A)", - L"Вещи (|I)", - L"Ополчение и враги (|Z)", - L"Show |Disease Data", // TODO.Translate - L"Show Weathe|r", - L"Show |Quests & Intel", -}; - -STR16 pMapScreenInvenButtonHelpText[] = -{ - L"Следующая \nстраница (|.)", // next page - L"Предыдущая \nстраница (|,)", // previous page - L"Закрыть инвентарь сектора (|E|s|c)", // exit sector inventory - L"Увеличить предметы", // HEAROCK HAM 5: Inventory Zoom Button - L"Сложить и объединить предметы", // HEADROCK HAM 5: Stack and Merge - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Собрать патроны в ящики\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Собрать патроны в коробки", // HEADROCK HAM 5: Sort ammo - // 6 - 10 - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Снять всю навеску \nс предметов\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments - L"Разрядить всё оружие", //HEADROCK HAM 5: Eject Ammo - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Показать все предметы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Скрыть все предметы", // HEADROCK HAM 5: Filter Button - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть оружие\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать оружие", // HEADROCK HAM 5: Filter Button - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть аммуницию\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать аммуницию", // HEADROCK HAM 5: Filter Button - // 11 - 15 - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть взрывчатку\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать взрывчатку", // HEADROCK HAM 5: Filter Button - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть холодное оружие\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать холодное оружие", // HEADROCK HAM 5: Filter Button - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть броню\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать броню", // HEADROCK HAM 5: Filter Button - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть разгрузочные системы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать разгрузочные системы", // HEADROCK HAM 5: Filter Button - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть наборы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать наборы", // HEADROCK HAM 5: Filter Button - // 16 - 20 - L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть прочие предметы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать прочие предметы", // HEADROCK HAM 5: Filter Button - L"Переключить отображение перемещения предметов", // Flugente: move item display - L"Save Gear Template", // TODO.Translate - L"Load Gear Template...", -}; - -STR16 pMapScreenBottomFastHelp[] = -{ - L"Лэптоп (|L)", - L"Тактический экран (|E|s|c)", - L"Настройки (|O)", - L"Сжатие времени (|+)", // time compress more - L"Сжатие времени (|-)", // time compress less - L"Предыдущее сообщение (|С|т|р|е|л|к|а |в|в|е|р|х)\nПредыдущая страница (|P|g|U|p)", // previous message in scrollable list - L"Следующее сообщение (|С|т|р|е|л|к|а |в|н|и|з)\nСледующая страница (|P|g|D|n)", // next message in the scrollable list - L"Включить / выключить\nсжатие времени (|П|р|о|б|е|л)", // start/stop time compression -}; - -STR16 pMapScreenBottomText[] = -{ - L"Текущий баланс", // current balance in player bank account -}; - -STR16 pMercDeadString[] = -{ - L"%s мертв(а)", -}; - - -STR16 pDayStrings[] = -{ - L"День", -}; - -// the list of email sender names - -CHAR16 pSenderNameList[500][128] = -{ - L"", -}; -/* -{ - L"Энрико", - L"Psych Pro Inc.", - L"Помощь", - L"Psych Pro Inc.", - L"Спек", - L"R.I.S.", //5 - L"Барри", - L"Блад", - L"Рысь", - L"Гризли", - L"Вики", //10 - L"Тревор", - L"Грунти (Хряп)", - L"Иван", - L"Анаболик", - L"Игорь", //15 - L"Тень", - L"Рыжий", - L"Жнец (Потрошитель)", - L"Фидель", - L"Лиска", //20 - L"Сидней", - L"Гас", - L"Сдоба", - L"Айс", - L"Паук", //25 - L"Скала (Клифф)", - L"Бык", - L"Стрелок", - L"Тоска", - L"Рейдер", //30 - L"Сова", - L"Статик", - L"Лен", - L"Дэнни", - L"Маг", - L"Стефан", - L"Лысый", - L"Злобный", - L"Доктор Кью", - L"Гвоздь", - L"Тор", - L"Стрелка", - L"Волк", - L"ЭмДи", - L"Лава", - //---------- - L"M.I.S. Страховка", - L"Бобби Рэй", - L"Босс", - L"Джон Кульба", - L"A.I.M.", -}; -*/ - -// next/prev strings - -STR16 pTraverseStrings[] = -{ - L"<<", - L">>", -}; - -// new mail notify string - -STR16 pNewMailStrings[] = -{ - L"Получена новая почта...", -}; - - -// confirm player's intent to delete messages - -STR16 pDeleteMailStrings[] = -{ - L"Удалить письмо?", - L"Удалить, НЕ ПРОЧИТАВ?", -}; - - -// the sort header strings - -STR16 pEmailHeaders[] = -{ - L"От:", - L"Тема:", - L"День:", -}; - -// email titlebar text - -STR16 pEmailTitleText[] = -{ - L"Почтовый ящик", -}; - - -// the financial screen strings -STR16 pFinanceTitle[] = -{ - L"Финансовый отчет", //the name we made up for the financial program in the game -}; - -STR16 pFinanceSummary[] = -{ - L"Доход:", // credit (subtract from) to player's account - L"Расход:", // debit (add to) to player's account - L"Вчерашний чистый доход:", - L"Вчерашние другие поступления:", - L"Вчерашний расход:", - L"Баланс на конец дня:", - L"Чистый доход сегодня:", - L"Другие поступления за сегодня:", - L"Расход за сегодня:", - L"Текущий баланс:", - L"Ожидаемый доход:", - L"Ожидаемый баланс:", // projected balance for player for tommorow -}; - - -// headers to each list in financial screen - -STR16 pFinanceHeaders[] = -{ - L"День", // the day column - L"Доход", // the credits column - L"Расход", // the debits column - L"Операции", // transaction type - see TransactionText below - L"Баланс", // balance at this point in time - L"Стр.", // page number - L"Дней", // the day(s) of transactions this page displays -}; - - -STR16 pTransactionText[] = -{ - L"Начисленный процент", // interest the player has accumulated so far - L"Анонимный взнос", - L"Перевод средств", - L"Нанят", // Merc was hired - L"Покупки у Бобби Рэя", // Bobby Ray is the name of an arms dealer - L"Оплата счёта M.E.R.C.", - L"%s: страховка.", // medical deposit for merc - L"I.M.P.: Анализ профиля", // IMP is the acronym for International Mercenary Profiling - L"%s: куплена страховка", - L"%s: Страховка уменьшена", - L"%s: Продление страховки", // johnny contract extended - L"для %s: Страховка аннулирована", - L"%s: Требуется страховка", // insurance claim for merc - L"1 день", // merc's contract extended for a day - L"7 дней", // merc's contract extended for a week - L"14 дней", // ... for 2 weeks - L"Доход шахты", - L"", //String nuked - L"Куплены цветы", - L"%s: Возврат мед. депозита", - L"%s: Остаток мед. депозита", - L"%s: Мед. депозит удержан", - L"%s: оплата услуг.", // %s is the name of the npc being paid - L"%s берёт наличные.", // transfer funds to a merc - L"%s: переводит деньги.", // transfer funds from a merc - L"%s: найм ополчения.", // initial cost to equip a town's militia - L"%s продал вам вещи.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. - L"%s кладёт наличные на счет.", - L"Снаряжение продано населению", - L"Оснащение персонала", // HEADROCK HAM 3.6 //Facility Use - L"Содержание ополчения", // HEADROCK HAM 3.6 //Militia upkeep - L"Выкуп за освобожденных заключенных", // Flugente: prisoner system - L"ВОЗ, подписка", // Flugente: disease - L"Оплата услуг Цербер", // Flugente: PMC - L"Стоимость ремонта базы ПВО", // Flugente: SAM repair - L"Trained workers", // Flugente: train workers // TODO.Translate - L"Drill militia in %s", // Flugente: drill militia // TODO.Translate - L"Mini event", // rftr: mini events // TODO: translate - L"Funds transferred from rebel command", // rftr: rebel command - L"Funds transferred to rebel command", // rftr: rebel command - L"Bounty payout", // rftr: rebel command soldier bounties -}; - -STR16 pTransactionAlternateText[] = -{ - L"Страховка для", // insurance for a merc - L"%s: контракт продлен на 1 день.", // entend mercs contract by a day - L"%s: контракт продлен на 7 дней.", - L"%s: контракт продлен на 14 дней.", -}; - -// helicopter pilot payment - -STR16 pSkyriderText[] = -{ - L"Небесному Всаднику заплачено $%d", // skyrider was paid an amount of money - L"Вы все еще должны Небесному Всаднику $%d.", // skyrider is still owed an amount of money - L"Небесный Всадник завершил заправку.", // skyrider has finished refueling - L"",//unused - L"",//unused - L"Небесный Всадник готов к полету.", // Skyrider was grounded but has been freed - L"У Небесного Всадника нет пассажиров. Если вы хотите переправить бойцов в этот сектор, посадите их в вертолёт (приказ \"Транспорт/Вертолёт\")." -}; - - -// strings for different levels of merc morale - -STR16 pMoralStrings[] = -{ - L"Отлично", - L"Хорошо", - L"Норма", - L"Низкая", - L"Паника", - L"Ужас", -}; - -// Mercs equipment has now arrived and is now available in Omerta or Drassen. - -STR16 pLeftEquipmentString[] = -{ - L"%s оставляет свою экипировку в Омерте (A9).", - L"%s оставляет свою экипировку в Драссене (B13).", -}; - -// Status that appears on the Map Screen - -STR16 pMapScreenStatusStrings[] = -{ - L"Здоровье", - L"Энергия", - L"Боевой дух", - L"Состояние", // the condition of the current vehicle (its "health") - L"Бензин", // the fuel level of the current vehicle (its "energy") - L"Яд", // for display of poisoning - L"Вода", // drink level - L"Пища", // food level -}; - - -STR16 pMapScreenPrevNextCharButtonHelpText[] = -{ - L"Предыдущий боец\n(|С|т|р|е|л|к|а |В|л|е|в|о)", // previous merc in the list - L"Следующий боец\n(|С|т|р|е|л|к|а |В|п|р|а|в|о)", // next merc in the list -}; - - -STR16 pEtaString[] = -{ - L"РВП:", // eta is an acronym for Estimated Time of Arrival -}; - -STR16 pTrashItemText[] = -{ - L"Вы больше никогда не увидите этот предмет. Уверены?", // do you want to continue and lose the item forever - L"Этот предмет кажется ОЧЕНЬ важным. Вы ДЕЙСТВИТЕЛЬНО хотите выбросить его?", // does the user REALLY want to trash this item -}; - - -STR16 pMapErrorString[] = -{ - L"Отряд не может выйти на марш, когда один из наёмников спит.", - -//1-5 - L"Сначала выведите отряд на поверхность.", - L"Выйти на марш? Да тут же враги повсюду!", - L"Чтобы выйти на марш, наёмники должны быть назначены в отряд или посажены в машину.", - L"У вас еще нет ни одного бойца.", // you have no members, can't do anything - L"наёмник не может выполнить.", // merc can't comply with your order -//6-10 - L"нуждается в сопровождении, чтобы идти. Назначьте его с кем-нибудь в отряд.", // merc can't move unescorted .. for a male - L"нуждается в сопровождении, чтобы идти. Назначьте ее с кем-нибудь в отряд.", // for a female - L"Наёмник ещё не прибыл в %s!", - L"Кажется, сначала надо уладить проблемы с контрактом.", - L"Бежать от самолета? Только после вас!", -//11-15 - L"Выступить на марш? Да у нас тут бой идет!", - L"Вы попали в засаду кошек-убийц в секторе %s!", - L"Вы только что вошли в сектор %s... И наткнулись на логово кошек-убийц!", - L"", - L"База ПВО в %s была захвачена.", -//16-20 - L"Шахта в %s была захвачена врагом. Ваш дневной доход сократился до %s в день.", - L"Враг занял без сопротивления сектор %s.", - L"Как минимум один из ваших бойцов не может выполнить этот приказ.", - L"%s не может присоединиться к %s - нет места.", - L"%s не может присоединиться к %s - слишком большое расстояние.", -//21-25 - L"Шахта в %s была захвачена войсками Дейдраны!", - L"Войска Дейдраны только что вторглись на базу ПВО в %s.", - L"Войска Дейдраны только что вторглись в %s.", - L"Войска Дейдраны были замечены в %s.", - L"Войска Дейдраны только что захватили %s.", -//26-30 - L"Как минимум один из ваших бойцов не хочет спать.", - L"Как минимум один из ваших бойцов не может проснуться.", - L"Ополченцы не появятся, пока не завершат тренировку.", - L"%s сейчас не в состоянии принять приказ о перемещении.", - L"Ополченцы вне границ города не могут перейти в другой сектор.", -//31-35 - L"Вы не можете держать ополченцев в %s.", - L"Пустая машина не может двигаться!", - L"%s из-за тяжелых ранений не может идти!", - L"Сначала вам нужно покинуть музей!", - L"%s мертв(а)!", -//36-40 - L"%s не может переключиться на %s, так как находится в движении.", - L"%s не может сесть в машину с этой стороны.", - L"%s не может вступить в %s", - L"Вы не можете включить сжатие времени, пока не наймете новых бойцов!", - L"Эта машина может двигаться только по дорогам!", -//41-45 - L"Вы не можете переназначить наёмников на марше.", - L"У машины закончился бензин!", - L"%s еле волочит ноги и идти не может.", - L"Ни один из пассажиров не в состоянии вести машину.", - L"Один или несколько наёмников из этого отряда не могут сейчас двигаться.", -//46-50 - L"Один или несколько наёмников не могут сейчас двигаться.", - L"Машина сильно повреждена!", - L"Внимание! Тренировать ополченцев в одном секторе могут не более двух наёмников.", - L"Роботом обязательно нужно управлять. Назначьте наёмника с пультом и робота в один отряд.", - L"Невозможно переместить вещи в %s, непонятно куда складывать. Зайдите в сектор, чтобы исправить.", -// 51-55 - L"%d items moved from %s to %s", -}; - - -// help text used during strategic route plotting -STR16 pMapPlotStrings[] = -{ - L"Ещё раз щелкните по точке назначения, чтобы подтвердить путь, или щелкните по другому сектору, чтобы установить больше путевых точек.", - L"Путь движения подтверждён.", - L"Точка назначения не изменена.", - L"Путь движения отменён.", - L"Путь сокращен.", -}; - - -// help text used when moving the merc arrival sector -STR16 pBullseyeStrings[] = -{ - L"Выберите сектор, в который прибудут наёмники.", - L"Вновь прибывшие наёмники высадятся в %s.", - L"Высадить здесь наёмников нельзя. Воздушное пространство небезопасно!", - L"Отменено. Сектор прибытия не изменился.", - L"Небо над %s более не безопасно! Место высадки было перемещено в %s.", -}; - - -// help text for mouse regions - -STR16 pMiscMapScreenMouseRegionHelpText[] = -{ - L"Показать снаряжение (|В|в|о|д)", - L"Выкинуть предмет", - L"Скрыть снаряжение (|В|в|о|д)", -}; - - - -// male version of where equipment is left -STR16 pMercHeLeaveString[] = -{ - L"Должен ли %s оставить свою амуницию здесь (в %s) или позже (в %s) перед отлетом?", - L"%s скоро уходит и оставит свою амуницию в %s.", -}; - - -// female version -STR16 pMercSheLeaveString[] = -{ - L"Должна ли %s оставить свою амуницию здесь (в %s) или позже (в %s) перед отлетом?", - L"%s скоро уходит и оставит свою амуницию в %s.", -}; - - -STR16 pMercContractOverStrings[] = -{ - L"отправляется домой, так как время его контракта истекло.", // merc's contract is over and has departed - L"отправляется домой, так как время её контракта истекло.", // merc's contract is over and has departed - L"уходит, так как его контракт был прерван.", // merc's contract has been terminated - L"уходит, так как ее контракт был прерван.", // merc's contract has been terminated - L"Вы должны M.E.R.C. слишком много денег, так что %s уходит.", // Your M.E.R.C. account is invalid so merc left -}; - -// Text used on IMP Web Pages - -// WDS: Allow flexible numbers of IMPs of each sex -// note: I only updated the English text to remove "three" below -STR16 pImpPopUpStrings[] = -{ - L"Неверный код доступа.", - L"Это приведет к потере уже полученных результатов тестирования. Вы уверены?", - L"Введите правильное имя и укажите пол.", - L"Предварительный анализ вашего счета показывает, что вы не можете позволить себе пройти тестирование.", - L"Сейчас вы не можете выбрать этот пункт.", - L"Чтобы закончить анализ, нужно иметь место еще хотя бы для одного члена команды.", - L"Профиль уже создан.", - L"Не могу загрузить I.M.P.-персонаж с диска.", - L"Вы достигли максимального количества I.M.P.-персонажей.", - L"У вас в команде уже есть три I.M.P.-персонажа того же пола.", - L"Вы не можете позволить себе такой I.M.P.-персонаж.", // 10 - L"Новый I.M.P.-персонаж присоединился к команде.", - L"Вы уже выбрали максимальное количество навыков.", - L"Голоса не найдены.", -}; - - -// button labels used on the IMP site - -STR16 pImpButtonText[] = -{ - L"Информация о нас", // about the IMP site - L"НАЧАТЬ", // begin profiling - L"Способности", //Skills - L"Характеристики", // personal stats/attributes section - L"Внешность", // Appearance - L"Голос: %d", // the voice selection - L"Готово", // done profiling - L"Начать сначала", // start over profiling - L"Да, я выбираю отмеченный ответ.", - L"Да", - L"Нет", - L"Готово", // finished answering questions - L"Назад", // previous question..abbreviated form - L"Дальше", // next question - L"ДА.", // yes, I am certain - L"НЕТ, Я ХОЧУ НАЧАТЬ СНОВА.", // no, I want to start over the profiling process - L"ДА", - L"НЕТ", - L"Назад", // back one page - L"Отменить", // cancel selection - L"Да, всё верно.", - L"Нет, ещё раз взгляну.", - L"Регистрация", // the IMP site registry..when name and gender is selected - L"Анализ данных", // analyzing your profile results - L"Готово", - L"Личные качества", // Character - L"Нет", -}; - -STR16 pExtraIMPStrings[] = -{ - // These texts have been also slightly changed - L"Теперь, когда формирование внешности и личных качеств завершено, укажите ваши способности.", //With your character traits chosen, it is time to select your skills. - L"Для завершения выберите свои характеристики.", //To complete the process, select your attributes. - L"Для начала подберите наиболее подходящее вам лицо, голос, телосложение и соответствующую расцветку.", //To commence actual profiling, select portrait, voice and colors. - L"Теперь, когда вы завершили формирование своей внешности, перейдём к анализу ваших личных качеств.", //Now that you have completed your appearence choice, proceed to character analysis. -}; - -STR16 pFilesTitle[] = -{ - L"Просмотр данных", -}; - -STR16 pFilesSenderList[] = -{ - L"Отчет разведки", // the recon report sent to the player. Recon is an abbreviation for reconissance - L"В розыске №1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title - L"В розыске №2", // second intercept file - L"В розыске №3", // third intercept file - L"В розыске №4", // fourth intercept file - L"В розыске №5", // fifth intercept file - L"В розыске №6", // sixth intercept file -}; - -// Text having to do with the History Log - -STR16 pHistoryTitle[] = -{ - L"Журнал событий", -}; - -STR16 pHistoryHeaders[] = -{ - L"День", // the day the history event occurred - L"Стр.", // the current page in the history report we are in - L"День", // the days the history report occurs over - L"Локация", // location (in sector) the event occurred - L"Событие", // the event label -}; - -// Externalized to "TableData\History.xml" -/* -// various history events -// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. -// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS -// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN -// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS -// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. -STR16 pHistoryStrings[] = -{ - L"", // leave this line blank - //1-5 - L"Нанят(а) %s из A.I.M.", // merc was hired from the aim site - L"Нанят(а) %s из M.E.R.C.", // merc was hired from the aim site - L"%s мертв(а).", // merc was killed - L"Оплачены услуги M.E.R.C.", // paid outstanding bills at MERC - L"Принято задание от Энрико Чивалдори", - //6-10 - L"Воспользовались услугами I.M.P.", - L"Оформлена страховка для %s.", // insurance contract purchased - L"%s: cтраховой контракт аннулирован.", // insurance contract canceled - L"Выплата страховки %s.", // insurance claim payout for merc - L"%s: контракт продлен на 1 день.", // Extented "mercs name"'s for a day - //11-15 - L"%s: контракт продлен на 7 дней.", // Extented "mercs name"'s for a week - L"%s: контракт продлен на 14 дней.", // Extented "mercs name"'s 2 weeks - L"Вы уволили %s.", // "merc's name" was dismissed. - L"%s уходит от вас.", // "merc's name" quit. - L"получено задание.", // a particular quest started - //16-20 - L"задание выполнено.", - L"Поговорили со старшим горняком города %s", // talked to head miner of town - L"%s освобожден(а).", - L"Включен режим чит-кодов", - L"Провизия будет доставлена в Омерту завтра.", - //21-25 - L"%s ушла, чтобы выйти замуж за Дерила Хика.", - L"Истек контракт у %s.", - L"Нанят(а) %s.", - L"Энрико сетует на отсутствие успехов в кампании.", - L"Победа в сражении!", - //26-30 - L"В шахте %s иссякает запас руды.", - L"Шахта %s истощилась.", - L"Шахта %s закрыта.", - L"Шахта %s снова работает.", - L"Получена информация о тюрьме Тикса.", - //31-35 - L"Узнали об Орте - секретном военном заводе.", - L"Ученый из Орты подарил вам ракетные винтовки.", - L"Королева Дейдрана нашла применение трупам.", - L"Фрэнк говорил что-то о боях в Сан-Моне.", - L"Пациенту кажется, что он что-то видел в шахтах.", - //36-40 - L"Встретили Девина - торговца взрывчаткой.", - L"Пересеклись с бывшим наёмником A.I.M., Майком!", - L"Встретили Тони, торговца оружием.", - L"Получена ракетная винтовка от сержанта Кротта.", - L"Документы на магазин Энжела переданы Кайлу.", - //41-45 - L"Шиз предлагает построить робота.", //может, собрать робота? - L"Болтун может сделать варево, обманывающее жуков.", - L"Кит отошел от дел.", - L"Говард поставлял цианиды Дейдране.", - L"Встретили торговца Кита из Камбрии.", - //46-50 - L"Встретили Говарда, фармацевта из Балайма.", - L"Встретили Перко. Он держит небольшую мастерскую.", - L"Встретили Сэма из Балайма. Он торгует железками.", - L"Франц разбирается в электронике и других вещах.", - L"Арнольд держит мастерскую в Граме.", - //51-55 - L"Фредо из Грама чинит электронику.", - L"Один богатей из Балайма дал вам денег.", - L"Встретили старьевщика Джейка.", - L"Один бродяга дал нам электронную карточку.", - L"Вальтер подкуплен, он откроет дверь в подвал.", - //56-60 - L"Дэйв заправит машину бесплатно, если будет бензин.", - L"Дали взятку Пабло.", - L"Босс держит деньги в шахте Сан-Моны.", - L"%s: победа в бое без правил.", - L"%s: проигрыш в бое без правил.", - //61-65 - L"%s: дисквалификация в бое без правил.", - L"В заброшенной шахте найдена куча денег.", - L"Встречен убийца, посланный Боссом.", - L"Потерян контроль над сектором", //ENEMY_INVASION_CODE - L"Отбита атака врага", - //66-70 - L"Сражение проиграно", //ENEMY_ENCOUNTER_CODE - L"Смертельная засада", //ENEMY_AMBUSH_CODE - L"Вырвались из засады", - L"Атака провалилась!", //ENTERING_ENEMY_SECTOR_CODE - L"Успешная атака!", - //71-75 - L"Атака тварей", //CREATURE_ATTACK_CODE - L"Кошки-убийцы уничтожили ваш отряд.", //BLOODCAT_AMBUSH_CODE - L"Все кошки-убийцы убиты", - L"%s был убит(а).", - L"Отдали Кармену голову террориста.", - //76-80 - L"Убийца ушёл.", - L"%s убит(а) вашим отрядом.", - L"Встретили Вальдо, авиатехника.", - L"Начат ремонт вертолета. Будет закончен через %d часов.", -}; -*/ - -STR16 pHistoryLocations[] = -{ - L"Н/Д", // N/A is an acronym for Not Applicable -}; - -// icon text strings that appear on the laptop - -STR16 pLaptopIcons[] = -{ - L"Почта", - L"Сайты", - L"Финансы", - L"Команда", - L"Журнал", - L"Данные", - L"Выключить", - L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER -}; - -// bookmarks for different websites -// IMPORTANT make sure you move down the Cancel string as bookmarks are being added - -STR16 pBookMarkStrings[] = -{ - L"A.I.M.", - L"Бобби Рэй", - L"I.M.P.", - L"M.E.R.C.", - L"Похороны", - L"Цветы", - L"Страховка", - L"Отмена", - L"Энциклопедия", - L"Брифинг-зал", - L"Пресс-служба", - L"БоЛТиК", - L"ВОЗ", - L"Цербер", - L"Ополчение", - L"R.I.S.", - L"Factories", // TODO.Translate -}; - -STR16 pBookmarkTitle[] = -{ - L"Закладки", - L"Позже это меню можно вызвать правым щелчком мыши.", -}; - -// When loading or download a web page - -STR16 pDownloadString[] = -{ - L"Загрузка", - L"Обновление", -}; - -//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine - -STR16 gsAtmSideButtonText[] = -{ - L"OK", - L"Взять", // take money from merc - L"Дать", // give money to merc - L"Отмена", // cancel transaction - L"Очист.", // clear amount being displayed on the screen -}; - -STR16 gsAtmStartButtonText[] = -{ - L"Параметры", // view stats of the merc - L"Отношения", - L"Контракт", - L"Снаряжение", // view the inventory of the merc -}; - -STR16 sATMText[ ]= -{ - L"Перевести средства?", // transfer funds to merc? - L"Уверены?", // are we certain? - L"Ввести сумму", // enter the amount you want to transfer to merc - L"Выбрать тип", // select the type of transfer to merc - L"Не хватает денег", // not enough money to transfer to merc - L"Сумма должна быть кратна $10", // transfer amount must be a multiple of $10 -}; - -// Web error messages. Please use foreign language equivilant for these messages. -// DNS is the acronym for Domain Name Server -// URL is the acronym for Uniform Resource Locator - -STR16 pErrorStrings[] = -{ - L"Ошибка", - L"Сервер не имеет записи DNS.", - L"Проверьте адрес и попробуйте ещё раз.", - L"OK", //Превышено время ожидания ответа сервера. - L"Обрыв соединения с сервером.", -}; - - -STR16 pPersonnelString[] = -{ - L"Бойцов:", // mercs we have -}; - - -STR16 pWebTitle[ ]= -{ - L"sir-FER 4.0", // our name for the version of the browser, play on company name -}; - - -// The titles for the web program title bar, for each page loaded - -STR16 pWebPagesTitles[] = -{ - L"A.I.M.", - L"A.I.M. Состав", - L"A.I.M. Портреты", // a mug shot is another name for a portrait - L"A.I.M. Сортировка", - L"A.I.M.", - L"A.I.M. Галерея", - L"A.I.M. Правила", - L"A.I.M. История", - L"A.I.M. Ссылки", - L"M.E.R.C.", - L"M.E.R.C. Счета", - L"M.E.R.C. Регистрация", - L"M.E.R.C. Оглавление", - L"Бобби Рэй", - L"Бобби Рэй - оружие", - L"Бобби Рэй - боеприпасы", - L"Бобби Рэй - броня", - L"Бобби Рэй - разное", //misc is an abbreviation for miscellaneous - L"Бобби Рэй - вещи б/у.", - L"Бобби Рэй - почтовый заказ", - L"I.M.P.", - L"I.M.P.", - L"\"Цветы по всему миру\"", - L"\"Цветы по всему миру\" - галерея", - L"\"Цветы по всему миру\" - бланк заказа", - L"\"Цветы по всему миру\" - открытки", - L"Страховые агенты: Малеус, Инкус и Стэйпс", - L"Информация", - L"Контракт", - L"Комментарии", - L"Похоронная служба Макгилликатти", - L"", - L"Адрес не найден.", - L"%s Пресс-служба - Сводка по конфликту", - L"%s Пресс-служба - Боевые отчеты", - L"%s Пресс-служба - Последние новости", - L"%s Пресс-служба - О нас", - L"\"Бойцы Любят Тебя или Клянут\" О нас", - L"\"Бойцы Любят Тебя или Клянут\" Анализ команды", - L"\"Бойцы Любят Тебя или Клянут\" Парные сравнения", - L"\"Бойцы Любят Тебя или Клянут\" Комментарии", - L"ВОЗ", - L"ВОЗ - Заболевания в Арулько", - L"ВОЗ - Полезно знать", - L"Цербер", - L"Цербер - Найм команды", - L"Цербер - Индивидуальные контракты", - L"Militia Overview", // TODO.Translate - L"Recon Intelligence Services - Information Requests", // TODO.Translate - L"Recon Intelligence Services - Information Verification", - L"Recon Intelligence Services - About us", - L"Factory Overview", // TODO.Translate - L"Бобби Рэй - последние поступления", - L"Энциклопедия", - L"Энциклопедия - данные", - L"Брифинг-зал", - L"Брифинг-зал - данные", -}; - -STR16 pShowBookmarkString[] = -{ - L"Подсказка", - L"Щёлкните ещё раз по кнопке \"Сайты\" для открытия списка.", -}; - -STR16 pLaptopTitles[] = -{ - L"Почтовый ящик", - L"Просмотр данных", - L"Персонал", - L"Финансовый отчет", - L"Журнал", -}; - -STR16 pPersonnelDepartedStateStrings[] = -{ - //reasons why a merc has left. - L"Погиб в бою", - L"Уволен", - L"Другое", - L"Вышла замуж", - L"Контракт истёк", - L"Выход", -}; -// personnel strings appearing in the Personnel Manager on the laptop - -STR16 pPersonelTeamStrings[] = -{ - L"В команде", - L"Выбывшие", - L"Гонорар за день:", - L"Наибольший гонорар:", - L"Наименьший гонорар:", - L"Погибло в боях:", - L"Уволено:", - L"Другое:", -}; - - -STR16 pPersonnelCurrentTeamStatsStrings[] = -{ - L"Худший", - L"Среднее", - L"Лучший", -}; - - -STR16 pPersonnelTeamStatsStrings[] = -{ - L"ЗДР", - L"ПРВ", - L"ЛОВ", - L"СИЛ", - L"ЛИД", - L"ИНТ", - L"ОПТ", - L"МЕТ", - L"МЕХ", - L"ВЗР", - L"МЕД", -}; - - -// horizontal and vertical indices on the map screen - -STR16 pMapVertIndex[] = -{ - L"X", - L"A", - L"B", - L"C", - L"D", - L"E", - L"F", - L"G", - L"H", - L"I", - L"J", - L"K", - L"L", - L"M", - L"N", - L"O", - L"P", -}; - -STR16 pMapHortIndex[] = -{ - L"X", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"10", - L"11", - L"12", - L"13", - L"14", - L"15", - L"16", -}; - -STR16 pMapDepthIndex[] = -{ - L"", - L"-1", - L"-2", - L"-3", -}; - -// text that appears on the contract button - -STR16 pContractButtonString[] = -{ - L"Контракт", -}; - -// text that appears on the update panel buttons - -STR16 pUpdatePanelButtons[] = -{ - L"Далее", - L"Стоп", -}; - -// Text which appears when everyone on your team is incapacitated and incapable of battle - -CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = -{ - L"Вы потерпели поражение в этом секторе!", - L"Рептионы, не испытывая угрызений совести, пожрут всех до единого!", - L"Ваши бойцы захвачены в плен (некоторые без сознания)!", - L"Ваши бойцы захвачены в плен.", -}; - - -//Insurance Contract.c -//The text on the buttons at the bottom of the screen. - -STR16 InsContractText[] = -{ - L"Назад", - L"Дальше", - L"Да", - L"Очистить", -}; - - - -//Insurance Info -// Text on the buttons on the bottom of the screen - -STR16 InsInfoText[] = -{ - L"Назад", - L"Дальше", -}; - - - -//For use at the M.E.R.C. web site. Text relating to the player's account with MERC - -STR16 MercAccountText[] = -{ - // Text on the buttons on the bottom of the screen - L"Внести сумму", - L"В начало", - L"Номер счета:", - L"Наёмник", - L"Дней", - L"Ставка", - L"Стоимость", - L"Всего:", - L"Вы подтверждаете платеж в размере %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) - L"%s (+снаряжение)", -}; - -// Merc Account Page buttons -STR16 MercAccountPageText[] = -{ - // Text on the buttons on the bottom of the screen - L"Назад", - L"Дальше", -}; - - -//For use at the M.E.R.C. web site. Text relating a MERC mercenary - - -STR16 MercInfo[] = -{ - L"Здоровье", - L"Проворность", - L"Ловкость", - L"Сила", - L"Лидерство", - L"Интеллект", - L"Уровень опыта", - L"Меткость", - L"Механика", - L"Взрывчатка", - L"Медицина", - - L"Назад", - L"Нанять", - L"Дальше", - L"Дополнительная информация", - L"В начало", - L"Нанят", - L"Оплата", - L"в день", - L"Снаряж.:", - L"Всего:", - L"Погиб", - - L"У вас уже полная команда из наёмников.", - L"Со снаряжением?", - L"Недоступно", - L"Неоплаченные счета", - L"Информация", - L"Снаряжение", - L"Special Offer!", -}; - - - -// For use at the M.E.R.C. web site. Text relating to opening an account with MERC - -STR16 MercNoAccountText[] = -{ - //Text on the buttons at the bottom of the screen - L"Открыть счет", - L"Отмена", - L"Вы ещё не зарегистрировались. Желаете открыть счёт?", -}; - - - -// For use at the M.E.R.C. web site. MERC Homepage - -STR16 MercHomePageText[] = -{ - //Description of various parts on the MERC page - L"Спек Т. Кляйн, основатель и хозяин", - L"Открыть счёт", - L"Просмотр счёта", - L"Просмотр файлов", - // The version number on the video conferencing system that pops up when Speck is talking - L"Speck Com v3.2", - L"Денежный перевод не состоялся. Недостаточно средств на счету.", -}; - -// For use at MiGillicutty's Web Page. - -STR16 sFuneralString[] = -{ - L"Похоронное агентство Макгилликатти: скорбим вместе с семьями усопших с 1983 г.", - L"Директор по похоронам и бывший наёмник A.I.M. - Мюррей Макгилликатти \"Папаша\", специалист по части похорон.", - L"Всю жизнь Папашу сопровождали смерть и утраты, поэтому он, как никто, познал их тяжесть.", - L"Похоронное агентство Макгилликатти предлагает широкий спектр ритуальных услуг - от жилетки, в которую можно поплакать, до восстановления сильно поврежденных останков.", - L"Похоронное агентство Макгилликатти поможет вам и вашим родственникам покоиться с миром.", - - // Text for the various links available at the bottom of the page - L"ДОСТАВКА ЦВЕТОВ", - L"КОЛЛЕКЦИЯ УРН И ГРОБОВ", - L"УСЛУГИ ПО КРЕМАЦИИ", - L"ПОМОЩЬ В ПРОВЕДЕНИИ ПОХОРОН", - L"ПОХОРОННЫЕ РИТУАЛЫ", - - // The text that comes up when you click on any of the links ( except for send flowers ). - L"К сожалению, наш сайт не закончен, в связи с утратой в семье. Мы постараемся продолжить работу после прочтения завещания и выплат долгов умершего. Сайт вскоре откроется.", - L"Мы искренне сочувствуем вам в это трудное время. Заходите ещё.", -}; - -// Text for the florist Home page - -STR16 sFloristText[] = -{ - //Text on the button on the bottom of the page - - L"Галерея", - - //Address of United Florist - - L"\"Мы сбросим ваш букет где угодно!\"", - L"1-555-SCENT-ME", - L"333 NoseGay Dr,Seedy City, CA USA 90210", - L"http://www.scent-me.com", - - // detail of the florist page - - L"Мы работаем быстро и эффективно!", - L"Гарантируем доставку на следующий день практически в любой уголок мира. Есть некоторые ограничения.", - L"Гарантируем самые низкие цены в мире!", - L"Покажите нам рекламу более дешевого сервиса и получите 10 бесплатных роз.", - L"\"Крылатая Флора\", занимаемся фауной и цветами с 1981 г.", - L"Наши летчики, бывшие пилоты бомбардировщиков, сбросят ваш букет в радиусе 10 миль от заданного района. Когда угодно и сколько угодно!", - L"Позвольте нам удовлетворить ваши цветочные фантазии.", - L"Пусть Брюс, известный во всем мире садовник, сам соберет вам отличный букет в нашем саду.", - L"И запомните, если у нас нет таких цветов, мы быстро вырастим то, что вам надо!", -}; - - - -//Florist OrderForm - -STR16 sOrderFormText[] = -{ - //Text on the buttons - - L"Назад", - L"Послать", - L"Отмена", - L"Галерея", - - L"Название букета:", - L"Цена:", - L"Номер заказа:", - L"Доставить", - L"Завтра", - L"Как будете в тех краях", - L"Место доставки", - L"Дополнительно", - L"Сломать цветы ($10)", - L"Черные розы ($20)", - L"Увядший букет ($10)", - L"Фруктовый пирог (если есть) ($10)", - L"Текст поздравления:", - L"Ввиду небольшого размера открытки, постарайтесь уложиться в 75 символов.", - L"...или выберите одну из", - - L"СТАНДАРТНЫХ ОТКРЫТОК", - L"Информация о счете", - - //The text that goes beside the area where the user can enter their name - - L"Название:", -}; - - - - -//Florist Gallery.c - -STR16 sFloristGalleryText[] = -{ - //text on the buttons - - L"Назад", //abbreviation for previous - L"Дальше", //abbreviation for next - - L"Выберите букет, которые хотите послать.", - L"Примечание: Если Вам нужно послать увядший или сломанный букет - заплатите еще $10.", - - //text on the button - - L"В начало", -}; - -//Florist Cards - -STR16 sFloristCards[] = -{ - L"Выберите текст, который будет напечатан на открытке.", - L"Назад", -}; - - - -// Text for Bobby Ray's Mail Order Site - -STR16 BobbyROrderFormText[] = -{ - L"Бланк заказа", //Title of the page - L"Штк", // The number of items ordered - L"Вес (%s)", // The weight of the item - L"Название", // The name of the item - L"цена 1 вещи", // the item's weight - L"Итого", // The total price of all of items of the same type - L"Стоимость", // The sub total of all the item totals added - L"ДиУ (см. Место Доставки)", // S&H is an acronym for Shipping and Handling - L"Всего", // The grand total of all item totals + the shipping and handling - L"Место доставки", - L"Скорость доставки", // See below - L"Цена (за %s.)", // The cost to ship the items - L"Экспресс-доставка", // Gets deliverd the next day - L"2 рабочих дня", // Gets delivered in 2 days - L"Обычная доставка", // Gets delivered in 3 days - L"ОЧИСТИТЬ",//15 // Clears the order page - L"ЗАКАЗАТЬ", // Accept the order - L"Назад", // text on the button that returns to the previous page - L"В начало", // Text on the button that returns to the home page - L"* - вещи, бывшие в употреблении", // Disclaimer stating that the item is used - L"Вы не можете это оплатить.", //20 // A popup message that to warn of not enough money - L"<НЕ ВЫБРАНО>", // Gets displayed when there is no valid city selected - L"Вы действительно хотите отправить груз в %s?", // A popup that asks if the city selected is the correct one - L"Вес груза**", // Displays the weight of the package - L"** Мин. вес", // Disclaimer states that there is a minimum weight for the package - L"Заказы", -}; - -STR16 BobbyRFilter[] = -{ - // Guns - L"Пистолеты", - L"Авт.пистол.", - L"ПП", - L"Винтовки", - L"Сн.винтовки", - L"Автоматы", - L"Пулемёты", - L"Дробовики", - L"Тяжелое", - - // Ammo - L"Пистолеты", - L"Авт.пистол.", - L"ПП", - L"Винтовки", - L"Сн.винтовки", - L"Автоматы", - L"Пулемёты", - L"Дробовики", - - // Used - L"Оружие", - L"Броня", - L"Разгр.с-мы", - L"Разное", - - // Armour - L"Каски", - L"Жилеты", - L"Брюки", - L"Пластины", - - // Misc - L"Режущие", - L"Метательн.", - L"Дробящие", - L"Гранаты", - L"Бомбы", - L"Аптечки", - L"Наборы", - L"Головные", - L"Разгр.с-мы", - L"Прицелы", // Madd: new BR filters - L"Рукоят/ЛЦУ", - L"Дул.насад.", - L"Приклады", - L"Маг./спуск.", - L"Др. навеска", - L"Разное", -}; - - -// This text is used when on the various Bobby Ray Web site pages that sell items - -STR16 BobbyRText[] = -{ - L"Заказать", // Title - // instructions on how to order - L"Нажмите на товар. Левая кнопка - добавить, правая кнопка - уменьшить. После того как выберете товар, оформите заказ.", - - //Text on the buttons to go the various links - - L"Назад", - L"Оружие", - L"Патроны", - L"Броня", - L"Разное", //misc is an abbreviation for miscellaneous - L"Б/У", - L"Далее", - L"БЛАНК ЗАКАЗА", - L"В начало", - - //The following 2 lines are used on the Ammunition page. - //They are used for help text to display how many items the player's merc has - //that can use this type of ammo - - L"У вашей команды есть", - L"оружее, использующее этот тип боеприпасов", - - //The following lines provide information on the items - - L"Вес:", // Weight of all the items of the same type - L"Кал.:", // the caliber of the gun - L"Маг:", // number of rounds of ammo the Magazine can hold - L"Дист:", // The range of the gun - L"Урон:", // Damage of the weapon - L"Скор:", // Weapon's Rate Of Fire, acronym ROF - L"ОД:", // Weapon's Action Points, acronym AP - L"Оглушение:", // Weapon's Stun Damage - L"Броня:", // Armour's Protection - L"Камуф.:", // Armour's Camouflage - L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) - L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) - L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) - L"Цена:", // Cost of the item - L"Склад:", // The number of items still in the store's inventory - L"Штук в заказе:", // The number of items on order - L"Урон:", // If the item is damaged - L"Вес:", // the Weight of the item - L"Итого:", // The total cost of all items on order - L"* %% до износа", // if the item is damaged, displays the percent function of the item - - //Popup that tells the player that they can only order 10 items at a time - - L"Чёрт! В эту форму можно внести не более " ,//First part - L" позиций для одного заказа. Если хотите заказать больше (а мы надеемся, вы хотите), то заполните еще один заказ и примите наши извинения за неудобства.", - - // A popup that tells the user that they are trying to order more items then the store has in stock - - L"Извините, но данного товара нет на складе. Попробуйте заглянуть позже.", - - //A popup that tells the user that the store is temporarily sold out - - L"Извините, но данного товара пока нет на складе.", - -}; - - -// Text for Bobby Ray's Home Page - -STR16 BobbyRaysFrontText[] = -{ - //Details on the web site - - L"Здесь вы найдете лучшие и новейшие образцы оружия", - L"Мы снабдим вас всем, что нужно для победы над противником", - L"ВЕЩИ Б/У", - - //Text for the various links to the sub pages - - L"РАЗНОЕ", - L"ОРУЖИЕ", - L"БОЕПРИПАСЫ", - L"БРОНЯ", - - //Details on the web site - - L"Если у нас чего-то нет, то этого нет нигде!", - L"В разработке", -}; - - - -// Text for the AIM page. -// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page - -STR16 AimSortText[] = -{ - L"A.I.M. Состав", // Title - // Title for the way to sort - L"Сортировка:", - - // sort by... - - L"Цена", - L"Опыт", - L"Меткость", - L"Механика", - L"Взрывчатка", - L"Медицина", - L"Здоровье", - L"Проворность", - L"Ловкость", - L"Сила", - L"Лидерство", - L"Интеллект", - L"Имя", - - //Text of the links to other AIM pages - - L"Фотографии наёмников", - L"Информация о наёмниках", - L"Архив A.I.M.", - - // text to display how the entries will be sorted - - L"По возрастанию", - L"По убыванию", -}; - - -//Aim Policies.c -//The page in which the AIM policies and regulations are displayed - -STR16 AimPolicyText[] = -{ - // The text on the buttons at the bottom of the page - - L"Назад", - L"В начало", - L"Оглавление", - L"Дальше", - L"Не согласен", - L"Согласен", -}; - - - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index - -STR16 AimMemberText[] = -{ - L"Левый щелчок", - L"связаться с бойцом.", - L"Правый щелчок - ", - L"фотографии бойцов.", -}; - -//Aim Member.c -//The page in which the players hires AIM mercenaries - -STR16 CharacterInfo[] = -{ - // The various attributes of the merc - - L"Здоровье", - L"Проворность", - L"Ловкость", - L"Сила", - L"Лидерство", - L"Интеллект", - L"Уровень опыта", - L"Меткость", - L"Механика", - L"Взрывчатка", - L"Медицина", - - // the contract expenses' area - - L"Гонорар", - L"Срок", - L"1 день", - L"7 дней", - L"14 дней", - - // text for the buttons that either go to the previous merc, - // start talking to the merc, or go to the next merc - - L"<<", - L"Связаться", - L">>", - - L"Дополнительная информация", // Title for the additional info for the merc's bio - L"Действующий состав", // Title of the page - L"Снаряжение:", // Displays the optional gear cost - L"Снаряж.", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's - L"Стоимость мед. депозита", // If the merc required a medical deposit, this is displayed - L"Набор 1", // Text on Starting Gear Selection Button 1 - L"Набор 2", // Text on Starting Gear Selection Button 2 - L"Набор 3", // Text on Starting Gear Selection Button 3 - L"Набор 4", // Text on Starting Gear Selection Button 4 - L"Набор 5", // Text on Starting Gear Selection Button 5 - L"Mission Fee", // For UB fixed price contracts -}; - - -//Aim Member.c -//The page in which the player's hires AIM mercenaries - -//The following text is used with the video conference popup - -STR16 VideoConfercingText[] = -{ - L"Сумма контракта:", //Title beside the cost of hiring the merc - - //Text on the buttons to select the length of time the merc can be hired - - L"1 день", - L"7 дней", - L"14 дней", - - //Text on the buttons to determine if you want the merc to come with the equipment - - L"Без снаряжения", - L"Со снаряжением", - - // Text on the Buttons - - L"ОПЛАТИТЬ", // to actually hire the merc - L"ОТМЕНА", // go back to the previous menu - L"НАНЯТЬ", // go to menu in which you can hire the merc - L"ОТБОЙ", // stops talking with the merc - L"ЗАКРЫТЬ", - L"СООБЩЕНИЕ", // if the merc is not there, you can leave a message - - //Text on the top of the video conference popup - - L"Видеоконференция с", - L"Подключение. . .", - - L"+ страховка" // Displays if you are hiring the merc with the medical deposit -}; - - - -//Aim Member.c -//The page in which the player hires AIM mercenaries - -// The text that pops up when you select the TRANSFER FUNDS button - -STR16 AimPopUpText[] = -{ - L"ПРОИЗВЕДЕН ЭЛЕКТРОННЫЙ ПЛАТЕЖ", // You hired the merc - L"НЕЛЬЗЯ ПЕРЕВЕСТИ СРЕДСТВА", // Player doesn't have enough money, message 1 - L"НЕ ХВАТАЕТ СРЕДСТВ", // Player doesn't have enough money, message 2 - - // if the merc is not available, one of the following is displayed over the merc's face - - L"На задании", - L"Пожалуйста, оставьте сообщение", - L"Скончался", - - //If you try to hire more mercs than game can support - - L"У вас уже полная команда из наёмников.", - - L"Автоответчик", - L"Сообщение оставлено на автоответчике", -}; - - -//AIM Link.c - -STR16 AimLinkText[] = -{ - L"A.I.M. Ссылки", //The title of the AIM links page -}; - - - -//Aim History - -// This page displays the history of AIM - -STR16 AimHistoryText[] = -{ - L"A.I.M. История", //Title - - // Text on the buttons at the bottom of the page - - L"Назад", - L"В начало", - L"A.I.M. Галерея", - L"Дальше", -}; - - -//Aim Mug Shot Index - -//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. - -STR16 AimFiText[] = -{ - // displays the way in which the mercs were sorted - - L"Цена", - L"Опыт", - L"Меткость", - L"Механика", - L"Взрывчатка", - L"Медицина", - L"Здоровье", - L"Проворность", - L"Ловкость", - L"Сила", - L"Лидерство", - L"Интеллект", - L"Имя", - - // The title of the page, the above text gets added at the end of this text - - L"Состав A.I.M. По возрастанию, критерий - %s", - L"Состав A.I.M. По убыванию, критерий - %s", - - // Instructions to the players on what to do - - L"Левый щелчок", - L"Выбрать наёмника", - L"Правый щелчок", - L"Критерий сортировки", - - // Gets displayed on top of the merc's portrait if they are... - - L"Выбыл", - L"Скончался", - L"На задании", -}; - - - -//AimArchives. -// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM - -STR16 AimAlumniText[] = -{ - // Text of the buttons - - L"СТР. 1", - L"СТР. 2", - L"СТР. 3", - - L"A.I.M. Галерея", // Title of the page - - L"ОК", // Stops displaying information on selected merc - L"След. стр.", -}; - - - - - - -//AIM Home Page - -STR16 AimScreenText[] = -{ - // AIM disclaimers - - L"A.I.M. и логотип A.I.M. - зарегистрированные во многих странах торговые марки.", - L"Так что и не думай подражать нам.", - L"(с) 1998-1999 A.I.M., Ltd. Все права защищены.", - - //Text for an advertisement that gets displayed on the AIM page - - L"\"Цветы по всему миру\"", - L"\"Мы сбросим ваш букет где угодно!\"", - L"Сделай как надо", - L"...в первый раз", - L"Если у нас нет такого ствола, то он вам и не нужен.", -}; - - -//Aim Home Page - -STR16 AimBottomMenuText[] = -{ - //Text for the links at the bottom of all AIM pages - L"В начало", - L"Наёмники", - L"Архив", - L"Правила", - L"Информация", - L"Ссылки", -}; - - - -//ShopKeeper Interface -// The shopkeeper interface is displayed when the merc wants to interact with -// the various store clerks scattered through out the game. - -STR16 SKI_Text[ ] = -{ - L"ИМЕЮЩИЕСЯ ТОВАРЫ", //Header for the merchandise available - L"СТР.", //The current store inventory page being displayed - L"ОБЩАЯ ЦЕНА", //The total cost of the the items in the Dealer inventory area - L"ОБЩАЯ ЦЕННОСТЬ", //The total value of items player wishes to sell - L"ОЦЕНКА", //Button text for dealer to evaluate items the player wants to sell - L"ПЕРЕВОД", //Button text which completes the deal. Makes the transaction. - L"УЙТИ", //Text for the button which will leave the shopkeeper interface. - L"ЦЕНА РЕМОНТА", //The amount the dealer will charge to repair the merc's goods - L"1 ЧАС", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"%d ЧАСОВ", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired - L"ИСПРАВНО", // Text appearing over an item that has just been repaired by a NPC repairman dealer - L"Вам уже некуда класть вещи.", //Message box that tells the user there is no more room to put there stuff - L"%d МИНУТ", // The text underneath the inventory slot when an item is given to the dealer to be repaired - L"Выбросить предмет на землю.", - L"БЮДЖЕТ", -}; - -//ShopKeeper Interface -//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine - -STR16 SkiAtmText[] = -{ - //Text on buttons on the banking machine, displayed at the bottom of the page - L"0", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"7", - L"8", - L"9", - L"OK", // Transfer the money - L"Взять", //Take money from the player - L"Дать", //Give money to the player - L"Отмена", //Cancel the transfer - L"Очистить", //Clear the money display -}; - - -//Shopkeeper Interface -STR16 gzSkiAtmText[] = -{ - - // Text on the bank machine panel that.... - L"Выберите тип", //tells the user to select either to give or take from the merc - L"Введите сумму", //Enter the amount to transfer - L"Перевести деньги бойцу", //Giving money to the merc - L"Забрать деньги у бойца", //Taking money from the merc - L"Недостаточно средств", //Not enough money to transfer - L"Баланс", //Display the amount of money the player currently has -}; - - -STR16 SkiMessageBoxText[] = -{ - L"Желаете снять со счета %s, чтобы покрыть разницу?", - L"Недостаточно средств. Не хватает %s", - L"Желаете снять со счета %s, чтобы оплатить полную стоимость?", - L"Попросить торговца сделать перевод", - L"Попросить торговца починить выбранные предметы", - L"Закончить беседу", - L"Текущий баланс", - - L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate - L"Do you want to transfer %s Intel to cover the cost?", -}; - - -//OptionScreen.c - -STR16 zOptionsText[] = -{ - //button Text - L"Сохранить", - L"Загрузить", - L"Выход", - L">>", - L"<<", - L"Готово", - L"1.13 Features", - L"New in 1.13", - L"Options", - - //Text above the slider bars - L"Звуки", - L"Речь", - L"Музыка", - - //Confirmation pop when the user selects.. - L"Выйти из игры и вернуться в главное меню?", - - L"Необходимо выбрать или \"Речь\", или \"Субтитры\"", -}; - -STR16 z113FeaturesScreenText[] = -{ - L"1.13 FEATURE TOGGLES", - L"Changing these settings during a campaign will affect your experience.", - L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", -}; - -STR16 z113FeaturesToggleText[] = -{ - L"Use These Overrides", - L"New Chance to Hit", - L"Enemies Drop All", - L"Enemies Drop All (Damaged)", - L"Suppression Fire", - L"Drassen Counterattack", - L"City Counterattacks", - L"Multiple Counterattacks", - L"Intel", - L"Prisoners", - L"Mines Require Workers", - L"Enemy Ambushes", - L"Enemy Assassins", - L"Enemy Roles", - L"Enemy Role: Medic", - L"Enemy Role: Officer", - L"Enemy Role: General", - L"Kerberus", - L"Mercs Need Food", - L"Disease", - L"Dynamic Opinions", - L"Dynamic Dialogue", - L"Arulco Strategic Division", - L"ASD: Helicopters", - L"Enemy Vehicles Can Move", - L"Zombies", - L"Bloodcat Raids", - L"Bandit Raids", - L"Zombie Raids", - L"Militia Volunteer Pool", - L"Tactical Militia Command", - L"Strategic Militia Command", - L"Militia Uses Sector Equipment", - L"Militia Requires Resources", - L"Enhanced Close Combat", - L"Improved Interrupt System", - L"Weapon Overheating", - L"Weather: Rain", - L"Weather: Lightning", - L"Weather: Sandstorms", - L"Weather: Snow", - L"Mini Events", - L"Arulco Rebel Command", - L"Strategic Transport Groups", -}; - -STR16 z113FeaturesHelpText[] = -{ - L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", - L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", - L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", - L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", - L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", - L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", - L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", - L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", - L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", - L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", - L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", - L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", - L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", - L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", - L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", - L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", - L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", - L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", - L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", - L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", - L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", - L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", - L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", - L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", - L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", - L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", - L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", - L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", - L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", - L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", - L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", - L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", - L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", - L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", - L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", - L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", - L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", - L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", - L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", - L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", - L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", - L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", - L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", -}; - -STR16 z113FeaturesPanelText[] = -{ - L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", - L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", - L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", - L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", - L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", - L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", - L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", - L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", - L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", - L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", - L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", - L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", - L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", - L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", - L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", - L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", - L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", - L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", - L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", - L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", - L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", - L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", - L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", - L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", - L"Zombies rise from corpses!", - L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", - L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", - L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", - L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", - L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", - L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", - L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", - L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", - L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", - L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", - L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", - L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", - L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", - L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", - L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", - L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", - L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", - L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", -}; - - -//SaveLoadScreen -STR16 zSaveLoadText[] = -{ - L"Сохранить", - L"Загрузить", - L"Отмена", - L"Сохранение выбрано", - L"Загрузка выбрана", - - L"Игра успешно сохранена", - L"ОШИБКА сохранения игры!", - L"Игра успешно загружена", - L"ОШИБКА загрузки игры!", - - L"Это сохранение было сделано иной версией игры. Скорее всего, загрузить его не удастся. Все равно продолжить?", - - L"Возможно, файлы сохранений повреждены. Желаете их удалить?", - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Версия сохранений игры была изменена. Просим сообщить, если это изменение привело к какой-либо ошибке. Пытаемся загрузить?", -#else - L"Попытка загрузить сохранение игры устаревшей версии. Автоматически обновить его и загрузить?", -#endif - - //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one - //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are - //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. -#ifdef JA2BETAVERSION - L"Версия игры и файлов сохранений была изменена. Просим сообщить, если это изменение привело к какой-либо ошибке. Пытаемся загрузить?", -#else - L"Попытка загрузить сохранение игры устаревшей версии. Автоматически обновить его и загрузить?", -#endif - - L"Вы решили записать игру на существующее сохранение #%d?", - L"Хотите загрузить игру из сохранения #", - - - //The first %d is a number that contains the amount of free space on the users hard drive, - //the second is the recommended amount of free space. - L"У вас заканчивается свободное место на жестком диске. Сейчас свободно %d Мб, а требуется %d Мб свободного места для JA.", - - L"Сохранение", //When saving a game, a message box with this string appears on the screen - - L"Нормальный", - L"Огромный", - L"нет", - L"да", - - L"Элементы фантастики", - L"Платиновая серия", - - L"Ассортимент Бобби Рэя", - L"Нормальный", - L"Большой", - L"Огромный", - L"Всё и сразу", - - L"Сохраненная игра была начата в режиме \"Нового Инвентаря\", этот режим не работает при разрешении экрана 640х480. Измените разрешение и загрузите игру снова.", - L"Загрузка игры, начатой в режиме \"Нового Инвентаря\", невозможна. Установите в Ja2.ini игровую папку 'Data-1.13' и повторите попытку.", - - L"Размер отряда, заданный в сохраненной игре, не поддерживается текущим разрешением. Увеличьте разрешение экрана и попробуйте снова.", - L"Количество товара у Бобби Рэя", -}; - - - -//MapScreen -STR16 zMarksMapScreenText[] = -{ - L"Уровень карты", - L"У вас нет ополченцев. Чтобы они появились, вам нужно склонить на свою сторону горожан.", - L"Доход в сутки", - L"Наёмник застрахован", - L"%s не нуждается в отдыхе.", - L"%s на марше и не может лечь спать.", - L"%s валится с ног от усталости, погоди немного.", - L"%s ведет машину.", - L"Отряд не может двигаться, когда один из наёмников спит.", - - // stuff for contracts - L"Хотя у вас и есть деньги на подписание контракта, но их не хватит, чтобы оплатить страховку наёмника.", - L"%s: продление страховки составит %s за %d дополнительных дней. Желаете заплатить?", - L"Предметы в секторе", - L"Жизнь наёмника застрахована.", - - // other items - L"Медики", // people acting a field medics and bandaging wounded mercs - L"Раненые", // people who are being bandaged by a medic - L"Готово", // Continue on with the game after autobandage is complete - L"Стоп", // Stop autobandaging of patients by medics now - L"Извините, этот пункт недоступен в демонстрационной версии.", // informs player this option/button has been disabled in the demo - L"%s: нет инструментов.", - L"%s: нет аптечки.", - L"Здесь недостаточно добровольцев для тренировки.", - L"В %s максимальное количество ополченцев.", - L"У наёмника ограниченный контракт.", - L"Контракт наёмника не застрахован", - L"Стратегическая карта", - - // Flugente: disease texts describing what a map view does - L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate - - // Flugente: weather texts describing what a map view does - L"Здесь паказана актуальная погода. Без цвета=солнечно, зеленый=дождь, Синий=Гроза, Оранжевый=песчаная буря, Белый=снег.", - - // Flugente: describe what intel map view does - L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate -}; - - -STR16 pLandMarkInSectorString[] = -{ - L"Отряд %d заметил кого-то в секторе %s.", - L"Отряд %s заметил кого-то в секторе %s.", -}; - -// confirm the player wants to pay X dollars to build a militia force in town -STR16 pMilitiaConfirmStrings[] = -{ - L"Тренировка отряда ополченцев будет стоить $", // telling player how much it will cost - L"Подтвердить платеж?", // asking player if they wish to pay the amount requested - L"Вы не можете себе этого позволить.", // telling the player they can't afford to train this town - L"Продолжить тренировку в %s (%s %d)?", // continue training this town? - - L"Цена $", // the cost in dollars to train militia - L"( Д/Н )", // abbreviated yes/no - L"", // unused - L"Тренировка ополчения в секторе %d будет стоить $%d. %s", // cost to train sveral sectors at once - - L"У вас нет $%d, чтобы приступить к тренировке ополчения.", - L"%s: Требуется не менее %d процентов лояльности, чтобы продолжить тренировку ополчения.", - L"Больше вы не можете тренировать ополчение в %s.", - L"освободить больше городских секторов", - - L"освободить новые городские сектора", - L"освободить больше городов", - L"восстановить потерянные прогресс", - L"продвинуться дальше", - - L"нанять больше повстанцев", -}; - -//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel -STR16 gzMoneyWithdrawMessageText[] = -{ - L"За один раз вы можете снять со счета не более $20 000.", - L"Вы решили положить %s на свой счет?", -}; - -STR16 gzCopyrightText[] = -{ - L"Авторские права (C) 1999 Sir-tech Canada Ltd. Все права защищены.", -}; - -//option Text -STR16 zOptionsToggleText[] = -{ - L"Речь", - L"Молчаливые герои", - L"Субтитры", - L"Пауза в диалогах", - L"Анимированный дым", - L"Кровь и жестокость", - L"Не трогать мышь!", - L"Старый метод выбора", - L"Показать путь движения", - L"Показать промахи", - L"Игра в реальном времени", - L"Подтверждение сна/подъема", - L"Метрическая система", - L"Выделите наемников", - L"Курсор на бойцов", - L"Курсор на дверь", - L"Мерцание вещей", - L"Показать кроны деревьев", - L"Скрывать мешающие кроны", - L"Показать каркасы", - L"Трехмерный курсор", - L"Показать шанс попадания", - L"Курсор очереди для гранат", - L"Злорадные враги", //Allow Enemy Taunts - L"Стрельба гранатой навесом", - L"Красться в реальном времени", - L"Выбор пробелом след. отряда", - L"Тени предметов в инвентаре", - L"Дальность оружия в тайлах", - L"Одиночный трассер", - L"Шум дождя", - L"Вороны", - L"Подсказки над солдатами", //Show Soldier Tooltips - L"Автосохранение каждый ход", - L"Молчаливый пилот вертолёта", - L"Подробное описание предметов", //Enhanced Description Box - L"Только пошаговый режим", // add forced turn mode - L"Новая расцветка стратег. карты", //Alternate Strategy-Map Colors //Change color scheme of Strategic Map - L"Заметная летящая пуля", // Show alternate bullet graphics (tracers) - L"Новая анимация экипировки", - L"Показать ранг бойца", // shows mercs ranks - L"Показать снаряжение на голове", //Show Face gear graphics - L"Показать иконки снаряжения", - L"Отключить меняющийся курсор", // Disable Cursor Swap - L"Тихая тренировка", // Madd: mercs don't say quotes while training - L"Тихий ремонт", // Madd: mercs don't say quotes while repairing - L"Тихое лечение", // Madd: mercs don't say quotes while doctoring - L"Быстрый ход компьютера", // Automatic fast forward through AI turns - L"Зомби в игре!", // Flugente Zombies - L"Меню в инвентаре бойца", // the_bob : enable popups for picking items from sector inv - L"Отметить оставшихся врагов", - L"Показать содержимое разгрузки", - L"Инвертировать колесо мыши", - L"Боевой порядок", // when multiple mercs are selected, they will try to keep their relative distances - L"Показывать расположение", // show locator on last known enemy location - L"Start at maximum aim", - L"Alternative pathfinding", - L"--Читерские настройки--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Ускорить доставку Бобби Рэя", // force all pending Bobby Ray shipments - L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END - L"--Настройки отладочной версии--", // an example options screen options header (pure text) - L"Сообщать координаты промахов", //Report Miss Offsets // Screen messages showing amount and direction of shot deviation. - L"Сброс всех игровых настроек", // failsafe show/hide option to reset all options - L"В самом деле хотите этого?", // a do once and reset self option (button like effect) - L"Отладочные настройки везде", //Debug Options in other builds // allow debugging in release or mapeditor - L"Показать Отладочные настройки", //DEBUG Render Option group // an example option that will show/hide other options - L"Отображать Mouse Regions", //Render Mouse Regions // an example of a DEBUG build option - L"-----------------", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"THE_LAST_OPTION", -}; - -//This is the help text associated with the above toggles. -STR16 zOptionsScreenHelpText[] = -{ - // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. - - //speech - L"Включить или выключить\nголос во время диалогов.", - - //Mute Confirmation - L"Включить или выключить речевое\nподтверждение выполнения приказов.", - - //Subtitles - L"Включить или выключить отображение\nсубтитров во время диалогов.", - - //Key to advance speech - L"Если субтитры включены, выберите этот пункт,\nчтобы успеть прочитать диалоги персонажей.", - - //Toggle smoke animation - L"Отключите анимацию дыма,\nесли он замедляет игру.", - - //Blood n Gore - L"Отключите этот пункт,\nесли боитесь крови.", - - //Never move my mouse - L"Если выключено, то курсор\nавтоматически перемещается на кнопку\nвсплывающего окна диалога.", - - //Old selection method - L"Если включено, то будет использоваться\nстарый метод выбора бойцов\n(для тех, кто привык к управлению предыдущих частей Jagged Alliance).", - - //Show movement path - L"Если включено, то в режиме реального времени\nбудет отображаться путь передвижения\n(если выключено, нажмите |S|h|i|f|t, чтобы увидеть путь).", - - //show misses - L"Если включено, то камера будет отслеживать\nтраекторию пуль, прошедших мимо цели.", - - //Real Time Confirmation - L"Если включено, то для приказа на передвижение\nбудет требоваться дополнительный\nподтверждающий щелчок мыши на месте назначения.", - - //Sleep/Wake notification - L"Если включено, то вы получите предупреждение,\nкогда наёмники лягут спать или проснутся.", - - //Use the metric system - L"Если включено, то используется метрическая система мер,\nиначе будет британская.", - - //Highlight Mercs - L"При включении выделяет наемника (не виден врагам).\nПереключиться в игре с помощью (|G)", - - //Smart cursor - L"Если включено, то перемещение курсора возле наёмника\nавтоматически выбирает его.", - - //snap cursor to the door - L"Если включено, то перемещение курсора возле двери\nавтоматически помещает его на дверь.", - - //glow items - L"Если включено, то все предметы подсвечиваются (|C|t|r|l+|A|l|t+|I).", - - //toggle tree tops - L"Если включено, то отображаются кроны деревьев (|T).", - - //smart tree tops - L"Если включено, кроны деревьев не будут отображаться около видимых солдат и около курсора.", - - //toggle wireframe - L"Если включено, то у препятствий\nдополнительно показывается каркас (|C|t|r|l+|A|l|t+|W).", - - L"Если включено, то курсор передвижения\nотображается в 3D (|H|o|m|e).", - - // Options for 1.13 - L"Если включено, шанс попадания\nпоказывается над курсором.", - L"Если включено, очередь из гранатомёта\nиспользует курсор стрельбы очередями.", - L"Если включено, враг иногда будет\nкомментировать свои действия.", - L"Если включено, гранатомёты выстреливают\nзаряд под большим углом к горизонту (|A|l|t+|Q).", - L"Если включено, игра не переходит\nв пошаговый режим при обнаружении\nпротивника (если враг вас не видит). \nРучной вход в пошаговый режим - |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", - L"Если включено, |П|р|о|б|е|л выделяет следующий отряд.", - L"Если включено, показываются\nтени предметов в инвентаре.", - L"Если включено, дальность оружия\nуказывается в игровых секторах.", - L"Если включено, трассирующий эффект\nсоздаётся и одиночным выстрелом.", - L"Если включено, дождь будет\nсопровождаться звуком.", - L"Если включено, вороны присутствуют в игре.", - L"Если включено, при нажатии кнопки |A|l|t\nи наведении курсора мыши на вражеского солдата\nбудет показана дополнительная информация.", - L"Если включено, игра будет автоматически\nсохраняться после каждого хода игрока.", - L"Если включено, Небесный Всадник\nне будет вас раздражать болтливостью.", - L"Если включено, будет задействовано\nподробное описание предметов.", - L"Если включено и в секторе присутствует враг,\nпошаговый режим будет задействован\nдо полной зачистки сектора (|C|t|r|l+|T).", - L"Если включено, необследованные сектора\nна стратегической карте будут чёрно-белыми.", - L"Если включено, летящая пуля\nбудет более заметной.", - L"Если включено, анимация наемника будет отображать используемое оружие и экипировку.", - L"Если включено, на стратегическом экране\nбудет подписан ранг бойца перед его именем.", - L"Если включено, на портрете наёмника\nбудет отображено надетое головное снаряжение.", - L"Если включено, в правом нижнем углу\nна портрете наёмника будут отображены иконки\nнадетого головного снаряжения.", - L"Если включено, курсор не будет меняться,\nпоказывая все возможные действия.\nЧтобы поменяться местами с человеком рядом, нажмите |X.", - L"Если включено, бойцы не будут\nсообщать о повышении своих умений.", - L"Если включено, бойцы не будут\nсообщать о статусе ремонта.", - L"Если включено, бойцы не будут\nсообщать о статусе лечения.", - L"Если включено, ожидание,\nпока сделают ход противник,\nгражданские и другие существа,\nбудет значительно меньше.", - - L"Если включено, убитые враги\nбудут превращаться в зомби. Веселитесь!", - L"Если включено, при просмотре\nпредметов сектора в инвентаре бойца\nбудет доступно меню по нажатии\nлевой кнопки на пустой карман.", - L"Если включено, указывается примерное\nположение последних врагов в секторе.", - L"Если включено, показывает содержимое разгрузки,\nиначе - обычный интерфейс новой системы навески.", - L"Если включено, инвертирует направление\nпрокрутки колеса мыши.", - L"Если выбрано несколько наёмников,\nони будут пытаться сохранять взаимное расположение\nи дистанцию при движении\n(нажмите |C|t|r|l+|A|l|t+|G для переключения или |S|h|i|f|t + клик для движения).", - L"Если включено, показывает известное расположение противника\n(нажмите |S|h|i|f|t, чтобы показать источник шума).", - L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", - L"When ON, Use A* pathfinding algorithm, instead of original", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", - L"Выберите этот пункт,\nчтобы груз Бобби Рэя прибыл немедленно.", - L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) - L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", - L"Если включить, повреждённые игровые настройки\nбудут восстановлены.", // failsafe show/hide option to reset all options - L"Отметьте строку для подтверждения сброса игровых настроек.", // a do once and reset self option (button like effect) - L"Если включено, отладочные настройки\nбудут доступны как в игре,\nтак и в редакторе карт.", // Allows debug options in release or mapeditor builds - L"Если включено, отладочные настройки \nбудут показаны в общем списке.", //Toggle to display debugging render options - L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option - L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) - - // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) - L"Последняя строка в списке настроек.", -}; - - -STR16 gzGIOScreenText[] = -{ - L"УСТАНОВКИ НАЧАЛА ИГРЫ", -#ifdef JA2UB - L"Случайная история Мануэля", - L"да", - L"нет", -#else - L"Элементы фантастики", - L"нет", - L"есть", -#endif - L"Платиновая серия", - L"Ассортимент оружия в игре", - L"всё доступное", - L"чуть поменьше", - L"Уровень сложности", - L"лёгкий", //новичок - L"средний", //опытный - L"трудный", //эксперт - L"БЕЗУМНЫЙ", //помешанный - L"Начать игру", - L"Главное меню", - L"Возможность сохранения", - L"в любое время", - L"между боями", //Iron Man - L"Отключено в демо-версии", - L"Ассортимент Бобби Рэя", - L"хороший", - L"большой", - L"огромный", - L"всё и сразу", - L"Инвентарь / Навеска", - L"NOT USED", - L"NOT USED", - L"Загрузить", - L"УСТАНОВКИ ИГРЫ (актуальны только настройки игры сервера)", - // Added by SANDRO - L"Умения персонажа", - L"старые", - L"новые", - L"Создаваемых персонажей", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - L"Враг оставляет всё снаряжение", - L"нет", - L"да", -#ifdef JA2UB - L"Текс и Джон", - L"Случайно", - L"Оба сразу", -#else - L"Число террористов", - L"случайное", - L"все сразу", -#endif - L"Спрятанное оружие секторов", //Secret Weapon Caches - L"выборочно", - L"всё возможное", - L"Скорость обновления вооружения", //Progress Speed of Item Choices - L"очень медленно", - L"медленно", - L"умеренно", - L"быстро", - L"очень быстро", - - L"старый / старая", - L"новый / старая", - L"новый / новая", - - // Squad Size - L"Бойцов в отряде", - L"6", - L"8", - L"10", - //L"Faster Bobby Ray Shipments", - L"Манипуляции с инвентарём за ОД", - - L"Новая система прицеливания", //New Chance to Hit System - L"Новая система перехвата хода", - L"Биография наёмников", - L"Игра с едой", - L"Количество товара у Бобби Рэя", - - // anv: extra iron man modes - L"между перестрелкой", //Soft Iron Man - L"один раз в день", //Extreme Iron Man -}; - -STR16 gzMPJScreenText[] = -{ - L"СЕТЕВАЯ ИГРА", //MULTIPLAYER - L"Присоединиться", //Join - L"Создать игру", //Host - L"Отмена", //Cancel - L"Обновить", //Refresh - L"Имя игрока", //Player Name - L"IP сервера", //Server IP - L"Порт", //Port - L"Имя сервера", //Server Name - L"# Plrs", - L"Версия", //Version - L"Тип игры", //Game Type - L"Пинг", //Ping - L"Впишите имя игрока.", - L"Впишите корректный IP адрес. (пример 84.114.195.239).", - L"Впишите корректный порт сервера (используйте диапазон от 1 до 65535).", -}; - -STR16 gzMPJHelpText[] = -{ - L"Новых игроков можно найти здесь: http://webchat.quakenet.org/?channels=ja2-multiplayer", - L"Можно нажать 'у', чтобы открыть окно чата внутриигровой, после того как вы были подключены к серверу.", // TODO.Translate - - L"СОЗДАТЬ ИГРУ", - L"Введите '127.0.0.1' в поле IP и выберите номер порта начиная с 60000.", //Enter '127.0.0.1' for the IP and the Port number should be greater than 60000. - L"Убедитесь что выбранный порт (UDP, TCP) не блокируется роутером. Подробнее читайте здесь: http://portforward.com", - L"Так же сообщите по IRC или ICQ другим игрокам ваш внешний IP адрес и порт (http://www.whatismyip.com).", - L"Жмите на кнопку 'Создать игру' для запуска сервера сетевой игры.", - - L"ПРИСОЕДИНИТЬСЯ К ИГРЕ", - L"Создавший игру должен был вам сообщить (по IRC, ICQ и т.д.) свой внешний IP адрес и порт.", - L"Впишите эти данные в поле IP адреса и номер порта.", - L"Жмите 'Присоединиться' чтобы подключиться к уже созданной сетевой игре.", -}; - -STR16 gzMPHScreenText[] = -{ - L"СТАРТОВЫЕ УСТАНОВКИ СЕРВЕРА", //HOST GAME - L"Начать игру", //Start - L"Главное меню", //Cancel - L"Имя сервера", //Server Name - L"Тип игры", //Game Type - L"Deathmatch", - L"Team-Deathmatch", - L"Co-Operative", - L"Количество игроков", //Max Players - L"Солдат в отряде", //Maximum Mercs - L"Выбор бойцов", - L"Найм бойцов", - L"Нанят игроком", //Hired by Player - L"Деньги при старте", //Starting Cash - L"Можно нанимать тех же бойцов", //Allow Hiring Same Merc - L"Сообщения о нанятых бойцах", //Report Hired Mercs - L"Бобби Рэй", //Bobby Rays - L"Место высадки", //Sector Starting Edge - L"Впишите имя сервера", //You must enter a server name - L"", - L"", - L"Время суток", //Starting Time - L"", - L"", - L"Убойность оружия", //Weapon Damage - L"", - L"Время хода", //Timed Turns - L"", - L"Гражданские в CO-OP", //Enable Civilians in CO-OP - L"", - L"Максимум врагов в CO-OP", //Maximum Enemies in CO-OP - L"Синхронизация игровых файлов", //Synchronize Game Directory - L"MP Sync. Directory", - L"Укажите директорию для синхронизации передаваемых файлов.", - L"(Для разделения директорий используйте '/' вместо '\\'.)", - L"Указанная директория для синхронизации не существует.", - L"1", - L"2", - L"3", - L"4", - L"5", - L"6", - // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP - L"да", - L"нет", - // Starting Time - L"утро", - L"день", - L"ночь", - // Starting Cash - L"мало", - L"средне", - L"много", - L"неограничено", - // Time Turns - L"не ограничено", //Never - L"медленно", //Slow - L"умеренно", //Medium - L"быстро", //Fast - // Weapon Damage - L"очень малая", //Very low - L"небольшая", //Low - L"хорошая", //Normal - // Merc Hire - L"случайно", - L"самостоятельно", //Normal - // Sector Edge - L"случайно", - L"выборочно", - // Bobby Ray / Hire same merc - L"нет", - L"есть", -}; - -STR16 pDeliveryLocationStrings[] = -{ - L"Остин", //Austin, Texas, USA - L"Багдад", //Baghdad, Iraq (Suddam Hussein's home) - L"Драссен", //The main place in JA2 that you can receive items. The other towns are dummy names... - L"Гонконг", //Hong Kong, Hong Kong - L"Бейрут", //Beirut, Lebanon (Middle East) - L"Лондон", //London, England - L"Лос-Анджелес",//Los Angeles, California, USA (SW corner of USA) - L"Медуна", //Meduna -- the other airport in JA2 that you can receive items. - L"Метавира", //The island of Metavira was the fictional location used by JA1 - L"Майами", //Miami, Florida, USA (SE corner of USA) - L"Москва", //Moscow, USSR - L"Нью-Йорк", //New York, New York, USA - L"Оттава", //Ottawa, Ontario, Canada -- where JA2 was made! - L"Париж", //Paris, France - L"Триполи", //Tripoli, Libya (eastern Mediterranean) - L"Токио", //Tokyo, Japan - L"Ванкувер", //Vancouver, British Columbia, Canada (west coast near US border) -}; - -STR16 pSkillAtZeroWarning[] = -{ //This string is used in the IMP character generation. It is possible to select 0 ability - //in a skill meaning you can't use it. This text is confirmation to the player. - L"Вы уверены? Значение ноль означает отсутствие этого навыка вообще.", -}; - -STR16 pIMPBeginScreenStrings[] = -{ - L"( до 8 символов )", -}; - -STR16 pIMPFinishButtonText[ 1 ]= -{ - L"Анализ", -}; - -STR16 pIMPFinishStrings[ ]= -{ - L"Спасибо, %s", //%s is the name of the merc -}; - -// the strings for imp voices screen -STR16 pIMPVoicesStrings[] = -{ - L"Голос", -}; - -STR16 pDepartedMercPortraitStrings[ ]= -{ - L"Погиб в бою", - L"Уволен", - L"Другое", -}; - -// title for program -STR16 pPersTitleText[] = -{ - L"Досье", -}; - -// paused game strings -STR16 pPausedGameText[] = -{ - L"Пауза в игре", - L"Продолжить (|P|a|u|s|e)", - L"Пауза (|P|a|u|s|e)", -}; - - -STR16 pMessageStrings[] = -{ - L"Выйти из игры?", - L"Да", - L"ДА", - L"НЕТ", - L"ОТМЕНА", - L"НАНЯТЬ", - L"СОЛГАТЬ", - L"Нет описания.", //Save slots that don't have a description. - L"Игра сохранена.", - L"Игра сохранена.", - L"QuickSave", //10 The name of the quicksave file (filename, text reference) - L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. - L"sav", //The 3 character dos extension (represents sav) - L"..\\SavedGames", //The name of the directory where games are saved. - L"День", - L"Наёмн", - L"Свободное место", //An empty save game slot - L"Демо", //Demo of JA2 - L"Ловля Багов", //State of development of a project (JA2) that is a debug build - L"Релиз", //Release build for JA2 - L"пвм", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. - L"мин", //Abbreviation for minute. - L"м", //One character abbreviation for meter (metric distance measurement unit). - L"пуль", //Abbreviation for rounds (# of bullets) - L"кг", //Abbreviation for kilogram (metric weight measurement unit) - L"фунт", //Abbreviation for pounds (Imperial weight measurement unit) - L"В начало", //Home as in homepage on the internet. - L"USD", //Abbreviation to US dollars - L"н/д", //Lowercase acronym for not applicable. - L"Посмотрим, что происходит тем временем в другом месте", //Meanwhile - L"%s: прибыл в сектор %s%s",//30 Name/Squad has arrived in sector A9. Order must not change without notifying -//SirTech - L"Версия", - L"Пустая ячейка быстрого сохр.", - L"Эта ячейка зарезервирована для Быстрого Сохранения, которое можно провести с тактической карты или с глобальной карты, нажав клавиши ALT+S.", - L"Открытая", - L"Закрытая", - L"У вас заканчивается свободное дисковое пространство. На диске есть всего %sMб свободного места, а для Jagged Alliance 2 требуется %s Mб.", - L"Из A.I.M. нанят боец %s.", - L"%s ловит %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. - L"%s has taken %s.", // TODO.Translate - L"%s: отсутствуют навыки в медицине.",//40 'Merc name' has no medical skill. - - //CDRom errors (such as ejecting CD while attempting to read the CD) - L"Нарушена целостность программы.", - L"ОШИБКА: CD-ROM открыт.", - - //When firing heavier weapons in close quarters, you may not have enough room to do so. - L"Нет места, чтобы вести отсюда огонь.", - - //Can't change stance due to objects in the way... - L"Сейчас нельзя изменить положение тела.", - - //Simple text indications that appear in the game, when the merc can do one of these things. - L"Выкинуть", - L"Бросить", - L"Передать", - - L"%s передан %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, - //must notify SirTech. - L"Не хватает места, чтобы передать %s %s.", //pass "item" to "merc". Same instructions as above. - - //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' - L" присоединён]", // 50 - - //Cheat modes - L"Ну и зачем тебе это надо?", - L"Активирован режим кодов.", - - //Toggling various stealth modes - L"Отряд идёт тихим шагом.", - L"Отряд идёт обычным шагом.", - L"%s идёт тихим шагом.", - L"%s идёт обычным шагом.", - - //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in - //an isometric engine. You can toggle this mode freely in the game. - L"Каркас зданий ВКЛ.", - L"Каркас зданий ВЫКЛ.", - - //These are used in the cheat modes for changing levels in the game. Going from a basement level to - //an upper level, etc. - L"Нельзя подняться с этого уровня...", - L"Нет нижних этажей...", - L"Входим в подвал. Уровень %d...", - L"Покидаем подвал...", - - L".", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun - L"Режим следования ВЫКЛ.", - L"Режим следования ВКЛ.", - L"3D курсор ВЫКЛ.", - L"3D курсор ВКЛ.", - L"Выбран %d-й отряд.", - L"Не хватает денег, чтобы заплатить %s ежедневный гонорар %s", //first %s is the mercs name, the seconds is a string containing the salary - L"Нет", //Skip - L"%s не может уйти в одиночку.", - L"Файл сохранения был записан под названием SaveGame249.sav. Если необходимо, переименуйте его в SaveGame01 - SaveGame10 и тогда он станет доступен в списке сохранений.", - L"%s: выпил(а) немного %s.", - L"Посылка прибыла в Драссен.", - L"%s прибудет в точку назначения (сектор %s) в %dй день, примерно в %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival - L"В журнал добавлена запись!", - L"Очереди из гранат используют курсор стрельбы очередями (стрельба по площадям возможна)", - L"Очереди из гранат используют курсор метания (стрельба по площадям невозможна)", - L"Включены подписи к солдатам", // Changed from Drop All On (Enabled Soldier Tooltips) - L"Отключены подписи к солдатам", // 80 // Changed from Drop All Off (Disabled Soldier Tooltips) - L"Гранатометы стреляют под обычным углом", - L"Гранатометы стреляют навесом", - // forced turn mode strings - L"Только пошаговый режим", - L"Режим реального времени", //Normal turn mode - L"Выход из пошагового режима", //Exit combat mode - L"Включен только пошаговый режим. Вступаем в бой!", //Forced Turn Mode Active, Entering Combat - L"Игра сохранена в поле авто-сохранения.", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved - L"Клиент", //Client - L"Нельзя одновременно установить \"Старый\" инвентарь и \"Новую Систему Навески\".", //You cannot use the Old Inventory and the New Attachment System at the same time. - - L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID - L"Этот слот зарезервирован для автоматической записи, которую можно включить/отключить (AUTO_SAVE_EVERY_N_HOURS) в файле ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save - L"Пустой слот авто записи #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) - L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 - L"End-Turn Save #", // 95 // The text for the tactical end turn auto save - L"Saving Auto Save #", // 96 // The message box, when doing auto save - L"Saving", // 97 // The message box, when doing end turn auto save - L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save - L"Этот слот зарезервирвоан для автоматической записи в конце каждого хода, которую можно включить/отключить на экране опций.", //99 // The text, when the user clicks on the save screen on an auto save - // Mouse tooltips - L"QuickSave.sav", // 100 - L"AutoSaveGame%02d.sav", // 101 - L"Auto%02d.sav", // 102 - L"SaveGame%02d.sav", //103 - // Lock / release mouse in windowed mode (window boundary) - L"Захватить курсор мыши.", // 104 - L"Освободить курсор мыши.", // 105 - L"Движение в боевом порядке", - L"Движение в обычном порядке", - L"Подсветка наёмника включена", - L"Подсветка наёмника отключена", - L"Выбран отряд %s.", - L"%s курит %s.", - L"Активировать чит-коды?", - L"Деактивировать чит-коды?", -}; - - -CHAR16 ItemPickupHelpPopup[][40] = -{ - L"Взять", - L"Вверх", - L"Выбрать все", - L"Вниз", - L"Отмена", -}; - -STR16 pDoctorWarningString[] = -{ - L"%s слишком далеко, чтобы подлечиться.", - L"Ваши медики не могут оказать первую помощь всем раненым.", -}; - -STR16 pMilitiaButtonsHelpText[] = -{ - L"Убрать (|П|р|а|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nДобавить (|Л|е|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nНовобранцы", // button help text informing player they can pick up or drop militia with this button - L"Убрать (|П|р|а|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nДобавить (|Л|е|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nРядовые", - L"Убрать (|П|р|а|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nДобавить (|Л|е|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nВетераны", - L"Равномерно распределить ополчение\nпо доступным секторам", -}; - -STR16 pMapScreenJustStartedHelpText[] = -{ - L"Отправляйтесь в A.I.M. и наймите бойцов (*Подсказка* - это в лэптопе).", // to inform the player to hired some mercs to get things going -#ifdef JA2UB - L"Когда будете готовы отправиться в Тракону, включите сжатие времени в правом нижнем углу экрана.", // to inform the player to hit time compression to get the game underway -#else - L"Когда будете готовы отправиться в Арулько, включите сжатие времени в правом нижнем углу экрана.", // to inform the player to hit time compression to get the game underway -#endif -}; - -STR16 pAntiHackerString[] = -{ - L"Ошибка. Пропущен или испорчен файл(ы). Игра прекращает работу.", -}; - - -STR16 gzLaptopHelpText[] = -{ - //Buttons: - L"Просмотреть почту", - L"Посетить интернет сайты", - L"Просмотреть полученные данные", - L"Просмотреть журнал последних событий", - L"Показать информацию о команде", - L"Просмотреть финансовые отчеты", - L"Закрыть лэптоп", - - //Bottom task bar icons (if they exist): - L"Получена новая почта", - L"Получены новые данные", - - //Bookmarks: - L"Международная Ассоциация Наёмников A.I.M.", - L"Бобби Рэй - заказ оружия через Интернет", - L"Институт Изучения Личности Наёмника I.M.P.", - L"Центр рекрутов M.E.R.C.", - L"Похоронная служба Макгилликатти", - L"'Цветы по всему миру'", - L"Страховые агенты по контрактам A.I.M.", - //New Bookmarks - L"", - L"Энциклопедия", - L"Брифинг-зал", - L"События и факты. Арулькийские новости", - L"Бойцы Любят Тебя или Клянут", - L"Всемирная организация здравоохранения", - L"Цербер - Опыт в безопасности", - L"Ополчение", - L"Recon Intelligence Services", // TODO.Translate - L"Controlled factories", // TODO.Translate -}; - - -STR16 gzHelpScreenText[] = -{ - L"Закрыть окно помощи", -}; - -STR16 gzNonPersistantPBIText[] = -{ - L"Идет бой. Вы можете отступить только через тактический экран.", - L"Войти в сектор, чтобы продолжить бой. (|E)", - L"Провести бой автоматически (|A).", - L"Во время атаки врага автоматическую битву включить нельзя.", - L"После того, как вы попали в засаду, автоматическую битву включить нельзя.", - L"Рядом рептионы - автоматическую битву включить нельзя.", - L"Рядом враждебные гражданские - автоматическую битву включить нельзя.", - L"Рядом кошки-убийцы - автоматическую битву включить нельзя.", - L"ИДЕТ БОЙ", - L"Сейчас вы не можете отступить.", -}; - -STR16 gzMiscString[] = -{ - L"Ваши ополченцы продолжают бой без помощи наёмников...", - L"Сейчас машине топливо не требуется.", - L"Топливный бак полон на %d%%.", - L"%s полностью под контролем Дейдраны.", - L"Вы потеряли заправочную станцию.", -}; - -STR16 gzIntroScreen[] = -{ - L"Не удается найти вступительный видеоролик", -}; - -// These strings are combined with a merc name, a volume string (from pNoiseVolStr), -// and a direction (either "above", "below", or a string from pDirectionStr) to -// report a noise. -// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." -STR16 pNewNoiseStr[] = -{ - L"%s слышит %s звук %s.", - L"%s слышит %s звук движения %s.", - L"%s слышит %s скрип, идущий %s.", - L"%s слышит %s звук всплеска %s.", - L"%s слышит %s звук удара %s.", - L"%s слышит %s звук стрельбы %s.", // anv: without this, all further noise notifications were off by 1! - L"%s слышит %s звук взрыва %s.", - L"%s слышит %s крик %s.", - L"%s слышит %s звук удара %s.", - L"%s слышит %s звук удара %s.", - L"%s слышит %s звон %s.", - L"%s слышит %s грохот %s.", - L"", // anv: placeholder for silent alarm - L"%s слышит чей-то %s голос %s.", // anv: report enemy taunt to player -}; - -STR16 pTauntUnknownVoice[] = -{ - L"Чей-то голос", -}; - -STR16 wMapScreenSortButtonHelpText[] = -{ - L"Сортировка по имени (|F|1)", - L"Сортировка по роду деятельности (|F|2)", - L"Сортировка по состоянию сна (|F|3)", - L"Сортировка по месту пребывания (|F|4)", - L"Сортировка по месту назначения (|F|5)", - L"Сортировка по времени контракта (|F|6)", -}; - - - -STR16 BrokenLinkText[] = -{ - L"Ошибка 404", - L"Сайт не найден.", -}; - - -STR16 gzBobbyRShipmentText[] = -{ - L"Последние поступления", - L"Заказ №", - L"Количество", - L"Заказано", -}; - - -STR16 gzCreditNames[]= -{ - L"Chris Camfield", - L"Shaun Lyng", - L"Kris Märnes", - L"Ian Currie", - L"Linda Currie", - L"Eric \"WTF\" Cheng", - L"Lynn Holowka", - L"Norman \"NRG\" Olsen", - L"George Brooks", - L"Andrew Stacey", - L"Scot Loving", - L"Andrew \"Big Cheese\" Emmons", - L"Dave \"The Feral\" French", - L"Alex Meduna", - L"Joey \"Joeker\" Whelan", -}; - - -STR16 gzCreditNameTitle[]= -{ - L"Ведущий программист игры", // Chris Camfield - L"Дизайнер/Сценарист", // Shaun Lyng - L"Программист стратегической части и редактора", //Kris \"The Cow Rape Man\" Marnes - L"Продюсер/Дизайнер", // Ian Currie - L"Дизайнер/Дизайн карт", // Linda Currie - L"Художник", // Eric \"WTF\" Cheng - L"Тестирование, поддержка", // Lynn Holowka - L"Главный художник", // Norman \"NRG\" Olsen - L"Мастер по звуку", // George Brooks - L"Дизайнер экранов/художник", // Andrew Stacey - L"Ведущий художник/аниматор", // Scot Loving - L"Ведущий программист", // Andrew \"Big Cheese Doddle\" Emmons - L"Программист", // Dave French - L"Программист стратегии и баланса игры", // Alex Meduna - L"Художник-портретист", // Joey \"Joeker\" Whelan", -}; - -STR16 gzCreditNameFunny[]= -{ - L"", // Chris Camfield - L"(Всё ещё зубрит правила пунктуации)", // Shaun Lyng - L"(\"Готово! Осталось только баги исправить.\")", //Kris \"The Cow Rape Man\" Marnes - L"(Уже слишком стар для всего этого)", // Ian Currie - L"(Также работает над Wizardry 8)", // Linda Currie - L"(Заставили тестировать под дулом пистолета)", // Eric \"WTF\" Cheng - L"(Ушла от нас в CFSA - скатертью дорожка...)", // Lynn Holowka - L"", // Norman \"NRG\" Olsen - L"", // George Brooks - L"(Поклонник джаза и группы Dead Head)", // Andrew Stacey - L"(Его настоящее имя Роберт)", // Scot Loving - L"(Единственный ответственный человек)", // Andrew \"Big Cheese Doddle\" Emmons - L"(Может опять заняться мотогонками)", // Dave French - L"(Украден с работы над Wizardry 8)", // Alex Meduna - L"(Делал предметы и загрузочные экраны!)", // Joey \"Joeker\" Whelan", -}; - -// HEADROCK: Adjusted strings for better feedback, and added new string for LBE repair. -STR16 sRepairsDoneString[] = -{ - L"%s: завершён ремонт личных вещей.", - L"%s: завершён ремонт всего оружия и брони.", - L"%s: завершён ремонт всей экипировки отряда.", - L"%s: завершён ремонт всех крупных вещей отряда.", - L"%s: завершён ремонт всех малых вещей отряда.", - L"%s: завершён ремонт всех мелких вещей отряда.", - L"%s: завершён ремонт разгрузочных систем отряда.", - L"%s: завершена чистка всего оружия отряда.", -}; - -STR16 zGioDifConfirmText[]= -{ - L"Вы выбрали ЛЁГКИЙ уровень сложности. Этот режим предназначен для первичного ознакомления с Jagged Alliance. Ваш выбор определит ход всей игры, так что будьте осторожны. Вы действительно хотите начать игру в этом режиме?", - L"Вы выбрали СРЕДНИЙ уровень сложности. Этот режим предназначен для тех, кто знаком с Jagged Alliance и подобными играми. Ваш выбор определит ход всей игры, так что будьте осторожны. Вы действительно хотите начать игру в этом режиме?", - L"Вы выбрали ТЯЖЁЛЫЙ уровень сложности. В этом режиме вам потребуется немалый опыт игры в Jagged Alliance. Ваш выбор определит ход всей игры, так что будьте осторожны. Вы действительно хотите начать игру в этом режиме?", - L"Вы выбрали БЕЗУМНЫЙ уровень сложности. Имейте в виду - в этом режиме возможности Дейдраны воистину за пределами разумного! Но если с головой вы не в ладах, то вам даже понравится. Рискнете?", -}; - -STR16 gzLateLocalizedString[] = -{ - L"%S файл для загрузки экрана не найден...", - - //1-5 - L"Робот не сможет покинуть этот сектор, пока кто-нибудь не возьмет пульт управления.", - - //This message comes up if you have pending bombs waiting to explode in tactical. - L"Сейчас нельзя включить сжатие времени. Дождитесь взрыва!", - - //'Name' refuses to move. - L"%s отказывается подвинуться.", - - //%s a merc name - L"%s: недостаточно очков действия для изменения положения.", - - //A message that pops up when a vehicle runs out of gas. - L"%s: закончилось топливо. Машина осталась в %c%d.", - - //6-10 - - // the following two strings are combined with the pNewNoise[] strings above to report noises - // heard above or below the merc - L"сверху", - L"снизу", - - //The following strings are used in autoresolve for autobandaging related feedback. - L"Никто из ваших наёмников не имеет медицинских навыков.", - L"Нечем бинтовать. Ни у кого из наёмников нет аптечки.", - L"Чтобы перевязать всех наёмников, не хватило бинтов.", - L"Никто из ваших наёмников не нуждается в перевязке.", - L"Автоматически перевязывать бойцов.", - L"Все ваши наёмники перевязаны.", - - //14 -#ifdef JA2UB - L"Тракона", -#else - L"Арулько", -#endif - - L"(на крыше)", - - L"Здоровье: %d/%d", - - //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" - //"vs." is the abbreviation of versus. - L"%d против %d", - - L"%s полон!", //(ex "The ice cream truck is full") - - L"%s нуждается не в первой помощи или перевязке, а в серьезном лечении и/или отдыхе.", - - //20 - //Happens when you get shot in the legs, and you fall down. - L"Из-за ранения в ногу %s падает на землю!", - //Name can't speak right now. - L"%s сейчас не может говорить", - - //22-24 plural versions - L"%d новобранца из ополчения произведены в ветераны.", - L"%d новобранца из ополчения произведены в рядовые.", - L"%d рядовых ополченца произведены в ветераны.", - - //25 - L"Кнопка", - - //26 - //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) - L"У %s приступ безумия!", - - //27-28 - //Messages why a player can't time compress. - L"Сейчас небезопасно включать сжатие времени - у вас есть наёмники в секторе %s.", - L"Сейчас небезопасно включать сжатие времени - у вас есть наёмники в пещерах с тварями.", - - //29-31 singular versions - L"1 новобранец из ополчения стал ветераном ополченцем.", - L"1 новобранец из ополчения стал рядовым ополченцем.", - L"1 рядовой ополченец стал ветераном ополченцем.", - - //32-34 - L"%s ничего не говорит.", - L"Выбраться на поверхность?", - L"(%dй отряд)", - - //35 - //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) - L"%s отремонтировал(а) у %s %s", - - //36 - L"ГЕПАРД", - - //37-38 "Name trips and falls" - L"%s спотыкается и падает.", - L"Этот предмет отсюда взять невозможно.", - - //39 - L"Оставшиеся бойцы не могут сражаться. Сражение с тварями продолжит ополчение.", - - //40-43 - //%s is the name of merc. - L"%s: закончились медикаменты!", - L"%s: недостаточно навыков для лечения.", - L"%s: закончился ремонтный набор!", - L"%s: недостаточно навыков для ремонта.", - - //44-45 - L"Время ремонта", - L"%s не видит этого человека.", - - //46-48 - L"%s: отвалилась ствольная насадка!", - // HEADROCK HAM 3.5: Changed to reflect facility effect. - L"В этом секторе ополченцев могут тренировать не более %d человек.", //No more than %d militia trainers are permitted in this sector. - L"Вы уверены?", - - //49-50 - L"Сжатие времени.", - L"Бак машины полон.", - - //51-52 Fast help text in mapscreen. - L"Возобновить сжатие времени (|П|р|о|б|е|л)", - L"Прекратить сжатие времени (|E|s|c)", - - //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" - L"%s починил(а) %s", - L"%s починил(а) %s (%s)", - - //55 - L"Нельзя включить сжатие времени при просмотре предметов в секторе.", - - L"CD Агония Власти не найден. Программа выходит в ОС.", - - L"Предметы успешно совмещены.", - - //58 - //Displayed with the version information when cheats are enabled. - L"Прогресс игры текущий/максимально достигнутый: %d%%/%d%%", - - L"Сопроводить Джона и Мэри?", - - // 60 - L"Кнопка нажата.", - - L"%s чувствует, что в бронежилете что-то треснуло!", - L"%s выпустил на %d больше пуль!", - L"%s выпустил на одну пулю больше!", - - L"Сперва закрой описание предмета!", - - L"Невозможно ускорить время - враждебные гражданские или кошки-убийцы в секторе.", // 65 -}; - -// HEADROCK HAM 3.5: Added sector name -STR16 gzCWStrings[] = -{ - L"Вызвать подкрепление из соседних секторов для %s?", -}; - -// WANNE: Tooltips -STR16 gzTooltipStrings[] = -{ - // Debug info - L"%s|Место: %d\n", - L"%s|Яркость: %d / %d\n", - L"%s|Дистанция до |Цели: %d\n", - L"%s|I|D: %d\n", - L"%s|Приказы: %d\n", - L"%s|Настрой: %d\n", - L"%s|Текущие |О|Д: %d\n", - L"%s|Текущее |Здоровье: %d\n", - L"%s|Текущая |Энергия: %d\n", - L"%s|Текущая |Мораль: %d\n", - L"%s|Текущий |Шок: %d\n", - L"%s|Текущий |Уровень |Подавления: %d\n", - // Full info - L"%s|Каска: %s\n", - L"%s|Жилет: %s\n", - L"%s|Брюки: %s\n", - // Limited, Basic - L"|Броня: ", - L"Каска", - L"Жилет", - L"Брюки", - L"Одет", - L"нет брони", - L"%s|П|Н|В: %s\n", - L"нет ПНВ", - L"%s|Противогаз: %s\n", - L"нет противогаза", - L"%s|Голова,|Слот |1: %s\n", - L"%s|Голова,|Слот |2: %s\n", - L"\n(в рюкзаке) ", - L"%s|Оружие: %s ", - L"без оружия", - L"Пистолет", - L"Пистолет-пулемёт", - L"Винтовка", - L"Ручной пулемёт", - L"Дробовик", - L"Нож", - L"Тяжелое оружие", - L"без каски", - L"без бронежилета", - L"без поножей", - L"|Броня: %s\n", - // Added - SANDRO - L"%s|Навык 1: %s\n", //%s|Skill 1: %s\n - L"%s|Навык 2: %s\n", - L"%s|Навык 3: %s\n", - // Additional suppression effects - sevenfm - L"%s|О|Д потеряно от |Подавления: %d\n", - L"%s|Сопротивление |Подавлению: %d\n", - L"%s|Эффективный |Уровень |Шока: %d\n", - L"%s|A|I |Мораль: %d\n", -}; - -STR16 New113Message[] = -{ - L"Началась буря.", - L"Буря закончилась.", - L"Начался дождь.", - L"Дождь закончился.", - L"Опасайтесь снайперов...", - L"Огонь на подавление!", //suppression fire! - L"*", //BRST - стабильна по количеству выпущенных пуль - L"***", //AUTO - регулируемая очередь - L"ГР", - L"ГР *", - L"ГР ***", - L"ПС", - L"ПС *", - L"ПС ***", - L"Штык", - L"Снайпер!", - L"Невозможно разделить деньги из-за предмета на курсоре.", - L"Точка высадки прибывающих наёмников перенесена в %s, так как запланированное место высадки %s захвачено противником.", - L"Выброшена вещь.", - L"Выброшены все вещи выбранной группы.", - L"Вещь продана голодающему населению Арулько.", - L"Проданы все вещи выбранной группы.", - L"Проверьте, что вашим бойцам мешает лучше видеть.", //You should check your goggles - // Real Time Mode messages - L"Уже в бою.", //In combat already - L"В пределах видимости нет врагов.", //No enemies in sight - L"Красться в режиме реального времени ОТКЛ.", //Real-time sneaking OFF - L"Красться в режиме реального времени ВКЛ.", //Real-time sneaking ON - //L"Enemy spotted! (Ctrl + x to enter turn based)", - L"Обнаружен враг!", // this should be enough - SANDRO - ////////////////////////////////////////////////////////////////////////////////////// - // These added by SANDRO - L"%s отлично справился с кражей!", //%s was successful at stealing! - L"%s: недостаточно очков действия, чтобы украсть все выбранные вещи.", //%s did not have enough action points to steal all selected items. - L"Хотите провести хирургическую операцию %s перед перевязкой? (Вы сможете восстановить около %i здоровья).", //Do you want to perform surgery on %s before bandaging? (You can heal about %i Health.) - L"Хотите провести хирургическую операцию %s? (Вы сможете восстановить около %i здоровья).", //Do you want to perform surgery on %s? (You can heal about %i Health.) - L"Do you wish to perform surgeries first? (%i patient(s))", // TODO.Translate - L"Хотите провести операцию сначала этому пациенту?", //Do you wish to perform the surgery on this patient first? - L"Apply first aid automatically with surgeries or without them?", - L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate - L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", - L"%s успешно прооперирован(а).", //Surgery on %s finished. - L"%s пропустил(а) удар в грудную клетку и теряет единицу максимального значения здоровья!", //%s is hit in the chest and loses a point of maximum health! - L"%s пропустил(а) удар в грудную клетку и теряет %d максимального значения здоровья!", //%s is hit in the chest and loses %d points of maximum health! - L"%s ослеплен взрывом!", - L"%s восстановил(а) одну ед. потерянного %s.", //%s has regained one point of lost %s - L"%s восстановил(а) %d ед. потерянного %s.", //%s has regained %d points of lost %s - L"Ваши навыки разведчика сорвали засаду противника.", - L"Благодаря вашим навыкам разведчика вы успешно избежали встречи с кошками-убицами!", - L"%s получает удар в пах и падает на землю от адской боли!", - ////////////////////////////////////////////////////////////////////////////////////// - L"Внимание: враг обнаружил труп!!!", - L"%s [%d патр.]\n%s %1.1f %s", - L"Недостаточно ОД! Нужно %d, у вас есть %d.", - L"Совет: %s", - L"Сила игрока: %d - Сила противника: %6.0f", - - L"Нельзя использовать навык!", - L"Нельзя строить, пока противник в секторе!", - L"Невозможно наблюдать за этим местом!", - L"Некорректные координаты для стрельбы артиллерии!", - L"Помехи на радиочастотах. Связь невозможна!", - L"Не удалось использовать радиостанцию!", - L"Недостаточно миномётных снарядов в секторе для постановки огня!", - L"Не обнаружены сигнальные мины в Items.xml!", - L"Не обнаружены осколочно-фугасные мины в Items.xml!", - L"Нет миномётов, невозможно организовать артналет!", - L"Режим радиопомех уже включен, нет необходимости делать это снова!", - L"Режим прослушивания звуков уже включен, нет необходимости делать это снова!", - L"Режим обнаружения уже включен, нет необходимости делать это снова!", - L"Режим обнаружения источника помех уже включен, нет необходимости делать это снова!", - L"%s не может применить %s к %s.", - L"%s вызывает подкрепления из %s.", - L"%s радиостанция обесточен.", - L"работающая радиостанция", - L"бинокль", - L"терпение", - L"%s's shield has been destroyed!", // TODO.Translate - L" DELAY", // TODO.Translate - L"Yes*", - L"Yes", - L"No", - L"%s applied %s to %s.", // TODO.Translate -}; - -STR16 New113HAMMessage[] = -{ - // 0 - 5 - L"%s в страхе пытается укрыться!", - L"%s прижат(а) к земле вражеским огнём!", - L"%s дал более длинную очередь!", - L"Вы не можете тренировать ополчение в этом секторе.", - L"Ополченец подобрал %s.", - L"Невозможно тренировать ополчение, пока в секторе враги!", - // 6 - 10 - L"%s имеет низкий навык Лидерства, чтобы тренировать ополченцев.", - L"В этом секторе может быть не больше %d тренеров патрульных групп.", - L"Нет свободных мест в %s или вокруг него для новой патрульной группы!", - L"Нужно иметь по %d ополченцев в каждом освобождённом секторе города %s, прежде чем можно будет тренировать патруль.", - L"Невозможно назначить занятие, пока враг в секторе!", - // 11 - 15 - L"%s имеет недостаточно интеллекта для этого занятия.", - L"Учереждение %s полностью укомплектованно персоналом.", - L"Один час этого назначения обойдётся вам в $%d. Согласны оплачивать?", - L"У вас недостаточно денег, чтобы оплатить за сегодня. $%d выплачено, ещё нужно $%d. Местным это не понравилось.", - L"У вас недостаточно денег, чтобы выплатить заработную плату всем рабочим. Теперь долг составил $%d. Местным это не понравилось.", - // 16 - 20 - L"Непогашенный долг составляет $%d, и нет денег, чтобы его погасить!", - L"Непогашенный долг составляет $%d. Вы не можете выбрать это назначение, пока не погасите задолженность.", - L"Непогашенный долг составляет $%d. Выплатить деньги по задолженности?", - L"Н/Д в этом секторе", - L"Дневной расход", - // 21 - 25 - L"Недостаточно денег для выплат нанятому ополчению. %d ополченцев было распущено и отправлено домой.", - L"Для того, чтобы изучить характеристики предмета во время боя, вам нужно сначала взять его.", - L"Для того, чтобы во время боя присоединить один предмет к другому, вам нужно сначала взять их.", - L"Для объединения предметов во время боя вам нужно сначала взять их.", -}; - -// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. -STR16 gzTransformationMessage[] = -{ - L"Нет доступных преобразований", - L"%s был разделен на несколько частей.", - L"%s был разделен на несколько частей. Предметы находятся в инвентаре %s.", - L"Из-за нехватки места в инвентаре %s после преобразования некоторые предметы были брошены на землю.", - L"%s был разделен на несколько частей. Из-за нехватки места в инвентаре %s пришлось бросить некоторые предметы на землю.", - L"Преобразовать все %d предметов вместе? (Для того, чтобы преобразовать только один предмет, предварительно отделите его)", - // 6 - 10 - L"Разделить ящик и поместить в инвентарь", - L"Разделить на магазины емкостью %d", - L"%s был разделен на %d магазинов по %d патронов в каждом.", - L"%s был разделен и помещен в инвентарь %s.", - L"Недостаточно места в инвентаре %s для магазинов данного калибра!", - L"Instant mode", // TODO.Translate - L"Delayed mode", - L"Instant mode (%d AP)", - L"Delayed mode (%d AP)", -}; - -// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercLevelUp.xml" file! -// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 New113MERCMercMailTexts[] = -{ - // Gaston: Text from Line 39 in Email.edt - L"Пожалуйста, примите к сведению, что с настоящего момента гонорар Гастона увеличивается вследствие повышения его профессионального уровня. ± ± Спек Т. Кляйн ± ", - // Stogie: Text from Line 43 in Email.edt - L"Пожалуйста, примите к сведению, что повышение боевых навыков лейтенанта Хорга 'Сигары' влечет за собой повышение его гонорара. ± ± Спек Т. Кляйн ± ", - // Tex: Text from Line 45 in Email.edt - L"Прошу принять к сведению, что заслуги Текса позволяют ему требовать более достойной оплаты. Поэтому его гонорар был увеличен, чтобы соответствовать его умениям. ± ± Спек Т. Кляйн ± ", - // Biggens: Text from Line 49 in Email.edt - L"Ставим в известность, что отличная работа полковника Фредерика Биггенса заслуживает поощрения в виде повышения гонорара. Постановление считать действительным с текущего момента. ± ± Спек Т. Кляйн ± ", -}; - -// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercAvailable.xml" file! -// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back -STR16 New113AIMMercMailTexts[] = -{ - // Monk - L"FW с сервера A.I.M.: Письмо от Виктора Колесникова", - L"Привет. Это Монк. Получил твое сообщение. Я вернулся, так что можешь со мной связаться. ± ± Жду звонка. ±", - - // Brain - L"FW с сервера A.I.M.: Письмо от Янно Аллика", - L"Я готов обсудить задания. Для всего есть свое время и место. ± ± Янно Аллик ±", - - // Scream - L"FW с сервера A.I.M.: Письмо от Леннарта Вильде", - L"Леннарт Вильде вернулся!", - - // Henning - L"FW с сервера A.I.M.: Письмо от Хеннинга фон Браница", - L"Получил твое сообщение, спасибо. Если хочешь обсудить работу, свяжись со мной на сайте A.I.M. До встречи! ± ± Хеннинг фон Браниц ±", - - // Luc - L"FW с сервера A.I.M.: Письмо от Люка Фабра", - L"Послание получил, мерси! С удовольствием рассмотрю ваши предложения. Вы знаете, где меня найти. ± ± Жду с нетерпением ±", - - // Laura - L"FW с сервера A.I.M.: Письмо от Лоры Колин", - L"Привет! Спасибо, что оставили сообщение. Звучит интересно. ± ± Зайдите снова в A.I.M. Хотелось бы услышать больше. ± ± С уважением! ± ± Др. Лора Колин ± ± P.S. Надеюсь, Monk уже в вашей команде? ±", - - // Grace - L"FW с сервера A.I.M.: Письмо от Грациеллы Джирелли", - L"Вы хотели связаться со мной, но неудачно.± ± Семейное собрание. Думаю, вы понимаете. Я уже устала от семьи и буду рада. Если вы снова свяжетесь со мной через сайт A.I.M. ± ± Чао! ±", - - // Rudolf - L"FW с сервера A.I.M.: Письмо от Рудольфа Штайгера", - L"Ты знаешь, сколько звонков я получаю каждый день? Любой придурок считает, что может позвонить мне. ± ± Но я вернулся, если тебе есть чем меня заинтересовать. ±", - - // WANNE: Generic mail, for additional merc made by modders, index >= 178 - L"FW с сервера A.I.M.: Наёмник доступен", - L"Я на месте. Жду звонка чтобы обсудить условия контракта. ±", -}; - -// WANNE: These are the missing skills from the impass.edt file -// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files -STR16 MissingIMPSkillsDescriptions[] = -{ - // Sniper - L"Снайпер: У вас глаза ястреба. В свободное время вы развлекаетесь, отстреливая крылышки у мух с расстояния 100 метров! ± ", //Sniper: Eyes of a hawk, you can shoot the wings from a fly at a hundred yards! - // Camouflage - L"Маскировка: На вашем фоне даже кусты выглядят синтетическими! ± ", - // SANDRO - new strings for new traits added - // MINTY - Altered the texts for more natural English, and added a little flavour too - // Ranger - L"Рейнджер: Эти любители из Техаса вам и в подметки не годятся! ± ", - // Gunslinger - L"Ковбой: С одним револьвером или с двумя - вы так же опасны, как Билли Кид! ± ", - // Squadleader - L"Командир: Вы прирождённый лидер, солдаты просто боготворят вас! ± ", - // Technician - L"Механик: Ангус МакГайвер по сравнению с вами просто никто! Механика, электроника или взрывчатка - вы отремонтируете что угодно! ± ", - // Doctor - L"Доктор: Будь то царапины или вскрытое брюхо, требуется ампутация или же наоборот, пришить что-нибудь - вы с лёгкостью справитесь с любым недугом! ± ", - // Athletics - L"Спортсмен: Ваша скорость и выносливость достойны олимпийца! ± ", - // Bodybuilding - L"Культурист: Шварц? Да он слабак! Вы с лёгкостью завалите его одной левой! ± ", - // Demolitions - L"Подрывник: Сеять гранаты, как семена по полю; минировать поле, как картошку садить - густо и минимум 20 соток; а после созерцать полет конечностей... Вот то, ради чего вы живёте! ± ", - // Scouting - L"Разведчик: Ничто не скроется от вашего зоркого взгляда! ± ", - // Covert ops - L"Шпион: Агент 007 по сравнению с вами - дилетант! ± ", - // Radio Operator - L"Радист: Использование вами средств связи позволяет расширить тактические и стратегические возможности команды. ± ", - // Survival - L"Выживание: В условиях дикой природы вы чувствуете себя как дома. ± ", -}; - -STR16 NewInvMessage[] = -{ - L"В данный момент поднять рюкзак нельзя.", - L"Вы не можете одновременно носить 2 рюкзака.", - L"Вы потеряли свой рюкзак...", - L"Замок рюкзака работает лишь во время битвы.", - L"Вы не можете передвигаться с открытым рюкзаком.", - L"Вы уверены, что хотите продать весь хлам этого сектора голодающему населению Арулько?", - L"Вы уверены, что хотите выбросить весь хлам, валяющийся в этом секторе?", - L"Тяжеловато будет взбираться с полным рюкзаком на крышу. Может, снимем?", - L"Все рюкзаки сняты", - L"Все рюкзаки надеты", - L"%s снял(а) рюкзак", - L"%s надел(а) рюкзак", -}; - -// WANNE - MP: Multiplayer messages -STR16 MPServerMessage[] = -{ - // 0 - L"Запускается сервер RakNet...", - L"Сервер запущен, ожидание подключений...", - L"Теперь вам надо подключиться к серверу, нажав '2'.", - L"Сервер уже запущен.", - L"Не удалось запустить сервер. Прекращаю работу.", - // 5 - L"%d/%d клиентов готовы к режиму реального времени.", - L"Сервер отключился и прекратил свою работу.", - L"Сервер не запущен.", - L"Подождите пожалуйста, игроки все еще загружаются...", - L"Вы не можете изменять зону высадки после запуска сервера.", - // 10 - L"Отправка файла '%S' - 100/100", //Sent file '%S' - 100/100 - L"Завершена отправка файлов для '%S'.", //Finished sending files to '%S'. - L"Начата отправка файлов для '%S'.", //Started sending files to '%S'. - L"Используйте обзор воздушного пространства, чтобы выбрать карту для игры. Если вы ходите сменить карту, это нужно сделать до того, как вы нажмете кнопку 'Начать игру'.", -}; - -STR16 MPClientMessage[] = -{ - // 0 - L"Запускается клиент RakNet...", - L"Подключение к IP: %S ...", - L"Получены настройки игры:", - L"Вы уже подключены.", - L"Вы уже подключаетесь...", - // 5 - L"Клиент №%d - '%S' нанял %s.", - L"Клиент №%d - '%S' нанял еще бойца.", - L"Вы готовы к бою (всего готово = %d/%d).", - L"Вы отменили готовность к бою (всего готово = %d/%d).", - L"Отряды подтягиваются к месту битвы...", //'Starting battle...' - // 10 - L"Клиент №%d - '%S' готов к бою (всего готово = %d/%d).", - L"Клиент №%d - '%S' отменил готовность к бою (всего готово = %d/%d).", - L"Похоже, вы уже готовы к бою, однако, придется подождать остальных. (Если хотите изменить расположение своих бойцов, нажмите кнопку 'ДА').", - L"Начнем же битву!", - L"Для начала игры необходимо запустить клиент.", - // 15 - L"Игра не может быть начата, вы не наняли ни одного бойца.", - L"Ждем, когда сервер даст добро на доступ к лэптопу...", - L"Перехвачен", //Interrupted - L"Продолжение после перехвата", //Finish from interrupt - L"Координаты курсора:", //Mouse Grid Coordinates - // 20 - L"X: %d, Y: %d", - L"Номер сектора: %d", //Grid Number - L"Доступно лишь для сервера.", - L"Выберите, какую ступень игры принудительно запустить: ('1' - открыть лэптоп/найм бойцов) ('2' - запустить/загрузить уровень) ('3' - разблокировать пользовательский интерфейс) ('4' - завершить расстановку)", - L"Sector=%s, Max Clients=%d, Max Mercs=%d, Game_Mode=%d, Same Merc=%d, Damage Multiplier=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Equip=%d, Dis Morale=%d, Testing=%d", - // 25 - L"", //not used any more - L"Новый игрок: клиент №%d - '%S'.", - L"Команда: %d.",//not used any more - L"%s (клиент %d - '%S') был убит %s (клиент %d - '%S')", - L"Клиент №%d - '%S' выкинут из игры.", - // 30 - L"Принудительно дать ход клиенту. №1: <Отменить>, №2: %S, №3: %S, №4: %S", - L"Начался ход клиента №%d", - L"Запрос перехода в режим реального время...", - L"Переход в режим реального времени.", - L"Ошибка: что-то пошло не так, возвращаю обратно.", - // 35 - L"Открыть доступ к лэптопу? (Уверены что все игроки подключились?)", - L"Сервером был открыт доступ к лэптопу. Приступайте к найму бойцов!", - L"Перехватчик.", - L"Клиент не может изменять зону высадки, доступно лишь серверу.", - L"Вы отказались от предложения сдаться, потому что это не актуально в сетевой игре.", - // 40 - L"Все ваши бойцы были убиты!", - L"Активизирован режим наблюдения.", - L"Вы потерпели поражение!", - L"Извините, залезать на крышу в сетевой игре запрещено.", - L"Вы наняли %s.", - // 45 - L"Вы не можете изменить карту после начала закупки.", - L"Карта изменена на '%s'", - L"Клиент '%s' отключился, убираем его из игры.", - L"Вы были отключены от игры, возвращаемся в главное меню.", - L"Подключиться не удалось. Повторная попытка через 5 секунд (осталось %i попыток)", - //50 - L"Подключиться не удалось, сдаюсь...", - L"Вы не можете начать игру во время подключения других игроков.", - L"%s : %s", - L"Отправить всем", - L"Только союзникам", - // 55 - L"Не могу присоединиться к игре. Игра уже началась.", - L"%s (команда): %s", - L"#%i - '%s'", - L"%S - 100/100", - L"%S - %i/100", - // 60 - L"От сервера получены все необходимые файлы.", - L"'%S' закачка с сервера завершена.", - L"'%S' начата закачка с сервера.", - L"Нельзя начать игру пока все игроки не завершать приём файлов от сервера.", - L"Для игры на этом сервере необходимо скачать некоторые изменённые файлы, желаете продолжить?", - // 65 - L"Нажмите 'Готов' для входа на тактическую карту.", - L"Не удаётся подключиться. Версия вашего клиента (%S) отличается от версии сервера (%S).", - L"Вы убили вражеского солдата.", - L"Нельзя запустить игру потому что все команды одинаковые.", - L"Игра на сервере создана с Новым Инвентарём (NIV), а выбранное вами разрешение экрана не поддерживается NIV.", - // 70 - L"Невозможно сохранить принятый файл '%S'", - L"%s's бомба была разряжена %s", - L"Вы проиграли. Стыд и срам!", // All over red rover - L"Режим наблюдателя выключен", - L"Укажите номер клиента, который нужно кикнуть. №1: <Отменить>, №2: %S, №3: %S, №4: %S", - // 75 - L"Команда %s уничтожена.", - L"Ошибка при запуске клиента. Завершение операции.", - L"Клиент отсоединился и закрыт.", - L"Клиент не запущен.", - L"ИНФОРМАЦИЯ: Если игра зависла (полоса прогресса противника не двигается), сообщите серверу, чтобы нажал ALT + E для передачи хода обратно вам!", - // 80 - L"ход AI - осталось %d", -}; - -STR16 gszMPEdgesText[] = -{ - L"С", //N - L"В", //E - L"Ю", //S - L"З", //W - L"Ц", // "C"enter -}; - -STR16 gszMPTeamNames[] = -{ - L"Фокстрот", //Foxtrot - L"Браво", //Bravo - L"Дельта", //Delta - L"Чарли", //Charlie - L"Н/Д", // Acronym of Not Applicable -}; - -STR16 gszMPMapscreenText[] = -{ - L"Тип игры: ", //Game Type: - L"Игроков: ", //Players: - L"Всего бойцов: ", //Mercs each: - L"Нельзя изменять сторону высадки отряда после открытия лэптопа.", - L"Нельзя изменить имя команды после открытия лэптопа.", - L"Случ. бойцы: ", //Random Mercs: - L"Да", //Y - L"Сложность:", //Difficulty: - L"Версия сервера:", //Server Version: -}; - -STR16 gzMPSScreenText[] = -{ - L"Доска счёта", //Scoreboard - L"Продолжить", //Continue - L"Отмена", //Cancel - L"Игрок", //Player - L"Убито", //Kills - L"Погибло", //Deaths - L"Королевская армия", //Queen's Army - L"Выстрелов", //Hits - L"Промахи", //Misses - L"Меткость", //Accuracy - L"Нанесённый урон", //Damage Dealt - L"Полученный урон", //Damage Taken - L"Дождитесь, пожалуйста, пока сервер нажмёт кнопку 'Продолжить'." -}; - -STR16 gzMPCScreenText[] = -{ - L"Отмена", //Cancel - L"Подключаюсь к серверу...", //Connecting to Server - L"Получаю настройки от сервера...", //Getting Server Settings - L"Скачиваю выбранные файлы...", //Downloading custom files - L"Нажмите 'ESC' для отмены или 'Y' чтобы войти в чат.", //Press 'ESC' to cancel or 'Y' to chat - L"Нажмите 'ESC' для отмены", //Press 'ESC' to cancel - L"Выполнено." //Ready -}; - -STR16 gzMPChatToggleText[] = -{ - L"Отправть всем", - L"Отправть только союзникам", -}; - -STR16 gzMPChatboxText[] = -{ - L"Чат сетевой игры Jagged Alliance 2 v1.13", - L"Заметка: нажмите |В|В|О|Д для отправки сообщения, |К|Л|Ю|Ч для выхода из чата.", -}; - -// Following strings added - SANDRO -STR16 pSkillTraitBeginIMPStrings[] = -{ - // For old traits - L"На следующей странице вам нужно выбрать профессиональные навыки в соответствии со специализацией вашего наёмника. Вы можете выбрать не более двух разных навыков, либо один и владеть им в совершенстве.", - L"Можно выбрать всего один навык или вообще остаться без него. Тогда вам будут даны дополнительные баллы для улучшения некоторых параметров. Внимание: навыки электроники, стрельбы с двух рук и маскировки не могут быть экспертными.", - // For new major/minor traits - L"Следующий этап - выбор навыков, которые определят специализацию вашего наёмника. На первой странице можно выбрать до %d основных навыков, которые определят роль бойца в отряде. На второй - дополнительные навыки, подчеркивающие личные качества бойца.", - L"Всего можно взять не более %d навыков. Так, если вы не выбрали основной навык, то можно взять %d дополнительных. Если же вы выбрали оба основных навыка (или один улучшенный), то будет доступен лишь %d дополнительный...", -}; - -STR16 sgAttributeSelectionText[] = -{ - L"Откорректируйте свои физические параметры согласно вашим истинным способностям. И не стоит их завышать.", - L"I.M.P.: Параметры и умения.", //I.M.P. Attributes and skills review. - L"Бонус:", //Bonus Pts. - L"Ваш уровень", //Starting Level - // New strings for new traits - L"На следующей странице укажите свои физические параметры и умения. \"Физические параметры\" - это здоровье, ловкость, проворность, сила и интеллект. Они не могут быть ниже %d.", - L"Оставшиеся \"умения\", в отличие от физических параметров, могут быть установлены в ноль, что означает абсолютную некомпетентность в данных областях.", - L"Изначально все параметры установлены на минимум. Заметьте, что минимум для некоторых параметров определяется выбранными навыками, и вы не можете понизить их значение.", -}; - -STR16 pCharacterTraitBeginIMPStrings[] = -{ - L"I.M.P.: Анализ личных качеств", //I.M.P. Character Analysis - L"Следующий шаг - анализ ваших личных качеств. На первой странице вам на выбор будет предложен список черт характера. Уверены, что вам могут быть свойственны несколько из указанных черт, но выбрать нужно лишь одну. Выберите лишь самую ярко выраженную вашу черту характера.", - L"На второй странице вам будет предложен список проблем, которые, возможно, есть у вас. Если найдёте свою проблемы в списке, отметьте её. Будьте предельно честны при ответах, очень важно предоставить вашим потенциальным работодателям достоверную информацию о вас.", -}; - -STR16 gzIMPAttitudesText[]= -{ - L"Адекватный", //Normal - L"Общительный", //Friendly - L"Одиночка", //Loner - L"Оптимист", //Optimist - L"Пессимист", //Pessimist - L"Агрессивный", //Aggressive - L"Высокомерный", //Arrogant - L"Крутой", //Big Shot - L"Мудак", //Asshole - L"Трус", //Coward - L"I.M.P.: Жизненная позиция", //I.M.P. Attitudes -}; - -STR16 gzIMPCharacterTraitText[]= -{ - L"Обычный", //Neutral - L"Общительный", //Sociable - L"Одиночка", //Loner - L"Оптимист", //Optimist - L"Самоуверенный", //Assertive - L"Мозговитый", //Intellectual - L"Простофиля", //Primitive - L"Агрессивный", //Aggressive - L"Флегматик", //Phlegmatic - L"Бесстрашный", //Dauntless - L"Миролюбивый", //Pacifist - L"Злобный", //Malicious - L"Хвастун", //Show-off - L"Трус", - L"I.M.P.: Личностные качества", //I.M.P. Character Traits -}; - -STR16 gzIMPColorChoosingText[] = -{ - L"I.M.P.: Расцветка и телосложение", - L"I.M.P.: Расцветка", - L"Выберите соответствующие цвета вашей кожи, волос и одежды, а также укажите ваше телосложение.", - L"Выберите соответствующие цвета вашей кожи, волос и одежды.", - L"Отметьте здесь, чтобы ваш персонаж \nдержал автомат одной рукой.", - L"\n(Важно: вам понадобится прилично сил для этого.)", -}; - -STR16 sColorChoiceExplanationTexts[]= -{ - L"Цвет волос", //Hair Color - L"Цвет кожи", //Skin Color - L"Цвет майки", //Shirt Color - L"Цвет штанов", //Pants Color - L"Нормальное телосложение", //Normal Body - L"Мускулистое телосложение", //Big Body -}; - -STR16 gzIMPDisabilityTraitText[]= -{ - L"Нет проблем", //No Disability - L"Непереносимость жары", //Heat Intolerant - L"Нервный", //Nervous - L"Клаустрафоб", //Claustrophobic - L"Не умеющий плавать", //Nonswimmer - L"Боязнь насекомых", //Fear of Insects - L"Забывчивый", //Forgetful - L"Психопат", //Psychotic - L"Глухой", //Deaf - L"Близорукий", //Shortsighted - L"Гемофилик", // Hemophiliac - L"Боязнь высоты", // Fear of Heights - L"Самоистезание", // Self-Harming - L"I.M.P.: Проблемы", //I.M.P. Disabilities -}; - -STR16 gzIMPDisabilityTraitEmailTextDeaf[] = -{ - L"Можем поспорить - вы рады, что это не голосовая почта.", - L"Вы слишком часто слушали громкую музыку на дискотеке или слишком близко слушали взрывы снарядов. Или это просто возраст. В любом случае, вашей команде стоит изучить язык жестов.", -}; - -STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = -{ - L"Вы будете бесполезны, если потеряете свои очки.", - L"Это случается, если проводить много времени перед светящимися прямоугольниками. Нужно было есть больше морковок. Вы когда-нибудь видели кролика в очках?", -}; - -STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = -{ - L"Вы УВЕРЕНЫ, что это подходящая работа для Вас?", - L"Разве что Вы так круты, что никогда не получаете ран или сражаетесь только в хорошо оснащенном госпитале.", -}; - -STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= -{ - L"Скажем просто, вы любите быть только на твердой земле.", - L"Вам больше нравятся миссии, в которых не надо покорять горы и лезть на высокие здания. Рекомендуем завоевать Голландию.", -}; - -STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = -{ - L"Возможно вы хотите убедиться в чистоте ваших ножей.", - L"У вас определенные проблемы с ножами. Т.е. вы не избегаете из, а даже наоборот, серьезно!", -}; - -// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility -STR16 gzFacilityErrorMessage[]= -{ - L"%s не хватает Силы, чтобы выполнить это действие.", - L"%s не хватает Ловкости, чтобы выполнить это действие.", - L"%s не хватает Проворности, чтобы выполнить это действие.", - L"%s не хватает Здоровья, чтобы выполнить это действие..", - L"%s не хватает Интеллекта, чтобы выполнить это действие.", - L"%s не хватает Меткости, чтобы выполнить это действие.", - // 6 - 10 - L"%s недостаточно развит Медицинский навык, чтобы выполнить это действие.", - L"%s недостаточно развит навык Механики, чтобы выполнить это действие.", - L"%s недостаточно развито Лидерство, чтобы выполнить это действие.", - L"%s недостаточно развит навык Взрывчатки, чтобы выполнить это действие.", - L"%s недостаточно Опыта, чтобы выполнить это действие.", - // 11 - 15 - L"У %s слишком плохой боевой дух, чтобы выполнить это действие", - L"%s слишком устал(а), чтобы выполнить это действие.", - L"В городе %s вам пока не доверяют. Местные отказываются выполнить этот приказ.", - L"Слишком много людей уже работают в %s.", - L"Слишком много людей уже выполняют эту задачу в %s.", - // 16 - 20 - L"%s не может найти вещи, которые нуждаются в ремонте.", - L"%s потерял(а) часть %s, пока работал в секторе %s!", - L"%s потерял(а) часть %s, пока работал над %s в %s!", - L"%s получил(а) травму, пока работал(а) в секторе %s, и требует незамедлительной медицинской помощи!", - L"%s получил(а) травму, пока работал(а) над %s в %s, и требует незамедлительной медицинской помощи!", - // 21 - 25 - L"%s получил(а) травму, пока работал(а) в секторе %s. Травма незначительная.", - L"%s получил(а) травму, пока работал(а) над %s в %s. Травма незначительная.", - L"Жители города %s расстроены тем, что %s пребывает в их городе.", - L"Жители города %s расстроены работой %s в %s.", - L"%s в секторе %s своими действиями понизил репутацию во всём регионе!", - // 26 - 30 - L"%s, работая над %s в %s, привёл(а) к понижению репутации во всём регионе!", - L"%s пьян(а).", - L"%s заболел(а) в секторе %s и вынужден(а) отложить текущую задачу.", - L"%s заболел(а) и не может продолжить работу над %s в %s.", - L"%s получил(а) травму в секторе %s.", - // 31 - 35 - L"%s получил(а) серьёзную травму в секторе %s.", - L"Здесь есть пленные, которые осведомлены о личности %s.", - L"%s хорошо известен как доносчик. Подождите еще хотя бы %d часов.", - - -}; - -STR16 gzFacilityRiskResultStrings[]= -{ - L"Сила", //Strength - L"Проворность", //Agility - L"Ловкость", //Dexterity - L"Интеллект", //Wisdom - L"Здоровье", //Health - L"Меткость", //Marksmanship - // 5-10 - L"Лидерство", //Leadership - L"Механика", //Mechanical skill - L"Медицина", //Medical skill - L"Взрывчатка", //Explosives skill -}; - -STR16 gzFacilityAssignmentStrings[]= -{ - L"Окружающая среда", //AMBIENT - L"Штат", //Staff - L"Питание", - L"Отдых", - L"Ремонт вещей", - L"Ремонт %s", // Vehicle name inserted here - L"Ремонт робота", - // 6-10 - L"Доктор", - L"Пациент", - L"Тренировка Силы", - L"Тренировка Ловкости", - L"Тренировка Проворности", - L"Тренировка Здоровья", - // 11-15 - L"Тренировка Меткости", - L"Тренировка Медицины", - L"Тренировка Механики", - L"Тренировка Лидерства", - L"Тренировка Взрывчатки", - // 16-20 - L"Ученик на Силу", - L"Ученик на Ловкость", - L"Ученик на Проворность", - L"Ученик на Здоровье", - L"Ученик на Меткость", - // 21-25 - L"Ученик на Медицину", - L"Ученик на Механику", - L"Ученик на Лидерство", - L"Ученик на Взрывчатку", - L"Тренер на Силу", - // 26-30 - L"Тренер на Ловкость", - L"Тренер на Проворность", - L"Тренер на Здоровье", - L"Тренер на Меткость", - L"Тренер на Медицину", - // 30-35 - L"Тренер на Механику", - L"Тренер на Лидерство", - L"Тренер на Взрывчатку", - L"Допрашивать пленных", - L"Осведомитель", - // 36-40 - L"Вести пропаганду", - L"Вести пропаганду", // spread propaganda (globally) - L"Собирать слухи", - L"Командовать ополчением", // militia movement orders -}; -STR16 Additional113Text[]= -{ - L"Для запуска Jagged Alliance 2 v1.13 в оконном режиме требуется установить 16-битное качество цветопередачи экрана", - L"Jagged Alliance 2 v1.13 в полноэкранном режиме с разрешением %d x %d не поддерживается установками вашего экрана.\nИзмените разрешение игры или используйте 16-битный оконный режим.", - L"Внутренняя ошибка при чтении места %s сохранённой игры: Число мест в сохранённой игре (%d) отличается от определенных параметрами настроек (%d) в ja2_options.ini", - // WANNE: Savegame slots validation against INI file - L"Наёмники (MAX_NUMBER_PLAYER_MERCS) / Машины (MAX_NUMBER_PLAYER_VEHICLES)", - L"Противник (MAX_NUMBER_ENEMIES_IN_TACTICAL)", - L"Твари (MAX_NUMBER_CREATURES_IN_TACTICAL)", - L"Ополчение (MAX_NUMBER_MILITIA_IN_TACTICAL)", - L"Гражданские (MAX_NUMBER_CIVS_IN_TACTICAL)", - -}; - -// SANDRO - Taunts (here for now, xml for future, I hope) -// MINTY - Changed some of the following taunts to sound more natural -STR16 sEnemyTauntsFireGun[]= -{ - L"Отведай-ка гостинца!", - L"Поздоровайся с моим дружком!", - L"Иди и получи!", - L"Ты мой!", - L"Сдохни!", - L"Обосрался, говнюк?", - L"Будет больно!", - L"Давай, ублюдок!", - L"Давай! Не весь же день тягаться!", - L"Иди к папочке!", - L"Закопаю моментом!", - L"Домой поедешь в деревянном костюме, неудачник!", - L"Эй, сыграем?", - L"Сидел бы дома, мудила!", - L"С-сука!", -}; - -STR16 sEnemyTauntsFireLauncher[]= -{ - - L"Будет, будет... Шашлык из тебя будет!", - L"Держи подарочек!", - L"Бах!", - L"Улыбочку!", -}; - -STR16 sEnemyTauntsThrow[]= -{ - L"Лови!", - L"Держи!", - L"Бум-бах, ой-ой-ой! Умирает зайчик мой!", - L"Это тебе.", - L"Муа-ха-ха!", - L"Лови, свинтус!", - L"Обожаю этот момент.", -}; - -STR16 sEnemyTauntsChargeKnife[]= -{ - L"Твой скальп мой, лошара!", - L"Иди к папочке.", - L"Сейчас посмотрим на твои кишочки!", - L"Порву, как Тузик грелку!", - L"Мясо!", -}; - -STR16 sEnemyTauntsRunAway[]= -{ - L"Кажется, мы в дерьме...", - L"Мне говорили вступать в армию, а не в это дерьмо!", - L"С меня хватит!", - L"О мой Бог!", - L"Нам не доплачивают за это дерьмо, валим отсюда...", - L"Мамочка!", - L"Я вернусь! И нас будут тысячи!", - -}; - -STR16 sEnemyTauntsSeekNoise[]= -{ - L"Я тебя слышу!", - L"Кто здесь?", - L"Что это было?", - L"Эй! Какого...", - -}; - -STR16 sEnemyTauntsAlert[]= -{ - L"Они здесь!", - L"Сейчас начнётся веселье!", - L"Я надеялся, что этого никогда не случится...", - -}; - -STR16 sEnemyTauntsGotHit[]= -{ - L"А-а-г-р-р!", - L"А-а-а!", - L"Как же... больно!", - L"Твою мать!", - L"Ты пожалеешь... у-м-хх... об этом.", - L"Что за!..", - L"Теперь ты меня... разозлил.", - -}; - -STR16 sEnemyTauntsNoticedMerc[]= -{ - L"Что за...!", - L"О боже!", - L"О черт!", - L"Противник!!!", - L"Тревога! Тревога!", - L"Вот он!", - L"Атаковать!", - -}; - -////////////////////////////////////////////////////// -// HEADROCK HAM 4: Begin new UDB texts and tooltips -////////////////////////////////////////////////////// -STR16 gzItemDescTabButtonText[] = -{ - L"Информация", - L"Параметры", - L"Доп. инфо", -}; - -STR16 gzItemDescTabButtonShortText[] = -{ - L"Инфо.", - L"Пар.", - L"Доп.", -}; - -STR16 gzItemDescGenHeaders[] = -{ - L"Основное", - L"Дополнительное", - L"Затраты ОД", - L"Стрельба очередью", -}; - -STR16 gzItemDescGenIndexes[] = -{ - L"Парам.", - L"0", - L"+/-", - L"=", -}; - -STR16 gzUDBButtonTooltipText[]= -{ - L"|И|н|ф|о|р|м|а|ц|и|о|н|н|а|я |ч|а|с|т|ь:\n \nЗдесь вы сможете ознакомиться\nс общим описанием предмета.", - L"|П|а|р|а|м|е|т|р|ы:\n \nЗдесь вы сможете ознакомиться\nс индивидуальными свойствами\nи параметрами предмета.\n \nДля оружия: нажмите еще раз,\nчтобы открыть вторую страницу.", - L"|Д|о|п|о|л|н|и|т|е|л|ь|н|а|я| |и|н|ф|о|р|м|а|ц|и|я:\n \nЗдесь вы сможете ознакомиться\nс бонусами, дающимися данным предметом.", -}; - -STR16 gzUDBHeaderTooltipText[]= -{ - L"|О|с|н|о|в|н|ы|е |п|а|р|а|м|е|т|р|ы:\n \nСвойства и данные этого предмета\n(оружие, броня и т.д.).", - L"|Д|о|п|о|л|н|и|т|е|л|ь|н|ы|е| |п|а|р|а|м|е|т|р|ы:\n \nДополнительные свойства и/или\nвозможные вторичные характеристики.", - L"|З|а|т|р|а|т|ы| |О|Д:\n \nКоличество очков действия, необходимых\nна стрельбу и другие действия с оружием.", - L"|С|т|р|е|л|ь|б|а| |о|ч|е|р|е|д|ь|ю| |- |п|а|р|а|м|е|т|р|ы|:\n \nПараметры данного оружия,\nкасающиеся стрельбы очередью.", -}; - -STR16 gzUDBGenIndexTooltipText[]= -{ - L"|С|и|м|в|о|л|ь|н|о|е| |о|б|о|з|н|а|ч|е|н|и|е| |п|а|р|а|м|е|т|р|о|в\n \nНаведите курсор на символ,\nчтобы увидеть, что он значит.", - L"|С|т|а|н|д|а|р|т|н|о|е |з|н|а|ч|е|н|и|е\n \nСтандартное значение праметров предмета\n(без штрафов и бонусов навески и боеприпасов).", - L"|Б|о|н|у|с|ы| |н|а|в|е|с|к|и\n \nБонусы или штрафы, обусловленные\nнавеской, боеприпасами или повреждениями вещи.", - L"|С|у|м|м|а|р|н|о|е| |з|н|а|ч|е|н|и|е\n \nСуммарное значение параметров предмета\nс учетом всех бонусов/штрафов навески и боеприпасов", -}; - -STR16 gzUDBAdvIndexTooltipText[]= -{ - L"Символьное обозначение параметров\n(наведите курсор на символ,\nчтобы увидеть что он значит).", - L"Бонус/штраф в положении |с|т|о|я.", - L"Бонус/штраф в положении |с|и|д|я.", - L"Бонус/штраф в положении |л|ё|ж|а.", - L"Бонус/штраф", -}; - -STR16 szUDBGenWeaponsStatsTooltipText[]= -{ - L"|Т|о|ч|н|о|с|т|ь", - L"|У|р|о|н", - L"|Д|а|л|ь|н|о|с|т|ь", - L"|С|л|о|ж|н|о|с|т|ь |о|б|р|а|щ|е|н|и|я |с |о|р|у|ж|и|е|м", - L"|Д|о|с|т|у|п|н|ы|е |у|р|о|в|н|и |п|р|и|ц|е|л|и|в|а|н|и|я", - L"|К|р|а|т|н|о|с|т|ь |у|в|е|л|и|ч|е|н|и|я |п|р|и|ц|е|л|а", - L"|Д|а|л|ь|н|о|с|т|ь |п|р|о|е|ц|и|р|о|в|а|н|и|я", - L"|С|к|р|ы|т|а|я |в|с|п|ы|ш|к|а |в|ы|с|т|р|е|л|а", - L"|Г|р|о|м|к|о|с|т|ь", - L"|Н|а|д|ё|ж|н|о|с|т|ь", - L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", - L"|М|и|н|. |р|а|с|с|т|о|я|н|и|е |д|л|я |б|о|н|у|с|а |п|р|и |п|р|и|ц|е|л|и|в|а|н|и|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|п|а|д|а|н|и|я", - L"|О|Д |н|а |в|с|к|и|д|ы|в|а|н|и|е", - L"|О|Д |н|а |в|ы|с|т|р|е|л", - L"|О|Д |н|а |с|т|р|е|л|ь|б|у |о|ч|е|р|е|д|ь|ю", - L"|О|Д |н|а |а|в|т|о|м|а|т|и|ч|е|с|к|у|ю |с|т|р|е|л|ь|б|у", - L"|О|Д |н|а |п|е|р|е|з|а|р|я|д|к|у", - L"|О|Д |н|а |д|о|с|ы|л|а|н|и|е |п|а|т|р|о|н|а", - L"|L|a|t|e|r|a|l |R|e|c|o|i|l", // No longer used - L"|П|о|л|н|а|я |о|т|д|а|ч|а", - L"|К|о|л|-|в|о |п|а|т|р|о|н|о|в |н|а |к|а|ж|д|ы|е |5 |О|Д", -}; - -STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= -{ - L"\n \nОпределяет, насколько пули, выпущенные\nиз этого оружия, будут отклоняться от\nточки прицеливания.\n \nДиапазон: 0-100.\nБольше - лучше.", - L"\n \nОпределяет средний урон от\nпуль, выпущенных из этого оружия,\nне учитывающий броню или ее пробитие.\n \nБольше - лучше.", - L"\n \nМаксимальное расстояние (в тайлах),\nна которое пролетит пуля из этого оружия,\nпрежде чем начнет падать на землю.\n \nБольше - лучше.", - L"\n \nОпределяет сложность обращения\nс оружием и стрельбы из него.\n \nБольшая сложность приводит к меньшему\nшансу попасть в цель при прицельной\nи особенно при неприцельной стрельбе.\n \nМеньше - лучше.", - L"\n \nЭто число доступных уровней прицеливания.\n \nЧем МЕНЬШЕ это число, тем БОЛЬШИЙ бонус\nдается за каждый уровень. То есть\nМЕНЬШЕЕ число уровней позволяет быстрее\nприцеливаться без потери точности.\n \nМеньше - лучше.", - L"\n \nПри значении больше 1.0 будет уменьшать кол-во\nошибок прицеливания на расстоянии.\n \nПомните, что сильное увеличение прицела снижает\nточность, если цель находится слишком близко.\n \nЗначение 1.0 означает, что оптический прицел не установлен.", - L"\n \nУменьшает кол-во ошибок прицеливания на расстоянии.\n \nЭтот эффект работает до данного расстояния,\nзатем начинает уменьшаться и, в конце концов,\nпропадает на значительном расстоянии.\n \nБольше - лучше.", - L"\n \nЕсли это свойство активно, то оружие\nне производит вспышку при выстреле.\n \nВраги не смогут обнаружить вас\nтолько по вспышке выстрела, но по-прежнему будут\nслышать вас.", - L"\n \nЭто расстояние в тайлах, на которое распространяется\nзвук стрельбы. В пределах этого расстояния\nвраги смогут услышать звук вашего выстрела.\n \nМеньше - лучше.", - L"\n \nОпределяет, как быстро состояние этого\nоружия ухудшается при использовании.\n \nБольше - лучше.", - L"\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nЖелтый - только техники и некоторые NPC\nмогут починить его свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", - L"\n \nМинимальное расстояние, на котором прицел\nдает бонус к точности прицеливания.", - L"\n \nМодификатор попадания, дающийся лазерным целеуказателем.", - L"\n \nЧисло ОД, необходимое для взятия этого\nоружия на изготовку. После взятия на\nизготовку более не требуется тратить\nэти ОД для всех последующих\nвыстрелов. Оружие автоматически снимается\nс изготовки, если его владелец выполняет\nлюбое другое действие, отличное от стрельбы\nили поворота.\n \nМеньше - лучше.", - L"\n \nЧисло ОД, необходимое для осуществления\nодиночной атаки этим оружием. Для\nстрелкового оружия - стоимость одиночного\nвыстрела без дополнительного\nприцеливания.\n \nЕсли эта иконка серого цвета, то одиночные\nатаки недоступны для этого оружия.\n \nМеньше - лучше.", - L"\n \nЧисло ОД, необходимых для стрельбы\nочередью.\n \nЧисло пуль в каждой очереди определяется\nсамим оружием и указано на этой иконке.\n \nЕсли эта иконка серого цвета, то стрельба\nочередью недоступна для этого оружия.\n \nМеньше - лучше.", - L"\n \nЧисло ОД, необходимых для автоматической\nстрельбы тремя пулями.\n \nЕсли вы хотите выстрелить большим\nчислом пуль, то вам необходимо затратить\nбольшее число ОД.\n \nЕсли эта иконка серого цвета, то автоматическая\nстрельба недоступна для этого оружия.\n \nМеньше - лучше.", - L"\n \nЧисло ОД, необходимых для перезарядки\nэтого оружия.\n \nМеньше - лучше.", - L"\n \nЧисло ОД, необходимых для досылания\nпатрона в патронник между выстрелами.\n \nМеньше - лучше.", - L"\n \nДистанция на которую может сместиться дуло\nв горизонтале между каждой пулей\n в очереди.\n \nПоложительное число указывает на смещение вправо.\nОтрицательное число указывает на смещение влево.\n \nЧем ближе к нулю, тем лучше.", // No longer used - L"\n \nРасстояние, на которое сдвинется ствол\nпри каждом выстреле в режиме очереди\nили автоматической стрельбы, если не задействуется\nсистема противодействия.\n \nМеньше - лучше.", - L"\n \nУказывает, какое количество пуль будет\nдобавлено к очереди или залпу при автоматической\nстрельбе за каждые 5 ОД.\n \nБольше - лучше.", - L"\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nЖелтый - только некоторые NPC\nмогут починить ее свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", -}; - -STR16 szUDBGenArmorStatsTooltipText[]= -{ - L"|С|т|е|п|е|н|ь |з|а|щ|и|т|ы", - L"|П|о|к|р|ы|т|и|е", - L"|С|к|о|р|о|с|т|ь |у|х|у|д|ш|е|н|и|я", - L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", -}; - -STR16 szUDBGenArmorStatsExplanationsTooltipText[]= -{ - L"\n \nЭто основное качество брони, оно определяет\nкакой урон будет заблокирован защитой.\n \nПомните, что бронебойные атаки и различные\nслучайные факторы могут повлиять на\nокончательное снижение урона.\n \nБольше - лучше.", - L"\n \nОпределяет, какая часть защищаемой\nчасти тела покрыта броней. Если покрытие\nменьше 100%, то у любой атаки есть определенный\nшанс на попадание в незащищенную часть тела\nи нанесение ей максимального урона.\n \nБольше - лучше.", - L"\n \nОпределяет, как быстро состояние этой\nброни ухудшается при попадании в\nнее в зависимости от урона от атаки.\n \nМеньше - лучше.", - L"\n \nОпределяет сложность починки этой брони,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nЖелтый - только техники и некоторые NPC\nмогут починить ее свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", - L"\n \nОпределяет сложность починки этой брони,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nЖелтый - только некоторые NPC\nмогут починить ее свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", -}; - -STR16 szUDBGenAmmoStatsTooltipText[]= -{ - L"|П|р|о|б|и|т|и|е |б|р|о|н|и", - L"|У|р|о|н |п|о|с|л|е |п|р|о|б|и|т|и|я", - L"|У|р|о|н |п|е|р|е|д |п|о|п|а|д|а|н|и|е|м", - L"|В|л|и|я|н|и|е |н|а |т|е|м|п|е|р|а|т|у|р|у", - L"|У|р|о|н |о|т |я|д|а", - L"|В|л|и|я|н|и|е |н|а |з|а|г|р|я|з|н|е|н|и|е", -}; - -STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= -{ - L"\n \nСпособность пули пробить броню\nцели. При значении меньше 1.0 пуля снижает\nстепень защиты брони, в которую она\nпопадет. При значении больше 1.0 пуля\nувеличивает степень защиты брони.\n \nМеньше - лучше.", - L"\n \nОпределяет, как будет изменяться урон\nот пули, пробившей броню.\n \nПри значении больше 1.0 урон увеличивается.\n \nПри значении меньше 1.0 урон уменьшается.\n \nБольше - лучше.", - L"\n \nМножитель, применяющийся к показателю\nурона непосредственно перед попаданием\nв цель.\n \nПри значении больше 1.0 урон увеличивается.\n \nПри значении меньше 1.0 урон уменьшается.\n \nБольше - лучше.", - L"\n \nДополнительное тепло, вырабатываемое этими\nбоеприпасами.\n \nМеньше - лучше.", - L"\n \nОпределяет, какой процент урона пули\nбудет ядовитым.", - L"\n \nДополнительное загрязнение, вырабатываемое\nэтими боеприпасами.\n \nМеньше - лучше.", -}; - -STR16 szUDBGenExplosiveStatsTooltipText[]= -{ - L"|У|р|о|н", - L"|У|р|о|н |о|г|л|у|ш|е|н|и|я", - L"|В|з|в|р|ы|в |п|р|и |к|о|н|т|а|к|т|е", - L"|Р|а|д|и|у|с |в|з|р|ы|в|а", - L"|Р|а|д|и|у|с |о|г|л|у|ш|е|н|и|я", - L"|Р|а|д|и|у|с |ш|у|м|а", - L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |с|л|е|з|о|т|о|ч|и|в|о|г|о |г|а|з|а", - L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |г|о|р|ч|и|ч|н|о|г|о |г|а|з|а", - L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |с|в|е|т|а", - L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |д|ы|м|а", - L"|н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |о|г|н|я", - L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |с|л|е|з|о|т|о|ч|и|в|о|г|о |г|а|з|а", - L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |г|о|р|ч|и|ч|н|о|г|о |г|а|з|а", - L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |с|в|е|т|а", - L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |д|ы|м|а", - L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |о|г|н|я", - L"|Д|л|и|т|е|л|ь|н|о|с|т|ь |э|ф|ф|е|к|т|а", - // HEADROCK HAM 5: Fragmentation - L"|Ч|и|с|л|о |о|с|к|о|л|к|о|в", - L"|У|р|о|н |о|т |о|с|к|о|л|к|о|в", - L"|Д|а|л|ь|н|о|с|т|ь |р|а|з|л|ё|т|а |о|с|к|о|л|к|о|в", - // HEADROCK HAM 5: End Fragmentations - L"|Г|р|о|м|к|о|с|т|ь", - L"|Н|е|с|т|а|б|и|л|ь|н|о|с|т|ь", - L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", -}; - -STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= -{ - L"\n \nУрон, наносимый взрывом.\n \nОбратите внимание, что бризантная взрывчатка\nнаносит этот урон только один раз (при взрыве),\nа взрывчатка с длительным эффектом наносит\nурон каждый ход, до тех пор, пока эффект\nне закончится.\n \nБольше - лучше.", - L"\n \nОглушающий урон, наносимый взрывом.\n \nОбратите внимание, что бризантная взрывчатка\nнаносит этот урон только один раз (при взрыве),\nа взрывчатка с длительным эффектом наносит\nурон каждый ход, до тех пор, пока эффект\nне закончится.\n \nБольше - лучше.", - L"\n \nЭта взрывчатка не будет отскакивать от\nпрепятствий, а взорвется при контакте с ними.", - L"\n \nРадиус взрывной волны.\n \nЦели будут получать тем меньший урон,\nчем дальше они от эпицентра взрыва.\n \nБольше - лучше.", - L"\n \nРадиус оглушающей волны.\n \nЦели будут получать тем меньший урон,\nчем дальше они от эпицентра взрыва.\n \nБольше - лучше.", - L"\n \nРасстояние, которое преодолеет шум от\nэтой ловушки. Солдаты в пределах этого расстояния\nсмогут услышать шум и поднять тревогу.\n \nБольше - лучше.", - L"\n \nНачальный радиус действия слезоточивого газа.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nесли только на них не будет противогаза.\n \nБольше - лучше.", - L"\n \nНачальный радиус действия горчичного газа.\n \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"\n \nНачальный радиус пожара.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nесли только на них не будет противогаза.\n \nБольше - лучше.", - L"\n \nКонечный радиус действия слезоточивого газа.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nесли только на них не будет противогаза.\n \nБольше - лучше.", - L"\n \nКонечный радиус действия горчичного газа.\n \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"\n \nКонечный радиус пожара.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nеслитолько на них не будет противогаза.\n \nБольше - лучше.", - L"\n \nДлительность эффекта.\n \nКаждый ход радиус эффекта увеличивается\nна один тайл в каждом направлении, пока не\nдостигнет конечного радиуса. По окончании\nвремени действия эффект полностью\nисчезает.\n \nБольше - лучше.", - // HEADROCK HAM 5: Fragmentation - L"\n \nЧисло осколков при взрыве.\n \nОсколки действуют по принципу пуль, и они могут\nпопасть в любого, кто стоит достаточно близко\nк взрыву.\n \nБольше - лучше.", - L"\n \nПотенциальный урон от каждого осколка,\nобразовавшегося при взрыве.\n \nБольше - лучше.", - L"\n \nСреднее расстояние, на которое полетят осколки\nот взрыва. Некоторые могут пролететь\nгораздо дальше, а некоторые - ближе среднего.\n \nБольше - лучше.", - // HEADROCK HAM 5: End Fragmentations - L"\n \nРасстояние в тайлах, в пределах которого\nсолдаты и наёмники услышат звук взрыва.\n \nВраги, услышавшие его, поймут, что вы в\nсекторе.\n \nМеньше - лучше.", - L"\n \nЭто значение определяет вероятность в\nпроцентах, что эта взрывчатка спонтанно взорвется\nпри ее повреждении (например, при близком взрыве).\n \nНошение с собой в бою нестабильной\nвзрывчатки крайне опасно и не\nрекомендуется.\n \nДиапазон: 0-100.\nМеньше - лучше. ", - L"\n \nОпределяет сложность починки взрывчатки,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", -}; - -STR16 szUDBGenCommonStatsTooltipText[]= -{ - L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", - L"|Д|о|с|т|у|п|н|ы|й |о|б|ъ|ё|м", - L"|О|б|ъ|ё|м", -}; - -STR16 szUDBGenCommonStatsExplanationsTooltipText[]= -{ - L"\n \nОпределяет сложность починки этого предмета,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", - L"\n \nОпределяет сколько доступно места в этом держателе типа MOLLE.\n \nБольше - лучше.", - L"\n \nОпределяет как много места займёт этот MOLLE карман.\n \nМеньше - лучше.", -}; - -STR16 szUDBGenSecondaryStatsTooltipText[]= -{ - L"|Т|р|а|с|с|и|р|у|ю|щ|и|е |п|а|т|р|о|н|ы", - L"|П|р|о|т|и|в|о|т|а|н|к|о|в|ы|е |п|а|т|р|о|н|ы", - L"|И|г|н|о|р|и|р|у|е|т |б|р|о|н|ю", - L"|К|и|с|л|о|т|н|ы|е |п|а|т|р|о|н|ы", - L"|Р|а|з|р|у|ш|а|ю|щ|и|е |з|а|м|к|и |п|а|т|р|о|н|ы", - L"|У|с|т|о|й|ч|и|в|ы|й |к|о |в|з|р|ы|в|а|м", - L"|В|о|д|о|н|е|п|р|о|н|и|ц|а|е|м|ы|й", - L"|Э|л|е|к|т|р|о|н|и|к|а", - L"|П|р|о|т|и|в|о|г|а|з", - L"|Н|у|ж|д|а|е|т|с|я |в |б|а|т|а|р|е|й|к|а|х", - L"|М|о|ж|е|т |в|з|л|а|м|ы|в|а|т|ь |з|а|м|к|и", - L"|М|о|ж|е|т |р|е|з|а|т|ь |п|р|о|в|о|л|о|к|у", - L"|М|о|ж|е|т |р|а|з|р|у|ш|а|т|ь |з|а|м|к|и", - L"|М|е|т|а|л|л|о|и|с|к|а|т|е|л|ь", - L"|П|у|л|ь|т |д|и|с|т|а|н|ц|и|о|н|н|о|г|о |у|п|р|а|в|л|е|н|и|я", - L"|Д|и|с|т|а|н|ц|и|о|н|н|ы|й |д|е|т|о|н|а|т|о|р", - L"|Д|е|т|о|н|а|т|о|р |с |т|а|й|м|е|р|о|м", - L"|С|о|д|е|р|ж|и|т |т|о|п|л|и|в|о", - L"|Н|а|б|о|р |и|н|с|т|р|у|м|е|н|т|о|в", - L"|Т|е|п|л|о|в|а|я |о|п|т|и|к|а", - L"|Р|е|н|т|г|е|н|-|п|р|и|б|о|р", - L"|С|о|д|е|р|ж|и|т |п|и|т|ь|е|в|у|ю |в|о|д|у", - L"|С|о|д|е|р|ж|и|т |а|л|к|о|г|о|л|ь", - L"|А|п|т|е|ч|к|а |п|е|р|в|о|й |п|о|м|о|щ|и", - L"|М|е|д|и|ц|и|н|с|к|и|й |н|а|б|о|р", - L"|Б|о|м|б|а |д|л|я |з|а|м|к|о|в", - L"|Н|а|п|и|т|о|к", - L"|П|и|щ|а", - L"|П|а|т|р|о|н|н|а|я |л|е|н|т|а", - L"|Ж|и|л|е|т |д|л|я |п|а|т|р|о|н|о|в", - L"|Н|а|б|о|р |д|л|я |р|а|з|м|и|н|и|р|о|в|а|н|и|я", - L"|С|к|р|ы|т|ы|й |п|р|е|д|м|е|т", - L"|Н|е|в|о|з|м|о|ж|н|о |п|о|в|р|е|д|и|т|ь", - L"|С|д|е|л|а|н|о |и|з |м|е|т|а|л|л|а", - L"|Т|о|н|е|т", - L"|Д|в|у|р|у|ч|н|о|е", - L"|Б|л|о|к|и|р|у|е|т |о|т|к|р|ы|т|ы|й |п|р|и|ц|е|л", - L"|С|н|а|р|я|д |п|р|о|т|и|в |б|р|о|н|и", - L"|З|а|щ|и|т|а |д|л|я |л|и|ц|а", - L"|И|н|ф|е|к|ц|и|о|н|н|а|я |з|а|щ|и|т|а", // 39 - L"|S|h|i|e|l|d", // TODO.Translate - L"|C|a|m|e|r|a", // TODO.Translate - L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", - L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate - L"|B|l|o|o|d |B|a|g", // 44 - L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", - L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", - L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate - L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate - L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", - L"|B|e|l|t| |F|e|d", -}; - -STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= -{ - L"\n \nЭти боеприпасы создают трассирующий\nэффект при стрельбе очередью или в режиме\nавтоматической стрельбы.\n \nТрассеры помогают точнее стрелять.\n \nТакже трассеры создают области света,\nкоторые освещают цель в темноте. Но они\nтакже выдают врагу положение стрелка.\n \nТрассирующие патроны автоматически отменяют\nдействие любых навесок по гашению вспышки\nвыстрела, установленных на том же оружии.", - L"\n \nЭти боеприпасы могут повредить танковую\nброню. Патроны БЕЗ этого свойства не\nнанесут никакого урона никакому танку.\n \nДаже с этим свойством большинство видов\nоружия не нанесут большого урона, так что\nне ожидайте чего-то особенного.", - L"\n \nЭти боеприпасы полностью игнорируют\nброню.\n \nПри стрельбе по бронированной цели патроны\nбудут вести себя так, как будто цель\nабсолютно не защищена, и нанесут максимально большой\nурон цели.", - L"\n \nПри попадании этих боеприпасов в броню\nпоследняя очень быстро будет разрушаться.\n \nПотенциально с их помощью можно полностью\nлишить цель брони.", - L"\n \nЭти боеприпасы отлично работают\nпри разрушении замков.\n \nСтрельба ими по запертым дверям или контейнерам\nнанесет огромный урон замку.", - L"\n \nЭта броня в три раза более устойчива\nко взрывам.\n \nКогда взрыв попадет в броню, степень защиты\nпоследней будет считаться утроенной\nпо сравнению со стандартным значением.", - L"\n \nЭта вещь водонепронимаема. Она не\nполучает повреждений при погружении под воду.\n \nСостояние вещей БЕЗ этого свойства постепенно\nухудшается, если их владелец плывет.", - L"\n \nСложнотехническая вещь с электроникой.\n \nТакие вещи сложнее чинить, по крайней\nмере без навыков электронщика.", - L"\n \nКогда эта вещь находится на лице\nперсонажа, она защищает его ото всех\nвидов ядовитых газов.\n \nУчтите, что некоторые газы имеют коррозийный\nэффект, так что будут разъедать и маску.", - L"\n \nЭтому предмету требуются батарейки.\nБез них вы не сможете включить данный предмет.\n \nВставляются батарейки так же, как прицел\nприкрепляется к оружию.", - L"\n \nЭтот предмет можно использовать\nдля вскрытия запертых дверей и контейнеров.\n \nВзлом не производит шума, но требует\nзначительных навыков механика, без которых\nвозможно вскрыть лишь самые простые\nзамки. Эта вещь улучшает шанс\nвзлома на ", //JMich_SkillsModifiers: needs to be followed by a number - L"\n \nПри помощи этой вещи можно делать\nпроходы в проволочных заграждениях.\n \nЭто может дать быстрый доступ к\nфлангам или тылу врага.", - L"\n \nЭтой вещью можно разбивать запертые\nдвери или контейнеры. Разбивание требует\nнедюжинной силы, производит много шума и быстро\nтратит энергию персонажа. Однако это отличный\nспособ вскрыть замок без подходящих\nнавыков или отмычек. Эта вещь улучшает\nшанс взлома на ", //JMich_SkillsModifiers: needs to be followed by a number - L"\n \nЭтот предмет используется для нахождения\nобъектов под землей.\n \nОсновное назначение - поиск установленных мин.", - L"\n \nС помощью этого предмета можно\nвзрывать бомбы, на которых установлен\nдистанционный детонатор.\n \nСначала установите бомбу, затем\nвоспользуйтесь дистанционным детонатором для\nвзрыва в нужное вам время.", - L"\n \nЕсли этот детонатор присоединить\nк взрывчатке, то его можно будет взорвать\nпри помощи пульта дистанционного\nуправления.\n \nВзрывчатка с таким детонатором полезна в качестве\nловушки, потому как взрывается только по\nвашему приказу.", - L"\n \nПосле присоединения этого детонатора к\nвзрывчатке и взвода его начинется обратный\nотсчет. По достижении нуля взрывчатка\nвзрывается.", - L"\n \nЭтот предмет содержит в себе\nбензин.\n \nОн может пригодиться, если вам необходимо\nбудет заправить машину.", - L"\n \nЭтот предмет содержит в себе\nразличные инструменты, при помощи которых\nможно чинить другие вещи.\n \nТакой набор необходим, если вы\nхотите дать задание наёмникам чинить\nвещи. Эта вещь изменяет эффективность\nремонта на ", //JMich_SkillsModifiers: need to be followed by a number - L"\n \nЕсли надеть этот предмет, то с его\nпомощью вы сможете увидеть врагов\nчерез стены благодаря выделяемому\nими теплу.", - L"\n \nЭто устройство можно использовать\nдля нахождения врагов при помощи\nрентгеновских лучей.\n \nОно покажет местонахождение всех\nврагов в определенном радиусе на короткое\nвремя.\n \nДержите подальше от репродуктивных органов!", - L"\n \nВ этом предмете находится свежая\nпитьевая вода.\n \nИспользуйте, когда появится жажда.", - L"\n \nВ этом предмете находится огненная вода,\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лечением.", - L"\n \nС помощью этой вещи можно\nвзрывать запертые двери и контейнеры.\n \nДля правильного использования требуется\nнавык обращения со взрывчаткой.\n \nВзрыв очень громкий, и он опасен\nдля большинства персонажей.", - L"\n \nЭтот предмет утолит вашу жажду,\nесли вы выпьете его.", - L"\n \nЭтот предмет утолит ваш голод\n,если вы съедите его.", - L"\n \nВы сможете питать патронами\nчей-нибудь пулемёт, если будете держать\nэту ленту в руках.", - L"\n \nВ этом жилете можно хранить\nпатронные ленты для боепитания вашего\nпулемёта.", - L"\n \nЭтот предмет улучшает шанс\nобезвреживания ловушки на ", - L"\n \nЭтот предмет и все, что к нему\nприсоединено или находится внутри\nнего, скрыто от посторонних глаз.", - L"\n \nЭтот предмет нельзя повредить.", - L"\n \nЭтот предмет сделан из металла.\nОн получает меньше урона, чем\nдругие вещи.", - L"\n \nЭтот предмет тонет в воде.", - L"\n \nДля использования этого предмета\nтребуются обе руки.", - L"\n \nЭтот предмет блокирует открытые\nприцельные приспособления оружия, так что вы не\nсможете воспользоваться ими.", - L"\n \nЭтот боеприпас может уничтожать тонкие стены\nи некоторые другие объекты.", - L"\n \nЕсли одето на лицо, понижает шанс\nзаражения от других людей.", - L"\n \nЕсли хранить в своём кармане,\nпонижается шанс заражения\n от других людей.", - L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate - L"\n \nYou can take photos with this.", // TODO.Translate - L"\n \nThis item makes you more effective at burying corpses.", - L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate - L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 - L"\n \nThis armor lowers fire damage by %i%%.", - L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", - L"\n \nThis item improves your hacking skills by %i%%.", - L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate - L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate - L"\n \nThis ammo can cause fire.", - L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", -}; - -STR16 szUDBAdvStatsTooltipText[]= -{ - L"|М|о|д|и|ф|и|к|а|т|о|р |т|о|ч|н|о|с|т|и", - L"|Ф|и|к|с|и|р|о|в|а|н|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |с|т|р|е|л|ь|б|ы", - L"|П|р|о|ц|е|н|т|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |с|т|р|е|л|ь|б|ы", - L"|Ф|и|к|с|и|р|о|в|а|н|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |п|р|и|ц|е|л|и|в|а|н|и|я", - L"|П|р|о|ц|е|н|т|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |п|р|и|ц|е|л|и|в|а|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |д|о|с|т|у|п|н|ы|х |у|р|о|в|н|е|й |п|р|и|ц|е|л|и|в|а|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|о|г|а |п|р|и|ц|е|л|и|в|а|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |о|б|р|а|щ|е|н|и|я |с |о|р|у|ж|и|е|м ", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|а|д|е|н|и|я |п|у|л|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |о|т|с|л|е|ж|и|в|а|н|и|я |ц|е|л|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |у|р|о|н|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |р|у|к|о|п|а|ш|н|о|г|о |у|р|о|н|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |д|а|л|ь|н|о|с|т|и", - L"|К|р|а|т|н|о|с|т|ь |у|в|е|л|и|ч|е|н|и|я |п|р|и|ц|е|л|а", - L"|Д|а|л|ь|н|о|с|т|ь |п|р|о|е|ц|и|р|о|в|а|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |б|о|к|о|в|о|й |о|т|д|а|ч|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |в|е|р|т|и|к|а|л|ь|н|о|й |о|т|д|а|ч|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |м|а|к|с|и|м|а|л|ь|н|о|г|о |п|р|о|т|и|в|о|д|е|й|с|т|в|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р т|о|ч|н|о|с|т|и |п|р|и |п|р|о|т|и|в|о|д|е|й|с|т|в|и|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |ч|а|с|т|о|т|ы |п|р|о|т|и|в|о|д|е|й|с|т|в|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |в|с|е|х |О|Д", - L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |н|а |в|с|к|и|д|ы|в|а|н|и|е", - L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |о|д|н|о|й |а|т|а|к|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |о|ч|е|р|е|д|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |а|в|т|о|м|а|т|и|ч|е|с|к|о|й |с|т|р|е|л|ь|б|ы", - L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |п|е|р|е|з|а|р|я|д|к|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |р|а|з|м|е|р|а |м|а|г|а|з|и|н|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |р|а|з|м|е|р|а |о|ч|е|р|е|д|и", - L"|С|к|р|ы|т|а|я |в|с|п|ы|ш|к|а |в|ы|с|т|р|е|л|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |г|р|о|м|к|о|с|т|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |р|а|з|м|е|р|а |п|р|е|д|м|е|т|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |н|а|д|ё|ж|н|о|с|т|и", - L"|Л|е|с|н|о|й |к|а|м|у|ф|л|я|ж", - L"|Г|о|р|о|д|с|к|о|й |к|а|м|у|ф|л|я|ж", - L"|П|у|с|т|ы|н|н|ы|й |к|а|м|у|ф|л|я|ж", - L"|З|и|м|н|и|й |к|а|м|у|ф|л|я|ж", - L"|М|о|д|и|ф|и|к|а|т|о|р |с|к|р|ы|т|н|о|с|т|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |с|л|ы|ш|и|м|о|с|т|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |о|б|ы|ч|н|о|й |в|и|д|и|м|о|с|т|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |н|о|ч|н|о|й |в|и|д|и|м|о|с|т|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |д|н|е|в|н|о|й |в|и|д|и|м|o|с|т|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |в|и|д|и|м|о|с|т|и |п|р|и |я|р|к|о|м |с|в|е|т|е", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|е|щ|е|р|н|о|й |в|и|д|и|м|о|с|т|и", - L"|Т|у|н|н|е|л|ь|н|о|е |з|р|е|н|и|е", - L"|М|а|к|с|и|м|а|л|ь|н|о|е |п|р|о|т|и|в|о|д|е|й|с|т|в|и|е", - L"|Ч|а|с|т|о|т|а |п|р|о|т|и|в|о|д|е|й|с|т|в|и|я", - L"|Б|о|н|у|с| |п|о|п|а|д|а|н|и|я", - L"|Б|о|ну|с |п|р|и|ц|е|л|и|в|а|н|и|я", - L"|Т|е|м|п|е|р|а|т|у|р|а |о|д|н|о|г|о |в|ы|с|т|р|е|л|а", - L"|С|к|о|р|о|с|т|ь |о|с|т|ы|в|а|н|и|я", - L"|П|о|р|о|г |о|с|е|ч|к|и", - L"|П|о|р|о|г |п|о|в|р|е|ж|д|е|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |т|е|м|п|е|р|а|т|у|р|ы", - L"|М|о|д|и|ф|и|к|а|т|о|р |о|с|т|ы|в|а|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|о|г|а |о|с|е|ч|к|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|о|г|а |п|о|в|р|е|ж|д|е|н|и|я", - L"|У|р|о|в|е|н|ь |я|д|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |з|а|г|р|я|з|н|е|н|и|я", - L"|М|о|д|и|ф|и|к|а|т|о|р |я|д|а", - L"|У|т|о|л|е|н|и|е |г|о|л|о|д|а", - L"|У|т|о|л|е|н|и|е |ж|а|ж|д|ы", - L"|Р|а|з|м|е|р |п|о|р|ц|и|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |м|о|р|а|л|и", - L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|ч|и", - L"|О|п|т|и|м|а|л|ь|н|а|я |д|а|л|ь|н|о|с|т|ь |л|а|з|е|р|а", - L"|М|о|д|и|ф|и|к|а|т|о|р |о|т|д|а|ч|и |в |%", - L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate - L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", -}; - -// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= -{ - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет значение его точности.\n \nПовышенная точность оружия позволяет\nчаще попадать из него по более удаленным\nцелям.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭтот предмет изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭтот предмет изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанный процент.\n \nБольше - лучше.", - L"\n \nЭтот предмет изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭтот предмет изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанный процент.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭтот предмет изменяет число\nдоступных уровней прицеливания.\n \nЧем МЕНЬШЕ это число, тем БОЛЬШИЙ бонус\nдается за каждый уровень. То есть\nМЕНЬШЕЕ число уровней позволяет быстрее\nприцеливаться без потери точности.\n \nМеньше - лучше.", - L"\n \nЭтот предмет изменяет максимальную\nточность стрелка при использовании огнестрельного\nоружия на указанный процент.\n \nБольше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет сложность обращения\nс ним.\n \nНизкая сложность означает, что с оружием\nлегче управляться независимо от уровня\nприцеливания.\n \nЭтот модификатор основан на изначальной\nсложности обращения с оружием, высокой у винтовок\nи тяжелого вооружения и низкой у пистолетов и ПП.\n \nМеньше - лучше.", - L"\n \nЭтот предмет изменяет вероятность\nпули пролететь дальше максимальной\nдальности выстрела для данного оружия.\n \nВысокий бонус может заставить пулю\nпролететь дальше максимальной дальности\nкак минимум на пару тайлов.\n \nБольше - лучше.", - L"\n \nЭтот предмет изменяет вероятность\nпопадания по бегущей цели.\n \nБольше - лучше.", - L"\n \nЭтот предмет изменяет урон от данного\nоружия на указанное значение.\n \nБольше - лучше.", - L"\n \nЭтот предмет изменяет урон от данного\nоружия ближнего боя на указанное значение.\n \nБольше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет максимальную дальность\nвыстрела.\n \nМаксимальная дальность - это расстояние, пролетев которое,\nпуля начнет падать на землю.\n \nБольше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет дает возможность оптического\nприближения удаленных целей.\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"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести огонь очередями, этот\nпредмет изменяет вертикальную отдачу\nпри такой стрельбе на указанный процент.\n \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"\n \nЭтот предмет изменяет частоту,\nс которой стрелок при стрельбе очередями\nоценивает, сколько ему нужно приложить сил\nдля противодействия отдаче.\n \nБольшая частота означает, что при правильном \nприложении силы очередь в целом будет точнее.\n \nБольше - лучше.", - L"\n \nЭтот предмет напрямую изменяет\nколичество ОД, доступных персонажу\nв начале каждого хода.\n \nБольше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество ОД,\nтребуемых для взятия оружия на изготовку.\n \nМеньше - лучше.", - L"\n \nПрисоединенный к любому оружию,\nэтот предмет изменяет количество ОД,\nтребуемых для совершения одной атаки.\n \nОбратите внимание, что для оружия,\nспособного вести огонь очередями,\nэтот модификатор влияет и на этот режим\nстрельбы тоже.\n \nМеньше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести огонь очередями, этот\nпредмет изменяет количество ОД,\nтребуемых для такой стрельбы.\n \nМеньше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести автоматический огонь,\nэтот предмет изменяет количество ОД,\nтребуемых для такой стрельбы.\n \nОбратите внимание, что этот модификатор\nне влияет на стоимость добавления одной\nпули к очереди, а только на начальную стоимость\nочереди.\n \nМеньше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество ОД,\nтребуемых для перезарядки этого оружия.\n \nМеньше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество пуль в\nмагазине, который можно зарядить в это оружие.\n \nБольше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество пуль,\nвыпускаемых очередью.\n \nЕсли изначально у оружия не было режима\nстрельбы очередью, то после присоединения\nэтого предмета указанный режим появится.\n \nИ наоборот, большое отрицательное значение\nданного параметра может полностью\nвыключить этот режим.\n \nБольше ОБЫЧНО лучше, но одной из\nзадач стрельбы очередью является\nэкономия патронов...", - L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет будет скрывать вспышку\nвыстрела.\n \nБлагодаря этому враги не смогут обнаружить\nстрелка по вспышке, что особенно важно\nночью.", - L"\n \nПрисоединенный к оружию, этот предмет\nизменяет расстояние, с которого звук выстрела\nэтого оружия слышен врагами и наёмниками.\n \nЕсли этот модификатор опускает\nзначение громкости оружия до 0,\nто оружие считается совершенно бесшумным.\n \nМеньше - лучше.", - L"\n \nЭтот предмет изменяет размер\nлюбой другой вещи, к которой\nон присоединен.\n \nРазмер вещей важен в новой\nсистеме инвентаря, в которой в слоты\nможно поместить вещи определенных\nразмеров и форм.\n \nУвеличив размер вещи, вы уже не сможете\nпоместить ее в слот, в который\nона раньше спокойно вмещалась.\n \nУменьшив размер вещи, вы сможете\nпоместить ее в слот меньшего размера\nили же поместить больше таких вещей\nв тот же слот.\n \nВ целом, меньше - лучше.", - L"\n \nПрисоединенный к любому оружию,\nэтот предмет изменяет надежность этого\nоружия.\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Больше - лучше.", - L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет значение\nпустынного камуфляжа владельца.\n \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"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень слуха\nвладельца на указанный процент.\n \nПри положительном значении владелец\nсможет услышать шум с более дальних\nрасстояний, и наоборот.\n \nБольше - лучше.", - L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень зрения\nвладельца на указанный процент.\n \nЭтот модификатор работает для всех\nусловий.\n \nБольше - лучше.", - L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень зрения\nвладельца на указанный процент.\n \nЭтот модификатор работает для ночных\nусловий.\n \nБольше - лучше.", - L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень зрения\nвладельца на указанный процент.\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Больше - лучше.", - L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет поле зрения\nвладельца.\n \nБольшее значение означает более выраженный\nэффект туннельного зрения.\n \nМеньше - лучше.", - L"\n \nСпособность стрелка справляться с\nотдачей при стрельбе очередями или автоматической\nстрельбе.\n \nБольше - лучше.", - L"\n \nСпособность стрелка чаще оценивать,\nсколько ему нужно приложить сил\nдля противодействия отдаче.\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Больше - лучше.", - L"\n \nОдиночный выстрел повышает температуру\nна это значение.\n \nРазличные типы боеприпасов и навесок\nвлияют на это значение.\n \nМеньше - лучше.", - L"\n \nКаждый ход температура снижается\nна это значение.\n \nБольше - лучше.", - L"\n \nЕсли температура выше этого значения,\nто оружие будет давать осечки чаще.\n \nБольше - лучше.", - L"\n \nЕсли температура предмета выше этого\nзначения, то его состояние будет ухудшаться\nбыстрее.\n \nБольше - лучше.", - L"\n \nОдиночный выстрел из оружия будет\nповышать температуру на этот процент.\n \nМеньше - лучше. ", - L"\n \nСкорость остывания оружия изменяется\nна этот процент.\n \nБольше - лучше.", - L"\n \nПорог осечки для оружия изменяется\nна этот процент.\n \nБольше - лучше.", - L"\n \nПорог повреждения оружия изменяется\nна этот процент.\n \nБольше - лучше.", - L"\n \nОпределяет, какой процент от нанесенного\nурона будет ядовитым.\n \nЭффективность определяется степенью защиты\nили поглощения яда у врага.", - L"\n \nОдиночный выстрел загрязняет оружие\nна это значение.\n \nРазличные типы боеприпасов и навесок\nвлияют на это значение.\n \nМеньше - лучше.", - L"\n \nКоличество энергии в килокалориях.\n \nБольше - лучше.", - L"\n \nОбъем воды в литрах.\n \nБольше - лучше.", - L"\n \nОпределяет, какой процент\nбудет съеден за раз.\n \nМеньше - лучше.", - 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"", - 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 - L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", -}; - -STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= -{ - L"\n \nТочность этого оружия изменена\nбоеприпасами, навеской или внутренними\nсвойствами.\n \nПовышенная точность оружия позволяет\nчаще попадать из него по более удаленным\nцелям.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭто оружие изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭто оружие изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанный процент.\n \nБольше - лучше.", - L"\n \nЭто оружие изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЭто оружие изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанный процент.\n \nДиапазон: -100..+100.\nБольше - лучше.", - L"\n \nЧисло доступных уровней прицеливания\n для этого оружия изменено боеприпасами,\nнавеской или внутренними свойствами.\n \nЧем МЕНЬШЕ это число, тем БОЛЬШИЙ бонус\nдается за каждый уровень. То есть\nМЕНЬШЕЕ число уровней позволяет быстрее\nприцеливаться без потери точности.\n \nМеньше - лучше.", - L"\n \nЭто оружие изменяет максимальную\nточность стрелка на указанный процент.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют сложность\nобращения с ним.\n \nНизкая сложность означает, что с оружием\nлегче управляться независимо от уровня\nприцеливания.\n \nЭтот модификатор основан на изначальной\nсложности обращения с оружием, высокой у винтовок\nи тяжелого вооружения и низкой у пистолетов и ПП.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия или его\nвнутренние свойства изменили вероятность\nпули пролететь дальше максимальной\nдальности выстрела для данного оружия.\n \nВысокий бонус может увеличить максимальную\nдальность как минимум на пару тайлов.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия или его\nвнутренние свойства изменили вероятность\nпопадания по бегущей цели.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили урон от данного\nоружия на указанное значение.\n \nБольше - лучше.", - L"\n \nНавеска или внутренние свойства данного\nоружия ближнего боя изменили урон\nна указанное значение.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили максимальную дальность выстрела.\n \nМаксимальная дальность - это расстояние, пролетев которое,\n пуля начнет падать на землю.\n \nБольше - лучше.", - L"\n \nЭто оружие оборудовано оптическим\nприцелом, что позволяет уверенно поражать\nудаленные цели.\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Меньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили силу вертикальной отдачи.\n \nСнижение отдачи позволяет дольше\nудерживать ствол оружия в направлении цели\nво время залпа.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют способность\nстрелка справляться с отдачей\nпри стрельбе очередями.\n \nВысокое значение позволяет уверенно\nконтролировать оружие с сильной отдачей\nдаже персонажам с малым значением силы.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют способность\nстрелка при стрельбе очередями\nудерживать ствол оружия направленным\nна цель.\n \nВысокое значение позволяет попадать\nв цель при стрельбе очередями\nдаже на дальних дистанциях.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют частоту,\nс которой стрелок при стрельбе очередями\nоценивает, сколько ему нужно приложить сил\nдля противодействия отдаче.\n \nБольшая частота означает, что при правильном \nприложении силы очередь в целом будет точнее.\n \nБольше - лучше.", - L"\n \nЕсли это оружие держать в руках,\nто оно изменит количество ОД,\nдоступных его владельцу на начало\nкаждого хода.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nвзятия оружия на изготовку.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nсовершения одной атаки.\n \nОбратите внимание, что для оружия,\nспособного вести огонь очередями,\nэтот модификатор влияет и на эти режимы\nстрельбы тоже.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nстрельбы очередями.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nавтоматической стрельбы.\n \nОбратите внимание, что этот модификатор\nне влияет на стоимость добавления одной\nпули к очереди, а только на начальную стоимость\nочереди.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nперезарядки оружия.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили количество пуль в\nмагазине, который можно зарядить в это оружие.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили количество пуль,\nвыпускаемых очередью.\n \nЕсли изначально у оружия не было режима\nстрельбы очередью, то после присоединения\nэтого предмета указанный режим появится.\n \nИ наоборот, большое отрицательное значение\nданного параметра может полностью\nвыключить этот режим.\n \nБольше ОБЫЧНО лучше, но одной из\nзадач стрельбы очередью является\nэкономия патронов...", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nскрывают вспышку\nвыстрела.\n \nБлагодаря этому враги не смогут обнаружить\nстрелка по вспышке, что особенно важно\nночью.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили расстояние, с которого звук выстрела\nэтого оружия слышен врагами и наёмниками.\n \nЕсли этот модификатор опускает\nзначение громкости оружия до 0,\nто оружие считается совершенно бесшумным.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили размер\nэтого оружия.\n \nРазмер вещей важен в новой\nсистеме инвентаря, в которой в слоты\nможно поместить вещи определенных\nразмеров и форм.\n \nУвеличив размер вещи, вы уже не сможете\nпоместить ее в слот, в который\nона раньше помещалась.\n \nУменьшив размер вещи, вы сможете\nпоместить ее в слот меньшего размера\nили же поместить больше таких вещей\nв тот же слот.\n \nВ целом, меньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили надежность этого оружия.\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Больше - лучше.", - L"\n \nЕсли это оружие держать в руках,\nто оно изменит значение\nпустынного камуфляжа владельца.\n \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"\n \nЕсли это оружие держать в руках,\nто оно изменит уровень слуха\nвладельца на указанный процент.\n \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Больше - лучше.", - L"\n \nЕсли взять это оружие на изготовку, оно изменит\nуровень зрения его владельца на\nуказанный процент благодаря навеске\nили внутренним свойствам оружия.\n \nЭтот модификатор работает для условий,\nкогда освещенность средняя или выше.\n \nБольше - лучше.", - L"\n \nЕсли взять это оружие на изготовку, оно изменит\nуровень зрения его владельца на\nуказанный процент благодаря навеске\nили внутренним свойствам оружия.\n \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Меньше - лучше.", - L"\n \nСпособность стрелка справляться с\nотдачей при стрельбе очередями или автоматической\nстрельбе.\n \nБольше - лучше.", - L"\n \nСпособность стрелка чаще оценивать\nсколько ему нужно приложить сил\nдля противодействия отдаче.\n \nМеньшая частота означает, что при правильном\nприложении силы очередь в целом будет точнее.\n \nМеньше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили шанс попадания из\nэтого оружия.\n \nПри условии точного прицеливания\nповышенный шанс позволяет чаще попадать\nиз оружия.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили бонус прицеливания для\nэтого оружия.\n \nПри условии точного прицеливания\nэтот бонус позволяет чаще попадать из\nоружия на дальних дистанциях.\n \nБольше - лучше.", - L"\n \nОдиночный выстрел повышает температуру\nна это значение.\n \nРазличные типы боеприпасов\nвлияют на это значение.\n \nМеньше - лучше.", - L"\n \nКаждый ход температура снижается\nна это значение.\n \nБольше - лучше.", - L"\n \nЕсли температура выше этого значения,\nто оружие будет давать осечки чаще.\n \nБольше - лучше.", - L"\n \nЕсли температура предмета выше этого\nзначения, то его состояние будет ухудшаться\nбыстрее.\n \nБольше - лучше.", - L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили отдачу оружия на\nуказанный процент.\n \nСнижение отдачи позволяет дольше\nудерживать ствол оружия в направлении цели\nво время залпа.\n \nМеньше - лучше.", -}; - -// HEADROCK HAM 4: Text for the new CTH indicator. -STR16 gzNCTHlabels[]= -{ - L"ОДИНОЧНЫЙ", //SINGLE - L"ОД", -}; -////////////////////////////////////////////////////// -// HEADROCK HAM 4: End new UDB texts and tooltips -////////////////////////////////////////////////////// - -// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. -STR16 gzMapInventorySortingMessage[] = -{ - L"В секторе %c%d завершена сборка аммуниции в ящики.", - L"С предметов в секторе %c%d снята вся навеска.", - L"В секторе %c%d всё оружие разряжено.", - L"В секторе %c%d все вещи сгруппированы и объединены.", - // Bob: new strings for emptying LBE items - L"Finished emptying LBE items in sector %c%d.", - L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s - L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) - L"%s is now empty.", // LBE item %s contained stuff and was emptied - L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) - L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) -}; - -STR16 gzMapInventoryFilterOptions[] = -{ - L"Показать всё", - L"Оружие", - L"Патроны", - L"Взрывчатка", - L"Холодное оружие", - L"Броня", - L"Разгруз. системы", - L"Наборы", - L"Прочие предметы", - L"Скрыть всё", -}; - -// MercCompare (MeLoDy) -// TODO.Translate -STR16 gzMercCompare[] = -{ - L"???", - L"Первое мнение:", - - L"Не нравятся %s %s", - L"Симпатизирует %s %s", - - L"Люто ненавидит %s", - L"Ненавидит %s", // 5 - - L"Лютый расист в отношении к %s", - L"Расист в отношении к %s", - - L"Излишне заботится о внешности", - L"Заботится о внешности", - - L"Лютый сексист", // 10 - L"Сексист", - - L"Не нравится другое прошлое", - L"Не нравится другое прошлое", - - L"Затаил обиду", //Past grievances - L"____", // 15 - L"/", - L"* Мнение всегда между [%d; %d]", -}; - -// Flugente: Temperature-based text similar to HAM 4's condition-based text. -STR16 gTemperatureDesc[] = -{ - L"Температура ", - L"очень низкая", - L"низкая", - L"умеренная", - L"высокая", - L"очень высокая", - L"опасная", - L"КРИТИЧЕСКАЯ", - L"ФАТАЛЬНАЯ", - L"неизвестна", - L"." -}; - -// Flugente: food condition texts -STR16 gFoodDesc[] = -{ - L"Пища ", - L"свежая", - L"хорошая", - L"нормальная", - L"несвежая", - L"порченная", - L"подгнившая", - L"." -}; - -CHAR16* ranks[] = -{ L"", //ExpLevel 0 - L"Рядовой ", //ExpLevel 1 - L"Ефрейтор ", //ExpLevel 2 - L"Мл. сержант ", //ExpLevel 3 - L"Сержант ", //ExpLevel 4 - L"Лейтенант ", //ExpLevel 5 - L"Капитан ", //ExpLevel 6 - L"Майор ", //ExpLevel 7 - L"Подполк. ", //ExpLevel 8 - L"Полковник ", //ExpLevel 9 - L"Генерал " //ExpLevel 10 -}; - - -STR16 gzNewLaptopMessages[]= -{ - L"Спрашивайте о нашем специальном предложении!", - L"Временно недоступно", - L"Ознакомительная игра 'Jagged Alliance 2: Цена Свободы' содержит только первые 6 карт секторов. Финальная версия игры будет включать в себя гораздо больше возможностей (полная информация содержится в приложенном файле Readme.txt).", -}; - -STR16 zNewTacticalMessages[]= -{ - //L"Расстояние до цели: %d ед., Освещенность: %d/%d", - L"Передатчик подключен к вашему ноутбуку.", - L"Вы не можете нанять %s", - L"Предложение действует ограниченное время и покрывает стоимость найма на всю миссию, плюс вы так же получите оборудование, перечисленное ниже.", - L"Наёмник %s - наше невероятное суперпредложение 'одна плата за все'. Вы также бесплатно получите его персональную экипировку.", - L"Гонорар", - L"В секторе кто-то есть...", - //L"Дальнобойность оружия: %d ед., Шанс попасть: %d%%", - L"Показать укрытия", - L"Линия прицела", - L"Новые наёмники не могут высадиться здесь.", - L"Так как ваш ноутбук лишился антенны, то вы не сможете нанять новых наёмников. Возможно, сейчас вам стоит загрузить одну из сохраненных игр, или начать игру заново!", - L"%s слышит металлический хруст под телом Джерри. Кажется, это чмо сломало антенну вашего ноутбука.", //the %s is the name of a merc. - L"После прочтения записей, оставленных помощником командира Морриса, %s видит, что не все еще потеряно. В записке содержатся координаты городов Арулько для запуска по ним ракет. Кроме того, там также указаны координаты самой ракетной базы.", - L"Изучив панель управления, %s понимает, что координаты цели можно изменить, и тогда ракета уничтожит эту базу. %s не собирается умирать, а значит нужно быстрее отсюда выбираться. Похоже, что самый быстрый способ это лифт...", - L"В начале игры вы выбрали сохранение \"между боями\", поэтому нельзя сохранить игру во время боя.", - L"(Нельзя сохраняться во время боя)", - L"Название кампании длиннее 30 символов.", - L"Текущая кампания не найдена.", - L"Кампания: По умолчанию ( %S )", - L"Кампания: %S", - L"Вы выбрали кампанию %S. Она является модификацией оригинальной игры Цена Свободы. Вы уверены, что хотите играть кампанию %S?", - L"Чтобы воспользоваться редактором, смените кампанию по умолчанию на другую.", - // anv: extra iron man modes - L"В начале игры вы выбрали сохранение \"между перестрелками\", поэтому нельзя сохранить игру в пошаговом режиме.", - L"В начале игры вы выбрали сохранение \"один раз в день\", поэтому сохранить игру можно лишь раз в сутки, в %02d:00.", -}; - -// The_bob : pocket popup text defs -STR16 gszPocketPopupText[]= -{ - L"Гранатомёты", // POCKET_POPUP_GRENADE_LAUNCHERS, - L"Ракетницы", // POCKET_POPUP_ROCKET_LAUNCHERS - L"Холодное и метательное оружие", // POCKET_POPUP_MEELE_AND_THROWN - L"- нет подходящих патронов -", //POCKET_POPUP_NO_AMMO - L"- нет оружия в инвентаре -", //POCKET_POPUP_NO_GUNS - L"ещё...", //POCKET_POPUP_MOAR -}; - -// Flugente: externalised texts for some features -STR16 szCovertTextStr[]= -{ - L"%s одет в камуфляж!", - L"%s несет рюкзак!", - L"%s несет труп!", - L"%s: %s выглядит подозрительно!", - L"%s: %s - это военное оборудование!", - L"%s несет слишком много оружия!", - L"%s: %s слишком круто для солдата %s!", - L"%s: Слишком много навески на %s!", - L"%s занимается подозрительной деятельностью!", - L"%s не выглядит как гражданский!", - L"%s имеет кровотечение!", - L"%s пьян и ведет себя не как солдат!", - L"При ближайшем рассмотрении, маскировка %s не выдерживает проверки!", - L"%s не должен находиться здесь!", - L"%s не должен находиться здесь в данное время!", - L"%s был замечен около свежего трупа!", - L"%s имеет нестандартную экипировку!", - L"%s целится в %s!", - L"%s сумел разоблачить маскировку %s!", - L"В Items.xml нет предметов одежды!", - L"Не работает со старой системой (OAS)!", - L"Недостаточно ОД!", - L"Обнаружена неверная палитра!", - L"Вам необходим навык шпиона для этого!", - L"Не найдена униформа!", - L"%s переоделся в гражданского.", - L"%s переоделся в солдата.", - L"%s носит униформу неправильного образца!", - L"Требовать сдачи в плен, будучи переодетым, было не очень осмотрительно...", - L"%s был разоблачен!", - L"%s: маскировка выглядит нормально...", - L"%s: маскировка не выдержит проверки.", - L"%s был пойман на краже!", - L"%s пытался залезть в инвентарь %s.", - L"Элитный солдат не распознал %s!", // TODO.Translate - L"Офицер не знаком с %s!", -}; - -STR16 szCorpseTextStr[]= -{ - L"Предмета 'голова' не найдено в Items.xml!", - L"Тело невозможно обезглавить!", - L"Мясных изделий не найдено в Items.xml!", - L"Ты больной! Тебе лечиться надо! Действие невозможно.", - L"Снимать с тела нечего!", - L"%s не может снять одежду с этого трупа!", - L"Это тело невозможно забрать с собой!", //This corpse cannot be taken! - L"Освободите руки, чтобы тянуть тело!", //No free hand to carry corpse - L"Предметов тела не найдено в Items.xml!", //No corpse item found in Items.xml - L"Неверный ID тела!", //Invalid corpse ID -}; - -STR16 szFoodTextStr[]= -{ - L"%s не хочет есть %s", - L"%s не хочет пить %s", - L"%s ест %s", - L"%s пьёт %s", - L"%s ослабел от переедания!", - L"%s ослабел от голода!", - L"%s потерял здоровье от переедания!", - L"%s потерял здоровье от голода!", - L"%s ослабел от того, что выпил слишком много воды!", - L"%s ослабел от жажды!", - L"%s потерял здоровье от того, что выпил слишком много воды!", - L"%s потерял здоровье от жажды!", - L"Наполнение фляжек в секторе невозможно, Система Еды отключена!" -}; - -STR16 szPrisonerTextStr[]= -{ - L"%d офицеров, %d спецназа, %d солдат, %d полиции, %d генералов и %d гражданских было допрошено", - L"Gained $%d as ransom money.", // TODO.Translate - L"%d пленных выдали расположение отрядов армии.", - L"%d офицеров, %d спецназ, %d рядовых и %d полицейских решили присоединиться к нам.", - L"Пленные устроили бунт в %s!", - L"%d пленные были отправлены в %s!", - L"Пленные были отпущены!", - L"Армия контролирует тюрьму %s, все пленные были освобождены!", - L"Противник отказывается сдаться!", - L"Противник отказывается взять вас в плен - они предпочли бы видеть вас мертвыми!", - L"Этот режим отключен в настройках.", - L"%s освободил %s!", - L"В %s был раскрыт высокопоставленный офицер!", - L"Вражеский командир отказывается даже подумать о сдаче!", - L"%d заключенных добровольно присоединились к нашим силам.", - L"Some of your mercs managed to escape the enemy capture!", - L"No possible escape is seen, it's a fight to the death!" -}; - -STR16 szMTATextStr[]= -{ - L"ничего", - L"укрепление строится", - L"укрепление убирается", - L"взлом", - L"%s был вынужден прекратить %s.", - L"Выбранное укрепление не может быть построено в этом секторе", -}; - -STR16 szInventoryArmTextStr[]= -{ - L"Взорвать (%d ОД)", - L"Взорвать", - L"Активировать (%d ОД)", - L"Активировать", - L"Обезвредить (%d ОД)", - L"Обезвредить", -}; - -STR16 szBackgroundText_Flags[]= -{ - L" может употреблять наркотики из инвентаря\n", - L" вне зависимости от других особенностей биографии\n", - L" +1 уровень в подземных секторах\n", - L" steals money from the locals sometimes\n", // TODO.Translate - - L" +1 уровень ловушек при установке мин\n", - L" разлагает других наёмников\n", - L" только женский", // won't show up, text exists for compatibility reasons - L" только мужской", // won't show up, text exists for compatibility reasons - - L" значительный штраф к лояльности во всех городах, если умирает\n", - - L" отказывается атаковать животных\n", - L" отказывается атаковать тех, кто состоит в той же группе\n", -}; - -STR16 szBackgroundText_Value[]= -{ - L" %s%d%% ОД в холодных секторах\n", - L" %s%d%% ОД в пустынных секторах\n", - L" %s%d%% ОД в болотных секторах\n", - L" %s%d%% ОД в городских секторах\n", - L" %s%d%% ОД в лесных секторах\n", - L" %s%d%% ОД на равнинных секторах\n", - L" %s%d%% ОД в речных секторах\n", - L" %s%d%% ОД в тропических секторах\n", - L" %s%d%% ОД в секторах на побережье\n", - L" %s%d%% ОД в горных секторах\n", - - L" %s%d%% подвижность\n", - L" %s%d%% ловкость\n", - L" %s%d%% сила\n", - L" %s%d%% лидерство\n", - L" %s%d%% меткость\n", - L" %s%d%% механика\n", - L" %s%d%% взрывчатка\n", - L" %s%d%% медицина\n", - L" %s%d%% интеллект\n", - - L" %s%d%% ОД на крышах\n", - L" %s%d%% ОД для плавания\n", - L" %s%d%% ОД для строительства укреплений\n", - L" %s%d%% ОД для стрельбы из миномётов\n", - L" %s%d%% ОД для доступа к инвентарю\n", - L" смотрит в разных направлениях при высадке\n %s%d%% ОД после высадки\n", - L" %s%d%% ОД на первом ходу при штурме сектора\n", - - L" %s%d%% скорость движения пешком\n", - L" %s%d%% скорость движения на машине\n", - L" %s%d%% скорость движения на воздушном транспорте\n", - L" %s%d%% скорость движения на водном транспорте\n", - - L" %s%d%% сопротивление страху\n", - L" %s%d%% сопротивление подавлению\n", - L" %s%d%% физическое сопротивление\n", - L" %s%d%% сопротивление алкогол.\n", - L" %s%d%% сопротивление заболеванию\n", - - L" %s%d%% эффективность ведения допроса\n", - L" %s%d%% эффективность тюремной охраны\n", - L" %s%d%% лучше цены при торговле оружием и патронами\n", - L" %s%d%% лучшие цены при торговле броней, разгрузками, ножами, наборам и др.\n", - L" %s%d%% к силе капитуляции при ведении переговоров\n", - L" %s%d%% быстрее бег\n", - L" %s%d%% скорость перевязки\n", - L" %s%d%% востановление дыхания\n", - L" %s%d%% сила для переноски вещей\n", - L" %s%d%% потребление еды\n", - L" %s%d%% потребление воды\n", - L" %s%d потребность в сне\n", - L" %s%d%% урон от ножей\n", - L" %s%d%% точность атаки ножами\n", - L" %s%d%% эффективность камуфляжа\n", - L" %s%d%% скрытность\n", - L" %s%d%% макс. шанс попадания\n", - L" %s%d дальность слуха ночью\n", - L" %s%d дальность слуха днем\n", - L" %s%d эффективность при разминировании ловушек\n", - L" %s%d%% шанс попадания ПВО\n", - - L" %s%d%% эффективность дружеского обращения\n", - L" %s%d%% эффективность прямого обращении\n", - L" %s%d%% эффективность угроз\n", - L" %s%d%% эффективность найма\n", - - L" %s%d%% шанс попадания с вышибными зарядами\n", - L" %s%d%% шанс попадания с оружием против животных\n", - L" %s%d%% стоимость страховки\n", - L" %s%d%% эффективность наблюдателя в снайперской паре\n", - L" %s%d%% эффективность в диагностике заболевания\n", - L" %s%d%% эффективность в лечении населения от болезней\n", - L"Замечает следы на расстоянии до %d метров\n", - L" %s%d%% начальное расстояние до противника в засаде\n", - L" %s%d%% шанс избежать укуса змей\n", - - L" не нравиться другое прошлое\n", - L"Курит", - L"Не курит", - L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", - L" %s%d%% кровотечение\n", - L" Взлом: %s%d ", - L" %s%d%% burial speed\n", // TODO.Translate - L" %s%d%% administration effectiveness\n", // TODO.Translate - L" %s%d%% exploration effectiveness\n", // TODO.Translate -}; - -STR16 szBackgroundTitleText[] = -{ - L"I.M.P. Биография", -}; - -// Flugente: personality -STR16 szPersonalityTitleText[] = -{ - L"I.M.P. Предубеждения", -}; - -STR16 szPersonalityDisplayText[]= -{ - L"Вы выглядите", - L"и ваша внешность", - L"важна для вас.", - L"У вас", - L" и вы", - L"переживаете за это.", - L"Вы", - L"и ненавидите всех", - L".", - L"расист по отношению к не ", - L".", -}; - -// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! -STR16 szPersonalityHelpText[]= -{ - L"Как вы выглядите?", - L"Насколько для вас важен внешний вид других?", - L"Ваша манера поведения?", - L"Насколько для вас важна манера поведения других?", - L"Ваша национальность?", - L"Какая национальность вам неприятна?", - L"Насколько вам неприятна эта национальность?", - L"насколько вы расист?", - L"Ваша раса? Вы будете\nотноситься плохо к другим расам.", - L"Насколько вы сексист по отношению к другим полам?", -}; - - -STR16 szRaceText[]= -{ - L"белым", - L"черным", - L"азиатам", - L"эскимосам", - L"испанцам", -}; - -STR16 szAppearanceText[]= -{ - L"средне", - L"уродливо", - L"невзрачно", - L"привлекательно", - L"как ребенок", -}; - -STR16 szRefinementText[]= -{ - L"обычное поведение", - L"хамское поведение", - L"снобское поведение", -}; - -STR16 szRefinementTextTypes[] = -{ - L"нормальные люди", - L"жлобы", - L"снобы", -}; - -STR16 szNationalityText[]= -{ - L"Американец", // 0 - L"Араб", - L"Австралиец", - L"Британец", - L"Канадец", - L"Кубинец", // 5 - L"Датчанин", - L"Француз", - L"Русский", - L"Traconian", // UB takes place in Tracona - L"Швейцарец", // 10 - L"Ямаец", - L"Поляк", - L"Китаец", - L"Ирладец", - L"Южноафриканец", // 15 - L"Венгр", - L"Шотландец", - L"Арулькиец", - L"Немец", - L"Африканец", // 20 - L"Итальянец", - L"Голландец", - L"Румын", - L"Метавирец", - - // newly added from here on - L"Afghan", // 25 - L"Албанец", - L"Аргентинец", - L"Армянин", - L"Азербайджанец", - L"Bangladeshi ", // 30 - L"Белорус", - L"Бельгиец", - L"Beninese", - L"Боливиец", - L"Bosnian", // 35 - L"Бразилец", - L"Болгарин", - L"Cambodian", - L"Chadian", - L"Чилиец", // 40 - L"Колумбиец", - L"Congolese", - L"Croatian", - L"Ecuadorian", - L"Египтянин", // 45 - L"English", - L"Eritrean", - L"Эстонец", - L"Эфиоп", - L"Filipino", // 50 - L"Финн", - L"Грузин", - L"Грек", - L"Guatemalan", - L"Haitian", // 55 - L"Honduran", - L"Индиец", - L"Indonesian", - L"Иранец", - L"Иракец", // 60 - L"Islandic", - L"Израильтянин", - L"Японец", - L"Иорданец", - L"Казахстанец", // 65 - L"Кореец", - L"Кыргызстанец", - L"Laotian", - L"Latvian", - L"Lebanese", // 70 - L"Lithuanian", - L"Lybian", - L"Macedonian", - L"Malaysian", - L"Мексиканец", // 75 - L"Монгол", - L"Moroccan", - L"Mozambican", - L"Myanma", - L"Namibian", // 80 - L"Nicaraguan", - L"Нигериец", - L"Nigerien", - L"Норвежец", - L"Пакистанец", // 85 - L"Панамец", - L"Португалец", - L"Rwandanese", - L"Сальвадорец", - L"Саудовец", // 90 - L"Серб", - L"Slovakian", - L"Slovenian", - L"Сомалиец", - L"Испанец", // 95 - L"Sudanese", - L"Швед", - L"Сириец", - L"Таец", - L"Togolese", // 100 - L"Tunisian", - L"Турок", - L"Ugandan", - L"Украинец", - L"Uruguayan", // 105 - L"Узбекистанец", - L"Венесуэлец", - L"Vietnamese", - L"Валлиец", - L"Yemeni", // 110 - L"Zamundan", // Zamunda - L"Зимбабвиец", -}; - -STR16 szNationalityTextAdjective[] = -{ - L"американцев", // 0 - L"арабов", - L"австралийцев", - L"британцев", - L"канадцев", - L"кубинцев", // 5 - L"датчан", - L"французов", - L"русских", - L"traconians", - L"швейцарцев", // 10 - L"ямайцев", - L"поляков", - L"китайцев", - L"ирладцев", - L"южноафриканцев", // 15 - L"венгров", - L"шотландецев", - L"арулькийцев", - L"немцев", - L"африканцев", // 20 - L"итальянцев", - L"голландцев", - L"румынов", - L"метавирцев", - - // newly added from here on - L"afghans", // 25 - L"албанцев", - L"аргентинцев", - L"армян", - L"азербайджанцев", - L"bangladeshi", // 30 - L"белорусов", - L"бельгийцев", - L"beninese", - L"боливийцев", - L"bosnians", // 35 - L"бразильцев", - L"болгаров", - L"cambodians", - L"chadians", - L"чилийцев", // 40 - L"колумбийцев", - L"congolese", - L"croatians", - L"ecuadorians", - L"египтян", // 45 - L"englishmen", - L"eritreans", - L"эстонцев", - L"эфиопов", - L"filipinos", // 50 - L"финнов", - L"грузин", - L"греков", - L"guatemalans", - L"haitians", // 55 - L"hondurans", - L"индийцев", - L"indonesians", - L"иранцев", - L"иракцев", // 60 - L"islandics", - L"израильтянинов", - L"японцев", - L"иорданцев", - L"казахстанцев", // 65 - L"корейцев", - L"кыргызстанцев", - L"laotians", - L"latvians", - L"lebanese", // 70 - L"lithuanians", - L"lybians", - L"macedonians", - L"malaysians", - L"мексиканцев", // 75 - L"монголов", - L"moroccans", - L"mozambicans", - L"myanmarians", - L"namibians", // 80 - L"nicaraguans", - L"нигерийцев", - L"nigeriens", - L"норвежцев", - L"пакистанцев", // 85 - L"панамцев", - L"португальцев", - L"rwandanese", - L"сальвадорцев", - L"саудовцев", // 90 - L"сербов", - L"slovakians", - L"slovenians", - L"сомалийцев", - L"испанцев", // 95 - L"sudanese", - L"шведов", - L"сирийцев", - L"тайцев", - L"togolese", // 100 - L"tunisians", - L"турков", - L"ugandans", - L"украинцев", - L"uruguayans", // 105 - L"узбекистанцев", - L"венесуэльцев", - L"vietnamese", - L"валлийцев", - L"yemenites", // 110 - L"zamundans", // Zamunda - L"зимбабвийцев", -}; - -// special text used if we do not hate any nation (value of -1) -STR16 szNationalityText_Special[]= -{ - L"нормально относится к другим национальностям.", // used in personnel.cpp - L"неизвестно", // used in IMP generation -}; - -STR16 szCareLevelText[]= -{ - L"не", - L"немного", - L"сильно", -}; - -STR16 szRacistText[]= -{ - L"не", - L"немного", - L"сильно", -}; - -STR16 szSexistText[]= -{ - L"не сексист", - L"сексист", - L"убежденный сексист", - L"джентльмен", -}; - -// Flugente: power pack texts -STR16 gPowerPackDesc[] = -{ - L"Батарейки: ", - L"заряжены", - L"хороший заряд", - L"половина заряда", - L"низкий заряд", - L"разряжены", - L"." -}; - -// WANNE: Special characters like % or someting else should go here -// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) -STR16 sSpecialCharacters[] = -{ - L"%", // Percentage character -}; - -STR16 szSoldierClassName[]= -{ - L"Наёмник", - L"Новобранец", - L"Рядовой", - L"Ветеран", - - L"Гражданский", - - L"Полицейский", - L"Солдат", - L"Спецназ", - L"Танк", - - L"Тварь", - L"Зомби", -}; - -STR16 szCampaignHistoryWebSite[]= -{ - L"Пресс-служба %s", - L"Министерство распространения информации %s", - L"Революционное движение %s", - L"The Times International", - L"International Times", - L"R.I.S. (Служба информационной разведки)", - - L"Информация от %s", - L"Мы - нейтральный источник информации. Мы собираем различные новостные статьи от %s. Мы не оцениваем эти источники - мы просто публикуем их, так что вы сами можете составить свое мнение. Мы публикуем статьи из различных источников, среди них ", - - L" Общая сводка", - L" Боевые отчёты", - L" Новости", - L" О нас", -}; - -STR16 szCampaignHistoryDetail[]= -{ - L"%s, %s %s %s в %s.", - - L"ополченцы", - L"армия", - - L"атаковали", - L"попал в засаду", - L"высадился", - - L"Атака осуществлена с %s.", - L"Подкрепление для %s пришли с %s.", - L"Атакованы с %s, %s получили подкрепления с %s.", - L"севера", - L"востока", - L"юга", - L"запада", - L"и", - L"неизвестно", //an unknown location - - L"Здания в секторе получили повреждения.", - L"Во время боя здания в секторе получили повреждения, %d гражданских были убиты и %d ранены.", - L"Во время атаки %s и %s вызвали подкрепления.", - L"Во время атаки %s вызвали подкрепления.", - L"Очевидцы отмечают использование химического оружия обеими сторонами.", - L"Химическое оружие было использовано %s.", - L"В результате серьезной эскалации конфликта отмечается использование танков обеими сторонами.", - L"%d танков было использовано %s, %d было уничтожено в ожесточенном бою.", - L"Обе стороны утверждают, что использовали снайперов.", - L"По непроверенным данным, у %s в столкновении участвовали снайперы.", - L"Этот сектор имеет большое стратегическое значение, поскольку в нем расположена одна из батарей ПВО, которыми располагает армия %s. Аэрофотосьемка показывает, что центр управления получил серьезные повреждения. В результате воздушное пространство над %s некоторое время будет незащищенным.", - L"Ситуация становится все более запутанной, так как, судя по всему, разногласия между повстанцами достигли серьезного уровня. У нас есть подтверждение, что между повстанцами и иностранными наёмниками произошел бой.", - L"Положение правительственных войск оказалось более шатким, чем представлялось ранее. Есть свидетельства раскола и стрельбы между армейскими подразделениями.", -}; - -STR16 szCampaignHistoryTimeString[]= -{ - L"Глубокой ночью", // 23 - 3 - L"На рассвете", // 3 - 6 - L"Рано утром", // 6 - 8 - L"Утром", // 8 - 11 - L"В полдень", // 11 - 14 - L"После полудня", // 14 - 18 - L"Вечером", // 18 - 21 - L"Ночью", // 21 - 23 -}; - -STR16 szCampaignHistoryMoneyTypeString[]= -{ - L"Начальные финансы", - L"Доход от шахт", - L"Торговля", - L"Другие источники", -}; - -STR16 szCampaignHistoryConsumptionTypeString[]= -{ - L"Патроны", - L"Взрывчатка", - L"Еда", - L"Медикаменты", - L"Обслуживание", -}; - -STR16 szCampaignHistoryResultString[]= -{ - L"Армейские силы были уничтожены без особого сопротивления.", - - L"Повстанцы легко сокрушили противника, нанеся тяжелый урон.", - L"Повстанцы без особых усилий нанесли противнику тяжелый урон и захватили несколько пленных.", - - L"Повстанцы сумели победить противника в результате тяжелого боя. Армия понесла потери.", - L"Повстанцы понесли потери, но смогли нанести поражение правительственным войскам. По непроверенным данным, несколько солдат могли попасть в плен.", - - L"Повстанцы сумели нанести поражение правительственным войскам, но из-за высоких потерь эта победа может оказаться пирровой. Неизвестно, сумеют ли они удержать завоеванные позиции под непрерывными атаками противника.", - - L"Численное превосходство армии принесло свои плоды. Повстанцы не имели ни единого шанса и вынуждены были отступить, чтобы избежать гибели или плена.", - L"Несмотря на численное превосходство повстанцев в этом секторе, армия легко разделалась с ними.", - - L"Повстанцы не были готовы противостоять правительственным войскам, которые превосходили их в численности и вооружении, и были разбиты армией с легкостью.", - L"Несмотря на то, что на стороне повстанцев было численное преимущество, армия оказалась лучше вооружена. Повстанцы потерпели поражение", - - L"В результате ожесточенного боя обе стороны понесли существенные потери, но в итоге сказалось численное преимущество армии. Повстанцы были разгромлены. Возможно, часть из них сумела выжить, но в настоящий момент мы не можем проверить эту информацию.", - L"В произошедшей интенсивной перестрелке сказалась лучшая подготовка армии, и повстанцы были вынуждены отступить.", - - L"Ни одна из сторон не собиралась уступать. Несмотря на то, что армия устранила угрозу восстания в районе, понесенные потери означают, что армейское подразделение существует только формально. Однако, если армия может позволить себе воевать с таким уровнем потерь, повстанцы очень скоро физически закончатся.", -}; - -STR16 szCampaignHistoryImportanceString[]= -{ - L"Неприменимый", - L"Неважный", - L"Заметный", - L"Примечательный", - L"Существенный", - L"Интересный", - L"Важный", - L"Очень важный", - L"Серьезный", - L"Значительный", - L"Важнейший", -}; - -STR16 szCampaignHistoryWebpageString[]= -{ - L"Убито", - L"Ранено", - L"Пленных", - L"Выстрелов", - - L"Денег", - L"Издержки", - L"Потери", - L"Участники", - - L"Повышеный", - L"Общий", - L"Полный", - L"Назад", - - L"Далее", - L"Эпизод", - L"День", -}; - -STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate -{ - L"Славный %s", - L"Мощный %s", - L"Грозный %s", - L"Пугающий %s", - - L"Могучий %s", - L"Поразительный %s", - L"Вероломный %s", - L"Скорый %s", - - L"Неистовый %s", - L"Жестокий %s", - L"Безжалостный %s", - L"Беспощадный %s", - - L"Каннибальский %s", - L"Великолепный %s", - L"Плутливый %s", - L"Неясный %s", - - L"Неопределенный %s", - L"Сжигающий %s", - L"Разгневанный %s", - L"Воображаемый %s", - - // 20 - L"Ужастный %s", - L"Плевать-на-право %s", - L"Спровоцированный %s", - L"Непрестанный %s", - - L"Жесткий %s", - L"Упорный %s", - L"Безрассудный %s", - L"Невозможный %s", - - L"Страшнейший %s", - L"Внезапный %s", - L"Демократический %s", - L"Разрывной %s", - - L"Двухпартийный %s", - L"Кровавый %s", - L"Румяный %s", - L"Невинный %s", - - L"Злобный %s", - L"Дразнящий %s", - L"Уничтожающий %s", - L"Стойкий %s", - - // 40 - L"Немилосердный %s", - L"Сумасшедший %s", - L"Окончательный %s", - L"Яростный %s", - - L"Лучше избежать нашего %s", - L"Страшный %s", - L"Благодарный %s!", - L"Защитить %s", - - L"Внимательный %s", - L"Крушаший %s", - L"Колющий %s", - L"Побеждающий %s", - - L"Садистский %s", - L"Горящий %s", - L"Гневный %s", - L"Невидимый %s", - - L"Виновный %s", - L"Гниющий %s", - L"Очищающий %s", - L"Беспокойный %s", - - // 60 - L"Страый %s", - L"Голодный %s", - L"Спящий %s", - L"Угрюмый %s", - - L"Гибкий %s", - L"Назойливый %s", - L"Обиженный %s", - L"Привлекательный %s", - - L"Кричащий %s", - L"Прячущийся %s", - L"Молящийся %s", - L"Бродящий %s", - - L"Хладнокровный %s", - L"Бесстрашный %s", - L"Быстроногий %s", - L"Праклятый %s", - - L"Вегетарианский %s", - L"Нелепый %s", - L"Отсталый %s", - L"Превосходный %s", - - // 80 - L"Героический %s", - L"Подходящий %s", - L"Смотрящий %s", - L"Отравленный %s", - - L"Неожиданный %s", - L"Продолжительный %s", - L"Веселящий %s", - L"%s - обмен!", - - L"%s на стероидах", - L"%s против Прищельцев", - L"%s с твистом", - L"Удовлетворяющий %s", - - L"Гибрид Человек-%s", - L"Пустынный %s", - L"Дорогой %s", - L"Полуночный %s", - - L"Капиталистический %s", - L"Коммунистический %s", - L"Значительный %s", - L"Устойчивый %s", - - // 100 - L"Ннарколептический %s", - L"Отбеливающий %s", - L"Дробящий %s", - L"Бьющий %s", - - L"Кровожадный %s", - L"Тучный %s", - L"Лукавый %s", - L"Древовидный %s", - - L"Дешевый %s", - L"Удовлетворенный %s", - L"Ложный %s", - L"%s в помощь", - - L"Крабы против %s", - L"%s в космосе!!!", - L"%s против Годзиллы", - L"Ннеукрощённый %s", - - L"Надёжный %s", - L"Медный %s", - L"Алчный %s", - L"Ночной %s", - - // 120 - L"Мешающий %s", - L"Сердитый %s", - L"Противный %s", - L"Мманиакальный %s", - - L"Древний %s", - L"Крадущийся %s", - L"%s Рока", - L"Месть %s", - - L"%s в бегах", - L"%s вне времени", - L"Один с %s", - L"%s из Ада", - - L"Супер-%s", - L"Ультра-%s", - L"Мега-%s", - L"Гига-%s", - - L"Частичный %s", - L"Отличный %s", - L"Дрожащий %s", - L"Ободряющий %s", - - // 140 -}; - -STR16 szCampaignStatsOperationSuffix[] = -{ - L"Дракон", - L"Горный Лев", - L"Красноголовый Змей", - L"Терьерь Рассела", - - L"Грод Немезида", - L"Василиск", - L"Клинок", - L"Щит", - - L"Молот", - L"Призрак", - L"Конкресс", - L"Нефтяной Бур", - - L"Друг", - L"Товарищ", - L"Муж", - L"Тесть", - - L"Дюнный Змей", - L"Банкир", - L"Удав", - L"Кот", - - // 20 - L"Съезд", - L"Сенат", - L"Церковник", - L"Задира", - - L"Штык", - L"Волк", - L"Солдат", - L"Древестник", - - L"Писец", - L"Куст", - L"Асфальт", - L"Закат", - - L"Ураган", - L"Оцелот", - L"Тигр", - L"Завод", - - L"Леопард", - L"Демон", - L"Овод", - L"Ротвейлер", - - // 40 - L"Кузен", - L"Дед", - L"Новорожденный", - L"Сектант", - - L"Антибиотик", - L"Демократ", - L"Полкоодец", - L"Молот Судного Дня", - - L"Министр", - L"Бобр", - L"Террорист", - L"Дождь Смерти", - - L"Пророк", - L"Торговец", - L"Крестоносец", - L"Управленец", - - L"Пульсар", - L"Отпуск", - L"Взрыв", - L"Хищник", - - // 60 - L"Мантикор", - L"Ледяной Гигант", - L"Антракт", - L"Средний Класс", - - L"Крикун", - L"Козел", - L"Пес", - L"Ответ", - - L"Бункер", - L"Мим", - L"Проводник", - L"Работодатель", - - L"Француз", - L"Момент", - L"Тритон", - L"Дурак", - - L"Степной Волк", - L"Железный Молот", - L"Лорд", - L"Правитель", - - // 80 - L"Диктатор", - L"Старик", - L"Измельчитель", - L"пылесос", - - L"Хомяк", - L"Гипноз", - L"Диджей", - L"Uробовщик", - - L"Гном", - L"Ребенок", - L"Гангстер", - L"Мясоед", - - L"Бог", - L"Гендер", - L"Моль", - L"Малыш", - - L"Самолет", - L"Гражданин", - L"Любовни", - L"Фонд", - - // 100 - L"Формат", - L"Меч", - L"Барс", - L"Ирбис", - - L"Кентавр", - L"Скорпион", - L"Серпент", - L"Черный Паук", - - L"Тарантул", - L"Гриф", - L"Еретик", - L"Кретин", - - L"Образец", - L"Цербер", - L"Мангуст", - L"Ухажер", - - L"Монах", - L"Скиталец", - L"Гад", - L"Сом", - - // 120 - L"Греховник", - L"Праведник", - L"Астероид", - L"Метеор", - - L"Клубок Проблем", - L"Рыбий Жир", - L"Молочник", - L"Ус", - - L"Псих", - L"Безумец", - L"рефлекс", - L"Знак", - - L"Король", - L"Принц", - L"Епископ", - L"Раб", - - L"Оплот", - L"Дворец", - L"Конь", - L"Суд", - - // 140 -}; - -STR16 szMercCompareWebSite[] = -{ - // main page - L"Бойцы Любят Тебя или Клянут", - L"Ваш эксперт №1 по сплочению комманды", - - L"Кто мы?", - L"Анализ команды", - L"Парные сравнения", - L"Персоналии", - L"Отзывы клиентов", - - L"Если ваш бизнес предполагает инновационные решения для критических приложений, работающих в режиме реального времени, возможно, некоторые из этих наблюдений будут вам знакомы:", - L"Ваша команда борется сама с собой.", - L"Ваши сотрудники тратят время мешая друг другу.", - L"В вашем коллективе большая текучесть кадров.", - L"Вы постоянно получаете низкие оценки по удовлетворенности персонала работой.", - L"Если вы столкнулись хотя бы с одной из этих ситуаций, то, возможно, в вашем деле есть проблемы. И скорее всего, ваши сотрудники не станут работать в полную силу. Но благодаря нашей запатентованной и простой для понимания системе \"БоЛТиК\", вы сможете вернуть производительность и счастливые улыбки на лицах всех ваших сотрудников в мгновение ока!", - - // customer quotes - L"Несколько цитат наших благодарных клиентов:", - L"Мои прошлые отношения были просто ужасны. Я винила во всём себя... но теперь то я знаю. Все мужчины заслуживают смерти! Спасибо тебе, \"БоЛТиК\", за моё прозрение!", - L"-Луиза Г., романист-", - L"Я никогда не ладил со своими братьями, а в последнее время отношения стали совсем из рук вон плохими. Вы показали мне, что всему виной было постыдное недоверие к отцу. Спасибо вам за это! Я должен открыто всё сказать отцу.", - L"-Конрад C., Исправительное учреждение-", - L"Я одиночка по жизни, и работа в команде была просто пыткой. Но методика \"БоЛТиК\" показала мне как стать частью команды. Этот вклад просто неоценим!", - L"-Грант В., Заклинатель змей-", - L"В моей работе необходимо доверять каждому члену команды на все сто процентов. Вот почему мы обратились к экспертам - к компании \"БоЛТиК\".", - L"-Халлэ Л., СПК-", - L"Прежде всего, хочу признать, что наш коллектив был весьма разношерстным, из-за чего часто случались конфликты. Но со временем мы достигли взаимоуважения, и теперь дополняем друг друга.", - L"-Майкл C., НАСА-", - L"Рекоммендую отдать предпочтение этому сайту!", - L"-Каспар Х., Логистическая компания H&C-", - L"Наш процесс тренировок должен быть максимально быстрым, поэтому мы должны знать, с кем имеем дело. Компания \"БоЛТиК\" стала очевидным выбором.", - L"-Стэнли Дюк, Корпорация Цербер-", - - // analyze - L"Выберите наёмника", - L"Выберите отряд", - - // error messages - L"В настоящее время у вас нет наёмников на службе. Боевой дух бойцов ниже нормы - основная причина частых увольнений среди персонала.", -}; - -STR16 szMercCompareEventText[]= -{ - L"%s подстрелил(а) меня!", - L"%s плетёт интриги за моей спиной", - L"%s вмешивается в мои дела", - L"%s дружит с моим врагом", - - L"%s получил(а) контракт до меня", - L"%s приказал(а) позорно отступить", - L"%s убивает невинных", - L"%s тормозит нас", - - L"%s не делится едой", - L"%s ставит под угрозу миссию", - L"%s наркоман", - L"%s воровская гадина", - - L"%s никакущий командир", - L"%s переплачивают", - L"%s получает всё самое лучшее", - L"%s держит меня на мушке", - - L"%s обрабатывал(а) мои раны", - L"Хорошо посидели за бутылочкой с %s", - L"C %s классно напиваться", - L"%s доставучий(-ая) когда пьян(а)", - - L"%s идиот когда пьян", - L"%s не поддерживает нашу точку зрения", - L"%s поддерживает нашу позицию", - L"%s соглашается с нашими доводами", - - L"Убеждения %s противоречат нашим", - L"%s знает, как успокоить людей", - L"%s бесчувственный(-ая)", - L"%s ставит людей на своё место", - - L"%s очень импульсивен(а)", - L"%s - разносчик заразы", - L"%s лечит мои заболевания", - L"%s не сдерживается в бою", - - L"%s наслаждается битвой сверх меры", - L"%s хороший преподаватель", - L"%s привёл(а) нас к победе", - L"%s спас(ла) мою жизнь", - - L"%s украл(а) моё убийство", - L"%s и я отлично работаем вместе", - L"%s заставил(а) противника сдаться", - L"%s ранил(а) гражданских", -}; - -STR16 szWHOWebSite[] = -{ - // main page - L"Всемирная организация здравоохранения", - L"Возвращаем здоровье в жизнь", - - // links to other pages - L"О ВОЗ", - L"Болезни Арулько", - L"О заболеваниях", - - // text on the main page - L"ВОЗ является органом, направляющим и координирующим международную работу в области здравоохранения в рамках системы ООН.", - L"ВОЗ выполняет следующие функции: -обеспечение глобального лидерства в области общественного здравоохранения; -составление повестки дня исследований в области здравоохранения; -установление норм и стандартов; -формулирование этических и основанных на фактических данных вариантов политики; -оказание технической поддержки странам; -мониторинг ситуации и оценка тенденций в области здравоохранения.", - L"Здравоохранение в 21-м веке является общей ответственностью, включая равноправный доступ к основной помощи и коллективной защите от международных угроз.", - - // contract page - L"Маленькую страну Арулько в настоящее время потрясают хаотичные вспышки смертельного вируса арулькийской чумы.", - L"Из-за катастрофического состояния системы здравоохранения страны только армейский лечебный корпус способен бороться со смертельным заболеванием.", - L"Страна Арулько закрыта для партнёров ООН, поэтому, всё что мы можем предоставить - это подробные карты о текущем состоянии инфекционных заболеваний. Из-за трудностей в работе с Арулько мы вынуждены брать ежедневную плату со всех желающих получать актуальную информацию по заболеваемости в размере %d$.", - L"Желаете приобрести подробные данные о текущем состоянии заболеваемости в Арулько? Доступ к этим данным вы можете получить на стратегической карте, оплатив стоимость нашей услуги.", - L"В настоящее время вы не имеете доступа к данным ВОЗ по арулькийской чуме.", - L"Вы приобрели подробные карты о состоянии заболеваемости.", - L"Заказать обновление карт", - L"Отказаться от карт", - - // helpful tips page - L"Арулькийская чума - это смертельный штамм чумы, который распространён лишь на небольшой части территории Арулько. Первые жертвы штамма были заражены через укусы комаров в болотистой либо тропической местности и непреднамеренно стали причиной заражения населения близлежащих городов.", - L"Симптомы болезни проявляются не сразу, и до первых проявлений заражения может пройти несколько дней.", - L"Чтобы посмотреть от каких известных болезней страдают ваши наёмники, надо подвести курсор к портрету бойца на стратегической карте.", - L"Большинство заболеваний прогрессирует с течением времени, поэтому следует начинать лечение как можно скорее.", - L"Определённые болезни можно вылечить с помощью медикаментов. Некоторые из них вы можете найти в специализированных аптеках.", - L"Врачам можно дать указание обследовать на предмет заболеваний всех товарищей по команде, находящихся в секторе. Это позволит узнать о болезни, прежде, чем произойдёт массовое заражение!", - L"Врачи находятся в большей степени риска заразиться при лечении инфицированных пациентов. Средства индивидуальной защиты снизят риск заражения.", - L"Если клинковое оружие ранит инфицированного человека, лезвие оружия становится заражённым и может стать причиной распространения инфекции.", -}; - -STR16 szPMCWebSite[] = -{ - // main page - L"Цербер", - L"Ваше превосходство в безопасности", - - // links to other pages - L" Что есть Цербер", - L" Нанять команду", - L" Нанять солдата", - - // text on the main page - L"Корпорация Цербер - хорошо известный международный частный военный подрядчик. Начиная с 1983 года, мы предоставляем свои услуги охраны и обучения подразделений боевого назначения по всему миру.", - L"Наш профессионально обученный персонал обеспечивает безопасность более 30 правительств по всему миру. В том числе в нескольких горячих точках.", - L"Наши тренировочные центры есть почти в каждой точке мира, включая Индонезию, Колумбию, Катар, Южную Африку и Румынию. Благодаря этому мы можем, как правило, выполнить свои обязательства по контракту в течение 24 часов.", - L"В разделе \"Нанять солдата\" мы предлагаем индивидуальные договоры с опытными ветеранами в сфере безопасности.", - L"Конечно же, вы можете нанять сразу целую роту солдат. В разделе \"Нанять команду\", вы можете указать количество солдат к найму, а так же, выбрать место, где необходимы их услуги. В связи с трагическим инцидентом в прошлом, мы доставляем своих контрактников лишь в зоны, которые находятся под вашим контролем.", - L"Своих сотрудников мы можем доставить воздухом, в этом случае, в месте прибытия, конечно, должен быть аэропорт. В зависимости от региона прибытия также возможны внедрения/проникновения через порты или пограничные посты.", - L"Работаем только по предоплате. Далее ежедневная оплата услуг наших сотрудников будет списываться с вашего счёта.", - - // militia contract page - L"Выберите уровень и количество ополченцев:", - L"Новобранец", - L"Солдат рядовой", - L"Солдат ветеран", - - L"%d чел., %d$ каждый", - L"К найму: %d", - L"Стоимость: %d$", - - L"Выберите место высадки солдат:", - L"Общая стоимость: %d$", - L"РВП: %02d:%02d", - L"Оплатить", - - L"Благодарим за сотрудничество! Наши солдаты прибудут в место назначения завтра в %02d:%02d.", - L"Подкрепление из Цербер прибыло в %s.", - L" Информация: рядовых - %d чел., ветеранов - %d чел. прибудут в %s, время прибытия %02d:%02d, день %d.", - L"Под Вашим контролем нет мест, куда бы мы могли прислать своих солдат!", - - // individual contract page -}; - -STR16 szTacticalInventoryDialogString[]= -{ - L"Команды инвентаря", - - L"ПНВ", - L"Перезар.", - L"Собрать", - L"", - - L"Сортиров", - L"Объед.", - L"Отдел.", - L"Организ.", - - L"Ящики", - L"Коробки", - L"Сбросить", - L"Поднять", - - L"", - L"", - L"", - L"", -}; - -STR16 szTacticalCoverDialogString[]= -{ - L"Режим отображения укрытий", - - L"Выкл", - L"Враги", - L"Боец", - L"", - - L"Роли", - L"Укреп.", - L"Следы", - L"Шанс", - - L"Ловушки", - L"Сеть", - L"Детект.", - L"", - - L"Сеть A", - L"Сеть B", - L"Сеть C", - L"Сеть D", -}; - -STR16 szTacticalCoverDialogPrintString[]= -{ - - L"Выключение отображения укрытий или ловушек", - L"Показывает опасные зоны", - L"Показывает что видит боец", - L"", - - L"Показать символ роли противников", - L"Показать планируемые укрепления", - L"Показать следы противника", - L"", - - L"Показать сеть ловушек", - L"Показать цветную сеть ловушек", - L"Показать ближайшие ловушки", - L"", - - L"Показать сеть ловушек A", - L"Показать сеть ловушек B", - L"Показать сеть ловушек C", - L"Показать сеть ловушек D", -}; - - -STR16 szDynamicDialogueText[40][17] = // TODO.Translate -{ - // OPINIONEVENT_FRIENDLYFIRE - L"Какого черта! $CAUSE$ атаковал(а) меня!", - L"", - L"", - L"Что? Я? Никогда! Я целился(-ась) во врага!", - L"Ой.", - L"", - L"", - L"$CAUSE$ атаковал(а) $VICTIM$. Что ты делаешь?", - L"Хмм, это должно быть дружественный огонь!", - L"Да, Я тоже это видел(а)!", - L"Не увиливай, $CAUSE$. Ты всё четко видел(а)! На чьей ты стороне?", - L"Я все видел(а), это точно был дружественный огонь!", - L"Такое может случиться в пылу битвы. $CAUSE$, будь повнимательнее в следующий раз.", - L"Мы на войне! Люди постоянно ловят пули!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHSOLDMEOUT - L"Эй! Забали варежку, $CAUSE$! Стукач!", - L"", - L"", - L"Ага, как же! А ты слабачек", - L"Ты слышишь это? Чёрт.", - L"", - L"", - L"$VICTIM$ зол с $CAUSE$ потому что $CAUSE_GENDER$ говорил с тобой. Что ты делаешь?", - L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", - L"Yeah, mind your own business, $CAUSE$!", - L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", - L"Yeah. Man up!", - L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", - L"This again? Keep your bickering to yourself, we have no time for this!", - L"", - L"", - L"", - - // OPINIONEVENT_SNITCHINTERFERENCE - L"$CAUSE$ is bullying me again!", - L"", - L"", - L"You're jeopardising the entire mission, and I won't let that stand any longer!", - L"Hey, it's for your own good. You'll thank me later.", - L"", - L"", - L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", - L"Then stop giving reasons for that!", - L"Drop it, $CAUSE$, who are you to tell us what to do?!", - L"You won't let that stand? Cute. Who ever made you the boss?", - L"Agreed. We can't let our guard down for a single moment!", - L"Can't you two sort this out?", - L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", - L"", - L"", - L"", - - // OPINIONEVENT_FRIENDSWITHHATED - L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", - L"", - L"", - L"My friends are none of your business!", - L"Can't you two all get along, $VICTIM$?", - L"", - L"", - L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", - L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", - L"Yeah, you guys are ugly!", - L"Then you should change your business. 'Cause its bad.", - L"What's that to you, $VICTIM$?", - L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", - L"Nobody wants to hear all this crap...", - L"", - L"", - L"", - - // OPINIONEVENT_CONTRACTEXTENSION - L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", - L"", - L"", - L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", - L"I'm sure you'll get your extension soon. You know how odd online banking can be.", - L"", - L"", - L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", - L"You are still getting paid, no? What does it matter as long as you get the money?", - L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", - L"Yeah. All that worth hasn't shown yet though.", - L"Aww, that burns, doesn't it, $VICTIM$?", - L"We have limited funds. Someone needs to get paid first, right?", - L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", - L"", - L"", - L"", - - // OPINIONEVENT_ORDEREDRETREAT - L"Nice command, $CAUSE$! Why would you order retreat?", - L"", - L"", - L"I just got us out of that hellhole, you should thank me for saving your life.", - L"They were flanking us, there was no other way!", - L"", - L"", - L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", - L"You know you can go back if you want... nobody's stopping you.", - L"We were rockin' it until that point.", - L"Oh, now YOU got us out? By being the first to leave? How noble of you.", - L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", - L"We're still alive, this is what counts.", - L"The more pressing issue is when will we go back, and finish the job?", - L"", - L"", - L"", - - // OPINIONEVENT_CIVKILLER - L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", - L"", - L"", - L"He had a gun, I saw it!", - L"Oh god. No! What have I done?", - L"", - L"", - L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", - L"Better safe than sorry I say...", - L"Yeah. The poor sod never had a chance. Damn.", - L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", - L"And you took him down nice and clean, good job!", - L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", - L"Who cares? Can't make a cake without breaking a few eggs.", - L"", - L"", - L"", - - // OPINIONEVENT_SLOWSUSDOWN - L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", - L"", - L"", - L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", - L"It's all this stuff, it's so heavy!", - L"", - L"", - L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", - L"We leave nobody behind, not even $CAUSE$!", - L"We have to move fast, the enemy isn't far behind!", - L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", - L"Aye, stop complaining. We go through this together or we don't do it at all.", - L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", - L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", - L"", - L"", - L"", - - // OPINIONEVENT_NOSHARINGFOOD - L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", - L"", - L"", - L"Not my problem if you already ate all your rations.", - L"Oh $VICTIM$, why didn't you say something then?", - L"", - L"", - L"$VICTIM$ wants $CAUSE$'s food. What do you do?", - L"We all get the same. If you used up yours already that's your problem.", - L"If $CAUSE$ shares, I want some too!", - L"Why do you have so much food anyway? Do I smell extra rations there?.", - L"Right, everyone got enough back at the base...", - L"There's enough food left at the base, so no need to fight, ok?", - L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", - L"", - L"", - L"", - - // OPINIONEVENT_ANNOYINGDISABILITY - L"Oh, come on, $CAUSE$. It's not a good moment!", - L"", - L"", - L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", - L"It's my only weakness, I can't help it!", - L"", - L"", - L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", - L"What does it even matter to you? Don't you have something to do?", - L"Really $CAUSE$. This is a military organization and not a ward.", - L"Well, we are pros, an you're not, $CAUSE$.", - L"Don't be such a snob, $VICTIM$.", - L"Uhm. Is $CAUSE_GENDER$ okay?", - L"Bla bla blah. Another notable moment of the crazies squad.", - L"", - L"", - L"", - - // OPINIONEVENT_ADDICT - L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", - L"", - L"", - L"Taking the stick out of your butt would be a starter, jeez...", - L"I've seen things man. And some... stuff!", - L"", - L"", - L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", - L"Hey, $CAUSE$ needs to ease the stress, ok?", - L"How unprofessional.", - L"This is war and not a stoner party. Cut it out, $CAUSE$!", - L"Hehe. So true.", - L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", - L"You can inject yourself with whatever you like, but only after the battle is over.", - L"", - L"", - L"", - - // OPINIONEVENT_THIEF - L"What the... Hey! $CAUSE$! Give it back, you damn thief!", - L"", - L"", - L"Have you been drinking? What the hell is your problem?", - L"You noticed? Dammit... 50/50?", - L"", - L"", - L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", - L"If you don't have any proof, don't throw around accusations, $VICTIM$.", - L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", - L"HEY! You put that back right now!", - L"No idea. All of a sudden $VICTIM$ is all drama.", - L"Perhaps we could get a raise to resolve this... issue?", - L"Shut up! There is more than enough loot for all of us!", - L"", - L"", - L"", - - // OPINIONEVENT_WORSTCOMMANDEREVER - L"What a disaster. That was worst command ever, $CAUSE$!", - L"", - L"", - L"I don't have to take that from a grunt like you!", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"", - L"", - L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", - L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", - L"Well, we sure aren't going to win the war at this rate...", - L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", - L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", - L"We will not forget their sacrifice. They died so we could fight on.", - L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", - L"", - L"", - L"", - - // OPINIONEVENT_RICHGUY - L"How can $CAUSE$ earn this much? It's not fair!", - L"", - L"", - L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", - L"You don't expect me to complain, do you?", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", - L"Quit whining about the money, you get more than enough yourself!", - L"In all honesty, $VICTIM$, I think you should adjust your rate!", - L"Worth it? All you do is pose!", - L"Relax. At least some of us appreciate your service, $CAUSE$.", - L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", - L"Everybody gets what the deserve. If you complain, you deserve less.", - L"", - L"", - L"", - - // OPINIONEVENT_BETTERGEAR - L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", - L"", - L"", - L"Contrary to you, I actually know how to use them.", - L"Well, someone has to use it, right? Better luck next time!", - L"", - L"", - L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", - L"You're just making up an excuse for your poor marksmanship.", - L"Yeah, this smells of cronyism to me.", - L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", - L"I'll second that!", - L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", - L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", - L"", - L"", - L"", - - // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS - L"Do I look like a bipod? Get that thing off me, $CAUSE$!", - L"", - L"", - L"Don't be such a wuss. This is war!", - L"Oh. Didn't see you for a minute there.", - L"", - L"", - L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", - L"Don't be such a wuss. This is war!", - L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", - L"You are and always will be an insensitive jerk, $CAUSE$.", - L"Sometimes you just have to use your surroundings!", - L"Ehm... what are you two DOING?", - L"This is hardly the time to fondle each other, dammit.", - L"", - L"", - L"", - - // OPINIONEVENT_BANDAGED - L"Спасибо, $CAUSE$. Я уж думал я истеку кровью до смерти.", - L"", - L"", - L"Я делаю свою работу, ты можешь вернуться к своей!", - L"Эй, мы должны присматривать друг за другом, ты же ведь сделашь также в следующий раз, $VICTIM$.", - L"", - L"", - L"$CAUSE$ перевязал $VICTIM$. Что ты делаешь?", - L"Patched together again? Good, now move!", - L"Всегда пожалуйста.", - L"Jeez. Woken up on the wrong foot today?", - L"Talk about a no-nonsense approach...", - L"How did you even get wounded? Where did the attack come from?", - L"You need to be more careful. Now, where did the attack come from?", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_GOOD - L"Yeah, $CAUSE$! You get it! How 'bout next round?", - L"", - L"", - L"Pah. I think you've had enough.", - L"Sure. Bring it on!", - L"", - L"", - L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", - L"Yeah, enough booze for you today.", - L"Hoho, party!", - L"Party pooper!", - L"You sure like to keep a cool head, $CAUSE$.", - L"Alright, ladies, party's over, move on!", - L"Who told you to slack off? You have a job to do!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_SUPER - L"$CAUSE$... you're... you are... hic... you're the best!", - L"", - L"", - L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", - L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", - L"", - L"", - L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", - L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", - L"Heeeey... this is actually kinda nice for a change.", - L"'I know discipline', said the clueless drunk...", - L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", - L"Drink one for me too! But not now, because war.", - L"You celebrate already ? This in't over yet. Not by a longshot!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_BAD - L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", - L"", - L"", - L"Cut it out, $VICTIM$! You clearly don't know when to stop!", - L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", - L"", - L"", - L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", - L"Relax, it's just a bit of booze.", - L"Hey keep it down over there, okay?", - L"You're just as drunk. Beat it, $CAUSE$!", - L"Leave alcohol to the big ones, okay?", - L"Later, ok?", - L"We might've won this battle, but not this godamn war. So move it, soldier!", - L"", - L"", - L"", - - // OPINIONEVENT_DRINKBUDDIES_WORSE - L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", - L"", - L"", - L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", - L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", - L"", - L"", - L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", - L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", - L"This party was cool until $CAUSE$ ruined it!", - L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", - L"Word!", - L"Why don't you two sober up? You're pretty wasted...", - L"Both of you, shut up! You are a disgrace to this unit!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_US - L"I knew I couldn't depend on you, $CAUSE$!", - L"", - L"", - L"Depend? It was all your fault!", - L"Touched a nerve there, didn't I?", - L"", - L"", - L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", - L"So you depend on others to do your job? Then what good are you?!", - L"Indeed. Way to let $VICTIM$ hang!", - L"This isn't some schoolyard sympathy crap. It WAS your fault!", - L"Yeah, what's with the attitude?", - L"Zip it, both of you!", - L"Silence, now!", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_US - L"Ха! Видите? Даже $CAUSE$ поддерживает меня.", - L"", - L"", - L"'Даже'? Что это значит?", - L"Да. Я польностью с $VICTIM$ здесь.", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", - L"Don't let it go to your head.", - L"Hey, don't forget about me!", - L"Apparently, sometimes even $CAUSE$ is deemed important...", - L"Do I smell trouble here??", - L"This is pointless! Discuss that in private, but not now.", - L"$VICTIM$! $CAUSE$! Less talk, more action, please!", - L"", - L"", - L"", - - // OPINIONEVENT_AGAINST_ENEMY - L"Yeah, $CAUSE$ saw you do it!", - L"", - L"", - L"No I did not!", - L"And we won't be quiet about it, no sir!", - L"", - L"", - L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", - L"I don't think so...", - L"Yeah, totally!", - L"Hu? You said you did.", - L"Yeah, don't twist what happened!", - L"Who cares? We have a job to do.", - L"If you ladies keep this on, we're going to have a real problem soon.", - L"", - L"", - L"", - - // OPINIONEVENT_FOR_ENEMY - L"I can't believe you wouldn't agree with me on this, $CAUSE$.", - L"", - L"", - L"It's because you're wrong, that's why.", - L"I'm surprised too, but that's how it is.", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", - L"Ugh. What now...", - L"Hum. Never saw that coming.", - L"Oh come down from your high horse, $CAUSE$.", - L"Yeah, you are wrong, $VICTIM$!", - L"Can I shut down squad radio, so I don't have to listen to you?", - L"Yes, very melodramatic. How is any of this relevant?", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD - L"Yeah... you're right, $CAUSE$. Peace?", - L"", - L"", - L"No. I won't let this go.", - L"Hmm... ok!", - L"", - L"", - L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", - L"You're not getting away this easy.", - L"Glad you guys are not angry anymore.", - L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", - L"You tell 'em, $CAUSE$!", - L"*Sigh* Shake hands or whatever you people do, and then back to business.", - L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_REASON_BAD - L"No. This is a matter of principle.", - L"", - L"", - L"As if you had any to start with.", - L"Suit yourself then..", - L"", - L"", - L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", - L"You're just asking for trouble, right?", - L"Guess you're not getting away that easy, $CAUSE$.", - L"Don't be so flippant.", - L"Who needs principles anyway?", - L"Now that this is out of the way, perhaps we could continue?", - L"Shut up, both of you!", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD - L"Alright alright. Jeez. I'm over it, okay?", - L"", - L"", - L"Cut it, drama queen.", - L"As long as it does not happen again.", - L"", - L"", - L"$VICTIM$ was reined in by $CAUSE$. What do you do?", - L"No reason to be so stiff about it.", - L"Yeah, keep it down, will ya?", - L"Pah. You're the one making all the fuss about it...", - L"Yeah, drop that attitude, $VICTIM$.", - L"*Sigh* More of this?", - L"Why am I even listening to you people...", - L"", - L"", - L"", - - // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD - L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", - L"", - L"", - L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", - L"The two of us are going to have real problem soon, $VICTIM$.", - L"", - L"", - L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", - L"Pfft. Don't make a fuss out of it.", - L"Yeah, you won't boss us around anymore!", - L"You are certainly nobodies superior!", - L"Not sure about that, but yep!", - L"Hey. Hey! Both of you, cut it out! What are you doing?", - L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_DISGUSTING - L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", - L"", - L"", - L"Oh yeah? Back off, before I cough on you!", - L"It really is. I... *cough* don't feel so well...", - L"", - L"", - L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", - L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", - L"This does look unhealthy. That better not be contagious!", - L"Stop it! We don't need more of whatever it is you have!", - L"Yeah, there's nothing you can do against this stuff, right?", - L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", - L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", - L"", - L"", - L"", - - // OPINIONEVENT_DISEASE_TREATMENT - L"Thanks, $CAUSE$. I'm already feeling better.", - L"", - L"", - L"How did you get that in the first place? Did you forget to wash your hands again?", - L"No problem, we can't have you running around coughing blood, right? Riiight?", - L"", - L"", - L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", - L"Where did you get that stuff from in the first place?", - L"Great. Are you sure it's fully treated now?", - L"The important thing is that it's gone now... It is, right?", - L"I told you people before... this country a dirty place, so beware of what you touch.", - L"We have to be careful. The army isn't the only thing that wants us dead.", - L"Great. Everything done? Then let's get back to shooting stuff!", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_GOOD - L"Отлично, $CAUSE$!", - L"", - L"", - L"Whoa. Are you really getting off on that?", - L"Now THIS is action!", - L"", - L"", - L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", - L"This isn't a video game, kid...", - L"That was so wicked!", - L"What are you apologizing for? That was awesome!", - L"You are sick, $VICTIM$.", - L"Killing them is enough. No need to make a show out of it.", - L"Cross us, and this is what you get. Waste the rest of these guys.", - L"", - L"", - L"", - - // OPINIONEVENT_BRUTAL_BAD - L"Черт, $CAUSE$, тебе надо было просто убить их, а не испарить!", - L"", - L"", - L"А чё, если разница?", - L"Ого. Мощная штучка!", - L"", - L"", - L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", - L"Don't tell me you've never seen blood before...", - L"That was a bit excessive...", - L"Does that mean you aren't even remotely familiar with your gun?", - L"On the plus side, I doubt this guy is going to complain.", - L"Don't waste ammunition, $CAUSE$.", - L"They put up a fight, we put them in a bag. End of story.", - L"", - L"", - L"", - - // OPINIONEVENT_TEACHER - L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", - L"", - L"", - L"About that... you still have a lot to learn, $VICTIM$.", - L"You're welcome!", - L"", - L"", - L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", - L"At some point you'll have to do on your own though.", - L"Yeah, you better stick to $CAUSE$.", - L"Nah, $VICTIM_GENDER$ is doing fine.", - L"Yes, $VICTIM_GENDER$ still needs training.", - L"This training is a good preparation, keep up the good work.", - L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", - L"", - L"", - L"", - - // OPINIONEVENT_BESTCOMMANDEREVER - L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", - L"", - L"", - L"I couldn't have done it without you people.", - L"Well, I do have my moments.", - L"", - L"", - L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", - L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", - L"Agreed. $CAUSE$ is a fine squadleader.", - L"It's alright. You deserve this.", - L"You did everything right, $CAUSE$. Good work!", - L"Yeah. We're turning into quite the outfit, aren't we?", - L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_SAVIOUR - L"Wow, that was close. Thanks, $CAUSE$, I owe you!", - L"", - L"", - L"Don't mention it.", - L"You'd do the same for me.", - L"", - L"", - L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", - L"Pff, that guy was dead anyway.", - L"How bad is it, $VICTIM$? Can you still fight?", - L"Then I will. Good job!", - L"Yeah, I was worried there for a moment.", - L"Good job, but let's focus on ending this first, okay?", - L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", - L"", - L"", - L"", - - // OPINIONEVENT_FRAGTHIEF - L"Hey, I had him in my sights! That guy was MINE!", - L"", - L"", - L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", - L"What. Then where's my target?", - L"", - L"", - L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", - L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", - L"Yeah, I hate it when people don't stick to their firing lane.", - L"Stick to shooting whom you're supposed to, $CAUSE$.", - L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", - L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", - L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_ASSIST - L"Boom! We sure took care of that guy.", - L"", - L"", - L"Well, it was mostly me, but you did help too.", - L"Yup. Ready for the next one.", - L"", - L"", - L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", - L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", - L"It takes several people to take them down? Jeez, what kind of body armour do they have?", - L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", - L"Hehe, they've got no chance.", - L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", - L"I guess you get to share what he had. $CAUSE$, you may draw first.", - L"", - L"", - L"", - - // OPINIONEVENT_BATTLE_TOOK_PRISONER - L"Good thinking. We've already won, no need for more senseless slaughter.", - L"", - L"", - L"We'll see about that... I won't hesitate to use force against them if they resist.", - L"Yeah. Perhaps these guys have some intel we can use.", - L"", - L"", - L"The rest of the enemy team surrendered to $CAUSE$. Now what?", - L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", - L"Good job, $CAUSE$. Makes our job hell of a lot easier.", - L"Hey! Cut the crap. They already surrendered.", - L"Yeah, you can't trust these guys, they're totally reckless.", - L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", - L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", - L"", - L"", - L"", - - // OPINIONEVENT_CIV_ATTACKER - L"Watch it, $CAUSE$! They are on our side!", - L"", - L"", - L"That's just a scratch, they'll live.", - L"Oops.", - L"", - L"", - L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", - L"Well, this can happen. As long as they live it's okay.", - L"This won't look good in the after-action report.", - L"What are you doing? Watch it, $CAUSE$!", - L"Don't worry. Happens to me too all the time.", - L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", - L"If $CAUSE$ had intended it, they would be dead, so no worries here.", - L"", - L"", - L"", -}; - - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = -{ - L"Что?!", - L"Нет!", - L"Это ложь!", - L"Это не правда!", - - L"Ложь, ложь, ложь. Ничего, кроме лжи!", - L"Обманщик!", - L"Предатель!", - L"Следи за языком!", - - L"Не твоего ума дело.", - L"Кто вообще тебя позвал?", - L"Никто и не спрашивал мнения тебя, $INTERJECTOR$.", - L"Держись от меня подальше.", - - L"Почему вы все против меня?", - L"Почему ты против меня, $INTERJECTOR$?", - L"Я знал(а) это! $VICTIM$ и $INTERJECTOR$ - соучастники!", - L"Не слушаю..!", - - L"Ненавижу этот дурдом.", - L"Ненавижу этот бредлам.", - L"Отвали!", - L"Вранье, вранье, вранье...", - - L"Никогда!", - L"Не правда.", - L"Это такие враки.", - L"Я знаю, то что у меня перед глазами.", - - L"Я бес понятия о чем $INTERJECTOR_GENDER$ ведет речь.", - L"Да не слушайте, $INTERJECTOR_PRONOUN$!", - L"Неа.", - L"Ошибаешься.", -}; - -STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = -{ - L"I knew you'd back me, $INTERJECTOR$", - L"I knew $INTERJECTOR$ would back me.", - L"What $INTERJECTOR$ said.", - L"Что $INTERJECTOR_GENDER$ сказал.", - - L"Спасибо, $INTERJECTOR$!", - L"Еще раз, я прав(а)!", - L"Видишь, $CAUSE$? Правда на моей стороне!", - L"Еще раз - $SPEAKER$ говорит дело!", - - L"Ну да.", - L"Угу.", - L"Ага", - L"Да.", - - L"Конечно.", - L"Правда.", - L"Ха!", - L"Видишь?", - - L"Именно!", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = -{ - L"Так!", - L"Действительно!", - L"Именно", - L"$CAUSE$ всегда это делает.", - - L"$VICTIM$ прав(а)!", - L"Я тоже хотел(а) это сказать!", - L"Что сказал(а) $VICTIM$.", - L"Это наша $CAUSE$!", - - L"Дааа!", - L"Становится интересно...", - L"Скажи им, $VICTIM$!", - L"Соглашаюсь с $VICTIM$...", - - L"Классический $CAUSE$.", - L"Невозможно сказать лучше.", - L"Именно это и случилось.", - L"Согласен!", - - L"Ага.", - L"Верно.", - L"В точку.", -}; - -STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = -{ - L"А теперь подождите...", - L"Скундочку, это не верно...", - L"Что? Нет.", - L"Это не то, что произошло.", - - L"Хватит трепаться о $CAUSE$!", - L"Ой, закнись, $VICTIM$, а!", - L"Не-не-не, было не так.", - L"Вау. Почему такая резкая неожиданность, $VICTIM$?", - - L"И я предполагаю такого не было, $VICTIM$?", - L"Хммммм... нет.", - L"Отлично, давайте услышим доводы. Позоже у нас нет других вариантов...", - L"Ты ошибаешься!", - - L"Ты ошибаешься!", - L"Я и $CAUSE$ никогад не сделали бы такого.", - L"Хах, не может быть.", - L"Я так не думаю.", - - L"Зачем про это вспоминать сейчас?", - L"Серьезно, $VICTIM$? Это необходимо?", -}; - -STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = -{ - L"Тихо", - L"Поддерживаю $VICTIM$", - L"Поддерживаю $CAUSE$", - L"подумайте", - L"Заткнитесь", -}; - -STR16 szDynamicDialogueText_GenderText[] = -{ - L"он", - L"она", - L"его", - L"её", -}; - -STR16 szDiseaseText[] = -{ - L" %s%d%% к проворности\n", - L" %s%d%% к ловкости\n", - L" %s%d%% к силе\n", - L" %s%d%% к интеллекту\n", - L" %s%d%% к уровню\n", - - L" %s%d%% к очкам действия\n", - L" %s%d к уровню энергии\n", - L" %s%d%% к силе для переноски вещей\n", - L" %s%2.2f восстановление здоровья в час\n", - L" %s%d к нужде во сне\n", - L" %s%d%% потребление воды\n", - L" %s%d%% потребление еды\n", - - L"%s: поставлен диагноз - %s!", - L"%s излечен(а) от %s!", - - L"Обследование", - L"Лечение населения", - L"Burial", // TODO.Translate - L"Отмена", - - L"\n\n%s (недиагностирована) - %d / %d\n", - - L"High amount of distress can cause a personality split\n", // TODO.Translate - L"Contaminated items found in %s' inventory.\n", - L"Whenever we get this, a new disability is added.\n", // TODO.Translate - - L"Only one hand can be used.\n", - L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", - L"Leg functionality severely limited.\n", - L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", -}; - -STR16 szSpyText[] = -{ - L"Hide", // TODO.Translate - L"Get Intel", -}; - -STR16 szFoodText[] = -{ - L"\n\n|В|о|д|а: %d%%\n", - L"\n\n|П|и|щ|а: %d%%\n", - - L"изменение к макс. боевому духу %s%d\n", - L" %s%d к нужде во сне\n", - L" %s%d%% к восстановлению дыхания\n", - L" %s%d%% к эффективности в задании\n", - L" %s%d%% шанс потерять в параметрах\n", -}; - -STR16 szIMPGearWebSiteText[] = -{ - // IMP Gear Entrance - L"Как будет роздано снаряжение?", - L"Автоматически - случайный выбор, согласно ваших ответов.", - L"Самостоятельно - вы сами снарядите свой персонаж.", - L"Автоматически", - L"Самостоятельно", - - // IMP Gear Entrance - L"I.M.P. Экипировка", - L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate -}; - -STR16 szIMPGearPocketText[] = -{ - L"Выбрать шлем", //L"Select helmet", - L"Выбрать жилет", //L"Select vest", - L"Выбрать поножи", //L"Select pants", - L"Выбрать для лица", //L"Select face gear", - L"Выбрать для лица", //L"Select face gear", - - L"Выбрать осн. оружие", //L"Select main gun", - L"Выбрать доп. оружие", //L"Select sidearm", - - L"Выбрать разгр. жилета", //L"Select LBE vest", - L"Выбрать разгр. кобуру", //L"Select left LBE holster", - L"Выбрать разгр. кобуру", //L"Select right LBE holster", - L"Выбрать разгр. ранец", //L"Select LBE combat pack", - L"Выбрать разгр. рюкзак", //L"Select LBE backpack", - - L"Select launcher / rifle", - L"Выбрать оружие ближ. боя", //L"Select melee weapon", - - L"Выбрать доп. предметы", //L"Select additional items", //BIGPOCK1POS - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Select medkit", //MEDPOCK1POS - L"Select medkit", - L"Select medkit", - L"Select medkit", - L"Select main gun ammo", //SMALLPOCK1POS - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select main gun ammo", - L"Select launcher / rifle ammo", //SMALLPOCK6POS - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select launcher / rifle ammo", - L"Select sidearm ammo", //SMALLPOCK11POS - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Select sidearm ammo", - L"Выбрать доп. предметы", //L"Select additional items", //SMALLPOCK19POS - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", - L"Выбрать доп. предметы", //L"Select additional items", //SMALLPOCK30POS - L"Left click to select item / Right click to close window", -}; - -STR16 szMilitiaStrategicMovementText[] = -{ - L"Нельзя отдавать приказы в этом секторе, команды ополчению невозможны.", - L"Незадействованы", - L"Группа №", - L"Далее", - - L"РВП", - L"Группа %d (новая)", - L"Группа %d", - L"Final", - - L"Желающих: %d (+%5.3f)", -}; - -STR16 szEnemyHeliText[] = -{ - L"Вражеский вертолёт сбит в %s!", - L"Мы... эм... в настоящее время не контролируем это ПВО, командир...", - L"ПВО не нуждается сейчас в обслуживании.", - L"Мы уже отдали приказ заняться ремонтом, исполнение займёт время.", - - L"Нам нехватает ресурсов, чтобы выполнить приказ.", - L"Отремонтировать оборудование ПВО? Это обойдётся в %d$ и займёт %d часов.", - L"Вражеский вертолёт подбит в %s.", - L"%s стреляет %s по вражескому вертолюту в %s.", - - L"База ПВО в %s обстреляла вражеский вертолёт в %s.", -}; - -STR16 szFortificationText[] = // TODO.Translate -{ - L"No valid structure selected, nothing added to build plan.", - L"No gridno found to create items in %s - created items are lost.", - L"Structures could not be built in %s - people are in the way.", - L"Structures could not be built in %s - the following items are required:", - - L"No fitting fortifications found for tileset %d: %s", - L"Tileset %d: %s", -}; - -STR16 szMilitiaWebSite[] = -{ - // main page - L"Ополчение", - L"Силы ополчения", -}; - -STR16 szIndividualMilitiaBattleReportText[] = -{ - L"Участи в Операции %s", - L"Пришел в день %d, %d:%02d in %s", - L"Повышен в день %d, %d:%02d", - L"KIA, Operation %s", - - L"Мелкое ранение в операции %s", - L"Сильное ранение в операции %s", - L"Критическое ранение в операции %s", - L"Проявил(а) доблесть в операции %s", - - L"Нанят из Цербера в день %d, %d:%02d in %s", - L"Defected to us on Day %d, %d:%02d in %s", - L"Contract terminated on Day %d, %d:%02d", - L"Defected to us on Day %d, %d:%02d in %s", -}; - -STR16 szIndividualMilitiaTraitRequirements[] = -{ - L"HP", - L"AGI", - L"DEX", - L"STR", - - L"LDR", - L"MRK", - L"MEC", - L"EXP", - - L"MED", - L"WIS", - L"\nMust have regular or elite rank", - L"\nMust have elite rank", - - L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", - L"\n%d %s", - L"\nBasic version of trait", - - L" (Expert)" -}; - -STR16 szIdividualMilitiaWebsiteText[] = -{ - L"Operations", - L"Are you sure you want to release %s from your service?", - L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", - L"Daily Wage: %3d$ Age: %d years", - - L"Kills: %d Assists: %d", - L"Status: Deceased", - L"Status: Fired", - L"Status: Active", - - L"Terminate Contract", - L"Personal Data", - L"Service Record", - L"Inventory", - - L"Militia name", - L"Sector name", - L"Weapon", - L"HP ratio: %3.1f%%%%%%%", - - L"%s is not active in the currently loaded sector.", - L"%s has been promoted to regular militia", - L"%s has been promoted to elite militia", - L"Status: Deserted", // TODO:Translate -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = -{ - L"All statuses", - L"Deceased", - L"Active", - L"Fired", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = -{ - L"All ranks", - L"Green", - L"Regular", - L"Elite", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = -{ - L"All origins", - L"Rebel", - L"PMC", - L"Defector", -}; - -STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = -{ - L"Все сектора", -}; - -STR16 szNonProfileMerchantText[] = -{ - L"Торговец настроен враждебно и не будет торговать.", - L"Торговец не в состоянии вести дела", - L"Торговец отказывается работать во время боя.", - L"Торговец отказывается разговаривать.", -}; - -STR16 szWeatherTypeText[] = -{ - L"обычно", - L"дождь", - L"гроза", - L"песч. буря", - - L"снег", -}; - -STR16 szSnakeText[] = -{ - L"%s избежал(а) от укуса змеи!", - L"%s был(а) укушена змеёй!", -}; - -STR16 szSMilitiaResourceText[] = -{ - L"Превратил %s в ресурсы", - L"Оружие: ", - L"Броня: ", - L"Прочее: ", - - L"Не осталось кандидатов в ополчение!", - L"Не хватает ресурсов для обучения ополчения!", -}; - -STR16 szInteractiveActionText[] = -{ - L"%s начал взлом.", - L"%s получил доступ, но не узнал ничего интересного.", - L"%s не достаточно навыка для взлома.", - L"%s прочел документ, но не узнал ничего интересного.", - - L"%s can't make sense out of this.", - L"%s не может использовать источник воды.", - L"%s купил %s.", - L"%s не может купить - нет достаточно денег. Даже неловко как-то.", - - L"%s выпил из источника воды", - L"Эта штука похоже не работает.", -}; - -STR16 szLaptopStatText[] = // TODO.Translate -{ - L"эффективность угроз %d\n", - L"лидерство %d\n", - L"модификатор подхода %.2f\n", - L"модификатор прошлого %.2f\n", - - L"+50 (other) for assertive\n", - L"-50 (other) for malicious\n", - L"Хороший человек", - L"%s сторонится лишнего насилия и будет акатовать только явных врагов.", - - L"Дружески", - L"Прямо", - L"Threaten approach", - L"Recruit approach", - - L"Stats will regress.", - L"Fast", - L"Average", - L"Slow", - L"Health growth", - L"Strength growth", - L"Agility growth", - L"Dexterity growth", - L"Wisdom growth", - L"Marksmanship growth", - L"Explosives growth", - L"Leadership growth", - L"Medical growth", - L"Mechanical growth", - L"Experience growth", -}; - -STR16 szGearTemplateText[] = // TODO.Translate -{ - L"Enter Template Name", - L"Not possible during combat.", - L"Selected mercenary is not in this sector.", - L"%s is not in that sector.", - L"%s could not equip %s.", - L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate -}; - -STR16 szIntelWebsiteText[] = -{ - L"Recon Intelligence Services", - L"Your need to know base", - L"Information Requests", - L"Information Verification", - - L"About us", - L"You have %d Intel.", - L"We currently have information on the following items, available in exchange for intel as usual:", - L"There is currently no other information available.", - - L"%d Intel - %s", - L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", - L"Buy data - 50 intel", - L"Buy detailed data - 70 Intel", - - L"Select map region on which you want info on:", - - L"North-west", - L"North-north-west", - L"North-north-east", - L"North-east", - - L"West-north-west", - L"Center-north-west", - L"Center-north-east", - L"East-north-east", - - L"West-south-west", - L"Center-south-west", - L"Center-south-east", - L"East-south-east", - - L"South-west", - L"South-south-west", - L"South-south-east", - L"South-east", - - // about us - L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", - L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", - L"Some of that information may be of temporary nature.", - L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", - - L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", - L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", - - // sell info - L"You can upload the following facts:", - L"Previous", - L"Next", - L"Upload", - - L"You have already received compensation for the following:", - L"You have nothing to upload.", -}; - -STR16 szIntelText[] = -{ - L"No more enemies present, %s is no longer in hiding!", - L"%s has been discovered and goes into hiding for %d hours.", - L"%s has been discovered, going to sector!", - L"Enemy general present\n", - - L"Terrorist present\n", - L"%s on %02d:%02d\n", - L"No data found", - L"Data no longer eligible.", - - L"Whereabouts of a high-ranking officer of the royal army.", - L"Flight plans of an airforce helicopter.", - L"Coordinates of a recently imprisoned member of your force.", - L"Location of a high-value fugitive.", - - L"Information on possible bloodcat attacks against settlements.", - L"Time and place of possible zombie attacks against settlements.", - L"Information on planned bandit raids.", -}; - -STR16 szChatTextSpy[] = -{ - L"... so imagine my surprise when suddenly...", - L"... and did I ever tell you the story of that one time...", - L"... so, in conclusion, the colonel decided...", - L"... tell you, they did not see that coming...", - - L"... so, without further consideration...", - L"... but then SHE said...", - L"... and, speaking of llamas...", - L"... there I was, in the middle of the dustbowl, when...", - - L"... and let me tell, those things chafe...", - L"... you should have seen his face...", - L"... which wasn't the last of what we saw of them...", - L"... which reminds me, my grandmother used to say...", - - L"... who, by the way, is a total berk...", - L"... also, the roots were off by a margin...", - L"... and I was like, 'Back off, heathen!'...", - L"... at that point the vicars were in oben rebellion...", - - L"... not that I would've minded, you know, but...", - L"... if not for that ridiculous hat...", - L"... besides, it wasn't his favourite leg anyway...", - L"... even though the ships were still watertight...", - - L"... aside from the fact that giraffes can't do that...", - L"... totally wasted that fork, mind you...", - L"... and no bakery in sight. After that...", - L"... even though regulations are clear in that regard...", -}; - -STR16 szChatTextEnemy[] = -{ - L"Whoa. I had no idea!", - L"Really?", - L"Uhhhh....", - L"Well... you see, uhh...", - - L"I am not entirely sure that...", - L"I... well...", - L"If I could just...", - L"But...", - - L"I don't mean to intrude, but...", - L"Really? I had no idea!", - L"What? All of it?", - L"No way!", - - L"Haha!", - L"Whoa, the guys are not going to believe me!", - L"... yeah, just...", - L"That's just like the gypsy woman said!", - - L"... yeah, is that why...", - L"... hehe, talk about refurbishing...", - L"... yeah, I guess...", - L"Wait. What?", - - L"... wouldn't have minded seeing that...", - L"... now that you mention it...", - L"... but where did all the chalk go...", - L"... had never even considered that...", -}; - -STR16 szMilitiaText[] = -{ - L"Train new militia", - L"Drill militia", - L"Doctor militia", - L"Cancel", -}; - -STR16 szFactoryText[] = // TODO.Translate -{ - L"%s: Production of %s switched off as loyalty is too low.", - L"%s: Production of %s switched off due to insufficient funds.", - L"%s: Production of %s switched off as it requires a merc to staff the facility.", - L"%s: Production of %s switched off due to required items missing.", - L"Item to build", - - L"Preproducts", // 5 - L"h/item", -}; - -STR16 szTurncoatText[] = -{ - L"%s now secretly works for us!", - L"%s is not swayed by our offer. Suspicion against us rises...", - L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", - L"Recruit approach (%d)", - L"Use seduction (%d)", - - L"Bribe ($%d) (%d)", // 5 - L"Offer %d intel (%d)", - L"How to convince the soldier to join your forces?", - L"Do it", - L"%d turncoats present", -}; - -// rftr: better lbe tooltips -STR16 gLbeStatsDesc[14] = -{ - L"MOLLE Доступный объем:", - L"MOLLE Требуемый объем:", - L"MOLLE Маленьких слотов:", - L"MOLLE Средних слотов:", - L"MOLLE Маленький", - L"MOLLE Средний", - L"MOLLE Средний (питьевая система)", - L"Набедренная платформа", - L"Жилет", - L"Ранец", - L"Рюкзак", // 10 - L"MOLLE Карман", - L"Совместимые рюкзаки:", - L"Совместимые ранцы:", -}; - -STR16 szRebelCommandText[] = // TODO.Translate -{ - L"National Overview", - L"Regional Overview", - L"Mission Overview", - L"Select View:", - L"Regional (2)", - L"National (1)", - L"Mission (3)", - L"Supplies:", - L"Incoming Supplies", - L"Intel:", - L"/day", - L"Current Directive", - L"Improve Directive ($%d)", - L"Improving the selected directive will cost $%d. Confirm expenditure?", - L"Insufficient funds.", - L"New directive will take effect at 00:00.", - L"Militia Overview", - L"Green:", - L"Regular:", - L"Elite:", - L"Projected Daily Total:", - L"Volunteer Pool:", - L"Resources Available:", - L"Guns:", - L"Armour:", - L"Misc:", - L"Training Cost:", - L"Upkeep Cost Per Soldier Per Day:", - L"Training Speed Bonus:", - L"Combat Bonuses:", - L"Physical Stats Bonus:", - L"Marksmanship Bonus:", - L"Upgrade Stats ($%d)", - L"Upgrading militia stats will cost $%d. Confirm expenditure?", - L"Region:", - L"Next", - L"Previous", - L"Administration Team:", - L"None", - L"Active", - L"Inactive", - L"Loyalty:", - L"Maximum Loyalty:", - L"Deploy Administration Team (%d supplies)", - L"Reactivate Administration Team (%d supplies)", - L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", - L"No regional actions available in Omerta.", - L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", - L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", - L"Administrative Actions:", - L"Establish %s", - L"Improve %s", - L"Current Tier: %d", - L"Taking any administrative action in this region will cost %d supplies.", - L"Dead drop intel gain: %d", - L"Smuggler supply gain: %d", - L"A small group of militia from a nearby safehouse have joined the battle!", - L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", - L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", - L"Mine raid successful. Stole $%d.", - L"Insufficient Intel to create turncoats!", - L"Change Admin Action", - L"Cancel", - L"Confirm", - L"<", - L">", - L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", - L"Insufficient supplies! Admin Actions have been DISABLED.", - L"New missions will be available every %d hours.", - L"New missions are available at the A.R.C. website.", - L"Mission preparations in progress.", - L"Mission duration: %d days", - L"Chance of success: %d%s", - L"[REDACTED]", - L"Name: %s", - L"Location: %s", - L"Assignment: %s", - L"Contract: %d days", - L"Contract: %d hours", - L"Contract: ---", - L"Agent bonus:", - L"Chance of success +%d%s (%s)", - L"Deployment range +%d (%s)", - L"ASD Income -%2.0f%s (%s)", - L"Steal fuel; send to %s (%s)", - L"Destroy reserve units (%s)", - L"Time +%2.0f%s (%s)", - L"Vision -%2.0f%s (%s)", - L"Gear quality -%d (%s)", - L"Overall stats -%d (%s)", - L"Max trainers: %d (%s)", - L"Payout +%2.0f%s (%s)", - L"Payout limit increased to $%d (%s)", - L"Bonus for officers (%s)", - L"Bonus for vehicles (%s)", - L"Duration +%d hours (%s)", - L"Agent not in town", - L"Town loyalty too low", - L"Agent unavailable", - L"Agent contract expiring", - L"Can't use rebel agent", - L"Battle in progress", - L"Prepare Mission (%d supplies)", - L"View active mission effects", - L"View available mission list", - L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", - L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", - L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", - L"New missions will be available on Day %d at 00:00.", - L"Active missions:", - L"%s - Preparing - Ready on Day %d, %02d:%02d", - L"%s - Active - Expires on Day %d, %02d:%02d", - L"[%s (%d supplies)]", - L"%s Send a rebel agent to prepare this mission?", - L"%s Send %s to prepare this mission? He will return in approximately %d hours.", - L"%s Send %s to prepare this mission? She will return in approximately %d hours.", - L"Mission \"%s\" is now in effect.", - L"Preparations for mission \"%s\" failed.", - L"Mission \"%s\" has expired and is no longer in effect.", -}; - -STR16 szRebelCommandHelpText[] = // TODO.Translate -{ - L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", - L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", - L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", - L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", - L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", - L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", - L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate - L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", - L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", - L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", -}; - -// follows a specific format: -// x: "Admin Action Button Text", -// x+1: "Admin action description text", -STR16 szRebelCommandAdminActionsText[] = // TODO.Translate -{ - L"Supply Line", - L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", - L"Rebel Radio", - L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", - L"Safehouses", - L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", - L"Supply Disruption", - L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", - L"Scout Patrols", - L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", - L"Dead Drops", - L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", - L"Smugglers", - L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", - L"Militia Warehouses", - L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", - L"Regional Taxes", - L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", - L"Civilian Aid", - L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", - L"Merc Support", - L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", - L"Mining Policy", - L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", - L"Pathfinders", - L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", - L"Harriers", - L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", - L"Fortifications", - L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", -}; - -// follows a specific format: -// x: "Directive Name", -// x+1: "Directive Bonus Description", -// x+2: "Directive Help Text", -// x+3: "Directive Improvement Button Description", -STR16 szRebelCommandDirectivesText[] = // TODO.Translate -{ - L"Gather Supplies", - L"Gain an additional %.0f supplies per day.", - L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", - L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", - L"Support Militia", - L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", - L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", - L"Improving this directive will reduce the daily upkeep costs of your militia.", - L"Train Militia", - L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", - L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", - L"Improving this directive will further reduce training cost and increase training speed.", - L"Propaganda Campaign", - L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", - L"Your victories and feats will be embellished as news reaches\nthe locals.", - L"Improving this directive will increase how quickly town loyalty rises.", - L"Deploy Elites", - L"%.0f elite militia appear in Omerta each day.", - L"The rebels release a small number of their highly-trained forces to your command.", - L"Improving this directive will increase the number of militia\nthat appear each day.", - L"High Value Target Strikes", - L"Enemy groups are less likely to have specialised soldiers.", - L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", - L"Improving this directive will make strikes more successful and effective.", - L"Spotter Teams", - L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", - L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", - L"Improving this directive will make the locations of unspotted enemies more precise.", - L"Raid Mines", - L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", - L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", - L"Improving this directive will increase the maximum value of stolen income.", - L"Create Turncoats", - L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", - L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", - L"Improving this directive will increase the number of soldiers turned daily.", - L"Draft Civilians", - L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", - L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", - L"Improving this directive will increase the number of volunteers gained per day.", -}; - -STR16 szRebelCommandAgentMissionsText[] = -{ - L"Deep Deployment", - L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", - L"Disrupt ASD", - L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", - L"Forge Transport Orders", - L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", - L"Strategic Intel", - L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", - L"Improve Local Shops", - L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", - L"Slow Strategic Decisions", - L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", - L"Lower Readiness", - L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", - L"Sabotage Equipment", - L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", - L"Sabotage Vehicles", - L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", - L"Send Supplies", - L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", - L"Soldier Bounties (Kingpin)", - L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", - L"Train Militia Anywhere", - L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", -}; - -STR16 szRobotText[] = // TODO: Translate -{ - L"The robot's installed weapon cannot be changed.", - L"It is not possible to add attachments to the robot's weapon.", - L"Installed Weapon", - L"Reserve Ammo", - L"Targeting Upgrade", - L"Chassis Upgrade", - L"Utility Upgrade", - L"Storage", - L"No Bonus", - L"The laser bonuses of this item are applied to the robot.", - L"The night- and cave-vision bonuses of this item are applied to the robot.", - L"This kit degrades instead of the robot's weapon.", - L"The robot's cleaning kit was depleted!", - L"Mines adjacent to the robot are automatically flagged.", - L"Periodic X-Ray scans during combat. No batteries required.", - L"The robot has activated an x-ray scan!", - L"The robot can use the radio set.", - L"The robot's chassis is strengthened, giving it better combat performance.", - L"The camouflage bonuses of this item are applied to the robot.", - L"The robot is tougher and takes less damage.", - L"The robot's extra armour plating was destroyed!", - L"The robot gains the benefit of the %s skill trait.", -}; - -#endif //RUSSIAN +// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! +//#pragma setlocale("RUSSIAN") + + #if defined( RUSSIAN ) + #include "Text.h" + #include "FileMan.h" + #include "Scheduling.h" + #include "EditorMercs.h" + #include "Item Statistics.h" + #endif + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +void this_is_the_RussianText_public_symbol(void){;} + +#ifdef RUSSIAN + +/* + +****************************************************************************************************** +** IMPORTANT TRANSLATION NOTES ** +****************************************************************************************************** + +GENERAL INSTRUCTIONS +- Always be aware that foreign strings should be of equal or shorter length than the English equivalent. + I know that this is difficult to do on many occasions due to the nature of foreign languages when + compared to English. By doing so, this will greatly reduce the amount of work on both sides. In + most cases (but not all), JA2 interfaces were designed with just enough space to fit the English word. + The general rule is if the string is very short (less than 10 characters), then it's short because of + interface limitations. On the other hand, full sentences commonly have little limitations for length. + Strings in between are a little dicey. +- Never translate a string to appear on multiple lines. All strings L"This is a really long string...", + must fit on a single line no matter how long the string is. All strings start with L" and end with ", +- Never remove any extra spaces in strings. In addition, all strings containing multiple sentences only + have one space after a period, which is different than standard typing convention. Never modify sections + of strings contain combinations of % characters. These are special format characters and are always + used in conjunction with other characters. For example, %s means string, and is commonly used for names, + locations, items, etc. %d is used for numbers. %c%d is a character and a number (such as A9). + %% is how a single % character is built. There are countless types, but strings containing these + special characters are usually commented to explain what they mean. If it isn't commented, then + if you can't figure out the context, then feel free to ask SirTech. +- Comments are always started with // Anything following these two characters on the same line are + considered to be comments. Do not translate comments. Comments are always applied to the following + string(s) on the next line(s), unless the comment is on the same line as a string. +- All new comments made by SirTech will use "//@@@ comment" (without the quotes) notation. By searching + for @@@ everytime you recieve a new version, it will simplify your task and identify special instructions. + Commonly, these types of comments will be used to ask you to abbreviate a string. Please leave the + comments intact, and SirTech will remove them once the translation for that particular area is resolved. +- If you have a problem or question with translating certain strings, please use "//!!! comment" + (without the quotes). The syntax is important, and should be identical to the comments used with @@@ + symbols. SirTech will search for !!! to look for your problems and questions. This is a more + efficient method than detailing questions in email, so try to do this whenever possible. + + + +FAST HELP TEXT -- Explains how the syntax of fast help text works. +************** + +1) BOLDED LETTERS + The popup help text system supports special characters to specify the hot key(s) for a button. + Anytime you see a '|' symbol within the help text string, that means the following key is assigned + to activate the action which is usually a button. + + EX: L"|Map Screen" + + This means the 'M' is the hotkey. In the game, when somebody hits the 'M' key, it activates that + button. When translating the text to another language, it is best to attempt to choose a word that + uses 'M'. If you can't always find a match, then the best thing to do is append the 'M' at the end + of the string in this format: + + EX: L"Ecran De Carte (|M)" (this is the French translation) + + Other examples are used multiple times, like the Esc key or "|E|s|c" or Space -> (|S|p|a|c|e) + +2) NEWLINE + Any place you see a \n within the string, you are looking at another string that is part of the fast help + text system. \n notation doesn't need to be precisely placed within that string, but whereever you wish + to start a new line. + + EX: L"Clears all the mercs' positions,\nand allows you to re-enter them manually." + + Would appear as: + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + NOTE: It is important that you don't pad the characters adjacent to the \n with spaces. If we did this + in the above example, we would see + + WRONG WAY -- spaces before and after the \n + EX: L"Clears all the mercs' positions, \n and allows you to re-enter them manually." + + Would appear as: (the second line is moved in a character) + + Clears all the mercs' positions, + and allows you to re-enter them manually. + + +@@@ NOTATION +************ + + Throughout the text files, you'll find an assortment of comments. Comments are used to describe the + text to make translation easier, but comments don't need to be translated. A good thing is to search for + "@@@" after receiving new version of the text file, and address the special notes in this manner. + +!!! NOTATION +************ + + As described above, the "!!!" notation should be used by you to ask questions and address problems as + SirTech uses the "@@@" notation. + +*/ + +CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] = +{ + L"", +}; + +//Encyclopedia + +STR16 pMenuStrings[] = +{ + //Encyclopedia + L"Места", // 0 + L"Команда", + L"Предметы", + L"Задания", + L"Меню 5", + L"Меню 6", //5 + L"Меню 7", + L"Меню 8", + L"Меню 9", + L"Меню 10", + L"Меню 11", //10 + L"Меню 12", + L"Меню 13", + L"Меню 14", + L"Меню 15", + L"Меню 15", // 15 + + //Briefing Room + L"Войти", +}; + +STR16 pOtherButtonsText[] = +{ + L"Инструктаж", + L"Принять", +}; + +STR16 pOtherButtonsHelpText[] = +{ + L"Инструктаж", + L"Принять задания", +}; + + +STR16 pLocationPageText[] = +{ + L"Пред.", + L"Фото", + L"След.", +}; + +STR16 pSectorPageText[] = +{ + L"<<", + L"В начало", + L">>", + L"Тип: ", + L"Нет данных", + L"Нет поставленных заданий. Добавьте задания в файл TableData\\BriefingRoom\\BriefingRoom.xml. Первое задание должно быть видимым. Чтобы скрыть задание, установите значение = 0.", + L"Брифинг-зал. Пожалуйста, нажмите кнопку 'Войти'.", +}; + +STR16 pEncyclopediaTypeText[] = +{ + L"Неизвестно",// 0 - unknown + L"Город", //1 - city + L"База ПВО", //2 - SAM Site + L"Другое", //3 - other location + L"Шахты", //4 - mines + L"Военный комплекс", //5 - military complex + L"Лаборатория", //6 - laboratory complex + L"Фабрика", //7 - factory complex + L"Госпиталь", //8 - hospital + L"Тюрьма", //9 - prison + L"Аэропорт", //10 - air port +}; + +STR16 pEncyclopediaHelpCharacterText[] = +{ + L"Показ. всех", + L"Показ. AIM", + L"Показ. MERC", + L"Показ. RPC", + L"Показ. NPC", + L"Показ. транс.", + L"Показ. IMP", + L"Показ. EPC", + L"Фильтр", +}; + +STR16 pEncyclopediaShortCharacterText[] = +{ + L"Все", + L"AIM", + L"MERC", + L"RPC", + L"NPC", + L"Транс.", + L"IMP", + L"EPC", + L"Фильтр", +}; + +STR16 pEncyclopediaHelpText[] = +{ + L"Показать всё", + L"Показать города", + L"Показать базы ПВО", + L"Показать другие места", + L"Показать шахты", + L"Показать военный комплекс", + L"Показать лабораторию", + L"Показать фабрику", + L"Показать госпиталь", + L"Показать тюрьму", + L"Показать аэропорт", +}; + +STR16 pEncyclopediaSkrotyText[] = +{ + L"Всё", + L"Город", + L"ПВО", + L"Друг.", + L"Шахт.", + L"Воен.", + L"Лаб.", + L"Фабр.", + L"Госп.", + L"Тюрьм.", + L"Аэроп.", +}; + +STR16 pEncyclopediaFilterLocationText[] = +{//major location filter button text max 7 chars +//..L"------v" + L"Всё",//0 + L"Города", + L"ПВО", + L"Шахты", + L"Аэроп.", + L"Дик.мес", + L"Подзем.", + L"Завед.", + L"Другое", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Показать всё",//facility index + 1 + L"Показать города", + L"Показать базы ПВО", + L"Показать шахты", + L"Показать аэропорты", + L"Показать дикую местность", + L"Показать подземные секторы", + L"Показать секторы с заведениями\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", + L"Показать другие секторы", +}; + +STR16 pEncyclopediaSubFilterLocationText[] = +{//item subfilter button text max 7 chars +//..L"------v" + L"",//reserved. Insert new city filters above! + L"",//reserved. Insert new SAM filters above! + L"",//reserved. Insert new mine filters above! + L"",//reserved. Insert new airport filters above! + L"",//reserved. Insert new wilderness filters above! + L"",//reserved. Insert new underground sector filters above! + L"",//reserved. facility filter texts are dynamicly loaded, leave this marker empty! + L"",//reserved. Insert new other filters above! +}; + +STR16 pEncyclopediaFilterCharText[] = +{//major char filter button text +//..L"------v" + L"Все",//0 + L"A.I.M.", + L"MERC", + L"RPC", + L"NPC", + L"IMP", + L"Другое",//add new filter buttons before other +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Показать всех",//Other index + 1 + L"Показать наёмников из A.I.M.", + L"Показать наёмников из M.E.R.C", + L"Показать повстанцев", + L"Показать неигровых персонажей", + L"Показать персонажей игрока", + L"Показать другое\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", +}; + +STR16 pEncyclopediaSubFilterCharText[] = +{//item subfilter button text +//..L"------v" + L"",//reserved. Insert new AIM filters above! + L"",//reserved. Insert new MERC filters above! + L"",//reserved. Insert new RPC filters above! + L"",//reserved. Insert new NPC filters above! + L"",//reserved. Insert new IMP filters above! +//Other-----v" + L"Транс.", + L"EPC", + L"",//reserved. Insert new Other filters above! +}; + +STR16 pEncyclopediaFilterItemText[] = +{//major item filter button text max 7 chars +//..L"------v" + L"Всё",//0 + L"Оружие", + L"Патроны", + L"Броня", + L"Разгр.", + L"Навеска", + L"Разное",//add new filter buttons before misc +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Показать всё",//misc index + 1 + L"Показать оружие\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", + L"Показать боеприпасы\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", + L"Показать броню\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", + L"Показать разрузочные комплекты\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", + L"Показать навеску\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", + L"Показать разное\n[|Л|К|М] переключить фильтр\n[|П|К|М] сбросить фильтр", +}; + +STR16 pEncyclopediaSubFilterItemText[] = +{//item subfilter button text max 7 chars +//..L"------v" +//Guns......v" + L"Пистол.", + L"А.пист.", + L"ПП", + L"Винтов.", + L"Сн.винт", + L"Автомат", + L"Пулем.", + L"Дробов.", + L"Тяжел.", + L"",//reserved. insert new gun filters above! +//Amunition.v" + L"Пистол.", + L"А.пист.", + L"ПП", + L"Винтов.", + L"Сн.винт", + L"Автомат", + L"Пулем.", + L"Дробов.", + L"Тяжел.", + L"",//reserved. insert new ammo filters above! +//Armor.....v" + L"Шлем", + L"Жилет", + L"Штаны", + L"Пласт.", + L"",//reserved. insert new armor filters above! +//LBE.......v" + L"Кобуры", + L"Жилеты", + L"Ранцы", + L"Рюкзаки", + L"Карманы", + L"Другое", + L"",//reserved. insert new LBE filters above! +//Attachments" + L"Оптика", + L"Доп.", + L"Дуло", + L"Съёмн.", + L"Встроен.", + L"Другое", + L"",//reserved. insert new attachment filters above! +//Misc......v" + L"Ножи", + L"Мет.нож", + L"Удар.", + L"Гранаты", + L"Бомбы", + L"Мед.наб", + L"Наборы", + L"Лицо", + L"Другое", + L"",//reserved. insert new misc filters above! +//add filters for a new button here +}; + +STR16 pEncyclopediaFilterQuestText[] = +{//major quest filter button text max 7 chars +//..L"------v" + L"Все", + L"Активн.", + L"Заверш.", +//filter button tooltip +//..L"---------------------------------------------------------------------v" + L"Показать все",//misc index + 1 + L"Показать активные квесты", + L"Показать завершённые квесты", +}; + +STR16 pEncyclopediaSubFilterQuestText[] = +{//Quest subfilter button text max 7 chars, not used, but needed if any subfilters are added +//..L"------v" + L"",//reserved. insert new active quest subfilters above! + L"",//reserved. insert new completed quest subfilters above! +}; + +STR16 pEncyclopediaShortInventoryText[] = +{ + L"Всё", //0 + L"Оружие", + L"Патроны", + L"Разгр.", + L"Другое", + + L"Все", //5 + L"Оружие", + L"Патроны", + L"Разгр.", + L"Другое", +}; + +STR16 BoxFilter[] = +{ + // Guns + L"Тяжел.", + L"Пистол.", + L"А.пист.", + L"ПП", + L"Винтов.", + L"С.винт.", + L"Ш.винт.", + L"Пулем.", + L"Дробов.", + + // Ammo + L"Пистол.", + L"А.пист.", //10 + L"ПП", + L"Винтов.", + L"С.винт.", + L"Ш.винт.", + L"Пулем.", + L"Дробов.", + + // Used + L"Оружие", + L"Броня", + L"Разгр.", + L"Другое", //20 + + // Armour + L"Шлемы", + L"Жилеты", + L"Штаны", + L"Пласт.", + + // Misc + L"Ножи", + L"Мет.нож", + L"Бл.бой", + L"Гранаты", + L"Бомбы", + L"Мед.", //30 + L"Наборы", + L"Лицо", + L"Разгр.", + L"Разное", //34 +}; + +STR16 QuestDescText[] = +{ + L"Доставка письма", + L"Поставка еды", + L"Террористы", + L"Кубок Босса", + L"Деньги Босса", + L"Беглец Джои", + L"Спасение Марии", + L"Кубок Читзены", + L"Пленники в Альме", + L"Допрос", + + L"Проблемные фермеры", //10 + L"Найти учёного", + L"Принести видеокамеру", + L"Кошки-убийцы", + L"Найти отшельника", + L"Твари в шахте", + L"Найти пилота вертолёта", + L"Сопроводить Всадника", + L"Освободить Динамо", + L"Сопроводить туристов", + + + L"Проверить Дорин", //20 + L"Мечта о магазине", + L"Сопроводить Шенка", + L"No 23 Yet", + L"No 24 Yet", + L"Убить Дейдрану", + L"No 26 Yet", + L"No 27 Yet", + L"No 28 Yet", + L"No 29 Yet", +}; + +STR16 FactDescText[] = +{ + L"Омерта освобождена", + L"Драссен освобождён", + L"Сан-Мона освобождена", + L"Камбрия освобождена", + L"Альма освобождена", + L"Грам освобождён", + L"Тикса освобождена", + L"Читзена освобождена", + L"Эстони освобождён", + L"Балайм освобождён", + + L"Орта освобождена", //10 + L"Медуна освобождена", + L"Поговорили с Пакосом", + L"Фатима прочла письмо", + L"Фатима сбежала от игрока", + L"Димитрий (#60) мёртв", + L"Фатима ответила на удивление Димитрия", + L"Карлос крикнул 'никому не двигаться'", + L"Фатима рассказала о письме", + L"Фатима пришла в место назначения", + + L"Димитрий сказал, что у Фатимы есть доказательства", //20 + L"Мигель выслушал доводы", + L"Мигель попросил письмо", + L"Мигель прочёл письмо", + L"Айра прокоментировала письмо Мигелю", + L"Повстанцы наши враги", + L"Разговор Фатимы до передачи письма", + L"Получено задание с Драссеном", + L"Мигель предложил Айру", + L"Пакос ранен или убит", + + L"Пакос в A10", //30 + L"В секотре безопасно", + L"Посылка от БР в пути", + L"Посылка от БР в Драссене", + L"33 - ВЕРНО и прибыло в течение 2 часов", + L"33 - ВЕРНО 34 - ЛОЖЬ, более чем 2 часа", + L"Игрок заметил что часть груза пропала", + L"36 - ВЕРНО и Пабло был избит игроком", + L"Пабло проворовался", + L"Пабло вернул украденное, set 37 false", + + L"Мигель присоединится к команде", //40 + L"Дали Пабло немного денег", + L"Небесного всадника сопровождают в город", + L"Небесный Всадник уже близок к своему вертолёту в Драссене", + L"Небесный всадник оговорил условия контракта", + L"Игрок выбрал вертолёт на стратегическом экране как минимум один раз", + L"Неигровому персонажу должны денег", + L"Неигровой персонаж ранен", + L"Неигровой персонаж ранен игроком", + L"Отцу Джону Уолкеру сказали о нехватке продовольствия", + + L"Айра не в секторе", //50 + L"Айра ведёт беседу", + L"Задание с продовольствием выполнено", + L"Пабло что-то украл с последней посылки", + L"Последнее отправление повреждено", + L"Последнее отправление отправлено не туда", + L"Прошло 24 часа с момента сообщения, что отправление отправлено не в тот аэропорт", + L"Потерянная посылка пришла с повреждённым грузом. 56 to False", + L"Потерянная посылка пропала бесследно. Turn 56 False", + L"Следующее отправление может быть (random) потеряно", + + L"Следующее отправление может быть (random) задержано", //60 + L"Отправление среднего размера", + L"Отправление большого размера", + L"У Дорин проснулась совесть", + L"Игрок поговорил с Гордоном", + L"Айра до сих пор неигровой персонаж и находится в A10-2(не присоединилась)", + L"Динамо просит оказать ему первую помощь", + L"Динамо можно нанять", + L"Неигровой персонаж истекает кровью", + L"Шенк хочет присоединиться", + + L"Неигровой персонаж истекает кровью", //70 + L"У игрока есть голова и Кармен в Сан-Мона", + L"У игрока есть голова и Кармен в Камбрии", + L"У игрока есть голова и Кармен в Драссене", + L"Отец пьян", + L"Раненые бойцы игрока находятся ближе 8 тайлов от неигрового персонажа", + L"1 и только 1 раненый боец ближе 8 тайлов от неигрового персонажа", + L"Больше одного раненного бойца ближе 8 тайлов от неигрового персонажа", + L"Бренда в магазине ", + L"Бренда мертва", + + L"Бренда у себя дома", //80 + L"Неигровой персонаж - враг", + L"Уровень разговора >= 84 и < 3 мужчин присутствует", + L"Уровень разговора >= 84 и хотя бы 3 мужчины присутствует", + L"Ганс позволил нам встретиться с Тони", + L"Ганс стоит на позиции 13523", + L"Сегодня Тони нет", + L"Женщина разговаривает с неигровым персонажем", + L"Игрок развлекался в борделе", + L"Карла доступна", + + L"Синди доступна", //90 + L"Бэмби доступна", + L"Свободных девочек нет", + L"Игрок ожидал девочек", + L"Игрок заплатил правильную сумму денег", + L"Mercs walked by goon", + L"More thean 1 merc present within 3 tiles of NPC", + L"At least 1 merc present withing 3 tiles of NPC", + L"Босс ожидает визита игрока", + L"Дэррен ожидает денег от игрока", + + L"Player within 5 tiles and NPC is visible", // 100 + L"Carmen is in San Mona", + L"Player Spoke to Carmen", + L"KingPin knows about stolen money", + L"Player gave money back to KingPin", + L"Frank was given the money ( not to buy booze )", + L"Player was told about KingPin watching fights", + L"Past club closing time and Darren warned Player. (reset every day)", + L"Joey is EPC", + L"Joey is in C5", + + L"Joey is within 5 tiles of Martha(109) in sector G8", //110 + L"Joey is Dead!", + L"At least one player merc within 5 tiles of Martha", + L"Spike is occuping tile 9817", + L"Angel offered vest", + L"Angel sold vest", + L"Maria is EPC", + L"Maria is EPC and inside leather Shop", + L"Player wants to buy vest", + L"Maria rescue was noticed by KingPin goons and Kingpin now enemy", + + L"Angel left deed on counter", //120 + L"Maria quest over", + L"Player bandaged NPC today", + L"Doreen revealed allegiance to Queen", + L"Pablo should not steal from player", + L"Player shipment arrived but loyalty to low, so it left", + L"Helicopter is in working condition", + L"Player is giving amount of money >= $1000", + L"Player is giving amount less than $1000", + L"Waldo agreed to fix helicopter( heli is damaged )", + + L"Helicopter was destroyed", //130 + L"Waldo told us about heli pilot", + L"Father told us about Deidranna killing sick people", + L"Father told us about Chivaldori family", + L"Father told us about creatures", + L"Loyalty is OK", + L"Loyalty is Low", + L"Loyalty is High", + L"Player doing poorly", + L"Player gave valid head to Carmen", + + L"Current sector is G9(Cambria)", //140 + L"Current sector is C5(SanMona)", + L"Current sector is C13(Drassen", + L"Carmen has at least $10,000 on him", + L"Player has Slay on team for over 48 hours", + L"Carmen is suspicous about slay", + L"Slay is in current sector", + L"Carmen gave us final warning", + L"Vince has explained that he has to charge", + L"Vince is expecting cash (reset everyday)", + + L"Player stole some medical supplies once", //150 + L"Player stole some medical supplies again", + L"Vince can be recruited", + L"Vince is currently doctoring", + L"Vince was recruited", + L"Slay offered deal", + L"All terrorists killed", + L"", + L"Maria left in wrong sector", + L"Skyrider left in wrong sector", + + L"Joey left in wrong sector", //160 + L"John left in wrong sector", + L"Mary left in wrong sector", + L"Walter was bribed", + L"Shank(67) is part of squad but not speaker", + L"Maddog spoken to", + L"Jake told us about shank", + L"Shank(67) is not in secotr", + L"Bloodcat quest on for more than 2 days", + L"Effective threat made to Armand", + + L"Queen is DEAD!", //170 + L"Speaker is with Aim or Aim person on squad within 10 tiles", + L"Current mine is empty", + L"Current mine is running out", + L"Loyalty low in affiliated town (low mine production)", + L"Creatures invaded current mine", + L"Player LOST current mine", + L"Current mine is at FULL production", + L"Dynamo(66) is Speaker or within 10 tiles of speaker", + L"Fred told us about creatures", + + L"Matt told us about creatures", //180 + L"Oswald told us about creatures", + L"Calvin told us about creatures", + L"Carl told us about creatures", + L"Chalice stolen from museam", + L"John(118) is EPC", + L"Mary(119) and John (118) are EPC's", + L"Mary(119) is alive", + L"Mary(119)is EPC", + L"Mary(119) is bleeding", + + L"John(118) is alive", //190 + L"John(118) is bleeding", + L"John or Mary close to airport in Drassen(B13)", + L"Mary is Dead", + L"Miners placed", + L"Krott planning to shoot player", + L"Madlab explained his situation", + L"Madlab expecting a firearm", + L"Madlab expecting a video camera.", + L"Item condition is < 70 ", + + L"Madlab complained about bad firearm.", //200 + L"Madlab complained about bad video camera.", + L"Robot is ready to go!", + L"First robot destroyed.", + L"Madlab given a good camera.", + L"Robot is ready to go a second time!", + L"Second robot destroyed.", + L"Mines explained to player.", + L"Dynamo (#66) is in sector J9.", + L"Dynamo (#66) is alive.", + + L"One PC hasn't fought, but is able, and less than 3 fights have occured", //210 + L"Player receiving mine income from Drassen, Cambria, Alma & Chitzena", + L"Player has been to K4_b1", + L"Brewster got to talk while Warden was alive", + L"Warden (#103) is dead.", + L"Ernest gave us the guns", + L"This is the first bartender", + L"This is the second bartender", + L"This is the third bartender", + L"This is the fourth bartender", + + + L"Manny is a bartender.", //220 + L"Nothing is repaired yet (some stuff being worked on, nothing to give player right now)", + L"Player made purchase from Howard (#125)", + L"Dave sold vehicle", + L"Dave's vehicle ready", + L"Dave expecting cash for car", + L"Dave has gas. (randomized daily)", + L"Vehicle is present", + L"First battle won by player", + L"Robot recruited and moved", + + L"No club fighting allowed", //230 + L"Player already fought 3 fights today", + L"Hans mentioned Joey", + L"Player is doing better than 50% (Alex's function)", + L"Player is doing very well (better than 80%)", + L"Father is drunk and sci-fi option is on", + L"Micky (#96) is drunk", + L"Player has attempted to force their way into brothel", + L"Rat effectively threatened 3 times", + L"Player paid for two people to enter brothel", + + L"", //240 + L"", + L"Player owns 2 towns including omerta", + L"Player owns 3 towns including omerta",// 243 + L"Player owns 4 towns including omerta",// 244 + L"", + L"", + L"", + L"Fact male speaking female present", + L"Fact hicks married player merc",// 249 + + L"Fact museum open",// 250 + L"Fact brothel open",// 251 + L"Fact club open",// 252 + L"Fact first battle fought",// 253 + L"Fact first battle being fought",// 254 + L"Fact kingpin introduced self",// 255 + L"Fact kingpin not in office",// 256 + L"Fact dont owe kingpin money",// 257 + L"Fact pc marrying daryl is flo",// 258 + L"", + + L"", //260 + L"Fact npc cowering", // 261, + L"", + L"", + L"Fact top and bottom levels cleared", + L"Fact top level cleared",// 265 + L"Fact bottom level cleared",// 266 + L"Fact need to speak nicely",// 267 + L"Fact attached item before",// 268 + L"Fact skyrider ever escorted",// 269 + + L"Fact npc not under fire",// 270 + L"Fact willis heard about joey rescue",// 271 + L"Fact willis gives discount",// 272 + L"Fact hillbillies killed",// 273 + L"Fact keith out of business", // 274 + L"Fact mike available to army",// 275 + L"Fact kingpin can send assassins",// 276 + L"Fact estoni refuelling possible",// 277 + L"Fact museum alarm went off",// 278 + L"", + + L"Fact maddog is speaker", //280, + L"", + L"Fact angel mentioned deed", // 282, + L"Fact iggy available to army",// 283 + L"Fact pc has conrads recruit opinion",// 284 + L"", + L"", + L"", + L"", + L"Fact npc hostile or pissed off", //289, + + L"", //290 + L"Fact tony in building", //291, + L"Fact shank speaking", // 292, + L"Fact doreen alive",// 293 + L"Fact waldo alive",// 294 + L"Fact perko alive",// 295 + L"Fact tony alive",// 296 + L"", + L"Fact vince alive",// 298, + L"Fact jenny alive",// 299 + + L"", //300 + L"", + L"Fact arnold alive",// 302, + L"", + L"Fact rocket rifle exists",// 304, + L"", + L"", + L"", + L"", + L"", + + L"", //310 + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //320 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //330 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //340 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //350 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //360 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //370 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //380 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //390 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //400 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //410 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //420 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //430 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //440 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //450 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //460 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //470 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //480 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //490 + + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", + L"", //500 +}; + +//----------- + +// Editor +//Editor Taskbar Creation.cpp +STR16 iEditorItemStatsButtonsText[] = +{ + L"Delete", + L"Delete item (|D|e|l)", +}; + +STR16 FaceDirs[8] = +{ + L"north", + L"northeast", + L"east", + L"southeast", + L"south", + L"southwest", + L"west", + L"northwest" +}; + +STR16 iEditorMercsToolbarText[] = +{ + L"Toggle viewing of players", //0 + L"Toggle viewing of enemies", + L"Toggle viewing of creatures", + L"Toggle viewing of rebels", + L"Toggle viewing of civilians", + + L"Player", + L"Enemy", + L"Creature", + L"Rebels", + L"Civilian", + + L"DETAILED PLACEMENT", //10 + L"General information mode", + L"Physical appearance mode", + L"Attributes mode", + L"Inventory mode", + L"Profile ID mode", + L"Schedule mode", + L"Schedule mode", + L"DELETE", + L"Delete currently selected merc (|D|e|l)", + L"NEXT", //20 + L"Find next merc (|S|p|a|c|e)\nFind previous merc (|C|t|r|l+|S|p|a|c|e)", + L"Toggle priority existance", + L"Toggle whether or not placement\nhas access to all doors", + + //Orders + L"STATIONARY", + L"ON GUARD", + L"ON CALL", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", //30 + L"RND PT PATROL", + + //Attitudes + L"DEFENSIVE", + L"BRAVE SOLO", + L"BRAVE AID", + L"AGGRESSIVE", + L"CUNNING SOLO", + L"CUNNING AID", + + L"Set merc to face %s", + + L"Find", + L"BAD", //40 + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"BAD", + L"POOR", + L"AVERAGE", + L"GOOD", + L"GREAT", + + L"Previous color set", //50 + L"Next color set", + + L"Previous body type", + L"Next body type", + + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + L"Toggle time variance (+ or - 15 minutes)", + + L"No action", + L"No action", + L"No action", //60 + L"No action", + + L"Clear Schedule", + + L"Find selected merc", +}; + +STR16 iEditorBuildingsToolbarText[] = +{ + L"ROOFS", //0 + L"WALLS", + L"ROOM INFO", + + L"Place walls using selection method", + L"Place doors using selection method", + L"Place roofs using selection method", + L"Place windows using selection method", + L"Place damaged walls using selection method.", + L"Place furniture using selection method", + L"Place wall decals using selection method", + L"Place floors using selection method", //10 + L"Place generic furniture using selection method", + L"Place walls using smart method", + L"Place doors using smart method", + L"Place windows using smart method", + L"Place damaged walls using smart method", + L"Lock or trap existing doors", + + L"Add a new room", + L"Edit cave walls.", + L"Remove an area from existing building.", + L"Remove a building", //20 + L"Add/replace building's roof with new flat roof.", + L"Copy a building", + L"Move a building", + L"Draw room number\n(Hold |S|h|i|f|t to reuse room number)", + L"Erase room numbers", + + L"Toggle |Erase mode", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Cycle brush size (|A/|Z)", + L"Roofs (|H)", + L"|Walls", //30 + L"Room Info (|N)", +}; + +STR16 iEditorItemsToolbarText[] = +{ + L"Wpns", //0 + L"Ammo", + L"Armour", + L"Разгр.", + L"Exp", + L"E1", + L"E2", + L"E3", + L"Triggers", + L"Keys", + L"Rnd", //10 + L"Previous (|,)", // previous page + L"Next (|.)", // next page +}; + +STR16 iEditorMapInfoToolbarText[] = +{ + L"Add ambient light source", //0 + L"Toggle fake ambient lights.", + L"Add exit grids (r-clk to query existing).", + L"Cycle brush size (|A/|Z)", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", + L"Specify north point for validation purposes.", + L"Specify west point for validation purposes.", + L"Specify east point for validation purposes.", + L"Specify south point for validation purposes.", + L"Specify center point for validation purposes.", //10 + L"Specify isolated point for validation purposes.", +}; + +STR16 iEditorOptionsToolbarText[]= +{ + L"New outdoor level", //0 + L"New basement", + L"New cave level", + L"Save map (|C|t|r|l+|S)", + L"Load map (|C|t|r|l+|L)", + L"Select tileset", + L"Leave Editor mode", + L"Exit game (|A|l|t+|X)", + L"Create radar map", + L"When checked, the map will be saved in original JA2 map format. Items with ID > 350 will be lost.\nThis option is only valid on 'normal' size maps that do not reference grid numbers (e.g: exit grids) > 25600.", + L"When checked and you load a map, the map will be enlarged automatically depending on the selected Rows and Cols.", +}; + +STR16 iEditorTerrainToolbarText[] = +{ + L"Draw |Ground textures", //0 + L"Set map ground textures", + L"Place banks and |Cliffs", + L"Draw roads (|P)", + L"Draw |Debris", + L"Place |Trees & bushes", + L"Place |Rocks", + L"Place barrels & |Other junk", + L"Fill area", + L"Undo last change (|B|a|c|k|s|p|a|c|e)", + L"Toggle |Erase mode", //10 + L"Cycle brush size (|A/|Z)", + L"Raise brush density (|])", + L"Lower brush density (|[)", +}; + +STR16 iEditorTaskbarInternalText[]= +{ + L"Terrain", //0 + L"Buildings", + L"Items", + L"Mercs", + L"Map Info", + L"Options", + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Terrain fasthelp text + L"|./|,: Cycle 'width: xx' dimensions\n|P|g |U|p/|P|g |D|n: Previous/Next tile for selected object(s)/in smart method", //Buildings fasthelp text + L"|S|p|a|c|e: Select next item\n|C|t|r|l+|S|p|a|c|e: Select previous item\n \n|/: Place same item under mouse cursor\n|C|t|r|l+|/: Place new item under mouse cursor", //Items fasthelp text + L"|1-|9: Set waypoints\n|C|t|r|l+|C/|C|t|r|l+|V: Copy/Paste merc\n|P|g |U|p/|P|g |D|n: Toggle merc placement level", //Mercs fasthelp text + L"|C|t|r|l+|G: Go to grid no\n|S|h|i|f|t: Scroll beyond map boundary\n \n(|t|i|l|d|e): Toggle cursor level\n|I: Toggle overhead map\n|J: Toggle draw high ground\n|K: Toggle high ground markers\n|S|h|i|f|t+|L: Toggle map edge points\n|S|h|i|f|t+|T: Toggle treetops\n|U: Toggle world raise\n \n|./|,: Cycle 'width: xx' dimensions", //Map Info fasthelp text + L"|C|t|r|l+|N: Create new map\n \n|F|5: Show Summary Info/Country Map\n|F|1|0: Remove all lights\n|F|1|1: Reverse schedules\n|F|1|2: Clear schedules\n \n|S|h|i|f|t+|R: Toggle random placement based on quantity of selected object(s)\n \nCommand Line options\n|-|D|O|M|A|P|S: Batch radarmap generation\n|-|D|O|M|A|P|S|C|N|V: Batch radarmap generation and covert maps to latest version", //Options fasthelp text +}; + +//Editor Taskbar Utils.cpp + +STR16 iRenderMapEntryPointsAndLightsText[] = +{ + L"North Entry Point", //0 + L"West Entry Point", + L"East Entry Point", + L"South Entry Point", + L"Center Entry Point", + L"Isolated Entry Point", + + L"Prime", + L"Night", + L"24Hour", +}; + +STR16 iBuildTriggerNameText[] = +{ + L"Panic Trigger1", //0 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", + + L"Pressure Action", + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", +}; + +STR16 iRenderDoorLockInfoText[]= +{ + L"No Lock ID", //0 + L"Explosion Trap", + L"Electric Trap", + L"Siren Trap", + L"Silent Alarm", + L"Super Electric Trap", //5 + L"Brothel Siren Trap", + L"Trap Level %d", +}; + +STR16 iRenderEditorInfoText[]= +{ + L"Save map in vanilla JA2 (v1.12) map format (Version: 5.00 / 25)", //0 + L"No map currently loaded.", + L"File: %S, Current Tileset: %s", + L"Enlarge map on loading", +}; +//EditorBuildings.cpp +STR16 iUpdateBuildingsInfoText[] = +{ + L"TOGGLE", //0 + L"VIEWS", + L"SELECTION METHOD", + L"SMART METHOD", + L"BUILDING METHOD", + L"Room#", //5 +}; + +STR16 iRenderDoorEditingWindowText[] = +{ + L"Editing lock attributes at map index %d.", + L"Lock ID", + L"Trap Type", + L"Trap Level", + L"Locked", +}; + +//EditorItems.cpp + +STR16 pInitEditorItemsInfoText[] = +{ + L"Pressure Action", //0 + L"Panic Action1", + L"Panic Action2", + L"Panic Action3", + L"Action%d", + + L"Panic Trigger1", //5 + L"Panic Trigger2", + L"Panic Trigger3", + L"Trigger%d", +}; + +STR16 pDisplayItemStatisticsTex[] = +{ + L"Status Info Line 1", + L"Status Info Line 2", + L"Status Info Line 3", + L"Status Info Line 4", + L"Status Info Line 5", +}; + +//EditorMapInfo.cpp +STR16 pUpdateMapInfoText[] = +{ + L"R", //0 + L"G", + L"B", + + L"Prime", + L"Night", + L"24Hrs", //5 + + L"Radius", + + L"Underground", + L"Light Level", + + L"Outdoors", + L"Basement", //10 + L"Caves", + + L"Restricted", + L"Scroll ID", + + L"Destination", + L"Sector", //15 + L"Destination", + L"Bsmt. Level", + L"Dest.", + L"GridNo", +}; +//EditorMercs.cpp +CHAR16 gszScheduleActions[ 11 ][20] = +{ + L"No action", + L"Lock door", + L"Unlock door", + L"Open door", + L"Close door", + L"Move to gridno", + L"Leave sector", + L"Enter sector", + L"Stay in sector", + L"Sleep", + L"Ignore this!" +}; + +STR16 zDiffNames[5] = // NUM_DIFF_LVLS = 5 +{ + L"Wimp", + L"Easy", + L"Average", + L"Tough", + L"Steroid Users Only" +}; + +STR16 EditMercStat[12] = +{ + L"Max Health", + L"Cur Health", + L"Strength", + L"Agility", + L"Dexterity", + L"Charisma", + L"Wisdom", + L"Marksmanship", + L"Explosives", + L"Medical", + L"Scientific", + L"Exp Level", +}; + + +STR16 EditMercOrders[8] = +{ + L"Stationary", + L"On Guard", + L"Close Patrol", + L"Far Patrol", + L"Point Patrol", + L"On Call", + L"Seek Enemy", + L"Random Point Patrol", +}; + +STR16 EditMercAttitudes[6] = +{ + L"Defensive", + L"Brave Loner", + L"Brave Buddy", + L"Cunning Loner", + L"Cunning Buddy", + L"Aggressive", +}; + +STR16 pDisplayEditMercWindowText[] = +{ + L"Merc Name:", //0 + L"Orders:", + L"Combat Attitude:", +}; + +STR16 pCreateEditMercWindowText[] = +{ + L"Merc Colors", //0 + L"Done", + + L"Previous merc standing orders", + L"Next merc standing orders", + + L"Previous merc combat attitude", + L"Next merc combat attitude", //5 + + L"Decrease merc stat", + L"Increase merc stat", +}; + +STR16 pDisplayBodyTypeInfoText[] = +{ + L"Random", //0 + L"Reg Male", + L"Big Male", + L"Stocky Male", + L"Reg Female", + L"NE Tank", //5 + L"NW Tank", + L"Fat Civilian", + L"M Civilian", + L"Miniskirt", + L"F Civilian", //10 + L"Kid w/ Hat", + L"Humvee", + L"Eldorado", + L"Icecream Truck", + L"Jeep", //15 + L"Kid Civilian", + L"Domestic Cow", + L"Cripple", + L"Unarmed Robot", + L"Larvae", //20 + L"Infant", + L"Yng F Monster", + L"Yng M Monster", + L"Adt F Monster", + L"Adt M Monster", //25 + L"Queen Monster", + L"Bloodcat", + L"Humvee", // TODO.Translate +}; + +STR16 pUpdateMercsInfoText[] = +{ + L" --=ORDERS=-- ", //0 + L"--=ATTITUDE=--", + + L"RELATIVE", + L"ATTRIBUTES", + + L"RELATIVE", + L"EQUIPMENT", + + L"RELATIVE", + L"ATTRIBUTES", + + L"Army", + L"Admin", + L"Elite", //10 + + L"Exp. Level", + L"Life", + L"LifeMax", + L"Marksmanship", + L"Strength", + L"Agility", + L"Dexterity", + L"Wisdom", + L"Leadership", + L"Explosives", //20 + L"Medical", + L"Mechanical", + L"Morale", + + L"Hair color:", + L"Skin color:", + L"Vest color:", + L"Pant color:", + + L"RANDOM", + L"RANDOM", + L"RANDOM", //30 + L"RANDOM", + + L"By specifying a profile index, all of the information will be extracted from the profile ", + L"and override any values that you have edited. It will also disable the editing features ", + L"though, you will still be able to view stats, etc. Pressing ENTER will automatically ", + L"extract the number you have typed. A blank field will clear the profile. The current ", + L"number of profiles range from 0 to ", + + L"Current Profile: n/a ", + L"Current Profile: %s", + + L"STATIONARY", + L"ON CALL", //40 + L"ON GUARD", + L"SEEK ENEMY", + L"CLOSE PATROL", + L"FAR PATROL", + L"POINT PATROL", + L"RND PT PATROL", + + L"Action", + L"Time", + L"V", + L"GridNo 1", //50 + L"GridNo 2", + L"1)", + L"2)", + L"3)", + L"4)", + + L"lock", + L"unlock", + L"open", + L"close", + + L"Click on the gridno adjacent to the door that you wish to %s.", //60 + L"Click on the gridno where you wish to move after you %s the door.", + L"Click on the gridno where you wish to move to.", + L"Click on the gridno where you wish to sleep at. Person will automatically return to original position after waking up.", + L" Hit ESC to abort entering this line in the schedule.", +}; + +CHAR16 pRenderMercStringsText[][100] = +{ + L"Slot #%d", + L"Patrol orders with no waypoints", + L"Waypoints with no patrol orders", +}; + +STR16 pClearCurrentScheduleText[] = +{ + L"No action", +}; + +STR16 pCopyMercPlacementText[] = +{ + L"Placement not copied because no placement selected.", + L"Placement copied.", +}; + +STR16 pPasteMercPlacementText[] = +{ + L"Placement not pasted as no placement is saved in buffer.", + L"Placement pasted.", + L"Placement not pasted as the maximum number of placements for this team has been reached.", +}; + +//editscreen.cpp +STR16 pEditModeShutdownText[] = +{ + L"Exit editor?", +}; + +STR16 pHandleKeyboardShortcutsText[] = +{ + L"Are you sure you wish to remove all lights?", //0 + L"Are you sure you wish to reverse the schedules?", + L"Are you sure you wish to clear all of the schedules?", + + L"Clicked Placement Enabled", + L"Clicked Placement Disabled", + + L"Draw High Ground Enabled", //5 + L"Draw High Ground Disabled", + + L"Number of edge points: N=%d E=%d S=%d W=%d", + + L"Random Placement Enabled", + L"Random Placement Disabled", + + L"Removing Treetops", //10 + L"Showing Treetops", + + L"World Raise Reset", + + L"World Raise Set Old", + L"World Raise Set", +}; + +STR16 pPerformSelectedActionText[] = +{ + L"Creating radar map for %S", //0 + + L"Delete current map and start a new basement level?", + L"Delete current map and start a new cave level?", + L"Delete current map and start a new outdoor level?", + + L" Wipe out ground textures? ", +}; + +STR16 pWaitForHelpScreenResponseText[] = +{ + L"HOME", //0 + L"Toggle fake editor lighting ON/OFF", + + L"INSERT", + L"Toggle fill mode ON/OFF", + + L"BKSPC", + L"Undo last change", + + L"DEL", + L"Quick erase object under mouse cursor", + + L"ESC", + L"Exit editor", + + L"PGUP/PGDN", //10 + L"Change object to be pasted", + + L"F1", + L"This help screen", + + L"F10", + L"Save current map", + + L"F11", + L"Load map as current", + + L"+/-", + L"Change shadow darkness by .01", + + L"SHFT +/-", //20 + L"Change shadow darkness by .05", + + L"0 - 9", + L"Change map/tileset filename", + + L"b", + L"Change brush size", + + L"d", + L"Draw debris", + + L"o", + L"Draw obstacle", + + L"r", //30 + L"Draw rocks", + + L"t", + L"Toggle trees display ON/OFF", + + L"g", + L"Draw ground textures", + + L"w", + L"Draw building walls", + + L"e", + L"Toggle erase mode ON/OFF", + + L"h", //40 + L"Toggle roofs ON/OFF", +}; + +STR16 pAutoLoadMapText[] = +{ + L"Map data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", + L"Schedule data has just been corrupted. Don't save, don't quit, get Kris! If he's not here, save the map using a temp filename and document everything you just did, especially your last action!", +}; + +STR16 pShowHighGroundText[] = +{ + L"Showing High Ground Markers", + L"Hiding High Ground Markers", +}; + +//Item Statistics.cpp +/*CHAR16 gszActionItemDesc[ 34 ][ 30 ] = +{ + L"Klaxon Mine", + L"Flare Mine", + L"Teargas Explosion", + L"Stun Explosion", + L"Smoke Explosion", + L"Mustard Gas", + L"Land Mine", + L"Open Door", + L"Close Door", + L"3x3 Hidden Pit", + L"5x5 Hidden Pit", + L"Small Explosion", + L"Medium Explosion", + L"Large Explosion", + L"Toggle Door", + L"Toggle Action1s", + L"Toggle Action2s", + L"Toggle Action3s", + L"Toggle Action4s", + L"Enter Brothel", + L"Exit Brothel", + L"Kingpin Alarm", + L"Sex with Prostitute", + L"Reveal Room", + L"Local Alarm", + L"Global Alarm", + L"Klaxon Sound", + L"Unlock door", + L"Toggle lock", + L"Untrap door", + L"Tog pressure items", + L"Museum alarm", + L"Bloodcat alarm", + L"Big teargas", +}; +*/ +STR16 pUpdateItemStatsPanelText[] = +{ + L"Toggle hide flag", //0 + L"No item selected.", + L"Slot available for", + L"Random generation.", + L"Keys not editable.", + L"ProfileID of owner", + L"Item class not implemented.", + L"Slot locked as empty.", + L"Status", + L"Rounds", + L"Trap Level", //10 + L"Quantity", + L"Trap Level", + L"Status", + L"Trap Level", + L"Status", + L"Quantity", + L"Trap Level", + L"Dollars", + L"Status", + L"Trap Level", //20 + L"Trap Level", + L"Tolerance", + L"Alarm Trigger", + L"Exist Chance", + L"B", + L"R", + L"S", +}; + +STR16 pSetupGameTypeFlagsText[] = +{ + L"Item appears in both Sci-Fi and Realistic modes", //0 + L"Item appears in Realistic mode only", + L"Item appears in Sci-Fi mode only", +}; + +STR16 pSetupGunGUIText[] = +{ + L"SILENCER", //0 + L"SNIPERSCOPE", + L"LASERSCOPE", + L"BIPOD", + L"DUCKBILL", + L"G-LAUNCHER", //5 +}; + +STR16 pSetupArmourGUIText[] = +{ + L"CERAMIC PLATES", //0 +}; + +STR16 pSetupExplosivesGUIText[] = +{ + L"DETONATOR", +}; + +STR16 pSetupTriggersGUIText[] = +{ + L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.", +}; + +//Sector Summary.cpp + +STR16 pCreateSummaryWindowText[]= +{ + L"Okay", //0 + L"A", + L"G", + L"B1", + L"B2", + L"B3", //5 + L"LOAD", + L"SAVE", + L"Update", +}; + +STR16 pRenderSectorInformationText[] = +{ + L"Tileset: %s", //0 + L"Version Info: Summary: 1.%02d, Map: %1.2f / %02d", + L"Number of items: %d", + L"Number of lights: %d", + L"Number of entry points: %d", + + L"N", + L"E", + L"S", + L"W", + L"C", + L"I", //10 + + L"Number of rooms: %d", + L"Total map population: %d", + L"Enemies: %d", + L"Admins: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Troops: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Elites: %d", + + L"(%d detailed, %d profile -- %d have priority existance)", + L"Civilians: %d", //20 + + L"(%d detailed, %d profile -- %d have priority existance)", + + L"Humans: %d", + L"Cows: %d", + L"Bloodcats: %d", + + L"Creatures: %d", + + L"Monsters: %d", + L"Bloodcats: %d", + + L"Number of locked and/or trapped doors: %d", + L"Locked: %d", + L"Trapped: %d", //30 + L"Locked & Trapped: %d", + + L"Civilians with schedules: %d", + + L"Too many exit grid destinations (more than 4)...", + L"ExitGrids: %d (%d with a long distance destination)", + L"ExitGrids: none", + L"ExitGrids: 1 destination using %d exitgrids", + L"ExitGrids: 2 -- 1) Qty: %d, 2) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d", + L"ExitGrids: 3 -- 1) Qty: %d, 2) Qty: %d, 3) Qty: %d, 4) Qty: %d", + L"Enemy Relative Attributes: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", //40 + L"Enemy Relative Equipment: %d bad, %d poor, %d norm, %d good, %d great (%+d Overall)", + L"%d placements have patrol orders without any waypoints defined.", + L"%d placements have waypoints, but without any patrol orders.", + L"%d gridnos have questionable room numbers. Please validate.", + +}; + +STR16 pRenderItemDetailsText[] = +{ + L"R", //0 + L"S", + L"Enemy", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"Panic1", + L"Panic2", + L"Panic3", + L"Norm1", + L"Norm2", + L"Norm3", + L"Norm4", //10 + L"Pressure Actions", + + L"TOO MANY ITEMS TO DISPLAY!", + + L"PRIORITY ENEMY DROPPED ITEMS", + L"None", + + L"TOO MANY ITEMS TO DISPLAY!", + L"NORMAL ENEMY DROPPED ITEMS", + L"TOO MANY ITEMS TO DISPLAY!", + L"None", + L"TOO MANY ITEMS TO DISPLAY!", + L"ERROR: Can't load the items for this map. Reason unknown.", //20 +}; + +STR16 pRenderSummaryWindowText[] = +{ + L"CAMPAIGN EDITOR -- %s Version 1.%02d", //0 + L"(NO MAP LOADED).", + L"You currently have %d outdated maps.", + L"The more maps that need to be updated, the longer it takes. It'll take ", + L"approximately 4 minutes on a P200MMX to analyse 100 maps, so", + L"depending on your computer, it may vary.", + L"Do you wish to regenerate info for ALL these maps at this time (y/n)?", + + L"There is no sector currently selected.", + + L"Entering a temp file name that doesn't follow campaign editor conventions...", + + L"You need to either load an existing map or create a new map before being", + L"able to enter the editor, or you can quit (ESC or Alt+x).", //10 + + L", ground level", + L", underground level 1", + L", underground level 2", + L", underground level 3", + L", alternate G level", + L", alternate B1 level", + L", alternate B2 level", + L", alternate B3 level", + + L"ITEM DETAILS -- sector %s", + L"Summary Information for sector %s:",//20 + + L"Summary Information for sector %s", + L"does not exist.", + + L"Summary Information for sector %s", + L"does not exist.", + + L"No information exists for sector %s.", + + L"No information exists for sector %s.", + + L"FILE: %s", + + L"FILE: %s", + + L"Override READONLY", + L"Overwrite File", //30 + + L"You currently have no summary data. By creating one, you will be able to keep track", + L"of information pertaining to all of the sectors you edit and save. The creation process", + L"will analyse all maps in your \\MAPS directory, and generate a new one. This could", + L"take a few minutes depending on how many valid maps you have. Valid maps are", + L"maps following the proper naming convention from a1.dat - p16.dat. Underground maps", + L"are signified by appending _b1 to _b3 before the .dat (ex: a9_b1.dat). ", + + L"Do you wish to do this now (y/n)?", + + L"No summary info. Creation denied.", + + L"Grid", + L"Progress", //40 + L"Use Alternate Maps", + + L"Summary", + L"Items", +}; + +STR16 pUpdateSectorSummaryText[] = +{ + L"Analyzing map: %s...", +}; + +STR16 pSummaryLoadMapCallbackText[] = +{ + L"Loading map: %s", +}; + +STR16 pReportErrorText[] = +{ + L"Skipping update for %s. Probably due to tileset conflicts...", +}; + +STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[] = +{ + L"Generating map information", +}; + +STR16 pSummaryUpdateCallbackText[] = +{ + L"Generating map summary", +}; + +STR16 pApologizeOverrideAndForceUpdateEverythingText[] = +{ + L"MAJOR VERSION UPDATE", + L"There are %d maps requiring a major version update.", + L"Updating all outdated maps", +}; + +//selectwin.cpp +STR16 pDisplaySelectionWindowGraphicalInformationText[] = +{ + L"%S[%d] from default tileset %s (%d, %S)", + L"File: %S, subindex: %d (%d, %S)", + L"Tileset: %s", +}; + +STR16 pDisplaySelectionWindowButtonText[] = +{ + L"Accept selections (|E|n|t|e|r)", + L"Cancel selections (|E|s|c)\nClear selections (|S|p|a|c|e)", + L"Scroll window up (|U|p)", + L"Scroll window down (|D|o|w|n)", +}; + +//Cursor Modes.cpp +STR16 wszSelType[6] = { + L"Small", + L"Medium", + L"Large", + L"XLarge", + L"Width: xx", + L"Area" + }; + +//--- + +CHAR16 gszAimPages[ 6 ][ 20 ] = +{ + L"Cтp. 1/2", //0 + L"Cтp. 2/2", + + L"Cтp. 1/3", + L"Cтp. 2/3", + L"Cтp. 3/3", + + L"Cтp. 1/1", //5 +}; + +// by Jazz +CHAR16 zGrod[][500] = +{ + L"Робот", //0 // Robot +}; + +STR16 pCreditsJA2113[] = +{ + L"@T,{;Разработчики JA2 v1.13", + L"@T,C144,R134,{;Программирование", + L"@T,C144,R134,{;Графика и звук", + L"@};(Многое взято из других модов)", + L"@T,C144,R134,{;Предметы", + L"@T,C144,R134,{;Также помогали", + L"@};(И многие другие, предложившие хорошие идеи и высказавшие важные замечания!)", +}; + +CHAR16 ItemNames[MAXITEMS][80] = +{ + L"", +}; + + +CHAR16 ShortItemNames[MAXITEMS][80] = +{ + L"", +}; + +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 AmmoCaliber[MAXITEMS][20];// = +//{ +// L"0", +// L".38 кал", +// L"9 мм", +// L".45 кал", +// L".357 кал", +// L"12 кал", +// L"ОББ", +// L"5,45 мм", +// L"5,56 мм", +// L"7,62 мм НАТО", +// L"7,62 мм ВД", +// L"4,7 мм", +// L"5,7 мм", +// L"Монстр", +// L"Ракета", +// L"", // дротик +// L"", // пламя +//// L".50 кал", // barrett +//// L"9 мм тяж", // Val silent +//}; + +// This BobbyRayAmmoCaliber is virtually the same as AmmoCaliber however the bobby version doesnt have as much room for the words. +// +// Different weapon calibres +// CAWS is Close Assault Weapon System and should probably be left as it is +// NATO is the North Atlantic Treaty Organization +// WP is Warsaw Pact +// cal is an abbreviation for calibre +CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20] ;//= +//{ +// L"0", +// L".38 кал", +// L"9 мм", +// L".45 кал", +// L".357 кал", +// L"12 кал", +// L"ОББ", +// L"5,45 мм", +// L"5,56 мм", +// L"7,62 мм Н.", +// L"7,62 мм ВД", +// L"4,7 мм", +// L"5,7 мм", +// L"Монстр", +// L"Ракета", +// L"", // дротик +//// L"", // flamethrower +//// L".50 кал", // barrett +//// L"9 мм тяж", // Val silent +//}; + + +CHAR16 WeaponType[MAXITEMS][30] = +{ + L"Прочие", + L"Пистолет", + L"Авт.пистолет", + L"ПП", + L"Винтовка", + L"Сн.винтовка", + L"Автомат", + L"Ручной пулемёт", + L"Дробовик", +}; + +CHAR16 TeamTurnString[][STRING_LENGTH] = +{ + L"Ход Игрока", // player's turn + L"Ход Противника", + L"Ход Тварей", + L"Ход Ополчения", + L"Ход Гражданских", + L"Планирование",// planning turn + L"Клиент №1",//hayden + L"Клиент №2",//hayden + L"Клиент №3",//hayden + L"Клиент №4",//hayden + +}; + +CHAR16 Message[][STRING_LENGTH] = +{ + L"", + + // In the following 8 strings, the %s is the merc's name, and the %d (if any) is a number. + + L"%s получает ранение в голову и теряет в интеллекте!", + L"%s получает ранение в плечо и теряет в ловкости!", + L"%s получает ранение в грудь и теряет в силе!", + L"%s получает ранение в ногу и теряет в проворности!", + L"%s получает ранение в голову и теряет %d ед. интеллекта!", + L"%s получает ранение в плечо и теряет %d ед. ловкости!", + L"%s получает ранение в грудь и теряет %d ед. силы!", + L"%s получает ранение в ногу и теряет %d ед. проворности!", + L"Перехват!", + + // The first %s is a merc's name, the second is a string from pNoiseVolStr, + // the third is a string from pNoiseTypeStr, and the last is a string from pDirectionStr + + L"", //OBSOLETE + L"К вам на помощь прибыло подкрепление!", + + // In the following four lines, all %s's are merc names + + L"%s перезаряжает оружие.", + L"%s недостаточно очков действия!", + L"%s оказывает первую помощь (любая клавиша - отмена).", + L"%s и %s оказывают первую помощь (любая клавиша - отмена).", + // the following 17 strings are used to create lists of gun advantages and disadvantages + // (separated by commas) + L"надёжно", + L"ненадёжно", + L"простой ремонт", + L"сложный ремонт", + L"большой урон", + L"малый урон", + L"скорострельное", + L"нескорострельное", + L"дальний бой", + L"ближний бой", + L"лёгкое", + L"тяжёлое", + L"компактное", + L"очередями", + L"нет отсечки очереди", + L"бол.магазин", + L"мал.магазин", + + // In the following two lines, all %s's are merc names + + L"%s: камуфляжная краска стёрлась.", + L"%s: камуфляжная краска смылась.", + + // The first %s is a merc name and the second %s is an item name + + L"Второе оружие: закончились патроны!", + L"%s крадёт %s.", + + // The %s is a merc name + + L"%s: оружие не стреляет очередями.", + + L"Уже установлено!", + L"Объединить?", + + // Both %s's are item names + + L"Нельзя присоединить %s к %s.", + + L"Ничего", + L"Разрядить", + L"Навеска", + + //You cannot use "item(s)" and your "other item" at the same time. + //Ex: You cannot use sun goggles and you gas mask at the same time. + L"Нельзя использовать %s и %s одновременно.", + + L"Этот предмет можно присоединить к другим, поместив его в одно из четырех мест для навески.", + L"Этот предмет можно присоединить к другим, поместив его в одно из четырех мест для навески. (Однако эти предметы несовместимы)", + L"В секторе еще остались враги!", + L"%s требует полную оплату, нужно заплатить ещё %s", + L"%s: попадание в голову!", + L"Покинуть битву?", + L"Это несъёмное приспособление. Установить его?", + L"%s чувствует прилив энергии!", + L"%s поскальзывается на стеклянных шариках!", + L"%s не удалось отобрать %s у врага!", + L"%s чинит %s", + L"Перехватили ход: ", + L"Сдаться?", + L"Человек отверг вашу помощь.", + L"Вам это надо?", + L"Чтобы воспользоваться вертолётом Небесного Всадника - выберите \"Транспорт/Вертолёт\".", + L"%s успевает зарядить только одно оружие.", + L"Ход кошек-убийц", + L"автоматический", + L"неавтоматический", + L"точный", + L"неточный", + L"нет одиночных", + L"Враг обобран до нитки!", + L"У врага в руках ничего нет!", + + L"%s: песчаный камуфляж стёрся.", + L"%s: песчаный камуфляж смылся.", + + L"%s: растительный камуфляж стёрся.", + L"%s: растительный камуфляж смылся.", + + L"%s: городской камуфляж стёрся.", + L"%s: городской камуфляж смылся.", + + L"%s: зимний камуфляж стёрся.", + L"%s: зимний камуфляж смылся.", + + L"Нельзя установить навеску %s на это место.", + L"%s не поместится ни в один слот.", + L"Недостаточно места для этого кармана.", + + L"%s отремонтировал(а) %s, насколько это было возможно.", + L"%s отремонтировал(а) у наёмника %s %s, насколько это было возможно.", + + L"%s почистил(а) %s.", // TODO.Translate + L"%s почистил(а) у %s %s.", + + L"Assignment not possible at the moment", // TODO.Translate + L"No militia that can be drilled present.", + + L"%s has fully explored %s.", // TODO.Translate +}; + +// the country and its noun in the game +CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT] = +{ +#ifdef JA2UB + L"Тракону", + L"Траконец", +#else + L"Арулько", + L"Арулькиец", +#endif +}; + +// the names of the towns in the game +CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT] = +{ + L"", + L"Омерта", + L"Драссен", + L"Альма", + L"Грам", + L"Тикса", + L"Камбрия", + L"Сан-Мона", + L"Эстони", + L"Орта", + L"Балайм", + L"Медуна", + L"Читзена", +}; + +// the types of time compression. For example: is the timer paused? at normal speed, 5 minutes per second, etc. +// min is an abbreviation for minutes + +STR16 sTimeStrings[] = +{ + L"Пауза", + L"Норма", + L"5 мин", + L"30 мин", + L"60 мин", + L"6 часов", +}; + + +// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training, +// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be. + +STR16 pAssignmentStrings[] = +{ + L"Отряд 1", + L"Отряд 2", + L"Отряд 3", + L"Отряд 4", + L"Отряд 5", + L"Отряд 6", + L"Отряд 7", + L"Отряд 8", + L"Отряд 9", + L"Отряд 10", + L"Отряд 11", + L"Отряд 12", + L"Отряд 13", + L"Отряд 14", + L"Отряд 15", + L"Отряд 16", + L"Отряд 17", + L"Отряд 18", + L"Отряд 19", + L"Отряд 20", + L"Отряд 21", + L"Отряд 22", + L"Отряд 23", + L"Отряд 24", + L"Отряд 25", + L"Отряд 26", + L"Отряд 27", + L"Отряд 28", + L"Отряд 29", + L"Отряд 30", + L"Отряд 31", + L"Отряд 32", + L"Отряд 33", + L"Отряд 34", + L"Отряд 35", + L"Отряд 36", + L"Отряд 37", + L"Отряд 38", + L"Отряд 39", + L"Отряд 40", + L"На службе", // on active duty + L"Медик", // administering medical aid + L"Пациент", // getting medical aid + L"Транспорт", // in a vehicle + L"В пути", // in transit - abbreviated form + L"Ремонт", // repairing + L"Сканировать частоты", // scanning for nearby patrols + L"Практика", // training themselves + L"Ополчение", // training a town to revolt + L"Патруль", //training moving militia units //M.Militia + L"Тренер", // training a teammate + L"Ученик", // being trained by someone else + L"Носильщик", // move items + L"Штат", // operating a strategic facility //Staff + L"Питаться", // eating at a facility (cantina etc.) + L"Отдых", // Resting at a facility //Rest + L"Допрос", // Flugente: interrogate prisoners + L"Мёртв", // dead + L"Недеесп.", // abbreviation for incapacitated + L"В плену", // Prisoner of war - captured + L"Госпиталь", // patient in a hospital + L"Пуст", // Vehicle is empty + L"Осведомитель",// facility: undercover prisoner (snitch) + L"Пропаганда", // facility: spread propaganda + L"Пропаганда", // facility: spread propaganda (globally) + L"Слухи", // facility: gather information + L"Пропаганда", // spread propaganda + L"Слухи", // gather information + L"Командует", // militia movement orders + L"Осмотр", // disease diagnosis + L"Леч.насел.", // treat disease among the population + L"Медик", // administering medical aid + L"Пациент", // getting medical aid + L"Ремонт", // repairing + L"Укрепляет", // build structures according to external layout + L"Учит рабочих", + L"Hide", // TODO.Translate + L"GetIntel", + L"DoctorM.", + L"DMilitia", + L"Burial", + L"Admin", // TODO.Translate + L"Explore", // TODO.Translate + L"Event",// rftr: merc is on a mini event // TODO: translate + L"Mission", // rftr: rebel command +}; + + +STR16 pMilitiaString[] = +{ + L"Ополчение", // the title of the militia box + L"Резерв", //the number of unassigned militia troops + L"Нельзя перераспределять ополчение во время боя!", + L"Некоторые ополченцы не были определены по секторам. Желаете их распустить (уволить)?", +}; + + +STR16 pMilitiaButtonString[] = +{ + L"Авто", // auto place the militia troops for the player + L"Готово", // done placing militia troops + L"Распустить", // HEADROCK HAM 3.6: Disband militia + L"В резерв", // move all milita troops to unassigned pool +}; + +STR16 pConditionStrings[] = +{ + L"Отличное", //the state of a soldier .. excellent health + L"Хорошее", //good health + L"Сносное", //fair health + L"Ранен", //wounded health + L"Устал", //tired + L"Кровоточит", //bleeding to death + L"Без сознания", //knocked out + L"Умирает", //near death + L"Мёртв", //dead +}; + +STR16 pEpcMenuStrings[] = +{ + L"На службе", // set merc on active duty + L"Пациент", // set as a patient to receive medical aid + L"Транспорт", // tell merc to enter vehicle + L"Без эскорта", // let the escorted character go off on their own + L"Отмена", // close this menu +}; + + +// look at pAssignmentString above for comments + +STR16 pPersonnelAssignmentStrings[] = +{ + L"Отряд 1", + L"Отряд 2", + L"Отряд 3", + L"Отряд 4", + L"Отряд 5", + L"Отряд 6", + L"Отряд 7", + L"Отряд 8", + L"Отряд 9", + L"Отряд 10", + L"Отряд 11", + L"Отряд 12", + L"Отряд 13", + L"Отряд 14", + L"Отряд 15", + L"Отряд 16", + L"Отряд 17", + L"Отряд 18", + L"Отряд 19", + L"Отряд 20", + L"Отряд 21", + L"Отряд 22", + L"Отряд 23", + L"Отряд 24", + L"Отряд 25", + L"Отряд 26", + L"Отряд 27", + L"Отряд 28", + L"Отряд 29", + L"Отряд 30", + L"Отряд 31", + L"Отряд 32", + L"Отряд 33", + L"Отряд 34", + L"Отряд 35", + L"Отряд 36", + L"Отряд 37", + L"Отряд 38", + L"Отряд 39", + L"Отряд 40", + L"На службе", + L"Медик", + L"Пациент", + L"Транспорт", + L"В пути", + L"Ремонт", + L"Сканирует радиочастоты", // radio scan + L"Практика", + L"Ополчение", + L"Тренирует патруль", //Training Mobile Militia + L"Тренер", + L"Ученик", + L"Носильщик", // move items + L"Работает с населением", //Facility Staff + L"Питается", // eating at a facility (cantina etc.) + L"Отдыхает", //Resting at Facility + L"Допрашивает пленных", // Flugente: interrogate prisoners + L"Мёртв", + L"Недеесп.", + L"В плену", + L"Госпиталь", + L"Пуст", // Vehicle is empty + L"Осведомитель", // facility: undercover prisoner (snitch) + L"Ведет пропаганду", // facility: spread propaganda + L"Ведет пропаганду", // facility: spread propaganda (globally) + L"Собирает слухи", // facility: gather rumours + L"Ведет пропаганду", // spread propaganda + L"Собирает слухи", // gather information + L"Руководит ополчением", // militia movement orders + L"Обследование", // disease diagnosis + L"Лечит население", // treat disease among the population + L"Медик", + L"Пациент", + L"Ремонт", + L"Укрепляет сектор", // build structures according to external layout + L"Учит рабочих", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// refer to above for comments + +STR16 pLongAssignmentStrings[] = +{ + L"Отряд 1", + L"Отряд 2", + L"Отряд 3", + L"Отряд 4", + L"Отряд 5", + L"Отряд 6", + L"Отряд 7", + L"Отряд 8", + L"Отряд 9", + L"Отряд 10", + L"Отряд 11", + L"Отряд 12", + L"Отряд 13", + L"Отряд 14", + L"Отряд 15", + L"Отряд 16", + L"Отряд 17", + L"Отряд 18", + L"Отряд 19", + L"Отряд 20", + L"Отряд 21", + L"Отряд 22", + L"Отряд 23", + L"Отряд 24", + L"Отряд 25", + L"Отряд 26", + L"Отряд 27", + L"Отряд 28", + L"Отряд 29", + L"Отряд 30", + L"Отряд 31", + L"Отряд 32", + L"Отряд 33", + L"Отряд 34", + L"Отряд 35", + L"Отряд 36", + L"Отряд 37", + L"Отряд 38", + L"Отряд 39", + L"Отряд 40", + L"На службе", + L"Медик", + L"Пациент", + L"В транспорте", + L"В пути", + L"Ремонтирует", + L"Сканирует радиочастоты", // radio scan + L"Практикуется", + L"Тренирует ополчение", + L"Тренирует патруль", //Train Mobiles + L"Тренирует", + L"Обучается", + L"Носильщик", // move items + L"Работает с населением", //Staff Facility + L"Отдыхает в заведении", //Resting at Facility + L"Допрашивает пленных", // Flugente: interrogate prisoners + L"Мёртв", + L"Недееспособен", + L"В плену", + L"В госпитале", // patient in a hospital + L"Без пассажиров", // Vehicle is empty + L"Осведомитель", // facility: undercover prisoner (snitch) + L"Ведет пропаганду", // facility: spread propaganda + L"Ведет пропаганду", // facility: spread propaganda (globally) + L"Собирает слухи", // facility: gather rumours + L"Ведет пропаганду", // spread propaganda + L"Собирает слухи", // gather information + L"Руководит ополчением", // militia movement orders + L"Обследование", // disease diagnosis + L"Лечит население", // treat disease among the population + L"Медик", + L"Пациент", + L"Ремонтирует", + L"Укрепляет сектор", // build structures according to external layout + L"Учит рабочих", + L"Hide while disguised", // TODO.Translate + L"Get intel while disguised", + L"Doctor wounded militia", + L"Drill existing militia", + L"Bury corpses", + L"Administration", // TODO.Translate + L"Exploration", // TODO.Translate +}; + + +// the contract options + +STR16 pContractStrings[] = +{ + L"Изменение контракта:", + L"", // a blank line, required + L"Продлить на 1 день", // offer merc a one day contract extension + L"Продлить на 7 дней", // 1 week + L"Продлить на 14 дней", // 2 week + L"Уволить", // end merc's contract + L"Отмена", // stop showing this menu +}; + +STR16 pPOWStrings[] = +{ + L"В плену", //an acronym for Prisoner of War + L"??", +}; + +STR16 pLongAttributeStrings[] = +{ + L"СИЛА", + L"ЛОВКОСТЬ", + L"ПРОВОРНОСТЬ", + L"ИНТЕЛЛЕКТ", + L"МЕТКОСТЬ", + L"МЕДИЦИНА", + L"МЕХАНИКА", + L"ЛИДЕРСТВО", + L"ВЗРЫВЧАТКА", + L"УРОВЕНЬ", +}; + +STR16 pInvPanelTitleStrings[] = +{ + L"Броня", // the armor rating of the merc + L"Вес", // the weight the merc is carrying + L"Камуф.", // the merc's camouflage rating + L"Камуфляж:", + L"Броня:", +}; + +STR16 pShortAttributeStrings[] = +{ + L"Прв", // the abbreviated version of : agility + L"Лов", // dexterity + L"Сил", // strength + L"Лид", // leadership + L"Инт", // wisdom + L"Опт", // experience level + L"Мет", // marksmanship skill + L"Мех", // mechanical skill + L"Взр", // explosive skill + L"Мед", // medical skill +}; + + +STR16 pUpperLeftMapScreenStrings[] = +{ + L"Занятие", // the mercs current assignment + L"Контракт", // the contract info about the merc + L"Здоровье", // the health level of the current merc + L"Боев.дух", // the morale of the current merc + L"Сост.", // the condition of the current vehicle + L"Топливо", // the fuel level of the current vehicle +}; + +STR16 pTrainingStrings[] = +{ + L"Практика", // tell merc to train self + L"Ополчение", // tell merc to train town + L"Тренер", // tell merc to act as trainer + L"Ученик", // tell merc to be train by other +}; + +STR16 pGuardMenuStrings[] = +{ + L"Ведение огня:", // the allowable rate of fire for a merc who is guarding + L" Агрессивная атака", // the merc can be aggressive in their choice of fire rates + L" Беречь патроны", // conserve ammo + L" Воздержаться от стрельбы", // fire only when the merc needs to + L"Другие параметры:", // other options available to merc + L" Может отступить", // merc can retreat + L" Может искать укрытие", // merc is allowed to seek cover + L" Может помочь команде", // merc can assist teammates + L"Готово", // done with this menu + L"Отмена", // cancel this menu +}; + +// This string has the same comments as above, however the * denotes the option has been selected by the player + +STR16 pOtherGuardMenuStrings[] = +{ + L"Ведение огня:", + L" *Агрессивная атака*", + L" *Беречь патроны*", + L" *Воздержаться от стрельбы*", + L"Другие параметры:", + L" *Может отступить*", + L" *Может искать укрытие*", + L" *Может помочь команде*", + L"Готово", + L"Отмена", +}; + +STR16 pAssignMenuStrings[] = +{ + L"На службе", // merc is on active duty + L"Медик", // the merc is acting as a doctor + L"Заболевания", // merc is a doctor doing diagnosis + L"Пациент", // the merc is receiving medical attention + L"Транспорт", // the merc is in a vehicle + L"Ремонт", // the merc is repairing items + L"Радио", // Flugente: the merc is scanning for patrols in neighbouring sectors + L"Осведомитель", // anv: snitch actions + L"Обучение", // the merc is training + L"Militia", // all things militia + L"Носильщик", // move items + L"Укреплять", // fortify sector + L"Intel", // covert assignments // TODO.Translate + L"Administer", // TODO.Translate + L"Explore", // TODO.Translate + L"Занятия", // the merc is using/staffing a facility + L"Отмена", // cancel this menu +}; + +//lal +STR16 pMilitiaControlMenuStrings[] = +{ + L"В атаку", // set militia to aggresive + L"Держать оборону", // set militia to stationary + L"Отступать", // retreat militia + L"За мной", + L"Ложись", + L"Присесть", + L"В укрытие", + L"Двигаться в точку", + L"Все в атаку", + L"Всем держать оборону", + L"Всем отступать", + L"Все за мной", + L"Всем рассеяться", + L"Всем залечь", + L"Всем присесть", + L"Всем в укрытие", + //L"Всем искать предметы", + L"Отмена", // cancel this menu +}; + +//Flugente +STR16 pTraitSkillsMenuStrings[] = +{ + // radio operator + L"Артналет", + L"Постановка помех", + L"Сканировать радиочастоты", + L"Прослушивать", + L"Вызвать подкрепления", + L"Выключить радиостанцию", + L"Radio: Activate all turncoats", + + // spy + L"Hide assignment", + L"Get Intel assignment", + L"Recruit turncoat", + L"Activate turncoat", + L"Activate all turncoats", + + // disguise + L"Disguise", + L"Remove disguise", + L"Test disguise", + L"Remove clothes", + + // various + L"Наблюдатель", + L"Focus", // TODO.Translate + L"Drag", + L"Fill canteens", +}; + +//Flugente: short description of the above skills for the skill selection menu +STR16 pTraitSkillsMenuDescStrings[] = +{ + // radio operator + L"Вызвать артиллерийский удар из сектора...", + L"Заполнить эфир помехами, чтобы сделать невозможным использование средств связи.", + L"Искать источник помех.", + L"Использовать радиопрослушку для обнаружения противника.", + L"Вызвать подкрепления из соседних секторов.", + L"Turn off radio set.", // TODO.Translate + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // spy + L"Assignment: hide among the population.", // TODO.Translate + L"Assignment: hide among the population and gather intel.", + L"Try to turn an enemy into a turncoat.", + L"Order previously turned soldier to betray their comrades and join you.", + L"Order all previously turned soldiers in the sector to betray their comrades and join you.", + + // disguise + L"Try to disguise with the merc's current clothes.", + L"Remove the disguise, but clothes remain worn.", + L"Test the viability of the disguise.", + L"Remove any extra clothes.", + + // various + L"Наблюдать за местностью, чтобы обеспечить более меткую стрельбу своим снайперам.", + L"Increase interrupt modifier (penalty outside of area).", // TODO.Translate + L"Drag a person, corpse or structure while you move.", + L"Refill your squad's canteens with water from this sector.", +}; + +STR16 pTraitSkillsDenialStrings[] = +{ + L"Требуется:\n", + L" - %d ОД\n", + L" - %s\n", + L" - %s или выше\n", + L" - %s или выше или\n", + L" - %d минут на подготовку\n", + L" - позиции миномётов в соседних секторах\n", + L" - %s |и|л|и %s |и %s или %s или выше\n", + L" - одержим бесами", + L" - a gun-related trait\n", // TODO.Translate + L" - aimed gun\n", + L" - prone person, corpse or structure next to merc\n", + L" - crouched position\n", + L" - free main hand\n", + L" - covert trait\n", + L" - enemy occupied sector\n", + L" - single merc\n", + L" - no alarm raised\n", + L" - civilian or soldier disguise\n", + L" - being our turn\n", + L" - turned enemy soldier\n", + L" - enemy soldier\n", + L" - surface sector\n", + L" - not being under suspicion\n", + L" - not disguised\n", + L" - not in combat\n", + L" - friendly controlled sector\n", +}; + +STR16 pSkillMenuStrings[] = +{ + L"Ополчение", + L"Другие отряды", + L"Отмена", + L"%d ополченцев", + L"Все ополченцы", + + L"More", // TODO.Translate + L"Corpse: %s", // TODO.Translate +}; + +STR16 pSnitchMenuStrings[] = +{ + // snitch + L"Осведомитель в отряде", + L"Городское назначение", + L"Отмена", +}; + +STR16 pSnitchMenuDescStrings[] = +{ + // snitch + L"Обсудить поведение осведомителя по отношению к его команде.", + L"Взять задание в этом секторе.", + L"Отмена", +}; + +STR16 pSnitchToggleMenuStrings[] = +{ + // toggle snitching + L"Сообщать о недовольстве", + L"Не сообщать", + L"Предотвращать нарушения", + L"Игнорировать нарушения", + L"Отмена", +}; + +STR16 pSnitchToggleMenuDescStrings[] = +{ + L"Сообщать командиру обо всех недовольных.", + L"Ничего не сообщать.", + L"Предотвращать попытки воровства и наркомании.", + L"Не обращать внимания на нарушения.", + L"Отмена", +}; + +STR16 pSnitchSectorMenuStrings[] = +{ + // sector assignments + L"Вести пропаганду", + L"Собирать слухи", + L"Отмена", +}; + +STR16 pSnitchSectorMenuDescStrings[] = +{ + L"Прославлять действия наёмников для повышения лояльности. ", + L"Собирать слухи о действиях противника.", + L"", +}; + +STR16 pPrisonerMenuStrings[] = +{ + L"Допросить полицию", + L"Допросить солдат", + L"Допросить спецназ", + L"Допросить офицеров", + L"Допросить генералов", + L"Допросить граждан", + L"Отмена", +}; + +STR16 pPrisonerMenuDescStrings[] = // TODO.Translate +{ + L"Administrators are easy to process, but give only poor results", + L"Regular troops are common and don't give you high rewards.", + L"If elite troops defect to you, they can become veteran militia.", + L"Interrogating enemy officers can lead you to find enemy generals.", + L"Generals cannot join your militia, but lead to high ransoms.", + L"Civilians don't offer much resistance, but are second-rate troops at best.", + L"Отмена", +}; + +STR16 pSnitchPrisonExposedStrings[] = +{ + L"%s был уличен как осведомитель, но вовремя сумел заметить это и выбраться живым.", + L"%s был уличен как осведомитель, но сумел разрядить обстановку и выбраться живым.", + L"%s был уличен как осведомитель, но сумел избежать покушения.", + L"%s был уличен как осведомитель, но охрана сумела предотвратить насилие.", + + L"%s был уличен как осведомитель и почти утоплен другими заключенными, но охрана успела вмешаться.", + L"%s был уличен как осведомитель и чуть не забит до смерти, прежде чем охрана вмешалась.", + L"%s был уличен как осведомитель и едва не заколот, но охрана успела вмешаться.", + L"%s был уличен как осведомитель и чуть не задушен, но охрана успела вмешаться.", + + L"%s был уличен как осведомитель и утоплен в сортире другими заключенными.", + L"%s был уличен как осведомитель и забит до смерти другими заключенными.", + L"%s был уличен как осведомитель и заколот насмерть другими заключенными.", + L"%s был уличен как осведомитель и задушен другими заключенными.", +}; + +STR16 pSnitchGatheringRumoursResultStrings[] = +{ + L"%s собрал(а) слухи об активности противника в %d секторах.", + +}; + +STR16 pRemoveMercStrings[] = +{ + L"Убрать бойца", // remove dead merc from current team + L"Отмена", +}; + +STR16 pAttributeMenuStrings[] = +{ + L"Здоровье", + L"Проворность", + L"Ловкость", + L"Сила", + L"Лидерство", + L"Меткость", + L"Механика", + L"Взрывчатка", + L"Медицина", + L"Отмена", +}; + +STR16 pTrainingMenuStrings[] = +{ + L"Практика", // train yourself + L"Рабочие", // Train workers + L"Тренер", // train your teammates + L"Ученик", // be trained by an instructor + L"Отмена", // cancel this menu +}; + + +STR16 pSquadMenuStrings[] = +{ + L"Отряд 1", + L"Отряд 2", + L"Отряд 3", + L"Отряд 4", + L"Отряд 5", + L"Отряд 6", + L"Отряд 7", + L"Отряд 8", + L"Отряд 9", + L"Отряд 10", + L"Отряд 11", + L"Отряд 12", + L"Отряд 13", + L"Отряд 14", + L"Отряд 15", + L"Отряд 16", + L"Отряд 17", + L"Отряд 18", + L"Отряд 19", + L"Отряд 20", + L"Отряд 21", + L"Отряд 22", + L"Отряд 23", + L"Отряд 24", + L"Отряд 25", + L"Отряд 26", + L"Отряд 27", + L"Отряд 28", + L"Отряд 29", + L"Отряд 30", + L"Отряд 31", + L"Отряд 32", + L"Отряд 33", + L"Отряд 34", + L"Отряд 35", + L"Отряд 36", + L"Отряд 37", + L"Отряд 38", + L"Отряд 39", + L"Отряд 40", + L"Отмена", +}; + +STR16 pPersonnelTitle[] = +{ + L"Команда", // the title for the personnel screen/program application +}; + +STR16 pPersonnelScreenStrings[] = +{ + L"Здоровье:", // health of merc + L"Проворность:", + L"Ловкость:", + L"Сила:", + L"Лидерство:", + L"Интеллект:", + L"Опыт:", // experience level + L"Меткость:", + L"Механика:", + L"Взрывчатка:", + L"Медицина:", + L"Мед. депозит:", // amount of medical deposit put down on the merc + L"До конца контракта:", // cost of current contract + L"Убил врагов:", // number of kills by merc + L"Помог убить:", // number of assists on kills by merc + L"Гонорар за день:", // daily cost of merc + L"Общая цена услуг:", // total cost of merc + L"Контракт:", // cost of current contract + L"У вас на службе:", // total service rendered by merc + L"Задолж. жалования:", // amount left on MERC merc to be paid + L"Процент попаданий:", // percentage of shots that hit target + L"Боёв:", // number of battles fought + L"Ранений:", // number of times merc has been wounded + L"Навыки:", + L"Нет навыков", + L"Достижения:", //Achievements +}; + +// SANDRO - helptexts for merc records +STR16 pPersonnelRecordsHelpTexts[] = +{ + L"Спецназа: %d\n", + L"Солдат: %d\n", + L"Полиции: %d\n", + L"Враждебных граждан: %d\n", + L"Животных: %d\n", + L"Танков: %d\n", + L"Других объектов: %d\n", + + L"Своим: %d\n", + L"Ополчению: %d\n", + L"Другим: %d\n", + + L"Выпущено пуль: %d\n", + L"Выпущено ракет: %d\n", + L"Брошено гранат: %d\n", + L"Брошено ножей: %d\n", + L"Ударов ножом: %d\n", + L"Ударов кулаками: %d\n", + L"Удачных попаданий: %d\n", + + L"Замков взломано: %d\n", + L"Замков сорвано: %d\n", + L"Ловушек обезврежено: %d\n", + L"Взрывчатки взорвано: %d\n", + L"Предметов отремонтированно: %d\n", + L"Предметов собрано: %d\n", + L"Вещей украдено: %d\n", + L"Ополченцев натренировано: %d\n", + L"Бойцов перевязано: %d\n", + L"Заданий: %d\n", + L"Встречено информаторов: %d\n", + L"Секторов разведано: %d\n", + L"Предотвращено засад: %d\n", + L"Заданий жителей выполнено: %d\n", + + L"Тактических сражений: %d\n", + L"Автобитв: %d\n", + L"Количество отступлений: %d\n", + L"Попаданий в засады: %d\n", + L"Крупнейшая битва: %d врагов\n", + + L"Огнестрельных ран: %d\n", + L"Ножевых ран: %d\n", + L"Пропущенных ударов: %d\n", + L"Подорвался: %d\n", + L"Ухудшений параметров: %d\n", + L"Перенёс хир. операций: %d\n", + L"Травм на производстве: %d\n", + + L"Характер:", + L"Недостаток:", + + L"По жизни:", //Attitudes // WANNE: For old traits display instead of "Character:"! + + L"Зомби: %d\n", + + L"Биография:", + L"Характер:", + + L"Допросил(а): %d\n", + L"Заболел(а): %d\n", + L"Получено урона: %d\n", + L"Нанесено урона: %d\n", + L"Вылечено: %d\n", +}; + + +//These string correspond to enums used in by the SkillTrait enums in SoldierProfileType.h +STR16 gzMercSkillText[] = +{ + // SANDRO - tweaked this + L"Нет навыка", + L"Взлом замков", + L"Рукопашный бой", + L"Электроника", + L"Ночные операции", + L"Метание", + L"Инструктор", + L"Тяжелое оружие", + L"Автоматическое оружие", + L"Скрытность", + L"Ловкач", + L"Воровство", + L"Боевые искусства", + L"Холодное оружие", + L"Снайпер", + L"Камуфляж", + L"(Эксперт)", +}; +////////////////////////////////////////////////////////// +// SANDRO - added this +STR16 gzMercSkillTextNew[] = +{ + // Major traits + L"Нет навыка", // 0 + L"Автоматчик", // 1 + L"Гренадёр", + L"Стрелок", + L"Охотник", + L"Ковбой", // 5 + L"Боксёр", + L"Старшина", + L"Техник", + L"Санитар", + // Minor traits + L"Ловкач", // 10 + L"Мастер клинка", + L"Мастер по метанию", + L"Ночник", + L"Бесшумный убийца", + L"Спортсмен", + L"Культурист", + L"Подрывник", + L"Инструктор", + L"Разведчик", + // covert ops is a major trait that was added later + L"Диверсант", // 20 + + // new minor traits + L"Радист", // 21 + L"Осведомитель", // 22 + L"Спец по выживанию", + + // second names for major skills + L"Пулемётчик", + L"Артиллерист", + L"Снайпер", + L"Рейнджер", + L"Пистолетчик", + L"Боевые искусства", + L"Командир", + L"Инженер", + L"Доктор", + // placeholders for minor traits + L"Placeholder", // 33 + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", + L"Placeholder", // 42 + L"Шпион", // 43 + L"Placeholder", // for radio operator (minor trait) + L"Placeholder", // for snitch (minor trait) + L"Placeholder", // for survival (minor trait) + L"Ещё...", // 47 + L"Intel", // for INTEL // TODO.Translate + L"Disguise", // for DISGUISE + L"Различные", // for VARIOUSSKILLS + L"Автоперевязка", // for AUTOBANDAGESKILLS +}; +////////////////////////////////////////////////////////// + +// This is pop up help text for the options that are available to the merc + +STR16 pTacticalPopupButtonStrings[] = +{ + L"Встать/Идти (|S)", + L"Присесть/Гусиный шаг (|C)", + L"Стоять/Бежать (|R)", + L"Лечь/Ползти (|P)", + L"Поворот (|L)", + L"Действие", + L"Поговорить", + L"Осмотреть (|C|t|r|l)", + + // Pop up door menu + L"Открыть", + L"Искать ловушки", + L"Вскрыть отмычками", + L"Открыть cилой", + L"Обезвредить", + L"Запереть", + L"Отпереть", + L"Использовать заряд взрывчатки", + L"Взломать ломом", + L"Отмена (|E|s|c)", + L"Закрыть", +}; + +// Door Traps. When we examine a door, it could have a particular trap on it. These are the traps. + +STR16 pDoorTrapStrings[] = +{ + L"нет ловушки", + L"бомба-ловушка", + L"электроловушка", + L"сирена", + L"сигнализация", +}; + +// Contract Extension. These are used for the contract extension with AIM mercenaries. + +STR16 pContractExtendStrings[] = +{ + L"1 день", + L"7 дней", + L"14 дней", +}; + +// On the map screen, there are four columns. This text is popup help text that identifies the individual columns. + +STR16 pMapScreenMouseRegionHelpText[] = +{ + L"Выбрать наёмника", + L"Отдать приказ", + L"Проложить путь движения", + L"Контракт наёмника (|C)", + L"Местонахождение бойца", + L"Спать", +}; + +// volumes of noises + +STR16 pNoiseVolStr[] = +{ + L"ТИХИЙ", + L"ЧЕТКИЙ", + L"ГРОМКИЙ", + L"ОЧЕНЬ ГРОМКИЙ", +}; + +// types of noises + +STR16 pNoiseTypeStr[] = // OBSOLETE +{ + L"НЕПОНЯТНЫЙ", + L"ШАГИ", + L"СКРИП", + L"ВСПЛЕСК", + L"УДАР", + L"ВЫСТРЕЛ", + L"ВЗРЫВ", + L"КРИК", + L"УДАР", + L"УДАР", + L"ЗВОН", + L"ГРОХОТ", +}; + +// Directions that are used to report noises + +STR16 pDirectionStr[] = +{ + L"c СЕВЕРО-ВОСТОКА", + L"c ВОСТОКА", + L"c ЮГО-ВОСТОКА", + L"c ЮГА", + L"c ЮГО-ЗАПАДА", + L"c ЗАПАДА", + L"c СЕВЕРО-ЗАПАДА", + L"c СЕВЕРА", +}; + +// These are the different terrain types. + +STR16 pLandTypeStrings[] = +{ + L"Город", + L"Дорога", + L"Равнина", + L"Пустыня", + L"Прерия", + L"Лес", + L"Болото", + L"Вода", + L"Холмы", + L"Непроходимо", + L"Река", //river from north to south + L"Река", //river from east to west + L"Чужая страна", + //NONE of the following are used for directional travel, just for the sector description. + L"Тропики", + L"Ферма", + L"Поля, дорога", + L"Леса, дорога", + L"Ферма, дорога", + L"Тропики, дорога", + L"Леса, дорога", + L"Побережье", + L"Горы, дорога", + L"Берег, дорога", + L"Пустыня, дорога", + L"Болота, дорога", + L"Прерия, ПВО", + L"Пустыня, ПВО", + L"Тропики, ПВО", + L"Медуна, ПВО", + + //These are descriptions for special sectors + L"Госпиталь Камбрии", + L"Аэропорт Драссена", + L"Аэропорт Медуны", + L"База ПВО", + L"АЗС ", + L"Убежище повстанцев", //The rebel base underground in sector A10 + L"Подвалы Тиксы", //The basement of the Tixa Prison (J9) + L"Логово тварей", //Any mine sector with creatures in it + L"Подвалы Орты", //The basement of Orta (K4) + L"Туннель", //The tunnel access from the maze garden in Meduna + //leading to the secret shelter underneath the palace + L"Убежище", //The shelter underneath the queen's palace + L"", //Unused +}; + +STR16 gpStrategicString[] = +{ + L"", //Unused + L"%s замечен в секторе %c%d, и другой отряд уже на подходе.", //STR_DETECTED_SINGULAR + L"%s замечен в секторе %c%d, и остальные отряды уже на подходе.", //STR_DETECTED_PLURAL + L"Желаете дождаться прибытия остальных?", //STR_COORDINATE + + //Dialog strings for enemies. + + L"Враг предлагает вам сдаться.", //STR_ENEMY_SURRENDER_OFFER + L"Оставшиеся без сознания бойцы попали в плен.", //STR_ENEMY_CAPTURED + + //The text that goes on the autoresolve buttons + + L"Отступить", //The retreat button //STR_AR_RETREAT_BUTTON + L"OK", //The done button //STR_AR_DONE_BUTTON + + //The headers are for the autoresolve type (MUST BE UPPERCASE) + + L"ОБОРОНА", //STR_AR_DEFEND_HEADER + L"АТАКА", //STR_AR_ATTACK_HEADER + L"ВСТРЕЧА", //STR_AR_ENCOUNTER_HEADER + L"Сектор", //The Sector A9 part of the header //STR_AR_SECTOR_HEADER + + //The battle ending conditions + + L"ПОБЕДА!", //STR_AR_OVER_VICTORY + L"ПОРАЖЕНИЕ!", //STR_AR_OVER_DEFEAT + L"СДАЛСЯ!", //STR_AR_OVER_SURRENDERED + L"ПЛЕНЁН!", //STR_AR_OVER_CAPTURED + L"ОТСТУПИЛ!", //STR_AR_OVER_RETREATED + + //These are the labels for the different types of enemies we fight in autoresolve. + + L"Ополченец", //STR_AR_MILITIA_NAME, + L"Спецназ", //STR_AR_ELITE_NAME, + L"Солдат", //STR_AR_TROOP_NAME, + L"Полиция", //STR_AR_ADMINISTRATOR_NAME, + L"Рептион", //STR_AR_CREATURE_NAME, + + //Label for the length of time the battle took + + L"Прошло времени", //STR_AR_TIME_ELAPSED, + + //Labels for status of merc if retreating. (UPPERCASE) + + L"ОТСТУПИЛ", //STR_AR_MERC_RETREATED, + L"ОТСТУПАЕТ", //STR_AR_MERC_RETREATING, + L"ОТСТУПИТЬ", //STR_AR_MERC_RETREAT, + + //PRE BATTLE INTERFACE STRINGS + //Goes on the three buttons in the prebattle interface. The Auto resolve button represents + //a system that automatically resolves the combat for the player without having to do anything. + //These strings must be short (two lines -- 6-8 chars per line) + + L"Авто битва", //STR_PB_AUTORESOLVE_BTN, + L"Перейти в сектор", //STR_PB_GOTOSECTOR_BTN, + L"Уйти из сектора", //STR_PB_RETREATMERCS_BTN, + + //The different headers(titles) for the prebattle interface. + L"ВСТРЕЧА С ВРАГОМ", //STR_PB_ENEMYENCOUNTER_HEADER, + L"НАСТУПЛЕНИЕ ВРАГА", //STR_PB_ENEMYINVASION_HEADER, // 30 + L"ВРАЖЕСКАЯ ЗАСАДА", //STR_PB_ENEMYAMBUSH_HEADER + L"ВРАЖЕСКИЙ СЕКТОР", //STR_PB_ENTERINGENEMYSECTOR_HEADER + L"АТАКА ТВАРЕЙ", //STR_PB_CREATUREATTACK_HEADER + L"ЗАСАДА КОШЕК-УБИЙЦ", //STR_PB_BLOODCATAMBUSH_HEADER + L"ВХОД В ЛОГОВИЩЕ КОШЕК-УБИЙЦ", //STR_PB_ENTERINGBLOODCATLAIR_HEADER + L"ENEMY AIRDROP", //STR_PB_ENEMYINVASION_AIRDROP_HEADER // TODO.Translate + + //Various single words for direct translation. The Civilians represent the civilian + //militia occupying the sector being attacked. Limited to 9-10 chars + + L"Сектор", + L"Враг", + L"Наёмники", + L"Ополчение", + L"Рептионы", + L"Кошки-убийцы", + L"Сектор", + L"Нет", //If there are no uninvolved mercs in this fight. + L"Н/Д", //Acronym of Not Applicable + L"д", //One letter abbreviation of day + L"ч", //One letter abbreviation of hour + + //TACTICAL PLACEMENT USER INTERFACE STRINGS + //The four buttons + + L"Отмена", + L"Случайно", + L"Группой", + L"B aтaку!", + + //The help text for the four buttons. Use \n to denote new line (just like enter). + + L"Убирает все позиции бойцов \nи позволяет заново расставить их. (|C)", + L"При каждом нажатии распределяет \nбойцов случайным образом. (|S)", + L"Позволяет выбрать место, \nгде сгруппировать ваших бойцов. (|G)", + L"Нажмите эту кнопку, когда завершите \nвыбор позиций для бойцов. (|В|в|о|д)", + L"Вы должны разместить всех своих бойцов \nперед тем, как начать бой.", + + //Various strings (translate word for word) + + L"Сектор", + L"Выбор точек входа (используйте стрелки для скроллинга карты)", + + //Strings used for various popup message boxes. Can be as long as desired. + + L"Препятствие. Место недоступно. Попробуйте пройти другим путем.", + L"Поместите бойцов в незатененную часть карты.", + + //This message is for mercs arriving in sectors. Ex: Red has arrived in sector A9. + //Don't uppercase first character, or add spaces on either end. + + L"прибыл(а) в сектор", + + //These entries are for button popup help text for the prebattle interface. All popup help + //text supports the use of \n to denote new line. Do not use spaces before or after the \n. + L"Автоматически просчитывает бой\nбез загрузки карты. (|A)", + L"Нельзя включить автобой\nво время нападения.", + L"Войти в сектор, чтобы атаковать врага. (|E)", + L"Отступить отрядом в предыдущий сектор. (|R)", //singular version + L"Всем отрядам отступить в предыдущий сектор. (|R)", //multiple groups with same previous sector + + //various popup messages for battle conditions. + + //%c%d is the sector -- ex: A9 + L"Враги атаковали ваших ополченцев в секторе %c%d.", + //%c%d сектор -- напр: A9 + L"Твари атаковали ваших ополченцев в секторе %c%d.", + //1st %d refers to the number of civilians eaten by monsters, %c%d is the sector -- ex: A9 + //Note: the minimum number of civilians eaten will be two. + L"Твари убили %d гражданских во время атаки сектора %s.", + //%s is the sector location -- ex: A9: Omerta + L"Враги атаковали ваших наёмников в секторе %s. Ни один из ваших бойцов не в состоянии сражаться!", + //%s is the sector location -- ex: A9: Omerta + L"Твари атаковали ваших наёмников в секторе %s. Ни один из ваших бойцов не в состоянии сражаться!", + + // Flugente: militia movement forbidden due to limited roaming + L"Ополчение не может быть сюда перемещено (RESTRICT_ROAMING = TRUE).", + L"War room isn't staffed - militia move aborted!", // TODO.Translate + + L"Робот", //STR_AR_ROBOT_NAME, TODO: translate + L"Танк", //STR_AR_TANK_NAME, + L"Джип", //STR_AR_JEEP_NAME + + L"\nВосстановление дыхания в час: %d", // STR_BREATH_REGEN_SLEEP + + L"Zombies", // TODO.Translate + L"Bandits", + L"BLOODCAT ATTACK", + L"ZOMBIE ATTACK", + L"BANDIT ATTACK", + L"Zombie", + L"Bandit", + L"Bandits attack and kill %d civilians in sector %s.", + L"Transport group", + L"Transport group en route", +}; + +STR16 gpGameClockString[] = +{ + //This is the day represented in the game clock. Must be very short, 4 characters max. + L"День", +}; + +//When the merc finds a key, they can get a description of it which +//tells them where and when they found it. +STR16 sKeyDescriptionStrings[2] = +{ + L"Найдено в секторе:", + L"День находки:", +}; + +//The headers used to describe various weapon statistics. + +CHAR16 gWeaponStatsDesc[][ 20 ] = +{ + // HEADROCK: Changed this for Extended Description project + L"Состояние:", + L"Вес:", + L"Нужно ОД", + L"Дист:", // Range + L"Урон:", // Damage + L"Всего:", // Number of bullets left in a magazine + L"ОД:", // abbreviation for Action Points + L"=", + L"=", + //Lal: additional strings for tooltips + L"Точность:", //9 + L"Дист:", //10 + L"Урон:", //11 + L"Вес:", //12 + L"Оглушение:",//13 + // HEADROCK: Added new strings for extended description ** REDUNDANT ** + // HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only) + // Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES... + L"Навеска:", //14 //Attachments + L"AUTO/5:", //15 + L"Осталось патрон:", //16 //Remaining ammo + L"Предустановка:", //17 //WarmSteel - So we can also display default attachments + L"Нагар:", // 18 + L"Место:", // 19 //space left on Molle items + L"Разброс:", // 20 + +}; + +// HEADROCK: Several arrays of tooltip text for new Extended Description Box +STR16 gzWeaponStatsFasthelpTactical[ 33 ] = +{ + L"|Д|а|л|ь|н|о|с|т|ь\n \nФактическая дальность стрельбы из этого оружия.\nСтрельба с расстояний, превышающих данный показатель,\nбудет осуществляться со значительными штрафами\nна точность.\n \nБольше - лучше.", + L"|У|р|о|н\n \nПоказатель потенциального урона оружия.\nПопадание в незащищенную цель нанесет ей\nпримерно столько единиц урона.\n \nБольше - лучше.", + L"|Т|о|ч|н|о|с|т|ь\n \nПоказатель исходного бонуса (или штрафа!)\nк точности, присущего этому оружию благодаря\nего удачному (или неудачному) дизайну.\n \nБольше - лучше.", + L"|У|р|о|в|н|и |п|р|и|ц|е|л|и|в|а|н|и|я\n \nМаксимальное число кликов прицеливания,\nвозможных при использовании этого оружия.\n \nС каждым кликом прицеливания атака\nстановится более точной.\n \nБольше - лучше.", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|р|и|ц|е|л|и|в|а|н|и|я\n \nФиксированный модификатор, меняющий\nэффективность каждого клика прицеливания\nпри использовании этого оружия.\n \nБольше - лучше.", + L"|М|и|н|. |р|а|с|с|т|о|я|н|и|е |д|л|я |б|о|н|у|с|а |п|р|и |п|р|и|ц|е|л|и|в|а|н|и|и\n \nМинимальное расстояние до цели, при котором\nк этому оружию может применяться\nмодификатор прицеливания.\n \nЕсли цель находится ближе, чем\nэтот показатель, то эффективность каждого\nклика прицеливания будет неизменной.\n \nМеньше - лучше.", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|п|а|д|а|н|и|я\n \nФиксированный модификатор шанса попадания\nпри любой атаке из этого оружия.\n \nБольше - лучше.", + L"|О|п|т|и|м|а|л|ь|н|а|я |д|а|л|ь|н|о|с|т|ь |л|а|з|е|р|а\n \nДальность (в тайлах), в пределах которой\nлазерный целеуказатель, установленный на оружии,\nбудет работать с максимальной эффективностью.\n \nПри стрельбе с расстояний, превышающих данный показатель,\nцелеуказатель будет давать меньший бонус или\nне будет давать его вовсе.\n \nБольше - лучше.", + L"|С|к|р|ы|т|а|я |в|с|п|ы|ш|к|а |в|ы|с|т|р|е|л|а\n \nПоявление этой иконки означает, что\nоружие не производит вспышки при выстреле.\nЭто позволяет стрелку оставаться незамеченным.", + L"|Г|р|о|м|к|о|с|т|ь\n \nЭто расстояние в тайлах, на которое распространяется\nзвук стрельбы. В пределах этого расстояния\nвраги смогут услышать звук вашего выстрела.\n \nМеньше - лучше.", + L"|Н|а|д|ё|ж|н|о|с|т|ь\n \nОпределяет, как быстро состояние этого\nоружия ухудшается при использовании.\n \nБольше - лучше.", + L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nЖелтый - только техники и некоторые NPC\nмогут починить его свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", + L"", //12 + L"ОД на вскидывание", + L"ОД на 1 выстрел", + L"ОД на огонь с отсечкой", + L"ОД на огонь очередью", + L"ОД на замену магазина", + L"ОД на досылку патрона", + L"Штраф за отдачу при\nстрельбе очередью c отсечкой\n(меньше - лучше)", //19 + L"Бонус от сошек\n(при стрельбе лёжа)", + L"Выстрелов в автоматическом\nрежиме за 5 ОД", + L"Штраф за отдачу при \nстрельбе очередью \n(меньше - лучше)", + L"Штраф за отдачу при\nстрельбе очередью\n(c отсечкой/без) (меньше - лучше)", //23 + L"ОД на бросок", + L"ОД на выстрел", + L"ОД на удар ножом", + L"Не стреляет одиночными!", + L"Нет отсечки патрона!", + L"Нет автоматического режима!", + L"ОД на удар", + L"", + L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nЖелтый - только некоторые NPC\nмогут починить его свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", +}; + +STR16 gzMiscItemStatsFasthelp[] = +{ + L"Модификатор размера предмета\n(меньше - лучше)", //0 + L"Модификатор надёжности", + L"Модификатор шумности\n(меньше - лучше)", + L"Скрывает вспышку", + L"Модификатор сошек", + L"Модификатор дальности", //5 + L"Модификатор точности", + L"Оптимальная дальность лазера", + L"Модификатор бонусов оптики", + L"Модификатор очереди с отсечкой", + L"Модификатор штрафа за отдачу\nпри стрельбе c отсечкой\n(больше - лучше)", //10 + L"Модификатор штрафа за отдачу\nпри стрельбе очередью\n(больше - лучше)", + L"Модификатор ОД", + L"Модификатор ОД\nна очередь с отсечкой\n(меньше - лучше)", + L"Модификатор ОД\nна очередь без отсечки\n(меньше - лучше)", + L"Модификатор ОД на вскидывание\n(меньше - лучше)", //15 + L"Модификатор ОД\nна замену магазина\n(меньше - лучше)", + L"Модификатор размера магазина", + L"Модификатор ОД на выстрел\n(меньше - лучше)", + L"Модификатор урона", + L"Модификатор урона\nв ближнем бою", //20 + L"Камуфляж 'Лес'", + L"Камуфляж 'Город'", + L"Камуфляж 'Пустыня'", + L"Камуфляж 'Снег'", + L"Модификатор скрытности", // 25 + L"Модификатор диапазона\nслышимости", + L"Модификатор диапазона\nвидимости", + L"Модификатор диапазона\nвидимости днём", + L"Модификатор диапазона\nвидимости ночью", + L"Модификатор диапазона\nвидимости при ярком освещении", //30 + L"Модификатор диапазона\nвидимости в пещере", + L"Туннельное зрение\n(меньше - лучше)", + L"Минимальное расстояние\nдля бонуса при прицеливании", + L"Зажмите |C|t|r|l для сравнения предметов", // item compare help text + L"Equipment weight: %4.1f kg", // 35 // TODO.Translate +}; + +// HEADROCK: End new tooltip text + +// HEADROCK HAM 4: New condition-based text similar to JA1. +STR16 gConditionDesc[] = +{ + L"В ", //In + L"ИДЕАЛЬНОМ", + L"ОТЛИЧНОМ", + L"ХОРОШЕМ", //GOOD + L"НОРМАЛЬНОМ", //FAIR + L"ПЛОХОМ", //POOR + L"УЖАСНОМ", //BAD + L"НЕРАБОЧЕМ", + L" состоянии." +}; + +//The headers used for the merc's money. + +CHAR16 gMoneyStatsDesc[][ 14 ] = +{ + L"Кол-во", + L"Осталось:", //this is the overall balance + L"Кол-во", + L"Отделить:", //the amount he wants to separate from the overall balance to get two piles of money + + L"Текущий", + L"Баланс:", + L"Снимаемая", + L"Сумма:", +}; + +//The health of various creatures, enemies, characters in the game. The numbers following each are for comment +//only, but represent the precentage of points remaining. + +CHAR16 zHealthStr[][13] = +{ + L"УМИРАЕТ", // >= 0 + L"КРИТИЧЕН", // >= 15 + L"ПЛОХ", // >= 30 + L"РАНЕН", // >= 45 + L"ЗДОРОВ", // >= 60 + L"СИЛЕН", // >= 75 + L"ОТЛИЧНО", // >= 90 + L"ЗАХВАЧЕН", +}; + +STR16 gzHiddenHitCountStr[1] = +{ + L"?", +}; + +STR16 gzMoneyAmounts[6] = +{ + L"1000$", + L"100$", + L"10$", + L"Снять", + L"Разделить", + L"Взять", +}; + +// short words meaning "Advantages" for "Pros" and "Disadvantages" for "Cons." +CHAR16 gzProsLabel[10] = +{ + L"+", +}; + +CHAR16 gzConsLabel[10] = +{ + L"-", +}; + +//Conversation options a player has when encountering an NPC +CHAR16 zTalkMenuStrings[6][ SMALL_STRING_LENGTH ] = +{ + L"Повторить", //meaning "Repeat yourself" + L"Дружественно", //approach in a friendly + L"Напрямую", //approach directly - let's get down to business + L"Угрожать", //approach threateningly - talk now, or I'll blow your face off + L"Дать", + L"Нанять", +}; + +//Some NPCs buy, sell or repair items. These different options are available for those NPCs as well. +CHAR16 zDealerStrings[4][ SMALL_STRING_LENGTH ]= +{ + L"Купить/Продать", + L"Купить", + L"Продать", + L"Ремонтировать", +}; + +CHAR16 zDialogActions[1][ SMALL_STRING_LENGTH ] = +{ + L"До встречи", +}; + + +//These are vehicles in the game. + +STR16 pVehicleStrings[] = +{ + L"Эльдорадо", + L"Хаммер", // a hummer jeep/truck -- military vehicle + L"Фургон", + L"Джип", + L"Танк", + L"Вертолёт", +}; + +STR16 pShortVehicleStrings[] = +{ + L"Эльдорадо", + L"Хаммер", // the HMVV + L"Фургон", + L"Джип", + L"Танк", + L"Вертолёт", // the helicopter +}; + +STR16 zVehicleName[] = +{ + L"Эльдорадо", + L"Хаммер", //a military jeep. This is a brand name. + L"Фургон", // Ice cream truck + L"Джип", + L"Танк", + L"Вертолёт", //an abbreviation for Helicopter +}; + +STR16 pVehicleSeatsStrings[] = +{ + L"Вы не можете стрелять с этого места.", + L"Вы не можете поменять их местами во время боя, не выходя из автомобиля.", +}; + +//These are messages Used in the Tactical Screen + +CHAR16 TacticalStr[][ MED_STRING_LENGTH ] = +{ + L"Воздушный Рейд", + L"Оказать первую помощь?", + + // CAMFIELD NUKE THIS and add quote #66. + + L"%s замечает, что некоторые вещи отсутствуют в посылке.", + + // The %s is a string from pDoorTrapStrings + + L"Замок (%s).", + L"Тут нет замка.", + L"Успех!", + L"Провал.", + L"Успех!", + L"Провал", + L"На замке нет ловушки.", + L"Успех!", + // The %s is a merc name + L"У %s нет подходящего ключа", + L"Ловушка обезврежена", + L"На замке не найдено ловушки.", + L"Заперто", + L"ДВЕРЬ", + L"С ЛОВУШКОЙ", + L"ЗАПЕРТАЯ", + L"НЕЗАПЕРТАЯ", + L"СЛОМАНАЯ", + L"Тут есть кнопка. Нажать?", + L"Разрядить ловушку?", + L"Пред...", + L"След...", + L"Еще...", + + // In the next 2 strings, %s is an item name + + L"%s помещен(а) на землю.", + L"%s отдан(а) %s.", + + // In the next 2 strings, %s is a name + + L"%s: Оплачено сполна.", + L"%s: Еще должен %d.", + L"Установить частоту радиодетонатора:", //in this case, frequency refers to a radio signal + L"Количество ходов до взрыва:", //how much time, in turns, until the bomb blows + L"Выберите частоту радиодетонатора на пульте:", //in this case, frequency refers to a radio signal + L"Обезвредить ловушку?", + L"Убрать синий флаг?", + L"Поставить здесь синий флаг?", + L"Завершающий ход", + + // In the next string, %s is a name. Stance refers to way they are standing. + + L"Вы действительно хотите атаковать %s?", + L"Увы, в машине боец не может изменить положение.", + L"Робот не может менять положение.", + + // In the next 3 strings, %s is a name + + L"%s не может поменять положение здесь.", + L"%s не может получить первую помощь.", + L"%s не нуждается в медицинской помощи.", + L"Туда идти нельзя.", + L"У вас уже полная команда, мест нет.", //there's no room for a recruit on the player's team + + // In the next string, %s is a name + + L"%s нанят(а).", + + // Here %s is a name and %d is a number + + L"%s должен получить $%d.", + + // In the next string, %s is a name + + L"Сопроводить %s?", + + // In the next string, the first %s is a name and the second %s is an amount of money (including $ sign) + + L"Нанять %s за %s в день?", + + // This line is used repeatedly to ask player if they wish to participate in a boxing match. + + L"Хотите участвовать в поединке?", + + // In the next string, the first %s is an item name and the + // second %s is an amount of money (including $ sign) + + L"Купить %s за %s?", + + // In the next string, %s is a name + + L"%s сопровождается отрядом %d.", + + // These messages are displayed during play to alert the player to a particular situation + + L"ОТКАЗ", //weapon is jammed. + L"Роботу нужны патроны %s калибра.", //Robot is out of ammo + L"Бросить туда не получится.", //Merc can't throw to the destination he selected + + // These are different buttons that the player can turn on and off. + + L"Режим скрытности (|Z)", + L"Карта (|M)", + L"Завершить ход (|D)", + L"Говорить", + L"Молчать", + L"Подняться (|P|g|U|p)", + L"Смена уровня (|T|a|b)", + L"Забраться/Спрыгнуть (|J)", + L"Присесть/Лечь (|P|g|D|n)", + L"Осмотреть (|C|t|r|l)", + L"Предыдущий боец", + L"Следующий боец (|П|p|o|б|e|л)", + L"Настройки (|O)", + L"Режим очереди (|B)", + L"Смотреть/Повернуться (|L)", + L"Здоровье: %d/%d\nЭнергия: %d/%d\nБоевой дух: %s", + L"Ну и?", //this means "what?" + L"Продолж.", // an abbrieviation for "Continued" + L"%s будет говорить.", + L"%s будет молчать.", + L"Состояние: %d/%d\nТопливо: %d/%d", + L"Выйти из машины", + L"Сменить отряд (|S|h|i|f|t |П|p|о|б|e|л)", + L"Ехать", + L"Н/Д", //this is an acronym for "Not Applicable." + L"Рукопашный бой", + L"Применить оружие", + L"Воспользоваться ножом", + L"Использовать взрывчатку", + L"Воспользоваться аптечкой", + L"(Ловит)", + L"(Перезарядка)", + L"(Дать)", + L"Сработала %s.", // The %s here is a string from pDoorTrapStrings ASSUME all traps are female gender + L"%s прибыл(а).", + L"%s: истратил(а) все очки действия.", + L"%s сейчас не может действовать.", + L"%s перевязан(а).", + L"%s: закончились бинты.", + L"Враг в секторе!", + L"Врагов в поле зрения нет.", + L"Недостаточно очков действия.", + L"Наденьте на голову одного из наёмников пульт управления роботом.", + L"Последняя очередь опустошила магазин!", + L"СОЛДАТ", + L"РЕПТИОН", + L"ОПОЛЧЕНЕЦ", + L"ЖИТЕЛЬ", + L"ЗОМБИ", + L"Пленный", + L"Выход из сектора", + L"ДА", + L"ОТМЕНА", + L"Выбранный боец", + L"Все бойцы отряда", + L"Идти в сектор", + L"Идти на карту", + L"Этот сектор отсюда покинуть нельзя.", + L"Вы не можете покинуть сектор в походовом режиме.", + L"%s слишком далеко.", + L"Скрыть кроны деревьев", + L"Показать кроны деревьев", + L"ВОРОНА", //Crow, as in the large black bird + L"ШЕЯ", + L"ГОЛОВА", + L"ТОРС", + L"НОГИ", + L"Рассказать королеве то, что она хочет знать?", + L"Регистрация отпечатков пальцев пройдена.", + L"Неопознанные отпечатки пальцев. Оружие заблокировано.", + L"Цель захвачена", + L"Путь заблокирован", + L"Положить/Снять деньги", // Help text over the $ button on the Single Merc Panel + L"Никто не нуждается в медицинской помощи.", + L"отказ", // Short form of JAMMED, for small inv slots + L"Туда вскарабкаться невозможно.", // used ( now ) for when we click on a cliff + L"Путь блокирован. Хотите поменяться местами с этим человеком?", + L"Человек отказывается двигаться.", + // In the following message, '%s' would be replaced with a quantity of money (e.g. $200) + L"Вы согласны заплатить %s?", + L"Принять бесплатное лечение?", + L"Согласиться выйти замуж за %s?", //Daryl + L"Связка ключей", + L"С эскортируемыми этого сделать нельзя.", + L"Пощадить %s?", //Krott + L"За пределами прицельной дальности.", + L"Шахтер", + L"Машина может ездить только между секторами.", + L"Ни у кого из наёмников нет аптечки", + L"Путь для %s заблокирован", + L"Ваши бойцы, захваченные армией %s, томятся здесь в плену!", //Deidranna + L"Замок поврежден.", + L"Замок разрушен.", + L"Кто-то с другой стороны пытается открыть эту дверь.", + L"Состояние: %d/%d\nТопливо: %d/%d", + L"%s не видит %s.", // Cannot see person trying to talk to + L"Навеска снята", + L"Вы не можете содержать еще одну машину, довольствуйтесь уже имеющимися двумя.", + + // added by Flugente for defusing/setting up trap networks + L"Выберите частоту активации (1 - 4) или частоту деактивации (A - D):", + L"Установите частоту деактивации:", + L"Установите частоту активации (1 - 4) и частоту деактивации (A - D):", + L"Установите время до активации в ходах (1 - 4) и частоту деактивации (A - D):", + L"Выберите уровень (1 - 4) и сеть (A - D):", + + // added by Flugente to display food status + L"Здоровье: %d/%d\nЭнергия: %d/%d\nБоевой дух: %s\nВода: %d%s\nПища: %d%s", + + // added by Flugente: selection of a function to call in tactical + L"Что будем делать?", + L"Наполнить фляги", + L"Чистить (один)", + L"Чистить (все)", + L"Убрать одежду", + L"Убрать маскировку", + L"Ополчение: бросить оружие", + L"Ополчение: взять оружие", + L"Проверить маскировку", + L"", + + // added by Flugente: decide what to do with the corpses + L"Что будем делать с телом?", + L"Отсечь голову", + L"Потрошить", + L"Забрать одежду", + L"Забрать тело", + + // Flugente: weapon cleaning + L"%s чистит %s", + + // added by Flugente: decide what to do with prisoners + L"As we have no prison, a field interrogation is performed.", // TODO.Translate + L"Field interrogation", + L"Куда отправить %d пленного(-иков)?", + L"Отпустить", + L"Что вы хотите сделать?", + L"Требовать сдаться", + L"Предложить сдаться", + L"Distract", // TODO.Translate + L"Переговоры", + L"Recruit Turncoat", // TODO: translate + + // added by sevenfm: disarm messagebox options, messages when arming wrong bomb + L"Обезвредить", + L"Исследовать", + L"Убрать флаг", + L"Взорвать!", + L"Активировать сеть", + L"Деактивировать сеть", + L"Показать сеть", + L"Нет детонатора!", + L"Эта бомба уже взведена!", + L"Безопасно", + L"Относительно безопасно", + L"Рискованно", + L"Опасно", + L"Очень опасно!", + + L"Маска", + L"ПНВ", + L"Предмет", + + L"Эта функция работает только с новой системой инвентаря (NIV)", + L"Нет предметов в главной руке", + L"Некуда поместить предмет", + L"Для этого быстрого слота не определены предметы", + L"Нет свободной руки для предмета", + L"Предмет не обнаружен", + L"Невозможно взять предмет в руку", + + L"Перевязка идуших бойцов...", + + L"Комплектовать", + L"%s заменил %s на лучшую версию", + L"%s поднял %s", + + L"%s has stopped chatting with %s", // TODO.Translate + L"Attempt to turn", +}; + +//Varying helptext explains (for the "Go to Sector/Map" checkbox) what will happen given different circumstances in the "exiting sector" interface. +STR16 pExitingSectorHelpText[] = +{ + //Helptext for the "Go to Sector" checkbox button, that explains what will happen when the box is checked. + L"Если выбрано, то карта соседнего сектора будет сразу же загружена.", + L"Если выбрано, то вы автоматически попадете на экран карты,\nтак как путешествие займет некоторое время.", + + //If you attempt to leave a sector when you have multiple squads in a hostile sector. + L"Этот сектор оккупирован врагом, и вы не можете выйти отсюда.\nВы должны разобраться с этим, прежде чем перейти в любой другой сектор.", + + //Because you only have one squad in the sector, and the "move all" option is checked, the "go to sector" option is locked to on. + //The helptext explains why it is locked. + L"Как только оставшиеся наёмники покинут этот сектор,\nсразу будет загружен соседний сектор.", + L"Выведя оставшихся наёмников из этого сектора,\nвы автоматически попадете на экран карты,\nтак как на путешествие потребуется некоторое время.", + + //If an EPC is the selected merc, it won't allow the merc to leave alone as the merc is being escorted. The "single" button is disabled. + L"%s нуждается в сопровождении ваших наёмников и не может самостоятельно покинуть сектор.", + + //If only one conscious merc is left and is selected, and there are EPCs in the squad, the merc will be prohibited from leaving alone. + //There are several strings depending on the gender of the merc and how many EPCs are in the squad. + //DO NOT USE THE NEWLINE HERE AS IT IS USED FOR BOTH HELPTEXT AND SCREEN MESSAGES! + L"%s не может покинуть сектор один, так как он сопровождает %s.", //male singular + L"%s не может покинуть сектор одна, так как она сопровождает %s.", //female singular + L"%s не может покинуть сектор один, так как он сопровождает группу из нескольких человек.", //male plural + L"%s не может покинуть сектор одна, так как она сопровождает группу из нескольких человек.", //female plural + + //If one or more of your mercs in the selected squad aren't in range of the traversal area, then the "move all" option is disabled, + //and this helptext explains why. + L"Все ваши наёмники должны быть в машине,\nчтобы отряд смог отправиться в место назначения.", + + L"", //UNUSED + + //Standard helptext for single movement. Explains what will happen (splitting the squad) + L"Если выбрать, то %s отправится в одиночку\nи автоматически будет переведен в отдельный отряд.", + + //Standard helptext for all movement. Explains what will happen (moving the squad) + L"Если выбрать, данный отряд отправится\nв место назначения, покинув этот сектор.", + + //This strings is used BEFORE the "exiting sector" interface is created. If you have an EPC selected and you attempt to tactically + //traverse the EPC while the escorting mercs aren't near enough (or dead, dying, or unconscious), this message will appear and the + //"exiting sector" interface will not appear. This is just like the situation where + //This string is special, as it is not used as helptext. Do not use the special newline character (\n) for this string. + L"%s сопровождается вашими наёмниками и не может покинуть этот сектор в одиночку. Остальные наёмники должны быть рядом, прежде чем вы сможете покинуть сектор.", +}; + + + +STR16 pRepairStrings[] = +{ + L"Предметы", // tell merc to repair items in inventory + L"База ПВО", // tell merc to repair SAM site - SAM is an acronym for Surface to Air Missile + L"Отмена", // cancel this menu + L"Робот", // repair the robot +}; + + +// NOTE: combine prestatbuildstring with statgain to get a line like the example below. +// "John has gained 3 points of marksmanship skill." + +STR16 sPreStatBuildString[] = +{ + L"теряет", // the merc has lost a statistic + L"получает", // the merc has gained a statistic + L"ед.", // singular + L"ед.", // plural + L"уровень", // singular + L"уровня", // plural +}; + +STR16 sStatGainStrings[] = +{ + L"здоровья.", + L"проворности.", + L"ловкости.", + L"интеллекта.", + L"медицины.", + L"взрывного дела.", + L"механики.", + L"меткости.", + L"опыта.", + L"силы.", + L"лидерства.", +}; + + +STR16 pHelicopterEtaStrings[] = +{ + L"Общая дистанция:", // total distance for helicopter to travel + L"Безопасно: ", // distance to travel to destination + L"Опасно:", // distance to return from destination to airport + L"Итого:", // total cost of trip by helicopter + L"РВП:", // ETA is an acronym for "estimated time of arrival" + L"У вертолета закончилось топливо. Придется совершить посадку на вражеской территории!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Пассажиры:", + L"Выбрать вертолет или точку высадки?", + L"Вертолёт", + L"Высадка", + L"Вертолет серьезно поврежден и идет на вынужденную посадку во вражеской территории!", // warning that the sector the helicopter is going to use for refueling is under enemy control -> + L"Вертолет возвращается на базу, высадить сначала пассажиров?", + L"Остаток топлива:", + L"Расст. до заправки:", +}; + +STR16 pHelicopterRepairRefuelStrings[]= +{ + // anv: Waldo The Mechanic - prompt and notifications + L"Хотите, чтобы %s начал ремонт? Это будет стоить $%d, вертолет не будет доступен в течение %d часов.", + L"Вертолет разобран. Подождите, пока не закончится его ремонт.", + L"Ремонт закончен. Вертолет снова доступен.", + L"Вертолет полностью заправлен.", + + L"Helicopter has exceeded maximum range!", // TODO.Translate +}; + +STR16 sMapLevelString[] = +{ + L"Подуровень:", // what level below the ground is the player viewing in mapscreen +}; + +STR16 gsLoyalString[] = +{ + L"Лояльность", // the loyalty rating of a town ie : Loyal 53% +}; + + +// error message for when player is trying to give a merc a travel order while he's underground. + +STR16 gsUndergroundString[] = +{ + L"не может выйти на марш в подземельях.", +}; + +STR16 gsTimeStrings[] = +{ + L"ч", // hours abbreviation + L"м", // minutes abbreviation + L"с", // seconds abbreviation + L"д", // days abbreviation +}; + +// text for the various facilities in the sector + +STR16 sFacilitiesStrings[] = +{ + L"Нет", //важные объекты сектора + L"Госпиталь", + L"Завод", //Factory + L"Тюрьма", + L"Военная база", + L"Аэропорт", + L"Стрельбище", // a field for soldiers to practise their shooting skills +}; + +// text for inventory pop up button + +STR16 pMapPopUpInventoryText[] = +{ + L"Инвентарь", + L"Выйти", + L"Ремонт", + L"Factories", // TODO.Translate +}; + +// town strings + +STR16 pwTownInfoStrings[] = +{ + L"Размер", // 0 // size of the town in sectors + L"", // blank line, required + L"Контроль", // how much of town is controlled + L"Нет", // none of this town + L"Шахта города", // mine associated with this town + L"Лояльность", // 5 // the loyalty level of this town + L"Готовы", // the forces in the town trained by the player + L"", + L"Важные объекты", // main facilities in this town + L"Уровень", // the training level of civilians in this town + L"Тренировка ополчения", // 10 // state of civilian training in town + L"Ополчение", // the state of the trained civilians in the town + + // Flugente: prisoner texts + L"Заключенные", + L"%d (вместимость %d)", + L"%d Полиция", + L"%d Солдаты", + L"%d Спецназ", + L"%d Офицеры", + L"%d Генералы", + L"%d Гражданские", + L"%d Special1", + L"%d Special2", +}; + +// Mine strings + +STR16 pwMineStrings[] = +{ + L"Шахта", // 0 + L"Серебро", + L"Золото", + L"Дневная выработка", + L"Производственные возможности", + L"Заброшена", // 5 + L"Закрыта", + L"Истощается", + L"Идет добыча", + L"Статус", + L"Уровень добычи", + L"Ресурс", // 10 + L"Принадлежность", + L"Лояльность", +}; + +// blank sector strings + +STR16 pwMiscSectorStrings[] = +{ + L"Силы врага", + L"Сектор", + L"Количество предметов", + L"Неизвестно", + + L"Под контролем", + L"Да", + L"Нет", + L"Status/Software status:", // TODO.Translate + + L"Additional Intel", // TODO:Translate +}; + +// error strings for inventory + +STR16 pMapInventoryErrorString[] = +{ + L"%s слишком далеко.", //Merc is in sector with item but not close enough + L"Нельзя выбрать этого бойца.", //MARK CARTER + L"%s вне этого сектора, и не может подобрать предмет.", + L"Во время боя вам придется подбирать вещи с земли.", + L"Во время боя вам придется выкладывать вещи на землю на тактической карте.", + L"%s вне этого сектора и не может оставить предмет.", + L"Во время битвы вы не можете заряжать оружие патронами из короба.", +}; + +STR16 pMapInventoryStrings[] = +{ + L"Локация", // sector these items are in + L"Всего предметов", // total number of items in sector +}; + + +// help text for the user + +STR16 pMapScreenFastHelpTextList[] = +{ + L"Чтобы перевести наёмника в другой отряд, назначить его врачом или отдать приказ ремонтировать вещи, щелкните по колонке 'ЗАНЯТИЕ'.", + L"Чтобы приказать наёмнику перейти в другой сектор, щелкните в колонке 'КУДА'.", + L"Как только наёмник получит приказ на передвижение, включится сжатие времени.", + L"Нажатием левой кнопки мыши выбирается сектор. Еще одно нажатие нужно, чтобы отдать наёмникам приказы на передвижение. Нажатие правой кнопки мыши на секторе откроет экран дополнительной информации.", + L"Чтобы вызвать экран помощи, в любой момент времени нажмите 'h'.", + L"Тестовый текст", + L"Тестовый текст", + L"Тестовый текст", + L"Тестовый текст", + L"Вы практически ничего не сможете сделать на этом экране, пока не прибудете в Арулько. Когда познакомитесь со своей командой, включите сжатие времени (кнопки в правом нижнем углу). Это ускорит течение времени, пока ваша команда не прибудет в Арулько.", +}; + +// movement menu text + +STR16 pMovementMenuStrings[] = +{ + L"Отправить наёмников в сектор", // title for movement box + L"Путь", // done with movement menu, start plotting movement + L"Отмена", // cancel this menu + L"Другое", // title for group of mercs not on squads nor in vehicles + L"Выбрать все", // Select all squads +}; + + +STR16 pUpdateMercStrings[] = +{ + L"Ой!:", // an error has occured + L"Срок контракта истек:", // this pop up came up due to a merc contract ending + L"Задание выполнили:", // this pop up....due to more than one merc finishing assignments + L"Бойцы вернулись к своим обязанностям:", // this pop up ....due to more than one merc waking up and returing to work + L"Бойцы ложатся спать:", // this pop up ....due to more than one merc being tired and going to sleep + L"Скоро закончатся контракты у:", // this pop up came up due to a merc contract ending +}; + +// map screen map border buttons help text + +STR16 pMapScreenBorderButtonHelpText[] = +{ + L"Населенные пункты (|W)", + L"Шахты (|M)", + L"Отряды и враги (|T)", + L"Карта воздушного пространства (|A)", + L"Вещи (|I)", + L"Ополчение и враги (|Z)", + L"Show |Disease Data", // TODO.Translate + L"Show Weathe|r", + L"Show |Quests & Intel", +}; + +STR16 pMapScreenInvenButtonHelpText[] = +{ + L"Следующая \nстраница (|.)", // next page + L"Предыдущая \nстраница (|,)", // previous page + L"Закрыть инвентарь сектора (|E|s|c)", // exit sector inventory + L"Увеличить предметы", // HEAROCK HAM 5: Inventory Zoom Button + L"Сложить и объединить предметы", // HEADROCK HAM 5: Stack and Merge + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Собрать патроны в ящики\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Собрать патроны в коробки", // HEADROCK HAM 5: Sort ammo + // 6 - 10 + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Снять всю навеску \nс предметов\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: empty LBE in sector", // HEADROCK HAM 5: Separate Attachments + L"Разрядить всё оружие", //HEADROCK HAM 5: Eject Ammo + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Показать все предметы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Скрыть все предметы", // HEADROCK HAM 5: Filter Button + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть оружие\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать оружие", // HEADROCK HAM 5: Filter Button + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть аммуницию\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать аммуницию", // HEADROCK HAM 5: Filter Button + // 11 - 15 + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть взрывчатку\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать взрывчатку", // HEADROCK HAM 5: Filter Button + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть холодное оружие\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать холодное оружие", // HEADROCK HAM 5: Filter Button + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть броню\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать броню", // HEADROCK HAM 5: Filter Button + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть разгрузочные системы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать разгрузочные системы", // HEADROCK HAM 5: Filter Button + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть наборы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать наборы", // HEADROCK HAM 5: Filter Button + // 16 - 20 + L"|Л|е|в|ы|й| |щ|е|л|ч|о|к|: Скрыть прочие предметы\n|П|р|а|в|ы|й| |щ|е|л|ч|о|к|: Показать прочие предметы", // HEADROCK HAM 5: Filter Button + L"Переключить отображение перемещения предметов", // Flugente: move item display + L"Save Gear Template", // TODO.Translate + L"Load Gear Template...", +}; + +STR16 pMapScreenBottomFastHelp[] = +{ + L"Лэптоп (|L)", + L"Тактический экран (|E|s|c)", + L"Настройки (|O)", + L"Сжатие времени (|+)", // time compress more + L"Сжатие времени (|-)", // time compress less + L"Предыдущее сообщение (|С|т|р|е|л|к|а |в|в|е|р|х)\nПредыдущая страница (|P|g|U|p)", // previous message in scrollable list + L"Следующее сообщение (|С|т|р|е|л|к|а |в|н|и|з)\nСледующая страница (|P|g|D|n)", // next message in the scrollable list + L"Включить / выключить\nсжатие времени (|П|р|о|б|е|л)", // start/stop time compression +}; + +STR16 pMapScreenBottomText[] = +{ + L"Текущий баланс", // current balance in player bank account +}; + +STR16 pMercDeadString[] = +{ + L"%s мертв(а)", +}; + + +STR16 pDayStrings[] = +{ + L"День", +}; + +// the list of email sender names + +CHAR16 pSenderNameList[500][128] = +{ + L"", +}; +/* +{ + L"Энрико", + L"Psych Pro Inc.", + L"Помощь", + L"Psych Pro Inc.", + L"Спек", + L"R.I.S.", //5 + L"Барри", + L"Блад", + L"Рысь", + L"Гризли", + L"Вики", //10 + L"Тревор", + L"Грунти (Хряп)", + L"Иван", + L"Анаболик", + L"Игорь", //15 + L"Тень", + L"Рыжий", + L"Жнец (Потрошитель)", + L"Фидель", + L"Лиска", //20 + L"Сидней", + L"Гас", + L"Сдоба", + L"Айс", + L"Паук", //25 + L"Скала (Клифф)", + L"Бык", + L"Стрелок", + L"Тоска", + L"Рейдер", //30 + L"Сова", + L"Статик", + L"Лен", + L"Дэнни", + L"Маг", + L"Стефан", + L"Лысый", + L"Злобный", + L"Доктор Кью", + L"Гвоздь", + L"Тор", + L"Стрелка", + L"Волк", + L"ЭмДи", + L"Лава", + //---------- + L"M.I.S. Страховка", + L"Бобби Рэй", + L"Босс", + L"Джон Кульба", + L"A.I.M.", +}; +*/ + +// next/prev strings + +STR16 pTraverseStrings[] = +{ + L"<<", + L">>", +}; + +// new mail notify string + +STR16 pNewMailStrings[] = +{ + L"Получена новая почта...", +}; + + +// confirm player's intent to delete messages + +STR16 pDeleteMailStrings[] = +{ + L"Удалить письмо?", + L"Удалить, НЕ ПРОЧИТАВ?", +}; + + +// the sort header strings + +STR16 pEmailHeaders[] = +{ + L"От:", + L"Тема:", + L"День:", +}; + +// email titlebar text + +STR16 pEmailTitleText[] = +{ + L"Почтовый ящик", +}; + + +// the financial screen strings +STR16 pFinanceTitle[] = +{ + L"Финансовый отчет", //the name we made up for the financial program in the game +}; + +STR16 pFinanceSummary[] = +{ + L"Доход:", // credit (subtract from) to player's account + L"Расход:", // debit (add to) to player's account + L"Вчерашний чистый доход:", + L"Вчерашние другие поступления:", + L"Вчерашний расход:", + L"Баланс на конец дня:", + L"Чистый доход сегодня:", + L"Другие поступления за сегодня:", + L"Расход за сегодня:", + L"Текущий баланс:", + L"Ожидаемый доход:", + L"Ожидаемый баланс:", // projected balance for player for tommorow +}; + + +// headers to each list in financial screen + +STR16 pFinanceHeaders[] = +{ + L"День", // the day column + L"Доход", // the credits column + L"Расход", // the debits column + L"Операции", // transaction type - see TransactionText below + L"Баланс", // balance at this point in time + L"Стр.", // page number + L"Дней", // the day(s) of transactions this page displays +}; + + +STR16 pTransactionText[] = +{ + L"Начисленный процент", // interest the player has accumulated so far + L"Анонимный взнос", + L"Перевод средств", + L"Нанят", // Merc was hired + L"Покупки у Бобби Рэя", // Bobby Ray is the name of an arms dealer + L"Оплата счёта M.E.R.C.", + L"%s: страховка.", // medical deposit for merc + L"I.M.P.: Анализ профиля", // IMP is the acronym for International Mercenary Profiling + L"%s: куплена страховка", + L"%s: Страховка уменьшена", + L"%s: Продление страховки", // johnny contract extended + L"для %s: Страховка аннулирована", + L"%s: Требуется страховка", // insurance claim for merc + L"1 день", // merc's contract extended for a day + L"7 дней", // merc's contract extended for a week + L"14 дней", // ... for 2 weeks + L"Доход шахты", + L"", //String nuked + L"Куплены цветы", + L"%s: Возврат мед. депозита", + L"%s: Остаток мед. депозита", + L"%s: Мед. депозит удержан", + L"%s: оплата услуг.", // %s is the name of the npc being paid + L"%s берёт наличные.", // transfer funds to a merc + L"%s: переводит деньги.", // transfer funds from a merc + L"%s: найм ополчения.", // initial cost to equip a town's militia + L"%s продал вам вещи.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string. + L"%s кладёт наличные на счет.", + L"Снаряжение продано населению", + L"Оснащение персонала", // HEADROCK HAM 3.6 //Facility Use + L"Содержание ополчения", // HEADROCK HAM 3.6 //Militia upkeep + L"Выкуп за освобожденных заключенных", // Flugente: prisoner system + L"ВОЗ, подписка", // Flugente: disease + L"Оплата услуг Цербер", // Flugente: PMC + L"Стоимость ремонта базы ПВО", // Flugente: SAM repair + L"Trained workers", // Flugente: train workers // TODO.Translate + L"Drill militia in %s", // Flugente: drill militia // TODO.Translate + L"Mini event", // rftr: mini events // TODO: translate + L"Funds transferred from rebel command", // rftr: rebel command + L"Funds transferred to rebel command", // rftr: rebel command + L"Bounty payout", // rftr: rebel command soldier bounties +}; + +STR16 pTransactionAlternateText[] = +{ + L"Страховка для", // insurance for a merc + L"%s: контракт продлен на 1 день.", // entend mercs contract by a day + L"%s: контракт продлен на 7 дней.", + L"%s: контракт продлен на 14 дней.", +}; + +// helicopter pilot payment + +STR16 pSkyriderText[] = +{ + L"Небесному Всаднику заплачено $%d", // skyrider was paid an amount of money + L"Вы все еще должны Небесному Всаднику $%d.", // skyrider is still owed an amount of money + L"Небесный Всадник завершил заправку.", // skyrider has finished refueling + L"",//unused + L"",//unused + L"Небесный Всадник готов к полету.", // Skyrider was grounded but has been freed + L"У Небесного Всадника нет пассажиров. Если вы хотите переправить бойцов в этот сектор, посадите их в вертолёт (приказ \"Транспорт/Вертолёт\")." +}; + + +// strings for different levels of merc morale + +STR16 pMoralStrings[] = +{ + L"Отлично", + L"Хорошо", + L"Норма", + L"Низкая", + L"Паника", + L"Ужас", +}; + +// Mercs equipment has now arrived and is now available in Omerta or Drassen. + +STR16 pLeftEquipmentString[] = +{ + L"%s оставляет свою экипировку в Омерте (A9).", + L"%s оставляет свою экипировку в Драссене (B13).", +}; + +// Status that appears on the Map Screen + +STR16 pMapScreenStatusStrings[] = +{ + L"Здоровье", + L"Энергия", + L"Боевой дух", + L"Состояние", // the condition of the current vehicle (its "health") + L"Бензин", // the fuel level of the current vehicle (its "energy") + L"Яд", // for display of poisoning + L"Вода", // drink level + L"Пища", // food level +}; + + +STR16 pMapScreenPrevNextCharButtonHelpText[] = +{ + L"Предыдущий боец\n(|С|т|р|е|л|к|а |В|л|е|в|о)", // previous merc in the list + L"Следующий боец\n(|С|т|р|е|л|к|а |В|п|р|а|в|о)", // next merc in the list +}; + + +STR16 pEtaString[] = +{ + L"РВП:", // eta is an acronym for Estimated Time of Arrival +}; + +STR16 pTrashItemText[] = +{ + L"Вы больше никогда не увидите этот предмет. Уверены?", // do you want to continue and lose the item forever + L"Этот предмет кажется ОЧЕНЬ важным. Вы ДЕЙСТВИТЕЛЬНО хотите выбросить его?", // does the user REALLY want to trash this item +}; + + +STR16 pMapErrorString[] = +{ + L"Отряд не может выйти на марш, когда один из наёмников спит.", + +//1-5 + L"Сначала выведите отряд на поверхность.", + L"Выйти на марш? Да тут же враги повсюду!", + L"Чтобы выйти на марш, наёмники должны быть назначены в отряд или посажены в машину.", + L"У вас еще нет ни одного бойца.", // you have no members, can't do anything + L"наёмник не может выполнить.", // merc can't comply with your order +//6-10 + L"нуждается в сопровождении, чтобы идти. Назначьте его с кем-нибудь в отряд.", // merc can't move unescorted .. for a male + L"нуждается в сопровождении, чтобы идти. Назначьте ее с кем-нибудь в отряд.", // for a female + L"Наёмник ещё не прибыл в %s!", + L"Кажется, сначала надо уладить проблемы с контрактом.", + L"Бежать от самолета? Только после вас!", +//11-15 + L"Выступить на марш? Да у нас тут бой идет!", + L"Вы попали в засаду кошек-убийц в секторе %s!", + L"Вы только что вошли в сектор %s... И наткнулись на логово кошек-убийц!", + L"", + L"База ПВО в %s была захвачена.", +//16-20 + L"Шахта в %s была захвачена врагом. Ваш дневной доход сократился до %s в день.", + L"Враг занял без сопротивления сектор %s.", + L"Как минимум один из ваших бойцов не может выполнить этот приказ.", + L"%s не может присоединиться к %s - нет места.", + L"%s не может присоединиться к %s - слишком большое расстояние.", +//21-25 + L"Шахта в %s была захвачена войсками Дейдраны!", + L"Войска Дейдраны только что вторглись на базу ПВО в %s.", + L"Войска Дейдраны только что вторглись в %s.", + L"Войска Дейдраны были замечены в %s.", + L"Войска Дейдраны только что захватили %s.", +//26-30 + L"Как минимум один из ваших бойцов не хочет спать.", + L"Как минимум один из ваших бойцов не может проснуться.", + L"Ополченцы не появятся, пока не завершат тренировку.", + L"%s сейчас не в состоянии принять приказ о перемещении.", + L"Ополченцы вне границ города не могут перейти в другой сектор.", +//31-35 + L"Вы не можете держать ополченцев в %s.", + L"Пустая машина не может двигаться!", + L"%s из-за тяжелых ранений не может идти!", + L"Сначала вам нужно покинуть музей!", + L"%s мертв(а)!", +//36-40 + L"%s не может переключиться на %s, так как находится в движении.", + L"%s не может сесть в машину с этой стороны.", + L"%s не может вступить в %s", + L"Вы не можете включить сжатие времени, пока не наймете новых бойцов!", + L"Эта машина может двигаться только по дорогам!", +//41-45 + L"Вы не можете переназначить наёмников на марше.", + L"У машины закончился бензин!", + L"%s еле волочит ноги и идти не может.", + L"Ни один из пассажиров не в состоянии вести машину.", + L"Один или несколько наёмников из этого отряда не могут сейчас двигаться.", +//46-50 + L"Один или несколько наёмников не могут сейчас двигаться.", + L"Машина сильно повреждена!", + L"Внимание! Тренировать ополченцев в одном секторе могут не более двух наёмников.", + L"Роботом обязательно нужно управлять. Назначьте наёмника с пультом и робота в один отряд.", + L"Невозможно переместить вещи в %s, непонятно куда складывать. Зайдите в сектор, чтобы исправить.", +// 51-55 + L"%d items moved from %s to %s", +}; + + +// help text used during strategic route plotting +STR16 pMapPlotStrings[] = +{ + L"Ещё раз щелкните по точке назначения, чтобы подтвердить путь, или щелкните по другому сектору, чтобы установить больше путевых точек.", + L"Путь движения подтверждён.", + L"Точка назначения не изменена.", + L"Путь движения отменён.", + L"Путь сокращен.", +}; + + +// help text used when moving the merc arrival sector +STR16 pBullseyeStrings[] = +{ + L"Выберите сектор, в который прибудут наёмники.", + L"Вновь прибывшие наёмники высадятся в %s.", + L"Высадить здесь наёмников нельзя. Воздушное пространство небезопасно!", + L"Отменено. Сектор прибытия не изменился.", + L"Небо над %s более не безопасно! Место высадки было перемещено в %s.", +}; + + +// help text for mouse regions + +STR16 pMiscMapScreenMouseRegionHelpText[] = +{ + L"Показать снаряжение (|В|в|о|д)", + L"Выкинуть предмет", + L"Скрыть снаряжение (|В|в|о|д)", +}; + + + +// male version of where equipment is left +STR16 pMercHeLeaveString[] = +{ + L"Должен ли %s оставить свою амуницию здесь (в %s) или позже (в %s) перед отлетом?", + L"%s скоро уходит и оставит свою амуницию в %s.", +}; + + +// female version +STR16 pMercSheLeaveString[] = +{ + L"Должна ли %s оставить свою амуницию здесь (в %s) или позже (в %s) перед отлетом?", + L"%s скоро уходит и оставит свою амуницию в %s.", +}; + + +STR16 pMercContractOverStrings[] = +{ + L"отправляется домой, так как время его контракта истекло.", // merc's contract is over and has departed + L"отправляется домой, так как время её контракта истекло.", // merc's contract is over and has departed + L"уходит, так как его контракт был прерван.", // merc's contract has been terminated + L"уходит, так как ее контракт был прерван.", // merc's contract has been terminated + L"Вы должны M.E.R.C. слишком много денег, так что %s уходит.", // Your M.E.R.C. account is invalid so merc left +}; + +// Text used on IMP Web Pages + +// WDS: Allow flexible numbers of IMPs of each sex +// note: I only updated the English text to remove "three" below +STR16 pImpPopUpStrings[] = +{ + L"Неверный код доступа.", + L"Это приведет к потере уже полученных результатов тестирования. Вы уверены?", + L"Введите правильное имя и укажите пол.", + L"Предварительный анализ вашего счета показывает, что вы не можете позволить себе пройти тестирование.", + L"Сейчас вы не можете выбрать этот пункт.", + L"Чтобы закончить анализ, нужно иметь место еще хотя бы для одного члена команды.", + L"Профиль уже создан.", + L"Не могу загрузить I.M.P.-персонаж с диска.", + L"Вы достигли максимального количества I.M.P.-персонажей.", + L"У вас в команде уже есть три I.M.P.-персонажа того же пола.", + L"Вы не можете позволить себе такой I.M.P.-персонаж.", // 10 + L"Новый I.M.P.-персонаж присоединился к команде.", + L"Вы уже выбрали максимальное количество навыков.", + L"Голоса не найдены.", +}; + + +// button labels used on the IMP site + +STR16 pImpButtonText[] = +{ + L"Информация о нас", // about the IMP site + L"НАЧАТЬ", // begin profiling + L"Способности", //Skills + L"Характеристики", // personal stats/attributes section + L"Внешность", // Appearance + L"Голос: %d", // the voice selection + L"Готово", // done profiling + L"Начать сначала", // start over profiling + L"Да, я выбираю отмеченный ответ.", + L"Да", + L"Нет", + L"Готово", // finished answering questions + L"Назад", // previous question..abbreviated form + L"Дальше", // next question + L"ДА.", // yes, I am certain + L"НЕТ, Я ХОЧУ НАЧАТЬ СНОВА.", // no, I want to start over the profiling process + L"ДА", + L"НЕТ", + L"Назад", // back one page + L"Отменить", // cancel selection + L"Да, всё верно.", + L"Нет, ещё раз взгляну.", + L"Регистрация", // the IMP site registry..when name and gender is selected + L"Анализ данных", // analyzing your profile results + L"Готово", + L"Личные качества", // Character + L"Нет", +}; + +STR16 pExtraIMPStrings[] = +{ + // These texts have been also slightly changed + L"Теперь, когда формирование внешности и личных качеств завершено, укажите ваши способности.", //With your character traits chosen, it is time to select your skills. + L"Для завершения выберите свои характеристики.", //To complete the process, select your attributes. + L"Для начала подберите наиболее подходящее вам лицо, голос, телосложение и соответствующую расцветку.", //To commence actual profiling, select portrait, voice and colors. + L"Теперь, когда вы завершили формирование своей внешности, перейдём к анализу ваших личных качеств.", //Now that you have completed your appearence choice, proceed to character analysis. +}; + +STR16 pFilesTitle[] = +{ + L"Просмотр данных", +}; + +STR16 pFilesSenderList[] = +{ + L"Отчет разведки", // the recon report sent to the player. Recon is an abbreviation for reconissance + L"В розыске №1", // first intercept file .. Intercept is the title of the organization sending the file...similar in function to INTERPOL/CIA/KGB..refer to fist record in files.txt for the translated title + L"В розыске №2", // second intercept file + L"В розыске №3", // third intercept file + L"В розыске №4", // fourth intercept file + L"В розыске №5", // fifth intercept file + L"В розыске №6", // sixth intercept file +}; + +// Text having to do with the History Log + +STR16 pHistoryTitle[] = +{ + L"Журнал событий", +}; + +STR16 pHistoryHeaders[] = +{ + L"День", // the day the history event occurred + L"Стр.", // the current page in the history report we are in + L"День", // the days the history report occurs over + L"Локация", // location (in sector) the event occurred + L"Событие", // the event label +}; + +// Externalized to "TableData\History.xml" +/* +// various history events +// THESE STRINGS ARE "HISTORY LOG" STRINGS AND THEIR LENGTH IS VERY LIMITED. +// PLEASE BE MINDFUL OF THE LENGTH OF THESE STRINGS. ONE WAY TO "TEST" THIS +// IS TO TURN "CHEAT MODE" ON AND USE CONTROL-R IN THE TACTICAL SCREEN, THEN +// GO INTO THE LAPTOP/HISTORY LOG AND CHECK OUT THE STRINGS. CONTROL-R INSERTS +// MANY (NOT ALL) OF THE STRINGS IN THE FOLLOWING LIST INTO THE GAME. +STR16 pHistoryStrings[] = +{ + L"", // leave this line blank + //1-5 + L"Нанят(а) %s из A.I.M.", // merc was hired from the aim site + L"Нанят(а) %s из M.E.R.C.", // merc was hired from the aim site + L"%s мертв(а).", // merc was killed + L"Оплачены услуги M.E.R.C.", // paid outstanding bills at MERC + L"Принято задание от Энрико Чивалдори", + //6-10 + L"Воспользовались услугами I.M.P.", + L"Оформлена страховка для %s.", // insurance contract purchased + L"%s: cтраховой контракт аннулирован.", // insurance contract canceled + L"Выплата страховки %s.", // insurance claim payout for merc + L"%s: контракт продлен на 1 день.", // Extented "mercs name"'s for a day + //11-15 + L"%s: контракт продлен на 7 дней.", // Extented "mercs name"'s for a week + L"%s: контракт продлен на 14 дней.", // Extented "mercs name"'s 2 weeks + L"Вы уволили %s.", // "merc's name" was dismissed. + L"%s уходит от вас.", // "merc's name" quit. + L"получено задание.", // a particular quest started + //16-20 + L"задание выполнено.", + L"Поговорили со старшим горняком города %s", // talked to head miner of town + L"%s освобожден(а).", + L"Включен режим чит-кодов", + L"Провизия будет доставлена в Омерту завтра.", + //21-25 + L"%s ушла, чтобы выйти замуж за Дерила Хика.", + L"Истек контракт у %s.", + L"Нанят(а) %s.", + L"Энрико сетует на отсутствие успехов в кампании.", + L"Победа в сражении!", + //26-30 + L"В шахте %s иссякает запас руды.", + L"Шахта %s истощилась.", + L"Шахта %s закрыта.", + L"Шахта %s снова работает.", + L"Получена информация о тюрьме Тикса.", + //31-35 + L"Узнали об Орте - секретном военном заводе.", + L"Ученый из Орты подарил вам ракетные винтовки.", + L"Королева Дейдрана нашла применение трупам.", + L"Фрэнк говорил что-то о боях в Сан-Моне.", + L"Пациенту кажется, что он что-то видел в шахтах.", + //36-40 + L"Встретили Девина - торговца взрывчаткой.", + L"Пересеклись с бывшим наёмником A.I.M., Майком!", + L"Встретили Тони, торговца оружием.", + L"Получена ракетная винтовка от сержанта Кротта.", + L"Документы на магазин Энжела переданы Кайлу.", + //41-45 + L"Шиз предлагает построить робота.", //может, собрать робота? + L"Болтун может сделать варево, обманывающее жуков.", + L"Кит отошел от дел.", + L"Говард поставлял цианиды Дейдране.", + L"Встретили торговца Кита из Камбрии.", + //46-50 + L"Встретили Говарда, фармацевта из Балайма.", + L"Встретили Перко. Он держит небольшую мастерскую.", + L"Встретили Сэма из Балайма. Он торгует железками.", + L"Франц разбирается в электронике и других вещах.", + L"Арнольд держит мастерскую в Граме.", + //51-55 + L"Фредо из Грама чинит электронику.", + L"Один богатей из Балайма дал вам денег.", + L"Встретили старьевщика Джейка.", + L"Один бродяга дал нам электронную карточку.", + L"Вальтер подкуплен, он откроет дверь в подвал.", + //56-60 + L"Дэйв заправит машину бесплатно, если будет бензин.", + L"Дали взятку Пабло.", + L"Босс держит деньги в шахте Сан-Моны.", + L"%s: победа в бое без правил.", + L"%s: проигрыш в бое без правил.", + //61-65 + L"%s: дисквалификация в бое без правил.", + L"В заброшенной шахте найдена куча денег.", + L"Встречен убийца, посланный Боссом.", + L"Потерян контроль над сектором", //ENEMY_INVASION_CODE + L"Отбита атака врага", + //66-70 + L"Сражение проиграно", //ENEMY_ENCOUNTER_CODE + L"Смертельная засада", //ENEMY_AMBUSH_CODE + L"Вырвались из засады", + L"Атака провалилась!", //ENTERING_ENEMY_SECTOR_CODE + L"Успешная атака!", + //71-75 + L"Атака тварей", //CREATURE_ATTACK_CODE + L"Кошки-убийцы уничтожили ваш отряд.", //BLOODCAT_AMBUSH_CODE + L"Все кошки-убийцы убиты", + L"%s был убит(а).", + L"Отдали Кармену голову террориста.", + //76-80 + L"Убийца ушёл.", + L"%s убит(а) вашим отрядом.", + L"Встретили Вальдо, авиатехника.", + L"Начат ремонт вертолета. Будет закончен через %d часов.", +}; +*/ + +STR16 pHistoryLocations[] = +{ + L"Н/Д", // N/A is an acronym for Not Applicable +}; + +// icon text strings that appear on the laptop + +STR16 pLaptopIcons[] = +{ + L"Почта", + L"Сайты", + L"Финансы", + L"Команда", + L"Журнал", + L"Данные", + L"Выключить", + L"sir-FER 4.0", // our play on the company name (Sirtech) and web surFER +}; + +// bookmarks for different websites +// IMPORTANT make sure you move down the Cancel string as bookmarks are being added + +STR16 pBookMarkStrings[] = +{ + L"A.I.M.", + L"Бобби Рэй", + L"I.M.P.", + L"M.E.R.C.", + L"Похороны", + L"Цветы", + L"Страховка", + L"Отмена", + L"Энциклопедия", + L"Брифинг-зал", + L"Пресс-служба", + L"БоЛТиК", + L"ВОЗ", + L"Цербер", + L"Ополчение", + L"R.I.S.", + L"Factories", // TODO.Translate +}; + +STR16 pBookmarkTitle[] = +{ + L"Закладки", + L"Позже это меню можно вызвать правым щелчком мыши.", +}; + +// When loading or download a web page + +STR16 pDownloadString[] = +{ + L"Загрузка", + L"Обновление", +}; + +//This is the text used on the bank machines, here called ATMs for Automatic Teller Machine + +STR16 gsAtmSideButtonText[] = +{ + L"OK", + L"Взять", // take money from merc + L"Дать", // give money to merc + L"Отмена", // cancel transaction + L"Очист.", // clear amount being displayed on the screen +}; + +STR16 gsAtmStartButtonText[] = +{ + L"Параметры", // view stats of the merc + L"Отношения", + L"Контракт", + L"Снаряжение", // view the inventory of the merc +}; + +STR16 sATMText[ ]= +{ + L"Перевести средства?", // transfer funds to merc? + L"Уверены?", // are we certain? + L"Ввести сумму", // enter the amount you want to transfer to merc + L"Выбрать тип", // select the type of transfer to merc + L"Не хватает денег", // not enough money to transfer to merc + L"Сумма должна быть кратна $10", // transfer amount must be a multiple of $10 +}; + +// Web error messages. Please use foreign language equivilant for these messages. +// DNS is the acronym for Domain Name Server +// URL is the acronym for Uniform Resource Locator + +STR16 pErrorStrings[] = +{ + L"Ошибка", + L"Сервер не имеет записи DNS.", + L"Проверьте адрес и попробуйте ещё раз.", + L"OK", //Превышено время ожидания ответа сервера. + L"Обрыв соединения с сервером.", +}; + + +STR16 pPersonnelString[] = +{ + L"Бойцов:", // mercs we have +}; + + +STR16 pWebTitle[ ]= +{ + L"sir-FER 4.0", // our name for the version of the browser, play on company name +}; + + +// The titles for the web program title bar, for each page loaded + +STR16 pWebPagesTitles[] = +{ + L"A.I.M.", + L"A.I.M. Состав", + L"A.I.M. Портреты", // a mug shot is another name for a portrait + L"A.I.M. Сортировка", + L"A.I.M.", + L"A.I.M. Галерея", + L"A.I.M. Правила", + L"A.I.M. История", + L"A.I.M. Ссылки", + L"M.E.R.C.", + L"M.E.R.C. Счета", + L"M.E.R.C. Регистрация", + L"M.E.R.C. Оглавление", + L"Бобби Рэй", + L"Бобби Рэй - оружие", + L"Бобби Рэй - боеприпасы", + L"Бобби Рэй - броня", + L"Бобби Рэй - разное", //misc is an abbreviation for miscellaneous + L"Бобби Рэй - вещи б/у.", + L"Бобби Рэй - почтовый заказ", + L"I.M.P.", + L"I.M.P.", + L"\"Цветы по всему миру\"", + L"\"Цветы по всему миру\" - галерея", + L"\"Цветы по всему миру\" - бланк заказа", + L"\"Цветы по всему миру\" - открытки", + L"Страховые агенты: Малеус, Инкус и Стэйпс", + L"Информация", + L"Контракт", + L"Комментарии", + L"Похоронная служба Макгилликатти", + L"", + L"Адрес не найден.", + L"%s Пресс-служба - Сводка по конфликту", + L"%s Пресс-служба - Боевые отчеты", + L"%s Пресс-служба - Последние новости", + L"%s Пресс-служба - О нас", + L"\"Бойцы Любят Тебя или Клянут\" О нас", + L"\"Бойцы Любят Тебя или Клянут\" Анализ команды", + L"\"Бойцы Любят Тебя или Клянут\" Парные сравнения", + L"\"Бойцы Любят Тебя или Клянут\" Комментарии", + L"ВОЗ", + L"ВОЗ - Заболевания в Арулько", + L"ВОЗ - Полезно знать", + L"Цербер", + L"Цербер - Найм команды", + L"Цербер - Индивидуальные контракты", + L"Militia Overview", // TODO.Translate + L"Recon Intelligence Services - Information Requests", // TODO.Translate + L"Recon Intelligence Services - Information Verification", + L"Recon Intelligence Services - About us", + L"Factory Overview", // TODO.Translate + L"Бобби Рэй - последние поступления", + L"Энциклопедия", + L"Энциклопедия - данные", + L"Брифинг-зал", + L"Брифинг-зал - данные", +}; + +STR16 pShowBookmarkString[] = +{ + L"Подсказка", + L"Щёлкните ещё раз по кнопке \"Сайты\" для открытия списка.", +}; + +STR16 pLaptopTitles[] = +{ + L"Почтовый ящик", + L"Просмотр данных", + L"Персонал", + L"Финансовый отчет", + L"Журнал", +}; + +STR16 pPersonnelDepartedStateStrings[] = +{ + //reasons why a merc has left. + L"Погиб в бою", + L"Уволен", + L"Другое", + L"Вышла замуж", + L"Контракт истёк", + L"Выход", +}; +// personnel strings appearing in the Personnel Manager on the laptop + +STR16 pPersonelTeamStrings[] = +{ + L"В команде", + L"Выбывшие", + L"Гонорар за день:", + L"Наибольший гонорар:", + L"Наименьший гонорар:", + L"Погибло в боях:", + L"Уволено:", + L"Другое:", +}; + + +STR16 pPersonnelCurrentTeamStatsStrings[] = +{ + L"Худший", + L"Среднее", + L"Лучший", +}; + + +STR16 pPersonnelTeamStatsStrings[] = +{ + L"ЗДР", + L"ПРВ", + L"ЛОВ", + L"СИЛ", + L"ЛИД", + L"ИНТ", + L"ОПТ", + L"МЕТ", + L"МЕХ", + L"ВЗР", + L"МЕД", +}; + + +// horizontal and vertical indices on the map screen + +STR16 pMapVertIndex[] = +{ + L"X", + L"A", + L"B", + L"C", + L"D", + L"E", + L"F", + L"G", + L"H", + L"I", + L"J", + L"K", + L"L", + L"M", + L"N", + L"O", + L"P", +}; + +STR16 pMapHortIndex[] = +{ + L"X", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"10", + L"11", + L"12", + L"13", + L"14", + L"15", + L"16", +}; + +STR16 pMapDepthIndex[] = +{ + L"", + L"-1", + L"-2", + L"-3", +}; + +// text that appears on the contract button + +STR16 pContractButtonString[] = +{ + L"Контракт", +}; + +// text that appears on the update panel buttons + +STR16 pUpdatePanelButtons[] = +{ + L"Далее", + L"Стоп", +}; + +// Text which appears when everyone on your team is incapacitated and incapable of battle + +CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ] = +{ + L"Вы потерпели поражение в этом секторе!", + L"Рептионы, не испытывая угрызений совести, пожрут всех до единого!", + L"Ваши бойцы захвачены в плен (некоторые без сознания)!", + L"Ваши бойцы захвачены в плен.", +}; + + +//Insurance Contract.c +//The text on the buttons at the bottom of the screen. + +STR16 InsContractText[] = +{ + L"Назад", + L"Дальше", + L"Да", + L"Очистить", +}; + + + +//Insurance Info +// Text on the buttons on the bottom of the screen + +STR16 InsInfoText[] = +{ + L"Назад", + L"Дальше", +}; + + + +//For use at the M.E.R.C. web site. Text relating to the player's account with MERC + +STR16 MercAccountText[] = +{ + // Text on the buttons on the bottom of the screen + L"Внести сумму", + L"В начало", + L"Номер счета:", + L"Наёмник", + L"Дней", + L"Ставка", + L"Стоимость", + L"Всего:", + L"Вы подтверждаете платеж в размере %s?", //the %s is a string that contains the dollar amount ( ex. "$150" ) + L"%s (+снаряжение)", +}; + +// Merc Account Page buttons +STR16 MercAccountPageText[] = +{ + // Text on the buttons on the bottom of the screen + L"Назад", + L"Дальше", +}; + + +//For use at the M.E.R.C. web site. Text relating a MERC mercenary + + +STR16 MercInfo[] = +{ + L"Здоровье", + L"Проворность", + L"Ловкость", + L"Сила", + L"Лидерство", + L"Интеллект", + L"Уровень опыта", + L"Меткость", + L"Механика", + L"Взрывчатка", + L"Медицина", + + L"Назад", + L"Нанять", + L"Дальше", + L"Дополнительная информация", + L"В начало", + L"Нанят", + L"Оплата", + L"в день", + L"Снаряж.:", + L"Всего:", + L"Погиб", + + L"У вас уже полная команда из наёмников.", + L"Со снаряжением?", + L"Недоступно", + L"Неоплаченные счета", + L"Информация", + L"Снаряжение", + L"Special Offer!", +}; + + + +// For use at the M.E.R.C. web site. Text relating to opening an account with MERC + +STR16 MercNoAccountText[] = +{ + //Text on the buttons at the bottom of the screen + L"Открыть счет", + L"Отмена", + L"Вы ещё не зарегистрировались. Желаете открыть счёт?", +}; + + + +// For use at the M.E.R.C. web site. MERC Homepage + +STR16 MercHomePageText[] = +{ + //Description of various parts on the MERC page + L"Спек Т. Кляйн, основатель и хозяин", + L"Открыть счёт", + L"Просмотр счёта", + L"Просмотр файлов", + // The version number on the video conferencing system that pops up when Speck is talking + L"Speck Com v3.2", + L"Денежный перевод не состоялся. Недостаточно средств на счету.", +}; + +// For use at MiGillicutty's Web Page. + +STR16 sFuneralString[] = +{ + L"Похоронное агентство Макгилликатти: скорбим вместе с семьями усопших с 1983 г.", + L"Директор по похоронам и бывший наёмник A.I.M. - Мюррей Макгилликатти \"Папаша\", специалист по части похорон.", + L"Всю жизнь Папашу сопровождали смерть и утраты, поэтому он, как никто, познал их тяжесть.", + L"Похоронное агентство Макгилликатти предлагает широкий спектр ритуальных услуг - от жилетки, в которую можно поплакать, до восстановления сильно поврежденных останков.", + L"Похоронное агентство Макгилликатти поможет вам и вашим родственникам покоиться с миром.", + + // Text for the various links available at the bottom of the page + L"ДОСТАВКА ЦВЕТОВ", + L"КОЛЛЕКЦИЯ УРН И ГРОБОВ", + L"УСЛУГИ ПО КРЕМАЦИИ", + L"ПОМОЩЬ В ПРОВЕДЕНИИ ПОХОРОН", + L"ПОХОРОННЫЕ РИТУАЛЫ", + + // The text that comes up when you click on any of the links ( except for send flowers ). + L"К сожалению, наш сайт не закончен, в связи с утратой в семье. Мы постараемся продолжить работу после прочтения завещания и выплат долгов умершего. Сайт вскоре откроется.", + L"Мы искренне сочувствуем вам в это трудное время. Заходите ещё.", +}; + +// Text for the florist Home page + +STR16 sFloristText[] = +{ + //Text on the button on the bottom of the page + + L"Галерея", + + //Address of United Florist + + L"\"Мы сбросим ваш букет где угодно!\"", + L"1-555-SCENT-ME", + L"333 NoseGay Dr,Seedy City, CA USA 90210", + L"http://www.scent-me.com", + + // detail of the florist page + + L"Мы работаем быстро и эффективно!", + L"Гарантируем доставку на следующий день практически в любой уголок мира. Есть некоторые ограничения.", + L"Гарантируем самые низкие цены в мире!", + L"Покажите нам рекламу более дешевого сервиса и получите 10 бесплатных роз.", + L"\"Крылатая Флора\", занимаемся фауной и цветами с 1981 г.", + L"Наши летчики, бывшие пилоты бомбардировщиков, сбросят ваш букет в радиусе 10 миль от заданного района. Когда угодно и сколько угодно!", + L"Позвольте нам удовлетворить ваши цветочные фантазии.", + L"Пусть Брюс, известный во всем мире садовник, сам соберет вам отличный букет в нашем саду.", + L"И запомните, если у нас нет таких цветов, мы быстро вырастим то, что вам надо!", +}; + + + +//Florist OrderForm + +STR16 sOrderFormText[] = +{ + //Text on the buttons + + L"Назад", + L"Послать", + L"Отмена", + L"Галерея", + + L"Название букета:", + L"Цена:", + L"Номер заказа:", + L"Доставить", + L"Завтра", + L"Как будете в тех краях", + L"Место доставки", + L"Дополнительно", + L"Сломать цветы ($10)", + L"Черные розы ($20)", + L"Увядший букет ($10)", + L"Фруктовый пирог (если есть) ($10)", + L"Текст поздравления:", + L"Ввиду небольшого размера открытки, постарайтесь уложиться в 75 символов.", + L"...или выберите одну из", + + L"СТАНДАРТНЫХ ОТКРЫТОК", + L"Информация о счете", + + //The text that goes beside the area where the user can enter their name + + L"Название:", +}; + + + + +//Florist Gallery.c + +STR16 sFloristGalleryText[] = +{ + //text on the buttons + + L"Назад", //abbreviation for previous + L"Дальше", //abbreviation for next + + L"Выберите букет, которые хотите послать.", + L"Примечание: Если Вам нужно послать увядший или сломанный букет - заплатите еще $10.", + + //text on the button + + L"В начало", +}; + +//Florist Cards + +STR16 sFloristCards[] = +{ + L"Выберите текст, который будет напечатан на открытке.", + L"Назад", +}; + + + +// Text for Bobby Ray's Mail Order Site + +STR16 BobbyROrderFormText[] = +{ + L"Бланк заказа", //Title of the page + L"Штк", // The number of items ordered + L"Вес (%s)", // The weight of the item + L"Название", // The name of the item + L"цена 1 вещи", // the item's weight + L"Итого", // The total price of all of items of the same type + L"Стоимость", // The sub total of all the item totals added + L"ДиУ (см. Место Доставки)", // S&H is an acronym for Shipping and Handling + L"Всего", // The grand total of all item totals + the shipping and handling + L"Место доставки", + L"Скорость доставки", // See below + L"Цена (за %s.)", // The cost to ship the items + L"Экспресс-доставка", // Gets deliverd the next day + L"2 рабочих дня", // Gets delivered in 2 days + L"Обычная доставка", // Gets delivered in 3 days + L"ОЧИСТИТЬ",//15 // Clears the order page + L"ЗАКАЗАТЬ", // Accept the order + L"Назад", // text on the button that returns to the previous page + L"В начало", // Text on the button that returns to the home page + L"* - вещи, бывшие в употреблении", // Disclaimer stating that the item is used + L"Вы не можете это оплатить.", //20 // A popup message that to warn of not enough money + L"<НЕ ВЫБРАНО>", // Gets displayed when there is no valid city selected + L"Вы действительно хотите отправить груз в %s?", // A popup that asks if the city selected is the correct one + L"Вес груза**", // Displays the weight of the package + L"** Мин. вес", // Disclaimer states that there is a minimum weight for the package + L"Заказы", +}; + +STR16 BobbyRFilter[] = +{ + // Guns + L"Пистолеты", + L"Авт.пистол.", + L"ПП", + L"Винтовки", + L"Сн.винтовки", + L"Автоматы", + L"Пулемёты", + L"Дробовики", + L"Тяжелое", + + // Ammo + L"Пистолеты", + L"Авт.пистол.", + L"ПП", + L"Винтовки", + L"Сн.винтовки", + L"Автоматы", + L"Пулемёты", + L"Дробовики", + + // Used + L"Оружие", + L"Броня", + L"Разгр.с-мы", + L"Разное", + + // Armour + L"Каски", + L"Жилеты", + L"Брюки", + L"Пластины", + + // Misc + L"Режущие", + L"Метательн.", + L"Дробящие", + L"Гранаты", + L"Бомбы", + L"Аптечки", + L"Наборы", + L"Головные", + L"Разгр.с-мы", + L"Прицелы", // Madd: new BR filters + L"Рукоят/ЛЦУ", + L"Дул.насад.", + L"Приклады", + L"Маг./спуск.", + L"Др. навеска", + L"Разное", +}; + + +// This text is used when on the various Bobby Ray Web site pages that sell items + +STR16 BobbyRText[] = +{ + L"Заказать", // Title + // instructions on how to order + L"Нажмите на товар. Левая кнопка - добавить, правая кнопка - уменьшить. После того как выберете товар, оформите заказ.", + + //Text on the buttons to go the various links + + L"Назад", + L"Оружие", + L"Патроны", + L"Броня", + L"Разное", //misc is an abbreviation for miscellaneous + L"Б/У", + L"Далее", + L"БЛАНК ЗАКАЗА", + L"В начало", + + //The following 2 lines are used on the Ammunition page. + //They are used for help text to display how many items the player's merc has + //that can use this type of ammo + + L"У вашей команды есть", + L"оружее, использующее этот тип боеприпасов", + + //The following lines provide information on the items + + L"Вес:", // Weight of all the items of the same type + L"Кал.:", // the caliber of the gun + L"Маг:", // number of rounds of ammo the Magazine can hold + L"Дист:", // The range of the gun + L"Урон:", // Damage of the weapon + L"Скор:", // Weapon's Rate Of Fire, acronym ROF + L"ОД:", // Weapon's Action Points, acronym AP + L"Оглушение:", // Weapon's Stun Damage + L"Броня:", // Armour's Protection + L"Камуф.:", // Armour's Camouflage + L"Armor Pen:", // Ammo's Armour Piercing modifier (see AmmoTypes.xml - armourImpactReduction) + L"Dmg Mod:", // Ammo's Bullet Tumble modifier (see AmmoTypes.xml - afterArmourDamage) + L"Projectiles:", // Ammo's bullet count (for buckshot) (see AmmoTypes.xml - numberOfBullets) + L"Цена:", // Cost of the item + L"Склад:", // The number of items still in the store's inventory + L"Штук в заказе:", // The number of items on order + L"Урон:", // If the item is damaged + L"Вес:", // the Weight of the item + L"Итого:", // The total cost of all items on order + L"* %% до износа", // if the item is damaged, displays the percent function of the item + + //Popup that tells the player that they can only order 10 items at a time + + L"Чёрт! В эту форму можно внести не более " ,//First part + L" позиций для одного заказа. Если хотите заказать больше (а мы надеемся, вы хотите), то заполните еще один заказ и примите наши извинения за неудобства.", + + // A popup that tells the user that they are trying to order more items then the store has in stock + + L"Извините, но данного товара нет на складе. Попробуйте заглянуть позже.", + + //A popup that tells the user that the store is temporarily sold out + + L"Извините, но данного товара пока нет на складе.", + +}; + + +// Text for Bobby Ray's Home Page + +STR16 BobbyRaysFrontText[] = +{ + //Details on the web site + + L"Здесь вы найдете лучшие и новейшие образцы оружия", + L"Мы снабдим вас всем, что нужно для победы над противником", + L"ВЕЩИ Б/У", + + //Text for the various links to the sub pages + + L"РАЗНОЕ", + L"ОРУЖИЕ", + L"БОЕПРИПАСЫ", + L"БРОНЯ", + + //Details on the web site + + L"Если у нас чего-то нет, то этого нет нигде!", + L"В разработке", +}; + + + +// Text for the AIM page. +// This is the text used when the user selects the way to sort the aim mercanaries on the AIM mug shot page + +STR16 AimSortText[] = +{ + L"A.I.M. Состав", // Title + // Title for the way to sort + L"Сортировка:", + + // sort by... + + L"Цена", + L"Опыт", + L"Меткость", + L"Механика", + L"Взрывчатка", + L"Медицина", + L"Здоровье", + L"Проворность", + L"Ловкость", + L"Сила", + L"Лидерство", + L"Интеллект", + L"Имя", + + //Text of the links to other AIM pages + + L"Фотографии наёмников", + L"Информация о наёмниках", + L"Архив A.I.M.", + + // text to display how the entries will be sorted + + L"По возрастанию", + L"По убыванию", +}; + + +//Aim Policies.c +//The page in which the AIM policies and regulations are displayed + +STR16 AimPolicyText[] = +{ + // The text on the buttons at the bottom of the page + + L"Назад", + L"В начало", + L"Оглавление", + L"Дальше", + L"Не согласен", + L"Согласен", +}; + + + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +// Instructions to the user to either start video conferencing with the merc, or to go the mug shot index + +STR16 AimMemberText[] = +{ + L"Левый щелчок", + L"связаться с бойцом.", + L"Правый щелчок - ", + L"фотографии бойцов.", +}; + +//Aim Member.c +//The page in which the players hires AIM mercenaries + +STR16 CharacterInfo[] = +{ + // The various attributes of the merc + + L"Здоровье", + L"Проворность", + L"Ловкость", + L"Сила", + L"Лидерство", + L"Интеллект", + L"Уровень опыта", + L"Меткость", + L"Механика", + L"Взрывчатка", + L"Медицина", + + // the contract expenses' area + + L"Гонорар", + L"Срок", + L"1 день", + L"7 дней", + L"14 дней", + + // text for the buttons that either go to the previous merc, + // start talking to the merc, or go to the next merc + + L"<<", + L"Связаться", + L">>", + + L"Дополнительная информация", // Title for the additional info for the merc's bio + L"Действующий состав", // Title of the page + L"Снаряжение:", // Displays the optional gear cost + L"Снаряж.", //"gear", //tais: Displays the optional gear cost in nsgi, this moved and can have only a small room, so just make it "gear" without extra's + L"Стоимость мед. депозита", // If the merc required a medical deposit, this is displayed + L"Набор 1", // Text on Starting Gear Selection Button 1 + L"Набор 2", // Text on Starting Gear Selection Button 2 + L"Набор 3", // Text on Starting Gear Selection Button 3 + L"Набор 4", // Text on Starting Gear Selection Button 4 + L"Набор 5", // Text on Starting Gear Selection Button 5 + L"Mission Fee", // For UB fixed price contracts +}; + + +//Aim Member.c +//The page in which the player's hires AIM mercenaries + +//The following text is used with the video conference popup + +STR16 VideoConfercingText[] = +{ + L"Сумма контракта:", //Title beside the cost of hiring the merc + + //Text on the buttons to select the length of time the merc can be hired + + L"1 день", + L"7 дней", + L"14 дней", + + //Text on the buttons to determine if you want the merc to come with the equipment + + L"Без снаряжения", + L"Со снаряжением", + + // Text on the Buttons + + L"ОПЛАТИТЬ", // to actually hire the merc + L"ОТМЕНА", // go back to the previous menu + L"НАНЯТЬ", // go to menu in which you can hire the merc + L"ОТБОЙ", // stops talking with the merc + L"ЗАКРЫТЬ", + L"СООБЩЕНИЕ", // if the merc is not there, you can leave a message + + //Text on the top of the video conference popup + + L"Видеоконференция с", + L"Подключение. . .", + + L"+ страховка" // Displays if you are hiring the merc with the medical deposit +}; + + + +//Aim Member.c +//The page in which the player hires AIM mercenaries + +// The text that pops up when you select the TRANSFER FUNDS button + +STR16 AimPopUpText[] = +{ + L"ПРОИЗВЕДЕН ЭЛЕКТРОННЫЙ ПЛАТЕЖ", // You hired the merc + L"НЕЛЬЗЯ ПЕРЕВЕСТИ СРЕДСТВА", // Player doesn't have enough money, message 1 + L"НЕ ХВАТАЕТ СРЕДСТВ", // Player doesn't have enough money, message 2 + + // if the merc is not available, one of the following is displayed over the merc's face + + L"На задании", + L"Пожалуйста, оставьте сообщение", + L"Скончался", + + //If you try to hire more mercs than game can support + + L"У вас уже полная команда из наёмников.", + + L"Автоответчик", + L"Сообщение оставлено на автоответчике", +}; + + +//AIM Link.c + +STR16 AimLinkText[] = +{ + L"A.I.M. Ссылки", //The title of the AIM links page +}; + + + +//Aim History + +// This page displays the history of AIM + +STR16 AimHistoryText[] = +{ + L"A.I.M. История", //Title + + // Text on the buttons at the bottom of the page + + L"Назад", + L"В начало", + L"A.I.M. Галерея", + L"Дальше", +}; + + +//Aim Mug Shot Index + +//The page in which all the AIM members' portraits are displayed in the order selected by the AIM sort page. + +STR16 AimFiText[] = +{ + // displays the way in which the mercs were sorted + + L"Цена", + L"Опыт", + L"Меткость", + L"Механика", + L"Взрывчатка", + L"Медицина", + L"Здоровье", + L"Проворность", + L"Ловкость", + L"Сила", + L"Лидерство", + L"Интеллект", + L"Имя", + + // The title of the page, the above text gets added at the end of this text + + L"Состав A.I.M. По возрастанию, критерий - %s", + L"Состав A.I.M. По убыванию, критерий - %s", + + // Instructions to the players on what to do + + L"Левый щелчок", + L"Выбрать наёмника", + L"Правый щелчок", + L"Критерий сортировки", + + // Gets displayed on top of the merc's portrait if they are... + + L"Выбыл", + L"Скончался", + L"На задании", +}; + + + +//AimArchives. +// The page that displays information about the older AIM alumni merc... mercs who are no longer with AIM + +STR16 AimAlumniText[] = +{ + // Text of the buttons + + L"СТР. 1", + L"СТР. 2", + L"СТР. 3", + + L"A.I.M. Галерея", // Title of the page + + L"ОК", // Stops displaying information on selected merc + L"След. стр.", +}; + + + + + + +//AIM Home Page + +STR16 AimScreenText[] = +{ + // AIM disclaimers + + L"A.I.M. и логотип A.I.M. - зарегистрированные во многих странах торговые марки.", + L"Так что и не думай подражать нам.", + L"(с) 1998-1999 A.I.M., Ltd. Все права защищены.", + + //Text for an advertisement that gets displayed on the AIM page + + L"\"Цветы по всему миру\"", + L"\"Мы сбросим ваш букет где угодно!\"", + L"Сделай как надо", + L"...в первый раз", + L"Если у нас нет такого ствола, то он вам и не нужен.", +}; + + +//Aim Home Page + +STR16 AimBottomMenuText[] = +{ + //Text for the links at the bottom of all AIM pages + L"В начало", + L"Наёмники", + L"Архив", + L"Правила", + L"Информация", + L"Ссылки", +}; + + + +//ShopKeeper Interface +// The shopkeeper interface is displayed when the merc wants to interact with +// the various store clerks scattered through out the game. + +STR16 SKI_Text[ ] = +{ + L"ИМЕЮЩИЕСЯ ТОВАРЫ", //Header for the merchandise available + L"СТР.", //The current store inventory page being displayed + L"ОБЩАЯ ЦЕНА", //The total cost of the the items in the Dealer inventory area + L"ОБЩАЯ ЦЕННОСТЬ", //The total value of items player wishes to sell + L"ОЦЕНКА", //Button text for dealer to evaluate items the player wants to sell + L"ПЕРЕВОД", //Button text which completes the deal. Makes the transaction. + L"УЙТИ", //Text for the button which will leave the shopkeeper interface. + L"ЦЕНА РЕМОНТА", //The amount the dealer will charge to repair the merc's goods + L"1 ЧАС", // SINGULAR! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"%d ЧАСОВ", // PLURAL! The text underneath the inventory slot when an item is given to the dealer to be repaired + L"ИСПРАВНО", // Text appearing over an item that has just been repaired by a NPC repairman dealer + L"Вам уже некуда класть вещи.", //Message box that tells the user there is no more room to put there stuff + L"%d МИНУТ", // The text underneath the inventory slot when an item is given to the dealer to be repaired + L"Выбросить предмет на землю.", + L"БЮДЖЕТ", +}; + +//ShopKeeper Interface +//for the bank machine panels. Referenced here is the acronym ATM, which means Automatic Teller Machine + +STR16 SkiAtmText[] = +{ + //Text on buttons on the banking machine, displayed at the bottom of the page + L"0", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"7", + L"8", + L"9", + L"OK", // Transfer the money + L"Взять", //Take money from the player + L"Дать", //Give money to the player + L"Отмена", //Cancel the transfer + L"Очистить", //Clear the money display +}; + + +//Shopkeeper Interface +STR16 gzSkiAtmText[] = +{ + + // Text on the bank machine panel that.... + L"Выберите тип", //tells the user to select either to give or take from the merc + L"Введите сумму", //Enter the amount to transfer + L"Перевести деньги бойцу", //Giving money to the merc + L"Забрать деньги у бойца", //Taking money from the merc + L"Недостаточно средств", //Not enough money to transfer + L"Баланс", //Display the amount of money the player currently has +}; + + +STR16 SkiMessageBoxText[] = +{ + L"Желаете снять со счета %s, чтобы покрыть разницу?", + L"Недостаточно средств. Не хватает %s", + L"Желаете снять со счета %s, чтобы оплатить полную стоимость?", + L"Попросить торговца сделать перевод", + L"Попросить торговца починить выбранные предметы", + L"Закончить беседу", + L"Текущий баланс", + + L"Do you want to transfer %s Intel to cover the difference?", // TODO.Translate + L"Do you want to transfer %s Intel to cover the cost?", +}; + + +//OptionScreen.c + +STR16 zOptionsText[] = +{ + //button Text + L"Сохранить", + L"Загрузить", + L"Выход", + L">>", + L"<<", + L"Готово", + L"1.13 Features", + L"New in 1.13", + L"Options", + + //Text above the slider bars + L"Звуки", + L"Речь", + L"Музыка", + + //Confirmation pop when the user selects.. + L"Выйти из игры и вернуться в главное меню?", + + L"Необходимо выбрать или \"Речь\", или \"Субтитры\"", +}; + +STR16 z113FeaturesScreenText[] = +{ + L"1.13 FEATURE TOGGLES", + L"Changing these settings during a campaign will affect your experience.", + L"Hover over a feature to display more information. Some features may be configurable in JA2_Options.ini (or other specified file).", +}; + +STR16 z113FeaturesToggleText[] = +{ + L"Use These Overrides", + L"New Chance to Hit", + L"Enemies Drop All", + L"Enemies Drop All (Damaged)", + L"Suppression Fire", + L"Drassen Counterattack", + L"City Counterattacks", + L"Multiple Counterattacks", + L"Intel", + L"Prisoners", + L"Mines Require Workers", + L"Enemy Ambushes", + L"Enemy Assassins", + L"Enemy Roles", + L"Enemy Role: Medic", + L"Enemy Role: Officer", + L"Enemy Role: General", + L"Kerberus", + L"Mercs Need Food", + L"Disease", + L"Dynamic Opinions", + L"Dynamic Dialogue", + L"Arulco Strategic Division", + L"ASD: Helicopters", + L"Enemy Vehicles Can Move", + L"Zombies", + L"Bloodcat Raids", + L"Bandit Raids", + L"Zombie Raids", + L"Militia Volunteer Pool", + L"Tactical Militia Command", + L"Strategic Militia Command", + L"Militia Uses Sector Equipment", + L"Militia Requires Resources", + L"Enhanced Close Combat", + L"Improved Interrupt System", + L"Weapon Overheating", + L"Weather: Rain", + L"Weather: Lightning", + L"Weather: Sandstorms", + L"Weather: Snow", + L"Mini Events", + L"Arulco Rebel Command", + L"Strategic Transport Groups", +}; + +STR16 z113FeaturesHelpText[] = +{ + L"|U|s|e |T|h|e|s|e |O|v|e|r|r|i|d|e|s\n \nAllow this screen to override some feature toggles present in JA2_Options.ini.\nHover over a feature to see which flag is overridden.\nThese toggles have no effect if this option is disabled.", + L"|N|C|T|H\nOverrides [Tactical Gameplay Settings] NCTH\n \nUse the new chance to hit system.\n \nFor tweakable values, see CTHConstants.ini.", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed.\n \nNot compatible with Enemies Drop All (Damaged).", + L"|E|n|e|m|i|e|s |D|r|o|p |E|v|e|r|y|t|h|i|n|g |(|D|a|m|a|g|e|d|)\nOverrides [Tactical Difficulty Settings] DROP_ALL\n \nEnemies drop all of their gear when killed, but things that would normally not be dropped are severely damaged.\n \nNot compatible with Enemies Drop All.", + L"|S|u|p|p|r|e|s|s|i|o|n |F|i|r|e\nOverrides [Tactical Suppression Fire Settings] SUPPRESSION_EFFECTIVENESS\n \nCombatants can be affected by suppression and shock.\n \nFor configurable options, see [Tactical Suppression Fire Settings].", + L"|D|r|a|s|s|e|n |C|o|u|n|t|e|r|a|t|t|a|c|k\nOverrides [Strategic Event Settings] TRIGGER_MASSIVE_ENEMY_COUNTERATTACK_AT_DRASSEN\n \nThe Queen sends a massive counterattack to Drassen.", + L"|C|i|t|y |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send a massive counterattack to cities other than Drassen.\n \nNot compatible with Multiple Counterattacks.", + L"|M|u|l|t|i|p|l|e |C|o|u|n|t|e|r|a|t|t|a|c|k|s\nOverrides [Strategic Event Settings] AGGRESSIVE_STRATEGIC_AI\n \nThe Queen can send massive counterattacks to cities other than Drassen.\nThis can occur multiple times.\n \nThis is a harder variant of City Counterattacks.", + L"|I|n|t|e|l\nOverrides [Intel Settings] RESOURCE_INTEL\n \nA new resource gained through covert means.", + L"|P|r|i|s|o|n|e|r|s\nOverrides [Strategic Gameplay Settings] ALLOW_TAKE_PRISONERS\n \nCapture enemy soldiers and interrogate them.\n \nConfigurable Options:\nENEMY_CAN_SURRENDER\nDISPLAY_SURRENDER_VALUES\nSURRENDER_MULTIPLIER\nPRISONER_RETURN_TO_ARMY_CHANCE\nPRISONER_DEFECT_CHANCE\nPRISONER_INTEL_CHANCE\nPRISONER_RANSOM_CHANCE\nPRISONER_INTERROGATION_POINTS_ADMIN\nPRISONER_INTERROGATION_POINTS_REGULAR\nPRISONER_INTERROGATION_POINTS_ELITE\nPRISONER_INTERROGATION_POINTS_OFFICER\nPRISONER_INTERROGATION_POINTS_GENERAL\nPRISONER_INTERROGATION_POINTS_CIVILIAN", + L"|M|i|n|e|s |R|e|q|u|i|r|e |W|o|r|k|e|r|s\nOverrides [Financial Settings] MINE_REQUIRES_WORKERS\n \nMines require workers to operate.\n \nConfigurable Options:\nWORKERRATE_PRESENT_INITIALLY\nWORKER_TRAINING_COST\nWORKER_TRAINING_POINTS", + L"|E|n|e|m|y |A|m|b|u|s|h|e|s\nOverrides [Tactical Difficulty Settings] ENABLE_CHANCE_OF_ENEMY_AMBUSHES\n \nEnemy forces can ambush your mercs as they move in the strategic view.\n \nConfigurable Options:\nENEMY_AMBUSHES_CHANCE_MODIFIER\nAMBUSH_MERCS_SPREAD\nAMBUSH_MERCS_SPREAD_RADIUS\nAMBUSH_ENEMY_ENCIRCLEMENT\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS1\nAMBUSH_ENEMY_ENCIRCLEMENT_RADIUS2", + L"|E|n|e|m|y |A|s|s|a|s|s|i|n|s\nOverrides [Tactical Difficulty Settings] ENEMY_ASSASSINS\n \nAssassins can infiltrate your militia.\nRequires the new trait system.\n \nConfigurable Options:\nASSASSIN_MINIMUM_PROGRESS\nASSASSIN_MINIMUM_MILITIA\nASSASSIN_PROPABILITY_MODIFIER", + L"|E|n|e|m|y |R|o|l|e|s\nOverrides [Tactical Enemy Role Settings] ENEMYROLES\n \nSpecialists can appear in enemy groups.\n \nConfigurable Options:\nENEMYROLES_TURNSTOUNCOVER", + L"|E|n|e|m|y |R|o|l|e|: |M|e|d|i|c\nOverrides [Tactical Enemy Role Settings] ENEMY_MEDICS\n \nMedics can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_MEDICS_MEDKITDRAINFACTOR\nENEMY_MEDICS_SEARCHRADIUS\nENEMY_MEDICS_WOUND_MINAMOUNT\nENEMY_MEDICS_HEAL_SELF", + L"|E|n|e|m|y |R|o|l|e|: |O|f|f|i|c|e|r\nOverrides [Tactical Enemy Role Settings] ENEMY_OFFICERS\n \nOfficers can appear in enemy groups.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_OFFICERS_REQUIREDTEAMSIZE\nENEMY_OFFICERS_MAX\nENEMY_OFFICERS_SUPPRESSION_RESISTANCE_BONUS\nENEMY_OFFICERS_MORALE_MODIFIER\nENEMY_OFFICERS_SURRENDERSTRENGTHBONUS", + L"|E|n|e|m|y |R|o|l|e|: |G|e|n|e|r|a|l\nOverrides [Tactical Enemy Role Settings] ENEMY_GENERALS\n \nGenerals increase enemy strategic movement and decision speeds.\nRequires the Enemy Roles feature to be enabled.\n \nConfigurable Options:\nENEMY_GENERALS_NUMBER\nENEMY_GENERALS_BODYGUARDS_NUMBER\nENEMY_GENERALS_STRATEGIC_DECISION_SPEEDBONUS\nENEMY_GENERALS_STRATEGIC_MOVEMENT_SPEEDBONUS", + L"|K|e|r|b|e|r|u|s\nOverrides [PMC Settings] PMC\n \nHire militia from a private military company.\n \nConfigurable Options:\nPMC_MAX_REGULARS\nPMC_MAX_VETERANS", + L"|F|o|o|d\nOverrides [Tactical Food Settings] FOOD\n \nYour mercs require food and water to survive.\n \nConfigurable Options:\nFOOD_DIGESTION_HOURLY_BASE_FOOD\nFOOD_DIGESTION_HOURLY_BASE_DRINK\nFOOD_DIGESTION_SLEEP\nFOOD_DIGESTION_TRAVEL_VEHICLE\nFOOD_DIGESTION_TRAVEL\nFOOD_DIGESTION_ASSIGNMENT\nFOOD_DIGESTION_ONDUTY\nFOOD_DIGESTION_COMBAT\nFOOD_DECAY_IN_SECTORS\nFOOD_DECAY_MODIFICATOR\nFOOD_EATING_SOUNDS", + L"|D|i|s|e|a|s|e\nOverrides [Disease Settings] DISEASE\n \nYour mercs can catch diseases.\n \nConfigurable Options:\nDISEASE_STRATEGIC\nDISEASE_WHO_SUBSCRIPTIONCOST\nDISEASE_CONTAMINATES_ITEMS\nDISEASE_SEVERE_LIMITATIONS", + L"|D|y|n|a|m|i|c |O|p|i|n|i|o|n|s\nOverrides [Dynamic Opinion Settings] DYNAMIC_OPINIONS\n \nMercs can form dynamic opinions of each other, affecting morale.\n \nConfigurable Options:\nDYNAMIC_OPINIONS_SHOWCHANGE\nWAGE_ACCEPTANCE_FACTOR\nSee [Dynamic Opinion Modifiers Settings] in Morale_Settings.ini.", + L"|D|y|n|a|m|i|c |D|i|a|l|o|g|u|e\nOverrides [Dynamic Dialogue Settings] DYNAMIC_DIALOGUE\n \nMercs can make brief comments, changing their relationship to each other.\nRequires the Dynamic Opinions feature to be active.\n \nConfigurable Options:\nDYNAMIC_DIALOGUE_TIME_OFFSET", + L"|A|S|D\nOverrides [Strategic Additional Enemy AI Settings] ASD_ACTIVE\n \nThe Arulcan army gains mechanised forces.\n \nConfigurable Options:\nASD_COST_FUEL/JEEP/TANK/ROBOT\nASD_TIME_FUEL/JEEP/TANK/ROBOT\nASD_ASSIGNS_JEEPS/TANKS/ROBOTS\nASD_FUEL_REQUIRED_JEEP/TANK/ROBOT\nJEEP_MINIMUM_PROGRESS\nTANK_MINIMUM_PROGRESS\nROBOT_MINIMUM_PROGRESS", + L"|A|S|D |H|e|l|i|c|o|p|t|e|r|s\nOverrides [Enemy Helicopter Settings] ENEMYHELI_ACTIVE\n \nThe AI can use helicopters to deploy troops.\nRequires the Arulco Special Division feature to be enabled.\n \nConfigurable Options:\nASD_COST_HELI\nASD_TIME_HELI\nENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS\nENEMYHELI_HP\nENEMYHELI_HP_REPAIRTIME\nENEMYHELI_HP_COST\nENEMYHELI_FUEL\nENEMYHELI_FUEL_REFUELTIME", + L"|E|n|e|m|y |V|e|h|i|c|l|e|s |C|a|n |M|o|v|e\nOverrides [Tactical Gameplay Settings] ENEMY_TANKS_CAN_MOVE_IN_TACTICAL\n \nHostile jeeps and tanks can move in combat.\n \nConfigurable Options:\nALLOW_TANKS_DRIVING_OVER_PEOPLE\nTANKS_RAMMING_MAX_STRUCTURE_ARMOUR\nENEMY_JEEP_RAMMING_MAX_STRUCTURE_ARMOUR", + L"|Z|o|m|b|i|e|s\nOverrides the \"Allow Zombies\" toggle in the options menu.\n \nThe dead walk!\n \nConfigurable Options:\nZOMBIE_RISE_BEHAVIOUR\nZOMBIE_SPAWN_WAVES\nZOMBIE_RISE_WAVE_FREQUENCY\nZOMBIE_CAN_CLIMB\nZOMBIE_CAN_JUMP_WINDOWS\nZOMBIE_EXPLODING_CIVS\nZOMBIE_DAMAGE_RESISTANCE\nZOMBIE_BREATH_DAMAGE_RESISTANCE\nZOMBIE_ONLY_HEADSHOTS_WORK\nZOMBIE_DIFFICULTY_LEVEL\nZOMBIE_RISE_WITH_ARMOUR\nZOMBIE_ONLY_HEADSHOTS_PERMANENTLY_KILL", + L"|B|l|o|o|d|c|a|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BLOODCATS\n \nHungry predators stalk the night.\n \nConfigurable Options:\nRAID_MAXSIZE_BLOODCATS\nRAID_MAXATTACKSPERNIGHT_BLOODCATS", + L"|B|a|n|d|i|t |R|a|i|d|s\nOverrides [Raid Settings] RAID_BANDITS\n \nOpportunistic bandits may attack your towns.\n \nConfigurable Options:\nRAID_MAXSIZE_BANDITS\nRAID_MAXATTACKSPERNIGHT_BANDITS", + L"|Z|o|m|b|i|e |R|a|i|d|s\nOverrides [Raid Settings] RAID_ZOMBIES\n \nThe dead raid!\nRequires the Zombies feature to be enabled.\n \nConfigurable Options:\nRAID_MAXSIZE_ZOMBIES\nRAID_MAXATTACKSPERNIGHT_ZOMBIES", + L"|M|i|l|i|t|i|a |V|o|l|u|n|t|e|e|r |P|o|o|l\nOverrides [Militia Volunteer Pool Settings] MILITIA_VOLUNTEER_POOL\n \nVolunteers are required to train militia.\n \nConfigurable Options:\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_LIBERATION\nMILITIA_VOLUNTEER_POOL_MULTIPLIER_FARM\nMILITIA_VOLUNTEER_POOL_GAINFACTOR_HOURLY", + L"|T|a|c|t|i|c|a|l |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Tactical Interface Settings] ALLOW_TACTICAL_MILITIA_COMMAND\n \nIssue commands to militia in tactical view.", + L"|S|t|r|a|t|e|g|i|c |M|i|l|i|t|i|a |C|o|m|m|a|n|d\nOverrides [Militia Strategic Movement Settings] ALLOW_MILITIA_STRATEGIC_COMMAND\n \nIssue commands to militia in the strategic map.\n \nConfigurable Options:\nMILITIA_STRATEGIC_COMMAND_REQUIRES_MERC", + L"|M|i|l|i|t|i|a |U|s|e|s |S|e|c|t|o|r |E|q|u|i|p|m|e|n|t\nOverrides [Militia Equipment Settings] MILITIA_USE_SECTOR_EQUIPMENT\n \nMilitia uses gear from their current sector.\nNot compatible with the Militia Requires Resources feature.\n \nConfigurable Options:\nMILITIA_USE_SECTOR_EQUIPMENT_ARMOUR\nMILITIA_USE_SECTOR_EQUIPMENT_FACE\nMILITIA_USE_SECTOR_EQUIPMENT_MELEE\nMILITIA_USE_SECTOR_EQUIPMENT_GUN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO\nMILITIA_USE_SECTOR_EQUIPMENT_GUN_ATTACHMENTS\nMILITIA_USE_SECTOR_EQUIPMENT_GRENADE\nMILITIA_USE_SECTOR_EQUIPMENT_LAUNCHER\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MIN\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_MAX\nMILITIA_USE_SECTOR_EQUIPMENT_AMMO_OPTIMAL_MAG_COUNT\nMILITIA_USE_SECTOR_EQUIPMENT_CLASS_SPECIFIC_TABOOS", + L"|M|i|l|i|t|i|a |R|e|q|u|i|r|e|s |R|e|s|o|u|r|c|e|s\nOverrides [Militia Resource Settings] MILITIA_REQUIRE_RESOURCES\n \nMilitia require resources to be trained.\nNot compatible with the Militia Uses Sector Equipment feature.\n \nConfigurable Options:\nMILITIA_RESOURCES_PROGRESSFACTOR\nMILITIA_RESOURCES_ITEMCLASSMOD_AMMO_BULLET\nMILITIA_RESOURCES_ITEMCLASSMOD_GUN\nMILITIA_RESOURCES_ITEMCLASSMOD_ARMOUR\nMILITIA_RESOURCES_ITEMCLASSMOD_MELEE\nMILITIA_RESOURCES_ITEMCLASSMOD_BOMB\nMILITIA_RESOURCES_ITEMCLASSMOD_GRENADE\nMILITIA_RESOURCES_ITEMCLASSMOD_FACE\nMILITIA_RESOURCES_ITEMCLASSMOD_LBE\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_LOW\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_MEDIUM\nMILITIA_RESOURCES_ITEMCLASSMOD_ATTACHMENT_HIGH\nMILITIA_RESOURCES_WEAPONMOD_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_M_PISTOL\nMILITIA_RESOURCES_WEAPONMOD_SMG\nMILITIA_RESOURCES_WEAPONMOD_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_SN_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_AS_RIFLE\nMILITIA_RESOURCES_WEAPONMOD_LMG\nMILITIA_RESOURCES_WEAPONMOD_SHOTGUN", + L"|E|n|h|a|n|c|e|d |C|l|o|s|e |C|o|m|b|a|t\nOverrides [Tactical Gameplay Settings] ENHANCED_CLOSE_COMBAT_SYSTEM\n \nA general improvement to the close combat system.", + L"|I|m|p|r|o|v|e|d |I|n|t|e|r|r|u|p|t |S|y|s|t|e|m\nOverrides [Tactical Gameplay Settings] IMPROVED_INTERRUPT_SYSTEM\n \nAn overhaul of the interrupt mechanic.\n \nConfigurable Options:\nBASIC_PERCENTAGE_APS_REGISTERED\nPERCENTAGE_APS_REGISTERED_PER_EXP_LEVEL\nBASIC_REACTION_TIME_LENGTH\nALLOW_COLLECTIVE_INTERRUPTS\nALLOW_INSTANT_INTERRUPTS_ON_SPOTTING", + L"|O|v|e|r|h|e|a|t|i|n|g\nOverrides [Tactical Weapon Overheating Settings] OVERHEATING\n \nWeapons can overheat.\n \nConfigurable Options:\nOVERHEATING_DISPLAY_JAMPERCENTAGE\nOVERHEATING_DISPLAY_THERMOMETER_RED_OFFSET\nOVERHEATING_COOLDOWN_MODIFICATOR_LONELYBARREL", + L"|W|e|a|t|h|e|r|: |R|a|i|n\nOverrides [Tactical Weather Settings] ALLOW_RAIN\n \nRain can reduce visibility.\n \nConfigurable Options:\nRAIN_EVENTS_PER_DAY\nRAIN_CHANCE_PER_DAY\nRAIN_MIN_LENGTH_IN_MINUTES\nRAIN_MAX_LENGTH_IN_MINUTES\nMAX_RAIN_DROPS\nWEAPON_RELIABILITY_REDUCTION_RAIN\nBREATH_GAIN_REDUCTION_RAIN\nVISUAL_DISTANCE_DECREASE_RAIN\nHEARING_REDUCTION_RAIN", + L"|W|e|a|t|h|e|r|: |L|i|g|h|t|n|i|n|g\nOverrides [Tactical Weather Settings] ALLOW_LIGHTNING\n \nLightning may occur during rainstorms.\nRequires Weather: Rain\n \nConfigurable Options:\nMIN_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNINGS_IN_REAL_TIME_SECONDS\nMIN_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nMAX_INTERVAL_BETWEEN_LIGHTNING_AND_THUNDERCLAPS_IN_SECONDS\nDELAY_IN_SECONDS_IF_SEEN_SOMEONE_DURING_LIGHTNING_IN_TURNBASED\nCHANCE_TO_DO_LIGHTNING_BETWEEN_TURNS\nWEAPON_RELIABILITY_REDUCTION_THUNDERSTORM\nBREATH_GAIN_REDUCTION_THUNDERSTORM\nVISUAL_DISTANCE_DECREASE_THUNDERSTORM\nHEARING_REDUCTION_THUNDERSTORM", + L"|W|e|a|t|h|e|r|: |S|a|n|d|s|t|o|r|m|s\nOverrides [Tactical Weather Settings] ALLOW_SANDSTORMS\n \nSevere sandstorms make the battlefield more painful for everyone.\n \nConfigurable Options:\nSANDSTORM_EVENTS_PER_DAY\nSANDSTORM_CHANCE_PER_DAY\nSANDSTORM_MIN_LENGTH_IN_MINUTES\nSANDSTORM_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SANDSTORM\nBREATH_GAIN_REDUCTION_SANDSTORM\nVISUAL_DISTANCE_DECREASE_SANDSTORM\nHEARING_REDUCTION_SANDSTORM", + L"|W|e|a|t|h|e|r|: |S|n|o|w\nOverrides [Tactical Weather Settings] ALLOW_SNOW\n \nSnowstorms decrease visibility.\n \nConfigurable Options:\nSNOW_EVENTS_PER_DAY\nSNOW_CHANCE_PER_DAY\nSNOW_MIN_LENGTH_IN_MINUTES\nSNOW_MAX_LENGTH_IN_MINUTES\nWEAPON_RELIABILITY_REDUCTION_SNOW\nBREATH_GAIN_REDUCTION_SNOW\nVISUAL_DISTANCE_DECREASE_SNOW\nHEARING_REDUCTION_SNOW", + L"|M|i|n|i |E|v|e|n|t|s\nOverrides [Mini Events Settings] MINI_EVENTS_ENABLED\n \nRandom events can occur.\n \nConfigurable Options:\nMINI_EVENTS_MIN_HOURS_BETWEEN_EVENTS\nMINI_EVENTS_MAX_HOURS_BETWEEN_EVENTS\n \nSee MiniEvents.lua for more details.", + L"|A|R|C\nOverrides [Rebel Command Settings] REBEL_COMMAND_ENABLED\n \nCommand the rebel movement at the strategic level, and upgrade captured towns.\n \nFor tweakable values, see RebelCommand_Settings.ini.", + L"|S|t|r|a|t|e|g|i|c |T|r|a|n|s|p|o|r|t |G|r|o|u|p|s\nOverrides [Strategic Gameplay Settings] STRATEGIC_TRANSPORT_GROUPS_ENABLED\n \nTransport groups carry valuable equipment across the map.\n \nConfigurable Options:\nMAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", +}; + +STR16 z113FeaturesPanelText[] = +{ + L"Use the options here to enable some of 1.13's many features. If enabled, the toggle boxes here will take precedence over some booleans in JA2_Options.ini. If disabled, these boxes will have no effect.", + L"New Chance to Hit (NCTH) is a complete overhaul of the vanilla chance-to-hit system. Compared to the vanilla system, it takes into account more variables when determining the trajectory of a fired bullet.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped. Otherwise, regular drop chances are used.", + L"This controls whether enemies drop all of their items when they are killed. If enabled, everything is dropped, and the drop chances are used to determine whether an item is severely damaged.", + L"Suppression Fire is a way of controlling a battlefield. When under heavy fire, a character accumulates suppression, causing AP loss. In addition to AP loss, Suppression SHOCK can also be accumulated, which makes the character less useful - both Chance-to-Hit and chance to be hit are reduced. Characters can go into negative APs when under suppression fire, losing APs off their NEXT turn. Use suppression fire to prevent enemies from approaching, pin them down, and then advance and kill them while they are hiding. Note that they will try to do the same thing to you!", + L"When you first capture Drassen, the Queen actually follows through on her command to retake Drassen. This will make holding Drassen VERY difficult in the early game and enabling this option is not recommended for new players!", + L"Similar to the Drassen Counterattack, other cities can be subjected to massive counterattacks by the Queen after you capture them.", + L"If City Counterattacks still aren't enough for you, try enabling this! Not only will the Queen send counterattacks, but she may also try to retake multiple cities at the same time.", + L"You can acquire and spend Intel, a resource closely tied to espionage and information brokering. Intel can be gained by spies, interrogating prisoners, and other ways. It can then be spent at a black market for rare weapons, or at the Recon Intelligence Services website for enemy info.", + L"Allows you to take prisoners, which can be done by demanding their surrender in combat, or by handcuffing incapacitated soldiers. Once captured, they can be sent to a prison you own and interrogated, which can result in money, intel, or their defection to your militia.", + L"You will need to invest a little bit in a mine before you can reap its full benefits. Workers are trained like militia, costing time and money. Note that losing control of a sector may cause worker loss!", + L"Enemy groups have a chance to ambush your squad. If your squad is ambushed, they will be placed in the centre of the map with the enemy group encircling them.", + L"The queen can now send out assassins. These are elite soldiers that are covert ops experts. They will disguise as members of your militia, and, when the time is right, they will suddenly attack your mercs. New trait system required and new inventory system recommended.", + L"A variety of enemy types can appear in enemy groups, increasing their overall effectiveness. A small icon will appear next to an enemy who has been observed to have a role. Roles include weapon and equipment specialists, and soldiers carrying keys or keycards.", + L"Requires the Enemy Roles feature to be enabled. Enemy medics can bandage their wounded comrades and perform field surgery on them.", + L"Requires the Enemy Roles feature to be enabled. Enemy lieutenants and captains provide sector-wide bonuses for their squad.", + L"Requires the Enemy Roles feature to be enabled. Generals provide strategic bonuses to the enemy army and may be present in enemy-controlled towns. As high-value targets, they are protected by a small retinue of bodyguards and may flee when they sense danger.", + L"Some time after you have trained militia, Kerberus will offer its services to you. On their website, you can order security personnel from them, which will act as militia. They require a high down payment but require no training time.", + L"Your team needs food and water to survive. Without them, they will starve and suffer severe penalties. Keep an eye on the quality of food you're consuming!", + L"It is possible for your team to catch illnesses from a variety of sources: open wounds, corpses, swamp insects, etc. A disease will give certain mali, and in extreme cases, cause death. Most diseases can be treated by doctors or medicines, and there are items that can provide protection.", + L"Mercs can form dynamic opinions of each other from a variety of events. These opinion events directly influence a merc's morale and can be both positive and negative. While an opinion event can occur once per day, the impact of one of these events can last for a few days, so it's possible for events to compound over this time period.", + L"This is an add-on to the Dynamic Opinions feature. This feature allows mercs to talk to each other whenever an opinion event occurs. These dialogue choices may have further impacts on how mercs see each other. If an IMP merc takes part in this, you have a brief window to choose how that character responds.", + L"The Arulco Special Division is responsible for ordering and deploying mechanised units to the Arulcan army. It uses income gained from mines to purchase vehicles for use against you.", + L"Requires the Arulco Strategic Division feature to be enabled. At a certain point in your campaign, the ASD can start using helicopters to deploy small squads of elite soldiers to harass you.", + L"Enemy jeeps and tanks can move around during combat, and may even try to run over your mercs. They will also destroy some obstacles by ramming them.", + L"Zombies rise from corpses!", + L"Arulco's deadly bloodcats can attack vulnerable town sectors at night. Civilian deaths will cause loyalty losses.", + L"Taking advantage of open warfare, bandits can attack vulnerable town sectors. Civilian deaths will cause loyalty losses.", + L"Requires the Zombies feature to be enabled. Zombies can swarm town sectors. Civilian deaths will cause loyalty losses.", + L"Before you can train militia, you need willing volunteers. You will need to control both town sectors and the surrounding farmland to bolster your recruit pool.", + L"Allows you to give commands to militia while in the tactical view. To do this, speak with any militia and a command menu will appear. Mercs wearing Extended Ears or Radio Sets can issue commands to militia that are out of line of sight.", + L"Allows you to give sector movement commands to militia while in the strategic map. You may need to be in the same sector (unless you have a Radio Operator or someone staffing an HQ) to issue strategic movement orders.", + L"Militia gear will not be randomly generated, but taken from the sector the militia is currently stationed in. Militia will return their gear to their sector when a new sector is loaded. Gear can be manually dropped in tactical via the 'Ctrl' + '.' menu, under 'militia inspection'. Gear can be prohibited to the militia by hovering over it in the strategic inventory and pressing 'TAB' + 'LMB'. It is up to you to sufficiently distribute gear to your militia.", + L"In order to be trained, militia require 3 resources: Guns, Armour, and Misc. These can be obtained by converting dropped items in the strategic item view, and ALT + Right clicking on an item. Green Militia just require a Gun, Veteran Militia require a Gun + Armour, and Elite Militia require Gun + Armour + Misc.", + L"General improvements to the close combat system. Head strikes deal more damage, but are harder to hit. Leg strikes are easier to land, but do less damage. Damage increased to surprised and prone targets. Stealing all items is possible on a knocked-down victim. Several other minor tweaks.", + L"The Improved Interrupt System (IIS) completely changes how the game determines whether an interrupt occurs. Instead of interrupting as soon as a hostile enters line of sight, the game tracks several variables to simulate a soldier's ability to react and gain an interrupt.", + L"Weapon barrels heat up as you fire them, potentially opening the door for jams, misfires, and faster weapon degradation. Weapons with replaceable barrels will probably be very useful to keep things cool.", + L"Toggle rain in tactical. Rain will slightly decrease overall visibility and make it harder to hear things.", + L"Toggle lightning and thunderstorms during rain. Lightning can reveal soldier positions for both you and the enemy. Thunder makes it significantly harder to hear, and overall breath regeneration is somewhat lowered.", + L"Toggle sandstorms. Fighting in a sandstorm applies noticable maluses to all combatants - vision and hearing ranges are reduced, weapon degradation is significantly increased, and it is much harder to regain breath.", + L"Toggle snow. In a snowstorm, it is harder to see, weapons degrade faster, and it is a little harder to regain breath.", + L"During the course of a campaign, brief events can pop up. You can select one of two responses, which may have positive and/or negative effects. Events can affect a wide variety of things, but mostly your mercs.", + L"After completing the food delivery quest for the rebels, they will grant you access to their command website (A.R.C.). You can set the rebels' country-wide directive there, and capturing towns allows you to enact policies in that region that provide powerful bonuses. This comes at a price - town loyalty will rise slower, so you will need to work harder to have the locals trust you.", + L"The enemy sends groups across the map. If you can find and intercept them, they will probably have valuable gear. However, depending on your difficulty, each group that completes its transport mission provides the AI with strategic resources. Best experienced with Arulco Strategic Division enabled.", +}; + + +//SaveLoadScreen +STR16 zSaveLoadText[] = +{ + L"Сохранить", + L"Загрузить", + L"Отмена", + L"Сохранение выбрано", + L"Загрузка выбрана", + + L"Игра успешно сохранена", + L"ОШИБКА сохранения игры!", + L"Игра успешно загружена", + L"ОШИБКА загрузки игры!", + + L"Это сохранение было сделано иной версией игры. Скорее всего, загрузить его не удастся. Все равно продолжить?", + + L"Возможно, файлы сохранений повреждены. Желаете их удалить?", + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Версия сохранений игры была изменена. Просим сообщить, если это изменение привело к какой-либо ошибке. Пытаемся загрузить?", +#else + L"Попытка загрузить сохранение игры устаревшей версии. Автоматически обновить его и загрузить?", +#endif + + //Translators, the next two strings are for the same thing. The first one is for beta version releases and the second one + //is used for the final version. Please don't modify the "#ifdef JA2BETAVERSION" or the "#else" or the "#endif" as they are + //used by the compiler and will cause program errors if modified/removed. It's okay to translate the strings though. +#ifdef JA2BETAVERSION + L"Версия игры и файлов сохранений была изменена. Просим сообщить, если это изменение привело к какой-либо ошибке. Пытаемся загрузить?", +#else + L"Попытка загрузить сохранение игры устаревшей версии. Автоматически обновить его и загрузить?", +#endif + + L"Вы решили записать игру на существующее сохранение #%d?", + L"Хотите загрузить игру из сохранения #", + + + //The first %d is a number that contains the amount of free space on the users hard drive, + //the second is the recommended amount of free space. + L"У вас заканчивается свободное место на жестком диске. Сейчас свободно %d Мб, а требуется %d Мб свободного места для JA.", + + L"Сохранение", //When saving a game, a message box with this string appears on the screen + + L"Нормальный", + L"Огромный", + L"нет", + L"да", + + L"Элементы фантастики", + L"Платиновая серия", + + L"Ассортимент Бобби Рэя", + L"Нормальный", + L"Большой", + L"Огромный", + L"Всё и сразу", + + L"Сохраненная игра была начата в режиме \"Нового Инвентаря\", этот режим не работает при разрешении экрана 640х480. Измените разрешение и загрузите игру снова.", + L"Загрузка игры, начатой в режиме \"Нового Инвентаря\", невозможна. Установите в Ja2.ini игровую папку 'Data-1.13' и повторите попытку.", + + L"Размер отряда, заданный в сохраненной игре, не поддерживается текущим разрешением. Увеличьте разрешение экрана и попробуйте снова.", + L"Количество товара у Бобби Рэя", +}; + + + +//MapScreen +STR16 zMarksMapScreenText[] = +{ + L"Уровень карты", + L"У вас нет ополченцев. Чтобы они появились, вам нужно склонить на свою сторону горожан.", + L"Доход в сутки", + L"Наёмник застрахован", + L"%s не нуждается в отдыхе.", + L"%s на марше и не может лечь спать.", + L"%s валится с ног от усталости, погоди немного.", + L"%s ведет машину.", + L"Отряд не может двигаться, когда один из наёмников спит.", + + // stuff for contracts + L"Хотя у вас и есть деньги на подписание контракта, но их не хватит, чтобы оплатить страховку наёмника.", + L"%s: продление страховки составит %s за %d дополнительных дней. Желаете заплатить?", + L"Предметы в секторе", + L"Жизнь наёмника застрахована.", + + // other items + L"Медики", // people acting a field medics and bandaging wounded mercs + L"Раненые", // people who are being bandaged by a medic + L"Готово", // Continue on with the game after autobandage is complete + L"Стоп", // Stop autobandaging of patients by medics now + L"Извините, этот пункт недоступен в демонстрационной версии.", // informs player this option/button has been disabled in the demo + L"%s: нет инструментов.", + L"%s: нет аптечки.", + L"Здесь недостаточно добровольцев для тренировки.", + L"В %s максимальное количество ополченцев.", + L"У наёмника ограниченный контракт.", + L"Контракт наёмника не застрахован", + L"Стратегическая карта", + + // Flugente: disease texts describing what a map view does + L"This view shows how many rotting corpses are in a sector. The white number are corpses, the green number is accumulated disease, the sector colour indicates how widespread it is. GREY= No disease known of. GREEN to RED = escalating levels of disease.", // TODO.Translate + + // Flugente: weather texts describing what a map view does + L"Здесь паказана актуальная погода. Без цвета=солнечно, зеленый=дождь, Синий=Гроза, Оранжевый=песчаная буря, Белый=снег.", + + // Flugente: describe what intel map view does + L"This view shows which sectors relevant what ongoing quests. Some data bought with intel is also shown here.", // TODO.Translate +}; + + +STR16 pLandMarkInSectorString[] = +{ + L"Отряд %d заметил кого-то в секторе %s.", + L"Отряд %s заметил кого-то в секторе %s.", +}; + +// confirm the player wants to pay X dollars to build a militia force in town +STR16 pMilitiaConfirmStrings[] = +{ + L"Тренировка отряда ополченцев будет стоить $", // telling player how much it will cost + L"Подтвердить платеж?", // asking player if they wish to pay the amount requested + L"Вы не можете себе этого позволить.", // telling the player they can't afford to train this town + L"Продолжить тренировку в %s (%s %d)?", // continue training this town? + + L"Цена $", // the cost in dollars to train militia + L"( Д/Н )", // abbreviated yes/no + L"", // unused + L"Тренировка ополчения в секторе %d будет стоить $%d. %s", // cost to train sveral sectors at once + + L"У вас нет $%d, чтобы приступить к тренировке ополчения.", + L"%s: Требуется не менее %d процентов лояльности, чтобы продолжить тренировку ополчения.", + L"Больше вы не можете тренировать ополчение в %s.", + L"освободить больше городских секторов", + + L"освободить новые городские сектора", + L"освободить больше городов", + L"восстановить потерянные прогресс", + L"продвинуться дальше", + + L"нанять больше повстанцев", +}; + +//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel +STR16 gzMoneyWithdrawMessageText[] = +{ + L"За один раз вы можете снять со счета не более $20 000.", + L"Вы решили положить %s на свой счет?", +}; + +STR16 gzCopyrightText[] = +{ + L"Авторские права (C) 1999 Sir-tech Canada Ltd. Все права защищены.", +}; + +//option Text +STR16 zOptionsToggleText[] = +{ + L"Речь", + L"Молчаливые герои", + L"Субтитры", + L"Пауза в диалогах", + L"Анимированный дым", + L"Кровь и жестокость", + L"Не трогать мышь!", + L"Старый метод выбора", + L"Показать путь движения", + L"Показать промахи", + L"Игра в реальном времени", + L"Подтверждение сна/подъема", + L"Метрическая система", + L"Выделите наемников", + L"Курсор на бойцов", + L"Курсор на дверь", + L"Мерцание вещей", + L"Показать кроны деревьев", + L"Скрывать мешающие кроны", + L"Показать каркасы", + L"Трехмерный курсор", + L"Показать шанс попадания", + L"Курсор очереди для гранат", + L"Злорадные враги", //Allow Enemy Taunts + L"Стрельба гранатой навесом", + L"Красться в реальном времени", + L"Выбор пробелом след. отряда", + L"Тени предметов в инвентаре", + L"Дальность оружия в тайлах", + L"Одиночный трассер", + L"Шум дождя", + L"Вороны", + L"Подсказки над солдатами", //Show Soldier Tooltips + L"Автосохранение каждый ход", + L"Молчаливый пилот вертолёта", + L"Подробное описание предметов", //Enhanced Description Box + L"Только пошаговый режим", // add forced turn mode + L"Новая расцветка стратег. карты", //Alternate Strategy-Map Colors //Change color scheme of Strategic Map + L"Заметная летящая пуля", // Show alternate bullet graphics (tracers) + L"Новая анимация экипировки", + L"Показать ранг бойца", // shows mercs ranks + L"Показать снаряжение на голове", //Show Face gear graphics + L"Показать иконки снаряжения", + L"Отключить меняющийся курсор", // Disable Cursor Swap + L"Тихая тренировка", // Madd: mercs don't say quotes while training + L"Тихий ремонт", // Madd: mercs don't say quotes while repairing + L"Тихое лечение", // Madd: mercs don't say quotes while doctoring + L"Быстрый ход компьютера", // Automatic fast forward through AI turns + L"Зомби в игре!", // Flugente Zombies + L"Меню в инвентаре бойца", // the_bob : enable popups for picking items from sector inv + L"Отметить оставшихся врагов", + L"Показать содержимое разгрузки", + L"Инвертировать колесо мыши", + L"Боевой порядок", // when multiple mercs are selected, they will try to keep their relative distances + L"Показывать расположение", // show locator on last known enemy location + L"Start at maximum aim", + L"Alternative pathfinding", + L"--Читерские настройки--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, + L"Ускорить доставку Бобби Рэя", // force all pending Bobby Ray shipments + L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END + L"--Настройки отладочной версии--", // an example options screen options header (pure text) + L"Сообщать координаты промахов", //Report Miss Offsets // Screen messages showing amount and direction of shot deviation. + L"Сброс всех игровых настроек", // failsafe show/hide option to reset all options + L"В самом деле хотите этого?", // a do once and reset self option (button like effect) + L"Отладочные настройки везде", //Debug Options in other builds // allow debugging in release or mapeditor + L"Показать Отладочные настройки", //DEBUG Render Option group // an example option that will show/hide other options + L"Отображать Mouse Regions", //Render Mouse Regions // an example of a DEBUG build option + L"-----------------", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", +}; + +//This is the help text associated with the above toggles. +STR16 zOptionsScreenHelpText[] = +{ + // HEADROCK HAM 4: Added more tooltip text to some toggles, in order to explain them better. + + //speech + L"Включить или выключить\nголос во время диалогов.", + + //Mute Confirmation + L"Включить или выключить речевое\nподтверждение выполнения приказов.", + + //Subtitles + L"Включить или выключить отображение\nсубтитров во время диалогов.", + + //Key to advance speech + L"Если субтитры включены, выберите этот пункт,\nчтобы успеть прочитать диалоги персонажей.", + + //Toggle smoke animation + L"Отключите анимацию дыма,\nесли он замедляет игру.", + + //Blood n Gore + L"Отключите этот пункт,\nесли боитесь крови.", + + //Never move my mouse + L"Если выключено, то курсор\nавтоматически перемещается на кнопку\nвсплывающего окна диалога.", + + //Old selection method + L"Если включено, то будет использоваться\nстарый метод выбора бойцов\n(для тех, кто привык к управлению предыдущих частей Jagged Alliance).", + + //Show movement path + L"Если включено, то в режиме реального времени\nбудет отображаться путь передвижения\n(если выключено, нажмите |S|h|i|f|t, чтобы увидеть путь).", + + //show misses + L"Если включено, то камера будет отслеживать\nтраекторию пуль, прошедших мимо цели.", + + //Real Time Confirmation + L"Если включено, то для приказа на передвижение\nбудет требоваться дополнительный\nподтверждающий щелчок мыши на месте назначения.", + + //Sleep/Wake notification + L"Если включено, то вы получите предупреждение,\nкогда наёмники лягут спать или проснутся.", + + //Use the metric system + L"Если включено, то используется метрическая система мер,\nиначе будет британская.", + + //Highlight Mercs + L"При включении выделяет наемника (не виден врагам).\nПереключиться в игре с помощью (|G)", + + //Smart cursor + L"Если включено, то перемещение курсора возле наёмника\nавтоматически выбирает его.", + + //snap cursor to the door + L"Если включено, то перемещение курсора возле двери\nавтоматически помещает его на дверь.", + + //glow items + L"Если включено, то все предметы подсвечиваются (|C|t|r|l+|A|l|t+|I).", + + //toggle tree tops + L"Если включено, то отображаются кроны деревьев (|T).", + + //smart tree tops + L"Если включено, кроны деревьев не будут отображаться около видимых солдат и около курсора.", + + //toggle wireframe + L"Если включено, то у препятствий\nдополнительно показывается каркас (|C|t|r|l+|A|l|t+|W).", + + L"Если включено, то курсор передвижения\nотображается в 3D (|H|o|m|e).", + + // Options for 1.13 + L"Если включено, шанс попадания\nпоказывается над курсором.", + L"Если включено, очередь из гранатомёта\nиспользует курсор стрельбы очередями.", + L"Если включено, враг иногда будет\nкомментировать свои действия.", + L"Если включено, гранатомёты выстреливают\nзаряд под большим углом к горизонту (|A|l|t+|Q).", + L"Если включено, игра не переходит\nв пошаговый режим при обнаружении\nпротивника (если враг вас не видит). \nРучной вход в пошаговый режим - |C|t|r|l+|X. (|C|t|r|l+|S|h|i|f|t+|X)", + L"Если включено, |П|р|о|б|е|л выделяет следующий отряд.", + L"Если включено, показываются\nтени предметов в инвентаре.", + L"Если включено, дальность оружия\nуказывается в игровых секторах.", + L"Если включено, трассирующий эффект\nсоздаётся и одиночным выстрелом.", + L"Если включено, дождь будет\nсопровождаться звуком.", + L"Если включено, вороны присутствуют в игре.", + L"Если включено, при нажатии кнопки |A|l|t\nи наведении курсора мыши на вражеского солдата\nбудет показана дополнительная информация.", + L"Если включено, игра будет автоматически\nсохраняться после каждого хода игрока.", + L"Если включено, Небесный Всадник\nне будет вас раздражать болтливостью.", + L"Если включено, будет задействовано\nподробное описание предметов.", + L"Если включено и в секторе присутствует враг,\nпошаговый режим будет задействован\nдо полной зачистки сектора (|C|t|r|l+|T).", + L"Если включено, необследованные сектора\nна стратегической карте будут чёрно-белыми.", + L"Если включено, летящая пуля\nбудет более заметной.", + L"Если включено, анимация наемника будет отображать используемое оружие и экипировку.", + L"Если включено, на стратегическом экране\nбудет подписан ранг бойца перед его именем.", + L"Если включено, на портрете наёмника\nбудет отображено надетое головное снаряжение.", + L"Если включено, в правом нижнем углу\nна портрете наёмника будут отображены иконки\nнадетого головного снаряжения.", + L"Если включено, курсор не будет меняться,\nпоказывая все возможные действия.\nЧтобы поменяться местами с человеком рядом, нажмите |X.", + L"Если включено, бойцы не будут\nсообщать о повышении своих умений.", + L"Если включено, бойцы не будут\nсообщать о статусе ремонта.", + L"Если включено, бойцы не будут\nсообщать о статусе лечения.", + L"Если включено, ожидание,\nпока сделают ход противник,\nгражданские и другие существа,\nбудет значительно меньше.", + + L"Если включено, убитые враги\nбудут превращаться в зомби. Веселитесь!", + L"Если включено, при просмотре\nпредметов сектора в инвентаре бойца\nбудет доступно меню по нажатии\nлевой кнопки на пустой карман.", + L"Если включено, указывается примерное\nположение последних врагов в секторе.", + L"Если включено, показывает содержимое разгрузки,\nиначе - обычный интерфейс новой системы навески.", + L"Если включено, инвертирует направление\nпрокрутки колеса мыши.", + L"Если выбрано несколько наёмников,\nони будут пытаться сохранять взаимное расположение\nи дистанцию при движении\n(нажмите |C|t|r|l+|A|l|t+|G для переключения или |S|h|i|f|t + клик для движения).", + L"Если включено, показывает известное расположение противника\n(нажмите |S|h|i|f|t, чтобы показать источник шума).", + L"When ON, aiming at enemy will start at maximum aiming instead of default no aim", + L"When ON, Use A* pathfinding algorithm, instead of original", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", + L"Выберите этот пункт,\nчтобы груз Бобби Рэя прибыл немедленно.", + L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", // an example options screen options header (pure text) + L"|H|A|M |4 |D|e|b|u|g: When ON, will report the distance each bullet deviates from the\ncenter of the target, taking all NCTH factors into account.", + L"Если включить, повреждённые игровые настройки\nбудут восстановлены.", // failsafe show/hide option to reset all options + L"Отметьте строку для подтверждения сброса игровых настроек.", // a do once and reset self option (button like effect) + L"Если включено, отладочные настройки\nбудут доступны как в игре,\nтак и в редакторе карт.", // Allows debug options in release or mapeditor builds + L"Если включено, отладочные настройки \nбудут показаны в общем списке.", //Toggle to display debugging render options + L"Attempts to display slash-rects around mouse regions", // an example of a DEBUG build option + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", // an example options screen options divider (pure text) + + // this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"Последняя строка в списке настроек.", +}; + + +STR16 gzGIOScreenText[] = +{ + L"УСТАНОВКИ НАЧАЛА ИГРЫ", +#ifdef JA2UB + L"Случайная история Мануэля", + L"да", + L"нет", +#else + L"Элементы фантастики", + L"нет", + L"есть", +#endif + L"Платиновая серия", + L"Ассортимент оружия в игре", + L"всё доступное", + L"чуть поменьше", + L"Уровень сложности", + L"лёгкий", //новичок + L"средний", //опытный + L"трудный", //эксперт + L"БЕЗУМНЫЙ", //помешанный + L"Начать игру", + L"Главное меню", + L"Возможность сохранения", + L"в любое время", + L"между боями", //Iron Man + L"Отключено в демо-версии", + L"Ассортимент Бобби Рэя", + L"хороший", + L"большой", + L"огромный", + L"всё и сразу", + L"Инвентарь / Навеска", + L"NOT USED", + L"NOT USED", + L"Загрузить", + L"УСТАНОВКИ ИГРЫ (актуальны только настройки игры сервера)", + // Added by SANDRO + L"Умения персонажа", + L"старые", + L"новые", + L"Создаваемых персонажей", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + L"Враг оставляет всё снаряжение", + L"нет", + L"да", +#ifdef JA2UB + L"Текс и Джон", + L"Случайно", + L"Оба сразу", +#else + L"Число террористов", + L"случайное", + L"все сразу", +#endif + L"Спрятанное оружие секторов", //Secret Weapon Caches + L"выборочно", + L"всё возможное", + L"Скорость обновления вооружения", //Progress Speed of Item Choices + L"очень медленно", + L"медленно", + L"умеренно", + L"быстро", + L"очень быстро", + + L"старый / старая", + L"новый / старая", + L"новый / новая", + + // Squad Size + L"Бойцов в отряде", + L"6", + L"8", + L"10", + //L"Faster Bobby Ray Shipments", + L"Манипуляции с инвентарём за ОД", + + L"Новая система прицеливания", //New Chance to Hit System + L"Новая система перехвата хода", + L"Биография наёмников", + L"Игра с едой", + L"Количество товара у Бобби Рэя", + + // anv: extra iron man modes + L"между перестрелкой", //Soft Iron Man + L"один раз в день", //Extreme Iron Man +}; + +STR16 gzMPJScreenText[] = +{ + L"СЕТЕВАЯ ИГРА", //MULTIPLAYER + L"Присоединиться", //Join + L"Создать игру", //Host + L"Отмена", //Cancel + L"Обновить", //Refresh + L"Имя игрока", //Player Name + L"IP сервера", //Server IP + L"Порт", //Port + L"Имя сервера", //Server Name + L"# Plrs", + L"Версия", //Version + L"Тип игры", //Game Type + L"Пинг", //Ping + L"Впишите имя игрока.", + L"Впишите корректный IP адрес. (пример 84.114.195.239).", + L"Впишите корректный порт сервера (используйте диапазон от 1 до 65535).", +}; + +STR16 gzMPJHelpText[] = +{ + L"Новых игроков можно найти здесь: http://webchat.quakenet.org/?channels=ja2-multiplayer", + L"Можно нажать 'у', чтобы открыть окно чата внутриигровой, после того как вы были подключены к серверу.", // TODO.Translate + + L"СОЗДАТЬ ИГРУ", + L"Введите '127.0.0.1' в поле IP и выберите номер порта начиная с 60000.", //Enter '127.0.0.1' for the IP and the Port number should be greater than 60000. + L"Убедитесь что выбранный порт (UDP, TCP) не блокируется роутером. Подробнее читайте здесь: http://portforward.com", + L"Так же сообщите по IRC или ICQ другим игрокам ваш внешний IP адрес и порт (http://www.whatismyip.com).", + L"Жмите на кнопку 'Создать игру' для запуска сервера сетевой игры.", + + L"ПРИСОЕДИНИТЬСЯ К ИГРЕ", + L"Создавший игру должен был вам сообщить (по IRC, ICQ и т.д.) свой внешний IP адрес и порт.", + L"Впишите эти данные в поле IP адреса и номер порта.", + L"Жмите 'Присоединиться' чтобы подключиться к уже созданной сетевой игре.", +}; + +STR16 gzMPHScreenText[] = +{ + L"СТАРТОВЫЕ УСТАНОВКИ СЕРВЕРА", //HOST GAME + L"Начать игру", //Start + L"Главное меню", //Cancel + L"Имя сервера", //Server Name + L"Тип игры", //Game Type + L"Deathmatch", + L"Team-Deathmatch", + L"Co-Operative", + L"Количество игроков", //Max Players + L"Солдат в отряде", //Maximum Mercs + L"Выбор бойцов", + L"Найм бойцов", + L"Нанят игроком", //Hired by Player + L"Деньги при старте", //Starting Cash + L"Можно нанимать тех же бойцов", //Allow Hiring Same Merc + L"Сообщения о нанятых бойцах", //Report Hired Mercs + L"Бобби Рэй", //Bobby Rays + L"Место высадки", //Sector Starting Edge + L"Впишите имя сервера", //You must enter a server name + L"", + L"", + L"Время суток", //Starting Time + L"", + L"", + L"Убойность оружия", //Weapon Damage + L"", + L"Время хода", //Timed Turns + L"", + L"Гражданские в CO-OP", //Enable Civilians in CO-OP + L"", + L"Максимум врагов в CO-OP", //Maximum Enemies in CO-OP + L"Синхронизация игровых файлов", //Synchronize Game Directory + L"MP Sync. Directory", + L"Укажите директорию для синхронизации передаваемых файлов.", + L"(Для разделения директорий используйте '/' вместо '\\'.)", + L"Указанная директория для синхронизации не существует.", + L"1", + L"2", + L"3", + L"4", + L"5", + L"6", + // Max. Enemies / Report Hired Merc / Enable Civs in CO-OP + L"да", + L"нет", + // Starting Time + L"утро", + L"день", + L"ночь", + // Starting Cash + L"мало", + L"средне", + L"много", + L"неограничено", + // Time Turns + L"не ограничено", //Never + L"медленно", //Slow + L"умеренно", //Medium + L"быстро", //Fast + // Weapon Damage + L"очень малая", //Very low + L"небольшая", //Low + L"хорошая", //Normal + // Merc Hire + L"случайно", + L"самостоятельно", //Normal + // Sector Edge + L"случайно", + L"выборочно", + // Bobby Ray / Hire same merc + L"нет", + L"есть", +}; + +STR16 pDeliveryLocationStrings[] = +{ + L"Остин", //Austin, Texas, USA + L"Багдад", //Baghdad, Iraq (Suddam Hussein's home) + L"Драссен", //The main place in JA2 that you can receive items. The other towns are dummy names... + L"Гонконг", //Hong Kong, Hong Kong + L"Бейрут", //Beirut, Lebanon (Middle East) + L"Лондон", //London, England + L"Лос-Анджелес",//Los Angeles, California, USA (SW corner of USA) + L"Медуна", //Meduna -- the other airport in JA2 that you can receive items. + L"Метавира", //The island of Metavira was the fictional location used by JA1 + L"Майами", //Miami, Florida, USA (SE corner of USA) + L"Москва", //Moscow, USSR + L"Нью-Йорк", //New York, New York, USA + L"Оттава", //Ottawa, Ontario, Canada -- where JA2 was made! + L"Париж", //Paris, France + L"Триполи", //Tripoli, Libya (eastern Mediterranean) + L"Токио", //Tokyo, Japan + L"Ванкувер", //Vancouver, British Columbia, Canada (west coast near US border) +}; + +STR16 pSkillAtZeroWarning[] = +{ //This string is used in the IMP character generation. It is possible to select 0 ability + //in a skill meaning you can't use it. This text is confirmation to the player. + L"Вы уверены? Значение ноль означает отсутствие этого навыка вообще.", +}; + +STR16 pIMPBeginScreenStrings[] = +{ + L"( до 8 символов )", +}; + +STR16 pIMPFinishButtonText[ 1 ]= +{ + L"Анализ", +}; + +STR16 pIMPFinishStrings[ ]= +{ + L"Спасибо, %s", //%s is the name of the merc +}; + +// the strings for imp voices screen +STR16 pIMPVoicesStrings[] = +{ + L"Голос", +}; + +STR16 pDepartedMercPortraitStrings[ ]= +{ + L"Погиб в бою", + L"Уволен", + L"Другое", +}; + +// title for program +STR16 pPersTitleText[] = +{ + L"Досье", +}; + +// paused game strings +STR16 pPausedGameText[] = +{ + L"Пауза в игре", + L"Продолжить (|P|a|u|s|e)", + L"Пауза (|P|a|u|s|e)", +}; + + +STR16 pMessageStrings[] = +{ + L"Выйти из игры?", + L"Да", + L"ДА", + L"НЕТ", + L"ОТМЕНА", + L"НАНЯТЬ", + L"СОЛГАТЬ", + L"Нет описания.", //Save slots that don't have a description. + L"Игра сохранена.", + L"Игра сохранена.", + L"QuickSave", //10 The name of the quicksave file (filename, text reference) + L"SaveGame", //The name of the normal savegame file, such as SaveGame01, SaveGame02, etc. + L"sav", //The 3 character dos extension (represents sav) + L"..\\SavedGames", //The name of the directory where games are saved. + L"День", + L"Наёмн", + L"Свободное место", //An empty save game slot + L"Демо", //Demo of JA2 + L"Ловля Багов", //State of development of a project (JA2) that is a debug build + L"Релиз", //Release build for JA2 + L"пвм", //Abbreviation for Rounds per minute -- the potential # of bullets fired in a minute. + L"мин", //Abbreviation for minute. + L"м", //One character abbreviation for meter (metric distance measurement unit). + L"пуль", //Abbreviation for rounds (# of bullets) + L"кг", //Abbreviation for kilogram (metric weight measurement unit) + L"фунт", //Abbreviation for pounds (Imperial weight measurement unit) + L"В начало", //Home as in homepage on the internet. + L"USD", //Abbreviation to US dollars + L"н/д", //Lowercase acronym for not applicable. + L"Посмотрим, что происходит тем временем в другом месте", //Meanwhile + L"%s: прибыл в сектор %s%s",//30 Name/Squad has arrived in sector A9. Order must not change without notifying +//SirTech + L"Версия", + L"Пустая ячейка быстрого сохр.", + L"Эта ячейка зарезервирована для Быстрого Сохранения, которое можно провести с тактической карты или с глобальной карты, нажав клавиши ALT+S.", + L"Открытая", + L"Закрытая", + L"У вас заканчивается свободное дисковое пространство. На диске есть всего %sMб свободного места, а для Jagged Alliance 2 требуется %s Mб.", + L"Из A.I.M. нанят боец %s.", + L"%s ловит %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. + L"%s has taken %s.", // TODO.Translate + L"%s: отсутствуют навыки в медицине.",//40 'Merc name' has no medical skill. + + //CDRom errors (such as ejecting CD while attempting to read the CD) + L"Нарушена целостность программы.", + L"ОШИБКА: CD-ROM открыт.", + + //When firing heavier weapons in close quarters, you may not have enough room to do so. + L"Нет места, чтобы вести отсюда огонь.", + + //Can't change stance due to objects in the way... + L"Сейчас нельзя изменить положение тела.", + + //Simple text indications that appear in the game, when the merc can do one of these things. + L"Выкинуть", + L"Бросить", + L"Передать", + + L"%s передан %s.", //"Item" passed to "merc". Please try to keep the item %s before the merc %s, otherwise, + //must notify SirTech. + L"Не хватает места, чтобы передать %s %s.", //pass "item" to "merc". Same instructions as above. + + //A list of attachments appear after the items. Ex: Kevlar vest ( Ceramic Plate 'Attached )' + L" присоединён]", // 50 + + //Cheat modes + L"Ну и зачем тебе это надо?", + L"Активирован режим кодов.", + + //Toggling various stealth modes + L"Отряд идёт тихим шагом.", + L"Отряд идёт обычным шагом.", + L"%s идёт тихим шагом.", + L"%s идёт обычным шагом.", + + //Wireframes are shown through buildings to reveal doors and windows that can't otherwise be seen in + //an isometric engine. You can toggle this mode freely in the game. + L"Каркас зданий ВКЛ.", + L"Каркас зданий ВЫКЛ.", + + //These are used in the cheat modes for changing levels in the game. Going from a basement level to + //an upper level, etc. + L"Нельзя подняться с этого уровня...", + L"Нет нижних этажей...", + L"Входим в подвал. Уровень %d...", + L"Покидаем подвал...", + + L".", // used in the shop keeper inteface to mark the ownership of the item eg Red's gun + L"Режим следования ВЫКЛ.", + L"Режим следования ВКЛ.", + L"3D курсор ВЫКЛ.", + L"3D курсор ВКЛ.", + L"Выбран %d-й отряд.", + L"Не хватает денег, чтобы заплатить %s ежедневный гонорар %s", //first %s is the mercs name, the seconds is a string containing the salary + L"Нет", //Skip + L"%s не может уйти в одиночку.", + L"Файл сохранения был записан под названием SaveGame249.sav. Если необходимо, переименуйте его в SaveGame01 - SaveGame10 и тогда он станет доступен в списке сохранений.", + L"%s: выпил(а) немного %s.", + L"Посылка прибыла в Драссен.", + L"%s прибудет в точку назначения (сектор %s) в %dй день, примерно в %s.", //first %s is mercs name, next is the sector location and name where they will be arriving in, lastely is the day an the time of arrival + L"В журнал добавлена запись!", + L"Очереди из гранат используют курсор стрельбы очередями (стрельба по площадям возможна)", + L"Очереди из гранат используют курсор метания (стрельба по площадям невозможна)", + L"Включены подписи к солдатам", // Changed from Drop All On (Enabled Soldier Tooltips) + L"Отключены подписи к солдатам", // 80 // Changed from Drop All Off (Disabled Soldier Tooltips) + L"Гранатометы стреляют под обычным углом", + L"Гранатометы стреляют навесом", + // forced turn mode strings + L"Только пошаговый режим", + L"Режим реального времени", //Normal turn mode + L"Выход из пошагового режима", //Exit combat mode + L"Включен только пошаговый режим. Вступаем в бой!", //Forced Turn Mode Active, Entering Combat + L"Игра сохранена в поле авто-сохранения.", + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved + L"Клиент", //Client + L"Нельзя одновременно установить \"Старый\" инвентарь и \"Новую Систему Навески\".", //You cannot use the Old Inventory and the New Attachment System at the same time. + + L"Auto Save #", //91 // Text des Auto Saves im Load Screen mit ID + L"Этот слот зарезервирован для автоматической записи, которую можно включить/отключить (AUTO_SAVE_EVERY_N_HOURS) в файле ja2_options.ini.", //92 // The text, when the user clicks on the save screen on an auto save + L"Пустой слот авто записи #", //93 // The text, when the auto save slot (1 - 5) is empty (not saved yet) + L"AutoSaveGame", // 94 // The filename of the auto save, such as AutoSaveGame01 - AutoSaveGame05 + L"End-Turn Save #", // 95 // The text for the tactical end turn auto save + L"Saving Auto Save #", // 96 // The message box, when doing auto save + L"Saving", // 97 // The message box, when doing end turn auto save + L"Empty End-Turn Save Slot #", // 98 // The message box, when doing auto save + L"Этот слот зарезервирвоан для автоматической записи в конце каждого хода, которую можно включить/отключить на экране опций.", //99 // The text, when the user clicks on the save screen on an auto save + // Mouse tooltips + L"QuickSave.sav", // 100 + L"AutoSaveGame%02d.sav", // 101 + L"Auto%02d.sav", // 102 + L"SaveGame%02d.sav", //103 + // Lock / release mouse in windowed mode (window boundary) + L"Захватить курсор мыши.", // 104 + L"Освободить курсор мыши.", // 105 + L"Движение в боевом порядке", + L"Движение в обычном порядке", + L"Подсветка наёмника включена", + L"Подсветка наёмника отключена", + L"Выбран отряд %s.", + L"%s курит %s.", + L"Активировать чит-коды?", + L"Деактивировать чит-коды?", +}; + + +CHAR16 ItemPickupHelpPopup[][40] = +{ + L"Взять", + L"Вверх", + L"Выбрать все", + L"Вниз", + L"Отмена", +}; + +STR16 pDoctorWarningString[] = +{ + L"%s слишком далеко, чтобы подлечиться.", + L"Ваши медики не могут оказать первую помощь всем раненым.", +}; + +STR16 pMilitiaButtonsHelpText[] = +{ + L"Убрать (|П|р|а|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nДобавить (|Л|е|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nНовобранцы", // button help text informing player they can pick up or drop militia with this button + L"Убрать (|П|р|а|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nДобавить (|Л|е|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nРядовые", + L"Убрать (|П|р|а|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nДобавить (|Л|е|в|а|я |к|н|о|п|к|а |м|ы|ш|и)\nВетераны", + L"Равномерно распределить ополчение\nпо доступным секторам", +}; + +STR16 pMapScreenJustStartedHelpText[] = +{ + L"Отправляйтесь в A.I.M. и наймите бойцов (*Подсказка* - это в лэптопе).", // to inform the player to hired some mercs to get things going +#ifdef JA2UB + L"Когда будете готовы отправиться в Тракону, включите сжатие времени в правом нижнем углу экрана.", // to inform the player to hit time compression to get the game underway +#else + L"Когда будете готовы отправиться в Арулько, включите сжатие времени в правом нижнем углу экрана.", // to inform the player to hit time compression to get the game underway +#endif +}; + +STR16 pAntiHackerString[] = +{ + L"Ошибка. Пропущен или испорчен файл(ы). Игра прекращает работу.", +}; + + +STR16 gzLaptopHelpText[] = +{ + //Buttons: + L"Просмотреть почту", + L"Посетить интернет сайты", + L"Просмотреть полученные данные", + L"Просмотреть журнал последних событий", + L"Показать информацию о команде", + L"Просмотреть финансовые отчеты", + L"Закрыть лэптоп", + + //Bottom task bar icons (if they exist): + L"Получена новая почта", + L"Получены новые данные", + + //Bookmarks: + L"Международная Ассоциация Наёмников A.I.M.", + L"Бобби Рэй - заказ оружия через Интернет", + L"Институт Изучения Личности Наёмника I.M.P.", + L"Центр рекрутов M.E.R.C.", + L"Похоронная служба Макгилликатти", + L"'Цветы по всему миру'", + L"Страховые агенты по контрактам A.I.M.", + //New Bookmarks + L"", + L"Энциклопедия", + L"Брифинг-зал", + L"События и факты. Арулькийские новости", + L"Бойцы Любят Тебя или Клянут", + L"Всемирная организация здравоохранения", + L"Цербер - Опыт в безопасности", + L"Ополчение", + L"Recon Intelligence Services", // TODO.Translate + L"Controlled factories", // TODO.Translate +}; + + +STR16 gzHelpScreenText[] = +{ + L"Закрыть окно помощи", +}; + +STR16 gzNonPersistantPBIText[] = +{ + L"Идет бой. Вы можете отступить только через тактический экран.", + L"Войти в сектор, чтобы продолжить бой. (|E)", + L"Провести бой автоматически (|A).", + L"Во время атаки врага автоматическую битву включить нельзя.", + L"После того, как вы попали в засаду, автоматическую битву включить нельзя.", + L"Рядом рептионы - автоматическую битву включить нельзя.", + L"Рядом враждебные гражданские - автоматическую битву включить нельзя.", + L"Рядом кошки-убийцы - автоматическую битву включить нельзя.", + L"ИДЕТ БОЙ", + L"Сейчас вы не можете отступить.", +}; + +STR16 gzMiscString[] = +{ + L"Ваши ополченцы продолжают бой без помощи наёмников...", + L"Сейчас машине топливо не требуется.", + L"Топливный бак полон на %d%%.", + L"%s полностью под контролем Дейдраны.", + L"Вы потеряли заправочную станцию.", +}; + +STR16 gzIntroScreen[] = +{ + L"Не удается найти вступительный видеоролик", +}; + +// These strings are combined with a merc name, a volume string (from pNoiseVolStr), +// and a direction (either "above", "below", or a string from pDirectionStr) to +// report a noise. +// e.g. "Sidney hears a loud sound of MOVEMENT coming from the SOUTH." +STR16 pNewNoiseStr[] = +{ + L"%s слышит %s звук %s.", + L"%s слышит %s звук движения %s.", + L"%s слышит %s скрип, идущий %s.", + L"%s слышит %s звук всплеска %s.", + L"%s слышит %s звук удара %s.", + L"%s слышит %s звук стрельбы %s.", // anv: without this, all further noise notifications were off by 1! + L"%s слышит %s звук взрыва %s.", + L"%s слышит %s крик %s.", + L"%s слышит %s звук удара %s.", + L"%s слышит %s звук удара %s.", + L"%s слышит %s звон %s.", + L"%s слышит %s грохот %s.", + L"", // anv: placeholder for silent alarm + L"%s слышит чей-то %s голос %s.", // anv: report enemy taunt to player +}; + +STR16 pTauntUnknownVoice[] = +{ + L"Чей-то голос", +}; + +STR16 wMapScreenSortButtonHelpText[] = +{ + L"Сортировка по имени (|F|1)", + L"Сортировка по роду деятельности (|F|2)", + L"Сортировка по состоянию сна (|F|3)", + L"Сортировка по месту пребывания (|F|4)", + L"Сортировка по месту назначения (|F|5)", + L"Сортировка по времени контракта (|F|6)", +}; + + + +STR16 BrokenLinkText[] = +{ + L"Ошибка 404", + L"Сайт не найден.", +}; + + +STR16 gzBobbyRShipmentText[] = +{ + L"Последние поступления", + L"Заказ №", + L"Количество", + L"Заказано", +}; + + +STR16 gzCreditNames[]= +{ + L"Chris Camfield", + L"Shaun Lyng", + L"Kris Märnes", + L"Ian Currie", + L"Linda Currie", + L"Eric \"WTF\" Cheng", + L"Lynn Holowka", + L"Norman \"NRG\" Olsen", + L"George Brooks", + L"Andrew Stacey", + L"Scot Loving", + L"Andrew \"Big Cheese\" Emmons", + L"Dave \"The Feral\" French", + L"Alex Meduna", + L"Joey \"Joeker\" Whelan", +}; + + +STR16 gzCreditNameTitle[]= +{ + L"Ведущий программист игры", // Chris Camfield + L"Дизайнер/Сценарист", // Shaun Lyng + L"Программист стратегической части и редактора", //Kris \"The Cow Rape Man\" Marnes + L"Продюсер/Дизайнер", // Ian Currie + L"Дизайнер/Дизайн карт", // Linda Currie + L"Художник", // Eric \"WTF\" Cheng + L"Тестирование, поддержка", // Lynn Holowka + L"Главный художник", // Norman \"NRG\" Olsen + L"Мастер по звуку", // George Brooks + L"Дизайнер экранов/художник", // Andrew Stacey + L"Ведущий художник/аниматор", // Scot Loving + L"Ведущий программист", // Andrew \"Big Cheese Doddle\" Emmons + L"Программист", // Dave French + L"Программист стратегии и баланса игры", // Alex Meduna + L"Художник-портретист", // Joey \"Joeker\" Whelan", +}; + +STR16 gzCreditNameFunny[]= +{ + L"", // Chris Camfield + L"(Всё ещё зубрит правила пунктуации)", // Shaun Lyng + L"(\"Готово! Осталось только баги исправить.\")", //Kris \"The Cow Rape Man\" Marnes + L"(Уже слишком стар для всего этого)", // Ian Currie + L"(Также работает над Wizardry 8)", // Linda Currie + L"(Заставили тестировать под дулом пистолета)", // Eric \"WTF\" Cheng + L"(Ушла от нас в CFSA - скатертью дорожка...)", // Lynn Holowka + L"", // Norman \"NRG\" Olsen + L"", // George Brooks + L"(Поклонник джаза и группы Dead Head)", // Andrew Stacey + L"(Его настоящее имя Роберт)", // Scot Loving + L"(Единственный ответственный человек)", // Andrew \"Big Cheese Doddle\" Emmons + L"(Может опять заняться мотогонками)", // Dave French + L"(Украден с работы над Wizardry 8)", // Alex Meduna + L"(Делал предметы и загрузочные экраны!)", // Joey \"Joeker\" Whelan", +}; + +// HEADROCK: Adjusted strings for better feedback, and added new string for LBE repair. +STR16 sRepairsDoneString[] = +{ + L"%s: завершён ремонт личных вещей.", + L"%s: завершён ремонт всего оружия и брони.", + L"%s: завершён ремонт всей экипировки отряда.", + L"%s: завершён ремонт всех крупных вещей отряда.", + L"%s: завершён ремонт всех малых вещей отряда.", + L"%s: завершён ремонт всех мелких вещей отряда.", + L"%s: завершён ремонт разгрузочных систем отряда.", + L"%s: завершена чистка всего оружия отряда.", +}; + +STR16 zGioDifConfirmText[]= +{ + L"Вы выбрали ЛЁГКИЙ уровень сложности. Этот режим предназначен для первичного ознакомления с Jagged Alliance. Ваш выбор определит ход всей игры, так что будьте осторожны. Вы действительно хотите начать игру в этом режиме?", + L"Вы выбрали СРЕДНИЙ уровень сложности. Этот режим предназначен для тех, кто знаком с Jagged Alliance и подобными играми. Ваш выбор определит ход всей игры, так что будьте осторожны. Вы действительно хотите начать игру в этом режиме?", + L"Вы выбрали ТЯЖЁЛЫЙ уровень сложности. В этом режиме вам потребуется немалый опыт игры в Jagged Alliance. Ваш выбор определит ход всей игры, так что будьте осторожны. Вы действительно хотите начать игру в этом режиме?", + L"Вы выбрали БЕЗУМНЫЙ уровень сложности. Имейте в виду - в этом режиме возможности Дейдраны воистину за пределами разумного! Но если с головой вы не в ладах, то вам даже понравится. Рискнете?", +}; + +STR16 gzLateLocalizedString[] = +{ + L"%S файл для загрузки экрана не найден...", + + //1-5 + L"Робот не сможет покинуть этот сектор, пока кто-нибудь не возьмет пульт управления.", + + //This message comes up if you have pending bombs waiting to explode in tactical. + L"Сейчас нельзя включить сжатие времени. Дождитесь взрыва!", + + //'Name' refuses to move. + L"%s отказывается подвинуться.", + + //%s a merc name + L"%s: недостаточно очков действия для изменения положения.", + + //A message that pops up when a vehicle runs out of gas. + L"%s: закончилось топливо. Машина осталась в %c%d.", + + //6-10 + + // the following two strings are combined with the pNewNoise[] strings above to report noises + // heard above or below the merc + L"сверху", + L"снизу", + + //The following strings are used in autoresolve for autobandaging related feedback. + L"Никто из ваших наёмников не имеет медицинских навыков.", + L"Нечем бинтовать. Ни у кого из наёмников нет аптечки.", + L"Чтобы перевязать всех наёмников, не хватило бинтов.", + L"Никто из ваших наёмников не нуждается в перевязке.", + L"Автоматически перевязывать бойцов.", + L"Все ваши наёмники перевязаны.", + + //14 +#ifdef JA2UB + L"Тракона", +#else + L"Арулько", +#endif + + L"(на крыше)", + + L"Здоровье: %d/%d", + + //In autoresolve if there were 5 mercs fighting 8 enemies the text would be "5 vs. 8" + //"vs." is the abbreviation of versus. + L"%d против %d", + + L"%s полон!", //(ex "The ice cream truck is full") + + L"%s нуждается не в первой помощи или перевязке, а в серьезном лечении и/или отдыхе.", + + //20 + //Happens when you get shot in the legs, and you fall down. + L"Из-за ранения в ногу %s падает на землю!", + //Name can't speak right now. + L"%s сейчас не может говорить", + + //22-24 plural versions + L"%d новобранца из ополчения произведены в ветераны.", + L"%d новобранца из ополчения произведены в рядовые.", + L"%d рядовых ополченца произведены в ветераны.", + + //25 + L"Кнопка", + + //26 + //Name has gone psycho -- when the game forces the player into burstmode (certain unstable characters) + L"У %s приступ безумия!", + + //27-28 + //Messages why a player can't time compress. + L"Сейчас небезопасно включать сжатие времени - у вас есть наёмники в секторе %s.", + L"Сейчас небезопасно включать сжатие времени - у вас есть наёмники в пещерах с тварями.", + + //29-31 singular versions + L"1 новобранец из ополчения стал ветераном ополченцем.", + L"1 новобранец из ополчения стал рядовым ополченцем.", + L"1 рядовой ополченец стал ветераном ополченцем.", + + //32-34 + L"%s ничего не говорит.", + L"Выбраться на поверхность?", + L"(%dй отряд)", + + //35 + //Ex: "Red has repaired Scope's MP5K". Careful to maintain the proper order (Red before Scope, Scope before MP5K) + L"%s отремонтировал(а) у %s %s", + + //36 + L"ГЕПАРД", + + //37-38 "Name trips and falls" + L"%s спотыкается и падает.", + L"Этот предмет отсюда взять невозможно.", + + //39 + L"Оставшиеся бойцы не могут сражаться. Сражение с тварями продолжит ополчение.", + + //40-43 + //%s is the name of merc. + L"%s: закончились медикаменты!", + L"%s: недостаточно навыков для лечения.", + L"%s: закончился ремонтный набор!", + L"%s: недостаточно навыков для ремонта.", + + //44-45 + L"Время ремонта", + L"%s не видит этого человека.", + + //46-48 + L"%s: отвалилась ствольная насадка!", + // HEADROCK HAM 3.5: Changed to reflect facility effect. + L"В этом секторе ополченцев могут тренировать не более %d человек.", //No more than %d militia trainers are permitted in this sector. + L"Вы уверены?", + + //49-50 + L"Сжатие времени.", + L"Бак машины полон.", + + //51-52 Fast help text in mapscreen. + L"Возобновить сжатие времени (|П|р|о|б|е|л)", + L"Прекратить сжатие времени (|E|s|c)", + + //53-54 "Magic has unjammed the Glock 18" or "Magic has unjammed Raven's H&K G11" + L"%s починил(а) %s", + L"%s починил(а) %s (%s)", + + //55 + L"Нельзя включить сжатие времени при просмотре предметов в секторе.", + + L"CD Агония Власти не найден. Программа выходит в ОС.", + + L"Предметы успешно совмещены.", + + //58 + //Displayed with the version information when cheats are enabled. + L"Прогресс игры текущий/максимально достигнутый: %d%%/%d%%", + + L"Сопроводить Джона и Мэри?", + + // 60 + L"Кнопка нажата.", + + L"%s чувствует, что в бронежилете что-то треснуло!", + L"%s выпустил на %d больше пуль!", + L"%s выпустил на одну пулю больше!", + + L"Сперва закрой описание предмета!", + + L"Невозможно ускорить время - враждебные гражданские или кошки-убийцы в секторе.", // 65 +}; + +// HEADROCK HAM 3.5: Added sector name +STR16 gzCWStrings[] = +{ + L"Вызвать подкрепление из соседних секторов для %s?", +}; + +// WANNE: Tooltips +STR16 gzTooltipStrings[] = +{ + // Debug info + L"%s|Место: %d\n", + L"%s|Яркость: %d / %d\n", + L"%s|Дистанция до |Цели: %d\n", + L"%s|I|D: %d\n", + L"%s|Приказы: %d\n", + L"%s|Настрой: %d\n", + L"%s|Текущие |О|Д: %d\n", + L"%s|Текущее |Здоровье: %d\n", + L"%s|Текущая |Энергия: %d\n", + L"%s|Текущая |Мораль: %d\n", + L"%s|Текущий |Шок: %d\n", + L"%s|Текущий |Уровень |Подавления: %d\n", + // Full info + L"%s|Каска: %s\n", + L"%s|Жилет: %s\n", + L"%s|Брюки: %s\n", + // Limited, Basic + L"|Броня: ", + L"Каска", + L"Жилет", + L"Брюки", + L"Одет", + L"нет брони", + L"%s|П|Н|В: %s\n", + L"нет ПНВ", + L"%s|Противогаз: %s\n", + L"нет противогаза", + L"%s|Голова,|Слот |1: %s\n", + L"%s|Голова,|Слот |2: %s\n", + L"\n(в рюкзаке) ", + L"%s|Оружие: %s ", + L"без оружия", + L"Пистолет", + L"Пистолет-пулемёт", + L"Винтовка", + L"Ручной пулемёт", + L"Дробовик", + L"Нож", + L"Тяжелое оружие", + L"без каски", + L"без бронежилета", + L"без поножей", + L"|Броня: %s\n", + // Added - SANDRO + L"%s|Навык 1: %s\n", //%s|Skill 1: %s\n + L"%s|Навык 2: %s\n", + L"%s|Навык 3: %s\n", + // Additional suppression effects - sevenfm + L"%s|О|Д потеряно от |Подавления: %d\n", + L"%s|Сопротивление |Подавлению: %d\n", + L"%s|Эффективный |Уровень |Шока: %d\n", + L"%s|A|I |Мораль: %d\n", +}; + +STR16 New113Message[] = +{ + L"Началась буря.", + L"Буря закончилась.", + L"Начался дождь.", + L"Дождь закончился.", + L"Опасайтесь снайперов...", + L"Огонь на подавление!", //suppression fire! + L"*", //BRST - стабильна по количеству выпущенных пуль + L"***", //AUTO - регулируемая очередь + L"ГР", + L"ГР *", + L"ГР ***", + L"ПС", + L"ПС *", + L"ПС ***", + L"Штык", + L"Снайпер!", + L"Невозможно разделить деньги из-за предмета на курсоре.", + L"Точка высадки прибывающих наёмников перенесена в %s, так как запланированное место высадки %s захвачено противником.", + L"Выброшена вещь.", + L"Выброшены все вещи выбранной группы.", + L"Вещь продана голодающему населению Арулько.", + L"Проданы все вещи выбранной группы.", + L"Проверьте, что вашим бойцам мешает лучше видеть.", //You should check your goggles + // Real Time Mode messages + L"Уже в бою.", //In combat already + L"В пределах видимости нет врагов.", //No enemies in sight + L"Красться в режиме реального времени ОТКЛ.", //Real-time sneaking OFF + L"Красться в режиме реального времени ВКЛ.", //Real-time sneaking ON + //L"Enemy spotted! (Ctrl + x to enter turn based)", + L"Обнаружен враг!", // this should be enough - SANDRO + ////////////////////////////////////////////////////////////////////////////////////// + // These added by SANDRO + L"%s отлично справился с кражей!", //%s was successful at stealing! + L"%s: недостаточно очков действия, чтобы украсть все выбранные вещи.", //%s did not have enough action points to steal all selected items. + L"Хотите провести хирургическую операцию %s перед перевязкой? (Вы сможете восстановить около %i здоровья).", //Do you want to perform surgery on %s before bandaging? (You can heal about %i Health.) + L"Хотите провести хирургическую операцию %s? (Вы сможете восстановить около %i здоровья).", //Do you want to perform surgery on %s? (You can heal about %i Health.) + L"Do you wish to perform surgeries first? (%i patient(s))", // TODO.Translate + L"Хотите провести операцию сначала этому пациенту?", //Do you wish to perform the surgery on this patient first? + L"Apply first aid automatically with surgeries or without them?", + L"Do you want to perform surgery on %s before bandaging? (You can heal about %i health, *: %i by blood bag use.)", // TODO.Translate + L"Do you want to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"Do you wish to perform surgery on %s? (You can heal about %i Health, *: %i by blood bag use.)", + L"%s успешно прооперирован(а).", //Surgery on %s finished. + L"%s пропустил(а) удар в грудную клетку и теряет единицу максимального значения здоровья!", //%s is hit in the chest and loses a point of maximum health! + L"%s пропустил(а) удар в грудную клетку и теряет %d максимального значения здоровья!", //%s is hit in the chest and loses %d points of maximum health! + L"%s ослеплен взрывом!", + L"%s восстановил(а) одну ед. потерянного %s.", //%s has regained one point of lost %s + L"%s восстановил(а) %d ед. потерянного %s.", //%s has regained %d points of lost %s + L"Ваши навыки разведчика сорвали засаду противника.", + L"Благодаря вашим навыкам разведчика вы успешно избежали встречи с кошками-убицами!", + L"%s получает удар в пах и падает на землю от адской боли!", + ////////////////////////////////////////////////////////////////////////////////////// + L"Внимание: враг обнаружил труп!!!", + L"%s [%d патр.]\n%s %1.1f %s", + L"Недостаточно ОД! Нужно %d, у вас есть %d.", + L"Совет: %s", + L"Сила игрока: %d - Сила противника: %6.0f", + + L"Нельзя использовать навык!", + L"Нельзя строить, пока противник в секторе!", + L"Невозможно наблюдать за этим местом!", + L"Некорректные координаты для стрельбы артиллерии!", + L"Помехи на радиочастотах. Связь невозможна!", + L"Не удалось использовать радиостанцию!", + L"Недостаточно миномётных снарядов в секторе для постановки огня!", + L"Не обнаружены сигнальные мины в Items.xml!", + L"Не обнаружены осколочно-фугасные мины в Items.xml!", + L"Нет миномётов, невозможно организовать артналет!", + L"Режим радиопомех уже включен, нет необходимости делать это снова!", + L"Режим прослушивания звуков уже включен, нет необходимости делать это снова!", + L"Режим обнаружения уже включен, нет необходимости делать это снова!", + L"Режим обнаружения источника помех уже включен, нет необходимости делать это снова!", + L"%s не может применить %s к %s.", + L"%s вызывает подкрепления из %s.", + L"%s радиостанция обесточен.", + L"работающая радиостанция", + L"бинокль", + L"терпение", + L"%s's shield has been destroyed!", // TODO.Translate + L" DELAY", // TODO.Translate + L"Yes*", + L"Yes", + L"No", + L"%s applied %s to %s.", // TODO.Translate +}; + +STR16 New113HAMMessage[] = +{ + // 0 - 5 + L"%s в страхе пытается укрыться!", + L"%s прижат(а) к земле вражеским огнём!", + L"%s дал более длинную очередь!", + L"Вы не можете тренировать ополчение в этом секторе.", + L"Ополченец подобрал %s.", + L"Невозможно тренировать ополчение, пока в секторе враги!", + // 6 - 10 + L"%s имеет низкий навык Лидерства, чтобы тренировать ополченцев.", + L"В этом секторе может быть не больше %d тренеров патрульных групп.", + L"Нет свободных мест в %s или вокруг него для новой патрульной группы!", + L"Нужно иметь по %d ополченцев в каждом освобождённом секторе города %s, прежде чем можно будет тренировать патруль.", + L"Невозможно назначить занятие, пока враг в секторе!", + // 11 - 15 + L"%s имеет недостаточно интеллекта для этого занятия.", + L"Учереждение %s полностью укомплектованно персоналом.", + L"Один час этого назначения обойдётся вам в $%d. Согласны оплачивать?", + L"У вас недостаточно денег, чтобы оплатить за сегодня. $%d выплачено, ещё нужно $%d. Местным это не понравилось.", + L"У вас недостаточно денег, чтобы выплатить заработную плату всем рабочим. Теперь долг составил $%d. Местным это не понравилось.", + // 16 - 20 + L"Непогашенный долг составляет $%d, и нет денег, чтобы его погасить!", + L"Непогашенный долг составляет $%d. Вы не можете выбрать это назначение, пока не погасите задолженность.", + L"Непогашенный долг составляет $%d. Выплатить деньги по задолженности?", + L"Н/Д в этом секторе", + L"Дневной расход", + // 21 - 25 + L"Недостаточно денег для выплат нанятому ополчению. %d ополченцев было распущено и отправлено домой.", + L"Для того, чтобы изучить характеристики предмета во время боя, вам нужно сначала взять его.", + L"Для того, чтобы во время боя присоединить один предмет к другому, вам нужно сначала взять их.", + L"Для объединения предметов во время боя вам нужно сначала взять их.", +}; + +// HEADROCK HAM 5: Text dealing exclusively with Item Transformations. +STR16 gzTransformationMessage[] = +{ + L"Нет доступных преобразований", + L"%s был разделен на несколько частей.", + L"%s был разделен на несколько частей. Предметы находятся в инвентаре %s.", + L"Из-за нехватки места в инвентаре %s после преобразования некоторые предметы были брошены на землю.", + L"%s был разделен на несколько частей. Из-за нехватки места в инвентаре %s пришлось бросить некоторые предметы на землю.", + L"Преобразовать все %d предметов вместе? (Для того, чтобы преобразовать только один предмет, предварительно отделите его)", + // 6 - 10 + L"Разделить ящик и поместить в инвентарь", + L"Разделить на магазины емкостью %d", + L"%s был разделен на %d магазинов по %d патронов в каждом.", + L"%s был разделен и помещен в инвентарь %s.", + L"Недостаточно места в инвентаре %s для магазинов данного калибра!", + L"Instant mode", // TODO.Translate + L"Delayed mode", + L"Instant mode (%d AP)", + L"Delayed mode (%d AP)", +}; + +// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercLevelUp.xml" file! +// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 New113MERCMercMailTexts[] = +{ + // Gaston: Text from Line 39 in Email.edt + L"Пожалуйста, примите к сведению, что с настоящего момента гонорар Гастона увеличивается вследствие повышения его профессионального уровня. ± ± Спек Т. Кляйн ± ", + // Stogie: Text from Line 43 in Email.edt + L"Пожалуйста, примите к сведению, что повышение боевых навыков лейтенанта Хорга 'Сигары' влечет за собой повышение его гонорара. ± ± Спек Т. Кляйн ± ", + // Tex: Text from Line 45 in Email.edt + L"Прошу принять к сведению, что заслуги Текса позволяют ему требовать более достойной оплаты. Поэтому его гонорар был увеличен, чтобы соответствовать его умениям. ± ± Спек Т. Кляйн ± ", + // Biggens: Text from Line 49 in Email.edt + L"Ставим в известность, что отличная работа полковника Фредерика Биггенса заслуживает поощрения в виде повышения гонорара. Постановление считать действительным с текущего момента. ± ± Спек Т. Кляйн ± ", +}; + +// WANNE: This hardcoded text should not be used anymore in the game, because we now have those texts externalized in the "TableData\Email\EmailMercAvailable.xml" file! +// WANNE: This is email text (each 2 line), when we left a message on AIM and now the merc is back +STR16 New113AIMMercMailTexts[] = +{ + // Monk + L"FW с сервера A.I.M.: Письмо от Виктора Колесникова", + L"Привет. Это Монк. Получил твое сообщение. Я вернулся, так что можешь со мной связаться. ± ± Жду звонка. ±", + + // Brain + L"FW с сервера A.I.M.: Письмо от Янно Аллика", + L"Я готов обсудить задания. Для всего есть свое время и место. ± ± Янно Аллик ±", + + // Scream + L"FW с сервера A.I.M.: Письмо от Леннарта Вильде", + L"Леннарт Вильде вернулся!", + + // Henning + L"FW с сервера A.I.M.: Письмо от Хеннинга фон Браница", + L"Получил твое сообщение, спасибо. Если хочешь обсудить работу, свяжись со мной на сайте A.I.M. До встречи! ± ± Хеннинг фон Браниц ±", + + // Luc + L"FW с сервера A.I.M.: Письмо от Люка Фабра", + L"Послание получил, мерси! С удовольствием рассмотрю ваши предложения. Вы знаете, где меня найти. ± ± Жду с нетерпением ±", + + // Laura + L"FW с сервера A.I.M.: Письмо от Лоры Колин", + L"Привет! Спасибо, что оставили сообщение. Звучит интересно. ± ± Зайдите снова в A.I.M. Хотелось бы услышать больше. ± ± С уважением! ± ± Др. Лора Колин ± ± P.S. Надеюсь, Monk уже в вашей команде? ±", + + // Grace + L"FW с сервера A.I.M.: Письмо от Грациеллы Джирелли", + L"Вы хотели связаться со мной, но неудачно.± ± Семейное собрание. Думаю, вы понимаете. Я уже устала от семьи и буду рада. Если вы снова свяжетесь со мной через сайт A.I.M. ± ± Чао! ±", + + // Rudolf + L"FW с сервера A.I.M.: Письмо от Рудольфа Штайгера", + L"Ты знаешь, сколько звонков я получаю каждый день? Любой придурок считает, что может позвонить мне. ± ± Но я вернулся, если тебе есть чем меня заинтересовать. ±", + + // WANNE: Generic mail, for additional merc made by modders, index >= 178 + L"FW с сервера A.I.M.: Наёмник доступен", + L"Я на месте. Жду звонка чтобы обсудить условия контракта. ±", +}; + +// WANNE: These are the missing skills from the impass.edt file +// INFO: Do not replace the ± characters. They indicate the (-> Newline) from the edt files +STR16 MissingIMPSkillsDescriptions[] = +{ + // Sniper + L"Снайпер: У вас глаза ястреба. В свободное время вы развлекаетесь, отстреливая крылышки у мух с расстояния 100 метров! ± ", //Sniper: Eyes of a hawk, you can shoot the wings from a fly at a hundred yards! + // Camouflage + L"Маскировка: На вашем фоне даже кусты выглядят синтетическими! ± ", + // SANDRO - new strings for new traits added + // MINTY - Altered the texts for more natural English, and added a little flavour too + // Ranger + L"Рейнджер: Эти любители из Техаса вам и в подметки не годятся! ± ", + // Gunslinger + L"Ковбой: С одним револьвером или с двумя - вы так же опасны, как Билли Кид! ± ", + // Squadleader + L"Командир: Вы прирождённый лидер, солдаты просто боготворят вас! ± ", + // Technician + L"Механик: Ангус МакГайвер по сравнению с вами просто никто! Механика, электроника или взрывчатка - вы отремонтируете что угодно! ± ", + // Doctor + L"Доктор: Будь то царапины или вскрытое брюхо, требуется ампутация или же наоборот, пришить что-нибудь - вы с лёгкостью справитесь с любым недугом! ± ", + // Athletics + L"Спортсмен: Ваша скорость и выносливость достойны олимпийца! ± ", + // Bodybuilding + L"Культурист: Шварц? Да он слабак! Вы с лёгкостью завалите его одной левой! ± ", + // Demolitions + L"Подрывник: Сеять гранаты, как семена по полю; минировать поле, как картошку садить - густо и минимум 20 соток; а после созерцать полет конечностей... Вот то, ради чего вы живёте! ± ", + // Scouting + L"Разведчик: Ничто не скроется от вашего зоркого взгляда! ± ", + // Covert ops + L"Шпион: Агент 007 по сравнению с вами - дилетант! ± ", + // Radio Operator + L"Радист: Использование вами средств связи позволяет расширить тактические и стратегические возможности команды. ± ", + // Survival + L"Выживание: В условиях дикой природы вы чувствуете себя как дома. ± ", +}; + +STR16 NewInvMessage[] = +{ + L"В данный момент поднять рюкзак нельзя.", + L"Вы не можете одновременно носить 2 рюкзака.", + L"Вы потеряли свой рюкзак...", + L"Замок рюкзака работает лишь во время битвы.", + L"Вы не можете передвигаться с открытым рюкзаком.", + L"Вы уверены, что хотите продать весь хлам этого сектора голодающему населению Арулько?", + L"Вы уверены, что хотите выбросить весь хлам, валяющийся в этом секторе?", + L"Тяжеловато будет взбираться с полным рюкзаком на крышу. Может, снимем?", + L"Все рюкзаки сняты", + L"Все рюкзаки надеты", + L"%s снял(а) рюкзак", + L"%s надел(а) рюкзак", +}; + +// WANNE - MP: Multiplayer messages +STR16 MPServerMessage[] = +{ + // 0 + L"Запускается сервер RakNet...", + L"Сервер запущен, ожидание подключений...", + L"Теперь вам надо подключиться к серверу, нажав '2'.", + L"Сервер уже запущен.", + L"Не удалось запустить сервер. Прекращаю работу.", + // 5 + L"%d/%d клиентов готовы к режиму реального времени.", + L"Сервер отключился и прекратил свою работу.", + L"Сервер не запущен.", + L"Подождите пожалуйста, игроки все еще загружаются...", + L"Вы не можете изменять зону высадки после запуска сервера.", + // 10 + L"Отправка файла '%S' - 100/100", //Sent file '%S' - 100/100 + L"Завершена отправка файлов для '%S'.", //Finished sending files to '%S'. + L"Начата отправка файлов для '%S'.", //Started sending files to '%S'. + L"Используйте обзор воздушного пространства, чтобы выбрать карту для игры. Если вы ходите сменить карту, это нужно сделать до того, как вы нажмете кнопку 'Начать игру'.", +}; + +STR16 MPClientMessage[] = +{ + // 0 + L"Запускается клиент RakNet...", + L"Подключение к IP: %S ...", + L"Получены настройки игры:", + L"Вы уже подключены.", + L"Вы уже подключаетесь...", + // 5 + L"Клиент №%d - '%S' нанял %s.", + L"Клиент №%d - '%S' нанял еще бойца.", + L"Вы готовы к бою (всего готово = %d/%d).", + L"Вы отменили готовность к бою (всего готово = %d/%d).", + L"Отряды подтягиваются к месту битвы...", //'Starting battle...' + // 10 + L"Клиент №%d - '%S' готов к бою (всего готово = %d/%d).", + L"Клиент №%d - '%S' отменил готовность к бою (всего готово = %d/%d).", + L"Похоже, вы уже готовы к бою, однако, придется подождать остальных. (Если хотите изменить расположение своих бойцов, нажмите кнопку 'ДА').", + L"Начнем же битву!", + L"Для начала игры необходимо запустить клиент.", + // 15 + L"Игра не может быть начата, вы не наняли ни одного бойца.", + L"Ждем, когда сервер даст добро на доступ к лэптопу...", + L"Перехвачен", //Interrupted + L"Продолжение после перехвата", //Finish from interrupt + L"Координаты курсора:", //Mouse Grid Coordinates + // 20 + L"X: %d, Y: %d", + L"Номер сектора: %d", //Grid Number + L"Доступно лишь для сервера.", + L"Выберите, какую ступень игры принудительно запустить: ('1' - открыть лэптоп/найм бойцов) ('2' - запустить/загрузить уровень) ('3' - разблокировать пользовательский интерфейс) ('4' - завершить расстановку)", + L"Sector=%s, Max Clients=%d, Max Mercs=%d, Game_Mode=%d, Same Merc=%d, Damage Multiplier=%f, Timed Turns=%d, Secs/Tic=%d, Dis BobbyRay=%d, Dis Aim/Merc Equip=%d, Dis Morale=%d, Testing=%d", + // 25 + L"", //not used any more + L"Новый игрок: клиент №%d - '%S'.", + L"Команда: %d.",//not used any more + L"%s (клиент %d - '%S') был убит %s (клиент %d - '%S')", + L"Клиент №%d - '%S' выкинут из игры.", + // 30 + L"Принудительно дать ход клиенту. №1: <Отменить>, №2: %S, №3: %S, №4: %S", + L"Начался ход клиента №%d", + L"Запрос перехода в режим реального время...", + L"Переход в режим реального времени.", + L"Ошибка: что-то пошло не так, возвращаю обратно.", + // 35 + L"Открыть доступ к лэптопу? (Уверены что все игроки подключились?)", + L"Сервером был открыт доступ к лэптопу. Приступайте к найму бойцов!", + L"Перехватчик.", + L"Клиент не может изменять зону высадки, доступно лишь серверу.", + L"Вы отказались от предложения сдаться, потому что это не актуально в сетевой игре.", + // 40 + L"Все ваши бойцы были убиты!", + L"Активизирован режим наблюдения.", + L"Вы потерпели поражение!", + L"Извините, залезать на крышу в сетевой игре запрещено.", + L"Вы наняли %s.", + // 45 + L"Вы не можете изменить карту после начала закупки.", + L"Карта изменена на '%s'", + L"Клиент '%s' отключился, убираем его из игры.", + L"Вы были отключены от игры, возвращаемся в главное меню.", + L"Подключиться не удалось. Повторная попытка через 5 секунд (осталось %i попыток)", + //50 + L"Подключиться не удалось, сдаюсь...", + L"Вы не можете начать игру во время подключения других игроков.", + L"%s : %s", + L"Отправить всем", + L"Только союзникам", + // 55 + L"Не могу присоединиться к игре. Игра уже началась.", + L"%s (команда): %s", + L"#%i - '%s'", + L"%S - 100/100", + L"%S - %i/100", + // 60 + L"От сервера получены все необходимые файлы.", + L"'%S' закачка с сервера завершена.", + L"'%S' начата закачка с сервера.", + L"Нельзя начать игру пока все игроки не завершать приём файлов от сервера.", + L"Для игры на этом сервере необходимо скачать некоторые изменённые файлы, желаете продолжить?", + // 65 + L"Нажмите 'Готов' для входа на тактическую карту.", + L"Не удаётся подключиться. Версия вашего клиента (%S) отличается от версии сервера (%S).", + L"Вы убили вражеского солдата.", + L"Нельзя запустить игру потому что все команды одинаковые.", + L"Игра на сервере создана с Новым Инвентарём (NIV), а выбранное вами разрешение экрана не поддерживается NIV.", + // 70 + L"Невозможно сохранить принятый файл '%S'", + L"%s's бомба была разряжена %s", + L"Вы проиграли. Стыд и срам!", // All over red rover + L"Режим наблюдателя выключен", + L"Укажите номер клиента, который нужно кикнуть. №1: <Отменить>, №2: %S, №3: %S, №4: %S", + // 75 + L"Команда %s уничтожена.", + L"Ошибка при запуске клиента. Завершение операции.", + L"Клиент отсоединился и закрыт.", + L"Клиент не запущен.", + L"ИНФОРМАЦИЯ: Если игра зависла (полоса прогресса противника не двигается), сообщите серверу, чтобы нажал ALT + E для передачи хода обратно вам!", + // 80 + L"ход AI - осталось %d", +}; + +STR16 gszMPEdgesText[] = +{ + L"С", //N + L"В", //E + L"Ю", //S + L"З", //W + L"Ц", // "C"enter +}; + +STR16 gszMPTeamNames[] = +{ + L"Фокстрот", //Foxtrot + L"Браво", //Bravo + L"Дельта", //Delta + L"Чарли", //Charlie + L"Н/Д", // Acronym of Not Applicable +}; + +STR16 gszMPMapscreenText[] = +{ + L"Тип игры: ", //Game Type: + L"Игроков: ", //Players: + L"Всего бойцов: ", //Mercs each: + L"Нельзя изменять сторону высадки отряда после открытия лэптопа.", + L"Нельзя изменить имя команды после открытия лэптопа.", + L"Случ. бойцы: ", //Random Mercs: + L"Да", //Y + L"Сложность:", //Difficulty: + L"Версия сервера:", //Server Version: +}; + +STR16 gzMPSScreenText[] = +{ + L"Доска счёта", //Scoreboard + L"Продолжить", //Continue + L"Отмена", //Cancel + L"Игрок", //Player + L"Убито", //Kills + L"Погибло", //Deaths + L"Королевская армия", //Queen's Army + L"Выстрелов", //Hits + L"Промахи", //Misses + L"Меткость", //Accuracy + L"Нанесённый урон", //Damage Dealt + L"Полученный урон", //Damage Taken + L"Дождитесь, пожалуйста, пока сервер нажмёт кнопку 'Продолжить'." +}; + +STR16 gzMPCScreenText[] = +{ + L"Отмена", //Cancel + L"Подключаюсь к серверу...", //Connecting to Server + L"Получаю настройки от сервера...", //Getting Server Settings + L"Скачиваю выбранные файлы...", //Downloading custom files + L"Нажмите 'ESC' для отмены или 'Y' чтобы войти в чат.", //Press 'ESC' to cancel or 'Y' to chat + L"Нажмите 'ESC' для отмены", //Press 'ESC' to cancel + L"Выполнено." //Ready +}; + +STR16 gzMPChatToggleText[] = +{ + L"Отправть всем", + L"Отправть только союзникам", +}; + +STR16 gzMPChatboxText[] = +{ + L"Чат сетевой игры Jagged Alliance 2 v1.13", + L"Заметка: нажмите |В|В|О|Д для отправки сообщения, |К|Л|Ю|Ч для выхода из чата.", +}; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + // For old traits + L"На следующей странице вам нужно выбрать профессиональные навыки в соответствии со специализацией вашего наёмника. Вы можете выбрать не более двух разных навыков, либо один и владеть им в совершенстве.", + L"Можно выбрать всего один навык или вообще остаться без него. Тогда вам будут даны дополнительные баллы для улучшения некоторых параметров. Внимание: навыки электроники, стрельбы с двух рук и маскировки не могут быть экспертными.", + // For new major/minor traits + L"Следующий этап - выбор навыков, которые определят специализацию вашего наёмника. На первой странице можно выбрать до %d основных навыков, которые определят роль бойца в отряде. На второй - дополнительные навыки, подчеркивающие личные качества бойца.", + L"Всего можно взять не более %d навыков. Так, если вы не выбрали основной навык, то можно взять %d дополнительных. Если же вы выбрали оба основных навыка (или один улучшенный), то будет доступен лишь %d дополнительный...", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Откорректируйте свои физические параметры согласно вашим истинным способностям. И не стоит их завышать.", + L"I.M.P.: Параметры и умения.", //I.M.P. Attributes and skills review. + L"Бонус:", //Bonus Pts. + L"Ваш уровень", //Starting Level + // New strings for new traits + L"На следующей странице укажите свои физические параметры и умения. \"Физические параметры\" - это здоровье, ловкость, проворность, сила и интеллект. Они не могут быть ниже %d.", + L"Оставшиеся \"умения\", в отличие от физических параметров, могут быть установлены в ноль, что означает абсолютную некомпетентность в данных областях.", + L"Изначально все параметры установлены на минимум. Заметьте, что минимум для некоторых параметров определяется выбранными навыками, и вы не можете понизить их значение.", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P.: Анализ личных качеств", //I.M.P. Character Analysis + L"Следующий шаг - анализ ваших личных качеств. На первой странице вам на выбор будет предложен список черт характера. Уверены, что вам могут быть свойственны несколько из указанных черт, но выбрать нужно лишь одну. Выберите лишь самую ярко выраженную вашу черту характера.", + L"На второй странице вам будет предложен список проблем, которые, возможно, есть у вас. Если найдёте свою проблемы в списке, отметьте её. Будьте предельно честны при ответах, очень важно предоставить вашим потенциальным работодателям достоверную информацию о вас.", +}; + +STR16 gzIMPAttitudesText[]= +{ + L"Адекватный", //Normal + L"Общительный", //Friendly + L"Одиночка", //Loner + L"Оптимист", //Optimist + L"Пессимист", //Pessimist + L"Агрессивный", //Aggressive + L"Высокомерный", //Arrogant + L"Крутой", //Big Shot + L"Мудак", //Asshole + L"Трус", //Coward + L"I.M.P.: Жизненная позиция", //I.M.P. Attitudes +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Обычный", //Neutral + L"Общительный", //Sociable + L"Одиночка", //Loner + L"Оптимист", //Optimist + L"Самоуверенный", //Assertive + L"Мозговитый", //Intellectual + L"Простофиля", //Primitive + L"Агрессивный", //Aggressive + L"Флегматик", //Phlegmatic + L"Бесстрашный", //Dauntless + L"Миролюбивый", //Pacifist + L"Злобный", //Malicious + L"Хвастун", //Show-off + L"Трус", + L"I.M.P.: Личностные качества", //I.M.P. Character Traits +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P.: Расцветка и телосложение", + L"I.M.P.: Расцветка", + L"Выберите соответствующие цвета вашей кожи, волос и одежды, а также укажите ваше телосложение.", + L"Выберите соответствующие цвета вашей кожи, волос и одежды.", + L"Отметьте здесь, чтобы ваш персонаж \nдержал автомат одной рукой.", + L"\n(Важно: вам понадобится прилично сил для этого.)", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Цвет волос", //Hair Color + L"Цвет кожи", //Skin Color + L"Цвет майки", //Shirt Color + L"Цвет штанов", //Pants Color + L"Нормальное телосложение", //Normal Body + L"Мускулистое телосложение", //Big Body +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"Нет проблем", //No Disability + L"Непереносимость жары", //Heat Intolerant + L"Нервный", //Nervous + L"Клаустрафоб", //Claustrophobic + L"Не умеющий плавать", //Nonswimmer + L"Боязнь насекомых", //Fear of Insects + L"Забывчивый", //Forgetful + L"Психопат", //Psychotic + L"Глухой", //Deaf + L"Близорукий", //Shortsighted + L"Гемофилик", // Hemophiliac + L"Боязнь высоты", // Fear of Heights + L"Самоистезание", // Self-Harming + L"I.M.P.: Проблемы", //I.M.P. Disabilities +}; + +STR16 gzIMPDisabilityTraitEmailTextDeaf[] = +{ + L"Можем поспорить - вы рады, что это не голосовая почта.", + L"Вы слишком часто слушали громкую музыку на дискотеке или слишком близко слушали взрывы снарядов. Или это просто возраст. В любом случае, вашей команде стоит изучить язык жестов.", +}; + +STR16 gzIMPDisabilityTraitEmailTextShortSighted[] = +{ + L"Вы будете бесполезны, если потеряете свои очки.", + L"Это случается, если проводить много времени перед светящимися прямоугольниками. Нужно было есть больше морковок. Вы когда-нибудь видели кролика в очках?", +}; + +STR16 gzIMPDisabilityTraitEmailTextHemophiliac[] = +{ + L"Вы УВЕРЕНЫ, что это подходящая работа для Вас?", + L"Разве что Вы так круты, что никогда не получаете ран или сражаетесь только в хорошо оснащенном госпитале.", +}; + +STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]= +{ + L"Скажем просто, вы любите быть только на твердой земле.", + L"Вам больше нравятся миссии, в которых не надо покорять горы и лезть на высокие здания. Рекомендуем завоевать Голландию.", +}; + +STR16 gzIMPDisabilityTraitEmailTextSelfHarm[] = +{ + L"Возможно вы хотите убедиться в чистоте ваших ножей.", + L"У вас определенные проблемы с ножами. Т.е. вы не избегаете из, а даже наоборот, серьезно!", +}; + +// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility +STR16 gzFacilityErrorMessage[]= +{ + L"%s не хватает Силы, чтобы выполнить это действие.", + L"%s не хватает Ловкости, чтобы выполнить это действие.", + L"%s не хватает Проворности, чтобы выполнить это действие.", + L"%s не хватает Здоровья, чтобы выполнить это действие..", + L"%s не хватает Интеллекта, чтобы выполнить это действие.", + L"%s не хватает Меткости, чтобы выполнить это действие.", + // 6 - 10 + L"%s недостаточно развит Медицинский навык, чтобы выполнить это действие.", + L"%s недостаточно развит навык Механики, чтобы выполнить это действие.", + L"%s недостаточно развито Лидерство, чтобы выполнить это действие.", + L"%s недостаточно развит навык Взрывчатки, чтобы выполнить это действие.", + L"%s недостаточно Опыта, чтобы выполнить это действие.", + // 11 - 15 + L"У %s слишком плохой боевой дух, чтобы выполнить это действие", + L"%s слишком устал(а), чтобы выполнить это действие.", + L"В городе %s вам пока не доверяют. Местные отказываются выполнить этот приказ.", + L"Слишком много людей уже работают в %s.", + L"Слишком много людей уже выполняют эту задачу в %s.", + // 16 - 20 + L"%s не может найти вещи, которые нуждаются в ремонте.", + L"%s потерял(а) часть %s, пока работал в секторе %s!", + L"%s потерял(а) часть %s, пока работал над %s в %s!", + L"%s получил(а) травму, пока работал(а) в секторе %s, и требует незамедлительной медицинской помощи!", + L"%s получил(а) травму, пока работал(а) над %s в %s, и требует незамедлительной медицинской помощи!", + // 21 - 25 + L"%s получил(а) травму, пока работал(а) в секторе %s. Травма незначительная.", + L"%s получил(а) травму, пока работал(а) над %s в %s. Травма незначительная.", + L"Жители города %s расстроены тем, что %s пребывает в их городе.", + L"Жители города %s расстроены работой %s в %s.", + L"%s в секторе %s своими действиями понизил репутацию во всём регионе!", + // 26 - 30 + L"%s, работая над %s в %s, привёл(а) к понижению репутации во всём регионе!", + L"%s пьян(а).", + L"%s заболел(а) в секторе %s и вынужден(а) отложить текущую задачу.", + L"%s заболел(а) и не может продолжить работу над %s в %s.", + L"%s получил(а) травму в секторе %s.", + // 31 - 35 + L"%s получил(а) серьёзную травму в секторе %s.", + L"Здесь есть пленные, которые осведомлены о личности %s.", + L"%s хорошо известен как доносчик. Подождите еще хотя бы %d часов.", + + +}; + +STR16 gzFacilityRiskResultStrings[]= +{ + L"Сила", //Strength + L"Проворность", //Agility + L"Ловкость", //Dexterity + L"Интеллект", //Wisdom + L"Здоровье", //Health + L"Меткость", //Marksmanship + // 5-10 + L"Лидерство", //Leadership + L"Механика", //Mechanical skill + L"Медицина", //Medical skill + L"Взрывчатка", //Explosives skill +}; + +STR16 gzFacilityAssignmentStrings[]= +{ + L"Окружающая среда", //AMBIENT + L"Штат", //Staff + L"Питание", + L"Отдых", + L"Ремонт вещей", + L"Ремонт %s", // Vehicle name inserted here + L"Ремонт робота", + // 6-10 + L"Доктор", + L"Пациент", + L"Тренировка Силы", + L"Тренировка Ловкости", + L"Тренировка Проворности", + L"Тренировка Здоровья", + // 11-15 + L"Тренировка Меткости", + L"Тренировка Медицины", + L"Тренировка Механики", + L"Тренировка Лидерства", + L"Тренировка Взрывчатки", + // 16-20 + L"Ученик на Силу", + L"Ученик на Ловкость", + L"Ученик на Проворность", + L"Ученик на Здоровье", + L"Ученик на Меткость", + // 21-25 + L"Ученик на Медицину", + L"Ученик на Механику", + L"Ученик на Лидерство", + L"Ученик на Взрывчатку", + L"Тренер на Силу", + // 26-30 + L"Тренер на Ловкость", + L"Тренер на Проворность", + L"Тренер на Здоровье", + L"Тренер на Меткость", + L"Тренер на Медицину", + // 30-35 + L"Тренер на Механику", + L"Тренер на Лидерство", + L"Тренер на Взрывчатку", + L"Допрашивать пленных", + L"Осведомитель", + // 36-40 + L"Вести пропаганду", + L"Вести пропаганду", // spread propaganda (globally) + L"Собирать слухи", + L"Командовать ополчением", // militia movement orders +}; +STR16 Additional113Text[]= +{ + L"Для запуска Jagged Alliance 2 v1.13 в оконном режиме требуется установить 16-битное качество цветопередачи экрана", + L"Jagged Alliance 2 v1.13 в полноэкранном режиме с разрешением %d x %d не поддерживается установками вашего экрана.\nИзмените разрешение игры или используйте 16-битный оконный режим.", + L"Внутренняя ошибка при чтении места %s сохранённой игры: Число мест в сохранённой игре (%d) отличается от определенных параметрами настроек (%d) в ja2_options.ini", + // WANNE: Savegame slots validation against INI file + L"Наёмники (MAX_NUMBER_PLAYER_MERCS) / Машины (MAX_NUMBER_PLAYER_VEHICLES)", + L"Противник (MAX_NUMBER_ENEMIES_IN_TACTICAL)", + L"Твари (MAX_NUMBER_CREATURES_IN_TACTICAL)", + L"Ополчение (MAX_NUMBER_MILITIA_IN_TACTICAL)", + L"Гражданские (MAX_NUMBER_CIVS_IN_TACTICAL)", + +}; + +// SANDRO - Taunts (here for now, xml for future, I hope) +// MINTY - Changed some of the following taunts to sound more natural +STR16 sEnemyTauntsFireGun[]= +{ + L"Отведай-ка гостинца!", + L"Поздоровайся с моим дружком!", + L"Иди и получи!", + L"Ты мой!", + L"Сдохни!", + L"Обосрался, говнюк?", + L"Будет больно!", + L"Давай, ублюдок!", + L"Давай! Не весь же день тягаться!", + L"Иди к папочке!", + L"Закопаю моментом!", + L"Домой поедешь в деревянном костюме, неудачник!", + L"Эй, сыграем?", + L"Сидел бы дома, мудила!", + L"С-сука!", +}; + +STR16 sEnemyTauntsFireLauncher[]= +{ + + L"Будет, будет... Шашлык из тебя будет!", + L"Держи подарочек!", + L"Бах!", + L"Улыбочку!", +}; + +STR16 sEnemyTauntsThrow[]= +{ + L"Лови!", + L"Держи!", + L"Бум-бах, ой-ой-ой! Умирает зайчик мой!", + L"Это тебе.", + L"Муа-ха-ха!", + L"Лови, свинтус!", + L"Обожаю этот момент.", +}; + +STR16 sEnemyTauntsChargeKnife[]= +{ + L"Твой скальп мой, лошара!", + L"Иди к папочке.", + L"Сейчас посмотрим на твои кишочки!", + L"Порву, как Тузик грелку!", + L"Мясо!", +}; + +STR16 sEnemyTauntsRunAway[]= +{ + L"Кажется, мы в дерьме...", + L"Мне говорили вступать в армию, а не в это дерьмо!", + L"С меня хватит!", + L"О мой Бог!", + L"Нам не доплачивают за это дерьмо, валим отсюда...", + L"Мамочка!", + L"Я вернусь! И нас будут тысячи!", + +}; + +STR16 sEnemyTauntsSeekNoise[]= +{ + L"Я тебя слышу!", + L"Кто здесь?", + L"Что это было?", + L"Эй! Какого...", + +}; + +STR16 sEnemyTauntsAlert[]= +{ + L"Они здесь!", + L"Сейчас начнётся веселье!", + L"Я надеялся, что этого никогда не случится...", + +}; + +STR16 sEnemyTauntsGotHit[]= +{ + L"А-а-г-р-р!", + L"А-а-а!", + L"Как же... больно!", + L"Твою мать!", + L"Ты пожалеешь... у-м-хх... об этом.", + L"Что за!..", + L"Теперь ты меня... разозлил.", + +}; + +STR16 sEnemyTauntsNoticedMerc[]= +{ + L"Что за...!", + L"О боже!", + L"О черт!", + L"Противник!!!", + L"Тревога! Тревога!", + L"Вот он!", + L"Атаковать!", + +}; + +////////////////////////////////////////////////////// +// HEADROCK HAM 4: Begin new UDB texts and tooltips +////////////////////////////////////////////////////// +STR16 gzItemDescTabButtonText[] = +{ + L"Информация", + L"Параметры", + L"Доп. инфо", +}; + +STR16 gzItemDescTabButtonShortText[] = +{ + L"Инфо.", + L"Пар.", + L"Доп.", +}; + +STR16 gzItemDescGenHeaders[] = +{ + L"Основное", + L"Дополнительное", + L"Затраты ОД", + L"Стрельба очередью", +}; + +STR16 gzItemDescGenIndexes[] = +{ + L"Парам.", + L"0", + L"+/-", + L"=", +}; + +STR16 gzUDBButtonTooltipText[]= +{ + L"|И|н|ф|о|р|м|а|ц|и|о|н|н|а|я |ч|а|с|т|ь:\n \nЗдесь вы сможете ознакомиться\nс общим описанием предмета.", + L"|П|а|р|а|м|е|т|р|ы:\n \nЗдесь вы сможете ознакомиться\nс индивидуальными свойствами\nи параметрами предмета.\n \nДля оружия: нажмите еще раз,\nчтобы открыть вторую страницу.", + L"|Д|о|п|о|л|н|и|т|е|л|ь|н|а|я| |и|н|ф|о|р|м|а|ц|и|я:\n \nЗдесь вы сможете ознакомиться\nс бонусами, дающимися данным предметом.", +}; + +STR16 gzUDBHeaderTooltipText[]= +{ + L"|О|с|н|о|в|н|ы|е |п|а|р|а|м|е|т|р|ы:\n \nСвойства и данные этого предмета\n(оружие, броня и т.д.).", + L"|Д|о|п|о|л|н|и|т|е|л|ь|н|ы|е| |п|а|р|а|м|е|т|р|ы:\n \nДополнительные свойства и/или\nвозможные вторичные характеристики.", + L"|З|а|т|р|а|т|ы| |О|Д:\n \nКоличество очков действия, необходимых\nна стрельбу и другие действия с оружием.", + L"|С|т|р|е|л|ь|б|а| |о|ч|е|р|е|д|ь|ю| |- |п|а|р|а|м|е|т|р|ы|:\n \nПараметры данного оружия,\nкасающиеся стрельбы очередью.", +}; + +STR16 gzUDBGenIndexTooltipText[]= +{ + L"|С|и|м|в|о|л|ь|н|о|е| |о|б|о|з|н|а|ч|е|н|и|е| |п|а|р|а|м|е|т|р|о|в\n \nНаведите курсор на символ,\nчтобы увидеть, что он значит.", + L"|С|т|а|н|д|а|р|т|н|о|е |з|н|а|ч|е|н|и|е\n \nСтандартное значение праметров предмета\n(без штрафов и бонусов навески и боеприпасов).", + L"|Б|о|н|у|с|ы| |н|а|в|е|с|к|и\n \nБонусы или штрафы, обусловленные\nнавеской, боеприпасами или повреждениями вещи.", + L"|С|у|м|м|а|р|н|о|е| |з|н|а|ч|е|н|и|е\n \nСуммарное значение параметров предмета\nс учетом всех бонусов/штрафов навески и боеприпасов", +}; + +STR16 gzUDBAdvIndexTooltipText[]= +{ + L"Символьное обозначение параметров\n(наведите курсор на символ,\nчтобы увидеть что он значит).", + L"Бонус/штраф в положении |с|т|о|я.", + L"Бонус/штраф в положении |с|и|д|я.", + L"Бонус/штраф в положении |л|ё|ж|а.", + L"Бонус/штраф", +}; + +STR16 szUDBGenWeaponsStatsTooltipText[]= +{ + L"|Т|о|ч|н|о|с|т|ь", + L"|У|р|о|н", + L"|Д|а|л|ь|н|о|с|т|ь", + L"|С|л|о|ж|н|о|с|т|ь |о|б|р|а|щ|е|н|и|я |с |о|р|у|ж|и|е|м", + L"|Д|о|с|т|у|п|н|ы|е |у|р|о|в|н|и |п|р|и|ц|е|л|и|в|а|н|и|я", + L"|К|р|а|т|н|о|с|т|ь |у|в|е|л|и|ч|е|н|и|я |п|р|и|ц|е|л|а", + L"|Д|а|л|ь|н|о|с|т|ь |п|р|о|е|ц|и|р|о|в|а|н|и|я", + L"|С|к|р|ы|т|а|я |в|с|п|ы|ш|к|а |в|ы|с|т|р|е|л|а", + L"|Г|р|о|м|к|о|с|т|ь", + L"|Н|а|д|ё|ж|н|о|с|т|ь", + L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", + L"|М|и|н|. |р|а|с|с|т|о|я|н|и|е |д|л|я |б|о|н|у|с|а |п|р|и |п|р|и|ц|е|л|и|в|а|н|и|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|п|а|д|а|н|и|я", + L"|О|Д |н|а |в|с|к|и|д|ы|в|а|н|и|е", + L"|О|Д |н|а |в|ы|с|т|р|е|л", + L"|О|Д |н|а |с|т|р|е|л|ь|б|у |о|ч|е|р|е|д|ь|ю", + L"|О|Д |н|а |а|в|т|о|м|а|т|и|ч|е|с|к|у|ю |с|т|р|е|л|ь|б|у", + L"|О|Д |н|а |п|е|р|е|з|а|р|я|д|к|у", + L"|О|Д |н|а |д|о|с|ы|л|а|н|и|е |п|а|т|р|о|н|а", + L"|L|a|t|e|r|a|l |R|e|c|o|i|l", // No longer used + L"|П|о|л|н|а|я |о|т|д|а|ч|а", + L"|К|о|л|-|в|о |п|а|т|р|о|н|о|в |н|а |к|а|ж|д|ы|е |5 |О|Д", +}; + +STR16 szUDBGenWeaponsStatsExplanationsTooltipText[]= +{ + L"\n \nОпределяет, насколько пули, выпущенные\nиз этого оружия, будут отклоняться от\nточки прицеливания.\n \nДиапазон: 0-100.\nБольше - лучше.", + L"\n \nОпределяет средний урон от\nпуль, выпущенных из этого оружия,\nне учитывающий броню или ее пробитие.\n \nБольше - лучше.", + L"\n \nМаксимальное расстояние (в тайлах),\nна которое пролетит пуля из этого оружия,\nпрежде чем начнет падать на землю.\n \nБольше - лучше.", + L"\n \nОпределяет сложность обращения\nс оружием и стрельбы из него.\n \nБольшая сложность приводит к меньшему\nшансу попасть в цель при прицельной\nи особенно при неприцельной стрельбе.\n \nМеньше - лучше.", + L"\n \nЭто число доступных уровней прицеливания.\n \nЧем МЕНЬШЕ это число, тем БОЛЬШИЙ бонус\nдается за каждый уровень. То есть\nМЕНЬШЕЕ число уровней позволяет быстрее\nприцеливаться без потери точности.\n \nМеньше - лучше.", + L"\n \nПри значении больше 1.0 будет уменьшать кол-во\nошибок прицеливания на расстоянии.\n \nПомните, что сильное увеличение прицела снижает\nточность, если цель находится слишком близко.\n \nЗначение 1.0 означает, что оптический прицел не установлен.", + L"\n \nУменьшает кол-во ошибок прицеливания на расстоянии.\n \nЭтот эффект работает до данного расстояния,\nзатем начинает уменьшаться и, в конце концов,\nпропадает на значительном расстоянии.\n \nБольше - лучше.", + L"\n \nЕсли это свойство активно, то оружие\nне производит вспышку при выстреле.\n \nВраги не смогут обнаружить вас\nтолько по вспышке выстрела, но по-прежнему будут\nслышать вас.", + L"\n \nЭто расстояние в тайлах, на которое распространяется\nзвук стрельбы. В пределах этого расстояния\nвраги смогут услышать звук вашего выстрела.\n \nМеньше - лучше.", + L"\n \nОпределяет, как быстро состояние этого\nоружия ухудшается при использовании.\n \nБольше - лучше.", + L"\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nЖелтый - только техники и некоторые NPC\nмогут починить его свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", + L"\n \nМинимальное расстояние, на котором прицел\nдает бонус к точности прицеливания.", + L"\n \nМодификатор попадания, дающийся лазерным целеуказателем.", + L"\n \nЧисло ОД, необходимое для взятия этого\nоружия на изготовку. После взятия на\nизготовку более не требуется тратить\nэти ОД для всех последующих\nвыстрелов. Оружие автоматически снимается\nс изготовки, если его владелец выполняет\nлюбое другое действие, отличное от стрельбы\nили поворота.\n \nМеньше - лучше.", + L"\n \nЧисло ОД, необходимое для осуществления\nодиночной атаки этим оружием. Для\nстрелкового оружия - стоимость одиночного\nвыстрела без дополнительного\nприцеливания.\n \nЕсли эта иконка серого цвета, то одиночные\nатаки недоступны для этого оружия.\n \nМеньше - лучше.", + L"\n \nЧисло ОД, необходимых для стрельбы\nочередью.\n \nЧисло пуль в каждой очереди определяется\nсамим оружием и указано на этой иконке.\n \nЕсли эта иконка серого цвета, то стрельба\nочередью недоступна для этого оружия.\n \nМеньше - лучше.", + L"\n \nЧисло ОД, необходимых для автоматической\nстрельбы тремя пулями.\n \nЕсли вы хотите выстрелить большим\nчислом пуль, то вам необходимо затратить\nбольшее число ОД.\n \nЕсли эта иконка серого цвета, то автоматическая\nстрельба недоступна для этого оружия.\n \nМеньше - лучше.", + L"\n \nЧисло ОД, необходимых для перезарядки\nэтого оружия.\n \nМеньше - лучше.", + L"\n \nЧисло ОД, необходимых для досылания\nпатрона в патронник между выстрелами.\n \nМеньше - лучше.", + L"\n \nДистанция на которую может сместиться дуло\nв горизонтале между каждой пулей\n в очереди.\n \nПоложительное число указывает на смещение вправо.\nОтрицательное число указывает на смещение влево.\n \nЧем ближе к нулю, тем лучше.", // No longer used + L"\n \nРасстояние, на которое сдвинется ствол\nпри каждом выстреле в режиме очереди\nили автоматической стрельбы, если не задействуется\nсистема противодействия.\n \nМеньше - лучше.", + L"\n \nУказывает, какое количество пуль будет\nдобавлено к очереди или залпу при автоматической\nстрельбе за каждые 5 ОД.\n \nБольше - лучше.", + L"\n \nОпределяет сложность починки этого оружия,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nЖелтый - только некоторые NPC\nмогут починить ее свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", +}; + +STR16 szUDBGenArmorStatsTooltipText[]= +{ + L"|С|т|е|п|е|н|ь |з|а|щ|и|т|ы", + L"|П|о|к|р|ы|т|и|е", + L"|С|к|о|р|о|с|т|ь |у|х|у|д|ш|е|н|и|я", + L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", +}; + +STR16 szUDBGenArmorStatsExplanationsTooltipText[]= +{ + L"\n \nЭто основное качество брони, оно определяет\nкакой урон будет заблокирован защитой.\n \nПомните, что бронебойные атаки и различные\nслучайные факторы могут повлиять на\nокончательное снижение урона.\n \nБольше - лучше.", + L"\n \nОпределяет, какая часть защищаемой\nчасти тела покрыта броней. Если покрытие\nменьше 100%, то у любой атаки есть определенный\nшанс на попадание в незащищенную часть тела\nи нанесение ей максимального урона.\n \nБольше - лучше.", + L"\n \nОпределяет, как быстро состояние этой\nброни ухудшается при попадании в\nнее в зависимости от урона от атаки.\n \nМеньше - лучше.", + L"\n \nОпределяет сложность починки этой брони,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nЖелтый - только техники и некоторые NPC\nмогут починить ее свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", + L"\n \nОпределяет сложность починки этой брони,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nЖелтый - только некоторые NPC\nмогут починить ее свыше порога ремонта.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", +}; + +STR16 szUDBGenAmmoStatsTooltipText[]= +{ + L"|П|р|о|б|и|т|и|е |б|р|о|н|и", + L"|У|р|о|н |п|о|с|л|е |п|р|о|б|и|т|и|я", + L"|У|р|о|н |п|е|р|е|д |п|о|п|а|д|а|н|и|е|м", + L"|В|л|и|я|н|и|е |н|а |т|е|м|п|е|р|а|т|у|р|у", + L"|У|р|о|н |о|т |я|д|а", + L"|В|л|и|я|н|и|е |н|а |з|а|г|р|я|з|н|е|н|и|е", +}; + +STR16 szUDBGenAmmoStatsExplanationsTooltipText[]= +{ + L"\n \nСпособность пули пробить броню\nцели. При значении меньше 1.0 пуля снижает\nстепень защиты брони, в которую она\nпопадет. При значении больше 1.0 пуля\nувеличивает степень защиты брони.\n \nМеньше - лучше.", + L"\n \nОпределяет, как будет изменяться урон\nот пули, пробившей броню.\n \nПри значении больше 1.0 урон увеличивается.\n \nПри значении меньше 1.0 урон уменьшается.\n \nБольше - лучше.", + L"\n \nМножитель, применяющийся к показателю\nурона непосредственно перед попаданием\nв цель.\n \nПри значении больше 1.0 урон увеличивается.\n \nПри значении меньше 1.0 урон уменьшается.\n \nБольше - лучше.", + L"\n \nДополнительное тепло, вырабатываемое этими\nбоеприпасами.\n \nМеньше - лучше.", + L"\n \nОпределяет, какой процент урона пули\nбудет ядовитым.", + L"\n \nДополнительное загрязнение, вырабатываемое\nэтими боеприпасами.\n \nМеньше - лучше.", +}; + +STR16 szUDBGenExplosiveStatsTooltipText[]= +{ + L"|У|р|о|н", + L"|У|р|о|н |о|г|л|у|ш|е|н|и|я", + L"|В|з|в|р|ы|в |п|р|и |к|о|н|т|а|к|т|е", + L"|Р|а|д|и|у|с |в|з|р|ы|в|а", + L"|Р|а|д|и|у|с |о|г|л|у|ш|е|н|и|я", + L"|Р|а|д|и|у|с |ш|у|м|а", + L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |с|л|е|з|о|т|о|ч|и|в|о|г|о |г|а|з|а", + L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |г|о|р|ч|и|ч|н|о|г|о |г|а|з|а", + L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |с|в|е|т|а", + L"|Н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |д|ы|м|а", + L"|н|а|ч|а|л|ь|н|ы|й |р|а|д|и|у|с |о|г|н|я", + L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |с|л|е|з|о|т|о|ч|и|в|о|г|о |г|а|з|а", + L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |г|о|р|ч|и|ч|н|о|г|о |г|а|з|а", + L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |с|в|е|т|а", + L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |д|ы|м|а", + L"|К|о|н|е|ч|н|ы|й |р|а|д|и|у|с |о|г|н|я", + L"|Д|л|и|т|е|л|ь|н|о|с|т|ь |э|ф|ф|е|к|т|а", + // HEADROCK HAM 5: Fragmentation + L"|Ч|и|с|л|о |о|с|к|о|л|к|о|в", + L"|У|р|о|н |о|т |о|с|к|о|л|к|о|в", + L"|Д|а|л|ь|н|о|с|т|ь |р|а|з|л|ё|т|а |о|с|к|о|л|к|о|в", + // HEADROCK HAM 5: End Fragmentations + L"|Г|р|о|м|к|о|с|т|ь", + L"|Н|е|с|т|а|б|и|л|ь|н|о|с|т|ь", + L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", +}; + +STR16 szUDBGenExplosiveStatsExplanationsTooltipText[]= +{ + L"\n \nУрон, наносимый взрывом.\n \nОбратите внимание, что бризантная взрывчатка\nнаносит этот урон только один раз (при взрыве),\nа взрывчатка с длительным эффектом наносит\nурон каждый ход, до тех пор, пока эффект\nне закончится.\n \nБольше - лучше.", + L"\n \nОглушающий урон, наносимый взрывом.\n \nОбратите внимание, что бризантная взрывчатка\nнаносит этот урон только один раз (при взрыве),\nа взрывчатка с длительным эффектом наносит\nурон каждый ход, до тех пор, пока эффект\nне закончится.\n \nБольше - лучше.", + L"\n \nЭта взрывчатка не будет отскакивать от\nпрепятствий, а взорвется при контакте с ними.", + L"\n \nРадиус взрывной волны.\n \nЦели будут получать тем меньший урон,\nчем дальше они от эпицентра взрыва.\n \nБольше - лучше.", + L"\n \nРадиус оглушающей волны.\n \nЦели будут получать тем меньший урон,\nчем дальше они от эпицентра взрыва.\n \nБольше - лучше.", + L"\n \nРасстояние, которое преодолеет шум от\nэтой ловушки. Солдаты в пределах этого расстояния\nсмогут услышать шум и поднять тревогу.\n \nБольше - лучше.", + L"\n \nНачальный радиус действия слезоточивого газа.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nесли только на них не будет противогаза.\n \nБольше - лучше.", + L"\n \nНачальный радиус действия горчичного газа.\n \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"\n \nНачальный радиус пожара.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nесли только на них не будет противогаза.\n \nБольше - лучше.", + L"\n \nКонечный радиус действия слезоточивого газа.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nесли только на них не будет противогаза.\n \nБольше - лучше.", + L"\n \nКонечный радиус действия горчичного газа.\n \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"\n \nКонечный радиус пожара.\n \nВраги, попавшие в этот радиус, будут получать\nурон и оглушающий урон каждый ход,\nеслитолько на них не будет противогаза.\n \nБольше - лучше.", + L"\n \nДлительность эффекта.\n \nКаждый ход радиус эффекта увеличивается\nна один тайл в каждом направлении, пока не\nдостигнет конечного радиуса. По окончании\nвремени действия эффект полностью\nисчезает.\n \nБольше - лучше.", + // HEADROCK HAM 5: Fragmentation + L"\n \nЧисло осколков при взрыве.\n \nОсколки действуют по принципу пуль, и они могут\nпопасть в любого, кто стоит достаточно близко\nк взрыву.\n \nБольше - лучше.", + L"\n \nПотенциальный урон от каждого осколка,\nобразовавшегося при взрыве.\n \nБольше - лучше.", + L"\n \nСреднее расстояние, на которое полетят осколки\nот взрыва. Некоторые могут пролететь\nгораздо дальше, а некоторые - ближе среднего.\n \nБольше - лучше.", + // HEADROCK HAM 5: End Fragmentations + L"\n \nРасстояние в тайлах, в пределах которого\nсолдаты и наёмники услышат звук взрыва.\n \nВраги, услышавшие его, поймут, что вы в\nсекторе.\n \nМеньше - лучше.", + L"\n \nЭто значение определяет вероятность в\nпроцентах, что эта взрывчатка спонтанно взорвется\nпри ее повреждении (например, при близком взрыве).\n \nНошение с собой в бою нестабильной\nвзрывчатки крайне опасно и не\nрекомендуется.\n \nДиапазон: 0-100.\nМеньше - лучше. ", + L"\n \nОпределяет сложность починки взрывчатки,\nа также то, кто сможет полностью починить ее.\nЗеленый - может починить кто угодно.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", +}; + +STR16 szUDBGenCommonStatsTooltipText[]= +{ + L"|Л|ё|г|к|о|с|т|ь |п|о|ч|и|н|к|и", + L"|Д|о|с|т|у|п|н|ы|й |о|б|ъ|ё|м", + L"|О|б|ъ|ё|м", +}; + +STR16 szUDBGenCommonStatsExplanationsTooltipText[]= +{ + L"\n \nОпределяет сложность починки этого предмета,\nа также то, кто сможет полностью починить его.\nЗеленый - может починить кто угодно.\n \nКрасный - эту вещь починить невозможно.\n \nБольше - лучше.", + L"\n \nОпределяет сколько доступно места в этом держателе типа MOLLE.\n \nБольше - лучше.", + L"\n \nОпределяет как много места займёт этот MOLLE карман.\n \nМеньше - лучше.", +}; + +STR16 szUDBGenSecondaryStatsTooltipText[]= +{ + L"|Т|р|а|с|с|и|р|у|ю|щ|и|е |п|а|т|р|о|н|ы", + L"|П|р|о|т|и|в|о|т|а|н|к|о|в|ы|е |п|а|т|р|о|н|ы", + L"|И|г|н|о|р|и|р|у|е|т |б|р|о|н|ю", + L"|К|и|с|л|о|т|н|ы|е |п|а|т|р|о|н|ы", + L"|Р|а|з|р|у|ш|а|ю|щ|и|е |з|а|м|к|и |п|а|т|р|о|н|ы", + L"|У|с|т|о|й|ч|и|в|ы|й |к|о |в|з|р|ы|в|а|м", + L"|В|о|д|о|н|е|п|р|о|н|и|ц|а|е|м|ы|й", + L"|Э|л|е|к|т|р|о|н|и|к|а", + L"|П|р|о|т|и|в|о|г|а|з", + L"|Н|у|ж|д|а|е|т|с|я |в |б|а|т|а|р|е|й|к|а|х", + L"|М|о|ж|е|т |в|з|л|а|м|ы|в|а|т|ь |з|а|м|к|и", + L"|М|о|ж|е|т |р|е|з|а|т|ь |п|р|о|в|о|л|о|к|у", + L"|М|о|ж|е|т |р|а|з|р|у|ш|а|т|ь |з|а|м|к|и", + L"|М|е|т|а|л|л|о|и|с|к|а|т|е|л|ь", + L"|П|у|л|ь|т |д|и|с|т|а|н|ц|и|о|н|н|о|г|о |у|п|р|а|в|л|е|н|и|я", + L"|Д|и|с|т|а|н|ц|и|о|н|н|ы|й |д|е|т|о|н|а|т|о|р", + L"|Д|е|т|о|н|а|т|о|р |с |т|а|й|м|е|р|о|м", + L"|С|о|д|е|р|ж|и|т |т|о|п|л|и|в|о", + L"|Н|а|б|о|р |и|н|с|т|р|у|м|е|н|т|о|в", + L"|Т|е|п|л|о|в|а|я |о|п|т|и|к|а", + L"|Р|е|н|т|г|е|н|-|п|р|и|б|о|р", + L"|С|о|д|е|р|ж|и|т |п|и|т|ь|е|в|у|ю |в|о|д|у", + L"|С|о|д|е|р|ж|и|т |а|л|к|о|г|о|л|ь", + L"|А|п|т|е|ч|к|а |п|е|р|в|о|й |п|о|м|о|щ|и", + L"|М|е|д|и|ц|и|н|с|к|и|й |н|а|б|о|р", + L"|Б|о|м|б|а |д|л|я |з|а|м|к|о|в", + L"|Н|а|п|и|т|о|к", + L"|П|и|щ|а", + L"|П|а|т|р|о|н|н|а|я |л|е|н|т|а", + L"|Ж|и|л|е|т |д|л|я |п|а|т|р|о|н|о|в", + L"|Н|а|б|о|р |д|л|я |р|а|з|м|и|н|и|р|о|в|а|н|и|я", + L"|С|к|р|ы|т|ы|й |п|р|е|д|м|е|т", + L"|Н|е|в|о|з|м|о|ж|н|о |п|о|в|р|е|д|и|т|ь", + L"|С|д|е|л|а|н|о |и|з |м|е|т|а|л|л|а", + L"|Т|о|н|е|т", + L"|Д|в|у|р|у|ч|н|о|е", + L"|Б|л|о|к|и|р|у|е|т |о|т|к|р|ы|т|ы|й |п|р|и|ц|е|л", + L"|С|н|а|р|я|д |п|р|о|т|и|в |б|р|о|н|и", + L"|З|а|щ|и|т|а |д|л|я |л|и|ц|а", + L"|И|н|ф|е|к|ц|и|о|н|н|а|я |з|а|щ|и|т|а", // 39 + L"|S|h|i|e|l|d", // TODO.Translate + L"|C|a|m|e|r|a", // TODO.Translate + L"|B|u|r|i|a|l |M|o|d|i|f|i|e|r", + L"|E|m|p|t|y |B|l|o|o|d |B|a|g", // TODO.Translate + L"|B|l|o|o|d |B|a|g", // 44 + L"|R|e|s|i|s|t|a|n|t |t|o |F|i|r|e", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |M|o|d|i|f|i|e|r", + L"|H|a|c|k|i|n|g |M|o|d|i|f|i|e|r", + L"|M|e|d|i|c|a|l |S|p|l|i|n|t", // TODO.Translate + L"|F|i|r|e |R|e|t|a|r|d|a|n|t |A|m|m|o", // 49 TODO.Translate + L"|I|n|c|e|n|d|i|a|r|y |A|m|m|o", + L"|B|e|l|t| |F|e|d", +}; + +STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]= +{ + L"\n \nЭти боеприпасы создают трассирующий\nэффект при стрельбе очередью или в режиме\nавтоматической стрельбы.\n \nТрассеры помогают точнее стрелять.\n \nТакже трассеры создают области света,\nкоторые освещают цель в темноте. Но они\nтакже выдают врагу положение стрелка.\n \nТрассирующие патроны автоматически отменяют\nдействие любых навесок по гашению вспышки\nвыстрела, установленных на том же оружии.", + L"\n \nЭти боеприпасы могут повредить танковую\nброню. Патроны БЕЗ этого свойства не\nнанесут никакого урона никакому танку.\n \nДаже с этим свойством большинство видов\nоружия не нанесут большого урона, так что\nне ожидайте чего-то особенного.", + L"\n \nЭти боеприпасы полностью игнорируют\nброню.\n \nПри стрельбе по бронированной цели патроны\nбудут вести себя так, как будто цель\nабсолютно не защищена, и нанесут максимально большой\nурон цели.", + L"\n \nПри попадании этих боеприпасов в броню\nпоследняя очень быстро будет разрушаться.\n \nПотенциально с их помощью можно полностью\nлишить цель брони.", + L"\n \nЭти боеприпасы отлично работают\nпри разрушении замков.\n \nСтрельба ими по запертым дверям или контейнерам\nнанесет огромный урон замку.", + L"\n \nЭта броня в три раза более устойчива\nко взрывам.\n \nКогда взрыв попадет в броню, степень защиты\nпоследней будет считаться утроенной\nпо сравнению со стандартным значением.", + L"\n \nЭта вещь водонепронимаема. Она не\nполучает повреждений при погружении под воду.\n \nСостояние вещей БЕЗ этого свойства постепенно\nухудшается, если их владелец плывет.", + L"\n \nСложнотехническая вещь с электроникой.\n \nТакие вещи сложнее чинить, по крайней\nмере без навыков электронщика.", + L"\n \nКогда эта вещь находится на лице\nперсонажа, она защищает его ото всех\nвидов ядовитых газов.\n \nУчтите, что некоторые газы имеют коррозийный\nэффект, так что будут разъедать и маску.", + L"\n \nЭтому предмету требуются батарейки.\nБез них вы не сможете включить данный предмет.\n \nВставляются батарейки так же, как прицел\nприкрепляется к оружию.", + L"\n \nЭтот предмет можно использовать\nдля вскрытия запертых дверей и контейнеров.\n \nВзлом не производит шума, но требует\nзначительных навыков механика, без которых\nвозможно вскрыть лишь самые простые\nзамки. Эта вещь улучшает шанс\nвзлома на ", //JMich_SkillsModifiers: needs to be followed by a number + L"\n \nПри помощи этой вещи можно делать\nпроходы в проволочных заграждениях.\n \nЭто может дать быстрый доступ к\nфлангам или тылу врага.", + L"\n \nЭтой вещью можно разбивать запертые\nдвери или контейнеры. Разбивание требует\nнедюжинной силы, производит много шума и быстро\nтратит энергию персонажа. Однако это отличный\nспособ вскрыть замок без подходящих\nнавыков или отмычек. Эта вещь улучшает\nшанс взлома на ", //JMich_SkillsModifiers: needs to be followed by a number + L"\n \nЭтот предмет используется для нахождения\nобъектов под землей.\n \nОсновное назначение - поиск установленных мин.", + L"\n \nС помощью этого предмета можно\nвзрывать бомбы, на которых установлен\nдистанционный детонатор.\n \nСначала установите бомбу, затем\nвоспользуйтесь дистанционным детонатором для\nвзрыва в нужное вам время.", + L"\n \nЕсли этот детонатор присоединить\nк взрывчатке, то его можно будет взорвать\nпри помощи пульта дистанционного\nуправления.\n \nВзрывчатка с таким детонатором полезна в качестве\nловушки, потому как взрывается только по\nвашему приказу.", + L"\n \nПосле присоединения этого детонатора к\nвзрывчатке и взвода его начинется обратный\nотсчет. По достижении нуля взрывчатка\nвзрывается.", + L"\n \nЭтот предмет содержит в себе\nбензин.\n \nОн может пригодиться, если вам необходимо\nбудет заправить машину.", + L"\n \nЭтот предмет содержит в себе\nразличные инструменты, при помощи которых\nможно чинить другие вещи.\n \nТакой набор необходим, если вы\nхотите дать задание наёмникам чинить\nвещи. Эта вещь изменяет эффективность\nремонта на ", //JMich_SkillsModifiers: need to be followed by a number + L"\n \nЕсли надеть этот предмет, то с его\nпомощью вы сможете увидеть врагов\nчерез стены благодаря выделяемому\nими теплу.", + L"\n \nЭто устройство можно использовать\nдля нахождения врагов при помощи\nрентгеновских лучей.\n \nОно покажет местонахождение всех\nврагов в определенном радиусе на короткое\nвремя.\n \nДержите подальше от репродуктивных органов!", + L"\n \nВ этом предмете находится свежая\nпитьевая вода.\n \nИспользуйте, когда появится жажда.", + L"\n \nВ этом предмете находится огненная вода,\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лечением.", + L"\n \nС помощью этой вещи можно\nвзрывать запертые двери и контейнеры.\n \nДля правильного использования требуется\nнавык обращения со взрывчаткой.\n \nВзрыв очень громкий, и он опасен\nдля большинства персонажей.", + L"\n \nЭтот предмет утолит вашу жажду,\nесли вы выпьете его.", + L"\n \nЭтот предмет утолит ваш голод\n,если вы съедите его.", + L"\n \nВы сможете питать патронами\nчей-нибудь пулемёт, если будете держать\nэту ленту в руках.", + L"\n \nВ этом жилете можно хранить\nпатронные ленты для боепитания вашего\nпулемёта.", + L"\n \nЭтот предмет улучшает шанс\nобезвреживания ловушки на ", + L"\n \nЭтот предмет и все, что к нему\nприсоединено или находится внутри\nнего, скрыто от посторонних глаз.", + L"\n \nЭтот предмет нельзя повредить.", + L"\n \nЭтот предмет сделан из металла.\nОн получает меньше урона, чем\nдругие вещи.", + L"\n \nЭтот предмет тонет в воде.", + L"\n \nДля использования этого предмета\nтребуются обе руки.", + L"\n \nЭтот предмет блокирует открытые\nприцельные приспособления оружия, так что вы не\nсможете воспользоваться ими.", + L"\n \nЭтот боеприпас может уничтожать тонкие стены\nи некоторые другие объекты.", + L"\n \nЕсли одето на лицо, понижает шанс\nзаражения от других людей.", + L"\n \nЕсли хранить в своём кармане,\nпонижается шанс заражения\n от других людей.", + L"\n \nIf equipped in a hand, this will block incoming damage.", // TODO.Translate + L"\n \nYou can take photos with this.", // TODO.Translate + L"\n \nThis item makes you more effective at burying corpses.", + L"\n \nA paramedic can extract blood\nfrom a donor with this.", // TODO.Translate + L"\n \nA paramedic can use up this item to increase\nthe amount of health regenerated by surgery.", // 44 + L"\n \nThis armor lowers fire damage by %i%%.", + L"\n \nThis item makes you more effective at\nadministrative work by %i%%.", + L"\n \nThis item improves your hacking skills by %i%%.", + L"\n \nOnce applied, this item increases the healing\nspeed of severe wounds to either your arms or legs.", // TODO.Translate + L"\n \nThis ammo can extinguish fire.", // 49 TODO.Translate + L"\n \nThis ammo can cause fire.", + L"\n \nThis gun can be belt fed\nfrom a compatible LBE\nor by another merc.", +}; + +STR16 szUDBAdvStatsTooltipText[]= +{ + L"|М|о|д|и|ф|и|к|а|т|о|р |т|о|ч|н|о|с|т|и", + L"|Ф|и|к|с|и|р|о|в|а|н|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |с|т|р|е|л|ь|б|ы", + L"|П|р|о|ц|е|н|т|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |с|т|р|е|л|ь|б|ы", + L"|Ф|и|к|с|и|р|о|в|а|н|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |п|р|и|ц|е|л|и|в|а|н|и|я", + L"|П|р|о|ц|е|н|т|н|ы|й |м|о|д|и|ф|и|к|а|т|о|р |п|р|и|ц|е|л|и|в|а|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |д|о|с|т|у|п|н|ы|х |у|р|о|в|н|е|й |п|р|и|ц|е|л|и|в|а|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|о|г|а |п|р|и|ц|е|л|и|в|а|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |о|б|р|а|щ|е|н|и|я |с |о|р|у|ж|и|е|м ", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|а|д|е|н|и|я |п|у|л|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |о|т|с|л|е|ж|и|в|а|н|и|я |ц|е|л|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |у|р|о|н|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |р|у|к|о|п|а|ш|н|о|г|о |у|р|о|н|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |д|а|л|ь|н|о|с|т|и", + L"|К|р|а|т|н|о|с|т|ь |у|в|е|л|и|ч|е|н|и|я |п|р|и|ц|е|л|а", + L"|Д|а|л|ь|н|о|с|т|ь |п|р|о|е|ц|и|р|о|в|а|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |б|о|к|о|в|о|й |о|т|д|а|ч|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |в|е|р|т|и|к|а|л|ь|н|о|й |о|т|д|а|ч|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |м|а|к|с|и|м|а|л|ь|н|о|г|о |п|р|о|т|и|в|о|д|е|й|с|т|в|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р т|о|ч|н|о|с|т|и |п|р|и |п|р|о|т|и|в|о|д|е|й|с|т|в|и|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |ч|а|с|т|о|т|ы |п|р|о|т|и|в|о|д|е|й|с|т|в|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |в|с|е|х |О|Д", + L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |н|а |в|с|к|и|д|ы|в|а|н|и|е", + L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |о|д|н|о|й |а|т|а|к|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |о|ч|е|р|е|д|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |а|в|т|о|м|а|т|и|ч|е|с|к|о|й |с|т|р|е|л|ь|б|ы", + L"|М|о|д|и|ф|и|к|а|т|о|р |О|Д |п|е|р|е|з|а|р|я|д|к|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |р|а|з|м|е|р|а |м|а|г|а|з|и|н|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |р|а|з|м|е|р|а |о|ч|е|р|е|д|и", + L"|С|к|р|ы|т|а|я |в|с|п|ы|ш|к|а |в|ы|с|т|р|е|л|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |г|р|о|м|к|о|с|т|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |р|а|з|м|е|р|а |п|р|е|д|м|е|т|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |н|а|д|ё|ж|н|о|с|т|и", + L"|Л|е|с|н|о|й |к|а|м|у|ф|л|я|ж", + L"|Г|о|р|о|д|с|к|о|й |к|а|м|у|ф|л|я|ж", + L"|П|у|с|т|ы|н|н|ы|й |к|а|м|у|ф|л|я|ж", + L"|З|и|м|н|и|й |к|а|м|у|ф|л|я|ж", + L"|М|о|д|и|ф|и|к|а|т|о|р |с|к|р|ы|т|н|о|с|т|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |с|л|ы|ш|и|м|о|с|т|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |о|б|ы|ч|н|о|й |в|и|д|и|м|о|с|т|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |н|о|ч|н|о|й |в|и|д|и|м|о|с|т|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |д|н|е|в|н|о|й |в|и|д|и|м|o|с|т|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |в|и|д|и|м|о|с|т|и |п|р|и |я|р|к|о|м |с|в|е|т|е", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|е|щ|е|р|н|о|й |в|и|д|и|м|о|с|т|и", + L"|Т|у|н|н|е|л|ь|н|о|е |з|р|е|н|и|е", + L"|М|а|к|с|и|м|а|л|ь|н|о|е |п|р|о|т|и|в|о|д|е|й|с|т|в|и|е", + L"|Ч|а|с|т|о|т|а |п|р|о|т|и|в|о|д|е|й|с|т|в|и|я", + L"|Б|о|н|у|с| |п|о|п|а|д|а|н|и|я", + L"|Б|о|ну|с |п|р|и|ц|е|л|и|в|а|н|и|я", + L"|Т|е|м|п|е|р|а|т|у|р|а |о|д|н|о|г|о |в|ы|с|т|р|е|л|а", + L"|С|к|о|р|о|с|т|ь |о|с|т|ы|в|а|н|и|я", + L"|П|о|р|о|г |о|с|е|ч|к|и", + L"|П|о|р|о|г |п|о|в|р|е|ж|д|е|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |т|е|м|п|е|р|а|т|у|р|ы", + L"|М|о|д|и|ф|и|к|а|т|о|р |о|с|т|ы|в|а|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|о|г|а |о|с|е|ч|к|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|о|г|а |п|о|в|р|е|ж|д|е|н|и|я", + L"|У|р|о|в|е|н|ь |я|д|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |з|а|г|р|я|з|н|е|н|и|я", + L"|М|о|д|и|ф|и|к|а|т|о|р |я|д|а", + L"|У|т|о|л|е|н|и|е |г|о|л|о|д|а", + L"|У|т|о|л|е|н|и|е |ж|а|ж|д|ы", + L"|Р|а|з|м|е|р |п|о|р|ц|и|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |м|о|р|а|л|и", + L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|ч|и", + L"|О|п|т|и|м|а|л|ь|н|а|я |д|а|л|ь|н|о|с|т|ь |л|а|з|е|р|а", + L"|М|о|д|и|ф|и|к|а|т|о|р |о|т|д|а|ч|и |в |%", + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate + L"|B|a|r|r|e|l |C|o|n|f|i|g|u|r|a|t|i|o|n|s", +}; + +// Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. +STR16 szUDBAdvStatsExplanationsTooltipText[]= +{ + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет значение его точности.\n \nПовышенная точность оружия позволяет\nчаще попадать из него по более удаленным\nцелям.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭтот предмет изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭтот предмет изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанный процент.\n \nБольше - лучше.", + L"\n \nЭтот предмет изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭтот предмет изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанный процент.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭтот предмет изменяет число\nдоступных уровней прицеливания.\n \nЧем МЕНЬШЕ это число, тем БОЛЬШИЙ бонус\nдается за каждый уровень. То есть\nМЕНЬШЕЕ число уровней позволяет быстрее\nприцеливаться без потери точности.\n \nМеньше - лучше.", + L"\n \nЭтот предмет изменяет максимальную\nточность стрелка при использовании огнестрельного\nоружия на указанный процент.\n \nБольше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет сложность обращения\nс ним.\n \nНизкая сложность означает, что с оружием\nлегче управляться независимо от уровня\nприцеливания.\n \nЭтот модификатор основан на изначальной\nсложности обращения с оружием, высокой у винтовок\nи тяжелого вооружения и низкой у пистолетов и ПП.\n \nМеньше - лучше.", + L"\n \nЭтот предмет изменяет вероятность\nпули пролететь дальше максимальной\nдальности выстрела для данного оружия.\n \nВысокий бонус может заставить пулю\nпролететь дальше максимальной дальности\nкак минимум на пару тайлов.\n \nБольше - лучше.", + L"\n \nЭтот предмет изменяет вероятность\nпопадания по бегущей цели.\n \nБольше - лучше.", + L"\n \nЭтот предмет изменяет урон от данного\nоружия на указанное значение.\n \nБольше - лучше.", + L"\n \nЭтот предмет изменяет урон от данного\nоружия ближнего боя на указанное значение.\n \nБольше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет максимальную дальность\nвыстрела.\n \nМаксимальная дальность - это расстояние, пролетев которое,\nпуля начнет падать на землю.\n \nБольше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет дает возможность оптического\nприближения удаленных целей.\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"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести огонь очередями, этот\nпредмет изменяет вертикальную отдачу\nпри такой стрельбе на указанный процент.\n \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"\n \nЭтот предмет изменяет частоту,\nс которой стрелок при стрельбе очередями\nоценивает, сколько ему нужно приложить сил\nдля противодействия отдаче.\n \nБольшая частота означает, что при правильном \nприложении силы очередь в целом будет точнее.\n \nБольше - лучше.", + L"\n \nЭтот предмет напрямую изменяет\nколичество ОД, доступных персонажу\nв начале каждого хода.\n \nБольше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество ОД,\nтребуемых для взятия оружия на изготовку.\n \nМеньше - лучше.", + L"\n \nПрисоединенный к любому оружию,\nэтот предмет изменяет количество ОД,\nтребуемых для совершения одной атаки.\n \nОбратите внимание, что для оружия,\nспособного вести огонь очередями,\nэтот модификатор влияет и на этот режим\nстрельбы тоже.\n \nМеньше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести огонь очередями, этот\nпредмет изменяет количество ОД,\nтребуемых для такой стрельбы.\n \nМеньше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести автоматический огонь,\nэтот предмет изменяет количество ОД,\nтребуемых для такой стрельбы.\n \nОбратите внимание, что этот модификатор\nне влияет на стоимость добавления одной\nпули к очереди, а только на начальную стоимость\nочереди.\n \nМеньше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество ОД,\nтребуемых для перезарядки этого оружия.\n \nМеньше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество пуль в\nмагазине, который можно зарядить в это оружие.\n \nБольше - лучше.", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет изменяет количество пуль,\nвыпускаемых очередью.\n \nЕсли изначально у оружия не было режима\nстрельбы очередью, то после присоединения\nэтого предмета указанный режим появится.\n \nИ наоборот, большое отрицательное значение\nданного параметра может полностью\nвыключить этот режим.\n \nБольше ОБЫЧНО лучше, но одной из\nзадач стрельбы очередью является\nэкономия патронов...", + L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет будет скрывать вспышку\nвыстрела.\n \nБлагодаря этому враги не смогут обнаружить\nстрелка по вспышке, что особенно важно\nночью.", + L"\n \nПрисоединенный к оружию, этот предмет\nизменяет расстояние, с которого звук выстрела\nэтого оружия слышен врагами и наёмниками.\n \nЕсли этот модификатор опускает\nзначение громкости оружия до 0,\nто оружие считается совершенно бесшумным.\n \nМеньше - лучше.", + L"\n \nЭтот предмет изменяет размер\nлюбой другой вещи, к которой\nон присоединен.\n \nРазмер вещей важен в новой\nсистеме инвентаря, в которой в слоты\nможно поместить вещи определенных\nразмеров и форм.\n \nУвеличив размер вещи, вы уже не сможете\nпоместить ее в слот, в который\nона раньше спокойно вмещалась.\n \nУменьшив размер вещи, вы сможете\nпоместить ее в слот меньшего размера\nили же поместить больше таких вещей\nв тот же слот.\n \nВ целом, меньше - лучше.", + L"\n \nПрисоединенный к любому оружию,\nэтот предмет изменяет надежность этого\nоружия.\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Больше - лучше.", + L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет значение\nпустынного камуфляжа владельца.\n \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"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень слуха\nвладельца на указанный процент.\n \nПри положительном значении владелец\nсможет услышать шум с более дальних\nрасстояний, и наоборот.\n \nБольше - лучше.", + L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень зрения\nвладельца на указанный процент.\n \nЭтот модификатор работает для всех\nусловий.\n \nБольше - лучше.", + L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень зрения\nвладельца на указанный процент.\n \nЭтот модификатор работает для ночных\nусловий.\n \nБольше - лучше.", + L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет уровень зрения\nвладельца на указанный процент.\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Больше - лучше.", + L"\n \nНадевание этой вещи или прикрепление\nее к носимой вещи изменяет поле зрения\nвладельца.\n \nБольшее значение означает более выраженный\nэффект туннельного зрения.\n \nМеньше - лучше.", + L"\n \nСпособность стрелка справляться с\nотдачей при стрельбе очередями или автоматической\nстрельбе.\n \nБольше - лучше.", + L"\n \nСпособность стрелка чаще оценивать,\nсколько ему нужно приложить сил\nдля противодействия отдаче.\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Больше - лучше.", + L"\n \nОдиночный выстрел повышает температуру\nна это значение.\n \nРазличные типы боеприпасов и навесок\nвлияют на это значение.\n \nМеньше - лучше.", + L"\n \nКаждый ход температура снижается\nна это значение.\n \nБольше - лучше.", + L"\n \nЕсли температура выше этого значения,\nто оружие будет давать осечки чаще.\n \nБольше - лучше.", + L"\n \nЕсли температура предмета выше этого\nзначения, то его состояние будет ухудшаться\nбыстрее.\n \nБольше - лучше.", + L"\n \nОдиночный выстрел из оружия будет\nповышать температуру на этот процент.\n \nМеньше - лучше. ", + L"\n \nСкорость остывания оружия изменяется\nна этот процент.\n \nБольше - лучше.", + L"\n \nПорог осечки для оружия изменяется\nна этот процент.\n \nБольше - лучше.", + L"\n \nПорог повреждения оружия изменяется\nна этот процент.\n \nБольше - лучше.", + L"\n \nОпределяет, какой процент от нанесенного\nурона будет ядовитым.\n \nЭффективность определяется степенью защиты\nили поглощения яда у врага.", + L"\n \nОдиночный выстрел загрязняет оружие\nна это значение.\n \nРазличные типы боеприпасов и навесок\nвлияют на это значение.\n \nМеньше - лучше.", + L"\n \nКоличество энергии в килокалориях.\n \nБольше - лучше.", + L"\n \nОбъем воды в литрах.\n \nБольше - лучше.", + L"\n \nОпределяет, какой процент\nбудет съеден за раз.\n \nМеньше - лучше.", + 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"", + 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 + L"\n \nToggling firemodes also toggles how many\nbarrels you can fire at the same time.", +}; + +STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= +{ + L"\n \nТочность этого оружия изменена\nбоеприпасами, навеской или внутренними\nсвойствами.\n \nПовышенная точность оружия позволяет\nчаще попадать из него по более удаленным\nцелям.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭто оружие изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭто оружие изменяет точность,\nс которой стрелок совершает ЛЮБОЙ\nвыстрел, на указанный процент.\n \nБольше - лучше.", + L"\n \nЭто оружие изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанное значение.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЭто оружие изменяет точность,\nдающуюся за каждый дополнительный\nуровень прицеливания, на указанный процент.\n \nДиапазон: -100..+100.\nБольше - лучше.", + L"\n \nЧисло доступных уровней прицеливания\n для этого оружия изменено боеприпасами,\nнавеской или внутренними свойствами.\n \nЧем МЕНЬШЕ это число, тем БОЛЬШИЙ бонус\nдается за каждый уровень. То есть\nМЕНЬШЕЕ число уровней позволяет быстрее\nприцеливаться без потери точности.\n \nМеньше - лучше.", + L"\n \nЭто оружие изменяет максимальную\nточность стрелка на указанный процент.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют сложность\nобращения с ним.\n \nНизкая сложность означает, что с оружием\nлегче управляться независимо от уровня\nприцеливания.\n \nЭтот модификатор основан на изначальной\nсложности обращения с оружием, высокой у винтовок\nи тяжелого вооружения и низкой у пистолетов и ПП.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия или его\nвнутренние свойства изменили вероятность\nпули пролететь дальше максимальной\nдальности выстрела для данного оружия.\n \nВысокий бонус может увеличить максимальную\nдальность как минимум на пару тайлов.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия или его\nвнутренние свойства изменили вероятность\nпопадания по бегущей цели.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили урон от данного\nоружия на указанное значение.\n \nБольше - лучше.", + L"\n \nНавеска или внутренние свойства данного\nоружия ближнего боя изменили урон\nна указанное значение.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили максимальную дальность выстрела.\n \nМаксимальная дальность - это расстояние, пролетев которое,\n пуля начнет падать на землю.\n \nБольше - лучше.", + L"\n \nЭто оружие оборудовано оптическим\nприцелом, что позволяет уверенно поражать\nудаленные цели.\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Меньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили силу вертикальной отдачи.\n \nСнижение отдачи позволяет дольше\nудерживать ствол оружия в направлении цели\nво время залпа.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют способность\nстрелка справляться с отдачей\nпри стрельбе очередями.\n \nВысокое значение позволяет уверенно\nконтролировать оружие с сильной отдачей\nдаже персонажам с малым значением силы.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют способность\nстрелка при стрельбе очередями\nудерживать ствол оружия направленным\nна цель.\n \nВысокое значение позволяет попадать\nв цель при стрельбе очередями\nдаже на дальних дистанциях.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия или его\nвнутренние свойства изменяют частоту,\nс которой стрелок при стрельбе очередями\nоценивает, сколько ему нужно приложить сил\nдля противодействия отдаче.\n \nБольшая частота означает, что при правильном \nприложении силы очередь в целом будет точнее.\n \nБольше - лучше.", + L"\n \nЕсли это оружие держать в руках,\nто оно изменит количество ОД,\nдоступных его владельцу на начало\nкаждого хода.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nвзятия оружия на изготовку.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nсовершения одной атаки.\n \nОбратите внимание, что для оружия,\nспособного вести огонь очередями,\nэтот модификатор влияет и на эти режимы\nстрельбы тоже.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nстрельбы очередями.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nавтоматической стрельбы.\n \nОбратите внимание, что этот модификатор\nне влияет на стоимость добавления одной\nпули к очереди, а только на начальную стоимость\nочереди.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили стоимость ОД, требуемых для\nперезарядки оружия.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили количество пуль в\nмагазине, который можно зарядить в это оружие.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили количество пуль,\nвыпускаемых очередью.\n \nЕсли изначально у оружия не было режима\nстрельбы очередью, то после присоединения\nэтого предмета указанный режим появится.\n \nИ наоборот, большое отрицательное значение\nданного параметра может полностью\nвыключить этот режим.\n \nБольше ОБЫЧНО лучше, но одной из\nзадач стрельбы очередью является\nэкономия патронов...", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nскрывают вспышку\nвыстрела.\n \nБлагодаря этому враги не смогут обнаружить\nстрелка по вспышке, что особенно важно\nночью.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили расстояние, с которого звук выстрела\nэтого оружия слышен врагами и наёмниками.\n \nЕсли этот модификатор опускает\nзначение громкости оружия до 0,\nто оружие считается совершенно бесшумным.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили размер\nэтого оружия.\n \nРазмер вещей важен в новой\nсистеме инвентаря, в которой в слоты\nможно поместить вещи определенных\nразмеров и форм.\n \nУвеличив размер вещи, вы уже не сможете\nпоместить ее в слот, в который\nона раньше помещалась.\n \nУменьшив размер вещи, вы сможете\nпоместить ее в слот меньшего размера\nили же поместить больше таких вещей\nв тот же слот.\n \nВ целом, меньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили надежность этого оружия.\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Больше - лучше.", + L"\n \nЕсли это оружие держать в руках,\nто оно изменит значение\nпустынного камуфляжа владельца.\n \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"\n \nЕсли это оружие держать в руках,\nто оно изменит уровень слуха\nвладельца на указанный процент.\n \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Больше - лучше.", + L"\n \nЕсли взять это оружие на изготовку, оно изменит\nуровень зрения его владельца на\nуказанный процент благодаря навеске\nили внутренним свойствам оружия.\n \nЭтот модификатор работает для условий,\nкогда освещенность средняя или выше.\n \nБольше - лучше.", + L"\n \nЕсли взять это оружие на изготовку, оно изменит\nуровень зрения его владельца на\nуказанный процент благодаря навеске\nили внутренним свойствам оружия.\n \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Меньше - лучше.", + L"\n \nСпособность стрелка справляться с\nотдачей при стрельбе очередями или автоматической\nстрельбе.\n \nБольше - лучше.", + L"\n \nСпособность стрелка чаще оценивать\nсколько ему нужно приложить сил\nдля противодействия отдаче.\n \nМеньшая частота означает, что при правильном\nприложении силы очередь в целом будет точнее.\n \nМеньше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили шанс попадания из\nэтого оружия.\n \nПри условии точного прицеливания\nповышенный шанс позволяет чаще попадать\nиз оружия.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили бонус прицеливания для\nэтого оружия.\n \nПри условии точного прицеливания\nэтот бонус позволяет чаще попадать из\nоружия на дальних дистанциях.\n \nБольше - лучше.", + L"\n \nОдиночный выстрел повышает температуру\nна это значение.\n \nРазличные типы боеприпасов\nвлияют на это значение.\n \nМеньше - лучше.", + L"\n \nКаждый ход температура снижается\nна это значение.\n \nБольше - лучше.", + L"\n \nЕсли температура выше этого значения,\nто оружие будет давать осечки чаще.\n \nБольше - лучше.", + L"\n \nЕсли температура предмета выше этого\nзначения, то его состояние будет ухудшаться\nбыстрее.\n \nБольше - лучше.", + L"\n \nНавеска этого оружия, боеприпасы\nк нему или его внутренние свойства\nизменили отдачу оружия на\nуказанный процент.\n \nСнижение отдачи позволяет дольше\nудерживать ствол оружия в направлении цели\nво время залпа.\n \nМеньше - лучше.", +}; + +// HEADROCK HAM 4: Text for the new CTH indicator. +STR16 gzNCTHlabels[]= +{ + L"ОДИНОЧНЫЙ", //SINGLE + L"ОД", +}; +////////////////////////////////////////////////////// +// HEADROCK HAM 4: End new UDB texts and tooltips +////////////////////////////////////////////////////// + +// HEADROCK HAM 5: Screen messages for sector inventory sorting reports. +STR16 gzMapInventorySortingMessage[] = +{ + L"В секторе %c%d завершена сборка аммуниции в ящики.", + L"С предметов в секторе %c%d снята вся навеска.", + L"В секторе %c%d всё оружие разряжено.", + L"В секторе %c%d все вещи сгруппированы и объединены.", + // Bob: new strings for emptying LBE items + L"Finished emptying LBE items in sector %c%d.", + L"Dropped %i item(s) from %s", // Bunch of stuff removed from LBE item %s + L"No droppable items in %s!", // LBE item %s had a LBENode assigned but it contained no items (error!) + L"%s is now empty.", // LBE item %s contained stuff and was emptied + L"Cannot empty %s!", // Removed everything we could from LBE item %s but it's still not marked as empty (error!) + L"%s contents lost!", // LBE item %s not marked as empty but LBENode not found (error!!!) +}; + +STR16 gzMapInventoryFilterOptions[] = +{ + L"Показать всё", + L"Оружие", + L"Патроны", + L"Взрывчатка", + L"Холодное оружие", + L"Броня", + L"Разгруз. системы", + L"Наборы", + L"Прочие предметы", + L"Скрыть всё", +}; + +// MercCompare (MeLoDy) +// TODO.Translate +STR16 gzMercCompare[] = +{ + L"???", + L"Первое мнение:", + + L"Не нравятся %s %s", + L"Симпатизирует %s %s", + + L"Люто ненавидит %s", + L"Ненавидит %s", // 5 + + L"Лютый расист в отношении к %s", + L"Расист в отношении к %s", + + L"Излишне заботится о внешности", + L"Заботится о внешности", + + L"Лютый сексист", // 10 + L"Сексист", + + L"Не нравится другое прошлое", + L"Не нравится другое прошлое", + + L"Затаил обиду", //Past grievances + L"____", // 15 + L"/", + L"* Мнение всегда между [%d; %d]", +}; + +// Flugente: Temperature-based text similar to HAM 4's condition-based text. +STR16 gTemperatureDesc[] = +{ + L"Температура ", + L"очень низкая", + L"низкая", + L"умеренная", + L"высокая", + L"очень высокая", + L"опасная", + L"КРИТИЧЕСКАЯ", + L"ФАТАЛЬНАЯ", + L"неизвестна", + L"." +}; + +// Flugente: food condition texts +STR16 gFoodDesc[] = +{ + L"Пища ", + L"свежая", + L"хорошая", + L"нормальная", + L"несвежая", + L"порченная", + L"подгнившая", + L"." +}; + +CHAR16* ranks[] = +{ L"", //ExpLevel 0 + L"Рядовой ", //ExpLevel 1 + L"Ефрейтор ", //ExpLevel 2 + L"Мл. сержант ", //ExpLevel 3 + L"Сержант ", //ExpLevel 4 + L"Лейтенант ", //ExpLevel 5 + L"Капитан ", //ExpLevel 6 + L"Майор ", //ExpLevel 7 + L"Подполк. ", //ExpLevel 8 + L"Полковник ", //ExpLevel 9 + L"Генерал " //ExpLevel 10 +}; + + +STR16 gzNewLaptopMessages[]= +{ + L"Спрашивайте о нашем специальном предложении!", + L"Временно недоступно", + L"Ознакомительная игра 'Jagged Alliance 2: Цена Свободы' содержит только первые 6 карт секторов. Финальная версия игры будет включать в себя гораздо больше возможностей (полная информация содержится в приложенном файле Readme.txt).", +}; + +STR16 zNewTacticalMessages[]= +{ + //L"Расстояние до цели: %d ед., Освещенность: %d/%d", + L"Передатчик подключен к вашему ноутбуку.", + L"Вы не можете нанять %s", + L"Предложение действует ограниченное время и покрывает стоимость найма на всю миссию, плюс вы так же получите оборудование, перечисленное ниже.", + L"Наёмник %s - наше невероятное суперпредложение 'одна плата за все'. Вы также бесплатно получите его персональную экипировку.", + L"Гонорар", + L"В секторе кто-то есть...", + //L"Дальнобойность оружия: %d ед., Шанс попасть: %d%%", + L"Показать укрытия", + L"Линия прицела", + L"Новые наёмники не могут высадиться здесь.", + L"Так как ваш ноутбук лишился антенны, то вы не сможете нанять новых наёмников. Возможно, сейчас вам стоит загрузить одну из сохраненных игр, или начать игру заново!", + L"%s слышит металлический хруст под телом Джерри. Кажется, это чмо сломало антенну вашего ноутбука.", //the %s is the name of a merc. + L"После прочтения записей, оставленных помощником командира Морриса, %s видит, что не все еще потеряно. В записке содержатся координаты городов Арулько для запуска по ним ракет. Кроме того, там также указаны координаты самой ракетной базы.", + L"Изучив панель управления, %s понимает, что координаты цели можно изменить, и тогда ракета уничтожит эту базу. %s не собирается умирать, а значит нужно быстрее отсюда выбираться. Похоже, что самый быстрый способ это лифт...", + L"В начале игры вы выбрали сохранение \"между боями\", поэтому нельзя сохранить игру во время боя.", + L"(Нельзя сохраняться во время боя)", + L"Название кампании длиннее 30 символов.", + L"Текущая кампания не найдена.", + L"Кампания: По умолчанию ( %S )", + L"Кампания: %S", + L"Вы выбрали кампанию %S. Она является модификацией оригинальной игры Цена Свободы. Вы уверены, что хотите играть кампанию %S?", + L"Чтобы воспользоваться редактором, смените кампанию по умолчанию на другую.", + // anv: extra iron man modes + L"В начале игры вы выбрали сохранение \"между перестрелками\", поэтому нельзя сохранить игру в пошаговом режиме.", + L"В начале игры вы выбрали сохранение \"один раз в день\", поэтому сохранить игру можно лишь раз в сутки, в %02d:00.", +}; + +// The_bob : pocket popup text defs +STR16 gszPocketPopupText[]= +{ + L"Гранатомёты", // POCKET_POPUP_GRENADE_LAUNCHERS, + L"Ракетницы", // POCKET_POPUP_ROCKET_LAUNCHERS + L"Холодное и метательное оружие", // POCKET_POPUP_MEELE_AND_THROWN + L"- нет подходящих патронов -", //POCKET_POPUP_NO_AMMO + L"- нет оружия в инвентаре -", //POCKET_POPUP_NO_GUNS + L"ещё...", //POCKET_POPUP_MOAR +}; + +// Flugente: externalised texts for some features +STR16 szCovertTextStr[]= +{ + L"%s одет в камуфляж!", + L"%s несет рюкзак!", + L"%s несет труп!", + L"%s: %s выглядит подозрительно!", + L"%s: %s - это военное оборудование!", + L"%s несет слишком много оружия!", + L"%s: %s слишком круто для солдата %s!", + L"%s: Слишком много навески на %s!", + L"%s занимается подозрительной деятельностью!", + L"%s не выглядит как гражданский!", + L"%s имеет кровотечение!", + L"%s пьян и ведет себя не как солдат!", + L"При ближайшем рассмотрении, маскировка %s не выдерживает проверки!", + L"%s не должен находиться здесь!", + L"%s не должен находиться здесь в данное время!", + L"%s был замечен около свежего трупа!", + L"%s имеет нестандартную экипировку!", + L"%s целится в %s!", + L"%s сумел разоблачить маскировку %s!", + L"В Items.xml нет предметов одежды!", + L"Не работает со старой системой (OAS)!", + L"Недостаточно ОД!", + L"Обнаружена неверная палитра!", + L"Вам необходим навык шпиона для этого!", + L"Не найдена униформа!", + L"%s переоделся в гражданского.", + L"%s переоделся в солдата.", + L"%s носит униформу неправильного образца!", + L"Требовать сдачи в плен, будучи переодетым, было не очень осмотрительно...", + L"%s был разоблачен!", + L"%s: маскировка выглядит нормально...", + L"%s: маскировка не выдержит проверки.", + L"%s был пойман на краже!", + L"%s пытался залезть в инвентарь %s.", + L"Элитный солдат не распознал %s!", // TODO.Translate + L"Офицер не знаком с %s!", +}; + +STR16 szCorpseTextStr[]= +{ + L"Предмета 'голова' не найдено в Items.xml!", + L"Тело невозможно обезглавить!", + L"Мясных изделий не найдено в Items.xml!", + L"Ты больной! Тебе лечиться надо! Действие невозможно.", + L"Снимать с тела нечего!", + L"%s не может снять одежду с этого трупа!", + L"Это тело невозможно забрать с собой!", //This corpse cannot be taken! + L"Освободите руки, чтобы тянуть тело!", //No free hand to carry corpse + L"Предметов тела не найдено в Items.xml!", //No corpse item found in Items.xml + L"Неверный ID тела!", //Invalid corpse ID +}; + +STR16 szFoodTextStr[]= +{ + L"%s не хочет есть %s", + L"%s не хочет пить %s", + L"%s ест %s", + L"%s пьёт %s", + L"%s ослабел от переедания!", + L"%s ослабел от голода!", + L"%s потерял здоровье от переедания!", + L"%s потерял здоровье от голода!", + L"%s ослабел от того, что выпил слишком много воды!", + L"%s ослабел от жажды!", + L"%s потерял здоровье от того, что выпил слишком много воды!", + L"%s потерял здоровье от жажды!", + L"Наполнение фляжек в секторе невозможно, Система Еды отключена!" +}; + +STR16 szPrisonerTextStr[]= +{ + L"%d офицеров, %d спецназа, %d солдат, %d полиции, %d генералов и %d гражданских было допрошено", + L"Gained $%d as ransom money.", // TODO.Translate + L"%d пленных выдали расположение отрядов армии.", + L"%d офицеров, %d спецназ, %d рядовых и %d полицейских решили присоединиться к нам.", + L"Пленные устроили бунт в %s!", + L"%d пленные были отправлены в %s!", + L"Пленные были отпущены!", + L"Армия контролирует тюрьму %s, все пленные были освобождены!", + L"Противник отказывается сдаться!", + L"Противник отказывается взять вас в плен - они предпочли бы видеть вас мертвыми!", + L"Этот режим отключен в настройках.", + L"%s освободил %s!", + L"В %s был раскрыт высокопоставленный офицер!", + L"Вражеский командир отказывается даже подумать о сдаче!", + L"%d заключенных добровольно присоединились к нашим силам.", + L"Some of your mercs managed to escape the enemy capture!", + L"No possible escape is seen, it's a fight to the death!" +}; + +STR16 szMTATextStr[]= +{ + L"ничего", + L"укрепление строится", + L"укрепление убирается", + L"взлом", + L"%s был вынужден прекратить %s.", + L"Выбранное укрепление не может быть построено в этом секторе", +}; + +STR16 szInventoryArmTextStr[]= +{ + L"Взорвать (%d ОД)", + L"Взорвать", + L"Активировать (%d ОД)", + L"Активировать", + L"Обезвредить (%d ОД)", + L"Обезвредить", +}; + +STR16 szBackgroundText_Flags[]= +{ + L" может употреблять наркотики из инвентаря\n", + L" вне зависимости от других особенностей биографии\n", + L" +1 уровень в подземных секторах\n", + L" steals money from the locals sometimes\n", // TODO.Translate + + L" +1 уровень ловушек при установке мин\n", + L" разлагает других наёмников\n", + L" только женский", // won't show up, text exists for compatibility reasons + L" только мужской", // won't show up, text exists for compatibility reasons + + L" значительный штраф к лояльности во всех городах, если умирает\n", + + L" отказывается атаковать животных\n", + L" отказывается атаковать тех, кто состоит в той же группе\n", +}; + +STR16 szBackgroundText_Value[]= +{ + L" %s%d%% ОД в холодных секторах\n", + L" %s%d%% ОД в пустынных секторах\n", + L" %s%d%% ОД в болотных секторах\n", + L" %s%d%% ОД в городских секторах\n", + L" %s%d%% ОД в лесных секторах\n", + L" %s%d%% ОД на равнинных секторах\n", + L" %s%d%% ОД в речных секторах\n", + L" %s%d%% ОД в тропических секторах\n", + L" %s%d%% ОД в секторах на побережье\n", + L" %s%d%% ОД в горных секторах\n", + + L" %s%d%% подвижность\n", + L" %s%d%% ловкость\n", + L" %s%d%% сила\n", + L" %s%d%% лидерство\n", + L" %s%d%% меткость\n", + L" %s%d%% механика\n", + L" %s%d%% взрывчатка\n", + L" %s%d%% медицина\n", + L" %s%d%% интеллект\n", + + L" %s%d%% ОД на крышах\n", + L" %s%d%% ОД для плавания\n", + L" %s%d%% ОД для строительства укреплений\n", + L" %s%d%% ОД для стрельбы из миномётов\n", + L" %s%d%% ОД для доступа к инвентарю\n", + L" смотрит в разных направлениях при высадке\n %s%d%% ОД после высадки\n", + L" %s%d%% ОД на первом ходу при штурме сектора\n", + + L" %s%d%% скорость движения пешком\n", + L" %s%d%% скорость движения на машине\n", + L" %s%d%% скорость движения на воздушном транспорте\n", + L" %s%d%% скорость движения на водном транспорте\n", + + L" %s%d%% сопротивление страху\n", + L" %s%d%% сопротивление подавлению\n", + L" %s%d%% физическое сопротивление\n", + L" %s%d%% сопротивление алкогол.\n", + L" %s%d%% сопротивление заболеванию\n", + + L" %s%d%% эффективность ведения допроса\n", + L" %s%d%% эффективность тюремной охраны\n", + L" %s%d%% лучше цены при торговле оружием и патронами\n", + L" %s%d%% лучшие цены при торговле броней, разгрузками, ножами, наборам и др.\n", + L" %s%d%% к силе капитуляции при ведении переговоров\n", + L" %s%d%% быстрее бег\n", + L" %s%d%% скорость перевязки\n", + L" %s%d%% востановление дыхания\n", + L" %s%d%% сила для переноски вещей\n", + L" %s%d%% потребление еды\n", + L" %s%d%% потребление воды\n", + L" %s%d потребность в сне\n", + L" %s%d%% урон от ножей\n", + L" %s%d%% точность атаки ножами\n", + L" %s%d%% эффективность камуфляжа\n", + L" %s%d%% скрытность\n", + L" %s%d%% макс. шанс попадания\n", + L" %s%d дальность слуха ночью\n", + L" %s%d дальность слуха днем\n", + L" %s%d эффективность при разминировании ловушек\n", + L" %s%d%% шанс попадания ПВО\n", + + L" %s%d%% эффективность дружеского обращения\n", + L" %s%d%% эффективность прямого обращении\n", + L" %s%d%% эффективность угроз\n", + L" %s%d%% эффективность найма\n", + + L" %s%d%% шанс попадания с вышибными зарядами\n", + L" %s%d%% шанс попадания с оружием против животных\n", + L" %s%d%% стоимость страховки\n", + L" %s%d%% эффективность наблюдателя в снайперской паре\n", + L" %s%d%% эффективность в диагностике заболевания\n", + L" %s%d%% эффективность в лечении населения от болезней\n", + L"Замечает следы на расстоянии до %d метров\n", + L" %s%d%% начальное расстояние до противника в засаде\n", + L" %s%d%% шанс избежать укуса змей\n", + + L" не нравиться другое прошлое\n", + L"Курит", + L"Не курит", + L" %s%d%% enemy CTH if crouched against thick cover in their direction\n", + L" %s%d%% кровотечение\n", + L" Взлом: %s%d ", + L" %s%d%% burial speed\n", // TODO.Translate + L" %s%d%% administration effectiveness\n", // TODO.Translate + L" %s%d%% exploration effectiveness\n", // TODO.Translate +}; + +STR16 szBackgroundTitleText[] = +{ + L"I.M.P. Биография", +}; + +// Flugente: personality +STR16 szPersonalityTitleText[] = +{ + L"I.M.P. Предубеждения", +}; + +STR16 szPersonalityDisplayText[]= +{ + L"Вы выглядите", + L"и ваша внешность", + L"важна для вас.", + L"У вас", + L" и вы", + L"переживаете за это.", + L"Вы", + L"и ненавидите всех", + L".", + L"расист по отношению к не ", + L".", +}; + +// texts showing up when hovering over the box, used to explain what a selection does. Do not use more than 200 characters! +STR16 szPersonalityHelpText[]= +{ + L"Как вы выглядите?", + L"Насколько для вас важен внешний вид других?", + L"Ваша манера поведения?", + L"Насколько для вас важна манера поведения других?", + L"Ваша национальность?", + L"Какая национальность вам неприятна?", + L"Насколько вам неприятна эта национальность?", + L"насколько вы расист?", + L"Ваша раса? Вы будете\nотноситься плохо к другим расам.", + L"Насколько вы сексист по отношению к другим полам?", +}; + + +STR16 szRaceText[]= +{ + L"белым", + L"черным", + L"азиатам", + L"эскимосам", + L"испанцам", +}; + +STR16 szAppearanceText[]= +{ + L"средне", + L"уродливо", + L"невзрачно", + L"привлекательно", + L"как ребенок", +}; + +STR16 szRefinementText[]= +{ + L"обычное поведение", + L"хамское поведение", + L"снобское поведение", +}; + +STR16 szRefinementTextTypes[] = +{ + L"нормальные люди", + L"жлобы", + L"снобы", +}; + +STR16 szNationalityText[]= +{ + L"Американец", // 0 + L"Араб", + L"Австралиец", + L"Британец", + L"Канадец", + L"Кубинец", // 5 + L"Датчанин", + L"Француз", + L"Русский", + L"Traconian", // UB takes place in Tracona + L"Швейцарец", // 10 + L"Ямаец", + L"Поляк", + L"Китаец", + L"Ирладец", + L"Южноафриканец", // 15 + L"Венгр", + L"Шотландец", + L"Арулькиец", + L"Немец", + L"Африканец", // 20 + L"Итальянец", + L"Голландец", + L"Румын", + L"Метавирец", + + // newly added from here on + L"Afghan", // 25 + L"Албанец", + L"Аргентинец", + L"Армянин", + L"Азербайджанец", + L"Bangladeshi ", // 30 + L"Белорус", + L"Бельгиец", + L"Beninese", + L"Боливиец", + L"Bosnian", // 35 + L"Бразилец", + L"Болгарин", + L"Cambodian", + L"Chadian", + L"Чилиец", // 40 + L"Колумбиец", + L"Congolese", + L"Croatian", + L"Ecuadorian", + L"Египтянин", // 45 + L"English", + L"Eritrean", + L"Эстонец", + L"Эфиоп", + L"Filipino", // 50 + L"Финн", + L"Грузин", + L"Грек", + L"Guatemalan", + L"Haitian", // 55 + L"Honduran", + L"Индиец", + L"Indonesian", + L"Иранец", + L"Иракец", // 60 + L"Islandic", + L"Израильтянин", + L"Японец", + L"Иорданец", + L"Казахстанец", // 65 + L"Кореец", + L"Кыргызстанец", + L"Laotian", + L"Latvian", + L"Lebanese", // 70 + L"Lithuanian", + L"Lybian", + L"Macedonian", + L"Malaysian", + L"Мексиканец", // 75 + L"Монгол", + L"Moroccan", + L"Mozambican", + L"Myanma", + L"Namibian", // 80 + L"Nicaraguan", + L"Нигериец", + L"Nigerien", + L"Норвежец", + L"Пакистанец", // 85 + L"Панамец", + L"Португалец", + L"Rwandanese", + L"Сальвадорец", + L"Саудовец", // 90 + L"Серб", + L"Slovakian", + L"Slovenian", + L"Сомалиец", + L"Испанец", // 95 + L"Sudanese", + L"Швед", + L"Сириец", + L"Таец", + L"Togolese", // 100 + L"Tunisian", + L"Турок", + L"Ugandan", + L"Украинец", + L"Uruguayan", // 105 + L"Узбекистанец", + L"Венесуэлец", + L"Vietnamese", + L"Валлиец", + L"Yemeni", // 110 + L"Zamundan", // Zamunda + L"Зимбабвиец", +}; + +STR16 szNationalityTextAdjective[] = +{ + L"американцев", // 0 + L"арабов", + L"австралийцев", + L"британцев", + L"канадцев", + L"кубинцев", // 5 + L"датчан", + L"французов", + L"русских", + L"traconians", + L"швейцарцев", // 10 + L"ямайцев", + L"поляков", + L"китайцев", + L"ирладцев", + L"южноафриканцев", // 15 + L"венгров", + L"шотландецев", + L"арулькийцев", + L"немцев", + L"африканцев", // 20 + L"итальянцев", + L"голландцев", + L"румынов", + L"метавирцев", + + // newly added from here on + L"afghans", // 25 + L"албанцев", + L"аргентинцев", + L"армян", + L"азербайджанцев", + L"bangladeshi", // 30 + L"белорусов", + L"бельгийцев", + L"beninese", + L"боливийцев", + L"bosnians", // 35 + L"бразильцев", + L"болгаров", + L"cambodians", + L"chadians", + L"чилийцев", // 40 + L"колумбийцев", + L"congolese", + L"croatians", + L"ecuadorians", + L"египтян", // 45 + L"englishmen", + L"eritreans", + L"эстонцев", + L"эфиопов", + L"filipinos", // 50 + L"финнов", + L"грузин", + L"греков", + L"guatemalans", + L"haitians", // 55 + L"hondurans", + L"индийцев", + L"indonesians", + L"иранцев", + L"иракцев", // 60 + L"islandics", + L"израильтянинов", + L"японцев", + L"иорданцев", + L"казахстанцев", // 65 + L"корейцев", + L"кыргызстанцев", + L"laotians", + L"latvians", + L"lebanese", // 70 + L"lithuanians", + L"lybians", + L"macedonians", + L"malaysians", + L"мексиканцев", // 75 + L"монголов", + L"moroccans", + L"mozambicans", + L"myanmarians", + L"namibians", // 80 + L"nicaraguans", + L"нигерийцев", + L"nigeriens", + L"норвежцев", + L"пакистанцев", // 85 + L"панамцев", + L"португальцев", + L"rwandanese", + L"сальвадорцев", + L"саудовцев", // 90 + L"сербов", + L"slovakians", + L"slovenians", + L"сомалийцев", + L"испанцев", // 95 + L"sudanese", + L"шведов", + L"сирийцев", + L"тайцев", + L"togolese", // 100 + L"tunisians", + L"турков", + L"ugandans", + L"украинцев", + L"uruguayans", // 105 + L"узбекистанцев", + L"венесуэльцев", + L"vietnamese", + L"валлийцев", + L"yemenites", // 110 + L"zamundans", // Zamunda + L"зимбабвийцев", +}; + +// special text used if we do not hate any nation (value of -1) +STR16 szNationalityText_Special[]= +{ + L"нормально относится к другим национальностям.", // used in personnel.cpp + L"неизвестно", // used in IMP generation +}; + +STR16 szCareLevelText[]= +{ + L"не", + L"немного", + L"сильно", +}; + +STR16 szRacistText[]= +{ + L"не", + L"немного", + L"сильно", +}; + +STR16 szSexistText[]= +{ + L"не сексист", + L"сексист", + L"убежденный сексист", + L"джентльмен", +}; + +// Flugente: power pack texts +STR16 gPowerPackDesc[] = +{ + L"Батарейки: ", + L"заряжены", + L"хороший заряд", + L"половина заряда", + L"низкий заряд", + L"разряжены", + L"." +}; + +// WANNE: Special characters like % or someting else should go here +// We can't put them directly in the CPP code files, because they need special encoding (UTF8) for some languages (e.g: Chinese) +STR16 sSpecialCharacters[] = +{ + L"%", // Percentage character +}; + +STR16 szSoldierClassName[]= +{ + L"Наёмник", + L"Новобранец", + L"Рядовой", + L"Ветеран", + + L"Гражданский", + + L"Полицейский", + L"Солдат", + L"Спецназ", + L"Танк", + + L"Тварь", + L"Зомби", +}; + +STR16 szCampaignHistoryWebSite[]= +{ + L"Пресс-служба %s", + L"Министерство распространения информации %s", + L"Революционное движение %s", + L"The Times International", + L"International Times", + L"R.I.S. (Служба информационной разведки)", + + L"Информация от %s", + L"Мы - нейтральный источник информации. Мы собираем различные новостные статьи от %s. Мы не оцениваем эти источники - мы просто публикуем их, так что вы сами можете составить свое мнение. Мы публикуем статьи из различных источников, среди них ", + + L" Общая сводка", + L" Боевые отчёты", + L" Новости", + L" О нас", +}; + +STR16 szCampaignHistoryDetail[]= +{ + L"%s, %s %s %s в %s.", + + L"ополченцы", + L"армия", + + L"атаковали", + L"попал в засаду", + L"высадился", + + L"Атака осуществлена с %s.", + L"Подкрепление для %s пришли с %s.", + L"Атакованы с %s, %s получили подкрепления с %s.", + L"севера", + L"востока", + L"юга", + L"запада", + L"и", + L"неизвестно", //an unknown location + + L"Здания в секторе получили повреждения.", + L"Во время боя здания в секторе получили повреждения, %d гражданских были убиты и %d ранены.", + L"Во время атаки %s и %s вызвали подкрепления.", + L"Во время атаки %s вызвали подкрепления.", + L"Очевидцы отмечают использование химического оружия обеими сторонами.", + L"Химическое оружие было использовано %s.", + L"В результате серьезной эскалации конфликта отмечается использование танков обеими сторонами.", + L"%d танков было использовано %s, %d было уничтожено в ожесточенном бою.", + L"Обе стороны утверждают, что использовали снайперов.", + L"По непроверенным данным, у %s в столкновении участвовали снайперы.", + L"Этот сектор имеет большое стратегическое значение, поскольку в нем расположена одна из батарей ПВО, которыми располагает армия %s. Аэрофотосьемка показывает, что центр управления получил серьезные повреждения. В результате воздушное пространство над %s некоторое время будет незащищенным.", + L"Ситуация становится все более запутанной, так как, судя по всему, разногласия между повстанцами достигли серьезного уровня. У нас есть подтверждение, что между повстанцами и иностранными наёмниками произошел бой.", + L"Положение правительственных войск оказалось более шатким, чем представлялось ранее. Есть свидетельства раскола и стрельбы между армейскими подразделениями.", +}; + +STR16 szCampaignHistoryTimeString[]= +{ + L"Глубокой ночью", // 23 - 3 + L"На рассвете", // 3 - 6 + L"Рано утром", // 6 - 8 + L"Утром", // 8 - 11 + L"В полдень", // 11 - 14 + L"После полудня", // 14 - 18 + L"Вечером", // 18 - 21 + L"Ночью", // 21 - 23 +}; + +STR16 szCampaignHistoryMoneyTypeString[]= +{ + L"Начальные финансы", + L"Доход от шахт", + L"Торговля", + L"Другие источники", +}; + +STR16 szCampaignHistoryConsumptionTypeString[]= +{ + L"Патроны", + L"Взрывчатка", + L"Еда", + L"Медикаменты", + L"Обслуживание", +}; + +STR16 szCampaignHistoryResultString[]= +{ + L"Армейские силы были уничтожены без особого сопротивления.", + + L"Повстанцы легко сокрушили противника, нанеся тяжелый урон.", + L"Повстанцы без особых усилий нанесли противнику тяжелый урон и захватили несколько пленных.", + + L"Повстанцы сумели победить противника в результате тяжелого боя. Армия понесла потери.", + L"Повстанцы понесли потери, но смогли нанести поражение правительственным войскам. По непроверенным данным, несколько солдат могли попасть в плен.", + + L"Повстанцы сумели нанести поражение правительственным войскам, но из-за высоких потерь эта победа может оказаться пирровой. Неизвестно, сумеют ли они удержать завоеванные позиции под непрерывными атаками противника.", + + L"Численное превосходство армии принесло свои плоды. Повстанцы не имели ни единого шанса и вынуждены были отступить, чтобы избежать гибели или плена.", + L"Несмотря на численное превосходство повстанцев в этом секторе, армия легко разделалась с ними.", + + L"Повстанцы не были готовы противостоять правительственным войскам, которые превосходили их в численности и вооружении, и были разбиты армией с легкостью.", + L"Несмотря на то, что на стороне повстанцев было численное преимущество, армия оказалась лучше вооружена. Повстанцы потерпели поражение", + + L"В результате ожесточенного боя обе стороны понесли существенные потери, но в итоге сказалось численное преимущество армии. Повстанцы были разгромлены. Возможно, часть из них сумела выжить, но в настоящий момент мы не можем проверить эту информацию.", + L"В произошедшей интенсивной перестрелке сказалась лучшая подготовка армии, и повстанцы были вынуждены отступить.", + + L"Ни одна из сторон не собиралась уступать. Несмотря на то, что армия устранила угрозу восстания в районе, понесенные потери означают, что армейское подразделение существует только формально. Однако, если армия может позволить себе воевать с таким уровнем потерь, повстанцы очень скоро физически закончатся.", +}; + +STR16 szCampaignHistoryImportanceString[]= +{ + L"Неприменимый", + L"Неважный", + L"Заметный", + L"Примечательный", + L"Существенный", + L"Интересный", + L"Важный", + L"Очень важный", + L"Серьезный", + L"Значительный", + L"Важнейший", +}; + +STR16 szCampaignHistoryWebpageString[]= +{ + L"Убито", + L"Ранено", + L"Пленных", + L"Выстрелов", + + L"Денег", + L"Издержки", + L"Потери", + L"Участники", + + L"Повышеный", + L"Общий", + L"Полный", + L"Назад", + + L"Далее", + L"Эпизод", + L"День", +}; + +STR16 szCampaignStatsOperationPrefix[] = // TODO.Translate +{ + L"Славный %s", + L"Мощный %s", + L"Грозный %s", + L"Пугающий %s", + + L"Могучий %s", + L"Поразительный %s", + L"Вероломный %s", + L"Скорый %s", + + L"Неистовый %s", + L"Жестокий %s", + L"Безжалостный %s", + L"Беспощадный %s", + + L"Каннибальский %s", + L"Великолепный %s", + L"Плутливый %s", + L"Неясный %s", + + L"Неопределенный %s", + L"Сжигающий %s", + L"Разгневанный %s", + L"Воображаемый %s", + + // 20 + L"Ужастный %s", + L"Плевать-на-право %s", + L"Спровоцированный %s", + L"Непрестанный %s", + + L"Жесткий %s", + L"Упорный %s", + L"Безрассудный %s", + L"Невозможный %s", + + L"Страшнейший %s", + L"Внезапный %s", + L"Демократический %s", + L"Разрывной %s", + + L"Двухпартийный %s", + L"Кровавый %s", + L"Румяный %s", + L"Невинный %s", + + L"Злобный %s", + L"Дразнящий %s", + L"Уничтожающий %s", + L"Стойкий %s", + + // 40 + L"Немилосердный %s", + L"Сумасшедший %s", + L"Окончательный %s", + L"Яростный %s", + + L"Лучше избежать нашего %s", + L"Страшный %s", + L"Благодарный %s!", + L"Защитить %s", + + L"Внимательный %s", + L"Крушаший %s", + L"Колющий %s", + L"Побеждающий %s", + + L"Садистский %s", + L"Горящий %s", + L"Гневный %s", + L"Невидимый %s", + + L"Виновный %s", + L"Гниющий %s", + L"Очищающий %s", + L"Беспокойный %s", + + // 60 + L"Страый %s", + L"Голодный %s", + L"Спящий %s", + L"Угрюмый %s", + + L"Гибкий %s", + L"Назойливый %s", + L"Обиженный %s", + L"Привлекательный %s", + + L"Кричащий %s", + L"Прячущийся %s", + L"Молящийся %s", + L"Бродящий %s", + + L"Хладнокровный %s", + L"Бесстрашный %s", + L"Быстроногий %s", + L"Праклятый %s", + + L"Вегетарианский %s", + L"Нелепый %s", + L"Отсталый %s", + L"Превосходный %s", + + // 80 + L"Героический %s", + L"Подходящий %s", + L"Смотрящий %s", + L"Отравленный %s", + + L"Неожиданный %s", + L"Продолжительный %s", + L"Веселящий %s", + L"%s - обмен!", + + L"%s на стероидах", + L"%s против Прищельцев", + L"%s с твистом", + L"Удовлетворяющий %s", + + L"Гибрид Человек-%s", + L"Пустынный %s", + L"Дорогой %s", + L"Полуночный %s", + + L"Капиталистический %s", + L"Коммунистический %s", + L"Значительный %s", + L"Устойчивый %s", + + // 100 + L"Ннарколептический %s", + L"Отбеливающий %s", + L"Дробящий %s", + L"Бьющий %s", + + L"Кровожадный %s", + L"Тучный %s", + L"Лукавый %s", + L"Древовидный %s", + + L"Дешевый %s", + L"Удовлетворенный %s", + L"Ложный %s", + L"%s в помощь", + + L"Крабы против %s", + L"%s в космосе!!!", + L"%s против Годзиллы", + L"Ннеукрощённый %s", + + L"Надёжный %s", + L"Медный %s", + L"Алчный %s", + L"Ночной %s", + + // 120 + L"Мешающий %s", + L"Сердитый %s", + L"Противный %s", + L"Мманиакальный %s", + + L"Древний %s", + L"Крадущийся %s", + L"%s Рока", + L"Месть %s", + + L"%s в бегах", + L"%s вне времени", + L"Один с %s", + L"%s из Ада", + + L"Супер-%s", + L"Ультра-%s", + L"Мега-%s", + L"Гига-%s", + + L"Частичный %s", + L"Отличный %s", + L"Дрожащий %s", + L"Ободряющий %s", + + // 140 +}; + +STR16 szCampaignStatsOperationSuffix[] = +{ + L"Дракон", + L"Горный Лев", + L"Красноголовый Змей", + L"Терьерь Рассела", + + L"Грод Немезида", + L"Василиск", + L"Клинок", + L"Щит", + + L"Молот", + L"Призрак", + L"Конкресс", + L"Нефтяной Бур", + + L"Друг", + L"Товарищ", + L"Муж", + L"Тесть", + + L"Дюнный Змей", + L"Банкир", + L"Удав", + L"Кот", + + // 20 + L"Съезд", + L"Сенат", + L"Церковник", + L"Задира", + + L"Штык", + L"Волк", + L"Солдат", + L"Древестник", + + L"Писец", + L"Куст", + L"Асфальт", + L"Закат", + + L"Ураган", + L"Оцелот", + L"Тигр", + L"Завод", + + L"Леопард", + L"Демон", + L"Овод", + L"Ротвейлер", + + // 40 + L"Кузен", + L"Дед", + L"Новорожденный", + L"Сектант", + + L"Антибиотик", + L"Демократ", + L"Полкоодец", + L"Молот Судного Дня", + + L"Министр", + L"Бобр", + L"Террорист", + L"Дождь Смерти", + + L"Пророк", + L"Торговец", + L"Крестоносец", + L"Управленец", + + L"Пульсар", + L"Отпуск", + L"Взрыв", + L"Хищник", + + // 60 + L"Мантикор", + L"Ледяной Гигант", + L"Антракт", + L"Средний Класс", + + L"Крикун", + L"Козел", + L"Пес", + L"Ответ", + + L"Бункер", + L"Мим", + L"Проводник", + L"Работодатель", + + L"Француз", + L"Момент", + L"Тритон", + L"Дурак", + + L"Степной Волк", + L"Железный Молот", + L"Лорд", + L"Правитель", + + // 80 + L"Диктатор", + L"Старик", + L"Измельчитель", + L"пылесос", + + L"Хомяк", + L"Гипноз", + L"Диджей", + L"Uробовщик", + + L"Гном", + L"Ребенок", + L"Гангстер", + L"Мясоед", + + L"Бог", + L"Гендер", + L"Моль", + L"Малыш", + + L"Самолет", + L"Гражданин", + L"Любовни", + L"Фонд", + + // 100 + L"Формат", + L"Меч", + L"Барс", + L"Ирбис", + + L"Кентавр", + L"Скорпион", + L"Серпент", + L"Черный Паук", + + L"Тарантул", + L"Гриф", + L"Еретик", + L"Кретин", + + L"Образец", + L"Цербер", + L"Мангуст", + L"Ухажер", + + L"Монах", + L"Скиталец", + L"Гад", + L"Сом", + + // 120 + L"Греховник", + L"Праведник", + L"Астероид", + L"Метеор", + + L"Клубок Проблем", + L"Рыбий Жир", + L"Молочник", + L"Ус", + + L"Псих", + L"Безумец", + L"рефлекс", + L"Знак", + + L"Король", + L"Принц", + L"Епископ", + L"Раб", + + L"Оплот", + L"Дворец", + L"Конь", + L"Суд", + + // 140 +}; + +STR16 szMercCompareWebSite[] = +{ + // main page + L"Бойцы Любят Тебя или Клянут", + L"Ваш эксперт №1 по сплочению комманды", + + L"Кто мы?", + L"Анализ команды", + L"Парные сравнения", + L"Персоналии", + L"Отзывы клиентов", + + L"Если ваш бизнес предполагает инновационные решения для критических приложений, работающих в режиме реального времени, возможно, некоторые из этих наблюдений будут вам знакомы:", + L"Ваша команда борется сама с собой.", + L"Ваши сотрудники тратят время мешая друг другу.", + L"В вашем коллективе большая текучесть кадров.", + L"Вы постоянно получаете низкие оценки по удовлетворенности персонала работой.", + L"Если вы столкнулись хотя бы с одной из этих ситуаций, то, возможно, в вашем деле есть проблемы. И скорее всего, ваши сотрудники не станут работать в полную силу. Но благодаря нашей запатентованной и простой для понимания системе \"БоЛТиК\", вы сможете вернуть производительность и счастливые улыбки на лицах всех ваших сотрудников в мгновение ока!", + + // customer quotes + L"Несколько цитат наших благодарных клиентов:", + L"Мои прошлые отношения были просто ужасны. Я винила во всём себя... но теперь то я знаю. Все мужчины заслуживают смерти! Спасибо тебе, \"БоЛТиК\", за моё прозрение!", + L"-Луиза Г., романист-", + L"Я никогда не ладил со своими братьями, а в последнее время отношения стали совсем из рук вон плохими. Вы показали мне, что всему виной было постыдное недоверие к отцу. Спасибо вам за это! Я должен открыто всё сказать отцу.", + L"-Конрад C., Исправительное учреждение-", + L"Я одиночка по жизни, и работа в команде была просто пыткой. Но методика \"БоЛТиК\" показала мне как стать частью команды. Этот вклад просто неоценим!", + L"-Грант В., Заклинатель змей-", + L"В моей работе необходимо доверять каждому члену команды на все сто процентов. Вот почему мы обратились к экспертам - к компании \"БоЛТиК\".", + L"-Халлэ Л., СПК-", + L"Прежде всего, хочу признать, что наш коллектив был весьма разношерстным, из-за чего часто случались конфликты. Но со временем мы достигли взаимоуважения, и теперь дополняем друг друга.", + L"-Майкл C., НАСА-", + L"Рекоммендую отдать предпочтение этому сайту!", + L"-Каспар Х., Логистическая компания H&C-", + L"Наш процесс тренировок должен быть максимально быстрым, поэтому мы должны знать, с кем имеем дело. Компания \"БоЛТиК\" стала очевидным выбором.", + L"-Стэнли Дюк, Корпорация Цербер-", + + // analyze + L"Выберите наёмника", + L"Выберите отряд", + + // error messages + L"В настоящее время у вас нет наёмников на службе. Боевой дух бойцов ниже нормы - основная причина частых увольнений среди персонала.", +}; + +STR16 szMercCompareEventText[]= +{ + L"%s подстрелил(а) меня!", + L"%s плетёт интриги за моей спиной", + L"%s вмешивается в мои дела", + L"%s дружит с моим врагом", + + L"%s получил(а) контракт до меня", + L"%s приказал(а) позорно отступить", + L"%s убивает невинных", + L"%s тормозит нас", + + L"%s не делится едой", + L"%s ставит под угрозу миссию", + L"%s наркоман", + L"%s воровская гадина", + + L"%s никакущий командир", + L"%s переплачивают", + L"%s получает всё самое лучшее", + L"%s держит меня на мушке", + + L"%s обрабатывал(а) мои раны", + L"Хорошо посидели за бутылочкой с %s", + L"C %s классно напиваться", + L"%s доставучий(-ая) когда пьян(а)", + + L"%s идиот когда пьян", + L"%s не поддерживает нашу точку зрения", + L"%s поддерживает нашу позицию", + L"%s соглашается с нашими доводами", + + L"Убеждения %s противоречат нашим", + L"%s знает, как успокоить людей", + L"%s бесчувственный(-ая)", + L"%s ставит людей на своё место", + + L"%s очень импульсивен(а)", + L"%s - разносчик заразы", + L"%s лечит мои заболевания", + L"%s не сдерживается в бою", + + L"%s наслаждается битвой сверх меры", + L"%s хороший преподаватель", + L"%s привёл(а) нас к победе", + L"%s спас(ла) мою жизнь", + + L"%s украл(а) моё убийство", + L"%s и я отлично работаем вместе", + L"%s заставил(а) противника сдаться", + L"%s ранил(а) гражданских", +}; + +STR16 szWHOWebSite[] = +{ + // main page + L"Всемирная организация здравоохранения", + L"Возвращаем здоровье в жизнь", + + // links to other pages + L"О ВОЗ", + L"Болезни Арулько", + L"О заболеваниях", + + // text on the main page + L"ВОЗ является органом, направляющим и координирующим международную работу в области здравоохранения в рамках системы ООН.", + L"ВОЗ выполняет следующие функции: -обеспечение глобального лидерства в области общественного здравоохранения; -составление повестки дня исследований в области здравоохранения; -установление норм и стандартов; -формулирование этических и основанных на фактических данных вариантов политики; -оказание технической поддержки странам; -мониторинг ситуации и оценка тенденций в области здравоохранения.", + L"Здравоохранение в 21-м веке является общей ответственностью, включая равноправный доступ к основной помощи и коллективной защите от международных угроз.", + + // contract page + L"Маленькую страну Арулько в настоящее время потрясают хаотичные вспышки смертельного вируса арулькийской чумы.", + L"Из-за катастрофического состояния системы здравоохранения страны только армейский лечебный корпус способен бороться со смертельным заболеванием.", + L"Страна Арулько закрыта для партнёров ООН, поэтому, всё что мы можем предоставить - это подробные карты о текущем состоянии инфекционных заболеваний. Из-за трудностей в работе с Арулько мы вынуждены брать ежедневную плату со всех желающих получать актуальную информацию по заболеваемости в размере %d$.", + L"Желаете приобрести подробные данные о текущем состоянии заболеваемости в Арулько? Доступ к этим данным вы можете получить на стратегической карте, оплатив стоимость нашей услуги.", + L"В настоящее время вы не имеете доступа к данным ВОЗ по арулькийской чуме.", + L"Вы приобрели подробные карты о состоянии заболеваемости.", + L"Заказать обновление карт", + L"Отказаться от карт", + + // helpful tips page + L"Арулькийская чума - это смертельный штамм чумы, который распространён лишь на небольшой части территории Арулько. Первые жертвы штамма были заражены через укусы комаров в болотистой либо тропической местности и непреднамеренно стали причиной заражения населения близлежащих городов.", + L"Симптомы болезни проявляются не сразу, и до первых проявлений заражения может пройти несколько дней.", + L"Чтобы посмотреть от каких известных болезней страдают ваши наёмники, надо подвести курсор к портрету бойца на стратегической карте.", + L"Большинство заболеваний прогрессирует с течением времени, поэтому следует начинать лечение как можно скорее.", + L"Определённые болезни можно вылечить с помощью медикаментов. Некоторые из них вы можете найти в специализированных аптеках.", + L"Врачам можно дать указание обследовать на предмет заболеваний всех товарищей по команде, находящихся в секторе. Это позволит узнать о болезни, прежде, чем произойдёт массовое заражение!", + L"Врачи находятся в большей степени риска заразиться при лечении инфицированных пациентов. Средства индивидуальной защиты снизят риск заражения.", + L"Если клинковое оружие ранит инфицированного человека, лезвие оружия становится заражённым и может стать причиной распространения инфекции.", +}; + +STR16 szPMCWebSite[] = +{ + // main page + L"Цербер", + L"Ваше превосходство в безопасности", + + // links to other pages + L" Что есть Цербер", + L" Нанять команду", + L" Нанять солдата", + + // text on the main page + L"Корпорация Цербер - хорошо известный международный частный военный подрядчик. Начиная с 1983 года, мы предоставляем свои услуги охраны и обучения подразделений боевого назначения по всему миру.", + L"Наш профессионально обученный персонал обеспечивает безопасность более 30 правительств по всему миру. В том числе в нескольких горячих точках.", + L"Наши тренировочные центры есть почти в каждой точке мира, включая Индонезию, Колумбию, Катар, Южную Африку и Румынию. Благодаря этому мы можем, как правило, выполнить свои обязательства по контракту в течение 24 часов.", + L"В разделе \"Нанять солдата\" мы предлагаем индивидуальные договоры с опытными ветеранами в сфере безопасности.", + L"Конечно же, вы можете нанять сразу целую роту солдат. В разделе \"Нанять команду\", вы можете указать количество солдат к найму, а так же, выбрать место, где необходимы их услуги. В связи с трагическим инцидентом в прошлом, мы доставляем своих контрактников лишь в зоны, которые находятся под вашим контролем.", + L"Своих сотрудников мы можем доставить воздухом, в этом случае, в месте прибытия, конечно, должен быть аэропорт. В зависимости от региона прибытия также возможны внедрения/проникновения через порты или пограничные посты.", + L"Работаем только по предоплате. Далее ежедневная оплата услуг наших сотрудников будет списываться с вашего счёта.", + + // militia contract page + L"Выберите уровень и количество ополченцев:", + L"Новобранец", + L"Солдат рядовой", + L"Солдат ветеран", + + L"%d чел., %d$ каждый", + L"К найму: %d", + L"Стоимость: %d$", + + L"Выберите место высадки солдат:", + L"Общая стоимость: %d$", + L"РВП: %02d:%02d", + L"Оплатить", + + L"Благодарим за сотрудничество! Наши солдаты прибудут в место назначения завтра в %02d:%02d.", + L"Подкрепление из Цербер прибыло в %s.", + L" Информация: рядовых - %d чел., ветеранов - %d чел. прибудут в %s, время прибытия %02d:%02d, день %d.", + L"Под Вашим контролем нет мест, куда бы мы могли прислать своих солдат!", + + // individual contract page +}; + +STR16 szTacticalInventoryDialogString[]= +{ + L"Команды инвентаря", + + L"ПНВ", + L"Перезар.", + L"Собрать", + L"", + + L"Сортиров", + L"Объед.", + L"Отдел.", + L"Организ.", + + L"Ящики", + L"Коробки", + L"Сбросить", + L"Поднять", + + L"", + L"", + L"", + L"", +}; + +STR16 szTacticalCoverDialogString[]= +{ + L"Режим отображения укрытий", + + L"Выкл", + L"Враги", + L"Боец", + L"", + + L"Роли", + L"Укреп.", + L"Следы", + L"Шанс", + + L"Ловушки", + L"Сеть", + L"Детект.", + L"", + + L"Сеть A", + L"Сеть B", + L"Сеть C", + L"Сеть D", +}; + +STR16 szTacticalCoverDialogPrintString[]= +{ + + L"Выключение отображения укрытий или ловушек", + L"Показывает опасные зоны", + L"Показывает что видит боец", + L"", + + L"Показать символ роли противников", + L"Показать планируемые укрепления", + L"Показать следы противника", + L"", + + L"Показать сеть ловушек", + L"Показать цветную сеть ловушек", + L"Показать ближайшие ловушки", + L"", + + L"Показать сеть ловушек A", + L"Показать сеть ловушек B", + L"Показать сеть ловушек C", + L"Показать сеть ловушек D", +}; + + +STR16 szDynamicDialogueText[40][17] = // TODO.Translate +{ + // OPINIONEVENT_FRIENDLYFIRE + L"Какого черта! $CAUSE$ атаковал(а) меня!", + L"", + L"", + L"Что? Я? Никогда! Я целился(-ась) во врага!", + L"Ой.", + L"", + L"", + L"$CAUSE$ атаковал(а) $VICTIM$. Что ты делаешь?", + L"Хмм, это должно быть дружественный огонь!", + L"Да, Я тоже это видел(а)!", + L"Не увиливай, $CAUSE$. Ты всё четко видел(а)! На чьей ты стороне?", + L"Я все видел(а), это точно был дружественный огонь!", + L"Такое может случиться в пылу битвы. $CAUSE$, будь повнимательнее в следующий раз.", + L"Мы на войне! Люди постоянно ловят пули!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHSOLDMEOUT + L"Эй! Забали варежку, $CAUSE$! Стукач!", + L"", + L"", + L"Ага, как же! А ты слабачек", + L"Ты слышишь это? Чёрт.", + L"", + L"", + L"$VICTIM$ зол с $CAUSE$ потому что $CAUSE_GENDER$ говорил с тобой. Что ты делаешь?", + L"Nono, $CAUSE$, speak up... What did $VICTIM$ do?", + L"Yeah, mind your own business, $CAUSE$!", + L"This isn't girls college, keep your snickering to yourself, $CAUSE$.", + L"Yeah. Man up!", + L"I'm not sure whether it was the correct way, but $CAUSE_GENDER$ does have a point...", + L"This again? Keep your bickering to yourself, we have no time for this!", + L"", + L"", + L"", + + // OPINIONEVENT_SNITCHINTERFERENCE + L"$CAUSE$ is bullying me again!", + L"", + L"", + L"You're jeopardising the entire mission, and I won't let that stand any longer!", + L"Hey, it's for your own good. You'll thank me later.", + L"", + L"", + L"$CAUSE$ has stopped $VICTIM$ from misbehaving, and $VICTIM_GENDER$ is out for revenge. What do you do?", + L"Then stop giving reasons for that!", + L"Drop it, $CAUSE$, who are you to tell us what to do?!", + L"You won't let that stand? Cute. Who ever made you the boss?", + L"Agreed. We can't let our guard down for a single moment!", + L"Can't you two sort this out?", + L"Meh meh meh. Have any of you losers lost their bib? You're pathetic. ", + L"", + L"", + L"", + + // OPINIONEVENT_FRIENDSWITHHATED + L"Hmpf. Typical $CAUSE$, figured $CAUSE_GENDER$ would hang out with the wrong crowd!", + L"", + L"", + L"My friends are none of your business!", + L"Can't you two all get along, $VICTIM$?", + L"", + L"", + L"$VICTIM$ doesn't like $CAUSE$'s friend. What do you do?", + L"Everybody can hang out with whom $CAUSE_GENDER$ wants!", + L"Yeah, you guys are ugly!", + L"Then you should change your business. 'Cause its bad.", + L"What's that to you, $VICTIM$?", + L"Yeah yeah, terrible business, that. Are you sure that is the MOST PRESSING issue right now?", + L"Nobody wants to hear all this crap...", + L"", + L"", + L"", + + // OPINIONEVENT_CONTRACTEXTENSION + L"Yeah, sure. My contract's about to end, but no, gotta take care of $CAUSE$ first.", + L"", + L"", + L"Oh yeah? I'm actually useful. Perhaps that's why you didn't get an extension.", + L"I'm sure you'll get your extension soon. You know how odd online banking can be.", + L"", + L"", + L"$VICTIM$ is jealous as we extended $CAUSE$'s contract early. What do you do?", + L"You are still getting paid, no? What does it matter as long as you get the money?", + L"And your contract ends so soon, $CAUSE$... I hope you get an extension.", + L"Yeah. All that worth hasn't shown yet though.", + L"Aww, that burns, doesn't it, $VICTIM$?", + L"We have limited funds. Someone needs to get paid first, right?", + L"You'll all get paid in time. Unless you continue like this. I'm sure there are less annoying mercs out there.", + L"", + L"", + L"", + + // OPINIONEVENT_ORDEREDRETREAT + L"Nice command, $CAUSE$! Why would you order retreat?", + L"", + L"", + L"I just got us out of that hellhole, you should thank me for saving your life.", + L"They were flanking us, there was no other way!", + L"", + L"", + L"$VICTIM$ dislikes the retreat command $CAUSE$ gave. What do you do?", + L"You know you can go back if you want... nobody's stopping you.", + L"We were rockin' it until that point.", + L"Oh, now YOU got us out? By being the first to leave? How noble of you.", + L"I sure did, $CAUSE$. Man, I don't want to go back THERE again.", + L"We're still alive, this is what counts.", + L"The more pressing issue is when will we go back, and finish the job?", + L"", + L"", + L"", + + // OPINIONEVENT_CIVKILLER + L"What the hell is wrong with you, $CAUSE$? You just killed an innocent!", + L"", + L"", + L"He had a gun, I saw it!", + L"Oh god. No! What have I done?", + L"", + L"", + L"$VICTIM$ is furious: $CAUSE$ killed a civilian. What do you do?", + L"Better safe than sorry I say...", + L"Yeah. The poor sod never had a chance. Damn.", + L"Don't talk crap. That was an unarmed civilian. We are here to protect these people!", + L"And you took him down nice and clean, good job!", + L"This is war. People die all the time... though I'd prefer it if it were less obvious that we are so, ehm, proactive.", + L"Who cares? Can't make a cake without breaking a few eggs.", + L"", + L"", + L"", + + // OPINIONEVENT_SLOWSUSDOWN + L"Can we get rid of $CAUSE$, please? That slowpoke is holding us back.", + L"", + L"", + L"I wouldn't if you would carry your fair share of the gear, $VICTIM$!", + L"It's all this stuff, it's so heavy!", + L"", + L"", + L"$VICTIM$ feels $CAUSE$ slows down the team. What do you do?", + L"We leave nobody behind, not even $CAUSE$!", + L"We have to move fast, the enemy isn't far behind!", + L"Everybody carries his gear. How do you expect to fight if you can't even carry your gun?", + L"Aye, stop complaining. We go through this together or we don't do it at all.", + L"If you are so annoyed that $CAUSE$ is slow, $VICTIM$, maybe you could lend a hand.", + L"If you still have enough breath left to complain, $VICTIM$, you should lend $CAUSE_GENDER$ a hand.", + L"", + L"", + L"", + + // OPINIONEVENT_NOSHARINGFOOD + L"Damn $CAUSE$, $CAUSE_GENDER$ is keeping all that tasty food to $CAUSE_PRONOUN$self...", + L"", + L"", + L"Not my problem if you already ate all your rations.", + L"Oh $VICTIM$, why didn't you say something then?", + L"", + L"", + L"$VICTIM$ wants $CAUSE$'s food. What do you do?", + L"We all get the same. If you used up yours already that's your problem.", + L"If $CAUSE$ shares, I want some too!", + L"Why do you have so much food anyway? Do I smell extra rations there?.", + L"Right, everyone got enough back at the base...", + L"There's enough food left at the base, so no need to fight, ok?", + L"I wouldn't call that stuff 'tasty', but if you ladies wanna fight about it, fine by me.", + L"", + L"", + L"", + + // OPINIONEVENT_ANNOYINGDISABILITY + L"Oh, come on, $CAUSE$. It's not a good moment!", + L"", + L"", + L"Just what I need. Good advice. Thanks, $VICTIM$, you are a big help.", + L"It's my only weakness, I can't help it!", + L"", + L"", + L"$CAUSE$' tick is getting on $VICTIM$'s nerves. What do you do?", + L"What does it even matter to you? Don't you have something to do?", + L"Really $CAUSE$. This is a military organization and not a ward.", + L"Well, we are pros, an you're not, $CAUSE$.", + L"Don't be such a snob, $VICTIM$.", + L"Uhm. Is $CAUSE_GENDER$ okay?", + L"Bla bla blah. Another notable moment of the crazies squad.", + L"", + L"", + L"", + + // OPINIONEVENT_ADDICT + L"$CAUSE$ is high like a zeppelin! How am I supposed to work with that junkie?", + L"", + L"", + L"Taking the stick out of your butt would be a starter, jeez...", + L"I've seen things man. And some... stuff!", + L"", + L"", + L"$CAUSE$ took drugs and $VICTIM$ saw it. What do you do?", + L"Hey, $CAUSE$ needs to ease the stress, ok?", + L"How unprofessional.", + L"This is war and not a stoner party. Cut it out, $CAUSE$!", + L"Hehe. So true.", + L"I am sure there is a good explanation for this. Am I right, $CAUSE$?", + L"You can inject yourself with whatever you like, but only after the battle is over.", + L"", + L"", + L"", + + // OPINIONEVENT_THIEF + L"What the... Hey! $CAUSE$! Give it back, you damn thief!", + L"", + L"", + L"Have you been drinking? What the hell is your problem?", + L"You noticed? Dammit... 50/50?", + L"", + L"", + L"$VICTIM$ saw $CAUSE$ steal an item. What do you do?", + L"If you don't have any proof, don't throw around accusations, $VICTIM$.", + L"So that's the kind of people were stuck with, $VICIM$? I better watch my wallet then.", + L"HEY! You put that back right now!", + L"No idea. All of a sudden $VICTIM$ is all drama.", + L"Perhaps we could get a raise to resolve this... issue?", + L"Shut up! There is more than enough loot for all of us!", + L"", + L"", + L"", + + // OPINIONEVENT_WORSTCOMMANDEREVER + L"What a disaster. That was worst command ever, $CAUSE$!", + L"", + L"", + L"I don't have to take that from a grunt like you!", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"", + L"", + L"$CAUSE$ does not trust $VICTIM$'s orders. What do you do?", + L"Someone had take the lead and $CAUSE$ did it. Did you have a better plan?", + L"Well, we sure aren't going to win the war at this rate...", + L"Then take it from me... that wasn't 'commanding' as much as 'handwaving'.", + L"We have a clear chain of command, and you sure as hell aren't on top, $VICTIM$!", + L"We will not forget their sacrifice. They died so we could fight on.", + L"What? This is the business. Screw up and you're dead. They knew the risks. Move on.", + L"", + L"", + L"", + + // OPINIONEVENT_RICHGUY + L"How can $CAUSE$ earn this much? It's not fair!", + L"", + L"", + L"Dream on, $VICTIM$. I'm worth every penny, and you know it!", + L"You don't expect me to complain, do you?", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s paycheck. What do you do?", + L"Quit whining about the money, you get more than enough yourself!", + L"In all honesty, $VICTIM$, I think you should adjust your rate!", + L"Worth it? All you do is pose!", + L"Relax. At least some of us appreciate your service, $CAUSE$.", + L"Perhaps $CAUSE_GENDER$ is just good at salary negotiations?", + L"Everybody gets what the deserve. If you complain, you deserve less.", + L"", + L"", + L"", + + // OPINIONEVENT_BETTERGEAR + L"$CAUSE$ is stocking the good gear for $CAUSE_PRONOUN$self. Not fair!", + L"", + L"", + L"Contrary to you, I actually know how to use them.", + L"Well, someone has to use it, right? Better luck next time!", + L"", + L"", + L"$CAUSE$ is jealous of $VICTIM$'s equipment. What do you do?", + L"You're just making up an excuse for your poor marksmanship.", + L"Yeah, this smells of cronyism to me.", + L"If by 'use' you mean 'waste a lot bullets', then yeah, you are a pro.", + L"I'll second that!", + L"Is that so? Well, I expect superior marksmanship from $CAUSE_GENDER$ from now on.", + L"Did it ever occur to you that our supplies are limited? We can't ALL get the one good gun.", + L"", + L"", + L"", + + // OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS + L"Do I look like a bipod? Get that thing off me, $CAUSE$!", + L"", + L"", + L"Don't be such a wuss. This is war!", + L"Oh. Didn't see you for a minute there.", + L"", + L"", + L"$CAUSE$ used $VICTIM$'s chest as a gun rack. How odd. What do you do?", + L"Don't be such a wuss. This is war!", + L"Wow. Are you trying to be a jerk, $CAUSE$, or is this normal for you?", + L"You are and always will be an insensitive jerk, $CAUSE$.", + L"Sometimes you just have to use your surroundings!", + L"Ehm... what are you two DOING?", + L"This is hardly the time to fondle each other, dammit.", + L"", + L"", + L"", + + // OPINIONEVENT_BANDAGED + L"Спасибо, $CAUSE$. Я уж думал я истеку кровью до смерти.", + L"", + L"", + L"Я делаю свою работу, ты можешь вернуться к своей!", + L"Эй, мы должны присматривать друг за другом, ты же ведь сделашь также в следующий раз, $VICTIM$.", + L"", + L"", + L"$CAUSE$ перевязал $VICTIM$. Что ты делаешь?", + L"Patched together again? Good, now move!", + L"Всегда пожалуйста.", + L"Jeez. Woken up on the wrong foot today?", + L"Talk about a no-nonsense approach...", + L"How did you even get wounded? Where did the attack come from?", + L"You need to be more careful. Now, where did the attack come from?", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_GOOD + L"Yeah, $CAUSE$! You get it! How 'bout next round?", + L"", + L"", + L"Pah. I think you've had enough.", + L"Sure. Bring it on!", + L"", + L"", + L"Drunk $VICTIM$ likes $CAUSE$. What do you do?", + L"Yeah, enough booze for you today.", + L"Hoho, party!", + L"Party pooper!", + L"You sure like to keep a cool head, $CAUSE$.", + L"Alright, ladies, party's over, move on!", + L"Who told you to slack off? You have a job to do!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_SUPER + L"$CAUSE$... you're... you are... hic... you're the best!", + L"", + L"", + L"Tehehe. $VICTIM$, you are soooo wasted. You.. hic. You need to restrain yourself. Discipline, you know? Like me!", + L"Hic... yeah. You too, $VICTIM$. You. hic.. too!", + L"", + L"", + L"Drunk $VICTIM$ dislikes $CAUSE$. What do you do?", + L"Whatever. We still have a job to do, so this party is over for you, $VICTIM$.", + L"Heeeey... this is actually kinda nice for a change.", + L"'I know discipline', said the clueless drunk...", + L"Yeargh. Dis... gulp! Disciplined like... ehm... us!", + L"Drink one for me too! But not now, because war.", + L"You celebrate already ? This in't over yet. Not by a longshot!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_BAD + L"Damn, $CAUSE$! You... you got enough... Learn to keep your liquor...", + L"", + L"", + L"Cut it out, $VICTIM$! You clearly don't know when to stop!", + L"Tehehe. You are RIGHT. Hehe. Always right. Hic!", + L"", + L"", + L"$VICTIM$ is wasted and wants to be $VICTIM$'s buddy. What do you do?", + L"Relax, it's just a bit of booze.", + L"Hey keep it down over there, okay?", + L"You're just as drunk. Beat it, $CAUSE$!", + L"Leave alcohol to the big ones, okay?", + L"Later, ok?", + L"We might've won this battle, but not this godamn war. So move it, soldier!", + L"", + L"", + L"", + + // OPINIONEVENT_DRINKBUDDIES_WORSE + L"What the hell, $CAUSE$! Ugh... I'm never drinking with you again, you sicko.", + L"", + L"", + L"Oh SHUT UP $VICTIM$! You don't know how to beh.. beha... beha? Ehm... You make no sense. At all. Yeah. You're no fun.", + L"Well you're no fu... fu... fu? Fun! You are not. Hic!. No.", + L"", + L"", + L"$VICTIM$ is wasted and wants to tear $VICTIM$ a new one. What do you do?", + L"Jeez $VICTIM$, why so uptight all of a sudden? Anything happened?", + L"This party was cool until $CAUSE$ ruined it!", + L"$CAUSE$! Shut it! You are a disgrace for this unit. Get out and sober up!", + L"Word!", + L"Why don't you two sober up? You're pretty wasted...", + L"Both of you, shut up! You are a disgrace to this unit!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_US + L"I knew I couldn't depend on you, $CAUSE$!", + L"", + L"", + L"Depend? It was all your fault!", + L"Touched a nerve there, didn't I?", + L"", + L"", + L"$VICTIM$ does not like was $CAUSE$ has to say. What do you do?", + L"So you depend on others to do your job? Then what good are you?!", + L"Indeed. Way to let $VICTIM$ hang!", + L"This isn't some schoolyard sympathy crap. It WAS your fault!", + L"Yeah, what's with the attitude?", + L"Zip it, both of you!", + L"Silence, now!", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_US + L"Ха! Видите? Даже $CAUSE$ поддерживает меня.", + L"", + L"", + L"'Даже'? Что это значит?", + L"Да. Я польностью с $VICTIM$ здесь.", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ has to say about $VICTIM_GENDER$. What do you do?", + L"Don't let it go to your head.", + L"Hey, don't forget about me!", + L"Apparently, sometimes even $CAUSE$ is deemed important...", + L"Do I smell trouble here??", + L"This is pointless! Discuss that in private, but not now.", + L"$VICTIM$! $CAUSE$! Less talk, more action, please!", + L"", + L"", + L"", + + // OPINIONEVENT_AGAINST_ENEMY + L"Yeah, $CAUSE$ saw you do it!", + L"", + L"", + L"No I did not!", + L"And we won't be quiet about it, no sir!", + L"", + L"", + L"$VICTIM$ likes what $CAUSE$ said about the others. What do you do?", + L"I don't think so...", + L"Yeah, totally!", + L"Hu? You said you did.", + L"Yeah, don't twist what happened!", + L"Who cares? We have a job to do.", + L"If you ladies keep this on, we're going to have a real problem soon.", + L"", + L"", + L"", + + // OPINIONEVENT_FOR_ENEMY + L"I can't believe you wouldn't agree with me on this, $CAUSE$.", + L"", + L"", + L"It's because you're wrong, that's why.", + L"I'm surprised too, but that's how it is.", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$ siding with the others. What do you do?", + L"Ugh. What now...", + L"Hum. Never saw that coming.", + L"Oh come down from your high horse, $CAUSE$.", + L"Yeah, you are wrong, $VICTIM$!", + L"Can I shut down squad radio, so I don't have to listen to you?", + L"Yes, very melodramatic. How is any of this relevant?", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_GOOD + L"Yeah... you're right, $CAUSE$. Peace?", + L"", + L"", + L"No. I won't let this go.", + L"Hmm... ok!", + L"", + L"", + L"$VICTIM$ appreciates $CAUSE$'s conflict resolution. What do you do?", + L"You're not getting away this easy.", + L"Glad you guys are not angry anymore.", + L"Oh come on. $VICTIM$ is letting it go, what's your issue now?", + L"You tell 'em, $CAUSE$!", + L"*Sigh* Shake hands or whatever you people do, and then back to business.", + L"Yes, please. Discuss your petty grievings in full detail, we are all DYING to hear it.", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_REASON_BAD + L"No. This is a matter of principle.", + L"", + L"", + L"As if you had any to start with.", + L"Suit yourself then..", + L"", + L"", + L"$VICTIM$ does not like $CAUSE$'s appeal. What do you do?", + L"You're just asking for trouble, right?", + L"Guess you're not getting away that easy, $CAUSE$.", + L"Don't be so flippant.", + L"Who needs principles anyway?", + L"Now that this is out of the way, perhaps we could continue?", + L"Shut up, both of you!", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD + L"Alright alright. Jeez. I'm over it, okay?", + L"", + L"", + L"Cut it, drama queen.", + L"As long as it does not happen again.", + L"", + L"", + L"$VICTIM$ was reined in by $CAUSE$. What do you do?", + L"No reason to be so stiff about it.", + L"Yeah, keep it down, will ya?", + L"Pah. You're the one making all the fuss about it...", + L"Yeah, drop that attitude, $VICTIM$.", + L"*Sigh* More of this?", + L"Why am I even listening to you people...", + L"", + L"", + L"", + + // OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD + L"Who do you think you are, $CAUSE$? No, I won't be quiet about this!", + L"", + L"", + L"I'm the one who tells you to shut up! I'm your superior, $VICTIM$!", + L"The two of us are going to have real problem soon, $VICTIM$.", + L"", + L"", + L"$VICTIM$ did not take $CAUSE$'s words of action well. What do you do?", + L"Pfft. Don't make a fuss out of it.", + L"Yeah, you won't boss us around anymore!", + L"You are certainly nobodies superior!", + L"Not sure about that, but yep!", + L"Hey. Hey! Both of you, cut it out! What are you doing?", + L"If anybody is superior here, then that's me... and I'm ordering you to stand down!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_DISGUSTING + L"Ewww! $CAUSE$ is sick! Get away from me, that looks disgusting!", + L"", + L"", + L"Oh yeah? Back off, before I cough on you!", + L"It really is. I... *cough* don't feel so well...", + L"", + L"", + L"$VICTIM$ is offended by $CAUSE$ diseases. What do you do?", + L"Stop behaving like a first grader. We need to get $CAUSE$ to a doctor!", + L"This does look unhealthy. That better not be contagious!", + L"Stop it! We don't need more of whatever it is you have!", + L"Yeah, there's nothing you can do against this stuff, right?", + L"The important thing is to get $CAUSE$ to a doctor, and to make sure $CAUSE_GENDER$ doesn't infect anybody else.", + L"Stop whining! $CAUSE$, get that treated, and the rest of you, back to business!", + L"", + L"", + L"", + + // OPINIONEVENT_DISEASE_TREATMENT + L"Thanks, $CAUSE$. I'm already feeling better.", + L"", + L"", + L"How did you get that in the first place? Did you forget to wash your hands again?", + L"No problem, we can't have you running around coughing blood, right? Riiight?", + L"", + L"", + L"$VICTIM$ has treated $CAUSE$'s diseases. What do you do?", + L"Where did you get that stuff from in the first place?", + L"Great. Are you sure it's fully treated now?", + L"The important thing is that it's gone now... It is, right?", + L"I told you people before... this country a dirty place, so beware of what you touch.", + L"We have to be careful. The army isn't the only thing that wants us dead.", + L"Great. Everything done? Then let's get back to shooting stuff!", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_GOOD + L"Отлично, $CAUSE$!", + L"", + L"", + L"Whoa. Are you really getting off on that?", + L"Now THIS is action!", + L"", + L"", + L"$VICTIM$ applauds $CAUSE$'s excessive violence. Does that seem good to you?", + L"This isn't a video game, kid...", + L"That was so wicked!", + L"What are you apologizing for? That was awesome!", + L"You are sick, $VICTIM$.", + L"Killing them is enough. No need to make a show out of it.", + L"Cross us, and this is what you get. Waste the rest of these guys.", + L"", + L"", + L"", + + // OPINIONEVENT_BRUTAL_BAD + L"Черт, $CAUSE$, тебе надо было просто убить их, а не испарить!", + L"", + L"", + L"А чё, если разница?", + L"Ого. Мощная штучка!", + L"", + L"", + L"$VICTIM$ is appalled by $CAUSE$'s excessive violence. What do you think?", + L"Don't tell me you've never seen blood before...", + L"That was a bit excessive...", + L"Does that mean you aren't even remotely familiar with your gun?", + L"On the plus side, I doubt this guy is going to complain.", + L"Don't waste ammunition, $CAUSE$.", + L"They put up a fight, we put them in a bag. End of story.", + L"", + L"", + L"", + + // OPINIONEVENT_TEACHER + L"Thanks for giving me a few pointers, $CAUSE$. I've learned a lot from you.", + L"", + L"", + L"About that... you still have a lot to learn, $VICTIM$.", + L"You're welcome!", + L"", + L"", + L"$CAUSE$ is unimpressed by $VICTIM$'s progress. What do you think?", + L"At some point you'll have to do on your own though.", + L"Yeah, you better stick to $CAUSE$.", + L"Nah, $VICTIM_GENDER$ is doing fine.", + L"Yes, $VICTIM_GENDER$ still needs training.", + L"This training is a good preparation, keep up the good work.", + L"We need everybody at full capacity if we're going to win this campaign, so keep it up.", + L"", + L"", + L"", + + // OPINIONEVENT_BESTCOMMANDEREVER + L"Yeah! Take that, losers! That was a mighty fine strategy, $CAUSE$!", + L"", + L"", + L"I couldn't have done it without you people.", + L"Well, I do have my moments.", + L"", + L"", + L"$CAUSE$ praises $VICTIM$'s leadership. What's your opinion?", + L"Well... it's not like $CAUSE_GENDER$ pulled that all by $CAUSE_PRONOUN$self...", + L"Agreed. $CAUSE$ is a fine squadleader.", + L"It's alright. You deserve this.", + L"You did everything right, $CAUSE$. Good work!", + L"Yeah. We're turning into quite the outfit, aren't we?", + L"We might have won this battle, but the war is far from over. We'll have to repeat victories like this.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_SAVIOUR + L"Wow, that was close. Thanks, $CAUSE$, I owe you!", + L"", + L"", + L"Don't mention it.", + L"You'd do the same for me.", + L"", + L"", + L"$CAUSE$ saved $VICTIM$'s life. What's your opinion?", + L"Pff, that guy was dead anyway.", + L"How bad is it, $VICTIM$? Can you still fight?", + L"Then I will. Good job!", + L"Yeah, I was worried there for a moment.", + L"Good job, but let's focus on ending this first, okay?", + L"When you're done hugging, could we go back to the issue at hand? You know, the guys shooting at us?", + L"", + L"", + L"", + + // OPINIONEVENT_FRAGTHIEF + L"Hey, I had him in my sights! That guy was MINE!", + L"", + L"", + L"What? Are you nuts? We're in the middle of a firefight, and you set up a killcount?", + L"What. Then where's my target?", + L"", + L"", + L"$VICTIM$ is angry with $CAUSE$ for stealing their kill. What's your take on this?", + L"This isn't some videogame, you moron. Nobody gives a shit about your godamn killcount.", + L"Yeah, I hate it when people don't stick to their firing lane.", + L"Stick to shooting whom you're supposed to, $CAUSE$.", + L"Jeez. This feels like nineties videogaming. What's next, $VICTIM_GENDER$'ll accuse the enemy of camping?", + L"You can sort this out later, but right now, everybody make sure we're not missing any angle.", + L"Just stick to your firing sector, kill 'em all, and there'll be plenty of kills for everybody.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_ASSIST + L"Boom! We sure took care of that guy.", + L"", + L"", + L"Well, it was mostly me, but you did help too.", + L"Yup. Ready for the next one.", + L"", + L"", + L"$CAUSE$ and $VICTIM$ brought down an enemy. Any comment?", + L"If you weren't such a bad shot, $CAUSE$ wouldn't have to finish your job.", + L"It takes several people to take them down? Jeez, what kind of body armour do they have?", + L"Blah blah, everybody look at me. $VICTIM$ is such a showoff.", + L"Hehe, they've got no chance.", + L"Hmm. We might need more firepower if it takes several of us to take those guys down, but good work anyway.", + L"I guess you get to share what he had. $CAUSE$, you may draw first.", + L"", + L"", + L"", + + // OPINIONEVENT_BATTLE_TOOK_PRISONER + L"Good thinking. We've already won, no need for more senseless slaughter.", + L"", + L"", + L"We'll see about that... I won't hesitate to use force against them if they resist.", + L"Yeah. Perhaps these guys have some intel we can use.", + L"", + L"", + L"The rest of the enemy team surrendered to $CAUSE$. Now what?", + L"No offense, but if you cannot handle death, $CAUSE$, perhaps this might not be the best job for you?", + L"Good job, $CAUSE$. Makes our job hell of a lot easier.", + L"Hey! Cut the crap. They already surrendered.", + L"Yeah, you can't trust these guys, they're totally reckless.", + L"We should move these guys to a prison ASAP. I'm sure they know what the army is up to.", + L"Pah. I'd have preferred from wasting these losers. They'll just slow us down.", + L"", + L"", + L"", + + // OPINIONEVENT_CIV_ATTACKER + L"Watch it, $CAUSE$! They are on our side!", + L"", + L"", + L"That's just a scratch, they'll live.", + L"Oops.", + L"", + L"", + L"$VICTIM$ is angry: $CAUSE$ injured a civilian. What do you do?", + L"Well, this can happen. As long as they live it's okay.", + L"This won't look good in the after-action report.", + L"What are you doing? Watch it, $CAUSE$!", + L"Don't worry. Happens to me too all the time.", + L"Maintain fire discipline! After this is over, $VICTIM$ and $CAUSE$ will take care of the wounded.", + L"If $CAUSE$ had intended it, they would be dead, so no worries here.", + L"", + L"", + L"", +}; + + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[] = +{ + L"Что?!", + L"Нет!", + L"Это ложь!", + L"Это не правда!", + + L"Ложь, ложь, ложь. Ничего, кроме лжи!", + L"Обманщик!", + L"Предатель!", + L"Следи за языком!", + + L"Не твоего ума дело.", + L"Кто вообще тебя позвал?", + L"Никто и не спрашивал мнения тебя, $INTERJECTOR$.", + L"Держись от меня подальше.", + + L"Почему вы все против меня?", + L"Почему ты против меня, $INTERJECTOR$?", + L"Я знал(а) это! $VICTIM$ и $INTERJECTOR$ - соучастники!", + L"Не слушаю..!", + + L"Ненавижу этот дурдом.", + L"Ненавижу этот бредлам.", + L"Отвали!", + L"Вранье, вранье, вранье...", + + L"Никогда!", + L"Не правда.", + L"Это такие враки.", + L"Я знаю, то что у меня перед глазами.", + + L"Я бес понятия о чем $INTERJECTOR_GENDER$ ведет речь.", + L"Да не слушайте, $INTERJECTOR_PRONOUN$!", + L"Неа.", + L"Ошибаешься.", +}; + +STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[] = +{ + L"I knew you'd back me, $INTERJECTOR$", + L"I knew $INTERJECTOR$ would back me.", + L"What $INTERJECTOR$ said.", + L"Что $INTERJECTOR_GENDER$ сказал.", + + L"Спасибо, $INTERJECTOR$!", + L"Еще раз, я прав(а)!", + L"Видишь, $CAUSE$? Правда на моей стороне!", + L"Еще раз - $SPEAKER$ говорит дело!", + + L"Ну да.", + L"Угу.", + L"Ага", + L"Да.", + + L"Конечно.", + L"Правда.", + L"Ха!", + L"Видишь?", + + L"Именно!", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[] = +{ + L"Так!", + L"Действительно!", + L"Именно", + L"$CAUSE$ всегда это делает.", + + L"$VICTIM$ прав(а)!", + L"Я тоже хотел(а) это сказать!", + L"Что сказал(а) $VICTIM$.", + L"Это наша $CAUSE$!", + + L"Дааа!", + L"Становится интересно...", + L"Скажи им, $VICTIM$!", + L"Соглашаюсь с $VICTIM$...", + + L"Классический $CAUSE$.", + L"Невозможно сказать лучше.", + L"Именно это и случилось.", + L"Согласен!", + + L"Ага.", + L"Верно.", + L"В точку.", +}; + +STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[] = +{ + L"А теперь подождите...", + L"Скундочку, это не верно...", + L"Что? Нет.", + L"Это не то, что произошло.", + + L"Хватит трепаться о $CAUSE$!", + L"Ой, закнись, $VICTIM$, а!", + L"Не-не-не, было не так.", + L"Вау. Почему такая резкая неожиданность, $VICTIM$?", + + L"И я предполагаю такого не было, $VICTIM$?", + L"Хммммм... нет.", + L"Отлично, давайте услышим доводы. Позоже у нас нет других вариантов...", + L"Ты ошибаешься!", + + L"Ты ошибаешься!", + L"Я и $CAUSE$ никогад не сделали бы такого.", + L"Хах, не может быть.", + L"Я так не думаю.", + + L"Зачем про это вспоминать сейчас?", + L"Серьезно, $VICTIM$? Это необходимо?", +}; + +STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[] = +{ + L"Тихо", + L"Поддерживаю $VICTIM$", + L"Поддерживаю $CAUSE$", + L"подумайте", + L"Заткнитесь", +}; + +STR16 szDynamicDialogueText_GenderText[] = +{ + L"он", + L"она", + L"его", + L"её", +}; + +STR16 szDiseaseText[] = +{ + L" %s%d%% к проворности\n", + L" %s%d%% к ловкости\n", + L" %s%d%% к силе\n", + L" %s%d%% к интеллекту\n", + L" %s%d%% к уровню\n", + + L" %s%d%% к очкам действия\n", + L" %s%d к уровню энергии\n", + L" %s%d%% к силе для переноски вещей\n", + L" %s%2.2f восстановление здоровья в час\n", + L" %s%d к нужде во сне\n", + L" %s%d%% потребление воды\n", + L" %s%d%% потребление еды\n", + + L"%s: поставлен диагноз - %s!", + L"%s излечен(а) от %s!", + + L"Обследование", + L"Лечение населения", + L"Burial", // TODO.Translate + L"Отмена", + + L"\n\n%s (недиагностирована) - %d / %d\n", + + L"High amount of distress can cause a personality split\n", // TODO.Translate + L"Contaminated items found in %s' inventory.\n", + L"Whenever we get this, a new disability is added.\n", // TODO.Translate + + L"Only one hand can be used.\n", + L"Only one hand can be used.\nA medical splint was applied to speed up the healing process.\n", + L"Leg functionality severely limited.\n", + L"Leg functionality severely limited.\nA medical splint was applied to speed up the healing process.\n", +}; + +STR16 szSpyText[] = +{ + L"Hide", // TODO.Translate + L"Get Intel", +}; + +STR16 szFoodText[] = +{ + L"\n\n|В|о|д|а: %d%%\n", + L"\n\n|П|и|щ|а: %d%%\n", + + L"изменение к макс. боевому духу %s%d\n", + L" %s%d к нужде во сне\n", + L" %s%d%% к восстановлению дыхания\n", + L" %s%d%% к эффективности в задании\n", + L" %s%d%% шанс потерять в параметрах\n", +}; + +STR16 szIMPGearWebSiteText[] = +{ + // IMP Gear Entrance + L"Как будет роздано снаряжение?", + L"Автоматически - случайный выбор, согласно ваших ответов.", + L"Самостоятельно - вы сами снарядите свой персонаж.", + L"Автоматически", + L"Самостоятельно", + + // IMP Gear Entrance + L"I.M.P. Экипировка", + L"Additional Cost: %d$ (%d$ prepaid)", // TODO.Translate +}; + +STR16 szIMPGearPocketText[] = +{ + L"Выбрать шлем", //L"Select helmet", + L"Выбрать жилет", //L"Select vest", + L"Выбрать поножи", //L"Select pants", + L"Выбрать для лица", //L"Select face gear", + L"Выбрать для лица", //L"Select face gear", + + L"Выбрать осн. оружие", //L"Select main gun", + L"Выбрать доп. оружие", //L"Select sidearm", + + L"Выбрать разгр. жилета", //L"Select LBE vest", + L"Выбрать разгр. кобуру", //L"Select left LBE holster", + L"Выбрать разгр. кобуру", //L"Select right LBE holster", + L"Выбрать разгр. ранец", //L"Select LBE combat pack", + L"Выбрать разгр. рюкзак", //L"Select LBE backpack", + + L"Select launcher / rifle", + L"Выбрать оружие ближ. боя", //L"Select melee weapon", + + L"Выбрать доп. предметы", //L"Select additional items", //BIGPOCK1POS + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Select medkit", //MEDPOCK1POS + L"Select medkit", + L"Select medkit", + L"Select medkit", + L"Select main gun ammo", //SMALLPOCK1POS + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select main gun ammo", + L"Select launcher / rifle ammo", //SMALLPOCK6POS + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select launcher / rifle ammo", + L"Select sidearm ammo", //SMALLPOCK11POS + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Select sidearm ammo", + L"Выбрать доп. предметы", //L"Select additional items", //SMALLPOCK19POS + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", + L"Выбрать доп. предметы", //L"Select additional items", //SMALLPOCK30POS + L"Left click to select item / Right click to close window", +}; + +STR16 szMilitiaStrategicMovementText[] = +{ + L"Нельзя отдавать приказы в этом секторе, команды ополчению невозможны.", + L"Незадействованы", + L"Группа №", + L"Далее", + + L"РВП", + L"Группа %d (новая)", + L"Группа %d", + L"Final", + + L"Желающих: %d (+%5.3f)", +}; + +STR16 szEnemyHeliText[] = +{ + L"Вражеский вертолёт сбит в %s!", + L"Мы... эм... в настоящее время не контролируем это ПВО, командир...", + L"ПВО не нуждается сейчас в обслуживании.", + L"Мы уже отдали приказ заняться ремонтом, исполнение займёт время.", + + L"Нам нехватает ресурсов, чтобы выполнить приказ.", + L"Отремонтировать оборудование ПВО? Это обойдётся в %d$ и займёт %d часов.", + L"Вражеский вертолёт подбит в %s.", + L"%s стреляет %s по вражескому вертолюту в %s.", + + L"База ПВО в %s обстреляла вражеский вертолёт в %s.", +}; + +STR16 szFortificationText[] = // TODO.Translate +{ + L"No valid structure selected, nothing added to build plan.", + L"No gridno found to create items in %s - created items are lost.", + L"Structures could not be built in %s - people are in the way.", + L"Structures could not be built in %s - the following items are required:", + + L"No fitting fortifications found for tileset %d: %s", + L"Tileset %d: %s", +}; + +STR16 szMilitiaWebSite[] = +{ + // main page + L"Ополчение", + L"Силы ополчения", +}; + +STR16 szIndividualMilitiaBattleReportText[] = +{ + L"Участи в Операции %s", + L"Пришел в день %d, %d:%02d in %s", + L"Повышен в день %d, %d:%02d", + L"KIA, Operation %s", + + L"Мелкое ранение в операции %s", + L"Сильное ранение в операции %s", + L"Критическое ранение в операции %s", + L"Проявил(а) доблесть в операции %s", + + L"Нанят из Цербера в день %d, %d:%02d in %s", + L"Defected to us on Day %d, %d:%02d in %s", + L"Contract terminated on Day %d, %d:%02d", + L"Defected to us on Day %d, %d:%02d in %s", +}; + +STR16 szIndividualMilitiaTraitRequirements[] = +{ + L"HP", + L"AGI", + L"DEX", + L"STR", + + L"LDR", + L"MRK", + L"MEC", + L"EXP", + + L"MED", + L"WIS", + L"\nMust have regular or elite rank", + L"\nMust have elite rank", + + L"\n\n|F|u|l|f|i|l|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n\n|F|a|i|l|e|d |R|e|q|u|i|r|e|m|e|n|t|s", + L"\n%d %s", + L"\nBasic version of trait", + + L" (Expert)" +}; + +STR16 szIdividualMilitiaWebsiteText[] = +{ + L"Operations", + L"Are you sure you want to release %s from your service?", + L"HP ratio: %3.0f %% Daily Wage: %3d$ Age: %d years", + L"Daily Wage: %3d$ Age: %d years", + + L"Kills: %d Assists: %d", + L"Status: Deceased", + L"Status: Fired", + L"Status: Active", + + L"Terminate Contract", + L"Personal Data", + L"Service Record", + L"Inventory", + + L"Militia name", + L"Sector name", + L"Weapon", + L"HP ratio: %3.1f%%%%%%%", + + L"%s is not active in the currently loaded sector.", + L"%s has been promoted to regular militia", + L"%s has been promoted to elite militia", + L"Status: Deserted", // TODO:Translate +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Dead[] = +{ + L"All statuses", + L"Deceased", + L"Active", + L"Fired", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Rank[] = +{ + L"All ranks", + L"Green", + L"Regular", + L"Elite", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Origin[] = +{ + L"All origins", + L"Rebel", + L"PMC", + L"Defector", +}; + +STR16 szIdividualMilitiaWebsiteFilterText_Sector[] = +{ + L"Все сектора", +}; + +STR16 szNonProfileMerchantText[] = +{ + L"Торговец настроен враждебно и не будет торговать.", + L"Торговец не в состоянии вести дела", + L"Торговец отказывается работать во время боя.", + L"Торговец отказывается разговаривать.", +}; + +STR16 szWeatherTypeText[] = +{ + L"обычно", + L"дождь", + L"гроза", + L"песч. буря", + + L"снег", +}; + +STR16 szSnakeText[] = +{ + L"%s избежал(а) от укуса змеи!", + L"%s был(а) укушена змеёй!", +}; + +STR16 szSMilitiaResourceText[] = +{ + L"Превратил %s в ресурсы", + L"Оружие: ", + L"Броня: ", + L"Прочее: ", + + L"Не осталось кандидатов в ополчение!", + L"Не хватает ресурсов для обучения ополчения!", +}; + +STR16 szInteractiveActionText[] = +{ + L"%s начал взлом.", + L"%s получил доступ, но не узнал ничего интересного.", + L"%s не достаточно навыка для взлома.", + L"%s прочел документ, но не узнал ничего интересного.", + + L"%s can't make sense out of this.", + L"%s не может использовать источник воды.", + L"%s купил %s.", + L"%s не может купить - нет достаточно денег. Даже неловко как-то.", + + L"%s выпил из источника воды", + L"Эта штука похоже не работает.", +}; + +STR16 szLaptopStatText[] = // TODO.Translate +{ + L"эффективность угроз %d\n", + L"лидерство %d\n", + L"модификатор подхода %.2f\n", + L"модификатор прошлого %.2f\n", + + L"+50 (other) for assertive\n", + L"-50 (other) for malicious\n", + L"Хороший человек", + L"%s сторонится лишнего насилия и будет акатовать только явных врагов.", + + L"Дружески", + L"Прямо", + L"Threaten approach", + L"Recruit approach", + + L"Stats will regress.", + L"Fast", + L"Average", + L"Slow", + L"Health growth", + L"Strength growth", + L"Agility growth", + L"Dexterity growth", + L"Wisdom growth", + L"Marksmanship growth", + L"Explosives growth", + L"Leadership growth", + L"Medical growth", + L"Mechanical growth", + L"Experience growth", +}; + +STR16 szGearTemplateText[] = // TODO.Translate +{ + L"Enter Template Name", + L"Not possible during combat.", + L"Selected mercenary is not in this sector.", + L"%s is not in that sector.", + L"%s could not equip %s.", + L"We cannot attach %s (item %d) as that might damage items.", // TODO.Translate +}; + +STR16 szIntelWebsiteText[] = +{ + L"Recon Intelligence Services", + L"Your need to know base", + L"Information Requests", + L"Information Verification", + + L"About us", + L"You have %d Intel.", + L"We currently have information on the following items, available in exchange for intel as usual:", + L"There is currently no other information available.", + + L"%d Intel - %s", + L"We can provide aerial reconnaissance of a map region. This will last until %02d:00.", + L"Buy data - 50 intel", + L"Buy detailed data - 70 Intel", + + L"Select map region on which you want info on:", + + L"North-west", + L"North-north-west", + L"North-north-east", + L"North-east", + + L"West-north-west", + L"Center-north-west", + L"Center-north-east", + L"East-north-east", + + L"West-south-west", + L"Center-south-west", + L"Center-south-east", + L"East-south-east", + + L"South-west", + L"South-south-west", + L"South-south-east", + L"South-east", + + // about us + L"On the 'Information Requests' page, you can buy information on various enemy targets for intel.", + L"This includes information on enemy patrols & garrisons, noteworthy persons of interests, enemy aircraft etc..", + L"Some of that information may be of temporary nature.", + L"On the 'Information Verification' page, you can upload data you took of significant intelligence.", + + L"We will verify the data (this process usually takes several hours) and compensate you accordingly.", + L"Note that you will reveive less intel if outside conditions have rendered the information less useful (e.g. the person in question having died since the data was acquired).", + + // sell info + L"You can upload the following facts:", + L"Previous", + L"Next", + L"Upload", + + L"You have already received compensation for the following:", + L"You have nothing to upload.", +}; + +STR16 szIntelText[] = +{ + L"No more enemies present, %s is no longer in hiding!", + L"%s has been discovered and goes into hiding for %d hours.", + L"%s has been discovered, going to sector!", + L"Enemy general present\n", + + L"Terrorist present\n", + L"%s on %02d:%02d\n", + L"No data found", + L"Data no longer eligible.", + + L"Whereabouts of a high-ranking officer of the royal army.", + L"Flight plans of an airforce helicopter.", + L"Coordinates of a recently imprisoned member of your force.", + L"Location of a high-value fugitive.", + + L"Information on possible bloodcat attacks against settlements.", + L"Time and place of possible zombie attacks against settlements.", + L"Information on planned bandit raids.", +}; + +STR16 szChatTextSpy[] = +{ + L"... so imagine my surprise when suddenly...", + L"... and did I ever tell you the story of that one time...", + L"... so, in conclusion, the colonel decided...", + L"... tell you, they did not see that coming...", + + L"... so, without further consideration...", + L"... but then SHE said...", + L"... and, speaking of llamas...", + L"... there I was, in the middle of the dustbowl, when...", + + L"... and let me tell, those things chafe...", + L"... you should have seen his face...", + L"... which wasn't the last of what we saw of them...", + L"... which reminds me, my grandmother used to say...", + + L"... who, by the way, is a total berk...", + L"... also, the roots were off by a margin...", + L"... and I was like, 'Back off, heathen!'...", + L"... at that point the vicars were in oben rebellion...", + + L"... not that I would've minded, you know, but...", + L"... if not for that ridiculous hat...", + L"... besides, it wasn't his favourite leg anyway...", + L"... even though the ships were still watertight...", + + L"... aside from the fact that giraffes can't do that...", + L"... totally wasted that fork, mind you...", + L"... and no bakery in sight. After that...", + L"... even though regulations are clear in that regard...", +}; + +STR16 szChatTextEnemy[] = +{ + L"Whoa. I had no idea!", + L"Really?", + L"Uhhhh....", + L"Well... you see, uhh...", + + L"I am not entirely sure that...", + L"I... well...", + L"If I could just...", + L"But...", + + L"I don't mean to intrude, but...", + L"Really? I had no idea!", + L"What? All of it?", + L"No way!", + + L"Haha!", + L"Whoa, the guys are not going to believe me!", + L"... yeah, just...", + L"That's just like the gypsy woman said!", + + L"... yeah, is that why...", + L"... hehe, talk about refurbishing...", + L"... yeah, I guess...", + L"Wait. What?", + + L"... wouldn't have minded seeing that...", + L"... now that you mention it...", + L"... but where did all the chalk go...", + L"... had never even considered that...", +}; + +STR16 szMilitiaText[] = +{ + L"Train new militia", + L"Drill militia", + L"Doctor militia", + L"Cancel", +}; + +STR16 szFactoryText[] = // TODO.Translate +{ + L"%s: Production of %s switched off as loyalty is too low.", + L"%s: Production of %s switched off due to insufficient funds.", + L"%s: Production of %s switched off as it requires a merc to staff the facility.", + L"%s: Production of %s switched off due to required items missing.", + L"Item to build", + + L"Preproducts", // 5 + L"h/item", +}; + +STR16 szTurncoatText[] = +{ + L"%s now secretly works for us!", + L"%s is not swayed by our offer. Suspicion against us rises...", + L"Suspicion against us is high. We should stop trying to turn more soldiers to our side and lay low for a while.", + L"Recruit approach (%d)", + L"Use seduction (%d)", + + L"Bribe ($%d) (%d)", // 5 + L"Offer %d intel (%d)", + L"How to convince the soldier to join your forces?", + L"Do it", + L"%d turncoats present", +}; + +// rftr: better lbe tooltips +STR16 gLbeStatsDesc[14] = +{ + L"MOLLE Доступный объем:", + L"MOLLE Требуемый объем:", + L"MOLLE Маленьких слотов:", + L"MOLLE Средних слотов:", + L"MOLLE Маленький", + L"MOLLE Средний", + L"MOLLE Средний (питьевая система)", + L"Набедренная платформа", + L"Жилет", + L"Ранец", + L"Рюкзак", // 10 + L"MOLLE Карман", + L"Совместимые рюкзаки:", + L"Совместимые ранцы:", +}; + +STR16 szRebelCommandText[] = // TODO.Translate +{ + L"National Overview", + L"Regional Overview", + L"Mission Overview", + L"Select View:", + L"Regional (2)", + L"National (1)", + L"Mission (3)", + L"Supplies:", + L"Incoming Supplies", + L"Intel:", + L"/day", + L"Current Directive", + L"Improve Directive ($%d)", + L"Improving the selected directive will cost $%d. Confirm expenditure?", + L"Insufficient funds.", + L"New directive will take effect at 00:00.", + L"Militia Overview", + L"Green:", + L"Regular:", + L"Elite:", + L"Projected Daily Total:", + L"Volunteer Pool:", + L"Resources Available:", + L"Guns:", + L"Armour:", + L"Misc:", + L"Training Cost:", + L"Upkeep Cost Per Soldier Per Day:", + L"Training Speed Bonus:", + L"Combat Bonuses:", + L"Physical Stats Bonus:", + L"Marksmanship Bonus:", + L"Upgrade Stats ($%d)", + L"Upgrading militia stats will cost $%d. Confirm expenditure?", + L"Region:", + L"Next", + L"Previous", + L"Administration Team:", + L"None", + L"Active", + L"Inactive", + L"Loyalty:", + L"Maximum Loyalty:", + L"Deploy Administration Team (%d supplies)", + L"Reactivate Administration Team (%d supplies)", + L"It is currently not safe to deploy an administration team to this region. You must establish a foothold by controlling at least one town sector first.", + L"No regional actions available in Omerta.", + L"Administration teams can be deployed to other regions once you capture at least one town sector. Once active, they will be able to expand your influence and power in the region. However, they will need supplies to operate and enact policies.", + L"Be mindful of where you choose to direct supplies. Enacting regional policies will increase supply costs for other policies in the same region and nationally (to a lesser extent).", + L"Administrative Actions:", + L"Establish %s", + L"Improve %s", + L"Current Tier: %d", + L"Taking any administrative action in this region will cost %d supplies.", + L"Dead drop intel gain: %d", + L"Smuggler supply gain: %d", + L"A small group of militia from a nearby safehouse have joined the battle!", + L"[A.R.C. WEBSITE AVAILABLE] With the delivery of food and basic supplies to Omerta, you have convinced the rebels that you're here to make an impact. You have been granted access to the command system they've been working on, which is now available through your laptop.", + L"It is currently not safe to reactivate the administration team here. Recapture a town sector first.", + L"Mine raid successful. Stole $%d.", + L"Insufficient Intel to create turncoats!", + L"Change Admin Action", + L"Cancel", + L"Confirm", + L"<", + L">", + L"Changing this Admin Action will cost $%d and reset its tier. Confirm expenditure?", + L"Insufficient supplies! Admin Actions have been DISABLED.", + L"New missions will be available every %d hours.", + L"New missions are available at the A.R.C. website.", + L"Mission preparations in progress.", + L"Mission duration: %d days", + L"Chance of success: %d%s", + L"[REDACTED]", + L"Name: %s", + L"Location: %s", + L"Assignment: %s", + L"Contract: %d days", + L"Contract: %d hours", + L"Contract: ---", + L"Agent bonus:", + L"Chance of success +%d%s (%s)", + L"Deployment range +%d (%s)", + L"ASD Income -%2.0f%s (%s)", + L"Steal fuel; send to %s (%s)", + L"Destroy reserve units (%s)", + L"Time +%2.0f%s (%s)", + L"Vision -%2.0f%s (%s)", + L"Gear quality -%d (%s)", + L"Overall stats -%d (%s)", + L"Max trainers: %d (%s)", + L"Payout +%2.0f%s (%s)", + L"Payout limit increased to $%d (%s)", + L"Bonus for officers (%s)", + L"Bonus for vehicles (%s)", + L"Duration +%d hours (%s)", + L"Agent not in town", + L"Town loyalty too low", + L"Agent unavailable", + L"Agent contract expiring", + L"Can't use rebel agent", + L"Battle in progress", + L"Prepare Mission (%d supplies)", + L"View active mission effects", + L"View available mission list", + L"You are able to prepare one of the two missions presented. Once an agent is dispatched, they will be unavailable for approximately %d hours before becoming available again. A popup will notify you when preparations are complete. If preparations succeed, the mission's effects become active.", + L"A rebel agent can be sent to prepare a mission, but your mercenaries will be far more effective. Their experience level and skills can provide additional bonuses to missions.", + L"The cost of preparing a mission increases based on the number other missions either active or being prepared.", + L"New missions will be available on Day %d at 00:00.", + L"Active missions:", + L"%s - Preparing - Ready on Day %d, %02d:%02d", + L"%s - Active - Expires on Day %d, %02d:%02d", + L"[%s (%d supplies)]", + L"%s Send a rebel agent to prepare this mission?", + L"%s Send %s to prepare this mission? He will return in approximately %d hours.", + L"%s Send %s to prepare this mission? She will return in approximately %d hours.", + L"Mission \"%s\" is now in effect.", + L"Preparations for mission \"%s\" failed.", + L"Mission \"%s\" has expired and is no longer in effect.", +}; + +STR16 szRebelCommandHelpText[] = // TODO.Translate +{ + L"|S|u|p|p|l|i|e|s\n \nFood, water, medical supplies, weapons, and anything else that\nthe rebels might find useful. Supplies are obtained automatically\nby the rebels.", + L"|I|n|c|o|m|i|n|g |S|u|p|p|l|i|e|s\n \nEach day, the rebels will gather supplies on their own. As you\ntake over more towns, the amount of supplies they will be\nable to find per day will increase.\n \n+%d (Base income)", + L"|C|u|r|r|e|n|t |D|i|r|e|c|t|i|v|e\n \nYou can choose how the rebels will prioritise their strategic\nobjectives. New directives will become available as you make\nprogress.", + L"|A|d|m|i|n|i|s|t|r|a|t|i|o|n |T|e|a|m\n \nOnce deployed, an admin team is responsible for handling the\nday-to-day affairs of the region. This includes supporting\nlocals, creating rebel propaganda, establishing regional\npolicies, and more.", + L"|L|o|y|a|l|t|y\n \nThe effectiveness of many Administrative Actions depends on\nthe region's loyalty to your cause. It is in your best interest\nto raise loyalty as high as possible.", + L"|M|a|x|i|m|u|m |L|o|y|a|l|t|y\n \nYou will need to convince the locals to fully trust you. This\ncan be done by creating a supply line to them, showing that\nyou intend to improve their quality of life.", + L"This Admin Action applies its bonus to town sectors only.", //TODO.Translate + L"This Admin Action applies its bonus to town sectors, and\nsectors immediately adjacent to them.", + L"This Admin Action applies its bonus to town sectors, one\nsector away at Tier 1, and up to two sectors away at Tier 2.", + L"This Admin Action applies its bonus to town sectors, up to\ntwo sectors away at Tier 1, and up to three sectors away at Tier 2.", +}; + +// follows a specific format: +// x: "Admin Action Button Text", +// x+1: "Admin action description text", +STR16 szRebelCommandAdminActionsText[] = // TODO.Translate +{ + L"Supply Line", + L"Distribute much-needed supplies amongst the local population. Increases maximum regional loyalty.", + L"Rebel Radio", + L"Begin broadcasting rebel public radio in the region. The town gains loyalty daily.", + L"Safehouses", + L"Construct rebel safehouses in the countryside, far from prying eyes. Bonus militia may join you in combat when operating in this region.", + L"Supply Disruption", + L"The rebels will try to disrupt enemy movements in the area by targetting their supplies. Enemies fighting in this region are weaker.", + L"Scout Patrols", + L"Start regular scout patrols to monitor hostile activity in the area. Enemy groups will be spotted further from town.", + L"Dead Drops", + L"Set up dead drops for rebel scouts and infiltrators to deliver their intel. Provides daily intel.", + L"Smugglers", + L"Enlist the aid of smugglers to bring in supplies for the rebels. Provides an unreliable daily supply boost.", + L"Militia Warehouses", + L"Construct warehouses in remote areas, allowing the rebels to stockpile weapons for the militia. Provides daily militia resources.", + L"Regional Taxes", + L"Collect money from the locals to assist your efforts. Increases daily income, but regional loyalty falls daily.", + L"Civilian Aid", + L"Assign some rebels to directly assist and support civilians in the area. Increases daily volunteer pool growth.", + L"Merc Support", + L"Set up facilities to directly support your mercs assigned in the town. Increases the effectiveness of merc assignments (doctoring, repairing, militia training, etc).", + L"Mining Policy", + L"Import better equipment and work with the town's miners to create more balanced and efficient shift schedules. Increases the town's mine income.", + L"Pathfinders", + L"The locals guide your teams through shortcuts in the area. Reduces on-foot travel time in the region.", + L"Harriers", + L"The rebels harass nearby enemy groups, significantly increasing their travel time in the region.", + L"Fortifications", + L"Set up killzones and defensive positions. Friendly forces are more effective when fighting in this town. Autoresolve only.", +}; + +// follows a specific format: +// x: "Directive Name", +// x+1: "Directive Bonus Description", +// x+2: "Directive Help Text", +// x+3: "Directive Improvement Button Description", +STR16 szRebelCommandDirectivesText[] = // TODO.Translate +{ + L"Gather Supplies", + L"Gain an additional %.0f supplies per day.", + L"Increase daily supply income by amassing supplies from\nsympathetic locals, and seeking aid from international aid groups.", + L"Improving this directive will increase the amount of supplies that the rebels can gather daily.", + L"Support Militia", + L"Reduce militia daily upkeep costs. Militia daily upkeep cost modifier: %.2f.", + L"The rebels will help out with logistics about the militia\nyou've trained, reducing the strain on your wallet.", + L"Improving this directive will reduce the daily upkeep costs of your militia.", + L"Train Militia", + L"Reduce militia training costs and increase militia training speed. Militia training cost modifier: %.2f. Militia training speed modifier: %.2f.", + L"The rebels will assist when you are training militia,\nincreasing the efficiency at which you can train them.", + L"Improving this directive will further reduce training cost and increase training speed.", + L"Propaganda Campaign", + L"Town loyalty rises faster. Loyalty gain modifier: %.2f.", + L"Your victories and feats will be embellished as news reaches\nthe locals.", + L"Improving this directive will increase how quickly town loyalty rises.", + L"Deploy Elites", + L"%.0f elite militia appear in Omerta each day.", + L"The rebels release a small number of their highly-trained forces to your command.", + L"Improving this directive will increase the number of militia\nthat appear each day.", + L"High Value Target Strikes", + L"Enemy groups are less likely to have specialised soldiers.", + L"Surgical strikes will be conducted against enemy groups. Officers,\nmedics, radio operators, and other specialists are targetted.", + L"Improving this directive will make strikes more successful and effective.", + L"Spotter Teams", + L"When in combat, approximate enemy locations are revealed in the overhead map (press INSERT button in tactical).", + L"A small team will be attached to each of your squads, providing\napproximate locations of enemies when in combat.", + L"Improving this directive will make the locations of unspotted enemies more precise.", + L"Raid Mines", + L"Steal some income from mines not under your control. This directive becomes less useful as you claim mines.", + L"Conduct smash-and-grab raids on hostile mines. While not always\nsuccessful, the raids that do succeed should provide a\nsmall income bump.", + L"Improving this directive will increase the maximum value of stolen income.", + L"Create Turncoats", + L"Create %.0f turncoats in a random enemy group per day. Consumes %.1f Intel per day.", + L"Convince enemy soldiers to betray their army and work for you\nthrough a combination of bribery, threats, and blackmail.", + L"Improving this directive will increase the number of soldiers turned daily.", + L"Draft Civilians", + L"Gain %.0f volunteers each day. All towns lose some loyalty each day.", + L"Draft civilians as recruits for militia. The general population\nprobably won't be too happy about it, though. Effectiveness\nincreases as you capture more towns.", + L"Improving this directive will increase the number of volunteers gained per day.", +}; + +STR16 szRebelCommandAgentMissionsText[] = +{ + L"Deep Deployment", + L"Coordinate efforts to find ways to sneak up on the enemy, but be careful: it's equally possible to put yourself in a disadvantaged deployment area. When attacking enemy forces, the deployment area is much larger.", + L"Disrupt ASD", + L"Wreak havoc on the day-to-day operations of the Arulco Special Division. Temporarily prevent the ASD from deploying additional mechanised units, and drastically reduce their daily income.", + L"Forge Transport Orders", + L"Create a bogus supply request. An enemy transport group will be ordered to rendezvous at this agent's location.", + L"Strategic Intel", + L"Intercept plans and discover where enemies intend to strike. When viewing teams on the strategic map, sectors prioritised by the enemy will be marked in red.", + L"Improve Local Shops", + L"Set up ways for merchants across the country to acquire better goods more easily. Shopkeepers will have better than usual inventories.", + L"Slow Strategic Decisions", + L"Sow confusion and misdirection at the highest levels of enemy command. The enemy takes longer to make decisions at a strategic level.", + L"Lower Readiness", + L"Trick enemy soldiers into letting their guard down. Enemy soldiers have reduced vision range until they are alerted to your mercs' presence.", + L"Sabotage Equipment", + L"Disrupt enemy supply chains and prevent the enemy from maintaining their gear properly. Enemy soldiers use equipment that is worse than normal.", + L"Sabotage Vehicles", + L"Sabotage vehicle maintenance hubs to reduce their combat effectiveness and readiness. Enemy vehicles encountered have reduced stats.", + L"Send Supplies", + L"Temporarily increase direct support to this town. Town loyalty passively increases for the duration of the mission.", + L"Soldier Bounties (Kingpin)", + L"Get a payout for enemy kills. Negotiate with Kingpin, who feels he can use your presence here to indirectly weaken the Queen's power. Bounties are deposited into your account at midnight and are limited to $%d per day.", + L"Train Militia Anywhere", + L"Create training areas in the wilderness that can be quickly set up and torn down. Militia can be trained in uncontested sectors outside of town.", +}; + +STR16 szRobotText[] = // TODO: Translate +{ + L"The robot's installed weapon cannot be changed.", + L"It is not possible to add attachments to the robot's weapon.", + L"Installed Weapon", + L"Reserve Ammo", + L"Targeting Upgrade", + L"Chassis Upgrade", + L"Utility Upgrade", + L"Storage", + L"No Bonus", + L"The laser bonuses of this item are applied to the robot.", + L"The night- and cave-vision bonuses of this item are applied to the robot.", + L"This kit degrades instead of the robot's weapon.", + L"The robot's cleaning kit was depleted!", + L"Mines adjacent to the robot are automatically flagged.", + L"Periodic X-Ray scans during combat. No batteries required.", + L"The robot has activated an x-ray scan!", + L"The robot can use the radio set.", + L"The robot's chassis is strengthened, giving it better combat performance.", + L"The camouflage bonuses of this item are applied to the robot.", + L"The robot is tougher and takes less damage.", + L"The robot's extra armour plating was destroyed!", + L"The robot gains the benefit of the %s skill trait.", +}; + +#endif //RUSSIAN diff --git a/i18n/include/ExportStrings.h b/i18n/include/ExportStrings.h index bd228813..9d4ce926 100644 --- a/i18n/include/ExportStrings.h +++ b/i18n/include/ExportStrings.h @@ -1,9 +1,9 @@ -#ifndef _EXPORTSTRINGS_H_ -#define _EXPORTSTRINGS_H_ - -namespace Loc -{ - bool ExportStrings(); -} - +#ifndef _EXPORTSTRINGS_H_ +#define _EXPORTSTRINGS_H_ + +namespace Loc +{ + bool ExportStrings(); +} + #endif // _EXPORTSTRINGS_H_ diff --git a/i18n/include/Ja2 Libs.h b/i18n/include/Ja2 Libs.h index 87319f10..b154a4c5 100644 --- a/i18n/include/Ja2 Libs.h +++ b/i18n/include/Ja2 Libs.h @@ -1,61 +1,61 @@ -#ifndef _JA2_LIBS_H_ -#define _JA2_LIBS_H_ - - - //enums used for accessing the libraries - enum - { - LIBRARY_DATA, - LIBRARY_EDITOR, - LIBRARY_AMBIENT, - LIBRARY_ANIMS, - LIBRARY_BATTLESNDS, - LIBRARY_BIGITEMS, - LIBRARY_BINARY_DATA, - LIBRARY_CURSORS, - LIBRARY_FACES, - LIBRARY_FONTS, - LIBRARY_INTERFACE, - LIBRARY_LAPTOP, - LIBRARY_MAPS, - LIBRARY_MERCEDT, - LIBRARY_MUSIC, - LIBRARY_NPC_SPEECH, - LIBRARY_NPC_DATA, - LIBRARY_RADAR_MAPS, - LIBRARY_SOUNDS, - LIBRARY_SPEECH, -// LIBRARY_TILE_CACHE, - LIBRARY_TILESETS, - LIBRARY_LOADSCREENS, - LIBRARY_INTRO, - -#ifdef GERMAN - LIBRARY_GERMAN_DATA, -#endif - -#ifdef DUTCH - LIBRARY_DUTCH_DATA, -#endif - -#ifdef POLISH - LIBRARY_POLISH_DATA, -#endif - -#ifdef ITALIAN - LIBRARY_ITALIAN_DATA, -#endif - -#ifdef RUSSIAN - LIBRARY_RUSSIAN_DATA, -#endif - -#ifdef FRENCH - LIBRARY_FRENCH_DATA, -#endif - - NUMBER_OF_LIBRARIES - }; - - +#ifndef _JA2_LIBS_H_ +#define _JA2_LIBS_H_ + + + //enums used for accessing the libraries + enum + { + LIBRARY_DATA, + LIBRARY_EDITOR, + LIBRARY_AMBIENT, + LIBRARY_ANIMS, + LIBRARY_BATTLESNDS, + LIBRARY_BIGITEMS, + LIBRARY_BINARY_DATA, + LIBRARY_CURSORS, + LIBRARY_FACES, + LIBRARY_FONTS, + LIBRARY_INTERFACE, + LIBRARY_LAPTOP, + LIBRARY_MAPS, + LIBRARY_MERCEDT, + LIBRARY_MUSIC, + LIBRARY_NPC_SPEECH, + LIBRARY_NPC_DATA, + LIBRARY_RADAR_MAPS, + LIBRARY_SOUNDS, + LIBRARY_SPEECH, +// LIBRARY_TILE_CACHE, + LIBRARY_TILESETS, + LIBRARY_LOADSCREENS, + LIBRARY_INTRO, + +#ifdef GERMAN + LIBRARY_GERMAN_DATA, +#endif + +#ifdef DUTCH + LIBRARY_DUTCH_DATA, +#endif + +#ifdef POLISH + LIBRARY_POLISH_DATA, +#endif + +#ifdef ITALIAN + LIBRARY_ITALIAN_DATA, +#endif + +#ifdef RUSSIAN + LIBRARY_RUSSIAN_DATA, +#endif + +#ifdef FRENCH + LIBRARY_FRENCH_DATA, +#endif + + NUMBER_OF_LIBRARIES + }; + + #endif diff --git a/i18n/include/Multi Language Graphic Utils.h b/i18n/include/Multi Language Graphic Utils.h index 44d0bf07..8a3fdc05 100644 --- a/i18n/include/Multi Language Graphic Utils.h +++ b/i18n/include/Multi Language Graphic Utils.h @@ -1,53 +1,53 @@ -#ifndef __MULTI_LANGUAGE_GRAPHIC_UTILS_H -#define __MULTI_LANGUAGE_GRAPHIC_UTILS_H - -enum -{ - MLG_AIMSYMBOL, - MLG_AIMSYMBOL_SMALL, - MLG_BOBBYNAME, - MLG_BOBBYRAYAD21, - MLG_BOBBYRAYLINK, - MLG_CLOSED, - MLG_CONFIRMORDER, - MLG_DESKTOP, - MLG_FUNERALAD9, - MLG_GOLDPIECEBUTTONS, - MLG_HISTORY, - MLG_IMPSYMBOL, - MLG_INSURANCEAD10, - MLG_INSURANCELINK, - MLG_INSURANCETITLE, //LargeTitle - MLG_LARGEFLORISTSYMBOL, //LargeSymbol - MLG_LOADSAVEHEADER, //LoadScreenAddOns - MLG_MCGILLICUTTYS, - MLG_MORTUARY, - MLG_MORTUARYLINK, - MLG_OPTIONHEADER, //OptionScreenAddOns - MLG_ORDERGRID, - MLG_PREBATTLEPANEL, - MLG_PREBATTLEPANEL_800x600, - MLG_PREBATTLEPANEL_1024x768, - MLG_PREBATTLEPANEL_1280x720, - MLG_SECTORINVENTORY, - MLG_SMALLFLORISTSYMBOL, //SmallSymbol - MLG_SMALLTITLE, - MLG_SPLASH, - MLG_STATSBOX, - MLG_STOREPLAQUE, - MLG_TITLETEXT, - MLG_TOALUMNI, - MLG_TOMUGSHOTS, - MLG_TOSTATS, - MLG_WARNING, - MLG_YOURAD13, - MLG_TITLETEXT_MP, // WANNE: Additional multiplayer text - MLG_BOBBYRAYTITLE, //inshy: translation needed for russian version - MLG_BR, - MLG_MP_GOLDPIECEBUTTONS, - MLG_ITEMINFOADVANCEDICONS, // WANNE: Language specific Icons -}; - -BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID ); - +#ifndef __MULTI_LANGUAGE_GRAPHIC_UTILS_H +#define __MULTI_LANGUAGE_GRAPHIC_UTILS_H + +enum +{ + MLG_AIMSYMBOL, + MLG_AIMSYMBOL_SMALL, + MLG_BOBBYNAME, + MLG_BOBBYRAYAD21, + MLG_BOBBYRAYLINK, + MLG_CLOSED, + MLG_CONFIRMORDER, + MLG_DESKTOP, + MLG_FUNERALAD9, + MLG_GOLDPIECEBUTTONS, + MLG_HISTORY, + MLG_IMPSYMBOL, + MLG_INSURANCEAD10, + MLG_INSURANCELINK, + MLG_INSURANCETITLE, //LargeTitle + MLG_LARGEFLORISTSYMBOL, //LargeSymbol + MLG_LOADSAVEHEADER, //LoadScreenAddOns + MLG_MCGILLICUTTYS, + MLG_MORTUARY, + MLG_MORTUARYLINK, + MLG_OPTIONHEADER, //OptionScreenAddOns + MLG_ORDERGRID, + MLG_PREBATTLEPANEL, + MLG_PREBATTLEPANEL_800x600, + MLG_PREBATTLEPANEL_1024x768, + MLG_PREBATTLEPANEL_1280x720, + MLG_SECTORINVENTORY, + MLG_SMALLFLORISTSYMBOL, //SmallSymbol + MLG_SMALLTITLE, + MLG_SPLASH, + MLG_STATSBOX, + MLG_STOREPLAQUE, + MLG_TITLETEXT, + MLG_TOALUMNI, + MLG_TOMUGSHOTS, + MLG_TOSTATS, + MLG_WARNING, + MLG_YOURAD13, + MLG_TITLETEXT_MP, // WANNE: Additional multiplayer text + MLG_BOBBYRAYTITLE, //inshy: translation needed for russian version + MLG_BR, + MLG_MP_GOLDPIECEBUTTONS, + MLG_ITEMINFOADVANCEDICONS, // WANNE: Language specific Icons +}; + +BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID ); + #endif diff --git a/i18n/include/Text.h b/i18n/include/Text.h index 1e14d125..2477c2f9 100644 --- a/i18n/include/Text.h +++ b/i18n/include/Text.h @@ -1,3248 +1,3248 @@ -#ifndef __TEXT_H -#define __TEXT_H - -#include "Items.h" -#include "types.h" -#include "mapscreen.h" -#include "XML_Language.h" - -#define STRING_LENGTH 255 - -enum -{ - //TCTL_MSG__RANGE_TO_TARGET, - TCTL_MSG__ATTACH_TRANSMITTER_TO_LAPTOP, - TACT_MSG__CANNOT_AFFORD_MERC, - TACT_MSG__AIMMEMBER_FEE_TEXT, - TACT_MSG__AIMMEMBER_ONE_TIME_FEE, - TACT_MSG__FEE, - TACT_MSG__SOMEONE_ELSE_IN_SECTOR, - //TCTL_MSG__GUN_RANGE_AND_CTH, - TCTL_MSG__DISPLAY_COVER, - TCTL_MSG__LOS, - TCTL_MSG__INVALID_DROPOFF_SECTOR, - TCTL_MSG__PLAYER_LOST_SHOULD_RESTART, - TCTL_MSG__JERRY_BREAKIN_LAPTOP_ANTENA, - TCTL_MSG__END_GAME_POPUP_TXT_1, - TCTL_MSG__END_GAME_POPUP_TXT_2, - TCTL_MSG__IRON_MAN_CANT_SAVE_NOW, - TCTL_MSG__CANNOT_SAVE_DURING_COMBAT, - TCTL_MSG__CAMPAIGN_NAME_TOO_LARGE, - TCTL_MSG__CAMPAIGN_DOESN_T_EXIST, - TCTL_MSG__DEFAULT_CAMPAIGN_LABEL, - TCTL_MSG__CAMPAIGN_LABEL, - TCTL_MSG__NEW_CAMPAIGN_CONFIRM, - TCTL_MSG__CANT_EDIT_DEFAULT, - TCTL_MSG__SOFT_IRON_MAN_CANT_SAVE_NOW, - TCTL_MSG__EXTREME_IRON_MAN_CANT_SAVE_NOW, - -}; -//Ja25 UB -//enums used for zNewLaptopMessages -enum -{ - LPTP_MSG__MERC_SPECIAL_OFFER, - LPTP_MSG__TEMP_UNAVAILABLE, - LPTP_MSG__PREVIEW_TEXT, -}; - -extern CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS]; - -//Encyclopedia -extern STR16 pMenuStrings[]; -extern STR16 pLocationPageText[]; -extern STR16 pSectorPageText[]; -extern STR16 pEncyclopediaHelpText[]; -extern STR16 pEncyclopediaTypeText[]; -extern STR16 pEncyclopediaSkrotyText[]; -extern STR16 pEncyclopediaFilterLocationText[]; -extern STR16 pEncyclopediaSubFilterLocationText[]; -extern STR16 pEncyclopediaFilterCharText[]; -extern STR16 pEncyclopediaSubFilterCharText[]; -extern STR16 pEncyclopediaFilterItemText[]; -extern STR16 pEncyclopediaSubFilterItemText[]; -extern STR16 pEncyclopediaFilterQuestText[]; -extern STR16 pEncyclopediaSubFilterQuestText[]; -extern STR16 pEncyclopediaShortCharacterText[]; -extern STR16 pEncyclopediaHelpCharacterText[]; -extern STR16 pEncyclopediaShortInventoryText[]; -extern STR16 BoxFilter[]; -extern STR16 pOtherButtonsText[]; -extern STR16 pOtherButtonsHelpText[]; -extern STR16 QuestDescText[]; -extern STR16 FactDescText[]; - -//Editor -//Editor Taskbar Creation.cpp -extern STR16 iEditorItemStatsButtonsText[]; -extern STR16 FaceDirs[8]; -extern STR16 iEditorMercsToolbarText[]; -extern STR16 iEditorBuildingsToolbarText[]; -extern STR16 iEditorItemsToolbarText[]; -extern STR16 iEditorMapInfoToolbarText[]; -extern STR16 iEditorOptionsToolbarText[]; -extern STR16 iEditorTerrainToolbarText[]; -extern STR16 iEditorTaskbarInternalText[]; -//Editor Taskbar Utils.cpp -extern STR16 iRenderMapEntryPointsAndLightsText[]; -extern STR16 iBuildTriggerNameText[]; -extern STR16 iRenderDoorLockInfoText[]; -extern STR16 iRenderEditorInfoText[]; -//EditorBuildings.cpp -extern STR16 iUpdateBuildingsInfoText[]; -extern STR16 iRenderDoorEditingWindowText[]; -//EditorItems.cpp -extern STR16 pInitEditorItemsInfoText[]; -extern STR16 pDisplayItemStatisticsTex[]; -extern STR16 pUpdateMapInfoText[]; -//EditorMercs.cpp -extern CHAR16 gszScheduleActions[ 11 ][20]; // NUM_SCHEDULE_ACTIONS = 11 -extern STR16 zDiffNames[5]; // NUM_DIFF_LVLS = 5 -extern STR16 EditMercStat[12]; -extern STR16 EditMercOrders[8]; -extern STR16 EditMercAttitudes[6]; -extern STR16 pDisplayEditMercWindowText[]; -extern STR16 pCreateEditMercWindowText[]; -extern STR16 pDisplayBodyTypeInfoText[]; -extern STR16 pUpdateMercsInfoText[]; -extern CHAR16 pRenderMercStringsText[][100]; -extern STR16 pClearCurrentScheduleText[]; -extern STR16 pCopyMercPlacementText[]; -extern STR16 pPasteMercPlacementText[]; -//editscreen.cpp -extern STR16 pEditModeShutdownText[]; -extern STR16 pHandleKeyboardShortcutsText[]; -extern STR16 pPerformSelectedActionText[]; -extern STR16 pWaitForHelpScreenResponseText[]; -extern STR16 pAutoLoadMapText[]; -extern STR16 pShowHighGroundText[]; -//Item Statistics.cpp -//extern CHAR16 gszActionItemDesc[ 34 ][ 30 ]; // NUM_ACTIONITEMS = 34 -extern STR16 pUpdateItemStatsPanelText[]; -extern STR16 pSetupGameTypeFlagsText[]; -extern STR16 pSetupGunGUIText[]; -extern STR16 pSetupArmourGUIText[]; -extern STR16 pSetupExplosivesGUIText[]; -extern STR16 pSetupTriggersGUIText[]; -//Sector Summary.cpp -extern STR16 pCreateSummaryWindowText[]; -extern STR16 pRenderSectorInformationText[]; -extern STR16 pRenderItemDetailsText[]; -extern STR16 pRenderSummaryWindowText[]; -extern STR16 pUpdateSectorSummaryText[]; -extern STR16 pSummaryLoadMapCallbackText[]; -extern STR16 pReportErrorText[]; -extern STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[]; -extern STR16 pSummaryUpdateCallbackText[]; -extern STR16 pApologizeOverrideAndForceUpdateEverythingText[]; -//selectwin.cpp -extern STR16 pDisplaySelectionWindowGraphicalInformationText[]; -extern STR16 pDisplaySelectionWindowButtonText[]; -//Cursor Modes.cpp -extern STR16 wszSelType[6]; -//-- - -extern STR16 gzNewLaptopMessages[]; -extern STR16 zNewTacticalMessages[]; -extern CHAR16 gszAimPages[ 6 ][ 20 ]; -extern CHAR16 zGrod[][500]; -extern STR16 pCreditsJA2113[]; -extern CHAR16 ShortItemNames[MAXITEMS][80]; -extern CHAR16 ItemNames[MAXITEMS][80]; -extern CHAR16 AmmoCaliber[MAXITEMS][20]; -extern CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20]; -extern CHAR16 WeaponType[MAXITEMS][30]; - -extern CHAR16 Message[][STRING_LENGTH]; -extern CHAR16 TeamTurnString[][STRING_LENGTH]; -extern STR16 pMilitiaControlMenuStrings[]; //lal -extern STR16 pTraitSkillsMenuStrings[]; //Flugente -extern STR16 pTraitSkillsMenuDescStrings[]; //Flugente -extern STR16 pTraitSkillsDenialStrings[]; //Flugente - -enum -{ - SKILLMENU_MILITIA, - SKILLMENU_OTHERSQUADS, - SKILLMENU_CANCEL, - SKILLMENU_X_MILITIA, - SKILLMENU_ALL_MILITIA, - SKILLMENU_MORE, - SKILLMENU_CORPSES, -}; - -extern STR16 pSkillMenuStrings[]; //Flugente -//extern STR16 pTalkToAllMenuStrings[]; -extern STR16 pSnitchMenuStrings[]; -extern STR16 pSnitchMenuDescStrings[]; -extern STR16 pSnitchToggleMenuStrings[]; -extern STR16 pSnitchToggleMenuDescStrings[]; -extern STR16 pSnitchSectorMenuStrings[]; -extern STR16 pSnitchSectorMenuDescStrings[]; -extern STR16 pPrisonerMenuStrings[]; -extern STR16 pPrisonerMenuDescStrings[]; -extern STR16 pSnitchPrisonExposedStrings[]; -extern STR16 pSnitchGatheringRumoursResultStrings[]; -extern STR16 pAssignMenuStrings[]; -extern STR16 pTrainingStrings[]; -extern STR16 pTrainingMenuStrings[]; -extern STR16 pAttributeMenuStrings[]; -extern STR16 pVehicleStrings[]; -extern STR16 pShortAttributeStrings[]; -extern STR16 pLongAttributeStrings[]; -extern STR16 pContractStrings[]; -extern STR16 pAssignmentStrings[]; -extern STR16 pConditionStrings[]; -extern CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT]; -extern CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT]; // Lesh: look mapscreen.h for definitions -extern STR16 pPersonnelScreenStrings[]; -extern STR16 pPersonnelRecordsHelpTexts[]; // added by SANDRO -extern STR16 pPersonnelTitle[]; -extern STR16 pUpperLeftMapScreenStrings[]; -extern STR16 pTacticalPopupButtonStrings[]; -extern STR16 pSquadMenuStrings[]; -extern STR16 pDoorTrapStrings[]; -extern STR16 pLongAssignmentStrings[]; -extern STR16 pContractExtendStrings[]; -extern STR16 pMapScreenMouseRegionHelpText[]; -extern STR16 pPersonnelAssignmentStrings[]; -extern STR16 pNoiseVolStr[]; -extern STR16 pNoiseTypeStr[]; -extern STR16 pDirectionStr[]; -extern STR16 pRemoveMercStrings[]; -extern STR16 sTimeStrings[]; -extern STR16 pLandTypeStrings[]; -extern STR16 pGuardMenuStrings[]; -extern STR16 pOtherGuardMenuStrings[]; -extern STR16 pInvPanelTitleStrings[]; -extern STR16 pPOWStrings[]; -extern STR16 pMilitiaString[]; -extern STR16 pMilitiaButtonString[]; -extern STR16 pEpcMenuStrings[]; - -extern STR16 pRepairStrings[]; -extern STR16 sPreStatBuildString[]; -extern STR16 sStatGainStrings[]; -extern STR16 pHelicopterEtaStrings[]; -extern STR16 pHelicopterRepairRefuelStrings[]; -extern STR16 sMapLevelString[]; -extern STR16 gsLoyalString[]; -extern STR16 pMapHeliErrorString[]; -extern STR16 gsUndergroundString[]; -extern STR16 gsTimeStrings[]; -extern STR16 sFacilitiesStrings[]; -extern STR16 pMapPopUpInventoryText[]; -extern STR16 pwTownInfoStrings[]; -extern STR16 pwMineStrings[]; -extern STR16 pwMiscSectorStrings[]; -extern STR16 pMapInventoryErrorString[]; -extern STR16 pMapInventoryStrings[]; -extern STR16 pMapScreenFastHelpTextList[]; -extern STR16 pMovementMenuStrings[]; -extern STR16 pUpdateMercStrings[]; -extern STR16 pMapScreenBorderButtonHelpText[]; -extern STR16 pMapScreenInvenButtonHelpText[]; -extern STR16 pMapScreenBottomFastHelp[]; -extern STR16 pMapScreenBottomText[]; -extern STR16 pMercDeadString[]; -extern CHAR16 pSenderNameList[500][128]; -extern STR16 pTraverseStrings[]; -extern STR16 pNewMailStrings[]; -extern STR16 pDeleteMailStrings[]; -extern STR16 pEmailHeaders[]; -extern STR16 pEmailTitleText[]; -extern STR16 pFinanceTitle[]; -extern STR16 pFinanceSummary[]; -extern STR16 pFinanceHeaders[]; -extern STR16 pTransactionText[]; -extern STR16 pTransactionAlternateText[]; -extern STR16 pMoralStrings[]; -extern STR16 pSkyriderText[]; -extern STR16 pMercFellAsleepString[]; -extern STR16 pLeftEquipmentString[]; -extern STR16 pMapScreenStatusStrings[]; -extern STR16 pMapScreenPrevNextCharButtonHelpText[]; -extern STR16 pEtaString[]; -extern STR16 pShortVehicleStrings[]; -extern STR16 pTrashItemText[]; -extern STR16 pMapErrorString[]; -extern STR16 pMapPlotStrings[]; -extern STR16 pMiscMapScreenMouseRegionHelpText[]; -extern STR16 pMercHeLeaveString[]; -extern STR16 pMercSheLeaveString[]; -extern STR16 pImpPopUpStrings[]; -extern STR16 pImpButtonText[]; -extern STR16 pExtraIMPStrings[]; -extern STR16 pFilesTitle[]; -extern STR16 pFilesSenderList[]; -extern STR16 pHistoryLocations[]; -//extern STR16 pHistoryAlternateStrings[]; -//extern STR16 pHistoryStrings[]; // Externalized to "TableData\History.xml" -extern STR16 pHistoryHeaders[]; -extern STR16 pHistoryTitle[]; -extern STR16 pShowBookmarkString[]; -extern STR16 pWebPagesTitles[]; -extern STR16 pWebTitle[ ]; -extern STR16 pPersonnelString[]; -extern STR16 pErrorStrings[]; -extern STR16 pDownloadString[]; -extern STR16 pBookmarkTitle[]; -extern STR16 pBookMarkStrings[]; -extern STR16 pLaptopIcons[]; -extern STR16 sATMText[ ]; -extern STR16 gsAtmStartButtonText[]; -extern STR16 gsAtmSideButtonText[]; -extern STR16 pDownloadString[]; -extern STR16 pPersonnelTeamStatsStrings[]; -extern STR16 pPersonnelCurrentTeamStatsStrings[]; -extern STR16 pPersonelTeamStrings[]; -extern STR16 pPersonnelDepartedStateStrings[]; -extern STR16 pMapHortIndex[]; -extern STR16 pMapVertIndex[]; -extern STR16 pMapDepthIndex[]; -//extern STR16 sCritLocationStrings[]; -//extern STR16 sVehicleHit[ ]; -extern STR16 pLaptopTitles[]; -extern STR16 pDayStrings[]; -extern STR16 pMercContractOverStrings[]; -extern STR16 pMilitiaConfirmStrings[]; -extern STR16 pDeliveryLocationStrings[]; -extern STR16 pSkillAtZeroWarning[]; -extern STR16 pIMPBeginScreenStrings[]; -extern STR16 pIMPFinishButtonText[1]; -extern STR16 pIMPFinishStrings[]; -extern STR16 pIMPVoicesStrings[]; -extern STR16 pDepartedMercPortraitStrings[]; -extern STR16 pPersTitleText[]; -extern STR16 pPausedGameText[]; -extern STR16 zOptionsToggleText[]; -extern STR16 zOptionsScreenHelpText[]; -extern STR16 pDoctorWarningString[]; -extern STR16 pMilitiaButtonsHelpText[]; -extern STR16 pMapScreenJustStartedHelpText[]; -extern STR16 pLandMarkInSectorString[]; -extern STR16 gzMercSkillText[]; -extern STR16 gzMercSkillTextNew[]; // added by SANDRO -extern STR16 gzNonPersistantPBIText[]; -extern STR16 gzMiscString[]; - -extern STR16 wMapScreenSortButtonHelpText[]; -extern STR16 pNewNoiseStr[]; -extern STR16 pTauntUnknownVoice[]; // anv: for enemy taunts -extern STR16 gzLateLocalizedString[]; - -extern STR16 gzCWStrings[]; - -extern STR16 gzTooltipStrings[]; - -// These have been added - SANDRO -extern STR16 pSkillTraitBeginIMPStrings[]; -extern STR16 sgAttributeSelectionText[]; -extern STR16 pCharacterTraitBeginIMPStrings[]; -extern STR16 gzIMPCharacterTraitText[]; -extern STR16 gzIMPAttitudesText[]; -extern STR16 gzIMPColorChoosingText[]; -extern STR16 sColorChoiceExplanationTexts[]; -extern STR16 gzIMPDisabilityTraitText[]; // added by Flugente -extern STR16 gzIMPDisabilityTraitEmailTextDeaf[]; // added by Flugente -extern STR16 gzIMPDisabilityTraitEmailTextShortSighted[]; -extern STR16 gzIMPDisabilityTraitEmailTextHemophiliac[]; // added by Flugente -extern STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]; // added by Flugente -extern STR16 gzIMPDisabilityTraitEmailTextSelfHarm[]; // added by Flugente -extern STR16 sEnemyTauntsFireGun[]; -extern STR16 sEnemyTauntsFireLauncher[]; -extern STR16 sEnemyTauntsThrow[]; -extern STR16 sEnemyTauntsChargeKnife[]; -extern STR16 sEnemyTauntsRunAway[]; -extern STR16 sEnemyTauntsSeekNoise[]; -extern STR16 sEnemyTauntsAlert[]; -extern STR16 sEnemyTauntsGotHit[]; -extern STR16 sEnemyTauntsNoticedMerc[]; -extern STR16 sSpecialCharacters[]; -//**** - -// HEADROCK HAM 3.6: New arrays for facility operation messages -extern STR16 gzFacilityErrorMessage[]; -extern STR16 gzFacilityAssignmentStrings[]; -extern STR16 gzFacilityRiskResultStrings[]; - -// HEADROCK HAM 4: Text for the new CTH indicator. -extern STR16 gzNCTHlabels[]; - -// HEADROCK HAM 5: Messages for automatic sector inventory sorting. -extern STR16 gzMapInventorySortingMessage[]; -extern STR16 gzMapInventoryFilterOptions[]; - -// MeLoDy (Merc Compare) -extern STR16 gzMercCompare[]; - -enum -{ - ANTIHACKERSTR_EXITGAME, - TEXT_NUM_ANTIHACKERSTR, -}; -extern STR16 pAntiHackerString[]; - -enum -{ - MSG_EXITGAME, - MSG_OK, - MSG_YES, - MSG_NO, - MSG_CANCEL, - MSG_REHIRE, - MSG_LIE, - MSG_NODESC, - MSG_SAVESUCCESS, - MSG_SAVESLOTSUCCESS, - MSG_QUICKSAVE_NAME, - MSG_SAVE_NAME, - MSG_SAVEEXTENSION, - MSG_SAVEDIRECTORY, - MSG_DAY, - MSG_MERCS, - MSG_EMPTYSLOT, - MSG_DEMOWORD, - MSG_DEBUGWORD, - MSG_RELEASEWORD, - MSG_RPM, - MSG_MINUTE_ABBREVIATION, - MSG_METER_ABBREVIATION, - MSG_ROUNDS_ABBREVIATION, - MSG_KILOGRAM_ABBREVIATION, - MSG_POUND_ABBREVIATION, - MSG_HOMEPAGE, - MSG_USDOLLAR_ABBREVIATION, - MSG_LOWERCASE_NA, - MSG_MEANWHILE, - MSG_ARRIVE, - MSG_VERSION, - MSG_EMPTY_QUICK_SAVE_SLOT, - MSG_QUICK_SAVE_RESERVED_FOR_TACTICAL, - MSG_OPENED, - MSG_CLOSED, - MSG_LOWDISKSPACE_WARNING, - MSG_HIRED_MERC, - MSG_MERC_CAUGHT_ITEM, - MSG_MERC_TOOK_DRUG, - MSG_MERC_HAS_NO_MEDSKILL, - MSG_INTEGRITY_WARNING, - MSG_CDROM_SAVE, - MSG_CANT_FIRE_HERE, - MSG_CANT_CHANGE_STANCE, - MSG_DROP, - MSG_THROW, - MSG_PASS, - MSG_ITEM_PASSED_TO_MERC, - MSG_NO_ROOM_TO_PASS_ITEM, - MSG_END_ATTACHMENT_LIST, - MSG_CHEAT_LEVEL_ONE, - MSG_CHEAT_LEVEL_TWO, - MSG_SQUAD_ON_STEALTHMODE, - MSG_SQUAD_OFF_STEALTHMODE, - MSG_MERC_ON_STEALTHMODE, - MSG_MERC_OFF_STEALTHMODE, - MSG_WIREFRAMES_ADDED, - MSG_WIREFRAMES_REMOVED, - MSG_CANT_GO_UP, - MSG_CANT_GO_DOWN, - MSG_ENTERING_LEVEL, - MSG_LEAVING_BASEMENT, - MSG_DASH_S, // the old 's - MSG_TRACKING_MODE_OFF, - MSG_TRACKING_MODE_ON, - MSG_3DCURSOR_OFF, - MSG_3DCURSOR_ON, - MSG_SQUAD_ACTIVE, - MSG_CANT_AFFORD_TO_PAY_NPC_DAILY_SALARY_MSG, - MSG_SKIP, - MSG_EPC_CANT_TRAVERSE, - MSG_CDROM_SAVE_GAME, - MSG_DRANK_SOME, - MSG_PACKAGE_ARRIVES, - MSG_JUST_HIRED_MERC_ARRIVAL_LOCATION_POPUP, - MSG_HISTORY_UPDATED, - MSG_GL_BURST_CURSOR_ON, - MSG_GL_BURST_CURSOR_OFF, - MSG_SOLDIER_TOOLTIPS_ON, // changed by SANDRO - MSG_SOLDIER_TOOLTIPS_OFF, // changed by SANDRO - MSG_GL_LOW_ANGLE, - MSG_GL_HIGH_ANGLE, - MSG_FORCED_TURN_MODE, - MSG_NORMAL_TURN_MODE, - MSG_FTM_EXIT_COMBAT, - MSG_FTM_ENTER_COMBAT, - MSG_END_TURN_AUTO_SAVE, - MSG_MPSAVEDIRECTORY,//88 - MSG_CLIENT, - MSG_NAS_AND_OIV_INCOMPATIBLE, // 90 - - MSG_SAVE_AUTOSAVE_TEXT, // 91 - MSG_SAVE_AUTOSAVE_TEXT_INFO, // 92 - MSG_SAVE_AUTOSAVE_EMPTY_TEXT, // 93 - MSG_SAVE_AUTOSAVE_FILENAME, // 94 - MSG_SAVE_END_TURN_SAVE_TEXT, // 95 - MSG_SAVE_AUTOSAVE_SAVING_TEXT, // 96 - MSG_SAVE_END_TURN_SAVE_SAVING_TEXT, // 97 - MSG_SAVE_AUTOSAVE_ENDTURN_EMPTY_TEXT, //98 - MSG_SAVE_AUTOSAVE_ENDTURN_TEXT_INFO, //99 - MSG_SAVE_QUICKSAVE_SLOT, // 100 - MSG_SAVE_AUTOSAVE_SLOT, // 101 - MSG_SAVE_AUTOSAVE_ENDTURN_SLOT, // 102 - MSG_SAVE_NORMAL_SLOT, // 103 - - MSG_WINDOWED_MODE_LOCK_MOUSE, // 104 - MSG_WINDOWED_MODE_RELEASE_MOUSE, // 105 - MSG_FORMATIONS_ON, // 106 - MSG_FORMATIONS_OFF, // 107 - MSG_MERC_CASTS_LIGHT_ON, - MSG_MERC_CASTS_LIGHT_OFF, - - MSG_SQUAD_ACTIVE_STRING, - MSG_MERC_TOOK_CIGARETTE, - - MSG_PROMPT_CHEATS_ACTIVATE, - MSG_PROMPT_CHEATS_DEACTIVATE, - - TEXT_NUM_MSG, -}; -extern STR16 pMessageStrings[]; - -extern CHAR16 ItemPickupHelpPopup[][40]; - -enum -{ - STR_EMPTY, - STR_LOSES_1_WISDOM, - STR_LOSES_1_DEX, - STR_LOSES_1_STRENGTH, - STR_LOSES_1_AGIL, - STR_LOSES_WISDOM, - STR_LOSES_DEX, - STR_LOSES_STRENGTH, - STR_LOSES_AGIL, - STR_INTERRUPT, - STR_HEARS_NOISE_FROM, - STR_PLAYER_REINFORCEMENTS, - STR_PLAYER_RELOADS, - STR_PLAYER_NOT_ENOUGH_APS, - STR_IS_APPLYING_FIRST_AID, - STR_ARE_APPLYING_FIRST_AID, - STR_RELIABLE, - STR_UNRELIABLE, - STR_EASY_TO_REPAIR, - STR_HARD_TO_REPAIR, - STR_HIGH_DAMAGE, - STR_LOW_DAMAGE, - STR_QUICK_FIRING, - STR_SLOW_FIRING, - STR_LONG_RANGE, - STR_SHORT_RANGE, - STR_LIGHT, - STR_HEAVY, - STR_SMALL, - STR_FAST_BURST, - STR_NO_BURST, - STR_LARGE_AMMO_CAPACITY, - STR_SMALL_AMMO_CAPACITY, - STR_CAMMO_WORN_OFF, - STR_CAMMO_WASHED_OFF, - STR_2ND_CLIP_DEPLETED, - STR_STOLE_SOMETHING, - STR_NOT_BURST_CAPABLE, - STR_ATTACHMENT_ALREADY, - STR_MERGE_ITEMS, - STR_CANT_ATTACH, - STR_NONE, - STR_EJECT_AMMO, - STR_ATTACHMENTS, - STR_CANT_USE_TWO_ITEMS, - STR_ATTACHMENT_HELP, - STR_ATTACHMENT_INVALID_HELP, - STR_SECTOR_NOT_CLEARED, - STR_NEED_TO_GIVE_MONEY, - STR_HEAD_HIT, - STR_ABANDON_FIGHT, - STR_PERMANENT_ATTACHMENT, - STR_ENERGY_BOOST, - STR_SLIPPED_MARBLES, - STR_FAILED_TO_STEAL_SOMETHING, - STR_REPAIRED, - STR_INTERRUPT_FOR, - STR_SURRENDER, - STR_REFUSE_FIRSTAID, - STR_REFUSE_FIRSTAID_FOR_CREATURE, - STR_HOW_TO_USE_SKYRIDDER, - STR_RELOAD_ONLY_ONE_GUN, - STR_BLOODCATS_TURN, - STR_AUTOFIRE, - STR_NO_AUTOFIRE, - STR_ACCURATE, - STR_INACCURATE, - STR_NO_SEMI_AUTO, - STR_NO_MORE_ITEMS_TO_STEAL, - STR_NO_MORE_ITEM_IN_HAND, - - //add new camo text - STR_DESERT_WORN_OFF, - STR_DESERT_WASHED_OFF, - - STR_JUNGLE_WORN_OFF, - STR_JUNGLE_WASHED_OFF, - - STR_URBAN_WORN_OFF, - STR_URBAN_WASHED_OFF, - - STR_SNOW_WORN_OFF, - STR_SNOW_WASHED_OFF, - - STR_CANNOT_ATTACH_SLOT, - STR_CANNOT_ATTACH_ANY_SLOT, - - STR_NO_SPACE_FOR_POCKET, - - STR_REPAIRED_PARTIAL, - STR_REPAIRED_PARTIAL_FOR_OWNER, - - STR_CLEANED, - STR_CLEANED_FOR_OWNER, - - STR_ASSIGNMENT_NOTPOSSIBLE, - STR_ASSIGNMENT_NOMILITIAPRESENT, - - STR_ASSIGNMENT_EXPLORATION_DONE, - - TEXT_NUM_STR_MESSAGE, -}; - -// WANNE: Tooltips -enum -{ - STR_TT_CAT_LOCATION, - STR_TT_CAT_BRIGHTNESS, - STR_TT_CAT_RANGE_TO_TARGET, - STR_TT_CAT_ID, - STR_TT_CAT_ORDERS, - STR_TT_CAT_ATTITUDE, - STR_TT_CAT_CURRENT_APS, - STR_TT_CAT_CURRENT_HEALTH, - STR_TT_CAT_CURRENT_ENERGY, - STR_TT_CAT_CURRENT_MORALE, - STR_TT_CAT_SHOCK, ///< Moa: shows current shock value. Only for debug tooltip. - STR_TT_CAT_SUPPRESION, ///< Moa: shows current supression value. Only for debug tooltip. - STR_TT_CAT_HELMET, - STR_TT_CAT_VEST, - STR_TT_CAT_LEGGINGS, - STR_TT_CAT_ARMOR, - STR_TT_HELMET, - STR_TT_VEST, - STR_TT_LEGGINGS, - STR_TT_WORN, - STR_TT_NO_ARMOR, - STR_TT_CAT_NVG, - STR_TT_NO_NVG, - STR_TT_CAT_GAS_MASK, - STR_TT_NO_MASK, - STR_TT_CAT_HEAD_POS_1, - STR_TT_CAT_HEAD_POS_2, - STR_TT_IN_BACKPACK, - STR_TT_CAT_WEAPON, - STR_TT_NO_WEAPON, - STR_TT_HANDGUN, - STR_TT_SMG, - STR_TT_RIFLE, - STR_TT_MG, - STR_TT_SHOTGUN, - STR_TT_KNIFE, - STR_TT_HEAVY_WEAPON, - STR_TT_NO_HELMET, - STR_TT_NO_VEST, - STR_TT_NO_LEGGING, - STR_TT_CAT_ARMOR_2, - // Following added - SANDRO - STR_TT_SKILL_TRAIT_1, - STR_TT_SKILL_TRAIT_2, - STR_TT_SKILL_TRAIT_3, - // Additional suppression effects info - sevenfm - STR_TT_SUPPRESSION_AP, - STR_TT_SUPPRESSION_TOLERANCE, - STR_TT_EFFECTIVE_SHOCK, - STR_TT_AI_MORALE, - - TEXT_NUM_STR_TT -}; - -enum -{ - STR_HELI_ETA_TOTAL_DISTANCE, - STR_HELI_ETA_SAFE, - STR_HELI_ETA_UNSAFE, - STR_HELI_ETA_TOTAL_COST, - STR_HELI_ETA_ETA, - - STR_HELI_ETA_LOW_ON_FUEL_HOSTILE_TERRITORY, - STR_HELI_ETA_PASSENGERS, - STR_HELI_ETA_SELECT_SKYRIDER_OR_ARRIVALS, - STR_HELI_ETA_SKYRIDER, - STR_HELI_ETA_ARRIVALS, - - STR_HELI_ETA_HELI_DAMAGED_HOSTILE_TERRITORY, - STR_HELI_ETA_KICK_OUT_PASSENGERS_PROMPT, - STR_HELI_ETA_REMAINING_FUEL, - STR_HELI_ETA_DISTANCE_TO_REFUEL_SITE, - - TEXT_NUM_STR_HELI_ETA, -}; - -// anv: helicopter repairs -enum -{ - STR_HELI_RR_REPAIR_PROMPT, - STR_HELI_RR_REPAIR_IN_PROGRESS, - STR_HELI_RR_REPAIR_FINISHED, - STR_HELI_RR_REFUEL_FINISHED, - - STR_HELI_TOOFAR_ERROR, - - TEXT_NUM_STR_HELI_REPAIRS, -}; - -#define LARGE_STRING_LENGTH 200 -#define MED_STRING_LENGTH 80 -#define SMALL_STRING_LENGTH 20 - -extern CHAR16 TacticalStr[][MED_STRING_LENGTH]; -extern CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ]; - - -extern CHAR16 zDialogActions[][ SMALL_STRING_LENGTH ]; -extern CHAR16 zDealerStrings[][ SMALL_STRING_LENGTH ]; -extern CHAR16 zTalkMenuStrings[][ SMALL_STRING_LENGTH ]; -extern STR16 gzMoneyAmounts[6]; -extern CHAR16 gzProsLabel[10]; -extern CHAR16 gzConsLabel[10]; -// HEADROCK HAM 4: Text for the UDB tabs -extern STR16 gzItemDescTabButtonText[ 3 ]; -extern STR16 gzItemDescTabButtonShortText[ 3 ]; -extern STR16 gzItemDescGenHeaders[ 4 ]; -extern STR16 gzItemDescGenIndexes[ 4 ]; -// HEADROCK HAM 4: Added list of condition strings -extern STR16 gConditionDesc[ 9 ]; - -// Flugente: Added list of temperature descriptions -extern STR16 gTemperatureDesc[ 11 ]; - -// Flugente: Added list of food condition descriptions -extern STR16 gFoodDesc[ 8 ]; - -extern CHAR16 gMoneyStatsDesc[][ 14 ]; -// HEADROCK: Altered value to 16 //WarmSteel - And I need 17. // Flugente: 17->19 -extern CHAR16 gWeaponStatsDesc[][ 20 ]; -// HEADROCK: Added externs for Item Description Box icon and stat tooltips -// Note that I've inflated some of these to 20 to avoid issues. -extern STR16 gzWeaponStatsFasthelpTactical[ 33 ]; -extern STR16 gzMiscItemStatsFasthelp[]; -// HEADROCK HAM 4: New tooltip texts -extern STR16 gzUDBButtonTooltipText[ 3 ]; -extern STR16 gzUDBHeaderTooltipText[ 4 ]; -extern STR16 gzUDBGenIndexTooltipText[ 4 ]; -extern STR16 gzUDBAdvIndexTooltipText[ 5 ]; -extern STR16 szUDBGenWeaponsStatsTooltipText[ 23 ]; -extern STR16 szUDBGenWeaponsStatsExplanationsTooltipText[ 24 ]; -extern STR16 szUDBGenArmorStatsTooltipText[ 4 ]; // silversurfer Repair Ease: 3->5 -extern STR16 szUDBGenArmorStatsExplanationsTooltipText[ 5 ]; // silversurfer Repair Ease: 3->5 -extern STR16 szUDBGenAmmoStatsTooltipText[ 6 ]; // Flugente Overheating: 3->4 poison: 4->5 dirt: 5->6 -extern STR16 szUDBGenAmmoStatsExplanationsTooltipText[ 6 ]; // Flugente Overheating: 3->4 poison: 4->5 dirt: 5->6 -extern STR16 szUDBGenExplosiveStatsTooltipText[ 23 ]; // silversurfer Repair Ease: 22->23 -extern STR16 szUDBGenExplosiveStatsExplanationsTooltipText[ 23 ]; // silversurfer Repair Ease: 22->23 -extern STR16 szUDBGenCommonStatsTooltipText[ 3 ]; // silversurfer new for items that don't fit the other categories -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[]; -extern STR16 szUDBAdvStatsExplanationsTooltipText[]; -extern STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]; - -// Headrock: End Externs -extern STR16 sKeyDescriptionStrings[2]; -extern CHAR16 zHealthStr[][13]; -extern STR16 gzHiddenHitCountStr[1]; -extern STR16 zVehicleName[ 6 ]; -extern STR16 pVehicleSeatsStrings[ 2 ] ; - -// Flugente: externalised texts for some features -enum -{ - STR_COVERT_CAMOFOUND, - STR_COVERT_BACKPACKFOUND, - STR_COVERT_CARRYCORPSEFOUND, - STR_COVERT_ITEM_SUSPICIOUS, - STR_COVERT_MILITARYGEARFOUND, - STR_COVERT_TOOMANYGUNS, - STR_COVERT_ITEMSTOOGOOD, - STR_COVERT_TOOMANYATTACHMENTS, - STR_COVERT_ACTIVITIES, - STR_COVERT_NO_CIV, - STR_COVERT_BLEEDING, - STR_COVERT_DRUNKEN_SOLDIER, - STR_COVERT_TOO_CLOSE, - STR_COVERT_CURFEW_BROKEN, - STR_COVERT_CURFEW_BROKEN_NIGHT, - STR_COVERT_NEAR_CORPSE, - STR_COVERT_SUSPICIOUS_EQUIPMENT, - STR_COVERT_TARGETTING_SOLDIER, - STR_COVERT_UNCOVERED, - STR_COVERT_NO_CLOTHES_ITEM, - STR_COVERT_ERROR_OLDTRAITS, - STR_COVERT_NOT_ENOUGH_APS, - STR_COVERT_BAD_PALETTE, - STR_COVERT_NO_SKILL, - STR_COVERT_NO_UNIFORM_FOUND, - STR_COVERT_DISGUISED_AS_CIVILIAN, - STR_COVERT_DISGUISED_AS_SOLDIER, - STR_COVERT_UNIFORM_NOORDER, - STR_COVERT_SURRENDER_FAILED, - STR_COVERT_UNCOVER_SINGLE, - STR_COVERT_TEST_OK, - STR_COVERT_TEST_FAIL, - STR_COVERT_STEAL_FAIL, - STR_COVERT_APPLYITEM_STEAL_FAIL, - STR_COVERT_TOO_CLOSE_TO_ELITE, - STR_COVERT_TOO_CLOSE_TO_OFFICER, - TEXT_NUM_COVERT_STR -}; - -extern STR16 szCovertTextStr[]; - -enum -{ - STR_POWERPACK_BEGIN, - STR_POWERPACK_FULL, - STR_POWERPACK_GOOD, - STR_POWERPACK_HALF, - STR_POWERPACK_LOW, - STR_POWERPACK_EMPTY, - STR_POWERPACK_END, - - TEXT_POWERPACK_STR -}; - -extern STR16 gPowerPackDesc[]; - -enum -{ - STR_CORPSE_NO_HEAD_ITEM, - STR_CORPSE_NO_DECAPITATION, - STR_CORPSE_NO_MEAT_ITEM, - STR_CORPSE_NO_GUTTING, - STR_CORPSE_NO_CLOTHESFOUND, - STR_CORPSE_NO_STRIPPING_POSSIBLE, - STR_CORPSE_NO_TAKING, - STR_CORPSE_NO_FREEHAND, - STR_CORPSE_NO_CORPSE_ITEM, - STR_CORPSE_INVALID_CORPSE_ID, - - TEXT_NUM_CORPSE_STR -}; - -extern STR16 szCorpseTextStr[]; - -enum -{ - STR_FOOD_DONOTWANT_EAT, - STR_FOOD_DONOTWANT_DRINK, - STR_FOOD_ATE, - STR_FOOD_DRANK, - STR_FOOD_STR_DAMAGE_FOOD_TOO_MUCH, - STR_FOOD_STR_DAMAGE_FOOD_TOO_LESS, - STR_FOOD_HEALTH_DAMAGE_FOOD_TOO_MUCH, - STR_FOOD_HEALTH_DAMAGE_FOOD_TOO_LESS, - STR_FOOD_STR_DAMAGE_DRINK_TOO_MUCH, - STR_FOOD_STR_DAMAGE_DRINK_TOO_LESS, - STR_FOOD_HEALTH_DAMAGE_DRINK_TOO_MUCH, - STR_FOOD_HEALTH_DAMAGE_DRINK_TOO_LESS, - - STR_FOOD_ERROR_NO_FOOD_SYSTEM, - - TEXT_NUM_FOOD_STR -}; - -extern STR16 szFoodTextStr[]; - -enum -{ - STR_PRISONER_PROCESSED, - STR_PRISONER_RANSOM, - STR_PRISONER_DETECTION, - STR_PRISONER_TURN_MILITIA, - STR_PRISONER_RIOT, - STR_PRISONER_SENTTOSECTOR, - STR_PRISONER_RELEASED, - STR_PRISONER_ARMY_FREED_PRISON, - STR_PRISONER_REFUSE_SURRENDER, - STR_PRISONER_REFUSE_TAKE_PRISONERS, - SRT_PRISONER_INI_SETTING_OFF, - STR_PRISONER_X_FREES_Y, - STR_PRISONER_DETECTION_VIP, - STR_PRISONER_REFUSE_SURRENDER_LEADER, - STR_PRISONER_TURN_VOLUNTEER, - STR_PRISONER_ESCAPE, - STR_PRISONER_NO_ESCAPE, - - TEXT_NUM_PRISONER_STR -}; - -extern STR16 szPrisonerTextStr[]; - -enum -{ - STR_MTA_NONE, - STR_MTA_FORTIFY, - STR_MTA_REMOVE_FORTIFY, - STR_MTA_HACK, - STR_MTA_CANCEL, - STR_MTA_CANNOT_BUILD, - - TEXT_NUM_MTA_STR -}; - -extern STR16 szMTATextStr[]; - -enum -{ - STR_INV_ARM_BLOWUP_AP, - STR_INV_ARM_BLOWUP, - STR_INV_ARM_ARM_AP, - STR_INV_ARM_ARM, - STR_INV_ARM_DISARM_AP, - STR_INV_ARM_DISARM, - - TEXT_NUM_INV_ARM_STR -}; - -extern STR16 szInventoryArmTextStr[]; - -enum -{ - AIR_RAID_TURN_STR, - BEGIN_AUTOBANDAGE_PROMPT_STR, - NOTICING_MISSING_ITEMS_FROM_SHIPMENT_STR, - DOOR_LOCK_DESCRIPTION_STR, - DOOR_THERE_IS_NO_LOCK_STR, - DOOR_LOCK_DESTROYED_STR, - DOOR_LOCK_NOT_DESTROYED_STR, - DOOR_LOCK_HAS_BEEN_PICKED_STR, - DOOR_LOCK_HAS_NOT_BEEN_PICKED_STR, - DOOR_LOCK_UNTRAPPED_STR, - DOOR_LOCK_HAS_BEEN_UNLOCKED_STR, - DOOR_NOT_PROPER_KEY_STR, - DOOR_LOCK_HAS_BEEN_UNTRAPPED_STR, - DOOR_LOCK_IS_NOT_TRAPPED_STR, - DOOR_LOCK_HAS_BEEN_LOCKED_STR, - DOOR_DOOR_MOUSE_DESCRIPTION, - DOOR_TRAPPED_MOUSE_DESCRIPTION, - DOOR_LOCKED_MOUSE_DESCRIPTION, - DOOR_UNLOCKED_MOUSE_DESCRIPTION, - DOOR_BROKEN_MOUSE_DESCRIPTION, - ACTIVATE_SWITCH_PROMPT, - DISARM_TRAP_PROMPT, - ITEMPOOL_POPUP_PREV_STR, - ITEMPOOL_POPUP_NEXT_STR, - ITEMPOOL_POPUP_MORE_STR, - ITEM_HAS_BEEN_PLACED_ON_GROUND_STR, - ITEM_HAS_BEEN_GIVEN_TO_STR, - GUY_HAS_BEEN_PAID_IN_FULL_STR, - GUY_STILL_OWED_STR, - CHOOSE_BOMB_FREQUENCY_STR, - CHOOSE_TIMER_STR, - CHOOSE_REMOTE_FREQUENCY_STR, - DISARM_BOOBYTRAP_PROMPT, - REMOVE_BLUE_FLAG_PROMPT, - PLACE_BLUE_FLAG_PROMPT, - ENDING_TURN, - ATTACK_OWN_GUY_PROMPT, - VEHICLES_NO_STANCE_CHANGE_STR, - ROBOT_NO_STANCE_CHANGE_STR, - CANNOT_STANCE_CHANGE_STR, - CANNOT_DO_FIRST_AID_STR, - CANNOT_NO_NEED_FIRST_AID_STR, - CANT_MOVE_THERE_STR, - CANNOT_RECRUIT_TEAM_FULL, - HAS_BEEN_RECRUITED_STR, - BALANCE_OWED_STR, - ESCORT_PROMPT, - HIRE_PROMPT, - BOXING_PROMPT, - BUY_VEST_PROMPT, - NOW_BING_ESCORTED_STR, - JAMMED_ITEM_STR, - ROBOT_NEEDS_GIVEN_CALIBER_STR, - CANNOT_THROW_TO_DEST_STR, - TOGGLE_STEALTH_MODE_POPUPTEXT, - MAPSCREEN_POPUPTEXT, - END_TURN_POPUPTEXT, - TALK_CURSOR_POPUPTEXT, - TOGGLE_MUTE_POPUPTEXT, - CHANGE_STANCE_UP_POPUPTEXT, - CURSOR_LEVEL_POPUPTEXT, - JUMPCLIMB_POPUPTEXT, - CHANGE_STANCE_DOWN_POPUPTEXT, - EXAMINE_CURSOR_POPUPTEXT, - PREV_MERC_POPUPTEXT, - NEXT_MERC_POPUPTEXT, - CHANGE_OPTIONS_POPUPTEXT, - TOGGLE_BURSTMODE_POPUPTEXT, - LOOK_CURSOR_POPUPTEXT, - MERC_VITAL_STATS_POPUPTEXT, - CANNOT_DO_INV_STUFF_STR, - CONTINUE_OVER_FACE_STR, - MUTE_OFF_STR, - MUTE_ON_STR, - DRIVER_POPUPTEXT, - EXIT_VEHICLE_POPUPTEXT, - CHANGE_SQUAD_POPUPTEXT, - DRIVE_POPUPTEXT, - NOT_APPLICABLE_POPUPTEXT, - USE_HANDTOHAND_POPUPTEXT, - USE_FIREARM_POPUPTEXT, - USE_BLADE_POPUPTEXT , - USE_EXPLOSIVE_POPUPTEXT, - USE_MEDKIT_POPUPTEXT, - CATCH_STR, - RELOAD_STR, - GIVE_STR, - LOCK_TRAP_HAS_GONE_OFF_STR, - MERC_HAS_ARRIVED_STR, - GUY_HAS_RUN_OUT_OF_APS_STR, - MERC_IS_UNAVAILABLE_STR, - MERC_IS_ALL_BANDAGED_STR, - MERC_IS_OUT_OF_BANDAGES_STR, - ENEMY_IN_SECTOR_STR, - NO_ENEMIES_IN_SIGHT_STR, - NOT_ENOUGH_APS_STR, - NOBODY_USING_REMOTE_STR, - BURST_FIRE_DEPLETED_CLIP_STR, - ENEMY_TEAM_MERC_NAME, - CREATURE_TEAM_MERC_NAME, - MILITIA_TEAM_MERC_NAME, - CIV_TEAM_MERC_NAME, - ZOMBIE_TEAM_MERC_NAME, - POW_TEAM_MERC_NAME, - - //The text for the 'exiting sector' gui - EXIT_GUI_TITLE_STR, - OK_BUTTON_TEXT_STR, - CANCEL_BUTTON_TEXT_STR, - EXIT_GUI_SELECTED_MERC_STR, - EXIT_GUI_ALL_MERCS_IN_SQUAD_STR, - EXIT_GUI_GOTO_SECTOR_STR, - EXIT_GUI_GOTO_MAP_STR, - CANNOT_LEAVE_SECTOR_FROM_SIDE_STR, - CANNOT_LEAVE_IN_TURN_MODE_STR, - MERC_IS_TOO_FAR_AWAY_STR, - REMOVING_TREETOPS_STR, - SHOWING_TREETOPS_STR, - CROW_HIT_LOCATION_STR, - NECK_HIT_LOCATION_STR, - HEAD_HIT_LOCATION_STR, - TORSO_HIT_LOCATION_STR, - LEGS_HIT_LOCATION_STR, - YESNOLIE_STR, - GUN_GOT_FINGERPRINT, - GUN_NOGOOD_FINGERPRINT, - GUN_GOT_TARGET, - NO_PATH, - MONEY_BUTTON_HELP_TEXT, - AUTOBANDAGE_NOT_NEEDED, - SHORT_JAMMED_GUN, - CANT_GET_THERE, - EXCHANGE_PLACES_REQUESTER, - REFUSE_EXCHANGE_PLACES, - PAY_MONEY_PROMPT, - FREE_MEDICAL_PROMPT, - MARRY_DARYL_PROMPT, - KEYRING_HELP_TEXT, - EPC_CANNOT_DO_THAT, - SPARE_KROTT_PROMPT, - OUT_OF_RANGE_STRING, - CIV_TEAM_MINER_NAME, - VEHICLE_CANT_MOVE_IN_TACTICAL, - CANT_AUTOBANDAGE_PROMPT, - NO_PATH_FOR_MERC, - POW_MERCS_ARE_HERE, - LOCK_HAS_BEEN_HIT, - LOCK_HAS_BEEN_DESTROYED, - DOOR_IS_BUSY, - VEHICLE_VITAL_STATS_POPUPTEXT, - NO_LOS_TO_TALK_TARGET, - ATTACHMENT_REMOVED, - VEHICLE_CAN_NOT_BE_ADDED, - - // added by Flugente for defusing/setting up trap networks - CHOOSE_BOMB_OR_DEFUSE_FREQUENCY_STR, - CHOOSE_REMOTE_DEFUSE_FREQUENCY_STR, - CHOOSE_REMOTE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR, - CHOOSE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR, - CHOOSE_TRIPWIRE_NETWORK, - - MERC_VITAL_STATS_WITH_FOOD_POPUPTEXT, - - FUNCTION_SELECTION_STR, - FILL_CANTEEN_STR, - CLEAN_ONE_GUN_STR, - CLEAN_ALL_GUNS_STR, - TAKE_OFF_CLOTHES_STR, - TAKE_OFF_DISGUISE_STR, - MILITIA_DROP_EQ_STR, - MILITIA_PICK_UP_EQ_STR, - SPY_SELFTEST_STR, - UNUSED_STR, - - CORPSE_SELECTION_STR, - DECAPITATE_STR, - GUT_STR, - TAKE_CLOTHES_STR, - TAKE_BODY_STR, - - WEAPON_CLEANING_STR, - - PRISONER_FIELDINTERROGATION_STR, - PRISONER_FIELDINTERROGATION_SHORT_STR, - PRISONER_DECIDE_STR, - PRISONER_LETGO_STR, - PRISONER_OFFER_SURRENDER, - PRISONER_DEMAND_SURRENDER_STR, - PRISONER_OFFER_SURRENDER_STR, - PRISONER_DISTRACT_STR, - PRISONER_TALK_STR, - PRISONER_RECRUIT_TURNCOAT_STR, - - // sevenfm: new disarm trap dialog, new messages for wrong mines when arming - DISARM_DIALOG_DISARM, - DISARM_DIALOG_INSPECT, - DISARM_DIALOG_REMOVE_BLUEFLAG, - DISARM_DIALOG_BLOWUP, - DISARM_DIALOG_ACTIVATE_TRIPWIRE, - DISARM_DIALOG_DEACTIVATE_TRIPWIRE, - DISARM_DIALOG_REVEAL_TRIPWIRE, - ARM_MESSAGE_NO_DETONATOR, - ARM_MESSAGE_ALREADY_ARMED, - INSPECT_RESULT_SAFE, - INSPECT_RESULT_MOSTLY_SAFE, - INSPECT_RESULT_RISKY, - INSPECT_RESULT_DANGEROUS, - INSPECT_RESULT_HIGH_DANGER, - - GENERAL_INFO_MASK, - GENERAL_INFO_NVG, - GENERAL_INFO_ITEM, - - QUICK_ITEMS_ONLY_NIV, - QUICK_ITEMS_NO_ITEM_IN_HAND, - QUICK_ITEMS_NOWHERE_TO_PLACE, - QUICK_ITEM_NO_DEFINED_ITEM, - QUICK_ITEM_NO_FREE_HAND, - QUICK_ITEM_NOT_FOUND, - QUICK_ITEM_CANNOT_TAKE, - - ATTEMPT_BANDAGE_DURING_TRAVEL, - - IMPROVEGEARBUTTON_STR, - IMPROVEGEARDESCRIBE_STR, - IMPROVEGEARPICKUPMAG_STR, - - DISTRACT_STOP_STR, - DISTRACT_TRY_TO_TURNCOAT, - - TEXT_NUM_TACTICAL_STR -}; - -enum{ - EXIT_GUI_LOAD_ADJACENT_SECTOR_HELPTEXT, - EXIT_GUI_GOTO_MAPSCREEN_HELPTEXT, - EXIT_GUI_CANT_LEAVE_HOSTILE_SECTOR_HELPTEXT, - EXIT_GUI_MUST_LOAD_ADJACENT_SECTOR_HELPTEXT, - EXIT_GUI_MUST_GOTO_MAPSCREEN_HELPTEXT, - EXIT_GUI_ESCORTED_CHARACTERS_MUST_BE_ESCORTED_HELPTEXT, - EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_SINGULAR, - EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_SINGULAR, - EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_PLURAL, - EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_PLURAL, - EXIT_GUI_ALL_MERCS_MUST_BE_TOGETHER_TO_ALLOW_HELPTEXT, - EXIT_GUI_EPC_NOT_ALLOWED_TO_LEAVE_ALONE_HELPTEXT, - EXIT_GUI_SINGLE_TRAVERSAL_WILL_SEPARATE_SQUADS_HELPTEXT, - EXIT_GUI_ALL_TRAVERSAL_WILL_MOVE_CURRENT_SQUAD_HELPTEXT, - EXIT_GUI_ESCORTED_CHARACTERS_CANT_LEAVE_SECTOR_ALONE_STR, - TEXT_NUM_EXIT_GUI -}; -extern STR16 pExitingSectorHelpText[]; - - -enum -{ - LARGESTR_NOONE_LEFT_CAPABLE_OF_BATTLE_STR, - LARGESTR_NOONE_LEFT_CAPABLE_OF_BATTLE_AGAINST_CREATURES_STR, - LARGESTR_HAVE_BEEN_CAPTURED, - TEXT_NUM_LARGESTR -}; - - -//Insurance Contract.c -enum -{ - INS_CONTRACT_PREVIOUS, - INS_CONTRACT_NEXT, - INS_CONTRACT_ACCEPT, - INS_CONTRACT_CLEAR, - TEXT_NUM_INS_CONTRACT -}; -extern STR16 InsContractText[]; - - -//Insurance Info -enum -{ - INS_INFO_PREVIOUS, - INS_INFO_NEXT, - TEXT_NUM_INS_INFO, -}; -extern STR16 InsInfoText[]; - -//Merc Account.c -enum -{ - MERC_ACCOUNT_AUTHORIZE, - MERC_ACCOUNT_HOME, - MERC_ACCOUNT_ACCOUNT, - MERC_ACCOUNT_MERC, - MERC_ACCOUNT_DAYS, - MERC_ACCOUNT_RATE, - MERC_ACCOUNT_CHARGE, - MERC_ACCOUNT_TOTAL, - MERC_ACCOUNT_AUTHORIZE_CONFIRMATION, - MERC_ACCOUNT_NAME_PLUSGEAR, - TEXT_NUM_MERC_ACCOUNT, -}; -extern STR16 MercAccountText[]; - -// WANNE: The "Next" and "Prev" button text of the merc account page -extern STR16 MercAccountPageText[]; - - -//MercFile.c -enum -{ - MERC_FILES_HEALTH, - MERC_FILES_AGILITY, - MERC_FILES_DEXTERITY, - MERC_FILES_STRENGTH, - MERC_FILES_LEADERSHIP, - MERC_FILES_WISDOM, - MERC_FILES_EXPLEVEL, - MERC_FILES_MARKSMANSHIP, - MERC_FILES_MECHANICAL, - MERC_FILES_EXPLOSIVE, - MERC_FILES_MEDICAL, - - MERC_FILES_PREVIOUS, - MERC_FILES_HIRE, - MERC_FILES_NEXT, - MERC_FILES_ADDITIONAL_INFO, - MERC_FILES_HOME, - MERC_FILES_ALREADY_HIRED, //5 - MERC_FILES_SALARY, - MERC_FILES_PER_DAY, - MERC_FILES_GEAR, - MERC_FILES_TOTAL, - MERC_FILES_MERC_IS_DEAD, - - MERC_FILES_HIRE_TO_MANY_PEOPLE_WARNING, - MERC_FILES_BUY_GEAR, - MERC_FILES_MERC_UNAVAILABLE, - MERC_FILES_MERC_OUTSTANDING, - MERC_FILES_BIO, //JMich_MMG: Adding two new texts for the small button, assuming we manage to add a silhouette with the gear, add it after this. - MERC_FILES_INVENTORY, - MERC_FILES_SPECIAL_OFFER, - TEXT_NUM_MERC_FILES, -}; -extern STR16 MercInfo[]; - - -//MercNoAccount.c -enum -{ - MERC_NO_ACC_OPEN_ACCOUNT, - MERC_NO_ACC_CANCEL, - MERC_NO_ACC_NO_ACCOUNT_OPEN_ONE, - TEXT_NUM_MERC_NO_ACC, -}; -extern STR16 MercNoAccountText[]; - - - -//Merc HomePage -enum -{ - MERC_SPECK_OWNER, - MERC_OPEN_ACCOUNT, - MERC_VIEW_ACCOUNT, - MERC_VIEW_FILES, - MERC_SPECK_COM, - MERC_NO_FUNDS_TRANSFER_FAILED, - TEXT_NUM_MERC, -}; -extern STR16 MercHomePageText[]; - - -//Funerl.c -enum -{ - FUNERAL_INTRO_1, - FUNERAL_INTRO_2, - FUNERAL_INTRO_3, - FUNERAL_INTRO_4, - FUNERAL_INTRO_5, - FUNERAL_SEND_FLOWERS, //5 - FUNERAL_CASKET_URN, - FUNERAL_CREMATION, - FUNERAL_PRE_FUNERAL, - FUNERAL_FUNERAL_ETTIQUETTE, - FUNERAL_OUR_CONDOLENCES, //10 - FUNERAL_OUR_SYMPATHIES, - TEXT_NUM_FUNERAL, -}; -extern STR16 sFuneralString[]; - - -//Florist.c -enum -{ - FLORIST_GALLERY, - FLORIST_DROP_ANYWHERE, - FLORIST_PHONE_NUMBER, - FLORIST_STREET_ADDRESS, - FLORIST_WWW_ADDRESS, - FLORIST_ADVERTISEMENT_1, - FLORIST_ADVERTISEMENT_2, - FLORIST_ADVERTISEMENT_3, - FLORIST_ADVERTISEMENT_4, - FLORIST_ADVERTISEMENT_5, - FLORIST_ADVERTISEMENT_6, - FLORIST_ADVERTISEMENT_7, - FLORIST_ADVERTISEMENT_8, - FLORIST_ADVERTISEMENT_9, - TEXT_NUM_FLORIST, -}; -extern STR16 sFloristText[]; - - -//Florist Order Form -enum -{ - FLORIST_ORDER_BACK, - FLORIST_ORDER_SEND, - FLORIST_ORDER_CLEAR, - FLORIST_ORDER_GALLERY, - FLORIST_ORDER_NAME_BOUQUET, - FLORIST_ORDER_PRICE, //5 - FLORIST_ORDER_ORDER_NUMBER, - FLORIST_ORDER_DELIVERY_DATE, - FLORIST_ORDER_NEXT_DAY, - FLORIST_ORDER_GETS_THERE, - FLORIST_ORDER_DELIVERY_LOCATION, //10 - FLORIST_ORDER_ADDITIONAL_CHARGES, - FLORIST_ORDER_CRUSHED, - FLORIST_ORDER_BLACK_ROSES, - FLORIST_ORDER_WILTED, - FLORIST_ORDER_FRUIT_CAKE, //15 - FLORIST_ORDER_PERSONAL_SENTIMENTS, - FLORIST_ORDER_CARD_LENGTH, - FLORIST_ORDER_SELECT_FROM_OURS, - FLORIST_ORDER_STANDARDIZED_CARDS, - FLORIST_ORDER_BILLING_INFO, //20 - FLORIST_ORDER_NAME, - TEXT_NUM_FLORIST_ORDER, -}; -extern STR16 sOrderFormText[]; - - - -//Florist Gallery.c -enum -{ - FLORIST_GALLERY_PREV, - FLORIST_GALLERY_NEXT, - FLORIST_GALLERY_CLICK_TO_ORDER, - FLORIST_GALLERY_ADDIFTIONAL_FEE, - FLORIST_GALLERY_HOME, - TEXT_NUM_FLORIST_GALLERY, -}; -extern STR16 sFloristGalleryText[]; - - -//Florist Cards -enum -{ - FLORIST_CARDS_CLICK_SELECTION, - FLORIST_CARDS_BACK, - TEXT_NUM_FLORIST_CARDS, -}; -extern STR16 sFloristCards[]; - -// Bobbyr Mail Order.c -enum -{ - BOBBYR_ORDER_FORM, - BOBBYR_QTY, - BOBBYR_WEIGHT, - BOBBYR_NAME, - BOBBYR_UNIT_PRICE, - BOBBYR_TOTAL, - BOBBYR_SUB_TOTAL, - BOBBYR_S_H, - BOBBYR_GRAND_TOTAL, - BOBBYR_SHIPPING_LOCATION, - BOBBYR_SHIPPING_SPEED, - BOBBYR_COST, - BOBBYR_OVERNIGHT_EXPRESS, - BOBBYR_BUSINESS_DAYS, - BOBBYR_STANDARD_SERVICE, - BOBBYR_CLEAR_ORDER, - BOBBYR_ACCEPT_ORDER, - BOBBYR_BACK, - BOBBYR_HOME, - BOBBYR_USED_TEXT, - BOBBYR_CANT_AFFORD_PURCHASE, - BOBBYR_SELECT_DEST, - BOBBYR_CONFIRM_DEST, - BOBBYR_PACKAGE_WEIGHT, - BOBBYR_MINIMUM_WEIGHT, - BOBBYR_GOTOSHIPMENT_PAGE, - TEXT_NUM_BOBBYR_MAILORDER, -}; -extern STR16 BobbyROrderFormText[]; - -enum -{ - // Guns - BOBBYR_FILTER_GUNS_PISTOL, - BOBBYR_FILTER_GUNS_M_PISTOL, - BOBBYR_FILTER_GUNS_SMG, - BOBBYR_FILTER_GUNS_RIFLE, - BOBBYR_FILTER_GUNS_SN_RIFLE, - BOBBYR_FILTER_GUNS_AS_RIFLE, - BOBBYR_FILTER_GUNS_LMG, - BOBBYR_FILTER_GUNS_SHOTGUN, - BOBBYR_FILTER_GUNS_HEAVY, - // Ammo - BOBBYR_FILTER_AMMO_PISTOL, - BOBBYR_FILTER_AMMO_M_PISTOL, - BOBBYR_FILTER_AMMO_SMG, - BOBBYR_FILTER_AMMO_RIFLE, - BOBBYR_FILTER_AMMO_SN_RIFLE, - BOBBYR_FILTER_AMMO_AS_RIFLE, - BOBBYR_FILTER_AMMO_LMG, - BOBBYR_FILTER_AMMO_SHOTGUN, - //BOBBYR_FILTER_AMMO_HEAVY, - // Used - BOBBYR_FILTER_USED_GUNS, - BOBBYR_FILTER_USED_ARMOR, - BOBBYR_FILTER_USED_LBEGEAR, - BOBBYR_FILTER_USED_MISC, - // Armour - BOBBYR_FILTER_ARMOUR_HELM, - BOBBYR_FILTER_ARMOUR_VEST, - BOBBYR_FILTER_ARMOUR_LEGGING, - BOBBYR_FILTER_ARMOUR_PLATE, - // Misc - BOBBYR_FILTER_MISC_BLADE, - BOBBYR_FILTER_MISC_THROWING_KNIFE, - BOBBYR_FILTER_MISC_PUNCH, - BOBBYR_FILTER_MISC_GRENADE, - BOBBYR_FILTER_MISC_BOMB, - BOBBYR_FILTER_MISC_MEDKIT, - BOBBYR_FILTER_MISC_KIT, - BOBBYR_FILTER_MISC_FACE, - BOBBYR_FILTER_MISC_LBEGEAR, - BOBBYR_FILTER_MISC_OPTICS_ATTACHMENTS, // Madd: New BR filter option - BOBBYR_FILTER_MISC_SIDE_AND_BOTTOM_ATTACHMENTS, // Madd: New BR filter option - BOBBYR_FILTER_MISC_MUZZLE_ATTACHMENTS, // Madd: New BR filter option - BOBBYR_FILTER_MISC_STOCK_ATTACHMENTS, // Madd: New BR filter option - BOBBYR_FILTER_MISC_INTERNAL_ATTACHMENTS, // Madd: New BR filter option - BOBBYR_FILTER_MISC_OTHER_ATTACHMENTS, // Madd: New BR filter option - BOBBYR_FILTER_MISC_MISC, - TEXT_NUM_BOBBYR_FILTER -}; - - -//BobbyRGuns.c -enum -{ - BOBBYR_GUNS_TO_ORDER, - BOBBYR_GUNS_CLICK_ON_ITEMS, - BOBBYR_GUNS_PREVIOUS_ITEMS, - BOBBYR_GUNS_GUNS, - BOBBYR_GUNS_AMMO, - BOBBYR_GUNS_ARMOR, //5 - BOBBYR_GUNS_MISC, - BOBBYR_GUNS_USED, - BOBBYR_GUNS_MORE_ITEMS, - BOBBYR_GUNS_ORDER_FORM, - BOBBYR_GUNS_HOME, //10 - BOBBYR_GUNS_NUM_GUNS_THAT_USE_AMMO_1, - BOBBYR_GUNS_NUM_GUNS_THAT_USE_AMMO_2, - - BOBBYR_GUNS_WGHT, - BOBBYR_GUNS_CALIBRE, - BOBBYR_GUNS_MAGAZINE, - BOBBYR_GUNS_RANGE, - BOBBYR_GUNS_DAMAGE, - BOBBYR_GUNS_ROF, - BOBBYR_GUNS_AP, - BOBBYR_GUNS_STUN, - BOBBYR_GUNS_PROTECTION, - BOBBYR_GUNS_CAMO, - BOBBYR_GUNS_ARMOUR_PIERCING_MODIFIER, - BOBBYR_GUNS_BULLET_TUMBLE_MODIFIER, - BOBBYR_GUNS_NUM_PROJECTILES, - BOBBYR_GUNS_COST, - BOBBYR_GUNS_IN_STOCK, - BOBBYR_GUNS_QTY_ON_ORDER, - BOBBYR_GUNS_DAMAGED, - BOBBYR_GUNS_WEIGHT, - BOBBYR_GUNS_SUB_TOTAL, - BOBBYR_GUNS_PERCENT_FUNCTIONAL, - - BOBBYR_MORE_THEN_10_PURCHASES_A, - BOBBYR_MORE_THEN_10_PURCHASES_B, - BOBBYR_MORE_NO_MORE_IN_STOCK, - BOBBYR_NO_MORE_STOCK, - TEXT_NUM_BOBBYR_GUNS, -}; - -extern STR16 BobbyRText[]; -extern STR16 BobbyRFilter[]; - - -//BobbyR.c -enum -{ - BOBBYR_ADVERTISMENT_1, - BOBBYR_ADVERTISMENT_2, - BOBBYR_USED, - BOBBYR_MISC, - BOBBYR_GUNS, - BOBBYR_AMMO, - BOBBYR_ARMOR, - BOBBYR_ADVERTISMENT_3, - BOBBYR_UNDER_CONSTRUCTION, - TEXT_NUM_BOBBYR -}; -extern STR16 BobbyRaysFrontText[]; - -//Aim Sort.c -enum -{ - AIM_AIMMEMBERS, - SORT_BY, - PRICE, - EXPERIENCE, - AIMMARKSMANSHIP, - AIMMECHANICAL, - AIMEXPLOSIVES, - AIMMEDICAL, - AIMHEALTH, - AIMAGILITY, - AIMDEXTERITY, - AIMSTRENGTH, - AIMLEADERSHIP, - AIMWISDOM, - NAME, - MUGSHOT_INDEX, - MERCENARY_FILES, - ALUMNI_GALLERY, - ASCENDING, - DESCENDING, - TEXT_NUM_AIM_SORT -}; -extern STR16 AimSortText[]; - -//Aim Policies.c -enum -{ - AIM_POLICIES_PREVIOUS, - AIM_POLICIES_HOMEPAGE, - AIM_POLICIES_POLICY, - AIM_POLICIES_NEXT_PAGE, - AIM_POLICIES_DISAGREE, - AIM_POLICIES_AGREE, - TEXT_NUM_AIM_POLICIES -}; -extern STR16 AimPolicyText[]; - - - - -//Aim Member.c -enum -{ - AIM_MEMBER_CLICK_INSTRUCTIONS, - TEXT_NUM_AIM_MEMBER_TEXT -}; -extern STR16 AimMemberText[]; - - - -//Aim Member.c -enum -{ - AIM_MEMBER_HEALTH, - AIM_MEMBER_AGILITY, - AIM_MEMBER_DEXTERITY, - AIM_MEMBER_STRENGTH, - AIM_MEMBER_LEADERSHIP, - AIM_MEMBER_WISDOM, //5 - AIM_MEMBER_EXP_LEVEL, - AIM_MEMBER_MARKSMANSHIP, - AIM_MEMBER_MECHANICAL, - AIM_MEMBER_EXPLOSIVE, - AIM_MEMBER_MEDICAL, //10 - AIM_MEMBER_FEE, - AIM_MEMBER_CONTRACT, - AIM_MEMBER_1_DAY, - AIM_MEMBER_1_WEEK, - AIM_MEMBER_2_WEEKS, //15 - AIM_MEMBER_PREVIOUS, - AIM_MEMBER_CONTACT, - AIM_MEMBER_NEXT, - AIM_MEMBER_ADDTNL_INFO, - AIM_MEMBER_ACTIVE_MEMBERS, //20 - AIM_MEMBER_OPTIONAL_GEAR, - AIM_MEMBER_OPTIONAL_GEAR_NSGI, - AIM_MEMBER_MEDICAL_DEPOSIT_REQ, - AIM_MEMBER_GEAR_KIT_ONE, - AIM_MEMBER_GEAR_KIT_TWO, //25 - AIM_MEMBER_GEAR_KIT_THREE, - AIM_MEMBER_GEAR_KIT_FOUR, - AIM_MEMBER_GEAR_KIT_FIVE, - AIM_MEMBER_UB_MISSION_FEE, - TEXT_NUM_AIM_MEMBER_CHARINFO, -}; -extern STR16 CharacterInfo[]; - - - -//Aim Member.c -enum -{ - AIM_MEMBER_CONTRACT_CHARGE, - AIM_MEMBER_ONE_DAY, - AIM_MEMBER_ONE_WEEK, - AIM_MEMBER_TWO_WEEKS, - AIM_MEMBER_NO_EQUIPMENT, - AIM_MEMBER_BUY_EQUIPMENT, //5 - AIM_MEMBER_TRANSFER_FUNDS, - AIM_MEMBER_CANCEL, - AIM_MEMBER_HIRE, - AIM_MEMBER_HANG_UP, - AIM_MEMBER_OK, //10 - AIM_MEMBER_LEAVE_MESSAGE, - AIM_MEMBER_VIDEO_CONF_WITH, - AIM_MEMBER_CONNECTING, - AIM_MEMBER_WITH_MEDICAL, //14 - TEXT_NUM_AIM_MEMBER_VCONF -}; -extern STR16 VideoConfercingText[]; - -//Aim Member.c -enum -{ - AIM_MEMBER_FUNDS_TRANSFER_SUCCESFUL, - AIM_MEMBER_FUNDS_TRANSFER_FAILED, - AIM_MEMBER_NOT_ENOUGH_FUNDS, - - AIM_MEMBER_ON_ASSIGNMENT, - AIM_MEMBER_LEAVE_MSG, - AIM_MEMBER_DEAD, - - AIM_MEMBER_ALREADY_HAVE_MAX_MERCS, - - AIM_MEMBER_PRERECORDED_MESSAGE, - AIM_MEMBER_MESSAGE_RECORDED, - TEXT_NUM_AIM_MEMBER_POPUP -}; -extern STR16 AimPopUpText[]; - -//AIM Link.c -enum -{ - AIM_LINK_TITLE, - TEXM_NUM_AIM_LINK, -}; -extern STR16 AimLinkText[]; - - -//Aim History -enum -{ - AIM_HISTORY_TITLE, - AIM_HISTORY_PREVIOUS, - AIM_HISTORY_HOME, - AIM_HISTORY_AIM_ALUMNI, - AIM_HISTORY_NEXT, - TEXT_NUM_AIM_HISTORY, -}; -extern STR16 AimHistoryText[]; - - - -//Aim Facial Index -enum -{ - AIM_FI_PRICE, - AIM_FI_EXP, - AIM_FI_MARKSMANSHIP, - AIM_FI_MECHANICAL, - AIM_FI_EXPLOSIVES, - AIM_FI_MEDICAL, - AIM_FI_HEALTH, - AIM_FI_AGILITY, - AIM_FI_DEXTERITY, - AIM_FI_STRENGTH, - AIM_FI_LEADERSHIP, - AIM_FI_WISDOM, - AIM_FI_NAME, - AIM_FI_AIM_MEMBERS_SORTED_ASCENDING, - AIM_FI_AIM_MEMBERS_SORTED_DESCENDING, - AIM_FI_LEFT_CLICK, - AIM_FI_TO_SELECT, - AIM_FI_RIGHT_CLICK, - AIM_FI_TO_ENTER_SORT_PAGE, - AIM_FI_AWAY, - AIM_FI_DEAD, - AIM_FI_ON_ASSIGN, - TEXT_NUM_AIM_FI, -}; -extern STR16 AimFiText[]; - - -//AimArchives. -enum -{ - AIM_ALUMNI_PAGE_1, - AIM_ALUMNI_PAGE_2, - AIM_ALUMNI_PAGE_3, - AIM_ALUMNI_ALUMNI, - AIM_ALUMNI_DONE, - TEXT_NUM_AIM_ALUMNI, -}; -extern STR16 AimAlumniText[]; - - - -//Aim Home Page -enum -{ -// AIM_INFO_1, -// AIM_INFO_2, -// AIM_POLICIES, -// AIM_HISTORY, -// AIM_LINKS, //5 - AIM_INFO_3, - AIM_INFO_4, - AIM_INFO_5, - AIM_INFO_6, - AIM_INFO_7, //9 - AIM_BOBBYR_ADD1, - AIM_BOBBYR_ADD2, - AIM_BOBBYR_ADD3, - TEXT_NUM_AIM_SCREEN -}; - -extern STR16 AimScreenText[]; - -//Aim Home Page -enum -{ - AIM_HOME, - AIM_MEMBERS, - AIM_ALUMNI, - AIM_POLICIES, - AIM_HISTORY, - AIM_LINKS, - TEXT_NUM_AIM_MENU -}; - -extern STR16 AimBottomMenuText[]; - - - -// MapScreen -enum -{ - MAP_SCREEN_MAP_LEVEL, - MAP_SCREEN_NO_MILITIA_TEXT, - TEXT_NUM_MAP_SCREEN, -}; -extern STR16 zMarksMapScreenText[]; - - - -//Weapon Name and Description size -#define ITEMSTRINGFILENAME "BINARYDATA\\ITEMDESC.EDT" -#define SIZE_ITEM_NAME 160 -#define SIZE_SHORT_ITEM_NAME 160 -#define SIZE_ITEM_INFO 480 -#define SIZE_ITEM_PROS 160 -#define SIZE_ITEM_CONS 160 - -BOOLEAN LoadItemInfo(UINT16 ubIndex, STR16 pNameString, STR16 pInfoString ); -extern void LoadAllExternalText( void ); -BOOLEAN LoadShortNameItemInfo(UINT16 ubIndex, STR16 pNameString ); -BOOLEAN LoadItemProsAndCons( UINT16 usIndex, STR16 pProsString, STR16 pConsString ); -BOOLEAN LoadBRDesc(UINT16 ubIndex, STR16 pDescString ); -BOOLEAN LoadBRName(UINT16 ubIndex, STR16 pNameString ); - -// convert UTF-8 string to wstring -std::wstring utf8_to_wstring(const std::string& str); -// convert wstring to UTF-8 string -std::string wstring_to_utf8(const std::wstring& str); - -enum -{ - //Coordinating simultaneous arrival dialog strings - STR_DETECTED_SIMULTANEOUS_ARRIVAL, - STR_DETECTED_SINGULAR, - STR_DETECTED_PLURAL, - STR_COORDINATE, - //AutoResove Enemy capturing strings - STR_ENEMY_SURRENDER_OFFER, - STR_ENEMY_CAPTURED, - //AutoResolve Text buttons - STR_AR_RETREAT_BUTTON, - STR_AR_DONE_BUTTON, - //AutoResolve header text - STR_AR_DEFEND_HEADER, - STR_AR_ATTACK_HEADER, - STR_AR_ENCOUNTER_HEADER, - STR_AR_SECTOR_HEADER, - //String for AutoResolve battle over conditions - STR_AR_OVER_VICTORY, - STR_AR_OVER_DEFEAT, - STR_AR_OVER_SURRENDERED, - STR_AR_OVER_CAPTURED, - STR_AR_OVER_RETREATED, - STR_AR_MILITIA_NAME, - STR_AR_ELITE_NAME, - STR_AR_TROOP_NAME, - STR_AR_ADMINISTRATOR_NAME, - STR_AR_CREATURE_NAME, - STR_AR_TIME_ELAPSED, - STR_AR_MERC_RETREATED, - STR_AR_MERC_RETREATING, - STR_AR_MERC_RETREAT, - //Strings for prebattle interface - STR_PB_AUTORESOLVE_BTN, - STR_PB_GOTOSECTOR_BTN, - STR_PB_RETREATMERCS_BTN, - STR_PB_ENEMYENCOUNTER_HEADER, - STR_PB_ENEMYINVASION_HEADER, - STR_PB_ENEMYAMBUSH_HEADER, - STR_PB_ENTERINGENEMYSECTOR_HEADER, - STR_PB_CREATUREATTACK_HEADER, - STR_PB_BLOODCATAMBUSH_HEADER, - STR_PB_ENTERINGBLOODCATLAIR_HEADER, - STR_PB_ENEMYINVASION_AIRDROP_HEADER, - STR_PB_LOCATION, - STR_PB_ENEMIES, - STR_PB_MERCS, - STR_PB_MILITIA, - STR_PB_CREATURES, - STR_PB_BLOODCATS, - STR_PB_SECTOR, - STR_PB_NONE, - STR_PB_NOTAPPLICABLE_ABBREVIATION, - STR_PB_DAYS_ABBREVIATION, - STR_PB_HOURS_ABBREVIATION, - //Strings for the tactical placement gui - //The four buttons and it's help text. - STR_TP_CLEAR, - STR_TP_SPREAD, - STR_TP_GROUP, - STR_TP_DONE, - STR_TP_CLEARHELP, - STR_TP_SPREADHELP, - STR_TP_GROUPHELP, - STR_TP_DONEHELP, - STR_TP_DISABLED_DONEHELP, - //various strings. - STR_TP_SECTOR, - STR_TP_CHOOSEENTRYPOSITIONS, - STR_TP_INACCESSIBLE_MESSAGE, - STR_TP_INVALID_MESSAGE, - STR_TP_NAME_HASARRIVEDINSECTOR_XX, - STR_PB_AUTORESOLVE_FASTHELP, - STR_PB_DISABLED_AUTORESOLVE_FASTHELP, - STR_PB_GOTOSECTOR_FASTHELP, - STR_BP_RETREATSINGLE_FASTHELP, - STR_BP_RETREATPLURAL_FASTHELP, - - //various popup messages for battle, - STR_DIALOG_ENEMIES_ATTACK_MILITIA, - STR_DIALOG_CREATURES_ATTACK_MILITIA, - STR_DIALOG_CREATURES_KILL_CIVILIANS, - STR_DIALOG_ENEMIES_ATTACK_UNCONCIOUSMERCS, - STR_DIALOG_CREATURES_ATTACK_UNCONCIOUSMERCS, - - // Flugente: militia movement forbidden due to limited roaming - STR_MILITIAMOVEMENT_NO_LIMITEDROAMING, - STR_MILITIAMOVEMENT_NO_STAFF_ABORT, - - STR_AR_ROBOT_NAME, - STR_AR_TANK_NAME, - STR_AR_JEEP_NAME, - - STR_BREATH_REGEN_SLEEP, - - STR_PB_ZOMBIES, - STR_PB_BANDITS, - STR_PB_BLOODCATRAID_HEADER, - STR_PB_ZOMBIERAID_HEADER, - STR_PB_BANDITRAID_HEADER, - STR_PB_ZOMBIE, - STR_PB_BANDIT, - STR_PB_BANDIT_KILLCIVS_IN_SECTOR, - STR_PB_TRANSPORT_GROUP, - STR_PB_TRANSPORT_GROUP_EN_ROUTE, - - TEXT_NUM_STRATEGIC_TEXT -}; - -//Strings used in conjunction with above enumerations -extern STR16 gpStrategicString[]; - -enum -{ - STR_GAMECLOCK_DAY_NAME, - TEXT_NUM_GAMECLOCK, -}; -extern STR16 gpGameClockString[]; - -//enums for the Shopkeeper Interface -enum -{ - SKI_TEXT_MERCHADISE_IN_STOCK, - SKI_TEXT_PAGE, - SKI_TEXT_TOTAL_COST, - SKI_TEXT_TOTAL_VALUE, - SKI_TEXT_EVALUATE, - SKI_TEXT_TRANSACTION, - SKI_TEXT_DONE, - SKI_TEXT_REPAIR_COST, - SKI_TEXT_ONE_HOUR, - SKI_TEXT_PLURAL_HOURS, - SKI_TEXT_REPAIRED, - SKI_TEXT_NO_MORE_ROOM_IN_PLAYER_OFFER_AREA, - SKI_TEXT_MINUTES, - SKI_TEXT_DROP_ITEM_TO_GROUND, - SKI_TEXT_BUDGET, - TEXT_NUM_SKI_TEXT -}; -extern STR16 SKI_Text[]; - -//ShopKeeper Interface -enum -{ - SKI_ATM_0, - SKI_ATM_1, - SKI_ATM_2, - SKI_ATM_3, - SKI_ATM_4, - SKI_ATM_5, - SKI_ATM_6, - SKI_ATM_7, - SKI_ATM_8, - SKI_ATM_9, - SKI_ATM_OK, - SKI_ATM_TAKE, - SKI_ATM_GIVE, - SKI_ATM_CANCEL, - SKI_ATM_CLEAR, - - NUM_SKI_ATM_BUTTONS -}; -extern STR16 SkiAtmText[]; - -//ShopKeeper Interface -enum -{ - SKI_ATM_MODE_TEXT_SELECT_MODE, - SKI_ATM_MODE_TEXT_ENTER_AMOUNT, - SKI_ATM_MODE_TEXT_SELECT_TO_MERC, - SKI_ATM_MODE_TEXT_SELECT_FROM_MERC, - SKI_ATM_MODE_TEXT_SELECT_INUSUFFICIENT_FUNDS, - SKI_ATM_MODE_TEXT_BALANCE, - TEXT_NUM_SKI_ATM_MODE_TEXT, -}; -extern STR16 gzSkiAtmText[]; - -//ShopKeeperInterface Message Box defines -enum -{ - SKI_QUESTION_TO_DEDUCT_MONEY_FROM_PLAYERS_ACCOUNT_TO_COVER_DIFFERENCE, - SKI_SHORT_FUNDS_TEXT, - SKI_QUESTION_TO_DEDUCT_MONEY_FROM_PLAYERS_ACCOUNT_TO_COVER_COST, - - SKI_TRANSACTION_BUTTON_HELP_TEXT, - SKI_REPAIR_TRANSACTION_BUTTON_HELP_TEXT, - SKI_DONE_BUTTON_HELP_TEXT, - - SKI_PLAYERS_CURRENT_BALANCE, - - SKI_QUESTION_TO_DEDUCT_INTEL_FROM_PLAYERS_ACCOUNT_TO_COVER_DIFFERENCE, - SKI_QUESTION_TO_DEDUCT_INTEL_FROM_PLAYERS_ACCOUNT_TO_COVER_COST, - - TEXT_NUM_SKI_MBOX_TEXT -}; - -extern STR16 SkiMessageBoxText[]; - - -//enums for the above text -enum -{ - SLG_SAVE_GAME, - SLG_LOAD_GAME, - SLG_CANCEL, - SLG_SAVE_SELECTED, - SLG_LOAD_SELECTED, - SLG_SAVE_GAME_OK, //5 - SLG_SAVE_GAME_ERROR, - SLG_LOAD_GAME_OK, - SLG_LOAD_GAME_ERROR, - SLG_GAME_VERSION_DIF, - SLG_DELETE_ALL_SAVE_GAMES, //10 - SLG_SAVED_GAME_VERSION_DIF, - SLG_BOTH_GAME_AND_SAVED_GAME_DIF, - SLG_CONFIRM_SAVE, - SLG_CONFIRM_LOAD, - SLG_NOT_ENOUGH_HARD_DRIVE_SPACE, //15 - SLG_SAVING_GAME_MESSAGE, - SLG_NORMAL_GUNS, - SLG_ADDITIONAL_GUNS, - SLG_REALISTIC, - SLG_SCIFI, //20 - - SLG_DIFF, - SLG_PLATINUM, - - SLG_BR_QUALITY_TEXT, - SLG_BR_GOOD_TEXT, - SLG_BR_GREAT_TEXT, - SLG_BR_EXCELLENT_TEXT, - SLG_BR_AWESOME_TEXT, - - SLG_INV_RES_ERROR, - SLG_INV_CUSTUM_ERROR, - - SLG_SQUAD_SIZE_RES_ERROR, - - SLG_BR_QUANTITY_TEXT, - - TEXT_NUM_SLG_TEXT, -}; -extern STR16 zSaveLoadText[]; - - - -//OptionScreen.h -// defines used for the zOptionsText -enum -{ - OPT_SAVE_GAME, - OPT_LOAD_GAME, - OPT_MAIN_MENU, - OPT_NEXT, - OPT_PREV, - OPT_DONE, - OPT_113_FEATURES, - OPT_NEW_IN_113, - OPT_OPTIONS, - OPT_SOUND_FX, - OPT_SPEECH, - OPT_MUSIC, - OPT_RETURN_TO_MAIN, - OPT_NEED_AT_LEAST_SPEECH_OR_SUBTITLE_OPTION_ON, - TEXT_NUM_OPT_TEXT, -}; - -extern STR16 zOptionsText[]; - -extern STR16 z113FeaturesScreenText[]; // main UI text -extern STR16 z113FeaturesToggleText[]; // toggle button text -extern STR16 z113FeaturesHelpText[]; // hover text -extern STR16 z113FeaturesPanelText[]; // left panel text - -//used with the gMoneyStatsDesc[] -enum -{ - MONEY_DESC_AMOUNT, - MONEY_DESC_REMAINING, - MONEY_DESC_AMOUNT_2_SPLIT, - MONEY_DESC_TO_SPLIT, - - MONEY_DESC_PLAYERS, - MONEY_DESC_BALANCE, - MONEY_DESC_AMOUNT_2_WITHDRAW, - MONEY_DESC_TO_WITHDRAW, - TEXT_NUM_MONEY_DESC, -}; - - -// used with gzMoneyWithdrawMessageText -enum -{ - MONEY_TEXT_WITHDRAW_MORE_THEN_MAXIMUM, - CONFIRMATION_TO_DEPOSIT_MONEY_TO_ACCOUNT, - TEXT_NUM_MONEY_WITHDRAW -}; - - - -// Game init option screen -enum -{ - GIO_INITIAL_GAME_SETTINGS, - - GIO_GAME_STYLE_TEXT, - GIO_REALISTIC_TEXT, - GIO_SCI_FI_TEXT, - GIO_PLATINUM_TEXT, - - GIO_GUN_OPTIONS_TEXT, - GIO_GUN_NUT_TEXT, - GIO_REDUCED_GUNS_TEXT, - - GIO_DIF_LEVEL_TEXT, - GIO_EASY_TEXT, - GIO_MEDIUM_TEXT, - GIO_HARD_TEXT, - GIO_INSANE_TEXT, - - GIO_START_TEXT, - GIO_CANCEL_TEXT, - - GIO_GAME_SAVE_STYLE_TEXT, - GIO_SAVE_ANYWHERE_TEXT, - GIO_IRON_MAN_TEXT, - GIO_DISABLED_FOR_THE_DEMO_TEXT, - - GIO_BR_QUALITY_TEXT, - GIO_BR_GOOD_TEXT, - GIO_BR_GREAT_TEXT, - GIO_BR_EXCELLENT_TEXT, - GIO_BR_AWESOME_TEXT, - - GIO_INV_TEXT, - GIO_INV_OLD_TEXT, - GIO_INV_NEW_TEXT, - GIO_LOAD_MP_GAME, - GIO_INITIAL_GAME_SETTINGS_MP, - //////////////////////////////////// - // SANDRO - added following - GIO_TRAITS_TEXT, - GIO_TRAITS_OLD_TEXT, - GIO_TRAITS_NEW_TEXT, - GIO_IMP_NUMBER_TITLE_TEXT, - GIO_IMP_NUMBER_1, - GIO_IMP_NUMBER_2, - GIO_IMP_NUMBER_3, - GIO_IMP_NUMBER_4, - GIO_IMP_NUMBER_5, - GIO_IMP_NUMBER_6, - GIO_DROPALL_TITLE_TEXT, - GIO_DROPALL_OFF_TEXT, - GIO_DROPALL_ON_TEXT, - GIO_TERRORISTS_TITLE_TEXT, - GIO_TERRORISTS_RANDOM_TEXT, - GIO_TERRORISTS_ALL_TEXT, - GIO_CACHES_TITLE_TEXT, - GIO_CACHES_RANDOM_TEXT, - GIO_CACHES_ALL_TEXT, - GIO_PROGRESS_TITLE_TEXT, - GIO_PROGRESS_VERY_SLOW_TEXT, - GIO_PROGRESS_SLOW_TEXT, - GIO_PROGRESS_NORMAL_TEXT, - GIO_PROGRESS_FAST_TEXT, - GIO_PROGRESS_VERY_FAST_TEXT, - - // WANNE: New strings for start new game screen (for NAS) - GIO_INV_SETTING_OLD_TEXT, - GIO_INV_SETTING_NEW_TEXT, - GIO_INV_SETTING_NEW_NAS_TEXT, - - // WANNE: Squad size - GIO_SQUAD_SIZE_TITLE_TEXT, - GIO_SQUAD_SIZE_6_TEXT, - GIO_SQUAD_SIZE_8_TEXT, - GIO_SQUAD_SIZE_10_TEXT, - - //GIO_FAST_BR_TITLE_TEXT, - - //Inventory AP Cost - GIO_INVENTORY_AP_TITLE_TEXT, - - GIO_NCTH_TITLE_TEXT, - GIO_IIS_TITLE_TEXT, - GIO_BACKGROUND_TITLE_TEXT, - GIO_FOODSYSTEM_TITLE_TEXT, - GIO_BR_QUANTITY_TEXT, - - // anv: new iron man modes - GIO_ALMOST_IRON_MAN_TEXT, - GIO_EXTREME_IRON_MAN_TEXT, - GIO_ULTIMATE_IRON_MAN_TEXT, - - //////////////////////////////////// - TEXT_NUM_GIO_TEXT -}; -extern STR16 gzGIOScreenText[]; - -// OJW - 20081129 -// Multiplayer Join Screen -enum -{ - MPJ_TITLE_TEXT, - MPJ_JOIN_TEXT, - MPJ_HOST_TEXT, - MPJ_CANCEL_TEXT, - MPJ_REFRESH_TEXT, - MPJ_HANDLE_TEXT, - MPJ_SERVERIP_TEXT, - MPJ_SERVERPORT_TEXT, - MPJ_SERVERNAME_TEXT, - MPJ_NUMPLAYERS_TEXT, - MPJ_SERVERVER_TEXT, - MPJ_GAMETYPE_TEXT, - MPJ_PING_TEXT, - MPJ_HANDLE_INVALID, - MPJ_SERVERIP_INVALID, - MPJ_SERVERPORT_INVALID, - TEXT_NUM_MPJ_TEXT -}; - -extern STR16 gzMPJHelpText[]; - -extern STR16 gzMPJScreenText[]; -//Multiplayer Host Screen -enum -{ - MPH_TITLE_TEXT, - MPH_START_TEXT, - MPH_CANCEL_TEXT, - MPH_SERVERNAME_TEXT, - MPH_GAMETYPE_TEXT, - MPH_DEATHMATCH_TEXT, - MPH_TEAMDM_TEXT, - MPH_COOP_TEXT, - MPH_NUMPLAYERS_TEXT, - MPH_SQUADSIZE_TEXT, - MPH_MERCSELECT_TEXT, - MPH_RANDOMMERCS_TEXT, - MPH_PLAYERMERCS_TEXT, - MPH_BALANCE_TEXT, - MPH_SAMEMERC_TEXT, - MPH_RPTMERC_TEXT, - MPH_BOBBYRAY_TEXT, - MPH_RNDMSTART_TEXT, - MPH_SERVERNAME_INVALID, - MPH_MAXPLAYERS_INVALID, - MPH_SQUADSIZE_INVALID, - MPH_TIME_TEXT, - MPH_TIME_INVALID, - MPH_CASH_INVALID, - MPH_DMG_TEXT, - MPH_DMG_INVALID, - MPH_TIMER_TEXT, - MPH_TIMER_INVALID, - MPH_ENABLECIV_TEXT, - MPH_USENIV_TEXT, - MPH_OVERRIDEMAXAI_TEXT, - MPH_SYNC_GAME_DIRECTORY, - MPH_FILE_TRANSFER_DIR_TEXT, - MPH_FILE_TRANSFER_DIR_INVALID, - MPH_FILE_TRANSFER_DIR_TEXT_ADDITIONAL, - MPH_FILE_TRANSFER_DIR_NOT_EXIST, - MPH_1, - MPH_2, - MPH_3, - MPH_4, - MPH_5, - MPH_6, - MPH_YES, - MPH_NO, - MPH_MORNING, - MPH_AFTERNOON, - MPH_NIGHT, - MPH_CASH_LOW, - MPH_CASH_MEDIUM, - MPH_CASH_HIGH, - MPH_CASH_UNLIMITED, - MPH_TIME_NEVER, - MPH_TIME_SLOW, - MPH_TIME_MEDIUM, - MPH_TIME_FAST, - MPH_DAMAGE_VERYLOW, - MPH_DAMAGE_LOW, - MPH_DAMAGE_NORMAL, - MPH_HIRE_RANDOM, - MPH_HIRE_NORMAL, - MPH_EDGE_RANDOM, - MPH_EDGE_SELECTABLE, - MPH_DISABLE, - MPH_ALLOW, - TEXT_NUM_MPH_TEXT, -}; -extern STR16 gzMPHScreenText[]; -enum -{ - MPS_TITLE_TEXT, - MPS_CONTINUE_TEXT, - MPS_CANCEL_TEXT, - MPS_PLAYER_TEXT, - MPS_KILLS_TEXT, - MPS_DEATHS_TEXT, - MPS_AITEAM_TEXT, - MPS_HITS_TEXT, - MPS_MISSES_TEXT, - MPS_ACCURACY_TEXT, - MPS_DMGDONE_TEXT, - MPS_DMGTAKEN_TEXT, - MPS_WAITSERVER_TEXT, - TEXT_NUM_MPS_TEXT, -}; -extern STR16 gzMPSScreenText[]; -enum -{ - MPC_CANCEL_TEXT, - MPC_CONNECTING_TEXT, - MPC_GETSETTINGS_TEXT, - MPC_DOWNLOADING_TEXT, - MPC_HELP1_TEXT, - MPC_HELP2_TEXT, - MPC_READY_TEXT, - TEXT_NUM_MPC_TEXT, -}; -extern STR16 gzMPCScreenText[]; -// Multiplayer Starting Edges -enum -{ - MP_EDGE_NORTH, - MP_EDGE_EAST, - MP_EDGE_SOUTH, - MP_EDGE_WEST, - MP_EDGE_CENTER, - MAX_EDGES, -}; -extern STR16 gszMPEdgesText[]; -// MP TEAM NAMES -enum -{ - MP_TEAM_1, - MP_TEAM_2, - MP_TEAM_3, - MP_TEAM_4, - MAX_MP_TEAMS, -}; -extern STR16 gszMPTeamNames[]; - -extern STR16 gzMPChatToggleText[]; - -extern STR16 gzMPChatboxText[]; - -enum -{ - LAPTOP_BN_HLP_TXT_VIEW_EMAIL, - LAPTOP_BN_HLP_TXT_BROWSE_VARIOUS_WEB_SITES, - LAPTOP_BN_HLP_TXT_VIEW_FILES_AND_EMAIL_ATTACHMENTS, - LAPTOP_BN_HLP_TXT_READ_LOG_OF_EVENTS, - LAPTOP_BN_HLP_TXT_VIEW_TEAM_INFO, - LAPTOP_BN_HLP_TXT_VIEW_FINANCIAL_SUMMARY_AND_HISTORY, - LAPTOP_BN_HLP_TXT_CLOSE_LAPTOP, - - LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_MAIL, - LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_FILE, - - - BOOKMARK_TEXT_ASSOCIATION_OF_INTERNATION_MERCENARIES, - BOOKMARK_TEXT_BOBBY_RAY_ONLINE_WEAPON_MAIL_ORDER, - BOOKMARK_TEXT_INSTITUTE_OF_MERCENARY_PROFILING, - BOOKMARK_TEXT_MORE_ECONOMIC_RECRUITING_CENTER, - BOOKMARK_TEXT_MCGILLICUTTY_MORTUARY, - BOOKMARK_TEXT_UNITED_FLORAL_SERVICE, - BOOKMARK_TEXT_INSURANCE_BROKERS_FOR_AIM_CONTRACTS, - TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT -}; - - -//enums for the help screen -enum -{ - HLP_SCRN_TXT__EXIT_SCREEN, - TEXT_NUM_HLP -}; -extern STR16 gzHelpScreenText[]; - - -extern STR16 gzLaptopHelpText[]; - - -extern STR16 gzMoneyWithdrawMessageText[]; -extern STR16 gzCopyrightText[]; - - - -//enums used for the mapscreen inventory messages -enum -{ - MAPINV_MERC_ISNT_CLOSE_ENOUGH, - MAPINV_CANT_SELECT_MERC, - MAPINV_NOT_IN_SECTOR_TO_TAKE, - MAPINV_CANT_PICKUP_IN_COMBAT, - MAPINV_CANT_DROP_IN_COMBAT, - MAPINV_NOT_IN_SECTOR_TO_DROP, - TEXT_NUM_MAPINV -}; - - -//the laptop broken link site -enum -{ - BROKEN_LINK_TXT_ERROR_404, - BROKEN_LINK_TXT_SITE_NOT_FOUND, - TEXT_NUM_BROKEN_LINK, -}; -extern STR16 BrokenLinkText[]; - -//Bobby rays page for recent shipments -enum -{ - BOBBYR_SHIPMENT__TITLE, - BOBBYR_SHIPMENT__ORDER_NUM, - BOBBYR_SHIPMENT__NUM_ITEMS, - BOBBYR_SHIPMENT__ORDERED_ON, - TEXT_NUM_BOBBYR_SHIPMENT, -}; - -extern STR16 gzBobbyRShipmentText[]; - - -enum -{ - GIO_CFS_NOVICE, - GIO_CFS_EXPERIENCED, - GIO_CFS_EXPERT, - GIO_CFS_INSANE, - TEXT_NUM_GIO_CFS, -}; -extern STR16 zGioDifConfirmText[]; - - -enum -{ - CRDT_CAMFIELD, - CRDT_SHAWN, - CRDT_KRIS, - CRDT_IAN, - CRDT_LINDA, - CRDT_ERIC, - CRDT_LYNN, - CRDT_NORM, - CRDT_GEORGE, - CRDT_STACEY, - CRDT_SCOTT, - CRDT_EMMONS, - CRDT_DAVE, - CRDT_ALEX, - CRDT_JOEY, - - NUM_PEOPLE_IN_CREDITS, -}; - -STR16 gzCreditNames[]; -STR16 gzCreditNameTitle[]; -STR16 gzCreditNameFunny[]; - - -extern STR16 GetWeightUnitString( void ); -FLOAT GetWeightBasedOnMetricOption( UINT32 uiObjectWeight ); - - -//SB: new 1.13 messages -extern STR16 New113Message[]; -extern STR16 New113MERCMercMailTexts[]; -extern STR16 MissingIMPSkillsDescriptions[]; - -extern STR16 New113AIMMercMailTexts[]; // WANNE: new WF Merc text, that does not exist in Email.edt - -// HEADROCK: HAM Messages -extern STR16 New113HAMMessage[]; -enum -{ - MSG113_STORM_STARTED, - MSG113_STORM_ENDED, - MSG113_RAIN_STARTED, - MSG113_RAIN_ENDED, - MSG113_WATHCHOUTFORSNIPERS, - MSG113_SUPPRESSIONFIRE, - MSG113_BRST, - MSG113_AUTO, - MSG113_GL, - MSG113_GL_BRST, - MSG113_GL_AUTO, - MSG113_UB, - MSG113_UB_BRST, - MSG113_UB_AUTO, - MSG113_BAYONET, - MSG113_SNIPER, - MSG113_UNABLETOSPLITMONEY, - MSG113_ARRIVINGREROUTED, - MSG113_DELETED, - MSG113_DELETE_ALL, - MSG113_SOLD, - MSG113_SOLD_ALL, - MSG113_CHECK_GOGGLES, - MSG113_RTM_IN_COMBAT_ALREADY, - MSG113_RTM_NO_ENEMIES, - MSG113_RTM_SNEAKING_OFF, - MSG113_RTM_SNEAKING_ON, - MSG113_RTM_ENEMIES_SPOOTED, - // added by SANDRO - MSG113_THIEF_SUCCESSFUL, - MSG113_NOT_ENOUGH_APS_TO_STEAL_ALL, - MSG113_DO_WE_WANT_SURGERY_FIRST, - MSG113_DO_WE_WANT_SURGERY, - MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT, - MSG113_SURGERY_BEFORE_PATIENT_ASSIGNMENT, - MSG113_SURGERY_ON_TACTICAL_AUTOBANDAGE, - MSG113_DO_WE_WANT_SURGERY_FIRST_BLOODBAG, - MSG113_DO_WE_WANT_SURGERY_BLOODBAG, - MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT_BLOODBAG, - MSG113_SURGERY_FINISHED, - MSG113_LOSES_ONE_POINT_MAX_HEALTH, - MSG113_LOSES_X_POINTS_MAX_HEALTH, - MSG113_BLINDED_BY_BLAST, - MSG113_REGAINED_ONE_POINTS_OF_STAT, - MSG113_REGAINED_X_POINTS_OF_STATS, - MSG113_ENEMY_AMBUSH_PREVENTED, - MSG113_BLOODCATS_AMBUSH_PREVENTED, - MSG113_SOLDIER_HIT_TO_GROIN, - MSG113_ENEMY_FOUND_DEAD_BODY, - MSG113_AMMO_SPEC_STRING, - MSG113_INVENTORY_APS_INSUFFICIENT, - MSG113_HINT_TEXT, - MSG113_SURRENDER_VALUES, - - MSG113_CANNOT_USE_SKILL, - MSG113_CANNOT_BUILD, - MSG113_CANNOT_SPOT_LOCATION, - MSG113_INCORRECT_GRIDNO_ARTILLERY, - MSG113_RADIO_JAMMED_NO_COMMUNICATION, - MSG113_RADIO_ACTION_FAILED, - MSG113_NOT_ENOUGH_MORTAR_SHELLS, - MSG113_NO_SIGNAL_SHELL, - MSG113_NO_DEFAULT_SHELL, - MSG113_NO_MORTARS, - MSG113_ALREADY_JAMMING, - MSG113_ALREADY_LISTENING, - MSG113_ALREADY_SPOTTING, - MSG113_ALREADY_SCANNING, - MSG113_COULD_NOT_APPLY, - MSG113_ORDERS_REINFORCEMENTS, - MSG113_RADIO_NO_ENERGY, - MSG113_WORKING_RADIO_SET, - MSG113_BINOCULAR, - MSG113_PATIENCE, - MSG113_SHIELD_DESTROYED, - MSG113_FIREMODE_GL_DELAYED, - MSG113_BLOODBAGOPTIONS_YESSTAR, - MSG113_BLOODBAGOPTIONS_YES, - MSG113_BLOODBAGOPTIONS_NO, - MSG113_X_APPLY_Y_TO_Z, - - TEXT_NUM_MSG113, -}; - -extern STR16 gzTransformationMessage[]; - -//CHRISL: NewInv messages -extern STR16 NewInvMessage[]; - -// WANNE - MP: New multiplayer messages -extern STR16 MPServerMessage[]; -extern STR16 MPClientMessage[]; - -// WANNE: Some Chinese specific strings that needs to be in unicode! -inline constexpr STR16 ChineseSpecString1 = L"%%"; //defined in _ChineseText.cpp as this file is already unicode -inline constexpr STR16 ChineseSpecString2 = L"*%3d%%%%"; //defined in _ChineseText.cpp as this file is already unicode -inline constexpr STR16 ChineseSpecString3 = L"%d%%"; //defined in _ChineseText.cpp as this file is already unicode -inline constexpr STR16 ChineseSpecString4 = L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s"; -inline constexpr STR16 ChineseSpecString5 = L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s"; -inline constexpr STR16 ChineseSpecString6 = L"%s [%d%%]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s"; -inline constexpr STR16 ChineseSpecString7 = L"%s [%d%%]\n%s %1.1f %s"; -inline constexpr STR16 ChineseSpecString8 = L"%s (%s) [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s\n%s %.2f%%"; // added by Flugente -inline constexpr STR16 ChineseSpecString9 = L"%s [%d%%(%d%%)]\n%s %d\n%s %d\n%s %1.1f %s"; // added by Flugente -inline constexpr STR16 ChineseSpecString10 = L"%s [%d%%(%d%%)]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s"; // added by Flugente -inline constexpr STR16 ChineseSpecString11 = L"%s (%s) [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s"; // added by Flugente -inline constexpr STR16 ChineseSpecString12 = L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s\n%s %.2f%%"; // added by Flugente - -enum -{ - NIV_CAN_NOT_PICKUP, - NIV_NO_DROP, - NIV_NO_PACK, - NIV_ZIPPER_COMBAT, - NIV_ZIPPER_NO_MOVE, - NIV_SELL_ALL, - NIV_DELETE_ALL, - NIV_NO_CLIMB, - NIV_ALL_DROP, - NIV_ALL_PICKUP, - NIV_SOLDIER_DROP, - NIV_SOLDIER_PICKUP, - TEXT_NUM_NIV, -}; - -// OJW - MP -extern STR16 gszMPMapscreenText[]; - -//SB -enum -{ - ADDTEXT_16BPP_REQUIRED, - ADDTEXT_DIFFRES_REQUIRED, - ADDTEXT_WRONG_TEAM_SIZE, - ERROR_MAX_MERCSVEHICLES, - ERROR_MAX_ENEMIES, - ERROR_MAX_CREATURES, - ERROR_MAX_MILITIA, - ERROR_MAX_CIVILIANS, -}; -extern STR16 Additional113Text[]; -extern STR16 ranks[]; -//extern STR16 ranks[]; - -enum -{ - POCKET_POPUP_GRENADE_LAUNCHERS, - POCKET_POPUP_ROCKET_LAUNCHERS, - POCKET_POPUP_MEELE_AND_THROWN, - POCKET_POPUP_NO_AMMO, - POCKET_POPUP_NO_GUNS, - POCKET_POPUP_MOAR -}; -extern STR16 gszPocketPopupText[]; - -// rftr: better LBE tooltips -extern STR16 gLbeStatsDesc[14]; - -// Flugente: backgrounds -extern STR16 szBackgroundText_Flags[]; -extern STR16 szBackgroundText_Value[]; -extern STR16 szSoldierClassName[]; - -// Flugente: personality -enum -{ - PERSONALITYTEXT_YOULOOK, - PERSONALITYTEXT_ANDAPPEARANCEIS, - PERSONALITYTEXT_IMPORTANTTOYOU, - PERSONALITYTEXT_YOUHAVE, - PERSONALITYTEXT_ANDCARE, - PERSONALITYTEXT_ABOUTTHAT, - PERSONALITYTEXT_YOUARE, - PERSONALITYTEXT_ADHATEEVERYONE, - PERSONALITYTEXT_DOT, - PERSONALITYTEXT_RACISTAGAINSTNON, - PERSONALITYTEXT_PEOPLE, - PERSONALITYTEXT_MAX, -}; - -extern STR16 szBackgroundTitleText[]; -extern STR16 szPersonalityTitleText[]; -extern STR16 szPersonalityDisplayText[]; -extern STR16 szPersonalityHelpText[]; -extern STR16 szRaceText[]; -extern STR16 szAppearanceText[]; -extern STR16 szRefinementText[]; -extern STR16 szRefinementTextTypes[]; -extern STR16 szNationalityText[]; -extern STR16 szNationalityTextAdjective[]; -extern STR16 szNationalityText_Special[]; -extern STR16 szCareLevelText[]; -extern STR16 szRacistText[]; -extern STR16 szSexistText[]; - -enum -{ - TEXT_SKILL_DENIAL_REQ, - TEXT_SKILL_DENIAL_X_AP, - TEXT_SKILL_DENIAL_X_TXT, - TEXT_SKILL_DENIAL_X_TXT_ORHIGHER, - TEXT_SKILL_DENIAL_X_TXT_ORHIGHER_OR, - TEXT_SKILL_DENIAL_X_MINUTES, - TEXT_SKILL_DENIAL_NOMORTAR, - TEXT_SKILL_DENIAL_ITSCOMPLICATED, - TEXT_SKILL_DENIAL_NODEMON, - TEXT_SKILL_DENIAL_GUNTRAIT, - TEXT_SKILL_DENIAL_AIMEDGUN, - TEXT_SKILL_DENIAL_PRONEPERSONORCORPSE, - TEXT_SKILL_DENIAL_CROUCH, - TEXT_SKILL_DENIAL_FREEHANDS, - TEXT_SKILL_DENIAL_COVERTTRAIT, - TEXT_SKILL_DENIAL_ENEMYSECTOR, - TEXT_SKILL_DENIAL_SINGLEMERC, - TEXT_SKILL_DENIAL_NOALARM, - TEXT_SKILL_DENIAL_DISGUISE_CIV_OR_MIL, - TEXT_SKILL_DENIAL_NOT_DURING_INTERRUPT, - TEXT_SKILL_DENIAL_TURNED_ENEMY, - TEXT_SKILL_DENIAL_ENEMY, - TEXT_SKILL_DENIAL_SURFACELEVEL, - TEXT_SKILL_DENIAL_STRATEGIC_SUSPICION, - TEXT_SKILL_DENIAL_NOT_DISGUISED, - TEXT_SKILL_DENIAL_NOT_IN_COMBAT, - TEXT_SKILL_DENIAL_FRIENDLY_SECTOR, - - TEXT_SKILL_DENIAL_MAX, -}; - -// Flugente: campaign history website -enum -{ - TEXT_CAMPAIGNHISTORY_NAME_PRESSORGANISATION, - TEXT_CAMPAIGNHISTORY_NAME_MINISTRY, - TEXT_CAMPAIGNHISTORY_NAME_REBEL, - TEXT_CAMPAIGNHISTORY_NAME_NEUTRAL_1, - TEXT_CAMPAIGNHISTORY_NAME_NEUTRAL_2, - TEXT_CAMPAIGNHISTORY_NAME_RIS, - - TEXT_CAMPAIGNHISTORY_NAME_PRESSORGANISATION_SUBTITLE, - TEXT_CAMPAIGNHISTORY_DESCRIPTION_1, - //TEXT_CAMPAIGNHISTORY_DESCRIPTION_2, - //TEXT_CAMPAIGNHISTORY_DESCRIPTION_3, - - TEXT_CAMPAIGNHISTORY_LINK_CONFLICTSUMMARY, - TEXT_CAMPAIGNHISTORY_LINK_NEWS_MOSTIMPORTANT, - TEXT_CAMPAIGNHISTORY_LINK_NEWS_RECENT, - TEXT_CAMPAIGNHISTORY_LINK_HOME, - - TEXT_CAMPAIGNHISTORY_MAX, -}; - -extern STR16 szCampaignHistoryWebSite[]; - -enum -{ - TEXT_CAMPAIGNHISTORY_DETAIL_SETTING, - TEXT_CAMPAIGNHISTORY_DETAIL_REBELFORCES, - TEXT_CAMPAIGNHISTORY_DETAIL_ARMY, - - TEXT_CAMPAIGNHISTORY_DETAIL_ATTACKED, - TEXT_CAMPAIGNHISTORY_DETAIL_AMBUSHED, - TEXT_CAMPAIGNHISTORY_DETAIL_AIRDROPPED, - - TEXT_CAMPAIGNHISTORY_DETAIL_ATTACKERDIR, - TEXT_CAMPAIGNHISTORY_DETAIL_DEFENDERDIR, - TEXT_CAMPAIGNHISTORY_DETAIL_ATTACKERANDDEFENDERDIR, - TEXT_CAMPAIGNHISTORY_DETAIL_NORTH, - TEXT_CAMPAIGNHISTORY_DETAIL_EAST, - TEXT_CAMPAIGNHISTORY_DETAIL_SOUTH, - TEXT_CAMPAIGNHISTORY_DETAIL_WEST, - TEXT_CAMPAIGNHISTORY_DETAIL_AND, // " and " text - TEXT_CAMPAIGNHISTORY_DETAIL_UNKNOWNLOCATION, - - TEXT_CAMPAIGNHISTORY_DETAIL_BUILDINGDAMAGE, - TEXT_CAMPAIGNHISTORY_DETAIL_BUILDINGANDCIVDAMAGE, - TEXT_CAMPAIGNHISTORY_DETAIL_REINFORCE_BOTH, - TEXT_CAMPAIGNHISTORY_DETAIL_REINFORCE, - TEXT_CAMPAIGNHISTORY_DETAIL_CHEMICAL_BOTH, - TEXT_CAMPAIGNHISTORY_DETAIL_CHEMICAL, - TEXT_CAMPAIGNHISTORY_DETAIL_TANKS_BOTH, - TEXT_CAMPAIGNHISTORY_DETAIL_TANKS, - TEXT_CAMPAIGNHISTORY_DETAIL_SNIPERS_BOTH, - TEXT_CAMPAIGNHISTORY_DETAIL_SNIPERS, - TEXT_CAMPAIGNHISTORY_DETAIL_SAMSITESABOTAGED, - TEXT_CAMPAIGNHISTORY_DETAIL_SPY_ENEMY, - TEXT_CAMPAIGNHISTORY_DETAIL_SPY_PLAYER, - - TEXT_CAMPAIGNHISTORY_DETAIL_MAX, -}; - -extern STR16 szCampaignHistoryDetail[]; - -enum -{ - TEXT_CAMPAIGNHISTORY_TIME_DEEPNIGHT, - TEXT_CAMPAIGNHISTORY_TIME_DAWN, - TEXT_CAMPAIGNHISTORY_TIME_EARLYMORNING, - TEXT_CAMPAIGNHISTORY_TIME_MORNING, - TEXT_CAMPAIGNHISTORY_TIME_NOON, - TEXT_CAMPAIGNHISTORY_TIME_AFTERNOON, - TEXT_CAMPAIGNHISTORY_TIME_EVENING, - TEXT_CAMPAIGNHISTORY_TIME_NIGHT, -}; - -extern STR16 szCampaignHistoryTimeString[]; - -extern STR16 szCampaignHistoryMoneyTypeString[]; -extern STR16 szCampaignHistoryConsumptionTypeString[]; - -enum -{ - TEXT_CAMPAIGNHISTORY_RESULT_ONESIDED_REBEL, - TEXT_CAMPAIGNHISTORY_RESULT_EASY_REBEL, - TEXT_CAMPAIGNHISTORY_RESULT_EASY_REBEL_PRISONER, - TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_REBEL, - TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_REBEL_PRISONER, - TEXT_CAMPAIGNHISTORY_RESULT_HARD_REBEL, - - TEXT_CAMPAIGNHISTORY_RESULT_ONESIDED_ARMY_NUMBERS, - TEXT_CAMPAIGNHISTORY_RESULT_ONESIDED_ARMY_TRAINING, - TEXT_CAMPAIGNHISTORY_RESULT_EASY_ARMY_NUMBERS, - TEXT_CAMPAIGNHISTORY_RESULT_EASY_ARMY_TRAINING, - TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_ARMY_NUMBERS, - TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_ARMY_TRAINING, - TEXT_CAMPAIGNHISTORY_RESULT_HARD_ARMY, -}; - -extern STR16 szCampaignHistoryResultString[]; - -enum -{ - TEXT_CAMPAIGNHISTORY_IMPORTANCE_IRRELEVANT, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_INSIGNIFICANT, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_NOTABLE, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_NOTEWORTHY, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_SIGNIFICANT, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_INTERESTING, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_IMPORTANT, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_VERYIMPORTANT, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_GRAVE, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_MAJOR, - TEXT_CAMPAIGNHISTORY_IMPORTANCE_MOMENTOUS, -}; - -extern STR16 szCampaignHistoryImportanceString[]; - -enum -{ - WEBPAGE_CAMPAIGNHISTORY_KILLED, - WEBPAGE_CAMPAIGNHISTORY_WOUNDED, - WEBPAGE_CAMPAIGNHISTORY_PRISONERS, - WEBPAGE_CAMPAIGNHISTORY_SHOTSFIRED, - - WEBPAGE_CAMPAIGNHISTORY_MONEYEARNED, - WEBPAGE_CAMPAIGNHISTORY_CONSUMPTION, - WEBPAGE_CAMPAIGNHISTORY_LOSSES, - WEBPAGE_CAMPAIGNHISTORY_PARTICIPANTS, - - WEBPAGE_CAMPAIGNHISTORY_PROMOTIONS, - WEBPAGE_CAMPAIGNHISTORY_SUMMARY, - WEBPAGE_CAMPAIGNHISTORY_DETAIL, - WEBPAGE_CAMPAIGNHISTORY_PREVIOUS, - - WEBPAGE_CAMPAIGNHISTORY_NEXT, - WEBPAGE_CAMPAIGNHISTORY_INCIDENT, - WEBPAGE_CAMPAIGNHISTORY_DAY, -}; - -extern STR16 szCampaignHistoryWebpageString[]; - -// Flugente: wacky operation names for campaign stats -#define CAMPAIGNSTATS_OPERATION_NUM_PREFIX 140 -#define CAMPAIGNSTATS_OPERATION_NUM_SUFFIX 140 - -extern STR16 szCampaignStatsOperationPrefix[]; -extern STR16 szCampaignStatsOperationSuffix[]; - - -// Flugente: merc compare website -#define TEXT_MERCCOMPARE_CUSTOMERSTATEMENTS 7 // number of customer quotes, each with an additional short character name - -enum -{ - // main page - TEXT_MERCCOMPARE_WEBSITENAME, - TEXT_MERCCOMPARE_SLOGAN, - - // links to other pages - TEXT_MERCCOMPARE_SUBSITE1, - - TEXT_MERCCOMPARE_INTRO1 = TEXT_MERCCOMPARE_SUBSITE1 + 5, - TEXT_MERCCOMPARE_BULLET1, - TEXT_MERCCOMPARE_BULLET2, - TEXT_MERCCOMPARE_BULLET3, - TEXT_MERCCOMPARE_BULLET4, - TEXT_MERCCOMPARE_INTRO2, - - // customer quotes - TEXT_MERCCOMPARE_QUOTEINTRO, - TEXT_MERCCOMPARE_QUOTE1, - TEXT_MERCCOMPARE_QUOTE1NAME, - - // analyze - TEXT_MERCCOMPARE_DROPDOWNTEXT = TEXT_MERCCOMPARE_QUOTE1 + 2 * TEXT_MERCCOMPARE_CUSTOMERSTATEMENTS, - TEXT_MERCCOMPARE_DROPDOWNTEXT_MATRIX, - - // error messages - TEXT_MERCCOMPARE_ERROR_NOBODYTHERE, - - TEXT_MERCCOMPARE_MAX, -}; - -extern STR16 szMercCompareWebSite[]; -extern STR16 szMercCompareEventText[]; - -// Flugente: WHO website -enum -{ - // main page - TEXT_WHO_WEBSITENAME, - TEXT_WHO_SLOGAN, - - // links to other pages - TEXT_WHO_SUBSITE1, - - TEXT_WHO_MAIN1 = TEXT_WHO_SUBSITE1 + 3, - - TEXT_WHO_CONTRACT1 = TEXT_WHO_MAIN1 + 3, - TEXT_WHO_CONTRACT_ACQUIRED_NOT = TEXT_WHO_CONTRACT1 + 4, - TEXT_WHO_CONTRACT_ACQUIRED, - TEXT_WHO_CONTRACT_BUTTON_SUBSCRIBE, - TEXT_WHO_CONTRACT_BUTTON_UNSUBSCRIBE, - - TEXT_WHO_TIPS1, - - TEXT_WHO_MAX = TEXT_WHO_TIPS1 + 8, -}; - -extern STR16 szWHOWebSite[]; - -// Flugente: PMC website -enum -{ - // main page - TEXT_PMC_WEBSITENAME, - TEXT_PMC_SLOGAN, - - // links to other pages - TEXT_PMC_SUBSITE1, - - TEXT_PMC_MAIN1 = TEXT_PMC_SUBSITE1 + 3, - - // team contracts - TEXT_PMC_CONTRACT_TEAM_INTRO = TEXT_PMC_MAIN1 + 7, - TEXT_PMC_CONTRACT_DROPDOWNTEXT, - TEXT_PMC_REGULAR, - TEXT_PMC_VETERAN, - - TEXT_PMC_DETAIL, - - TEXT_PMC_SELECTAREA = TEXT_PMC_DETAIL + 3, - TEXT_PMC_TOTALCOST, - TEXT_PMC_ETA, - TEXT_PMC_CONTRACTBUTTON, - - TEXT_PMC_CONFIRMATION, - TEXT_PMC_ARRIVAL, - TEXT_PMC_NEXTDEPLOYMENT, - TEXT_PMC_NODROPOFF, - - TEXT_PMC_MAX, -}; - -extern STR16 szPMCWebSite[]; - -extern STR16 szTacticalInventoryDialogString[]; -extern STR16 szTacticalCoverDialogString[]; -extern STR16 szTacticalCoverDialogPrintString[]; - -// OPINIONEVENT_MAX is 39 -// DOST_MAX is 17 - -extern STR16 szDynamicDialogueText[40][17]; - -// Flugente: dynamic dialogue -extern STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[]; -extern STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[]; -extern STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[]; -extern STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[]; - -extern STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[]; -extern STR16 szDynamicDialogueText_GenderText[]; - -// Flugente: disease -enum -{ - // effect description - TEXT_DISEASE_EFFSTAT_AGI, - TEXT_DISEASE_EFFSTAT_DEX, - TEXT_DISEASE_EFFSTAT_STR, - TEXT_DISEASE_EFFSTAT_WIS, - TEXT_DISEASE_EFFSTAT_EXP, - - TEXT_DISEASE_AP, - TEXT_DISEASE_MAXBREATH, - TEXT_DISEASE_CARRYSTRENGTH, - TEXT_DISEASE_LIFEREGENHUNDREDS, - TEXT_DISEASE_NEEDTOSLEEP, - TEXT_DISEASE_DRINK, - TEXT_DISEASE_FOOD, - - // text when diagnosed - TEXT_DISEASE_DIAGNOSE_GENERAL, - TEXT_DISEASE_CURED, - - // menu entries - TEXT_DISEASE_DIAGNOSIS, - TEXT_DISEASE_TREATMENT, - TEXT_DISEASE_BURIAL, - TEXT_DISEASE_CANCEL, - - // (undiagnosed) - TEXT_DISEASE_UNDIAGNOSED, - - TEXT_DISEASE_PTSD_BUNS_SPECIAL, - TEXT_DISEASE_CONTAMINATION_FOUND, - TEXT_DISEASE_ADD_DISABILITY, - - TEXT_DISEASE_LIMITED_ARMS, - TEXT_DISEASE_LIMITED_ARMS_SPLINT, - TEXT_DISEASE_LIMITED_LEGS, - TEXT_DISEASE_LIMITED_LEGS_SPLINT, -}; - -enum -{ - TEXT_SPY_CONCEAL, - TEXT_SPY_GETINTEL, -}; - -extern STR16 szDiseaseText[]; -extern STR16 szSpyText[]; -extern STR16 szFoodText[]; - -extern STR16 szIMPGearWebSiteText[]; -extern STR16 szIMPGearPocketText[]; - -// Flugente: militia movement -extern STR16 szMilitiaStrategicMovementText[]; - -// Flugente: enemy heli/SAM -extern STR16 szEnemyHeliText[]; - -// Flugente: fortification -extern STR16 szFortificationText[]; - -// Flugente: militia website -enum -{ - // main page - TEXT_MILITIAWEBSITE_WEBSITENAME, - TEXT_MILITIAWEBSITE_SLOGAN, - - // links to other pages - TEXT_MILITIAWEBSITE_SUBSITE1, - - TEXT_MILITIAWEBSITE_MAIN1 = TEXT_MILITIAWEBSITE_SUBSITE1 + 3, - - TEXT_MILITIAWEBSITE_MAX, -}; - -extern STR16 szMilitiaWebSite[]; -extern STR16 szIndividualMilitiaBattleReportText[]; -extern STR16 szIndividualMilitiaTraitRequirements[]; -extern STR16 szIdividualMilitiaWebsiteText[]; -extern STR16 szIdividualMilitiaWebsiteFilterText_Dead[]; -extern STR16 szIdividualMilitiaWebsiteFilterText_Rank[] ; -extern STR16 szIdividualMilitiaWebsiteFilterText_Origin[]; -extern STR16 szIdividualMilitiaWebsiteFilterText_Sector[]; - -// Flugente: non-profile merchants -extern STR16 szNonProfileMerchantText[]; - -// Flugente: externalised weather -extern STR16 szWeatherTypeText[]; - -// Flugente: snakes -extern STR16 szSnakeText[]; - -// Flugente: militia resources -extern STR16 szSMilitiaResourceText[]; - -// Flugente: interactive actions -extern STR16 szInteractiveActionText[]; - -extern STR16 szLaptopStatText[]; -enum -{ - LAPTOP_STAT_TEXT_THREATEN_EFFECTIVENESS, - LAPTOP_STAT_TEXT_LEADERSHIP, - LAPTOP_STAT_TEXT_APPROACH_MODIFIER, - LAPTOP_STAT_TEXT_BACKGROUND_MODIFIER, - LAPTOP_STAT_TEXT_ASSERTIVE, - LAPTOP_STAT_TEXT_MALICIOUS, - LAPTOP_STAT_TEXT_GOOD_GUY, - LAPTOP_STAT_TEXT_REFUSES_TO_ATTACK_NON_HOSTILES, - LAPTOP_STAT_TEXT_FRIENDLY_APPROACH, - LAPTOP_STAT_TEXT_DIRECT_APPROACH, - LAPTOP_STAT_TEXT_THREATEN_APPROACH, - LAPTOP_STAT_TEXT_RECRUIT_APPROACH, - LAPTOP_STAT_TEXT_MERC_REGRESSES, - LAPTOP_STAT_TEXT_FAST, - LAPTOP_STAT_TEXT_AVERAGE, - LAPTOP_STAT_TEXT_SLOW, - LAPTOP_STAT_TEXT_HEALTH_SPEED, - LAPTOP_STAT_TEXT_STRENGTH_SPEED, - LAPTOP_STAT_TEXT_AGILITY_SPEED, - LAPTOP_STAT_TEXT_DEXTERITY_SPEED, - LAPTOP_STAT_TEXT_WISDOM_SPEED, - LAPTOP_STAT_TEXT_MARKSMANSHIP_SPEED, - LAPTOP_STAT_TEXT_EXPLOSIVES_SPEED, - LAPTOP_STAT_TEXT_LEADERSHIP_SPEED, - LAPTOP_STAT_TEXT_MEDICAL_SPEED, - LAPTOP_STAT_TEXT_MECHANICAL_SPEED, - LAPTOP_STAT_TEXT_EXPERIENCE_SPEED, -}; - -// Flugente: gear templates -extern STR16 szGearTemplateText[]; - -// Flugente: intel -enum -{ - // defaults - TEXT_INTEL_TITLE, - TEXT_INTEL_SUBTITLE, - TEXT_INTEL_LINK_1, - TEXT_INTEL_LINK_2, - - TEXT_INTEL_LINK_3, - - // buy info - TEXT_INTEL_BUDGET, - TEXT_INTEL_TEXT_1, - TEXT_INTEL_TEXT_2, - TEXT_INTEL_OFFER_1, - TEXT_INTEL_AIRREGION, - TEXT_INTEL_AIRREGION_BUY1, - TEXT_INTEL_AIRREGION_BUY2, - - TEXT_INTEL_DROPDOWN_HELPTEXT, - TEXT_INTEL_MAPREGION_1, - - // about us - TEXT_INTEL_ABOUTUS_1 = TEXT_INTEL_MAPREGION_1 + 16, - - TEXT_INTEL_ABOUTUS_MAX = TEXT_INTEL_ABOUTUS_1 + 6, - - // sell info - TEXT_INTEL_SELL_1 = TEXT_INTEL_ABOUTUS_MAX, - TEXT_INTEL_SELL_BUTTON_1, - TEXT_INTEL_SELL_BUTTON_2, - TEXT_INTEL_SELL_BUTTON_3, - - TEXT_INTEL_SELL_ALREADYGOT_1, - TEXT_INTEL_SELL_NOTHING_1, -}; - -extern STR16 szIntelWebsiteText[]; - -extern STR16 szIntelText[]; - -extern STR16 szChatTextSpy[]; -extern STR16 szChatTextEnemy[]; - -extern STR16 szMilitiaText[]; - -extern STR16 szFactoryText[]; - -extern STR16 szTurncoatText[]; - -extern STR16 szRebelCommandText[]; -extern STR16 szRebelCommandHelpText[]; -extern STR16 szRebelCommandAdminActionsText[]; -extern STR16 szRebelCommandDirectivesText[]; -extern STR16 szRebelCommandAgentMissionsText[]; - -extern STR16 szRobotText[]; -enum { - ROBOT_TEXT_CANNOT_CHANGE_INSTALLED_WEAPON, - ROBOT_TEXT_CANNOT_ADD_ATTACHMENTS, - ROBOT_TEXT_INSTALLED_WEAPON, - ROBOT_TEXT_SLOT_AMMO, - ROBOT_TEXT_SLOT_TARGETING, - ROBOT_TEXT_SLOT_CHASSIS, - ROBOT_TEXT_SLOT_UTILITY, - ROBOT_TEXT_SLOT_INVENTORY, - ROBOT_TEXT_NO_BONUS, - ROBOT_TEXT_LASER, - ROBOT_TEXT_NIGHT_VISION, - ROBOT_TEXT_CLEANING_KIT, - ROBOT_TEXT_CLEANING_KIT_DEPLETED, - ROBOT_TEXT_METAL_DETECTOR, - ROBOT_TEXT_XRAY, - ROBOT_TEXT_XRAY_ACTIVATED, - ROBOT_TEXT_RADIO, - ROBOT_TEXT_STAT_BONUSES, - ROBOT_TEXT_CAMO, - ROBOT_TEXT_PLATE, - ROBOT_TEXT_PLATE_DESTROYED, - ROBOT_TEXT_SKILL_GRANTED, -}; - -#define TACTICAL_INVENTORY_DIALOG_NUM 16 -#define TACTICAL_COVER_DIALOG_NUM 16 - -// Enumeration support -typedef struct Str8EnumLookupType { - int value; - const STR8 name; -} Str8EnumLookupType; - -typedef struct Str16EnumLookupType { - int value; - const STR16 name; -} Str16EnumLookupType; - -const STR8 EnumToString(int value, const Str8EnumLookupType *table); -const STR16 EnumToString(int value, const Str16EnumLookupType *table); -int StringToEnum(const STR8 value, const Str8EnumLookupType *table); -int StringToEnum(const STR8 value, const Str16EnumLookupType *table); -int StringToEnum(const STR16 value, const Str16EnumLookupType *table); - -void ParseCommandLine(const char *start,char **argv,char *args,int *numargs,int *numchars); -void ParseCommandLine(const wchar_t *start,wchar_t **argv,wchar_t *args,int *numargs,int *numchars); - -#endif - - -//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible -//these are dummy functions. Not all of these may be necessary. They are included for future possible useage -void this_is_the_ChineseText_public_symbol(void); -void this_is_the_DutchText_public_symbol(void); -void this_is_the_EnglishText_public_symbol(void); -void this_is_the_FrenchText_public_symbol(void); -void this_is_the_GermanText_public_symbol(void); -void this_is_the_ItalianText_public_symbol(void); -void this_is_the_PolishText_public_symbol(void); -void this_is_the_RussianText_public_symbol(void); - -void this_is_the_Ja25ChineseText_public_symbol(void); -void this_is_the_Ja25DutchText_public_symbol(void); -void this_is_the_Ja25EnglishText_public_symbol(void); -void this_is_the_Ja25FrenchText_public_symbol(void); -void this_is_the_Ja25GermanText_public_symbol(void); -void this_is_the_Ja25ItalianText_public_symbol(void); -void this_is_the_Ja25PolishText_public_symbol(void); -void this_is_the_Ja25RussianText_public_symbol(void); +#ifndef __TEXT_H +#define __TEXT_H + +#include "Items.h" +#include "types.h" +#include "mapscreen.h" +#include "XML_Language.h" + +#define STRING_LENGTH 255 + +enum +{ + //TCTL_MSG__RANGE_TO_TARGET, + TCTL_MSG__ATTACH_TRANSMITTER_TO_LAPTOP, + TACT_MSG__CANNOT_AFFORD_MERC, + TACT_MSG__AIMMEMBER_FEE_TEXT, + TACT_MSG__AIMMEMBER_ONE_TIME_FEE, + TACT_MSG__FEE, + TACT_MSG__SOMEONE_ELSE_IN_SECTOR, + //TCTL_MSG__GUN_RANGE_AND_CTH, + TCTL_MSG__DISPLAY_COVER, + TCTL_MSG__LOS, + TCTL_MSG__INVALID_DROPOFF_SECTOR, + TCTL_MSG__PLAYER_LOST_SHOULD_RESTART, + TCTL_MSG__JERRY_BREAKIN_LAPTOP_ANTENA, + TCTL_MSG__END_GAME_POPUP_TXT_1, + TCTL_MSG__END_GAME_POPUP_TXT_2, + TCTL_MSG__IRON_MAN_CANT_SAVE_NOW, + TCTL_MSG__CANNOT_SAVE_DURING_COMBAT, + TCTL_MSG__CAMPAIGN_NAME_TOO_LARGE, + TCTL_MSG__CAMPAIGN_DOESN_T_EXIST, + TCTL_MSG__DEFAULT_CAMPAIGN_LABEL, + TCTL_MSG__CAMPAIGN_LABEL, + TCTL_MSG__NEW_CAMPAIGN_CONFIRM, + TCTL_MSG__CANT_EDIT_DEFAULT, + TCTL_MSG__SOFT_IRON_MAN_CANT_SAVE_NOW, + TCTL_MSG__EXTREME_IRON_MAN_CANT_SAVE_NOW, + +}; +//Ja25 UB +//enums used for zNewLaptopMessages +enum +{ + LPTP_MSG__MERC_SPECIAL_OFFER, + LPTP_MSG__TEMP_UNAVAILABLE, + LPTP_MSG__PREVIEW_TEXT, +}; + +extern CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS]; + +//Encyclopedia +extern STR16 pMenuStrings[]; +extern STR16 pLocationPageText[]; +extern STR16 pSectorPageText[]; +extern STR16 pEncyclopediaHelpText[]; +extern STR16 pEncyclopediaTypeText[]; +extern STR16 pEncyclopediaSkrotyText[]; +extern STR16 pEncyclopediaFilterLocationText[]; +extern STR16 pEncyclopediaSubFilterLocationText[]; +extern STR16 pEncyclopediaFilterCharText[]; +extern STR16 pEncyclopediaSubFilterCharText[]; +extern STR16 pEncyclopediaFilterItemText[]; +extern STR16 pEncyclopediaSubFilterItemText[]; +extern STR16 pEncyclopediaFilterQuestText[]; +extern STR16 pEncyclopediaSubFilterQuestText[]; +extern STR16 pEncyclopediaShortCharacterText[]; +extern STR16 pEncyclopediaHelpCharacterText[]; +extern STR16 pEncyclopediaShortInventoryText[]; +extern STR16 BoxFilter[]; +extern STR16 pOtherButtonsText[]; +extern STR16 pOtherButtonsHelpText[]; +extern STR16 QuestDescText[]; +extern STR16 FactDescText[]; + +//Editor +//Editor Taskbar Creation.cpp +extern STR16 iEditorItemStatsButtonsText[]; +extern STR16 FaceDirs[8]; +extern STR16 iEditorMercsToolbarText[]; +extern STR16 iEditorBuildingsToolbarText[]; +extern STR16 iEditorItemsToolbarText[]; +extern STR16 iEditorMapInfoToolbarText[]; +extern STR16 iEditorOptionsToolbarText[]; +extern STR16 iEditorTerrainToolbarText[]; +extern STR16 iEditorTaskbarInternalText[]; +//Editor Taskbar Utils.cpp +extern STR16 iRenderMapEntryPointsAndLightsText[]; +extern STR16 iBuildTriggerNameText[]; +extern STR16 iRenderDoorLockInfoText[]; +extern STR16 iRenderEditorInfoText[]; +//EditorBuildings.cpp +extern STR16 iUpdateBuildingsInfoText[]; +extern STR16 iRenderDoorEditingWindowText[]; +//EditorItems.cpp +extern STR16 pInitEditorItemsInfoText[]; +extern STR16 pDisplayItemStatisticsTex[]; +extern STR16 pUpdateMapInfoText[]; +//EditorMercs.cpp +extern CHAR16 gszScheduleActions[ 11 ][20]; // NUM_SCHEDULE_ACTIONS = 11 +extern STR16 zDiffNames[5]; // NUM_DIFF_LVLS = 5 +extern STR16 EditMercStat[12]; +extern STR16 EditMercOrders[8]; +extern STR16 EditMercAttitudes[6]; +extern STR16 pDisplayEditMercWindowText[]; +extern STR16 pCreateEditMercWindowText[]; +extern STR16 pDisplayBodyTypeInfoText[]; +extern STR16 pUpdateMercsInfoText[]; +extern CHAR16 pRenderMercStringsText[][100]; +extern STR16 pClearCurrentScheduleText[]; +extern STR16 pCopyMercPlacementText[]; +extern STR16 pPasteMercPlacementText[]; +//editscreen.cpp +extern STR16 pEditModeShutdownText[]; +extern STR16 pHandleKeyboardShortcutsText[]; +extern STR16 pPerformSelectedActionText[]; +extern STR16 pWaitForHelpScreenResponseText[]; +extern STR16 pAutoLoadMapText[]; +extern STR16 pShowHighGroundText[]; +//Item Statistics.cpp +//extern CHAR16 gszActionItemDesc[ 34 ][ 30 ]; // NUM_ACTIONITEMS = 34 +extern STR16 pUpdateItemStatsPanelText[]; +extern STR16 pSetupGameTypeFlagsText[]; +extern STR16 pSetupGunGUIText[]; +extern STR16 pSetupArmourGUIText[]; +extern STR16 pSetupExplosivesGUIText[]; +extern STR16 pSetupTriggersGUIText[]; +//Sector Summary.cpp +extern STR16 pCreateSummaryWindowText[]; +extern STR16 pRenderSectorInformationText[]; +extern STR16 pRenderItemDetailsText[]; +extern STR16 pRenderSummaryWindowText[]; +extern STR16 pUpdateSectorSummaryText[]; +extern STR16 pSummaryLoadMapCallbackText[]; +extern STR16 pReportErrorText[]; +extern STR16 pRegenerateSummaryInfoForAllOutdatedMapsText[]; +extern STR16 pSummaryUpdateCallbackText[]; +extern STR16 pApologizeOverrideAndForceUpdateEverythingText[]; +//selectwin.cpp +extern STR16 pDisplaySelectionWindowGraphicalInformationText[]; +extern STR16 pDisplaySelectionWindowButtonText[]; +//Cursor Modes.cpp +extern STR16 wszSelType[6]; +//-- + +extern STR16 gzNewLaptopMessages[]; +extern STR16 zNewTacticalMessages[]; +extern CHAR16 gszAimPages[ 6 ][ 20 ]; +extern CHAR16 zGrod[][500]; +extern STR16 pCreditsJA2113[]; +extern CHAR16 ShortItemNames[MAXITEMS][80]; +extern CHAR16 ItemNames[MAXITEMS][80]; +extern CHAR16 AmmoCaliber[MAXITEMS][20]; +extern CHAR16 BobbyRayAmmoCaliber[MAXITEMS][20]; +extern CHAR16 WeaponType[MAXITEMS][30]; + +extern CHAR16 Message[][STRING_LENGTH]; +extern CHAR16 TeamTurnString[][STRING_LENGTH]; +extern STR16 pMilitiaControlMenuStrings[]; //lal +extern STR16 pTraitSkillsMenuStrings[]; //Flugente +extern STR16 pTraitSkillsMenuDescStrings[]; //Flugente +extern STR16 pTraitSkillsDenialStrings[]; //Flugente + +enum +{ + SKILLMENU_MILITIA, + SKILLMENU_OTHERSQUADS, + SKILLMENU_CANCEL, + SKILLMENU_X_MILITIA, + SKILLMENU_ALL_MILITIA, + SKILLMENU_MORE, + SKILLMENU_CORPSES, +}; + +extern STR16 pSkillMenuStrings[]; //Flugente +//extern STR16 pTalkToAllMenuStrings[]; +extern STR16 pSnitchMenuStrings[]; +extern STR16 pSnitchMenuDescStrings[]; +extern STR16 pSnitchToggleMenuStrings[]; +extern STR16 pSnitchToggleMenuDescStrings[]; +extern STR16 pSnitchSectorMenuStrings[]; +extern STR16 pSnitchSectorMenuDescStrings[]; +extern STR16 pPrisonerMenuStrings[]; +extern STR16 pPrisonerMenuDescStrings[]; +extern STR16 pSnitchPrisonExposedStrings[]; +extern STR16 pSnitchGatheringRumoursResultStrings[]; +extern STR16 pAssignMenuStrings[]; +extern STR16 pTrainingStrings[]; +extern STR16 pTrainingMenuStrings[]; +extern STR16 pAttributeMenuStrings[]; +extern STR16 pVehicleStrings[]; +extern STR16 pShortAttributeStrings[]; +extern STR16 pLongAttributeStrings[]; +extern STR16 pContractStrings[]; +extern STR16 pAssignmentStrings[]; +extern STR16 pConditionStrings[]; +extern CHAR16 pCountryNames[][MAX_TOWN_NAME_LENGHT]; +extern CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT]; // Lesh: look mapscreen.h for definitions +extern STR16 pPersonnelScreenStrings[]; +extern STR16 pPersonnelRecordsHelpTexts[]; // added by SANDRO +extern STR16 pPersonnelTitle[]; +extern STR16 pUpperLeftMapScreenStrings[]; +extern STR16 pTacticalPopupButtonStrings[]; +extern STR16 pSquadMenuStrings[]; +extern STR16 pDoorTrapStrings[]; +extern STR16 pLongAssignmentStrings[]; +extern STR16 pContractExtendStrings[]; +extern STR16 pMapScreenMouseRegionHelpText[]; +extern STR16 pPersonnelAssignmentStrings[]; +extern STR16 pNoiseVolStr[]; +extern STR16 pNoiseTypeStr[]; +extern STR16 pDirectionStr[]; +extern STR16 pRemoveMercStrings[]; +extern STR16 sTimeStrings[]; +extern STR16 pLandTypeStrings[]; +extern STR16 pGuardMenuStrings[]; +extern STR16 pOtherGuardMenuStrings[]; +extern STR16 pInvPanelTitleStrings[]; +extern STR16 pPOWStrings[]; +extern STR16 pMilitiaString[]; +extern STR16 pMilitiaButtonString[]; +extern STR16 pEpcMenuStrings[]; + +extern STR16 pRepairStrings[]; +extern STR16 sPreStatBuildString[]; +extern STR16 sStatGainStrings[]; +extern STR16 pHelicopterEtaStrings[]; +extern STR16 pHelicopterRepairRefuelStrings[]; +extern STR16 sMapLevelString[]; +extern STR16 gsLoyalString[]; +extern STR16 pMapHeliErrorString[]; +extern STR16 gsUndergroundString[]; +extern STR16 gsTimeStrings[]; +extern STR16 sFacilitiesStrings[]; +extern STR16 pMapPopUpInventoryText[]; +extern STR16 pwTownInfoStrings[]; +extern STR16 pwMineStrings[]; +extern STR16 pwMiscSectorStrings[]; +extern STR16 pMapInventoryErrorString[]; +extern STR16 pMapInventoryStrings[]; +extern STR16 pMapScreenFastHelpTextList[]; +extern STR16 pMovementMenuStrings[]; +extern STR16 pUpdateMercStrings[]; +extern STR16 pMapScreenBorderButtonHelpText[]; +extern STR16 pMapScreenInvenButtonHelpText[]; +extern STR16 pMapScreenBottomFastHelp[]; +extern STR16 pMapScreenBottomText[]; +extern STR16 pMercDeadString[]; +extern CHAR16 pSenderNameList[500][128]; +extern STR16 pTraverseStrings[]; +extern STR16 pNewMailStrings[]; +extern STR16 pDeleteMailStrings[]; +extern STR16 pEmailHeaders[]; +extern STR16 pEmailTitleText[]; +extern STR16 pFinanceTitle[]; +extern STR16 pFinanceSummary[]; +extern STR16 pFinanceHeaders[]; +extern STR16 pTransactionText[]; +extern STR16 pTransactionAlternateText[]; +extern STR16 pMoralStrings[]; +extern STR16 pSkyriderText[]; +extern STR16 pMercFellAsleepString[]; +extern STR16 pLeftEquipmentString[]; +extern STR16 pMapScreenStatusStrings[]; +extern STR16 pMapScreenPrevNextCharButtonHelpText[]; +extern STR16 pEtaString[]; +extern STR16 pShortVehicleStrings[]; +extern STR16 pTrashItemText[]; +extern STR16 pMapErrorString[]; +extern STR16 pMapPlotStrings[]; +extern STR16 pMiscMapScreenMouseRegionHelpText[]; +extern STR16 pMercHeLeaveString[]; +extern STR16 pMercSheLeaveString[]; +extern STR16 pImpPopUpStrings[]; +extern STR16 pImpButtonText[]; +extern STR16 pExtraIMPStrings[]; +extern STR16 pFilesTitle[]; +extern STR16 pFilesSenderList[]; +extern STR16 pHistoryLocations[]; +//extern STR16 pHistoryAlternateStrings[]; +//extern STR16 pHistoryStrings[]; // Externalized to "TableData\History.xml" +extern STR16 pHistoryHeaders[]; +extern STR16 pHistoryTitle[]; +extern STR16 pShowBookmarkString[]; +extern STR16 pWebPagesTitles[]; +extern STR16 pWebTitle[ ]; +extern STR16 pPersonnelString[]; +extern STR16 pErrorStrings[]; +extern STR16 pDownloadString[]; +extern STR16 pBookmarkTitle[]; +extern STR16 pBookMarkStrings[]; +extern STR16 pLaptopIcons[]; +extern STR16 sATMText[ ]; +extern STR16 gsAtmStartButtonText[]; +extern STR16 gsAtmSideButtonText[]; +extern STR16 pDownloadString[]; +extern STR16 pPersonnelTeamStatsStrings[]; +extern STR16 pPersonnelCurrentTeamStatsStrings[]; +extern STR16 pPersonelTeamStrings[]; +extern STR16 pPersonnelDepartedStateStrings[]; +extern STR16 pMapHortIndex[]; +extern STR16 pMapVertIndex[]; +extern STR16 pMapDepthIndex[]; +//extern STR16 sCritLocationStrings[]; +//extern STR16 sVehicleHit[ ]; +extern STR16 pLaptopTitles[]; +extern STR16 pDayStrings[]; +extern STR16 pMercContractOverStrings[]; +extern STR16 pMilitiaConfirmStrings[]; +extern STR16 pDeliveryLocationStrings[]; +extern STR16 pSkillAtZeroWarning[]; +extern STR16 pIMPBeginScreenStrings[]; +extern STR16 pIMPFinishButtonText[1]; +extern STR16 pIMPFinishStrings[]; +extern STR16 pIMPVoicesStrings[]; +extern STR16 pDepartedMercPortraitStrings[]; +extern STR16 pPersTitleText[]; +extern STR16 pPausedGameText[]; +extern STR16 zOptionsToggleText[]; +extern STR16 zOptionsScreenHelpText[]; +extern STR16 pDoctorWarningString[]; +extern STR16 pMilitiaButtonsHelpText[]; +extern STR16 pMapScreenJustStartedHelpText[]; +extern STR16 pLandMarkInSectorString[]; +extern STR16 gzMercSkillText[]; +extern STR16 gzMercSkillTextNew[]; // added by SANDRO +extern STR16 gzNonPersistantPBIText[]; +extern STR16 gzMiscString[]; + +extern STR16 wMapScreenSortButtonHelpText[]; +extern STR16 pNewNoiseStr[]; +extern STR16 pTauntUnknownVoice[]; // anv: for enemy taunts +extern STR16 gzLateLocalizedString[]; + +extern STR16 gzCWStrings[]; + +extern STR16 gzTooltipStrings[]; + +// These have been added - SANDRO +extern STR16 pSkillTraitBeginIMPStrings[]; +extern STR16 sgAttributeSelectionText[]; +extern STR16 pCharacterTraitBeginIMPStrings[]; +extern STR16 gzIMPCharacterTraitText[]; +extern STR16 gzIMPAttitudesText[]; +extern STR16 gzIMPColorChoosingText[]; +extern STR16 sColorChoiceExplanationTexts[]; +extern STR16 gzIMPDisabilityTraitText[]; // added by Flugente +extern STR16 gzIMPDisabilityTraitEmailTextDeaf[]; // added by Flugente +extern STR16 gzIMPDisabilityTraitEmailTextShortSighted[]; +extern STR16 gzIMPDisabilityTraitEmailTextHemophiliac[]; // added by Flugente +extern STR16 gzIMPDisabilityTraitEmailTextAfraidOfHeights[]; // added by Flugente +extern STR16 gzIMPDisabilityTraitEmailTextSelfHarm[]; // added by Flugente +extern STR16 sEnemyTauntsFireGun[]; +extern STR16 sEnemyTauntsFireLauncher[]; +extern STR16 sEnemyTauntsThrow[]; +extern STR16 sEnemyTauntsChargeKnife[]; +extern STR16 sEnemyTauntsRunAway[]; +extern STR16 sEnemyTauntsSeekNoise[]; +extern STR16 sEnemyTauntsAlert[]; +extern STR16 sEnemyTauntsGotHit[]; +extern STR16 sEnemyTauntsNoticedMerc[]; +extern STR16 sSpecialCharacters[]; +//**** + +// HEADROCK HAM 3.6: New arrays for facility operation messages +extern STR16 gzFacilityErrorMessage[]; +extern STR16 gzFacilityAssignmentStrings[]; +extern STR16 gzFacilityRiskResultStrings[]; + +// HEADROCK HAM 4: Text for the new CTH indicator. +extern STR16 gzNCTHlabels[]; + +// HEADROCK HAM 5: Messages for automatic sector inventory sorting. +extern STR16 gzMapInventorySortingMessage[]; +extern STR16 gzMapInventoryFilterOptions[]; + +// MeLoDy (Merc Compare) +extern STR16 gzMercCompare[]; + +enum +{ + ANTIHACKERSTR_EXITGAME, + TEXT_NUM_ANTIHACKERSTR, +}; +extern STR16 pAntiHackerString[]; + +enum +{ + MSG_EXITGAME, + MSG_OK, + MSG_YES, + MSG_NO, + MSG_CANCEL, + MSG_REHIRE, + MSG_LIE, + MSG_NODESC, + MSG_SAVESUCCESS, + MSG_SAVESLOTSUCCESS, + MSG_QUICKSAVE_NAME, + MSG_SAVE_NAME, + MSG_SAVEEXTENSION, + MSG_SAVEDIRECTORY, + MSG_DAY, + MSG_MERCS, + MSG_EMPTYSLOT, + MSG_DEMOWORD, + MSG_DEBUGWORD, + MSG_RELEASEWORD, + MSG_RPM, + MSG_MINUTE_ABBREVIATION, + MSG_METER_ABBREVIATION, + MSG_ROUNDS_ABBREVIATION, + MSG_KILOGRAM_ABBREVIATION, + MSG_POUND_ABBREVIATION, + MSG_HOMEPAGE, + MSG_USDOLLAR_ABBREVIATION, + MSG_LOWERCASE_NA, + MSG_MEANWHILE, + MSG_ARRIVE, + MSG_VERSION, + MSG_EMPTY_QUICK_SAVE_SLOT, + MSG_QUICK_SAVE_RESERVED_FOR_TACTICAL, + MSG_OPENED, + MSG_CLOSED, + MSG_LOWDISKSPACE_WARNING, + MSG_HIRED_MERC, + MSG_MERC_CAUGHT_ITEM, + MSG_MERC_TOOK_DRUG, + MSG_MERC_HAS_NO_MEDSKILL, + MSG_INTEGRITY_WARNING, + MSG_CDROM_SAVE, + MSG_CANT_FIRE_HERE, + MSG_CANT_CHANGE_STANCE, + MSG_DROP, + MSG_THROW, + MSG_PASS, + MSG_ITEM_PASSED_TO_MERC, + MSG_NO_ROOM_TO_PASS_ITEM, + MSG_END_ATTACHMENT_LIST, + MSG_CHEAT_LEVEL_ONE, + MSG_CHEAT_LEVEL_TWO, + MSG_SQUAD_ON_STEALTHMODE, + MSG_SQUAD_OFF_STEALTHMODE, + MSG_MERC_ON_STEALTHMODE, + MSG_MERC_OFF_STEALTHMODE, + MSG_WIREFRAMES_ADDED, + MSG_WIREFRAMES_REMOVED, + MSG_CANT_GO_UP, + MSG_CANT_GO_DOWN, + MSG_ENTERING_LEVEL, + MSG_LEAVING_BASEMENT, + MSG_DASH_S, // the old 's + MSG_TRACKING_MODE_OFF, + MSG_TRACKING_MODE_ON, + MSG_3DCURSOR_OFF, + MSG_3DCURSOR_ON, + MSG_SQUAD_ACTIVE, + MSG_CANT_AFFORD_TO_PAY_NPC_DAILY_SALARY_MSG, + MSG_SKIP, + MSG_EPC_CANT_TRAVERSE, + MSG_CDROM_SAVE_GAME, + MSG_DRANK_SOME, + MSG_PACKAGE_ARRIVES, + MSG_JUST_HIRED_MERC_ARRIVAL_LOCATION_POPUP, + MSG_HISTORY_UPDATED, + MSG_GL_BURST_CURSOR_ON, + MSG_GL_BURST_CURSOR_OFF, + MSG_SOLDIER_TOOLTIPS_ON, // changed by SANDRO + MSG_SOLDIER_TOOLTIPS_OFF, // changed by SANDRO + MSG_GL_LOW_ANGLE, + MSG_GL_HIGH_ANGLE, + MSG_FORCED_TURN_MODE, + MSG_NORMAL_TURN_MODE, + MSG_FTM_EXIT_COMBAT, + MSG_FTM_ENTER_COMBAT, + MSG_END_TURN_AUTO_SAVE, + MSG_MPSAVEDIRECTORY,//88 + MSG_CLIENT, + MSG_NAS_AND_OIV_INCOMPATIBLE, // 90 + + MSG_SAVE_AUTOSAVE_TEXT, // 91 + MSG_SAVE_AUTOSAVE_TEXT_INFO, // 92 + MSG_SAVE_AUTOSAVE_EMPTY_TEXT, // 93 + MSG_SAVE_AUTOSAVE_FILENAME, // 94 + MSG_SAVE_END_TURN_SAVE_TEXT, // 95 + MSG_SAVE_AUTOSAVE_SAVING_TEXT, // 96 + MSG_SAVE_END_TURN_SAVE_SAVING_TEXT, // 97 + MSG_SAVE_AUTOSAVE_ENDTURN_EMPTY_TEXT, //98 + MSG_SAVE_AUTOSAVE_ENDTURN_TEXT_INFO, //99 + MSG_SAVE_QUICKSAVE_SLOT, // 100 + MSG_SAVE_AUTOSAVE_SLOT, // 101 + MSG_SAVE_AUTOSAVE_ENDTURN_SLOT, // 102 + MSG_SAVE_NORMAL_SLOT, // 103 + + MSG_WINDOWED_MODE_LOCK_MOUSE, // 104 + MSG_WINDOWED_MODE_RELEASE_MOUSE, // 105 + MSG_FORMATIONS_ON, // 106 + MSG_FORMATIONS_OFF, // 107 + MSG_MERC_CASTS_LIGHT_ON, + MSG_MERC_CASTS_LIGHT_OFF, + + MSG_SQUAD_ACTIVE_STRING, + MSG_MERC_TOOK_CIGARETTE, + + MSG_PROMPT_CHEATS_ACTIVATE, + MSG_PROMPT_CHEATS_DEACTIVATE, + + TEXT_NUM_MSG, +}; +extern STR16 pMessageStrings[]; + +extern CHAR16 ItemPickupHelpPopup[][40]; + +enum +{ + STR_EMPTY, + STR_LOSES_1_WISDOM, + STR_LOSES_1_DEX, + STR_LOSES_1_STRENGTH, + STR_LOSES_1_AGIL, + STR_LOSES_WISDOM, + STR_LOSES_DEX, + STR_LOSES_STRENGTH, + STR_LOSES_AGIL, + STR_INTERRUPT, + STR_HEARS_NOISE_FROM, + STR_PLAYER_REINFORCEMENTS, + STR_PLAYER_RELOADS, + STR_PLAYER_NOT_ENOUGH_APS, + STR_IS_APPLYING_FIRST_AID, + STR_ARE_APPLYING_FIRST_AID, + STR_RELIABLE, + STR_UNRELIABLE, + STR_EASY_TO_REPAIR, + STR_HARD_TO_REPAIR, + STR_HIGH_DAMAGE, + STR_LOW_DAMAGE, + STR_QUICK_FIRING, + STR_SLOW_FIRING, + STR_LONG_RANGE, + STR_SHORT_RANGE, + STR_LIGHT, + STR_HEAVY, + STR_SMALL, + STR_FAST_BURST, + STR_NO_BURST, + STR_LARGE_AMMO_CAPACITY, + STR_SMALL_AMMO_CAPACITY, + STR_CAMMO_WORN_OFF, + STR_CAMMO_WASHED_OFF, + STR_2ND_CLIP_DEPLETED, + STR_STOLE_SOMETHING, + STR_NOT_BURST_CAPABLE, + STR_ATTACHMENT_ALREADY, + STR_MERGE_ITEMS, + STR_CANT_ATTACH, + STR_NONE, + STR_EJECT_AMMO, + STR_ATTACHMENTS, + STR_CANT_USE_TWO_ITEMS, + STR_ATTACHMENT_HELP, + STR_ATTACHMENT_INVALID_HELP, + STR_SECTOR_NOT_CLEARED, + STR_NEED_TO_GIVE_MONEY, + STR_HEAD_HIT, + STR_ABANDON_FIGHT, + STR_PERMANENT_ATTACHMENT, + STR_ENERGY_BOOST, + STR_SLIPPED_MARBLES, + STR_FAILED_TO_STEAL_SOMETHING, + STR_REPAIRED, + STR_INTERRUPT_FOR, + STR_SURRENDER, + STR_REFUSE_FIRSTAID, + STR_REFUSE_FIRSTAID_FOR_CREATURE, + STR_HOW_TO_USE_SKYRIDDER, + STR_RELOAD_ONLY_ONE_GUN, + STR_BLOODCATS_TURN, + STR_AUTOFIRE, + STR_NO_AUTOFIRE, + STR_ACCURATE, + STR_INACCURATE, + STR_NO_SEMI_AUTO, + STR_NO_MORE_ITEMS_TO_STEAL, + STR_NO_MORE_ITEM_IN_HAND, + + //add new camo text + STR_DESERT_WORN_OFF, + STR_DESERT_WASHED_OFF, + + STR_JUNGLE_WORN_OFF, + STR_JUNGLE_WASHED_OFF, + + STR_URBAN_WORN_OFF, + STR_URBAN_WASHED_OFF, + + STR_SNOW_WORN_OFF, + STR_SNOW_WASHED_OFF, + + STR_CANNOT_ATTACH_SLOT, + STR_CANNOT_ATTACH_ANY_SLOT, + + STR_NO_SPACE_FOR_POCKET, + + STR_REPAIRED_PARTIAL, + STR_REPAIRED_PARTIAL_FOR_OWNER, + + STR_CLEANED, + STR_CLEANED_FOR_OWNER, + + STR_ASSIGNMENT_NOTPOSSIBLE, + STR_ASSIGNMENT_NOMILITIAPRESENT, + + STR_ASSIGNMENT_EXPLORATION_DONE, + + TEXT_NUM_STR_MESSAGE, +}; + +// WANNE: Tooltips +enum +{ + STR_TT_CAT_LOCATION, + STR_TT_CAT_BRIGHTNESS, + STR_TT_CAT_RANGE_TO_TARGET, + STR_TT_CAT_ID, + STR_TT_CAT_ORDERS, + STR_TT_CAT_ATTITUDE, + STR_TT_CAT_CURRENT_APS, + STR_TT_CAT_CURRENT_HEALTH, + STR_TT_CAT_CURRENT_ENERGY, + STR_TT_CAT_CURRENT_MORALE, + STR_TT_CAT_SHOCK, ///< Moa: shows current shock value. Only for debug tooltip. + STR_TT_CAT_SUPPRESION, ///< Moa: shows current supression value. Only for debug tooltip. + STR_TT_CAT_HELMET, + STR_TT_CAT_VEST, + STR_TT_CAT_LEGGINGS, + STR_TT_CAT_ARMOR, + STR_TT_HELMET, + STR_TT_VEST, + STR_TT_LEGGINGS, + STR_TT_WORN, + STR_TT_NO_ARMOR, + STR_TT_CAT_NVG, + STR_TT_NO_NVG, + STR_TT_CAT_GAS_MASK, + STR_TT_NO_MASK, + STR_TT_CAT_HEAD_POS_1, + STR_TT_CAT_HEAD_POS_2, + STR_TT_IN_BACKPACK, + STR_TT_CAT_WEAPON, + STR_TT_NO_WEAPON, + STR_TT_HANDGUN, + STR_TT_SMG, + STR_TT_RIFLE, + STR_TT_MG, + STR_TT_SHOTGUN, + STR_TT_KNIFE, + STR_TT_HEAVY_WEAPON, + STR_TT_NO_HELMET, + STR_TT_NO_VEST, + STR_TT_NO_LEGGING, + STR_TT_CAT_ARMOR_2, + // Following added - SANDRO + STR_TT_SKILL_TRAIT_1, + STR_TT_SKILL_TRAIT_2, + STR_TT_SKILL_TRAIT_3, + // Additional suppression effects info - sevenfm + STR_TT_SUPPRESSION_AP, + STR_TT_SUPPRESSION_TOLERANCE, + STR_TT_EFFECTIVE_SHOCK, + STR_TT_AI_MORALE, + + TEXT_NUM_STR_TT +}; + +enum +{ + STR_HELI_ETA_TOTAL_DISTANCE, + STR_HELI_ETA_SAFE, + STR_HELI_ETA_UNSAFE, + STR_HELI_ETA_TOTAL_COST, + STR_HELI_ETA_ETA, + + STR_HELI_ETA_LOW_ON_FUEL_HOSTILE_TERRITORY, + STR_HELI_ETA_PASSENGERS, + STR_HELI_ETA_SELECT_SKYRIDER_OR_ARRIVALS, + STR_HELI_ETA_SKYRIDER, + STR_HELI_ETA_ARRIVALS, + + STR_HELI_ETA_HELI_DAMAGED_HOSTILE_TERRITORY, + STR_HELI_ETA_KICK_OUT_PASSENGERS_PROMPT, + STR_HELI_ETA_REMAINING_FUEL, + STR_HELI_ETA_DISTANCE_TO_REFUEL_SITE, + + TEXT_NUM_STR_HELI_ETA, +}; + +// anv: helicopter repairs +enum +{ + STR_HELI_RR_REPAIR_PROMPT, + STR_HELI_RR_REPAIR_IN_PROGRESS, + STR_HELI_RR_REPAIR_FINISHED, + STR_HELI_RR_REFUEL_FINISHED, + + STR_HELI_TOOFAR_ERROR, + + TEXT_NUM_STR_HELI_REPAIRS, +}; + +#define LARGE_STRING_LENGTH 200 +#define MED_STRING_LENGTH 80 +#define SMALL_STRING_LENGTH 20 + +extern CHAR16 TacticalStr[][MED_STRING_LENGTH]; +extern CHAR16 LargeTacticalStr[][ LARGE_STRING_LENGTH ]; + + +extern CHAR16 zDialogActions[][ SMALL_STRING_LENGTH ]; +extern CHAR16 zDealerStrings[][ SMALL_STRING_LENGTH ]; +extern CHAR16 zTalkMenuStrings[][ SMALL_STRING_LENGTH ]; +extern STR16 gzMoneyAmounts[6]; +extern CHAR16 gzProsLabel[10]; +extern CHAR16 gzConsLabel[10]; +// HEADROCK HAM 4: Text for the UDB tabs +extern STR16 gzItemDescTabButtonText[ 3 ]; +extern STR16 gzItemDescTabButtonShortText[ 3 ]; +extern STR16 gzItemDescGenHeaders[ 4 ]; +extern STR16 gzItemDescGenIndexes[ 4 ]; +// HEADROCK HAM 4: Added list of condition strings +extern STR16 gConditionDesc[ 9 ]; + +// Flugente: Added list of temperature descriptions +extern STR16 gTemperatureDesc[ 11 ]; + +// Flugente: Added list of food condition descriptions +extern STR16 gFoodDesc[ 8 ]; + +extern CHAR16 gMoneyStatsDesc[][ 14 ]; +// HEADROCK: Altered value to 16 //WarmSteel - And I need 17. // Flugente: 17->19 +extern CHAR16 gWeaponStatsDesc[][ 20 ]; +// HEADROCK: Added externs for Item Description Box icon and stat tooltips +// Note that I've inflated some of these to 20 to avoid issues. +extern STR16 gzWeaponStatsFasthelpTactical[ 33 ]; +extern STR16 gzMiscItemStatsFasthelp[]; +// HEADROCK HAM 4: New tooltip texts +extern STR16 gzUDBButtonTooltipText[ 3 ]; +extern STR16 gzUDBHeaderTooltipText[ 4 ]; +extern STR16 gzUDBGenIndexTooltipText[ 4 ]; +extern STR16 gzUDBAdvIndexTooltipText[ 5 ]; +extern STR16 szUDBGenWeaponsStatsTooltipText[ 23 ]; +extern STR16 szUDBGenWeaponsStatsExplanationsTooltipText[ 24 ]; +extern STR16 szUDBGenArmorStatsTooltipText[ 4 ]; // silversurfer Repair Ease: 3->5 +extern STR16 szUDBGenArmorStatsExplanationsTooltipText[ 5 ]; // silversurfer Repair Ease: 3->5 +extern STR16 szUDBGenAmmoStatsTooltipText[ 6 ]; // Flugente Overheating: 3->4 poison: 4->5 dirt: 5->6 +extern STR16 szUDBGenAmmoStatsExplanationsTooltipText[ 6 ]; // Flugente Overheating: 3->4 poison: 4->5 dirt: 5->6 +extern STR16 szUDBGenExplosiveStatsTooltipText[ 23 ]; // silversurfer Repair Ease: 22->23 +extern STR16 szUDBGenExplosiveStatsExplanationsTooltipText[ 23 ]; // silversurfer Repair Ease: 22->23 +extern STR16 szUDBGenCommonStatsTooltipText[ 3 ]; // silversurfer new for items that don't fit the other categories +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[]; +extern STR16 szUDBAdvStatsExplanationsTooltipText[]; +extern STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]; + +// Headrock: End Externs +extern STR16 sKeyDescriptionStrings[2]; +extern CHAR16 zHealthStr[][13]; +extern STR16 gzHiddenHitCountStr[1]; +extern STR16 zVehicleName[ 6 ]; +extern STR16 pVehicleSeatsStrings[ 2 ] ; + +// Flugente: externalised texts for some features +enum +{ + STR_COVERT_CAMOFOUND, + STR_COVERT_BACKPACKFOUND, + STR_COVERT_CARRYCORPSEFOUND, + STR_COVERT_ITEM_SUSPICIOUS, + STR_COVERT_MILITARYGEARFOUND, + STR_COVERT_TOOMANYGUNS, + STR_COVERT_ITEMSTOOGOOD, + STR_COVERT_TOOMANYATTACHMENTS, + STR_COVERT_ACTIVITIES, + STR_COVERT_NO_CIV, + STR_COVERT_BLEEDING, + STR_COVERT_DRUNKEN_SOLDIER, + STR_COVERT_TOO_CLOSE, + STR_COVERT_CURFEW_BROKEN, + STR_COVERT_CURFEW_BROKEN_NIGHT, + STR_COVERT_NEAR_CORPSE, + STR_COVERT_SUSPICIOUS_EQUIPMENT, + STR_COVERT_TARGETTING_SOLDIER, + STR_COVERT_UNCOVERED, + STR_COVERT_NO_CLOTHES_ITEM, + STR_COVERT_ERROR_OLDTRAITS, + STR_COVERT_NOT_ENOUGH_APS, + STR_COVERT_BAD_PALETTE, + STR_COVERT_NO_SKILL, + STR_COVERT_NO_UNIFORM_FOUND, + STR_COVERT_DISGUISED_AS_CIVILIAN, + STR_COVERT_DISGUISED_AS_SOLDIER, + STR_COVERT_UNIFORM_NOORDER, + STR_COVERT_SURRENDER_FAILED, + STR_COVERT_UNCOVER_SINGLE, + STR_COVERT_TEST_OK, + STR_COVERT_TEST_FAIL, + STR_COVERT_STEAL_FAIL, + STR_COVERT_APPLYITEM_STEAL_FAIL, + STR_COVERT_TOO_CLOSE_TO_ELITE, + STR_COVERT_TOO_CLOSE_TO_OFFICER, + TEXT_NUM_COVERT_STR +}; + +extern STR16 szCovertTextStr[]; + +enum +{ + STR_POWERPACK_BEGIN, + STR_POWERPACK_FULL, + STR_POWERPACK_GOOD, + STR_POWERPACK_HALF, + STR_POWERPACK_LOW, + STR_POWERPACK_EMPTY, + STR_POWERPACK_END, + + TEXT_POWERPACK_STR +}; + +extern STR16 gPowerPackDesc[]; + +enum +{ + STR_CORPSE_NO_HEAD_ITEM, + STR_CORPSE_NO_DECAPITATION, + STR_CORPSE_NO_MEAT_ITEM, + STR_CORPSE_NO_GUTTING, + STR_CORPSE_NO_CLOTHESFOUND, + STR_CORPSE_NO_STRIPPING_POSSIBLE, + STR_CORPSE_NO_TAKING, + STR_CORPSE_NO_FREEHAND, + STR_CORPSE_NO_CORPSE_ITEM, + STR_CORPSE_INVALID_CORPSE_ID, + + TEXT_NUM_CORPSE_STR +}; + +extern STR16 szCorpseTextStr[]; + +enum +{ + STR_FOOD_DONOTWANT_EAT, + STR_FOOD_DONOTWANT_DRINK, + STR_FOOD_ATE, + STR_FOOD_DRANK, + STR_FOOD_STR_DAMAGE_FOOD_TOO_MUCH, + STR_FOOD_STR_DAMAGE_FOOD_TOO_LESS, + STR_FOOD_HEALTH_DAMAGE_FOOD_TOO_MUCH, + STR_FOOD_HEALTH_DAMAGE_FOOD_TOO_LESS, + STR_FOOD_STR_DAMAGE_DRINK_TOO_MUCH, + STR_FOOD_STR_DAMAGE_DRINK_TOO_LESS, + STR_FOOD_HEALTH_DAMAGE_DRINK_TOO_MUCH, + STR_FOOD_HEALTH_DAMAGE_DRINK_TOO_LESS, + + STR_FOOD_ERROR_NO_FOOD_SYSTEM, + + TEXT_NUM_FOOD_STR +}; + +extern STR16 szFoodTextStr[]; + +enum +{ + STR_PRISONER_PROCESSED, + STR_PRISONER_RANSOM, + STR_PRISONER_DETECTION, + STR_PRISONER_TURN_MILITIA, + STR_PRISONER_RIOT, + STR_PRISONER_SENTTOSECTOR, + STR_PRISONER_RELEASED, + STR_PRISONER_ARMY_FREED_PRISON, + STR_PRISONER_REFUSE_SURRENDER, + STR_PRISONER_REFUSE_TAKE_PRISONERS, + SRT_PRISONER_INI_SETTING_OFF, + STR_PRISONER_X_FREES_Y, + STR_PRISONER_DETECTION_VIP, + STR_PRISONER_REFUSE_SURRENDER_LEADER, + STR_PRISONER_TURN_VOLUNTEER, + STR_PRISONER_ESCAPE, + STR_PRISONER_NO_ESCAPE, + + TEXT_NUM_PRISONER_STR +}; + +extern STR16 szPrisonerTextStr[]; + +enum +{ + STR_MTA_NONE, + STR_MTA_FORTIFY, + STR_MTA_REMOVE_FORTIFY, + STR_MTA_HACK, + STR_MTA_CANCEL, + STR_MTA_CANNOT_BUILD, + + TEXT_NUM_MTA_STR +}; + +extern STR16 szMTATextStr[]; + +enum +{ + STR_INV_ARM_BLOWUP_AP, + STR_INV_ARM_BLOWUP, + STR_INV_ARM_ARM_AP, + STR_INV_ARM_ARM, + STR_INV_ARM_DISARM_AP, + STR_INV_ARM_DISARM, + + TEXT_NUM_INV_ARM_STR +}; + +extern STR16 szInventoryArmTextStr[]; + +enum +{ + AIR_RAID_TURN_STR, + BEGIN_AUTOBANDAGE_PROMPT_STR, + NOTICING_MISSING_ITEMS_FROM_SHIPMENT_STR, + DOOR_LOCK_DESCRIPTION_STR, + DOOR_THERE_IS_NO_LOCK_STR, + DOOR_LOCK_DESTROYED_STR, + DOOR_LOCK_NOT_DESTROYED_STR, + DOOR_LOCK_HAS_BEEN_PICKED_STR, + DOOR_LOCK_HAS_NOT_BEEN_PICKED_STR, + DOOR_LOCK_UNTRAPPED_STR, + DOOR_LOCK_HAS_BEEN_UNLOCKED_STR, + DOOR_NOT_PROPER_KEY_STR, + DOOR_LOCK_HAS_BEEN_UNTRAPPED_STR, + DOOR_LOCK_IS_NOT_TRAPPED_STR, + DOOR_LOCK_HAS_BEEN_LOCKED_STR, + DOOR_DOOR_MOUSE_DESCRIPTION, + DOOR_TRAPPED_MOUSE_DESCRIPTION, + DOOR_LOCKED_MOUSE_DESCRIPTION, + DOOR_UNLOCKED_MOUSE_DESCRIPTION, + DOOR_BROKEN_MOUSE_DESCRIPTION, + ACTIVATE_SWITCH_PROMPT, + DISARM_TRAP_PROMPT, + ITEMPOOL_POPUP_PREV_STR, + ITEMPOOL_POPUP_NEXT_STR, + ITEMPOOL_POPUP_MORE_STR, + ITEM_HAS_BEEN_PLACED_ON_GROUND_STR, + ITEM_HAS_BEEN_GIVEN_TO_STR, + GUY_HAS_BEEN_PAID_IN_FULL_STR, + GUY_STILL_OWED_STR, + CHOOSE_BOMB_FREQUENCY_STR, + CHOOSE_TIMER_STR, + CHOOSE_REMOTE_FREQUENCY_STR, + DISARM_BOOBYTRAP_PROMPT, + REMOVE_BLUE_FLAG_PROMPT, + PLACE_BLUE_FLAG_PROMPT, + ENDING_TURN, + ATTACK_OWN_GUY_PROMPT, + VEHICLES_NO_STANCE_CHANGE_STR, + ROBOT_NO_STANCE_CHANGE_STR, + CANNOT_STANCE_CHANGE_STR, + CANNOT_DO_FIRST_AID_STR, + CANNOT_NO_NEED_FIRST_AID_STR, + CANT_MOVE_THERE_STR, + CANNOT_RECRUIT_TEAM_FULL, + HAS_BEEN_RECRUITED_STR, + BALANCE_OWED_STR, + ESCORT_PROMPT, + HIRE_PROMPT, + BOXING_PROMPT, + BUY_VEST_PROMPT, + NOW_BING_ESCORTED_STR, + JAMMED_ITEM_STR, + ROBOT_NEEDS_GIVEN_CALIBER_STR, + CANNOT_THROW_TO_DEST_STR, + TOGGLE_STEALTH_MODE_POPUPTEXT, + MAPSCREEN_POPUPTEXT, + END_TURN_POPUPTEXT, + TALK_CURSOR_POPUPTEXT, + TOGGLE_MUTE_POPUPTEXT, + CHANGE_STANCE_UP_POPUPTEXT, + CURSOR_LEVEL_POPUPTEXT, + JUMPCLIMB_POPUPTEXT, + CHANGE_STANCE_DOWN_POPUPTEXT, + EXAMINE_CURSOR_POPUPTEXT, + PREV_MERC_POPUPTEXT, + NEXT_MERC_POPUPTEXT, + CHANGE_OPTIONS_POPUPTEXT, + TOGGLE_BURSTMODE_POPUPTEXT, + LOOK_CURSOR_POPUPTEXT, + MERC_VITAL_STATS_POPUPTEXT, + CANNOT_DO_INV_STUFF_STR, + CONTINUE_OVER_FACE_STR, + MUTE_OFF_STR, + MUTE_ON_STR, + DRIVER_POPUPTEXT, + EXIT_VEHICLE_POPUPTEXT, + CHANGE_SQUAD_POPUPTEXT, + DRIVE_POPUPTEXT, + NOT_APPLICABLE_POPUPTEXT, + USE_HANDTOHAND_POPUPTEXT, + USE_FIREARM_POPUPTEXT, + USE_BLADE_POPUPTEXT , + USE_EXPLOSIVE_POPUPTEXT, + USE_MEDKIT_POPUPTEXT, + CATCH_STR, + RELOAD_STR, + GIVE_STR, + LOCK_TRAP_HAS_GONE_OFF_STR, + MERC_HAS_ARRIVED_STR, + GUY_HAS_RUN_OUT_OF_APS_STR, + MERC_IS_UNAVAILABLE_STR, + MERC_IS_ALL_BANDAGED_STR, + MERC_IS_OUT_OF_BANDAGES_STR, + ENEMY_IN_SECTOR_STR, + NO_ENEMIES_IN_SIGHT_STR, + NOT_ENOUGH_APS_STR, + NOBODY_USING_REMOTE_STR, + BURST_FIRE_DEPLETED_CLIP_STR, + ENEMY_TEAM_MERC_NAME, + CREATURE_TEAM_MERC_NAME, + MILITIA_TEAM_MERC_NAME, + CIV_TEAM_MERC_NAME, + ZOMBIE_TEAM_MERC_NAME, + POW_TEAM_MERC_NAME, + + //The text for the 'exiting sector' gui + EXIT_GUI_TITLE_STR, + OK_BUTTON_TEXT_STR, + CANCEL_BUTTON_TEXT_STR, + EXIT_GUI_SELECTED_MERC_STR, + EXIT_GUI_ALL_MERCS_IN_SQUAD_STR, + EXIT_GUI_GOTO_SECTOR_STR, + EXIT_GUI_GOTO_MAP_STR, + CANNOT_LEAVE_SECTOR_FROM_SIDE_STR, + CANNOT_LEAVE_IN_TURN_MODE_STR, + MERC_IS_TOO_FAR_AWAY_STR, + REMOVING_TREETOPS_STR, + SHOWING_TREETOPS_STR, + CROW_HIT_LOCATION_STR, + NECK_HIT_LOCATION_STR, + HEAD_HIT_LOCATION_STR, + TORSO_HIT_LOCATION_STR, + LEGS_HIT_LOCATION_STR, + YESNOLIE_STR, + GUN_GOT_FINGERPRINT, + GUN_NOGOOD_FINGERPRINT, + GUN_GOT_TARGET, + NO_PATH, + MONEY_BUTTON_HELP_TEXT, + AUTOBANDAGE_NOT_NEEDED, + SHORT_JAMMED_GUN, + CANT_GET_THERE, + EXCHANGE_PLACES_REQUESTER, + REFUSE_EXCHANGE_PLACES, + PAY_MONEY_PROMPT, + FREE_MEDICAL_PROMPT, + MARRY_DARYL_PROMPT, + KEYRING_HELP_TEXT, + EPC_CANNOT_DO_THAT, + SPARE_KROTT_PROMPT, + OUT_OF_RANGE_STRING, + CIV_TEAM_MINER_NAME, + VEHICLE_CANT_MOVE_IN_TACTICAL, + CANT_AUTOBANDAGE_PROMPT, + NO_PATH_FOR_MERC, + POW_MERCS_ARE_HERE, + LOCK_HAS_BEEN_HIT, + LOCK_HAS_BEEN_DESTROYED, + DOOR_IS_BUSY, + VEHICLE_VITAL_STATS_POPUPTEXT, + NO_LOS_TO_TALK_TARGET, + ATTACHMENT_REMOVED, + VEHICLE_CAN_NOT_BE_ADDED, + + // added by Flugente for defusing/setting up trap networks + CHOOSE_BOMB_OR_DEFUSE_FREQUENCY_STR, + CHOOSE_REMOTE_DEFUSE_FREQUENCY_STR, + CHOOSE_REMOTE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR, + CHOOSE_DETONATE_AND_REMOTE_DEFUSE_FREQUENCY_STR, + CHOOSE_TRIPWIRE_NETWORK, + + MERC_VITAL_STATS_WITH_FOOD_POPUPTEXT, + + FUNCTION_SELECTION_STR, + FILL_CANTEEN_STR, + CLEAN_ONE_GUN_STR, + CLEAN_ALL_GUNS_STR, + TAKE_OFF_CLOTHES_STR, + TAKE_OFF_DISGUISE_STR, + MILITIA_DROP_EQ_STR, + MILITIA_PICK_UP_EQ_STR, + SPY_SELFTEST_STR, + UNUSED_STR, + + CORPSE_SELECTION_STR, + DECAPITATE_STR, + GUT_STR, + TAKE_CLOTHES_STR, + TAKE_BODY_STR, + + WEAPON_CLEANING_STR, + + PRISONER_FIELDINTERROGATION_STR, + PRISONER_FIELDINTERROGATION_SHORT_STR, + PRISONER_DECIDE_STR, + PRISONER_LETGO_STR, + PRISONER_OFFER_SURRENDER, + PRISONER_DEMAND_SURRENDER_STR, + PRISONER_OFFER_SURRENDER_STR, + PRISONER_DISTRACT_STR, + PRISONER_TALK_STR, + PRISONER_RECRUIT_TURNCOAT_STR, + + // sevenfm: new disarm trap dialog, new messages for wrong mines when arming + DISARM_DIALOG_DISARM, + DISARM_DIALOG_INSPECT, + DISARM_DIALOG_REMOVE_BLUEFLAG, + DISARM_DIALOG_BLOWUP, + DISARM_DIALOG_ACTIVATE_TRIPWIRE, + DISARM_DIALOG_DEACTIVATE_TRIPWIRE, + DISARM_DIALOG_REVEAL_TRIPWIRE, + ARM_MESSAGE_NO_DETONATOR, + ARM_MESSAGE_ALREADY_ARMED, + INSPECT_RESULT_SAFE, + INSPECT_RESULT_MOSTLY_SAFE, + INSPECT_RESULT_RISKY, + INSPECT_RESULT_DANGEROUS, + INSPECT_RESULT_HIGH_DANGER, + + GENERAL_INFO_MASK, + GENERAL_INFO_NVG, + GENERAL_INFO_ITEM, + + QUICK_ITEMS_ONLY_NIV, + QUICK_ITEMS_NO_ITEM_IN_HAND, + QUICK_ITEMS_NOWHERE_TO_PLACE, + QUICK_ITEM_NO_DEFINED_ITEM, + QUICK_ITEM_NO_FREE_HAND, + QUICK_ITEM_NOT_FOUND, + QUICK_ITEM_CANNOT_TAKE, + + ATTEMPT_BANDAGE_DURING_TRAVEL, + + IMPROVEGEARBUTTON_STR, + IMPROVEGEARDESCRIBE_STR, + IMPROVEGEARPICKUPMAG_STR, + + DISTRACT_STOP_STR, + DISTRACT_TRY_TO_TURNCOAT, + + TEXT_NUM_TACTICAL_STR +}; + +enum{ + EXIT_GUI_LOAD_ADJACENT_SECTOR_HELPTEXT, + EXIT_GUI_GOTO_MAPSCREEN_HELPTEXT, + EXIT_GUI_CANT_LEAVE_HOSTILE_SECTOR_HELPTEXT, + EXIT_GUI_MUST_LOAD_ADJACENT_SECTOR_HELPTEXT, + EXIT_GUI_MUST_GOTO_MAPSCREEN_HELPTEXT, + EXIT_GUI_ESCORTED_CHARACTERS_MUST_BE_ESCORTED_HELPTEXT, + EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_SINGULAR, + EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_SINGULAR, + EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_MALE_PLURAL, + EXIT_GUI_MERC_CANT_ISOLATE_EPC_HELPTEXT_FEMALE_PLURAL, + EXIT_GUI_ALL_MERCS_MUST_BE_TOGETHER_TO_ALLOW_HELPTEXT, + EXIT_GUI_EPC_NOT_ALLOWED_TO_LEAVE_ALONE_HELPTEXT, + EXIT_GUI_SINGLE_TRAVERSAL_WILL_SEPARATE_SQUADS_HELPTEXT, + EXIT_GUI_ALL_TRAVERSAL_WILL_MOVE_CURRENT_SQUAD_HELPTEXT, + EXIT_GUI_ESCORTED_CHARACTERS_CANT_LEAVE_SECTOR_ALONE_STR, + TEXT_NUM_EXIT_GUI +}; +extern STR16 pExitingSectorHelpText[]; + + +enum +{ + LARGESTR_NOONE_LEFT_CAPABLE_OF_BATTLE_STR, + LARGESTR_NOONE_LEFT_CAPABLE_OF_BATTLE_AGAINST_CREATURES_STR, + LARGESTR_HAVE_BEEN_CAPTURED, + TEXT_NUM_LARGESTR +}; + + +//Insurance Contract.c +enum +{ + INS_CONTRACT_PREVIOUS, + INS_CONTRACT_NEXT, + INS_CONTRACT_ACCEPT, + INS_CONTRACT_CLEAR, + TEXT_NUM_INS_CONTRACT +}; +extern STR16 InsContractText[]; + + +//Insurance Info +enum +{ + INS_INFO_PREVIOUS, + INS_INFO_NEXT, + TEXT_NUM_INS_INFO, +}; +extern STR16 InsInfoText[]; + +//Merc Account.c +enum +{ + MERC_ACCOUNT_AUTHORIZE, + MERC_ACCOUNT_HOME, + MERC_ACCOUNT_ACCOUNT, + MERC_ACCOUNT_MERC, + MERC_ACCOUNT_DAYS, + MERC_ACCOUNT_RATE, + MERC_ACCOUNT_CHARGE, + MERC_ACCOUNT_TOTAL, + MERC_ACCOUNT_AUTHORIZE_CONFIRMATION, + MERC_ACCOUNT_NAME_PLUSGEAR, + TEXT_NUM_MERC_ACCOUNT, +}; +extern STR16 MercAccountText[]; + +// WANNE: The "Next" and "Prev" button text of the merc account page +extern STR16 MercAccountPageText[]; + + +//MercFile.c +enum +{ + MERC_FILES_HEALTH, + MERC_FILES_AGILITY, + MERC_FILES_DEXTERITY, + MERC_FILES_STRENGTH, + MERC_FILES_LEADERSHIP, + MERC_FILES_WISDOM, + MERC_FILES_EXPLEVEL, + MERC_FILES_MARKSMANSHIP, + MERC_FILES_MECHANICAL, + MERC_FILES_EXPLOSIVE, + MERC_FILES_MEDICAL, + + MERC_FILES_PREVIOUS, + MERC_FILES_HIRE, + MERC_FILES_NEXT, + MERC_FILES_ADDITIONAL_INFO, + MERC_FILES_HOME, + MERC_FILES_ALREADY_HIRED, //5 + MERC_FILES_SALARY, + MERC_FILES_PER_DAY, + MERC_FILES_GEAR, + MERC_FILES_TOTAL, + MERC_FILES_MERC_IS_DEAD, + + MERC_FILES_HIRE_TO_MANY_PEOPLE_WARNING, + MERC_FILES_BUY_GEAR, + MERC_FILES_MERC_UNAVAILABLE, + MERC_FILES_MERC_OUTSTANDING, + MERC_FILES_BIO, //JMich_MMG: Adding two new texts for the small button, assuming we manage to add a silhouette with the gear, add it after this. + MERC_FILES_INVENTORY, + MERC_FILES_SPECIAL_OFFER, + TEXT_NUM_MERC_FILES, +}; +extern STR16 MercInfo[]; + + +//MercNoAccount.c +enum +{ + MERC_NO_ACC_OPEN_ACCOUNT, + MERC_NO_ACC_CANCEL, + MERC_NO_ACC_NO_ACCOUNT_OPEN_ONE, + TEXT_NUM_MERC_NO_ACC, +}; +extern STR16 MercNoAccountText[]; + + + +//Merc HomePage +enum +{ + MERC_SPECK_OWNER, + MERC_OPEN_ACCOUNT, + MERC_VIEW_ACCOUNT, + MERC_VIEW_FILES, + MERC_SPECK_COM, + MERC_NO_FUNDS_TRANSFER_FAILED, + TEXT_NUM_MERC, +}; +extern STR16 MercHomePageText[]; + + +//Funerl.c +enum +{ + FUNERAL_INTRO_1, + FUNERAL_INTRO_2, + FUNERAL_INTRO_3, + FUNERAL_INTRO_4, + FUNERAL_INTRO_5, + FUNERAL_SEND_FLOWERS, //5 + FUNERAL_CASKET_URN, + FUNERAL_CREMATION, + FUNERAL_PRE_FUNERAL, + FUNERAL_FUNERAL_ETTIQUETTE, + FUNERAL_OUR_CONDOLENCES, //10 + FUNERAL_OUR_SYMPATHIES, + TEXT_NUM_FUNERAL, +}; +extern STR16 sFuneralString[]; + + +//Florist.c +enum +{ + FLORIST_GALLERY, + FLORIST_DROP_ANYWHERE, + FLORIST_PHONE_NUMBER, + FLORIST_STREET_ADDRESS, + FLORIST_WWW_ADDRESS, + FLORIST_ADVERTISEMENT_1, + FLORIST_ADVERTISEMENT_2, + FLORIST_ADVERTISEMENT_3, + FLORIST_ADVERTISEMENT_4, + FLORIST_ADVERTISEMENT_5, + FLORIST_ADVERTISEMENT_6, + FLORIST_ADVERTISEMENT_7, + FLORIST_ADVERTISEMENT_8, + FLORIST_ADVERTISEMENT_9, + TEXT_NUM_FLORIST, +}; +extern STR16 sFloristText[]; + + +//Florist Order Form +enum +{ + FLORIST_ORDER_BACK, + FLORIST_ORDER_SEND, + FLORIST_ORDER_CLEAR, + FLORIST_ORDER_GALLERY, + FLORIST_ORDER_NAME_BOUQUET, + FLORIST_ORDER_PRICE, //5 + FLORIST_ORDER_ORDER_NUMBER, + FLORIST_ORDER_DELIVERY_DATE, + FLORIST_ORDER_NEXT_DAY, + FLORIST_ORDER_GETS_THERE, + FLORIST_ORDER_DELIVERY_LOCATION, //10 + FLORIST_ORDER_ADDITIONAL_CHARGES, + FLORIST_ORDER_CRUSHED, + FLORIST_ORDER_BLACK_ROSES, + FLORIST_ORDER_WILTED, + FLORIST_ORDER_FRUIT_CAKE, //15 + FLORIST_ORDER_PERSONAL_SENTIMENTS, + FLORIST_ORDER_CARD_LENGTH, + FLORIST_ORDER_SELECT_FROM_OURS, + FLORIST_ORDER_STANDARDIZED_CARDS, + FLORIST_ORDER_BILLING_INFO, //20 + FLORIST_ORDER_NAME, + TEXT_NUM_FLORIST_ORDER, +}; +extern STR16 sOrderFormText[]; + + + +//Florist Gallery.c +enum +{ + FLORIST_GALLERY_PREV, + FLORIST_GALLERY_NEXT, + FLORIST_GALLERY_CLICK_TO_ORDER, + FLORIST_GALLERY_ADDIFTIONAL_FEE, + FLORIST_GALLERY_HOME, + TEXT_NUM_FLORIST_GALLERY, +}; +extern STR16 sFloristGalleryText[]; + + +//Florist Cards +enum +{ + FLORIST_CARDS_CLICK_SELECTION, + FLORIST_CARDS_BACK, + TEXT_NUM_FLORIST_CARDS, +}; +extern STR16 sFloristCards[]; + +// Bobbyr Mail Order.c +enum +{ + BOBBYR_ORDER_FORM, + BOBBYR_QTY, + BOBBYR_WEIGHT, + BOBBYR_NAME, + BOBBYR_UNIT_PRICE, + BOBBYR_TOTAL, + BOBBYR_SUB_TOTAL, + BOBBYR_S_H, + BOBBYR_GRAND_TOTAL, + BOBBYR_SHIPPING_LOCATION, + BOBBYR_SHIPPING_SPEED, + BOBBYR_COST, + BOBBYR_OVERNIGHT_EXPRESS, + BOBBYR_BUSINESS_DAYS, + BOBBYR_STANDARD_SERVICE, + BOBBYR_CLEAR_ORDER, + BOBBYR_ACCEPT_ORDER, + BOBBYR_BACK, + BOBBYR_HOME, + BOBBYR_USED_TEXT, + BOBBYR_CANT_AFFORD_PURCHASE, + BOBBYR_SELECT_DEST, + BOBBYR_CONFIRM_DEST, + BOBBYR_PACKAGE_WEIGHT, + BOBBYR_MINIMUM_WEIGHT, + BOBBYR_GOTOSHIPMENT_PAGE, + TEXT_NUM_BOBBYR_MAILORDER, +}; +extern STR16 BobbyROrderFormText[]; + +enum +{ + // Guns + BOBBYR_FILTER_GUNS_PISTOL, + BOBBYR_FILTER_GUNS_M_PISTOL, + BOBBYR_FILTER_GUNS_SMG, + BOBBYR_FILTER_GUNS_RIFLE, + BOBBYR_FILTER_GUNS_SN_RIFLE, + BOBBYR_FILTER_GUNS_AS_RIFLE, + BOBBYR_FILTER_GUNS_LMG, + BOBBYR_FILTER_GUNS_SHOTGUN, + BOBBYR_FILTER_GUNS_HEAVY, + // Ammo + BOBBYR_FILTER_AMMO_PISTOL, + BOBBYR_FILTER_AMMO_M_PISTOL, + BOBBYR_FILTER_AMMO_SMG, + BOBBYR_FILTER_AMMO_RIFLE, + BOBBYR_FILTER_AMMO_SN_RIFLE, + BOBBYR_FILTER_AMMO_AS_RIFLE, + BOBBYR_FILTER_AMMO_LMG, + BOBBYR_FILTER_AMMO_SHOTGUN, + //BOBBYR_FILTER_AMMO_HEAVY, + // Used + BOBBYR_FILTER_USED_GUNS, + BOBBYR_FILTER_USED_ARMOR, + BOBBYR_FILTER_USED_LBEGEAR, + BOBBYR_FILTER_USED_MISC, + // Armour + BOBBYR_FILTER_ARMOUR_HELM, + BOBBYR_FILTER_ARMOUR_VEST, + BOBBYR_FILTER_ARMOUR_LEGGING, + BOBBYR_FILTER_ARMOUR_PLATE, + // Misc + BOBBYR_FILTER_MISC_BLADE, + BOBBYR_FILTER_MISC_THROWING_KNIFE, + BOBBYR_FILTER_MISC_PUNCH, + BOBBYR_FILTER_MISC_GRENADE, + BOBBYR_FILTER_MISC_BOMB, + BOBBYR_FILTER_MISC_MEDKIT, + BOBBYR_FILTER_MISC_KIT, + BOBBYR_FILTER_MISC_FACE, + BOBBYR_FILTER_MISC_LBEGEAR, + BOBBYR_FILTER_MISC_OPTICS_ATTACHMENTS, // Madd: New BR filter option + BOBBYR_FILTER_MISC_SIDE_AND_BOTTOM_ATTACHMENTS, // Madd: New BR filter option + BOBBYR_FILTER_MISC_MUZZLE_ATTACHMENTS, // Madd: New BR filter option + BOBBYR_FILTER_MISC_STOCK_ATTACHMENTS, // Madd: New BR filter option + BOBBYR_FILTER_MISC_INTERNAL_ATTACHMENTS, // Madd: New BR filter option + BOBBYR_FILTER_MISC_OTHER_ATTACHMENTS, // Madd: New BR filter option + BOBBYR_FILTER_MISC_MISC, + TEXT_NUM_BOBBYR_FILTER +}; + + +//BobbyRGuns.c +enum +{ + BOBBYR_GUNS_TO_ORDER, + BOBBYR_GUNS_CLICK_ON_ITEMS, + BOBBYR_GUNS_PREVIOUS_ITEMS, + BOBBYR_GUNS_GUNS, + BOBBYR_GUNS_AMMO, + BOBBYR_GUNS_ARMOR, //5 + BOBBYR_GUNS_MISC, + BOBBYR_GUNS_USED, + BOBBYR_GUNS_MORE_ITEMS, + BOBBYR_GUNS_ORDER_FORM, + BOBBYR_GUNS_HOME, //10 + BOBBYR_GUNS_NUM_GUNS_THAT_USE_AMMO_1, + BOBBYR_GUNS_NUM_GUNS_THAT_USE_AMMO_2, + + BOBBYR_GUNS_WGHT, + BOBBYR_GUNS_CALIBRE, + BOBBYR_GUNS_MAGAZINE, + BOBBYR_GUNS_RANGE, + BOBBYR_GUNS_DAMAGE, + BOBBYR_GUNS_ROF, + BOBBYR_GUNS_AP, + BOBBYR_GUNS_STUN, + BOBBYR_GUNS_PROTECTION, + BOBBYR_GUNS_CAMO, + BOBBYR_GUNS_ARMOUR_PIERCING_MODIFIER, + BOBBYR_GUNS_BULLET_TUMBLE_MODIFIER, + BOBBYR_GUNS_NUM_PROJECTILES, + BOBBYR_GUNS_COST, + BOBBYR_GUNS_IN_STOCK, + BOBBYR_GUNS_QTY_ON_ORDER, + BOBBYR_GUNS_DAMAGED, + BOBBYR_GUNS_WEIGHT, + BOBBYR_GUNS_SUB_TOTAL, + BOBBYR_GUNS_PERCENT_FUNCTIONAL, + + BOBBYR_MORE_THEN_10_PURCHASES_A, + BOBBYR_MORE_THEN_10_PURCHASES_B, + BOBBYR_MORE_NO_MORE_IN_STOCK, + BOBBYR_NO_MORE_STOCK, + TEXT_NUM_BOBBYR_GUNS, +}; + +extern STR16 BobbyRText[]; +extern STR16 BobbyRFilter[]; + + +//BobbyR.c +enum +{ + BOBBYR_ADVERTISMENT_1, + BOBBYR_ADVERTISMENT_2, + BOBBYR_USED, + BOBBYR_MISC, + BOBBYR_GUNS, + BOBBYR_AMMO, + BOBBYR_ARMOR, + BOBBYR_ADVERTISMENT_3, + BOBBYR_UNDER_CONSTRUCTION, + TEXT_NUM_BOBBYR +}; +extern STR16 BobbyRaysFrontText[]; + +//Aim Sort.c +enum +{ + AIM_AIMMEMBERS, + SORT_BY, + PRICE, + EXPERIENCE, + AIMMARKSMANSHIP, + AIMMECHANICAL, + AIMEXPLOSIVES, + AIMMEDICAL, + AIMHEALTH, + AIMAGILITY, + AIMDEXTERITY, + AIMSTRENGTH, + AIMLEADERSHIP, + AIMWISDOM, + NAME, + MUGSHOT_INDEX, + MERCENARY_FILES, + ALUMNI_GALLERY, + ASCENDING, + DESCENDING, + TEXT_NUM_AIM_SORT +}; +extern STR16 AimSortText[]; + +//Aim Policies.c +enum +{ + AIM_POLICIES_PREVIOUS, + AIM_POLICIES_HOMEPAGE, + AIM_POLICIES_POLICY, + AIM_POLICIES_NEXT_PAGE, + AIM_POLICIES_DISAGREE, + AIM_POLICIES_AGREE, + TEXT_NUM_AIM_POLICIES +}; +extern STR16 AimPolicyText[]; + + + + +//Aim Member.c +enum +{ + AIM_MEMBER_CLICK_INSTRUCTIONS, + TEXT_NUM_AIM_MEMBER_TEXT +}; +extern STR16 AimMemberText[]; + + + +//Aim Member.c +enum +{ + AIM_MEMBER_HEALTH, + AIM_MEMBER_AGILITY, + AIM_MEMBER_DEXTERITY, + AIM_MEMBER_STRENGTH, + AIM_MEMBER_LEADERSHIP, + AIM_MEMBER_WISDOM, //5 + AIM_MEMBER_EXP_LEVEL, + AIM_MEMBER_MARKSMANSHIP, + AIM_MEMBER_MECHANICAL, + AIM_MEMBER_EXPLOSIVE, + AIM_MEMBER_MEDICAL, //10 + AIM_MEMBER_FEE, + AIM_MEMBER_CONTRACT, + AIM_MEMBER_1_DAY, + AIM_MEMBER_1_WEEK, + AIM_MEMBER_2_WEEKS, //15 + AIM_MEMBER_PREVIOUS, + AIM_MEMBER_CONTACT, + AIM_MEMBER_NEXT, + AIM_MEMBER_ADDTNL_INFO, + AIM_MEMBER_ACTIVE_MEMBERS, //20 + AIM_MEMBER_OPTIONAL_GEAR, + AIM_MEMBER_OPTIONAL_GEAR_NSGI, + AIM_MEMBER_MEDICAL_DEPOSIT_REQ, + AIM_MEMBER_GEAR_KIT_ONE, + AIM_MEMBER_GEAR_KIT_TWO, //25 + AIM_MEMBER_GEAR_KIT_THREE, + AIM_MEMBER_GEAR_KIT_FOUR, + AIM_MEMBER_GEAR_KIT_FIVE, + AIM_MEMBER_UB_MISSION_FEE, + TEXT_NUM_AIM_MEMBER_CHARINFO, +}; +extern STR16 CharacterInfo[]; + + + +//Aim Member.c +enum +{ + AIM_MEMBER_CONTRACT_CHARGE, + AIM_MEMBER_ONE_DAY, + AIM_MEMBER_ONE_WEEK, + AIM_MEMBER_TWO_WEEKS, + AIM_MEMBER_NO_EQUIPMENT, + AIM_MEMBER_BUY_EQUIPMENT, //5 + AIM_MEMBER_TRANSFER_FUNDS, + AIM_MEMBER_CANCEL, + AIM_MEMBER_HIRE, + AIM_MEMBER_HANG_UP, + AIM_MEMBER_OK, //10 + AIM_MEMBER_LEAVE_MESSAGE, + AIM_MEMBER_VIDEO_CONF_WITH, + AIM_MEMBER_CONNECTING, + AIM_MEMBER_WITH_MEDICAL, //14 + TEXT_NUM_AIM_MEMBER_VCONF +}; +extern STR16 VideoConfercingText[]; + +//Aim Member.c +enum +{ + AIM_MEMBER_FUNDS_TRANSFER_SUCCESFUL, + AIM_MEMBER_FUNDS_TRANSFER_FAILED, + AIM_MEMBER_NOT_ENOUGH_FUNDS, + + AIM_MEMBER_ON_ASSIGNMENT, + AIM_MEMBER_LEAVE_MSG, + AIM_MEMBER_DEAD, + + AIM_MEMBER_ALREADY_HAVE_MAX_MERCS, + + AIM_MEMBER_PRERECORDED_MESSAGE, + AIM_MEMBER_MESSAGE_RECORDED, + TEXT_NUM_AIM_MEMBER_POPUP +}; +extern STR16 AimPopUpText[]; + +//AIM Link.c +enum +{ + AIM_LINK_TITLE, + TEXM_NUM_AIM_LINK, +}; +extern STR16 AimLinkText[]; + + +//Aim History +enum +{ + AIM_HISTORY_TITLE, + AIM_HISTORY_PREVIOUS, + AIM_HISTORY_HOME, + AIM_HISTORY_AIM_ALUMNI, + AIM_HISTORY_NEXT, + TEXT_NUM_AIM_HISTORY, +}; +extern STR16 AimHistoryText[]; + + + +//Aim Facial Index +enum +{ + AIM_FI_PRICE, + AIM_FI_EXP, + AIM_FI_MARKSMANSHIP, + AIM_FI_MECHANICAL, + AIM_FI_EXPLOSIVES, + AIM_FI_MEDICAL, + AIM_FI_HEALTH, + AIM_FI_AGILITY, + AIM_FI_DEXTERITY, + AIM_FI_STRENGTH, + AIM_FI_LEADERSHIP, + AIM_FI_WISDOM, + AIM_FI_NAME, + AIM_FI_AIM_MEMBERS_SORTED_ASCENDING, + AIM_FI_AIM_MEMBERS_SORTED_DESCENDING, + AIM_FI_LEFT_CLICK, + AIM_FI_TO_SELECT, + AIM_FI_RIGHT_CLICK, + AIM_FI_TO_ENTER_SORT_PAGE, + AIM_FI_AWAY, + AIM_FI_DEAD, + AIM_FI_ON_ASSIGN, + TEXT_NUM_AIM_FI, +}; +extern STR16 AimFiText[]; + + +//AimArchives. +enum +{ + AIM_ALUMNI_PAGE_1, + AIM_ALUMNI_PAGE_2, + AIM_ALUMNI_PAGE_3, + AIM_ALUMNI_ALUMNI, + AIM_ALUMNI_DONE, + TEXT_NUM_AIM_ALUMNI, +}; +extern STR16 AimAlumniText[]; + + + +//Aim Home Page +enum +{ +// AIM_INFO_1, +// AIM_INFO_2, +// AIM_POLICIES, +// AIM_HISTORY, +// AIM_LINKS, //5 + AIM_INFO_3, + AIM_INFO_4, + AIM_INFO_5, + AIM_INFO_6, + AIM_INFO_7, //9 + AIM_BOBBYR_ADD1, + AIM_BOBBYR_ADD2, + AIM_BOBBYR_ADD3, + TEXT_NUM_AIM_SCREEN +}; + +extern STR16 AimScreenText[]; + +//Aim Home Page +enum +{ + AIM_HOME, + AIM_MEMBERS, + AIM_ALUMNI, + AIM_POLICIES, + AIM_HISTORY, + AIM_LINKS, + TEXT_NUM_AIM_MENU +}; + +extern STR16 AimBottomMenuText[]; + + + +// MapScreen +enum +{ + MAP_SCREEN_MAP_LEVEL, + MAP_SCREEN_NO_MILITIA_TEXT, + TEXT_NUM_MAP_SCREEN, +}; +extern STR16 zMarksMapScreenText[]; + + + +//Weapon Name and Description size +#define ITEMSTRINGFILENAME "BINARYDATA\\ITEMDESC.EDT" +#define SIZE_ITEM_NAME 160 +#define SIZE_SHORT_ITEM_NAME 160 +#define SIZE_ITEM_INFO 480 +#define SIZE_ITEM_PROS 160 +#define SIZE_ITEM_CONS 160 + +BOOLEAN LoadItemInfo(UINT16 ubIndex, STR16 pNameString, STR16 pInfoString ); +extern void LoadAllExternalText( void ); +BOOLEAN LoadShortNameItemInfo(UINT16 ubIndex, STR16 pNameString ); +BOOLEAN LoadItemProsAndCons( UINT16 usIndex, STR16 pProsString, STR16 pConsString ); +BOOLEAN LoadBRDesc(UINT16 ubIndex, STR16 pDescString ); +BOOLEAN LoadBRName(UINT16 ubIndex, STR16 pNameString ); + +// convert UTF-8 string to wstring +std::wstring utf8_to_wstring(const std::string& str); +// convert wstring to UTF-8 string +std::string wstring_to_utf8(const std::wstring& str); + +enum +{ + //Coordinating simultaneous arrival dialog strings + STR_DETECTED_SIMULTANEOUS_ARRIVAL, + STR_DETECTED_SINGULAR, + STR_DETECTED_PLURAL, + STR_COORDINATE, + //AutoResove Enemy capturing strings + STR_ENEMY_SURRENDER_OFFER, + STR_ENEMY_CAPTURED, + //AutoResolve Text buttons + STR_AR_RETREAT_BUTTON, + STR_AR_DONE_BUTTON, + //AutoResolve header text + STR_AR_DEFEND_HEADER, + STR_AR_ATTACK_HEADER, + STR_AR_ENCOUNTER_HEADER, + STR_AR_SECTOR_HEADER, + //String for AutoResolve battle over conditions + STR_AR_OVER_VICTORY, + STR_AR_OVER_DEFEAT, + STR_AR_OVER_SURRENDERED, + STR_AR_OVER_CAPTURED, + STR_AR_OVER_RETREATED, + STR_AR_MILITIA_NAME, + STR_AR_ELITE_NAME, + STR_AR_TROOP_NAME, + STR_AR_ADMINISTRATOR_NAME, + STR_AR_CREATURE_NAME, + STR_AR_TIME_ELAPSED, + STR_AR_MERC_RETREATED, + STR_AR_MERC_RETREATING, + STR_AR_MERC_RETREAT, + //Strings for prebattle interface + STR_PB_AUTORESOLVE_BTN, + STR_PB_GOTOSECTOR_BTN, + STR_PB_RETREATMERCS_BTN, + STR_PB_ENEMYENCOUNTER_HEADER, + STR_PB_ENEMYINVASION_HEADER, + STR_PB_ENEMYAMBUSH_HEADER, + STR_PB_ENTERINGENEMYSECTOR_HEADER, + STR_PB_CREATUREATTACK_HEADER, + STR_PB_BLOODCATAMBUSH_HEADER, + STR_PB_ENTERINGBLOODCATLAIR_HEADER, + STR_PB_ENEMYINVASION_AIRDROP_HEADER, + STR_PB_LOCATION, + STR_PB_ENEMIES, + STR_PB_MERCS, + STR_PB_MILITIA, + STR_PB_CREATURES, + STR_PB_BLOODCATS, + STR_PB_SECTOR, + STR_PB_NONE, + STR_PB_NOTAPPLICABLE_ABBREVIATION, + STR_PB_DAYS_ABBREVIATION, + STR_PB_HOURS_ABBREVIATION, + //Strings for the tactical placement gui + //The four buttons and it's help text. + STR_TP_CLEAR, + STR_TP_SPREAD, + STR_TP_GROUP, + STR_TP_DONE, + STR_TP_CLEARHELP, + STR_TP_SPREADHELP, + STR_TP_GROUPHELP, + STR_TP_DONEHELP, + STR_TP_DISABLED_DONEHELP, + //various strings. + STR_TP_SECTOR, + STR_TP_CHOOSEENTRYPOSITIONS, + STR_TP_INACCESSIBLE_MESSAGE, + STR_TP_INVALID_MESSAGE, + STR_TP_NAME_HASARRIVEDINSECTOR_XX, + STR_PB_AUTORESOLVE_FASTHELP, + STR_PB_DISABLED_AUTORESOLVE_FASTHELP, + STR_PB_GOTOSECTOR_FASTHELP, + STR_BP_RETREATSINGLE_FASTHELP, + STR_BP_RETREATPLURAL_FASTHELP, + + //various popup messages for battle, + STR_DIALOG_ENEMIES_ATTACK_MILITIA, + STR_DIALOG_CREATURES_ATTACK_MILITIA, + STR_DIALOG_CREATURES_KILL_CIVILIANS, + STR_DIALOG_ENEMIES_ATTACK_UNCONCIOUSMERCS, + STR_DIALOG_CREATURES_ATTACK_UNCONCIOUSMERCS, + + // Flugente: militia movement forbidden due to limited roaming + STR_MILITIAMOVEMENT_NO_LIMITEDROAMING, + STR_MILITIAMOVEMENT_NO_STAFF_ABORT, + + STR_AR_ROBOT_NAME, + STR_AR_TANK_NAME, + STR_AR_JEEP_NAME, + + STR_BREATH_REGEN_SLEEP, + + STR_PB_ZOMBIES, + STR_PB_BANDITS, + STR_PB_BLOODCATRAID_HEADER, + STR_PB_ZOMBIERAID_HEADER, + STR_PB_BANDITRAID_HEADER, + STR_PB_ZOMBIE, + STR_PB_BANDIT, + STR_PB_BANDIT_KILLCIVS_IN_SECTOR, + STR_PB_TRANSPORT_GROUP, + STR_PB_TRANSPORT_GROUP_EN_ROUTE, + + TEXT_NUM_STRATEGIC_TEXT +}; + +//Strings used in conjunction with above enumerations +extern STR16 gpStrategicString[]; + +enum +{ + STR_GAMECLOCK_DAY_NAME, + TEXT_NUM_GAMECLOCK, +}; +extern STR16 gpGameClockString[]; + +//enums for the Shopkeeper Interface +enum +{ + SKI_TEXT_MERCHADISE_IN_STOCK, + SKI_TEXT_PAGE, + SKI_TEXT_TOTAL_COST, + SKI_TEXT_TOTAL_VALUE, + SKI_TEXT_EVALUATE, + SKI_TEXT_TRANSACTION, + SKI_TEXT_DONE, + SKI_TEXT_REPAIR_COST, + SKI_TEXT_ONE_HOUR, + SKI_TEXT_PLURAL_HOURS, + SKI_TEXT_REPAIRED, + SKI_TEXT_NO_MORE_ROOM_IN_PLAYER_OFFER_AREA, + SKI_TEXT_MINUTES, + SKI_TEXT_DROP_ITEM_TO_GROUND, + SKI_TEXT_BUDGET, + TEXT_NUM_SKI_TEXT +}; +extern STR16 SKI_Text[]; + +//ShopKeeper Interface +enum +{ + SKI_ATM_0, + SKI_ATM_1, + SKI_ATM_2, + SKI_ATM_3, + SKI_ATM_4, + SKI_ATM_5, + SKI_ATM_6, + SKI_ATM_7, + SKI_ATM_8, + SKI_ATM_9, + SKI_ATM_OK, + SKI_ATM_TAKE, + SKI_ATM_GIVE, + SKI_ATM_CANCEL, + SKI_ATM_CLEAR, + + NUM_SKI_ATM_BUTTONS +}; +extern STR16 SkiAtmText[]; + +//ShopKeeper Interface +enum +{ + SKI_ATM_MODE_TEXT_SELECT_MODE, + SKI_ATM_MODE_TEXT_ENTER_AMOUNT, + SKI_ATM_MODE_TEXT_SELECT_TO_MERC, + SKI_ATM_MODE_TEXT_SELECT_FROM_MERC, + SKI_ATM_MODE_TEXT_SELECT_INUSUFFICIENT_FUNDS, + SKI_ATM_MODE_TEXT_BALANCE, + TEXT_NUM_SKI_ATM_MODE_TEXT, +}; +extern STR16 gzSkiAtmText[]; + +//ShopKeeperInterface Message Box defines +enum +{ + SKI_QUESTION_TO_DEDUCT_MONEY_FROM_PLAYERS_ACCOUNT_TO_COVER_DIFFERENCE, + SKI_SHORT_FUNDS_TEXT, + SKI_QUESTION_TO_DEDUCT_MONEY_FROM_PLAYERS_ACCOUNT_TO_COVER_COST, + + SKI_TRANSACTION_BUTTON_HELP_TEXT, + SKI_REPAIR_TRANSACTION_BUTTON_HELP_TEXT, + SKI_DONE_BUTTON_HELP_TEXT, + + SKI_PLAYERS_CURRENT_BALANCE, + + SKI_QUESTION_TO_DEDUCT_INTEL_FROM_PLAYERS_ACCOUNT_TO_COVER_DIFFERENCE, + SKI_QUESTION_TO_DEDUCT_INTEL_FROM_PLAYERS_ACCOUNT_TO_COVER_COST, + + TEXT_NUM_SKI_MBOX_TEXT +}; + +extern STR16 SkiMessageBoxText[]; + + +//enums for the above text +enum +{ + SLG_SAVE_GAME, + SLG_LOAD_GAME, + SLG_CANCEL, + SLG_SAVE_SELECTED, + SLG_LOAD_SELECTED, + SLG_SAVE_GAME_OK, //5 + SLG_SAVE_GAME_ERROR, + SLG_LOAD_GAME_OK, + SLG_LOAD_GAME_ERROR, + SLG_GAME_VERSION_DIF, + SLG_DELETE_ALL_SAVE_GAMES, //10 + SLG_SAVED_GAME_VERSION_DIF, + SLG_BOTH_GAME_AND_SAVED_GAME_DIF, + SLG_CONFIRM_SAVE, + SLG_CONFIRM_LOAD, + SLG_NOT_ENOUGH_HARD_DRIVE_SPACE, //15 + SLG_SAVING_GAME_MESSAGE, + SLG_NORMAL_GUNS, + SLG_ADDITIONAL_GUNS, + SLG_REALISTIC, + SLG_SCIFI, //20 + + SLG_DIFF, + SLG_PLATINUM, + + SLG_BR_QUALITY_TEXT, + SLG_BR_GOOD_TEXT, + SLG_BR_GREAT_TEXT, + SLG_BR_EXCELLENT_TEXT, + SLG_BR_AWESOME_TEXT, + + SLG_INV_RES_ERROR, + SLG_INV_CUSTUM_ERROR, + + SLG_SQUAD_SIZE_RES_ERROR, + + SLG_BR_QUANTITY_TEXT, + + TEXT_NUM_SLG_TEXT, +}; +extern STR16 zSaveLoadText[]; + + + +//OptionScreen.h +// defines used for the zOptionsText +enum +{ + OPT_SAVE_GAME, + OPT_LOAD_GAME, + OPT_MAIN_MENU, + OPT_NEXT, + OPT_PREV, + OPT_DONE, + OPT_113_FEATURES, + OPT_NEW_IN_113, + OPT_OPTIONS, + OPT_SOUND_FX, + OPT_SPEECH, + OPT_MUSIC, + OPT_RETURN_TO_MAIN, + OPT_NEED_AT_LEAST_SPEECH_OR_SUBTITLE_OPTION_ON, + TEXT_NUM_OPT_TEXT, +}; + +extern STR16 zOptionsText[]; + +extern STR16 z113FeaturesScreenText[]; // main UI text +extern STR16 z113FeaturesToggleText[]; // toggle button text +extern STR16 z113FeaturesHelpText[]; // hover text +extern STR16 z113FeaturesPanelText[]; // left panel text + +//used with the gMoneyStatsDesc[] +enum +{ + MONEY_DESC_AMOUNT, + MONEY_DESC_REMAINING, + MONEY_DESC_AMOUNT_2_SPLIT, + MONEY_DESC_TO_SPLIT, + + MONEY_DESC_PLAYERS, + MONEY_DESC_BALANCE, + MONEY_DESC_AMOUNT_2_WITHDRAW, + MONEY_DESC_TO_WITHDRAW, + TEXT_NUM_MONEY_DESC, +}; + + +// used with gzMoneyWithdrawMessageText +enum +{ + MONEY_TEXT_WITHDRAW_MORE_THEN_MAXIMUM, + CONFIRMATION_TO_DEPOSIT_MONEY_TO_ACCOUNT, + TEXT_NUM_MONEY_WITHDRAW +}; + + + +// Game init option screen +enum +{ + GIO_INITIAL_GAME_SETTINGS, + + GIO_GAME_STYLE_TEXT, + GIO_REALISTIC_TEXT, + GIO_SCI_FI_TEXT, + GIO_PLATINUM_TEXT, + + GIO_GUN_OPTIONS_TEXT, + GIO_GUN_NUT_TEXT, + GIO_REDUCED_GUNS_TEXT, + + GIO_DIF_LEVEL_TEXT, + GIO_EASY_TEXT, + GIO_MEDIUM_TEXT, + GIO_HARD_TEXT, + GIO_INSANE_TEXT, + + GIO_START_TEXT, + GIO_CANCEL_TEXT, + + GIO_GAME_SAVE_STYLE_TEXT, + GIO_SAVE_ANYWHERE_TEXT, + GIO_IRON_MAN_TEXT, + GIO_DISABLED_FOR_THE_DEMO_TEXT, + + GIO_BR_QUALITY_TEXT, + GIO_BR_GOOD_TEXT, + GIO_BR_GREAT_TEXT, + GIO_BR_EXCELLENT_TEXT, + GIO_BR_AWESOME_TEXT, + + GIO_INV_TEXT, + GIO_INV_OLD_TEXT, + GIO_INV_NEW_TEXT, + GIO_LOAD_MP_GAME, + GIO_INITIAL_GAME_SETTINGS_MP, + //////////////////////////////////// + // SANDRO - added following + GIO_TRAITS_TEXT, + GIO_TRAITS_OLD_TEXT, + GIO_TRAITS_NEW_TEXT, + GIO_IMP_NUMBER_TITLE_TEXT, + GIO_IMP_NUMBER_1, + GIO_IMP_NUMBER_2, + GIO_IMP_NUMBER_3, + GIO_IMP_NUMBER_4, + GIO_IMP_NUMBER_5, + GIO_IMP_NUMBER_6, + GIO_DROPALL_TITLE_TEXT, + GIO_DROPALL_OFF_TEXT, + GIO_DROPALL_ON_TEXT, + GIO_TERRORISTS_TITLE_TEXT, + GIO_TERRORISTS_RANDOM_TEXT, + GIO_TERRORISTS_ALL_TEXT, + GIO_CACHES_TITLE_TEXT, + GIO_CACHES_RANDOM_TEXT, + GIO_CACHES_ALL_TEXT, + GIO_PROGRESS_TITLE_TEXT, + GIO_PROGRESS_VERY_SLOW_TEXT, + GIO_PROGRESS_SLOW_TEXT, + GIO_PROGRESS_NORMAL_TEXT, + GIO_PROGRESS_FAST_TEXT, + GIO_PROGRESS_VERY_FAST_TEXT, + + // WANNE: New strings for start new game screen (for NAS) + GIO_INV_SETTING_OLD_TEXT, + GIO_INV_SETTING_NEW_TEXT, + GIO_INV_SETTING_NEW_NAS_TEXT, + + // WANNE: Squad size + GIO_SQUAD_SIZE_TITLE_TEXT, + GIO_SQUAD_SIZE_6_TEXT, + GIO_SQUAD_SIZE_8_TEXT, + GIO_SQUAD_SIZE_10_TEXT, + + //GIO_FAST_BR_TITLE_TEXT, + + //Inventory AP Cost + GIO_INVENTORY_AP_TITLE_TEXT, + + GIO_NCTH_TITLE_TEXT, + GIO_IIS_TITLE_TEXT, + GIO_BACKGROUND_TITLE_TEXT, + GIO_FOODSYSTEM_TITLE_TEXT, + GIO_BR_QUANTITY_TEXT, + + // anv: new iron man modes + GIO_ALMOST_IRON_MAN_TEXT, + GIO_EXTREME_IRON_MAN_TEXT, + GIO_ULTIMATE_IRON_MAN_TEXT, + + //////////////////////////////////// + TEXT_NUM_GIO_TEXT +}; +extern STR16 gzGIOScreenText[]; + +// OJW - 20081129 +// Multiplayer Join Screen +enum +{ + MPJ_TITLE_TEXT, + MPJ_JOIN_TEXT, + MPJ_HOST_TEXT, + MPJ_CANCEL_TEXT, + MPJ_REFRESH_TEXT, + MPJ_HANDLE_TEXT, + MPJ_SERVERIP_TEXT, + MPJ_SERVERPORT_TEXT, + MPJ_SERVERNAME_TEXT, + MPJ_NUMPLAYERS_TEXT, + MPJ_SERVERVER_TEXT, + MPJ_GAMETYPE_TEXT, + MPJ_PING_TEXT, + MPJ_HANDLE_INVALID, + MPJ_SERVERIP_INVALID, + MPJ_SERVERPORT_INVALID, + TEXT_NUM_MPJ_TEXT +}; + +extern STR16 gzMPJHelpText[]; + +extern STR16 gzMPJScreenText[]; +//Multiplayer Host Screen +enum +{ + MPH_TITLE_TEXT, + MPH_START_TEXT, + MPH_CANCEL_TEXT, + MPH_SERVERNAME_TEXT, + MPH_GAMETYPE_TEXT, + MPH_DEATHMATCH_TEXT, + MPH_TEAMDM_TEXT, + MPH_COOP_TEXT, + MPH_NUMPLAYERS_TEXT, + MPH_SQUADSIZE_TEXT, + MPH_MERCSELECT_TEXT, + MPH_RANDOMMERCS_TEXT, + MPH_PLAYERMERCS_TEXT, + MPH_BALANCE_TEXT, + MPH_SAMEMERC_TEXT, + MPH_RPTMERC_TEXT, + MPH_BOBBYRAY_TEXT, + MPH_RNDMSTART_TEXT, + MPH_SERVERNAME_INVALID, + MPH_MAXPLAYERS_INVALID, + MPH_SQUADSIZE_INVALID, + MPH_TIME_TEXT, + MPH_TIME_INVALID, + MPH_CASH_INVALID, + MPH_DMG_TEXT, + MPH_DMG_INVALID, + MPH_TIMER_TEXT, + MPH_TIMER_INVALID, + MPH_ENABLECIV_TEXT, + MPH_USENIV_TEXT, + MPH_OVERRIDEMAXAI_TEXT, + MPH_SYNC_GAME_DIRECTORY, + MPH_FILE_TRANSFER_DIR_TEXT, + MPH_FILE_TRANSFER_DIR_INVALID, + MPH_FILE_TRANSFER_DIR_TEXT_ADDITIONAL, + MPH_FILE_TRANSFER_DIR_NOT_EXIST, + MPH_1, + MPH_2, + MPH_3, + MPH_4, + MPH_5, + MPH_6, + MPH_YES, + MPH_NO, + MPH_MORNING, + MPH_AFTERNOON, + MPH_NIGHT, + MPH_CASH_LOW, + MPH_CASH_MEDIUM, + MPH_CASH_HIGH, + MPH_CASH_UNLIMITED, + MPH_TIME_NEVER, + MPH_TIME_SLOW, + MPH_TIME_MEDIUM, + MPH_TIME_FAST, + MPH_DAMAGE_VERYLOW, + MPH_DAMAGE_LOW, + MPH_DAMAGE_NORMAL, + MPH_HIRE_RANDOM, + MPH_HIRE_NORMAL, + MPH_EDGE_RANDOM, + MPH_EDGE_SELECTABLE, + MPH_DISABLE, + MPH_ALLOW, + TEXT_NUM_MPH_TEXT, +}; +extern STR16 gzMPHScreenText[]; +enum +{ + MPS_TITLE_TEXT, + MPS_CONTINUE_TEXT, + MPS_CANCEL_TEXT, + MPS_PLAYER_TEXT, + MPS_KILLS_TEXT, + MPS_DEATHS_TEXT, + MPS_AITEAM_TEXT, + MPS_HITS_TEXT, + MPS_MISSES_TEXT, + MPS_ACCURACY_TEXT, + MPS_DMGDONE_TEXT, + MPS_DMGTAKEN_TEXT, + MPS_WAITSERVER_TEXT, + TEXT_NUM_MPS_TEXT, +}; +extern STR16 gzMPSScreenText[]; +enum +{ + MPC_CANCEL_TEXT, + MPC_CONNECTING_TEXT, + MPC_GETSETTINGS_TEXT, + MPC_DOWNLOADING_TEXT, + MPC_HELP1_TEXT, + MPC_HELP2_TEXT, + MPC_READY_TEXT, + TEXT_NUM_MPC_TEXT, +}; +extern STR16 gzMPCScreenText[]; +// Multiplayer Starting Edges +enum +{ + MP_EDGE_NORTH, + MP_EDGE_EAST, + MP_EDGE_SOUTH, + MP_EDGE_WEST, + MP_EDGE_CENTER, + MAX_EDGES, +}; +extern STR16 gszMPEdgesText[]; +// MP TEAM NAMES +enum +{ + MP_TEAM_1, + MP_TEAM_2, + MP_TEAM_3, + MP_TEAM_4, + MAX_MP_TEAMS, +}; +extern STR16 gszMPTeamNames[]; + +extern STR16 gzMPChatToggleText[]; + +extern STR16 gzMPChatboxText[]; + +enum +{ + LAPTOP_BN_HLP_TXT_VIEW_EMAIL, + LAPTOP_BN_HLP_TXT_BROWSE_VARIOUS_WEB_SITES, + LAPTOP_BN_HLP_TXT_VIEW_FILES_AND_EMAIL_ATTACHMENTS, + LAPTOP_BN_HLP_TXT_READ_LOG_OF_EVENTS, + LAPTOP_BN_HLP_TXT_VIEW_TEAM_INFO, + LAPTOP_BN_HLP_TXT_VIEW_FINANCIAL_SUMMARY_AND_HISTORY, + LAPTOP_BN_HLP_TXT_CLOSE_LAPTOP, + + LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_MAIL, + LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_FILE, + + + BOOKMARK_TEXT_ASSOCIATION_OF_INTERNATION_MERCENARIES, + BOOKMARK_TEXT_BOBBY_RAY_ONLINE_WEAPON_MAIL_ORDER, + BOOKMARK_TEXT_INSTITUTE_OF_MERCENARY_PROFILING, + BOOKMARK_TEXT_MORE_ECONOMIC_RECRUITING_CENTER, + BOOKMARK_TEXT_MCGILLICUTTY_MORTUARY, + BOOKMARK_TEXT_UNITED_FLORAL_SERVICE, + BOOKMARK_TEXT_INSURANCE_BROKERS_FOR_AIM_CONTRACTS, + TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT +}; + + +//enums for the help screen +enum +{ + HLP_SCRN_TXT__EXIT_SCREEN, + TEXT_NUM_HLP +}; +extern STR16 gzHelpScreenText[]; + + +extern STR16 gzLaptopHelpText[]; + + +extern STR16 gzMoneyWithdrawMessageText[]; +extern STR16 gzCopyrightText[]; + + + +//enums used for the mapscreen inventory messages +enum +{ + MAPINV_MERC_ISNT_CLOSE_ENOUGH, + MAPINV_CANT_SELECT_MERC, + MAPINV_NOT_IN_SECTOR_TO_TAKE, + MAPINV_CANT_PICKUP_IN_COMBAT, + MAPINV_CANT_DROP_IN_COMBAT, + MAPINV_NOT_IN_SECTOR_TO_DROP, + TEXT_NUM_MAPINV +}; + + +//the laptop broken link site +enum +{ + BROKEN_LINK_TXT_ERROR_404, + BROKEN_LINK_TXT_SITE_NOT_FOUND, + TEXT_NUM_BROKEN_LINK, +}; +extern STR16 BrokenLinkText[]; + +//Bobby rays page for recent shipments +enum +{ + BOBBYR_SHIPMENT__TITLE, + BOBBYR_SHIPMENT__ORDER_NUM, + BOBBYR_SHIPMENT__NUM_ITEMS, + BOBBYR_SHIPMENT__ORDERED_ON, + TEXT_NUM_BOBBYR_SHIPMENT, +}; + +extern STR16 gzBobbyRShipmentText[]; + + +enum +{ + GIO_CFS_NOVICE, + GIO_CFS_EXPERIENCED, + GIO_CFS_EXPERT, + GIO_CFS_INSANE, + TEXT_NUM_GIO_CFS, +}; +extern STR16 zGioDifConfirmText[]; + + +enum +{ + CRDT_CAMFIELD, + CRDT_SHAWN, + CRDT_KRIS, + CRDT_IAN, + CRDT_LINDA, + CRDT_ERIC, + CRDT_LYNN, + CRDT_NORM, + CRDT_GEORGE, + CRDT_STACEY, + CRDT_SCOTT, + CRDT_EMMONS, + CRDT_DAVE, + CRDT_ALEX, + CRDT_JOEY, + + NUM_PEOPLE_IN_CREDITS, +}; + +STR16 gzCreditNames[]; +STR16 gzCreditNameTitle[]; +STR16 gzCreditNameFunny[]; + + +extern STR16 GetWeightUnitString( void ); +FLOAT GetWeightBasedOnMetricOption( UINT32 uiObjectWeight ); + + +//SB: new 1.13 messages +extern STR16 New113Message[]; +extern STR16 New113MERCMercMailTexts[]; +extern STR16 MissingIMPSkillsDescriptions[]; + +extern STR16 New113AIMMercMailTexts[]; // WANNE: new WF Merc text, that does not exist in Email.edt + +// HEADROCK: HAM Messages +extern STR16 New113HAMMessage[]; +enum +{ + MSG113_STORM_STARTED, + MSG113_STORM_ENDED, + MSG113_RAIN_STARTED, + MSG113_RAIN_ENDED, + MSG113_WATHCHOUTFORSNIPERS, + MSG113_SUPPRESSIONFIRE, + MSG113_BRST, + MSG113_AUTO, + MSG113_GL, + MSG113_GL_BRST, + MSG113_GL_AUTO, + MSG113_UB, + MSG113_UB_BRST, + MSG113_UB_AUTO, + MSG113_BAYONET, + MSG113_SNIPER, + MSG113_UNABLETOSPLITMONEY, + MSG113_ARRIVINGREROUTED, + MSG113_DELETED, + MSG113_DELETE_ALL, + MSG113_SOLD, + MSG113_SOLD_ALL, + MSG113_CHECK_GOGGLES, + MSG113_RTM_IN_COMBAT_ALREADY, + MSG113_RTM_NO_ENEMIES, + MSG113_RTM_SNEAKING_OFF, + MSG113_RTM_SNEAKING_ON, + MSG113_RTM_ENEMIES_SPOOTED, + // added by SANDRO + MSG113_THIEF_SUCCESSFUL, + MSG113_NOT_ENOUGH_APS_TO_STEAL_ALL, + MSG113_DO_WE_WANT_SURGERY_FIRST, + MSG113_DO_WE_WANT_SURGERY, + MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT, + MSG113_SURGERY_BEFORE_PATIENT_ASSIGNMENT, + MSG113_SURGERY_ON_TACTICAL_AUTOBANDAGE, + MSG113_DO_WE_WANT_SURGERY_FIRST_BLOODBAG, + MSG113_DO_WE_WANT_SURGERY_BLOODBAG, + MSG113_SURGERY_BEFORE_DOCTOR_ASSIGNMENT_BLOODBAG, + MSG113_SURGERY_FINISHED, + MSG113_LOSES_ONE_POINT_MAX_HEALTH, + MSG113_LOSES_X_POINTS_MAX_HEALTH, + MSG113_BLINDED_BY_BLAST, + MSG113_REGAINED_ONE_POINTS_OF_STAT, + MSG113_REGAINED_X_POINTS_OF_STATS, + MSG113_ENEMY_AMBUSH_PREVENTED, + MSG113_BLOODCATS_AMBUSH_PREVENTED, + MSG113_SOLDIER_HIT_TO_GROIN, + MSG113_ENEMY_FOUND_DEAD_BODY, + MSG113_AMMO_SPEC_STRING, + MSG113_INVENTORY_APS_INSUFFICIENT, + MSG113_HINT_TEXT, + MSG113_SURRENDER_VALUES, + + MSG113_CANNOT_USE_SKILL, + MSG113_CANNOT_BUILD, + MSG113_CANNOT_SPOT_LOCATION, + MSG113_INCORRECT_GRIDNO_ARTILLERY, + MSG113_RADIO_JAMMED_NO_COMMUNICATION, + MSG113_RADIO_ACTION_FAILED, + MSG113_NOT_ENOUGH_MORTAR_SHELLS, + MSG113_NO_SIGNAL_SHELL, + MSG113_NO_DEFAULT_SHELL, + MSG113_NO_MORTARS, + MSG113_ALREADY_JAMMING, + MSG113_ALREADY_LISTENING, + MSG113_ALREADY_SPOTTING, + MSG113_ALREADY_SCANNING, + MSG113_COULD_NOT_APPLY, + MSG113_ORDERS_REINFORCEMENTS, + MSG113_RADIO_NO_ENERGY, + MSG113_WORKING_RADIO_SET, + MSG113_BINOCULAR, + MSG113_PATIENCE, + MSG113_SHIELD_DESTROYED, + MSG113_FIREMODE_GL_DELAYED, + MSG113_BLOODBAGOPTIONS_YESSTAR, + MSG113_BLOODBAGOPTIONS_YES, + MSG113_BLOODBAGOPTIONS_NO, + MSG113_X_APPLY_Y_TO_Z, + + TEXT_NUM_MSG113, +}; + +extern STR16 gzTransformationMessage[]; + +//CHRISL: NewInv messages +extern STR16 NewInvMessage[]; + +// WANNE - MP: New multiplayer messages +extern STR16 MPServerMessage[]; +extern STR16 MPClientMessage[]; + +// WANNE: Some Chinese specific strings that needs to be in unicode! +inline constexpr STR16 ChineseSpecString1 = L"%%"; //defined in _ChineseText.cpp as this file is already unicode +inline constexpr STR16 ChineseSpecString2 = L"*%3d%%%%"; //defined in _ChineseText.cpp as this file is already unicode +inline constexpr STR16 ChineseSpecString3 = L"%d%%"; //defined in _ChineseText.cpp as this file is already unicode +inline constexpr STR16 ChineseSpecString4 = L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s"; +inline constexpr STR16 ChineseSpecString5 = L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s"; +inline constexpr STR16 ChineseSpecString6 = L"%s [%d%%]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s"; +inline constexpr STR16 ChineseSpecString7 = L"%s [%d%%]\n%s %1.1f %s"; +inline constexpr STR16 ChineseSpecString8 = L"%s (%s) [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s\n%s %.2f%%"; // added by Flugente +inline constexpr STR16 ChineseSpecString9 = L"%s [%d%%(%d%%)]\n%s %d\n%s %d\n%s %1.1f %s"; // added by Flugente +inline constexpr STR16 ChineseSpecString10 = L"%s [%d%%(%d%%)]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s"; // added by Flugente +inline constexpr STR16 ChineseSpecString11 = L"%s (%s) [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s"; // added by Flugente +inline constexpr STR16 ChineseSpecString12 = L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s\n%s %.2f%%"; // added by Flugente + +enum +{ + NIV_CAN_NOT_PICKUP, + NIV_NO_DROP, + NIV_NO_PACK, + NIV_ZIPPER_COMBAT, + NIV_ZIPPER_NO_MOVE, + NIV_SELL_ALL, + NIV_DELETE_ALL, + NIV_NO_CLIMB, + NIV_ALL_DROP, + NIV_ALL_PICKUP, + NIV_SOLDIER_DROP, + NIV_SOLDIER_PICKUP, + TEXT_NUM_NIV, +}; + +// OJW - MP +extern STR16 gszMPMapscreenText[]; + +//SB +enum +{ + ADDTEXT_16BPP_REQUIRED, + ADDTEXT_DIFFRES_REQUIRED, + ADDTEXT_WRONG_TEAM_SIZE, + ERROR_MAX_MERCSVEHICLES, + ERROR_MAX_ENEMIES, + ERROR_MAX_CREATURES, + ERROR_MAX_MILITIA, + ERROR_MAX_CIVILIANS, +}; +extern STR16 Additional113Text[]; +extern STR16 ranks[]; +//extern STR16 ranks[]; + +enum +{ + POCKET_POPUP_GRENADE_LAUNCHERS, + POCKET_POPUP_ROCKET_LAUNCHERS, + POCKET_POPUP_MEELE_AND_THROWN, + POCKET_POPUP_NO_AMMO, + POCKET_POPUP_NO_GUNS, + POCKET_POPUP_MOAR +}; +extern STR16 gszPocketPopupText[]; + +// rftr: better LBE tooltips +extern STR16 gLbeStatsDesc[14]; + +// Flugente: backgrounds +extern STR16 szBackgroundText_Flags[]; +extern STR16 szBackgroundText_Value[]; +extern STR16 szSoldierClassName[]; + +// Flugente: personality +enum +{ + PERSONALITYTEXT_YOULOOK, + PERSONALITYTEXT_ANDAPPEARANCEIS, + PERSONALITYTEXT_IMPORTANTTOYOU, + PERSONALITYTEXT_YOUHAVE, + PERSONALITYTEXT_ANDCARE, + PERSONALITYTEXT_ABOUTTHAT, + PERSONALITYTEXT_YOUARE, + PERSONALITYTEXT_ADHATEEVERYONE, + PERSONALITYTEXT_DOT, + PERSONALITYTEXT_RACISTAGAINSTNON, + PERSONALITYTEXT_PEOPLE, + PERSONALITYTEXT_MAX, +}; + +extern STR16 szBackgroundTitleText[]; +extern STR16 szPersonalityTitleText[]; +extern STR16 szPersonalityDisplayText[]; +extern STR16 szPersonalityHelpText[]; +extern STR16 szRaceText[]; +extern STR16 szAppearanceText[]; +extern STR16 szRefinementText[]; +extern STR16 szRefinementTextTypes[]; +extern STR16 szNationalityText[]; +extern STR16 szNationalityTextAdjective[]; +extern STR16 szNationalityText_Special[]; +extern STR16 szCareLevelText[]; +extern STR16 szRacistText[]; +extern STR16 szSexistText[]; + +enum +{ + TEXT_SKILL_DENIAL_REQ, + TEXT_SKILL_DENIAL_X_AP, + TEXT_SKILL_DENIAL_X_TXT, + TEXT_SKILL_DENIAL_X_TXT_ORHIGHER, + TEXT_SKILL_DENIAL_X_TXT_ORHIGHER_OR, + TEXT_SKILL_DENIAL_X_MINUTES, + TEXT_SKILL_DENIAL_NOMORTAR, + TEXT_SKILL_DENIAL_ITSCOMPLICATED, + TEXT_SKILL_DENIAL_NODEMON, + TEXT_SKILL_DENIAL_GUNTRAIT, + TEXT_SKILL_DENIAL_AIMEDGUN, + TEXT_SKILL_DENIAL_PRONEPERSONORCORPSE, + TEXT_SKILL_DENIAL_CROUCH, + TEXT_SKILL_DENIAL_FREEHANDS, + TEXT_SKILL_DENIAL_COVERTTRAIT, + TEXT_SKILL_DENIAL_ENEMYSECTOR, + TEXT_SKILL_DENIAL_SINGLEMERC, + TEXT_SKILL_DENIAL_NOALARM, + TEXT_SKILL_DENIAL_DISGUISE_CIV_OR_MIL, + TEXT_SKILL_DENIAL_NOT_DURING_INTERRUPT, + TEXT_SKILL_DENIAL_TURNED_ENEMY, + TEXT_SKILL_DENIAL_ENEMY, + TEXT_SKILL_DENIAL_SURFACELEVEL, + TEXT_SKILL_DENIAL_STRATEGIC_SUSPICION, + TEXT_SKILL_DENIAL_NOT_DISGUISED, + TEXT_SKILL_DENIAL_NOT_IN_COMBAT, + TEXT_SKILL_DENIAL_FRIENDLY_SECTOR, + + TEXT_SKILL_DENIAL_MAX, +}; + +// Flugente: campaign history website +enum +{ + TEXT_CAMPAIGNHISTORY_NAME_PRESSORGANISATION, + TEXT_CAMPAIGNHISTORY_NAME_MINISTRY, + TEXT_CAMPAIGNHISTORY_NAME_REBEL, + TEXT_CAMPAIGNHISTORY_NAME_NEUTRAL_1, + TEXT_CAMPAIGNHISTORY_NAME_NEUTRAL_2, + TEXT_CAMPAIGNHISTORY_NAME_RIS, + + TEXT_CAMPAIGNHISTORY_NAME_PRESSORGANISATION_SUBTITLE, + TEXT_CAMPAIGNHISTORY_DESCRIPTION_1, + //TEXT_CAMPAIGNHISTORY_DESCRIPTION_2, + //TEXT_CAMPAIGNHISTORY_DESCRIPTION_3, + + TEXT_CAMPAIGNHISTORY_LINK_CONFLICTSUMMARY, + TEXT_CAMPAIGNHISTORY_LINK_NEWS_MOSTIMPORTANT, + TEXT_CAMPAIGNHISTORY_LINK_NEWS_RECENT, + TEXT_CAMPAIGNHISTORY_LINK_HOME, + + TEXT_CAMPAIGNHISTORY_MAX, +}; + +extern STR16 szCampaignHistoryWebSite[]; + +enum +{ + TEXT_CAMPAIGNHISTORY_DETAIL_SETTING, + TEXT_CAMPAIGNHISTORY_DETAIL_REBELFORCES, + TEXT_CAMPAIGNHISTORY_DETAIL_ARMY, + + TEXT_CAMPAIGNHISTORY_DETAIL_ATTACKED, + TEXT_CAMPAIGNHISTORY_DETAIL_AMBUSHED, + TEXT_CAMPAIGNHISTORY_DETAIL_AIRDROPPED, + + TEXT_CAMPAIGNHISTORY_DETAIL_ATTACKERDIR, + TEXT_CAMPAIGNHISTORY_DETAIL_DEFENDERDIR, + TEXT_CAMPAIGNHISTORY_DETAIL_ATTACKERANDDEFENDERDIR, + TEXT_CAMPAIGNHISTORY_DETAIL_NORTH, + TEXT_CAMPAIGNHISTORY_DETAIL_EAST, + TEXT_CAMPAIGNHISTORY_DETAIL_SOUTH, + TEXT_CAMPAIGNHISTORY_DETAIL_WEST, + TEXT_CAMPAIGNHISTORY_DETAIL_AND, // " and " text + TEXT_CAMPAIGNHISTORY_DETAIL_UNKNOWNLOCATION, + + TEXT_CAMPAIGNHISTORY_DETAIL_BUILDINGDAMAGE, + TEXT_CAMPAIGNHISTORY_DETAIL_BUILDINGANDCIVDAMAGE, + TEXT_CAMPAIGNHISTORY_DETAIL_REINFORCE_BOTH, + TEXT_CAMPAIGNHISTORY_DETAIL_REINFORCE, + TEXT_CAMPAIGNHISTORY_DETAIL_CHEMICAL_BOTH, + TEXT_CAMPAIGNHISTORY_DETAIL_CHEMICAL, + TEXT_CAMPAIGNHISTORY_DETAIL_TANKS_BOTH, + TEXT_CAMPAIGNHISTORY_DETAIL_TANKS, + TEXT_CAMPAIGNHISTORY_DETAIL_SNIPERS_BOTH, + TEXT_CAMPAIGNHISTORY_DETAIL_SNIPERS, + TEXT_CAMPAIGNHISTORY_DETAIL_SAMSITESABOTAGED, + TEXT_CAMPAIGNHISTORY_DETAIL_SPY_ENEMY, + TEXT_CAMPAIGNHISTORY_DETAIL_SPY_PLAYER, + + TEXT_CAMPAIGNHISTORY_DETAIL_MAX, +}; + +extern STR16 szCampaignHistoryDetail[]; + +enum +{ + TEXT_CAMPAIGNHISTORY_TIME_DEEPNIGHT, + TEXT_CAMPAIGNHISTORY_TIME_DAWN, + TEXT_CAMPAIGNHISTORY_TIME_EARLYMORNING, + TEXT_CAMPAIGNHISTORY_TIME_MORNING, + TEXT_CAMPAIGNHISTORY_TIME_NOON, + TEXT_CAMPAIGNHISTORY_TIME_AFTERNOON, + TEXT_CAMPAIGNHISTORY_TIME_EVENING, + TEXT_CAMPAIGNHISTORY_TIME_NIGHT, +}; + +extern STR16 szCampaignHistoryTimeString[]; + +extern STR16 szCampaignHistoryMoneyTypeString[]; +extern STR16 szCampaignHistoryConsumptionTypeString[]; + +enum +{ + TEXT_CAMPAIGNHISTORY_RESULT_ONESIDED_REBEL, + TEXT_CAMPAIGNHISTORY_RESULT_EASY_REBEL, + TEXT_CAMPAIGNHISTORY_RESULT_EASY_REBEL_PRISONER, + TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_REBEL, + TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_REBEL_PRISONER, + TEXT_CAMPAIGNHISTORY_RESULT_HARD_REBEL, + + TEXT_CAMPAIGNHISTORY_RESULT_ONESIDED_ARMY_NUMBERS, + TEXT_CAMPAIGNHISTORY_RESULT_ONESIDED_ARMY_TRAINING, + TEXT_CAMPAIGNHISTORY_RESULT_EASY_ARMY_NUMBERS, + TEXT_CAMPAIGNHISTORY_RESULT_EASY_ARMY_TRAINING, + TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_ARMY_NUMBERS, + TEXT_CAMPAIGNHISTORY_RESULT_MEDIUM_ARMY_TRAINING, + TEXT_CAMPAIGNHISTORY_RESULT_HARD_ARMY, +}; + +extern STR16 szCampaignHistoryResultString[]; + +enum +{ + TEXT_CAMPAIGNHISTORY_IMPORTANCE_IRRELEVANT, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_INSIGNIFICANT, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_NOTABLE, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_NOTEWORTHY, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_SIGNIFICANT, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_INTERESTING, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_IMPORTANT, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_VERYIMPORTANT, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_GRAVE, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_MAJOR, + TEXT_CAMPAIGNHISTORY_IMPORTANCE_MOMENTOUS, +}; + +extern STR16 szCampaignHistoryImportanceString[]; + +enum +{ + WEBPAGE_CAMPAIGNHISTORY_KILLED, + WEBPAGE_CAMPAIGNHISTORY_WOUNDED, + WEBPAGE_CAMPAIGNHISTORY_PRISONERS, + WEBPAGE_CAMPAIGNHISTORY_SHOTSFIRED, + + WEBPAGE_CAMPAIGNHISTORY_MONEYEARNED, + WEBPAGE_CAMPAIGNHISTORY_CONSUMPTION, + WEBPAGE_CAMPAIGNHISTORY_LOSSES, + WEBPAGE_CAMPAIGNHISTORY_PARTICIPANTS, + + WEBPAGE_CAMPAIGNHISTORY_PROMOTIONS, + WEBPAGE_CAMPAIGNHISTORY_SUMMARY, + WEBPAGE_CAMPAIGNHISTORY_DETAIL, + WEBPAGE_CAMPAIGNHISTORY_PREVIOUS, + + WEBPAGE_CAMPAIGNHISTORY_NEXT, + WEBPAGE_CAMPAIGNHISTORY_INCIDENT, + WEBPAGE_CAMPAIGNHISTORY_DAY, +}; + +extern STR16 szCampaignHistoryWebpageString[]; + +// Flugente: wacky operation names for campaign stats +#define CAMPAIGNSTATS_OPERATION_NUM_PREFIX 140 +#define CAMPAIGNSTATS_OPERATION_NUM_SUFFIX 140 + +extern STR16 szCampaignStatsOperationPrefix[]; +extern STR16 szCampaignStatsOperationSuffix[]; + + +// Flugente: merc compare website +#define TEXT_MERCCOMPARE_CUSTOMERSTATEMENTS 7 // number of customer quotes, each with an additional short character name + +enum +{ + // main page + TEXT_MERCCOMPARE_WEBSITENAME, + TEXT_MERCCOMPARE_SLOGAN, + + // links to other pages + TEXT_MERCCOMPARE_SUBSITE1, + + TEXT_MERCCOMPARE_INTRO1 = TEXT_MERCCOMPARE_SUBSITE1 + 5, + TEXT_MERCCOMPARE_BULLET1, + TEXT_MERCCOMPARE_BULLET2, + TEXT_MERCCOMPARE_BULLET3, + TEXT_MERCCOMPARE_BULLET4, + TEXT_MERCCOMPARE_INTRO2, + + // customer quotes + TEXT_MERCCOMPARE_QUOTEINTRO, + TEXT_MERCCOMPARE_QUOTE1, + TEXT_MERCCOMPARE_QUOTE1NAME, + + // analyze + TEXT_MERCCOMPARE_DROPDOWNTEXT = TEXT_MERCCOMPARE_QUOTE1 + 2 * TEXT_MERCCOMPARE_CUSTOMERSTATEMENTS, + TEXT_MERCCOMPARE_DROPDOWNTEXT_MATRIX, + + // error messages + TEXT_MERCCOMPARE_ERROR_NOBODYTHERE, + + TEXT_MERCCOMPARE_MAX, +}; + +extern STR16 szMercCompareWebSite[]; +extern STR16 szMercCompareEventText[]; + +// Flugente: WHO website +enum +{ + // main page + TEXT_WHO_WEBSITENAME, + TEXT_WHO_SLOGAN, + + // links to other pages + TEXT_WHO_SUBSITE1, + + TEXT_WHO_MAIN1 = TEXT_WHO_SUBSITE1 + 3, + + TEXT_WHO_CONTRACT1 = TEXT_WHO_MAIN1 + 3, + TEXT_WHO_CONTRACT_ACQUIRED_NOT = TEXT_WHO_CONTRACT1 + 4, + TEXT_WHO_CONTRACT_ACQUIRED, + TEXT_WHO_CONTRACT_BUTTON_SUBSCRIBE, + TEXT_WHO_CONTRACT_BUTTON_UNSUBSCRIBE, + + TEXT_WHO_TIPS1, + + TEXT_WHO_MAX = TEXT_WHO_TIPS1 + 8, +}; + +extern STR16 szWHOWebSite[]; + +// Flugente: PMC website +enum +{ + // main page + TEXT_PMC_WEBSITENAME, + TEXT_PMC_SLOGAN, + + // links to other pages + TEXT_PMC_SUBSITE1, + + TEXT_PMC_MAIN1 = TEXT_PMC_SUBSITE1 + 3, + + // team contracts + TEXT_PMC_CONTRACT_TEAM_INTRO = TEXT_PMC_MAIN1 + 7, + TEXT_PMC_CONTRACT_DROPDOWNTEXT, + TEXT_PMC_REGULAR, + TEXT_PMC_VETERAN, + + TEXT_PMC_DETAIL, + + TEXT_PMC_SELECTAREA = TEXT_PMC_DETAIL + 3, + TEXT_PMC_TOTALCOST, + TEXT_PMC_ETA, + TEXT_PMC_CONTRACTBUTTON, + + TEXT_PMC_CONFIRMATION, + TEXT_PMC_ARRIVAL, + TEXT_PMC_NEXTDEPLOYMENT, + TEXT_PMC_NODROPOFF, + + TEXT_PMC_MAX, +}; + +extern STR16 szPMCWebSite[]; + +extern STR16 szTacticalInventoryDialogString[]; +extern STR16 szTacticalCoverDialogString[]; +extern STR16 szTacticalCoverDialogPrintString[]; + +// OPINIONEVENT_MAX is 39 +// DOST_MAX is 17 + +extern STR16 szDynamicDialogueText[40][17]; + +// Flugente: dynamic dialogue +extern STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY[]; +extern STR16 szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE[]; +extern STR16 szDynamicDialogueText_DOST_SIDEWITH_VICTIM[]; +extern STR16 szDynamicDialogueText_DOST_SIDEWITH_CAUSE[]; + +extern STR16 szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT[]; +extern STR16 szDynamicDialogueText_GenderText[]; + +// Flugente: disease +enum +{ + // effect description + TEXT_DISEASE_EFFSTAT_AGI, + TEXT_DISEASE_EFFSTAT_DEX, + TEXT_DISEASE_EFFSTAT_STR, + TEXT_DISEASE_EFFSTAT_WIS, + TEXT_DISEASE_EFFSTAT_EXP, + + TEXT_DISEASE_AP, + TEXT_DISEASE_MAXBREATH, + TEXT_DISEASE_CARRYSTRENGTH, + TEXT_DISEASE_LIFEREGENHUNDREDS, + TEXT_DISEASE_NEEDTOSLEEP, + TEXT_DISEASE_DRINK, + TEXT_DISEASE_FOOD, + + // text when diagnosed + TEXT_DISEASE_DIAGNOSE_GENERAL, + TEXT_DISEASE_CURED, + + // menu entries + TEXT_DISEASE_DIAGNOSIS, + TEXT_DISEASE_TREATMENT, + TEXT_DISEASE_BURIAL, + TEXT_DISEASE_CANCEL, + + // (undiagnosed) + TEXT_DISEASE_UNDIAGNOSED, + + TEXT_DISEASE_PTSD_BUNS_SPECIAL, + TEXT_DISEASE_CONTAMINATION_FOUND, + TEXT_DISEASE_ADD_DISABILITY, + + TEXT_DISEASE_LIMITED_ARMS, + TEXT_DISEASE_LIMITED_ARMS_SPLINT, + TEXT_DISEASE_LIMITED_LEGS, + TEXT_DISEASE_LIMITED_LEGS_SPLINT, +}; + +enum +{ + TEXT_SPY_CONCEAL, + TEXT_SPY_GETINTEL, +}; + +extern STR16 szDiseaseText[]; +extern STR16 szSpyText[]; +extern STR16 szFoodText[]; + +extern STR16 szIMPGearWebSiteText[]; +extern STR16 szIMPGearPocketText[]; + +// Flugente: militia movement +extern STR16 szMilitiaStrategicMovementText[]; + +// Flugente: enemy heli/SAM +extern STR16 szEnemyHeliText[]; + +// Flugente: fortification +extern STR16 szFortificationText[]; + +// Flugente: militia website +enum +{ + // main page + TEXT_MILITIAWEBSITE_WEBSITENAME, + TEXT_MILITIAWEBSITE_SLOGAN, + + // links to other pages + TEXT_MILITIAWEBSITE_SUBSITE1, + + TEXT_MILITIAWEBSITE_MAIN1 = TEXT_MILITIAWEBSITE_SUBSITE1 + 3, + + TEXT_MILITIAWEBSITE_MAX, +}; + +extern STR16 szMilitiaWebSite[]; +extern STR16 szIndividualMilitiaBattleReportText[]; +extern STR16 szIndividualMilitiaTraitRequirements[]; +extern STR16 szIdividualMilitiaWebsiteText[]; +extern STR16 szIdividualMilitiaWebsiteFilterText_Dead[]; +extern STR16 szIdividualMilitiaWebsiteFilterText_Rank[] ; +extern STR16 szIdividualMilitiaWebsiteFilterText_Origin[]; +extern STR16 szIdividualMilitiaWebsiteFilterText_Sector[]; + +// Flugente: non-profile merchants +extern STR16 szNonProfileMerchantText[]; + +// Flugente: externalised weather +extern STR16 szWeatherTypeText[]; + +// Flugente: snakes +extern STR16 szSnakeText[]; + +// Flugente: militia resources +extern STR16 szSMilitiaResourceText[]; + +// Flugente: interactive actions +extern STR16 szInteractiveActionText[]; + +extern STR16 szLaptopStatText[]; +enum +{ + LAPTOP_STAT_TEXT_THREATEN_EFFECTIVENESS, + LAPTOP_STAT_TEXT_LEADERSHIP, + LAPTOP_STAT_TEXT_APPROACH_MODIFIER, + LAPTOP_STAT_TEXT_BACKGROUND_MODIFIER, + LAPTOP_STAT_TEXT_ASSERTIVE, + LAPTOP_STAT_TEXT_MALICIOUS, + LAPTOP_STAT_TEXT_GOOD_GUY, + LAPTOP_STAT_TEXT_REFUSES_TO_ATTACK_NON_HOSTILES, + LAPTOP_STAT_TEXT_FRIENDLY_APPROACH, + LAPTOP_STAT_TEXT_DIRECT_APPROACH, + LAPTOP_STAT_TEXT_THREATEN_APPROACH, + LAPTOP_STAT_TEXT_RECRUIT_APPROACH, + LAPTOP_STAT_TEXT_MERC_REGRESSES, + LAPTOP_STAT_TEXT_FAST, + LAPTOP_STAT_TEXT_AVERAGE, + LAPTOP_STAT_TEXT_SLOW, + LAPTOP_STAT_TEXT_HEALTH_SPEED, + LAPTOP_STAT_TEXT_STRENGTH_SPEED, + LAPTOP_STAT_TEXT_AGILITY_SPEED, + LAPTOP_STAT_TEXT_DEXTERITY_SPEED, + LAPTOP_STAT_TEXT_WISDOM_SPEED, + LAPTOP_STAT_TEXT_MARKSMANSHIP_SPEED, + LAPTOP_STAT_TEXT_EXPLOSIVES_SPEED, + LAPTOP_STAT_TEXT_LEADERSHIP_SPEED, + LAPTOP_STAT_TEXT_MEDICAL_SPEED, + LAPTOP_STAT_TEXT_MECHANICAL_SPEED, + LAPTOP_STAT_TEXT_EXPERIENCE_SPEED, +}; + +// Flugente: gear templates +extern STR16 szGearTemplateText[]; + +// Flugente: intel +enum +{ + // defaults + TEXT_INTEL_TITLE, + TEXT_INTEL_SUBTITLE, + TEXT_INTEL_LINK_1, + TEXT_INTEL_LINK_2, + + TEXT_INTEL_LINK_3, + + // buy info + TEXT_INTEL_BUDGET, + TEXT_INTEL_TEXT_1, + TEXT_INTEL_TEXT_2, + TEXT_INTEL_OFFER_1, + TEXT_INTEL_AIRREGION, + TEXT_INTEL_AIRREGION_BUY1, + TEXT_INTEL_AIRREGION_BUY2, + + TEXT_INTEL_DROPDOWN_HELPTEXT, + TEXT_INTEL_MAPREGION_1, + + // about us + TEXT_INTEL_ABOUTUS_1 = TEXT_INTEL_MAPREGION_1 + 16, + + TEXT_INTEL_ABOUTUS_MAX = TEXT_INTEL_ABOUTUS_1 + 6, + + // sell info + TEXT_INTEL_SELL_1 = TEXT_INTEL_ABOUTUS_MAX, + TEXT_INTEL_SELL_BUTTON_1, + TEXT_INTEL_SELL_BUTTON_2, + TEXT_INTEL_SELL_BUTTON_3, + + TEXT_INTEL_SELL_ALREADYGOT_1, + TEXT_INTEL_SELL_NOTHING_1, +}; + +extern STR16 szIntelWebsiteText[]; + +extern STR16 szIntelText[]; + +extern STR16 szChatTextSpy[]; +extern STR16 szChatTextEnemy[]; + +extern STR16 szMilitiaText[]; + +extern STR16 szFactoryText[]; + +extern STR16 szTurncoatText[]; + +extern STR16 szRebelCommandText[]; +extern STR16 szRebelCommandHelpText[]; +extern STR16 szRebelCommandAdminActionsText[]; +extern STR16 szRebelCommandDirectivesText[]; +extern STR16 szRebelCommandAgentMissionsText[]; + +extern STR16 szRobotText[]; +enum { + ROBOT_TEXT_CANNOT_CHANGE_INSTALLED_WEAPON, + ROBOT_TEXT_CANNOT_ADD_ATTACHMENTS, + ROBOT_TEXT_INSTALLED_WEAPON, + ROBOT_TEXT_SLOT_AMMO, + ROBOT_TEXT_SLOT_TARGETING, + ROBOT_TEXT_SLOT_CHASSIS, + ROBOT_TEXT_SLOT_UTILITY, + ROBOT_TEXT_SLOT_INVENTORY, + ROBOT_TEXT_NO_BONUS, + ROBOT_TEXT_LASER, + ROBOT_TEXT_NIGHT_VISION, + ROBOT_TEXT_CLEANING_KIT, + ROBOT_TEXT_CLEANING_KIT_DEPLETED, + ROBOT_TEXT_METAL_DETECTOR, + ROBOT_TEXT_XRAY, + ROBOT_TEXT_XRAY_ACTIVATED, + ROBOT_TEXT_RADIO, + ROBOT_TEXT_STAT_BONUSES, + ROBOT_TEXT_CAMO, + ROBOT_TEXT_PLATE, + ROBOT_TEXT_PLATE_DESTROYED, + ROBOT_TEXT_SKILL_GRANTED, +}; + +#define TACTICAL_INVENTORY_DIALOG_NUM 16 +#define TACTICAL_COVER_DIALOG_NUM 16 + +// Enumeration support +typedef struct Str8EnumLookupType { + int value; + const STR8 name; +} Str8EnumLookupType; + +typedef struct Str16EnumLookupType { + int value; + const STR16 name; +} Str16EnumLookupType; + +const STR8 EnumToString(int value, const Str8EnumLookupType *table); +const STR16 EnumToString(int value, const Str16EnumLookupType *table); +int StringToEnum(const STR8 value, const Str8EnumLookupType *table); +int StringToEnum(const STR8 value, const Str16EnumLookupType *table); +int StringToEnum(const STR16 value, const Str16EnumLookupType *table); + +void ParseCommandLine(const char *start,char **argv,char *args,int *numargs,int *numchars); +void ParseCommandLine(const wchar_t *start,wchar_t **argv,wchar_t *args,int *numargs,int *numchars); + +#endif + + +//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible +//these are dummy functions. Not all of these may be necessary. They are included for future possible useage +void this_is_the_ChineseText_public_symbol(void); +void this_is_the_DutchText_public_symbol(void); +void this_is_the_EnglishText_public_symbol(void); +void this_is_the_FrenchText_public_symbol(void); +void this_is_the_GermanText_public_symbol(void); +void this_is_the_ItalianText_public_symbol(void); +void this_is_the_PolishText_public_symbol(void); +void this_is_the_RussianText_public_symbol(void); + +void this_is_the_Ja25ChineseText_public_symbol(void); +void this_is_the_Ja25DutchText_public_symbol(void); +void this_is_the_Ja25EnglishText_public_symbol(void); +void this_is_the_Ja25FrenchText_public_symbol(void); +void this_is_the_Ja25GermanText_public_symbol(void); +void this_is_the_Ja25ItalianText_public_symbol(void); +void this_is_the_Ja25PolishText_public_symbol(void); +void this_is_the_Ja25RussianText_public_symbol(void); diff --git a/i18n/include/_Ja25DutchText.h b/i18n/include/_Ja25DutchText.h index 1520f1ae..d2815750 100644 --- a/i18n/include/_Ja25DutchText.h +++ b/i18n/include/_Ja25DutchText.h @@ -1,87 +1,87 @@ -#ifndef _JA25ENGLISHTEXT__H_ -#define _JA25ENGLISHTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25ENGLISHTEXT__H_ +#define _JA25ENGLISHTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/i18n/include/_Ja25EnglishText.h b/i18n/include/_Ja25EnglishText.h index 2f9ceff4..c65dff4b 100644 --- a/i18n/include/_Ja25EnglishText.h +++ b/i18n/include/_Ja25EnglishText.h @@ -1,88 +1,88 @@ -#ifndef _JA25ENGLISHTEXT__H_ -#define _JA25ENGLISHTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, - -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25ENGLISHTEXT__H_ +#define _JA25ENGLISHTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, + +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/i18n/include/_Ja25FrenchText.h b/i18n/include/_Ja25FrenchText.h index 1520f1ae..d2815750 100644 --- a/i18n/include/_Ja25FrenchText.h +++ b/i18n/include/_Ja25FrenchText.h @@ -1,87 +1,87 @@ -#ifndef _JA25ENGLISHTEXT__H_ -#define _JA25ENGLISHTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25ENGLISHTEXT__H_ +#define _JA25ENGLISHTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/i18n/include/_Ja25GermanText.h b/i18n/include/_Ja25GermanText.h index a362a000..f5514922 100644 --- a/i18n/include/_Ja25GermanText.h +++ b/i18n/include/_Ja25GermanText.h @@ -1,87 +1,87 @@ -#ifndef _JA25GERMANTEXT__H_ -#define _JA25GERMANTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25GERMANTEXT__H_ +#define _JA25GERMANTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/i18n/include/_Ja25ItalianText.h b/i18n/include/_Ja25ItalianText.h index 1520f1ae..d2815750 100644 --- a/i18n/include/_Ja25ItalianText.h +++ b/i18n/include/_Ja25ItalianText.h @@ -1,87 +1,87 @@ -#ifndef _JA25ENGLISHTEXT__H_ -#define _JA25ENGLISHTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25ENGLISHTEXT__H_ +#define _JA25ENGLISHTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/i18n/include/_Ja25PolishText.h b/i18n/include/_Ja25PolishText.h index 1520f1ae..d2815750 100644 --- a/i18n/include/_Ja25PolishText.h +++ b/i18n/include/_Ja25PolishText.h @@ -1,87 +1,87 @@ -#ifndef _JA25ENGLISHTEXT__H_ -#define _JA25ENGLISHTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25ENGLISHTEXT__H_ +#define _JA25ENGLISHTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/i18n/include/_Ja25RussianText.h b/i18n/include/_Ja25RussianText.h index 1520f1ae..d2815750 100644 --- a/i18n/include/_Ja25RussianText.h +++ b/i18n/include/_Ja25RussianText.h @@ -1,87 +1,87 @@ -#ifndef _JA25ENGLISHTEXT__H_ -#define _JA25ENGLISHTEXT__H_ - -extern STR16 gzIMPSkillTraitsText[]; - -//////////////////////////////////////////////////////// -// added by SANDRO -extern STR16 gzIMPSkillTraitsTextNewMajor[]; -extern STR16 gzIMPSkillTraitsTextNewMinor[]; - -extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; -extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; -extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; -extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; -extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; -extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; -extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; -extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; -extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente -extern STR16 gzIMPMajorTraitsHelpTextsNone[]; - -extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; -extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; -extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; -extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; -extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; -extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; -extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; -extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; -extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; -extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; -extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; -extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente -extern STR16 gzIMPMinorTraitsHelpTextsNone[]; - -extern STR16 gzIMPOldSkillTraitsHelpTexts[]; - -extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; - -extern STR16 gzIMPDisabilitiesHelpTexts[]; - -extern STR16 gzIMPProfileCostText[]; - -extern STR16 zGioNewTraitsImpossibleText[]; -/////////////////////////////////////////////////////// - -enum -{ - IMM__IRON_MAN_MODE_WARNING_TEXT, - IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, - IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, -}; -extern STR16 gzIronManModeWarningText[]; - -// display cover message (for tactical usually, seperated) -// display cover terrain type info (used in cover information) -enum -{ - DC_MSG__COVER_INFORMATION, - DC_MSG__GUN_RANGE_INFORMATION, - DC_MSG__NCTH_GUN_RANGE_INFORMATION, - DC_MSG__COVER_DRAW_OFF, - DC_MSG__COVER_DRAW_MERC_VIEW, - DC_MSG__COVER_DRAW_ENEMY_VIEW, - DC_TTI__WOOD, - DC_TTI__URBAN, - DC_TTI__DESERT, - DC_TTI__SNOW, - DC_TTI__WOOD_AND_DESERT, - DC_TTI__WOOD_AND_URBAN, - DC_TTI__WOOD_AND_SNOW, - DC_TTI__DESERT_AND_URBAN, - DC_TTI__DESERT_AND_SNOW, - DC_TTI__URBAN_AND_SNOW, - DC_TTI__UNKNOWN, - DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, - DC_TTI__DETAILED_SOUND, - DC_TTI__DETAILED_STEALTH, - DC_TTI__DETAILED_TRAP_LEVEL, -}; -extern STR16 gzDisplayCoverText[]; - -#endif - - +#ifndef _JA25ENGLISHTEXT__H_ +#define _JA25ENGLISHTEXT__H_ + +extern STR16 gzIMPSkillTraitsText[]; + +//////////////////////////////////////////////////////// +// added by SANDRO +extern STR16 gzIMPSkillTraitsTextNewMajor[]; +extern STR16 gzIMPSkillTraitsTextNewMinor[]; + +extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; +extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; +extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; +extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; +extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; +extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; +extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; +extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; +extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente +extern STR16 gzIMPMajorTraitsHelpTextsNone[]; + +extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; +extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; +extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; +extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; +extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; +extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; +extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; +extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; +extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; +extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; +extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; +extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente +extern STR16 gzIMPMinorTraitsHelpTextsNone[]; + +extern STR16 gzIMPOldSkillTraitsHelpTexts[]; + +extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; + +extern STR16 gzIMPDisabilitiesHelpTexts[]; + +extern STR16 gzIMPProfileCostText[]; + +extern STR16 zGioNewTraitsImpossibleText[]; +/////////////////////////////////////////////////////// + +enum +{ + IMM__IRON_MAN_MODE_WARNING_TEXT, + IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, + IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, +}; +extern STR16 gzIronManModeWarningText[]; + +// display cover message (for tactical usually, seperated) +// display cover terrain type info (used in cover information) +enum +{ + DC_MSG__COVER_INFORMATION, + DC_MSG__GUN_RANGE_INFORMATION, + DC_MSG__NCTH_GUN_RANGE_INFORMATION, + DC_MSG__COVER_DRAW_OFF, + DC_MSG__COVER_DRAW_MERC_VIEW, + DC_MSG__COVER_DRAW_ENEMY_VIEW, + DC_TTI__WOOD, + DC_TTI__URBAN, + DC_TTI__DESERT, + DC_TTI__SNOW, + DC_TTI__WOOD_AND_DESERT, + DC_TTI__WOOD_AND_URBAN, + DC_TTI__WOOD_AND_SNOW, + DC_TTI__DESERT_AND_URBAN, + DC_TTI__DESERT_AND_SNOW, + DC_TTI__URBAN_AND_SNOW, + DC_TTI__UNKNOWN, + DC_MSG__COVER_INFORMATION_WITH_DETAILED_CAMO, + DC_TTI__DETAILED_SOUND, + DC_TTI__DETAILED_STEALTH, + DC_TTI__DETAILED_TRAP_LEVEL, +}; +extern STR16 gzDisplayCoverText[]; + +#endif + + diff --git a/sgp/types.h b/sgp/types.h index 6c304ad3..5ccea912 100644 --- a/sgp/types.h +++ b/sgp/types.h @@ -29,37 +29,38 @@ // HEY WIZARDRY DUDES, JA2 ISN'T THE ONLY PROGRAM WE COMPILE! :-) -typedef unsigned int UINT32; -typedef signed __int64 INT64; // WANNE - BMP: Used for Big Maps -typedef signed int INT32; +typedef unsigned int UINT32; +typedef signed __int64 INT64; // WANNE - BMP: Used for Big Maps +typedef signed int INT32; typedef unsigned __int64 UINT64; //typedef unsigned long long UINT128; //Madd: Doing away with this redundant type // integers typedef unsigned char UINT8; -typedef signed char INT8; +typedef signed char INT8; typedef unsigned short UINT16; typedef signed short INT16; // floats typedef float FLOAT; typedef double DOUBLE; // strings -typedef char CHAR8; -typedef wchar_t CHAR16; -typedef CHAR8 * STR; -typedef CHAR8 * STR8; -typedef CHAR16 * STR16; +typedef char CHAR8; +typedef wchar_t CHAR16; +typedef CHAR8 * STR; +typedef CHAR8 * STR8; +typedef CHAR16 * STR16; // flags (individual bits used) -typedef unsigned char FLAGS8; +typedef unsigned char FLAGS8; typedef unsigned short FLAGS16; -typedef unsigned long FLAGS32; +typedef unsigned long FLAGS32; +typedef UINT64 FLAGS64; // other -typedef unsigned char BOOLEAN; -typedef void * PTR; +typedef unsigned char BOOLEAN; +typedef void * PTR; typedef unsigned short HNDL; -typedef UINT8 BYTE; -typedef CHAR8 STRING512[512]; -typedef UINT32 HWFILE; +typedef UINT8 BYTE; +typedef CHAR8 STRING512[512]; +typedef UINT32 HWFILE; #define SGPFILENAME_LEN 100 typedef CHAR8 SGPFILENAME[SGPFILENAME_LEN];